*/\r
static bakapee_t bakapee;\r
word key,d,xpos,ypos,xdir,ydir;\r
-sword vgamodex_mode = 1; // 320x240 default\r
+sword vgamodex_mode = 1; // 1 = 320x240 with buffer\r
void TL_VidInit(global_game_variables_t *gvar){}\r
//int ch=0x0;\r
\r
+#define SETUPPAGEBAKAPI \\r
+gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0], &gvar.video); \\r
+gvar.video.page[1] = modexNextPage(&gvar.video.page[0]);\r
+\r
+\r
void\r
main(int argc, char *argvar[])\r
{\r
int i;\r
word panq=1, pand=0;\r
boolean panswitch=0;\r
+ word showpage=0;\r
\r
ggvv=&gvar;\r
\r
}\r
\r
/* setup camera and screen~ */\r
- gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);\r
- gvar.video.page[1] = modexNextPage(&gvar.video.page[0]);\r
+ SETUPPAGEBAKAPI\r
\r
//modexPalUpdate(bmp.palette); //____\r
//modexDrawBmp(VGA, 0, 0, &bmp, 0); //____\r
//getch(); //____\r
+ VL_SetLineWidth (40, &gvar);\r
\r
- VL_ShowPage(&gvar.video.page[0], 0, 0);\r
+ VL_ShowPage(&gvar.video.page[showpage], 0, 0);\r
{\r
word w;\r
for(w=0;w<64000;w++)\r
{\r
+ ding(&gvar.video.page[showpage], &bakapee, 4);\r
ding(&gvar.video.page[1], &bakapee, 4);\r
}\r
- if(!baka_FizzleFade (&gvar.video.page[1], &gvar.video.page[0], 70, true, &gvar))\r
+ if(!baka_FizzleFade (gvar.video.ofs.bufferofs, gvar.video.ofs.displayofs, vga_state.vga_width, vga_state.vga_height, 70, true, &gvar))\r
+ //ding(&gvar.video.page[showpage], &bakapee, 9);\r
modexprint(&gvar.video.page[0], gvar.video.page[0].sw/2, gvar.video.page[0].sh/2, 1, 0, 47, 0, 1, "bakapi ok");\r
}\r
while(!kbhit()){}\r
}else c=getch();\r
}\r
\r
- if(!panswitch) ding(&gvar.video.page[0], &bakapee, 2);\r
- else ding(&gvar.video.page[0], &bakapee, 9);\r
+ if(!panswitch) ding(&gvar.video.page[0], &bakapee, key);\r
+ else ding(&gvar.video.page[0], &bakapee, 2);\r
if(panswitch!=0)\r
{\r
//right movement\r
printf("on. ");\r
break;\r
}\r
- //printf("\n");\r
printf("Pan mode is ");\r
switch (panswitch)\r
{\r
case 0:\r
- printf("off.\n");\r
+ printf("off.");\r
break;\r
case 1:\r
- printf("on.\n");\r
+ printf("on.");\r
break;\r
}\r
+ printf(" Showing page %u", showpage);\r
+ printf("\n");\r
printf("Incrementation of color happens at every %uth plot.\n", bakapee.bonk);\r
printf("Enter 1, 2, 3, 4, 5, 6, 8, or 9 to run a screensaver, or enter 0 to quit.\n");\r
pee:\r
break;\r
}\r
key=0;\r
- break;\r
+ break;\r
+ case 'q':\r
+ switch (showpage)\r
+ {\r
+ case 0:\r
+ showpage=1;\r
+ break;\r
+ case 1:\r
+ showpage=0;\r
+ break;\r
+ }\r
+ key=0;\r
+ break;\r
case '8':\r
c+=8;\r
case '1':\r
case '9':\r
key = c - '0';\r
VGAmodeX(vgamodex_mode, 0, &gvar);\r
- gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);\r
- gvar.video.page[1] = modexNextPage(&gvar.video.page[1]);\r
+ VL_ShowPage(&gvar.video.page[showpage], 0, 0);\r
+ SETUPPAGEBAKAPI\r
// this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.\r
// we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C.\r
- VL_ShowPage(&gvar.video.page[0], 0, 0);\r
+ VL_ShowPage(&gvar.video.page[showpage], 0, 0);\r
break;\r
case '-':\r
if(bakapee.bonk>0)\r
break;\r
default:\r
key=0;\r
- clrscr(); //added to clear screen wwww\r
break;\r
}\r
+ clrscr(); //added to clear screen wwww\r
}\r
}\r
#if 0\r
sdword end,owner;
byte scratch[160],scratch0[4096],str[16];
- VL_SetLineWidth(40, &gvar->video.ofs);
+ VL_SetLineWidth(40, gvar);
temp = gvar->video.ofs.bufferofs;
gvar->video.ofs.bufferofs = gvar->video.ofs.displayofs;
scan = gvar->mm.mmhead;
#include "src/lib/16_tail.h"\r
#include "src/lib/16text.h"\r
\r
-static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */\r
-\r
/*\r
==========================\r
=\r
\r
#define PIXPERFRAME 1600\r
\r
-void FizzleFade (unsigned source, unsigned dest,\r
- unsigned width,unsigned height, boolean abortable, global_game_variables_t *gv)\r
+boolean FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar)\r
{\r
- unsigned drawofs,pagedelta;\r
- unsigned char maskb[8] = {1,2,4,8,16,32,64,128};\r
- unsigned x,y,p,frame;\r
- long rndval;\r
- word TimeCount = *clockw;\r
+ word p,pixperframe;\r
+ unsigned drawofs,pagedelta;\r
+ byte mask,maskb[8] = {1,2,4,8};\r
+ unsigned x,y,frame ,esorig,q;\r
+ dword rndval;\r
word screenseg = SCREENSEG;\r
\r
pagedelta = dest-source;\r
-//++++ VL_SetScreen (dest,0);\r
- rndval = 1;\r
+ rndval = 1; esorig = 0; q = 16;\r
x = y = 0;\r
+ pixperframe = 76800/(dword)frames;\r
+\r
+ IN_StartAck (gvar);\r
\r
__asm {\r
- mov es,[screenseg]\r
- mov dx,SC_INDEX\r
- mov al,SC_MAPMASK\r
- out dx,al\r
+ mov [esorig],es\r
}\r
-\r
- TimeCount=frame=0;\r
- do // while (1)\r
+ frame=0;\r
+ do // while (1)\r
{\r
- if (abortable)\r
- {\r
- IN_ReadControl(0,gv);\r
- if (gv->player[0].info.button0 || gv->player[0].info.button1 || gv->in.inst->Keyboard[sc_Space]\r
- || gv->in.inst->Keyboard[sc_Enter])\r
- {\r
-//++++ VW_ScreenToScreen (source,dest,width/8,height);\r
- return;\r
- }\r
+ if (abortable && IN_CheckAck (gvar) )\r
+ return true;\r
+\r
+ __asm {\r
+ mov es,[screenseg]\r
}\r
\r
- for (p=0;p<PIXPERFRAME;p++)\r
+ for (p=0;p<pixperframe;p++)\r
{\r
- //\r
- // seperate random value into x/y pair\r
- //\r
__asm {\r
+ //\r
+ // seperate random value into x/y pair\r
+ //\r
mov ax,[WORD PTR rndval]\r
mov dx,[WORD PTR rndval+2]\r
mov bx,ax\r
dec bl\r
- mov [BYTE PTR y],bl // low 8 bits - 1 = y xoordinate\r
+ mov [BYTE PTR y],bl // low 8 bits - 1 = y xoordinate\r
mov bx,ax\r
mov cx,dx\r
- shr cx,1\r
- rcr bx,1\r
- shr bx,1\r
- shr bx,1\r
- shr bx,1\r
- shr bx,1\r
- shr bx,1\r
- shr bx,1\r
- shr bx,1\r
- mov [x],bx // next 9 bits = x xoordinate\r
- //\r
- // advance to next random element\r
- //\r
+ mov [BYTE PTR x],ah // next 9 bits = x xoordinate\r
+ mov [BYTE PTR x+1],dl\r
+ //\r
+ // advance to next random element\r
+ //\r
shr dx,1\r
rcr ax,1\r
jnc noxor\r
mov [WORD PTR rndval+2],dx\r
}\r
\r
- if (x>width || y>height)\r
+ if ((x>width || y>height) && (x<width*2 && y<height*2))\r
continue;\r
- drawofs = source+gv->video.ofs.ylookup[y];\r
+ drawofs = source+(gvar->video.ofs.ylookup[y]) + (x>>2);\r
+\r
+ //\r
+ // copy one pixel\r
+ //\r
+//*\r
+ mask = x&3;\r
+ VGAREADMAP(mask);\r
+ mask = maskb[mask];\r
+ VGAMAPMASK(mask);\r
+//*/\r
+// modexputPixel(&(gvar->video.page[0]), x, y, rand()%8);\r
+// VL_Plot (x, y, 15, &(gvar->video.ofs));\r
\r
__asm {\r
- mov cx,[x]\r
- mov si,cx\r
- and si,7\r
- mov dx,GC_INDEX\r
- mov al,GC_BITMASK\r
- mov ah,BYTE PTR [maskb+si]\r
- out dx,ax\r
-\r
- mov si,[drawofs]\r
- shr cx,1\r
- shr cx,1\r
- shr cx,1\r
- add si,cx\r
- mov di,si\r
+ mov di,[drawofs]\r
+ mov al,[es:di]\r
add di,[pagedelta]\r
-\r
- mov dx,GC_INDEX\r
- mov al,GC_READMAP // leave GC_INDEX set to READMAP\r
- out dx,al\r
-\r
- mov dx,SC_INDEX+1\r
- mov al,1\r
- out dx,al\r
- mov dx,GC_INDEX+1\r
- mov al,0\r
- out dx,al\r
-\r
- mov bl,[es:si]\r
- xchg [es:di],bl\r
-\r
- mov dx,SC_INDEX+1\r
- mov al,2\r
- out dx,al\r
- mov dx,GC_INDEX+1\r
- mov al,1\r
- out dx,al\r
-\r
- mov bl,[es:si]\r
- xchg [es:di],bl\r
-\r
- mov dx,SC_INDEX+1\r
- mov al,4\r
- out dx,al\r
- mov dx,GC_INDEX+1\r
- mov al,2\r
- out dx,al\r
-\r
- mov bl,[es:si]\r
- xchg [es:di],bl\r
-\r
- mov dx,SC_INDEX+1\r
- mov al,8\r
- out dx,al\r
- mov dx,GC_INDEX+1\r
- mov al,3\r
- out dx,al\r
-\r
- mov bl,[es:si]\r
- xchg [es:di],bl\r
+ mov [es:di],al\r
}\r
\r
if (rndval == 1) // entire sequence has been completed\r
- {\r
- VGABITMASK(255);\r
- VGAMAPMASK(15);\r
- return;\r
- }\r
+ return false;\r
}\r
frame++;\r
- while (TimeCount<frame){} // don't go too fast\r
+//-- while (TimeCount<frame){}//; // don't go too fast\r
} while (1);\r
-\r
-\r
+ __asm {\r
+ mov es,[esorig]\r
+ }\r
+ return false;\r
}\r
\r
//===========================================================================\r
void Shutdown16(global_game_variables_t *gvar);\r
void Startup16(global_game_variables_t *gvar);\r
void TL_VidInit(global_game_variables_t *gvar);\r
-void FizzleFade (unsigned source, unsigned dest,unsigned width,unsigned height, boolean abortable, global_game_variables_t *gv);\r
+boolean FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar);\r
void DebugMemory_(global_game_variables_t *gvar, boolean q);\r
void ClearMemory (global_game_variables_t *gvar);\r
void Quit (global_game_variables_t *gvar, char *error);\r
*/\r
\r
#include "src/lib/16_tail.h"\r
+#include "src/lib/16_vl.h"\r
\r
void TL_VidInit(global_game_variables_t *gvar)\r
{\r
{\r
boolean VL_Started,VL_Initiated;\r
char old_mode; //old video mode before game!\r
+ sword curr_mode; //modex curent mode\r
byte palette[PALSIZE], dpal[PALSIZE]; //palette array\r
page_t page[MAXPAGE]; //can be used as a pointer to root page[0]\r
word vmem_remain; //remaining video memory\r
switch(vq)\r
{\r
case 1:\r
+ case 8: //320x240 no buffer\r
//CRTParmCount = sizeof(ModeX_320x240regs) / sizeof(ModeX_320x240regs[0]);\r
/*for(i=0; i<CRTParmCount; i++) {\r
outpw(CRTC_INDEX, ModeX_320x240regs[i]);\r
}*/\r
- /* width and height */\r
+ // width and height //\r
gv->video.page[0].sw = vga_state.vga_width = 320; // VGA lib currently does not update this\r
gv->video.page[0].sh = vga_state.vga_height = 240; // VGA lib currently does not update this\r
- /* virtual width and height. match screen, at first */\r
+ // virtual width and height. match screen, at first //\r
gv->video.page[0].height = gv->video.page[0].sh;\r
gv->video.page[0].width = gv->video.page[0].sw;\r
\r
case 2: // TODO: 160x120 according to ModeX_160x120regs\r
return;\r
case 3: // TODO: 160x120 according to ModeX_320x200regs\r
- return;\r
+ gv->video.page[0].sw = vga_state.vga_width = 300; // VGA lib currently does not update this\r
+ gv->video.page[0].sh = vga_state.vga_height = 200; // VGA lib currently does not update this\r
+ // virtual width and height. match screen, at first //\r
+ gv->video.page[0].height = gv->video.page[0].sh;\r
+ gv->video.page[0].width = gv->video.page[0].sw;\r
+\r
+ cm.offset = (vga_state.vga_width / (4 * 2)); // 320 wide (40 x 4 pixel groups x 2)\r
+ //return;\r
+ break;\r
case 4: // TODO: 160x120 according to ModeX_192x144regs\r
return;\r
case 5: // TODO: 160x120 according to ModeX_256x192regs\r
}\r
break;\r
}\r
- VL_SetLineWidth (cm.offset, &gv->video.ofs);\r
+ VL_SetLineWidth (cm.offset, gv);\r
+ gv->video.curr_mode=vq;\r
gv->video.VL_Started=1;\r
}\r
\r
VL_vgaSetMode(TEXT_MODE);\r
}\r
\r
+#if 0\r
page_t\r
modexDefaultPage(page_t *p)\r
{\r
page.dy = 0;\r
page.sw = p->sw;\r
page.sh = p->sh;\r
- page.width = p->sw+TILEWHD;\r
- page.height = p->sh+TILEWHD;\r
+ page.width = p->sw;\r
+ page.height = p->sh;\r
+ page.ti.tw = page.sw/TILEWH;\r
+ page.ti.th = page.sh/TILEWH;\r
+ page.ti.tilesw=page.width/TILEWH;\r
+ page.ti.tilesh=page.height/TILEWH;\r
+ page.ti.tilemidposscreenx = page.ti.tw/2;\r
+ page.ti.tilemidposscreeny = (page.ti.th/2)+1;\r
+ page.stridew=page.width/4;\r
+ page.pagesize = (word)(page.stridew)*page.height;\r
+ page.pi=page.width*4;\r
+ page.id = 0;\r
+\r
+ if(ggvv->video.curr_mode = 1)\r
+ {\r
+ page.width += TILEWHD;\r
+ page.height += TILEWHD;\r
+ }\r
+\r
+ return page;\r
+}\r
+#endif\r
+page_t\r
+modexDefaultPage(page_t *p, video_t *v)\r
+{\r
+ page_t page;\r
+\r
+ /* default page values */\r
+ //page.data = VGA;\r
+ //page.data = (byte far *)(vga_state.vga_graphics_ram);\r
+ page.data = (vga_state.vga_graphics_ram);\r
+ page.dx = 0;\r
+ page.dy = 0;\r
+ page.sw = p->sw;\r
+ page.sh = p->sh;\r
+ page.width = p->sw;\r
+ page.height = p->sh;\r
+ if(v->curr_mode == 1)\r
+{ page.width += TILEWHD;\r
+ page.height += TILEWHD; }\r
page.ti.tw = page.sw/TILEWH;\r
page.ti.th = page.sh/TILEWH;\r
page.ti.tilesw=page.width/TILEWH;\r
{\r
video->vmem_remain=65535U;\r
video->num_of_pages=0;\r
- (video->page[0]) = modexDefaultPage(&(video->page[0])); video->num_of_pages++; //video->page[0].width += (TILEWHD); video->page[0].height += (TILEWHD);\r
+ (video->page[0]) = modexDefaultPage(&(video->page[0]), video); video->num_of_pages++; //video->page[0].width += (TILEWHD); video->page[0].height += (TILEWHD);\r
(video->page[1]) = modexNextPage(&(video->page[0])); video->num_of_pages++;\r
//0000 (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), (video->page[0]).width, TILEWH*4); video->num_of_pages++;\r
//0000 (video->page[3]) = (video->page[2]); video->num_of_pages++;\r
\r
void VL_LoadPalFile(const char *filename, byte *palette, global_game_variables_t *gvar)\r
{\r
- VL_LoadPalFilewithoffset(filename, palette, 8, gvar);\r
+ VL_LoadPalFilewithoffset(filename, palette, 9, gvar);\r
// VL_LoadPalFileCore(palette);\r
}\r
\r
extern void TL_VidInit(global_game_variables_t *gvar);\r
void modexLeave(void);\r
void modexsetBaseXMode();\r
-page_t modexDefaultPage(page_t *p);\r
+page_t modexDefaultPage(page_t *p, video_t *v);\r
page_t modexNextPage(page_t *p);\r
page_t modexNextPageFlexibleSize(page_t *p, word x, word y);\r
void modexCalcVmemRemain(video_t *video);\r
void modexWaitBorder_start();\r
void modexWaitBorder_end();\r
void VL_WaitVBL(word num);\r
-void VL_SetLineWidth (unsigned width, ofs_t *ofs);\r
+void VL_SetLineWidth (unsigned width, global_game_variables_t *gvar);\r
void VL_PrintmodexmemInfo(video_t *v);\r
\r
#endif\r
====================\r
*/\r
\r
-void VL_SetLineWidth (unsigned width, ofs_t *ofs)\r
+void VL_SetLineWidth (unsigned width, global_game_variables_t *gvar)\r
{\r
int i,offset;\r
\r
//\r
// set up lookup tables\r
//\r
- ofs->linewidth = width*2;\r
+ gvar->video.ofs.linewidth = width*2;\r
\r
offset = 0;\r
\r
for (i=0;i<MAXSCANLINES;i++)\r
{\r
- ofs->ylookup[i]=offset;\r
- offset += ofs->linewidth;\r
+ gvar->video.ofs.ylookup[i]=offset;\r
+ offset += gvar->video.ofs.linewidth;\r
}\r
+ gvar->video.ofs.displayofs = 0;\r
+ gvar->video.ofs.bufferofs = gvar->video.page[0].width*gvar->video.page[0].height;//gvar->video.page[0].pagesize;\r
}\r
\r
/*\r
#define PIXPOSX gvar->video.page[0].sw/2\r
#define PIXPOSY gvar->video.page[0].sh/2\r
\r
-boolean baka_FizzleFade (page_t *source, page_t *dest, unsigned frames, boolean abortable, global_game_variables_t *gvar)\r
+/*\r
+===================\r
+=\r
+= FizzleFade\r
+=\r
+= returns true if aborted\r
+=\r
+===================\r
+*/\r
+\r
+//extern ControlInfo c;\r
+#define PIXPOSX gvar->video.page[0].sw/2\r
+#define PIXPOSY gvar->video.page[0].sh/2\r
+\r
+boolean baka_FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar)\r
{\r
- dword p,pixperframe;\r
+ word p,pixperframe;\r
unsigned drawofs,pagedelta;\r
byte mask,maskb[8] = {1,2,4,8};\r
- unsigned x,y,frame ,esorig;\r
+ unsigned x,y,frame ,esorig,q;\r
dword rndval;\r
-// word TimeCount = *clockw;\r
word screenseg = SCREENSEG;\r
\r
- pagedelta = (word)dest->sw*dest->sh;//(word)(source->data - dest->data);//(dest->data - source->data)\r
- rndval = 1; esorig = 0;\r
- x = y = dest->dx;\r
- pixperframe = 76800/(dword)frames;\r
+ pagedelta = dest-source;\r
+ rndval = 1; esorig = 0; q = 16;\r
+ x = y = 0;//destpage->dx;\r
+ pixperframe = /*76800*/64000/(dword)frames;\r
\r
// IN_StartAck ();\r
\r
-// VL_ShowPage(dest, 1, 0);\r
-// VL_ShowPage(source, 1, 0);\r
+// VL_ShowPage(&(gvar->video.page[0]), 1, 0);\r
+// VL_ShowPage(&(gvar->video.page[1]), 1, 0);\r
\r
-// modexClearRegion(dest, 0, 0, (dest->width), (dest->height), 12);\r
- modexClearRegion(source, 0, 0, (source->width), (source->height), 64);\r
+// modexClearRegion(&(gvar->video.page[0]), 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 0);\r
+// modexClearRegion(&(gvar->video.page[1]), 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 15);\r
+// VL_SetLineWidth(80, gvar);\r
\r
__asm {\r
mov [esorig],es\r
do // while (1)\r
{\r
sprintf(global_temp_status_text, "%u", frame);\r
-modexprint(dest, PIXPOSX, PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text);\r
+modexprint(&(gvar->video.page[0]), PIXPOSX, PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text);\r
if (abortable && kbhit())//IN_CheckAck () )\r
return true;\r
\r
mov [WORD PTR rndval+2],dx\r
}\r
\r
- if (x>dest->sw || y>dest->sh)\r
+// if (x>destpage->width || y>destpage->height)\r
+// if (x<destpage->sw || y<destpage->sh)\r
+ if ((x>width || y>height) && (x<width*2 && y<height*2))\r
continue;\r
- drawofs = (word)(source->data)+gvar->video.ofs.ylookup[y] + (x>>2);\r
+ drawofs = source+(gvar->video.ofs.ylookup[y]) + (x>>2);\r
sprintf(global_temp_status_text, "draw - %Fp", drawofs);\r
-modexprint(dest, PIXPOSX, 16+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text);\r
+modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8;\r
sprintf(global_temp_status_text, "pdet - %Fp", pagedelta);\r
-modexprint(dest, PIXPOSX, 24+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text);\r
-sprintf(global_temp_status_text, "srce - %Fp", source->data);\r
-modexprint(dest, PIXPOSX, 32+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text);\r
-sprintf(global_temp_status_text, "dest - %Fp", dest->data);\r
-modexprint(dest, PIXPOSX, 40+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text);\r
+modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8;\r
+sprintf(global_temp_status_text, "srce - %Fp", source);\r
+modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8;\r
+sprintf(global_temp_status_text, "dest - %Fp", dest);\r
+modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q=16;\r
\r
//\r
// copy one pixel\r
//\r
+//*\r
mask = x&3;\r
VGAREADMAP(mask);\r
mask = maskb[mask];\r
VGAMAPMASK(mask);\r
+//*/\r
+// modexputPixel(&(gvar->video.page[0]), x, y, rand());\r
+// VL_Plot (x, y, 15, &(gvar->video.ofs));\r
\r
__asm {\r
mov di,[drawofs]\r
}\r
return false;\r
}\r
+\r
#if 0\r
-boolean baka_FizzleFade (unsigned source, unsigned dest, unsigned width,unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar)\r
+boolean baka_FizzleFade (page_t *sourcepage, page_t *destpage, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar)\r
{\r
- int pixperframe;\r
+ word p,pixperframe;\r
unsigned drawofs,pagedelta;\r
byte mask,maskb[8] = {1,2,4,8};\r
- unsigned x,y,p,frame;\r
+ unsigned x,y,frame ,esorig,q;\r
dword rndval;\r
- word TimeCount = *clockw;\r
+ unsigned source,dest;\r
+// word TimeCount = *clockw;\r
word screenseg = SCREENSEG;\r
+ source = ((word)sourcepage->data); dest = ((word)destpage->data);\r
\r
- pagedelta = dest-source;\r
- rndval = 1;\r
- x = y = 0;\r
- pixperframe = 64000/frames;\r
+ pagedelta = dest-source;//(word)(source->data - dest->data);//(dest->data - source->data)\r
+ rndval = 1; esorig = 0; q = 16;\r
+ x = y = destpage->dx;\r
+ pixperframe = /*76800*/64000/(dword)frames;\r
\r
- VGAmodeX(0, 0, gvar);\r
// IN_StartAck ();\r
-// VL_ShowPage((page_t *)dest, 1, 0);\r
- VGAmodeX(1, 0, gvar);\r
\r
- TimeCount=frame=0;\r
+// VL_ShowPage(destpage, 1, 0);\r
+// VL_ShowPage(sourcepage, 1, 0);\r
+\r
+// modexClearRegion(destpage, 0, 0, (destpage->width), (destpage->height), 12);\r
+ modexClearRegion(sourcepage, 0, 0, (sourcepage->width), (sourcepage->height), 64);\r
+\r
+ __asm {\r
+ mov [esorig],es\r
+ }\r
+// TimeCount=\r
+ frame=0;\r
do // while (1)\r
{\r
- if (abortable && !kbhit())//IN_CheckAck () )\r
+sprintf(global_temp_status_text, "%u", frame);\r
+modexprint(destpage, PIXPOSX, PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text);\r
+ if (abortable && kbhit())//IN_CheckAck () )\r
return true;\r
\r
__asm {\r
//\r
// seperate random value into x/y pair\r
//\r
- mov ax,[WORD PTR rndval]\r
- mov dx,[WORD PTR rndval+2]\r
- mov bx,ax\r
- dec bl\r
- mov [BYTE PTR y],bl // low 8 bits - 1 = y xoordinate\r
- mov bx,ax\r
- mov cx,dx\r
- mov [BYTE PTR x],ah // next 9 bits = x xoordinate\r
- mov [BYTE PTR x+1],dl\r
+ mov ax,[WORD PTR rndval]\r
+ mov dx,[WORD PTR rndval+2]\r
+ mov bx,ax\r
+ dec bl\r
+ mov [BYTE PTR y],bl // low 8 bits - 1 = y xoordinate\r
+ mov bx,ax\r
+ mov cx,dx\r
+ mov [BYTE PTR x],ah // next 9 bits = x xoordinate\r
+ mov [BYTE PTR x+1],dl\r
//\r
// advance to next random element\r
//\r
- shr dx,1\r
- rcr ax,1\r
- jnc noxor\r
- xor dx,0x0001\r
- xor ax,0x2000\r
+ shr dx,1\r
+ rcr ax,1\r
+ jnc noxor\r
+ xor dx,0x0001\r
+ xor ax,0x2000\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
noxor:\r
- mov [WORD PTR rndval],ax\r
- mov [WORD PTR rndval+2],dx\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov [WORD PTR rndval],ax\r
+ mov [WORD PTR rndval+2],dx\r
}\r
\r
+// if (x>destpage->width || y>destpage->height)\r
+// if (x<destpage->sw || y<destpage->sh)\r
if (x>width || y>height)\r
continue;\r
- drawofs = source+gvar->video.ofs.ylookup[y] + (x>>2);\r
+ drawofs = source+(gvar->video.ofs.ylookup[y]) + (x>>2);\r
+sprintf(global_temp_status_text, "draw - %Fp", drawofs);\r
+modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8;\r
+sprintf(global_temp_status_text, "pdet - %Fp", pagedelta);\r
+modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8;\r
+sprintf(global_temp_status_text, "srcp - %Fp", sourcepage->data);\r
+modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8;\r
+sprintf(global_temp_status_text, "desp - %Fp", destpage->data);\r
+modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8;\r
+sprintf(global_temp_status_text, "srce - %Fp", source);\r
+modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8;\r
+sprintf(global_temp_status_text, "dest - %Fp", dest);\r
+modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q=16;\r
\r
//\r
// copy one pixel\r
return false;\r
}\r
frame++;\r
-// while (TimeCount<frame){}//; // don't go too fast\r
+//-- while (TimeCount<frame){}//; // don't go too fast\r
} while (1);\r
+ __asm {\r
+ mov es,[esorig]\r
+ }\r
return false;\r
}\r
#endif\r
modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, 1, "bakapi");\r
break;\r
case 9:\r
- //baka_FizzleFade (ggvv->video.ofs.bufferofs, ggvv->video.ofs.displayofs, page->sw, page->sh, false, ggvv);\r
+ baka_FizzleFade (ggvv->video.ofs.bufferofs, ggvv->video.ofs.displayofs, vga_state.vga_width, vga_state.vga_height, 70, true, ggvv);\r
// modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, 1, "bakapi start");\r
// if(!baka_FizzleFade ((unsigned)page, (unsigned)page, page->width, page->height, 70, false, ggvv))\r
break;\r
word bonk,lgq,hgq;\r
} bakapee_t;\r
\r
-boolean baka_FizzleFade (page_t *source, page_t *dest, unsigned frames, boolean abortable, global_game_variables_t *gvar);\r
+boolean baka_FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar);\r
void clrstdin();\r
void colortest(page_t *page, bakapee_t *pee);\r
void colorz(page_t *page, bakapee_t *pee);\r
\r
TL_VidInit(&gvar); VGAmodeX(1, 0, &gvar);\r
\r
- gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);\r
+ gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0], &gvar.video);\r
VL_ShowPage(&gvar.video.page[0], 1, 0);\r
modexpdump(&gvar.video.page[0]);\r
while(!kbhit()){ VL_modexPalScramble(&gvar.video.palette); }\r
\r
TL_VidInit(&gvar); VGAmodeX(1, 0, &gvar);\r
modexSavePalFile(bakapee, &gvar.video.palette);\r
- gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);// modexFadeOn(4, &gvar.video.palette);\r
+ gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0], &gvar.video);// modexFadeOn(4, &gvar.video.palette);\r
VL_ShowPage(&gvar.video.page[0], 1, 0);\r
modexpdump(&gvar.video.page[0]);\r
while(!kbhit()){ /*VL_modexPalScramble(&gvar.video.palette);*/ }\r
\r
TL_VidInit(&gvar); VGAmodeX(1, 0, &gvar);\r
VL_LoadPalFile(bakapee, &gvar.video.palette, &gvar); //modexLoadPalFile(bakapee, &(gvar.video.palette));\r
- gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);// modexFadeOn(4, &gvar.video.palette);\r
+ gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0], &gvar.video);// modexFadeOn(4, &gvar.video.palette);\r
VL_ShowPage(&gvar.video.page[0], 1, 0);\r
modexpdump(&gvar.video.page[0]);\r
while(!kbhit()){ /*VL_modexPalScramble(&gvar.video.palette);*/ }\r