]> 4ch.mooo.com Git - 16.git/commitdiff
p16 is being worked on a bunch by me wwww [16_ca needs huge amounts of work and I...
authorsparky4 <sparky4@cock.li>
Thu, 13 Apr 2017 20:12:13 +0000 (15:12 -0500)
committersparky4 <sparky4@cock.li>
Thu, 13 Apr 2017 20:12:13 +0000 (15:12 -0500)
16 files changed:
NO_NAME.GIF [deleted file]
data/G.PAL
src/bakapi.c
src/lib/16_mm.c
src/lib/16_tail.c
src/lib/16_tail.h
src/lib/16_tail_.c
src/lib/16_tdef.h
src/lib/16_vl.c
src/lib/16_vl.h
src/lib/16_vl_1.c
src/lib/bakapee.c
src/lib/bakapee.h
src/palbomb.c
src/palettec.c
src/palettel.c

diff --git a/NO_NAME.GIF b/NO_NAME.GIF
deleted file mode 100755 (executable)
index a2bb4e9..0000000
Binary files a/NO_NAME.GIF and /dev/null differ
index 9e8a2ed5c97ad1b2995ab2c7b87588037e3a785a..bdc3b00c28e43da344b0076ca8feee03370f73ac 100755 (executable)
Binary files a/data/G.PAL and b/data/G.PAL differ
index 3a9c74698efe5decdfdcaa0ea9d2299069ffdffc..423e60e227a4598945a31f516cbf19b7fa092e81 100755 (executable)
  */\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
@@ -40,6 +45,7 @@ main(int argc, char *argvar[])
        int i;\r
        word panq=1, pand=0;\r
        boolean panswitch=0;\r
+       word    showpage=0;\r
 \r
        ggvv=&gvar;\r
 \r
@@ -128,21 +134,23 @@ main(int argc, char *argvar[])
        }\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
@@ -162,8 +170,8 @@ main(int argc, char *argvar[])
                                }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
@@ -255,17 +263,18 @@ main(int argc, char *argvar[])
                                        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
@@ -298,7 +307,19 @@ pee:
                                                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
@@ -310,11 +331,11 @@ pee:
                                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
@@ -327,9 +348,9 @@ pee:
                                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
index ab51789352071494212bfa59703f81edb53c23fb..2f032490cbbfc37da22d2afedb1550152422b382 100755 (executable)
@@ -1266,7 +1266,7 @@ void MM_ShowMemory(global_game_variables_t *gvar)
        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;
index d664b28d019a20b8790f0e11a3aaf06998b474bd..ce2733d3c4b8107d299bed4aac03c8a4f1835e06 100755 (executable)
@@ -26,8 +26,6 @@
 #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
@@ -247,68 +245,53 @@ void Shutdown16(global_game_variables_t *gvar)
 \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
@@ -325,84 +308,39 @@ noxor:
                                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
index 469c7a9f6ade674a6eba0d2ee217649ac9b1dffa..7212da7f9e86a925721d158ad14a2fd438f5faef 100755 (executable)
@@ -129,7 +129,7 @@ word modexPalOverscan(word col);
 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
index 3ab26f0b09e6e48d1e40168b8b2fc33c3e2aa89a..2e680faf5a6dc14ff5ff44cef210661be3c36990 100755 (executable)
@@ -24,6 +24,7 @@
  */\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
index 341ada31e809f6669635243f4f045fb909bfc04a..07807c20e4ff0a9979a5baa4c7c6fd9fe4656886 100755 (executable)
@@ -398,6 +398,7 @@ typedef struct
 {\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
index be84166c458c8c7fe5cad431a4a91b037a38de12..ceed6410caf53475675ba0da8c4c0d26ce88308a 100755 (executable)
@@ -282,14 +282,15 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv)
        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
@@ -319,7 +320,15 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv)
                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
@@ -350,7 +359,8 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv)
                }\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
@@ -360,6 +370,7 @@ void modexLeave(void)
        VL_vgaSetMode(TEXT_MODE);\r
 }\r
 \r
+#if 0\r
 page_t\r
 modexDefaultPage(page_t *p)\r
 {\r
@@ -373,8 +384,46 @@ modexDefaultPage(page_t *p)
        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
@@ -477,7 +526,7 @@ void modexHiganbanaPageSetup(video_t *video)
 {\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
@@ -878,7 +927,7 @@ modexLoadPalFile(byte *filename, byte *palette) {
 \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
index a152cc35b764570791bad7c9340f06fd00d8d9d0..519b1026588cfe89d463036bcf7d1154d71a34aa 100755 (executable)
@@ -173,7 +173,7 @@ byte VL_vgaGetMode(void);
 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
@@ -258,7 +258,7 @@ void modexWaitBorder();
 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
index 7332d5fb5d10795c7a7cb265d50c1036573daba3..6956717e946b6deb06efcbfd67f4676a53c6f6e6 100755 (executable)
@@ -169,7 +169,7 @@ SetScreen_done:
 ====================\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
@@ -181,15 +181,17 @@ void VL_SetLineWidth (unsigned width, ofs_t *ofs)
 //\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
index cf1dd90403c0aaa74af0520248c3f184a71bc216..0174d3c3bbf56007b70eb9f1b2955426c76fb46b 100755 (executable)
@@ -43,28 +43,42 @@ char global_temp_status_text2[512];
 #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
@@ -74,7 +88,7 @@ boolean baka_FizzleFade (page_t *source, page_t *dest, unsigned frames, boolean
        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
@@ -116,25 +130,31 @@ noxor:
                                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
@@ -154,31 +174,43 @@ modexprint(dest, PIXPOSX, 40+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text);
        }\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
@@ -191,31 +223,51 @@ boolean baka_FizzleFade (unsigned source, unsigned dest, unsigned width,unsigned
                                //\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
@@ -236,8 +288,11 @@ noxor:
                                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
@@ -518,7 +573,7 @@ void ding(page_t *page, bakapee_t *pee, word q)
                        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
index 08af061bd2a63e6d963ca515bb9c5cb71a41f21c..d39a97e81b2bda93010879633d2b5346d38361bc 100755 (executable)
@@ -41,7 +41,7 @@ typedef struct {
        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
index 80b9a9f54f87299142a442b8a68c3275aa4e012c..61f55918d302a72d1bd040fa5ddc2c2f13019d7d 100755 (executable)
@@ -26,7 +26,7 @@ void main(int argc, char *argv[]) {
 \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
index f221d837f2be2f92ee2b422d9a1efaa0af55edb8..9e6bc2b60062aaf3b8d060fe758e0e250b67bb17 100755 (executable)
@@ -26,7 +26,7 @@ void main(int argc, char *argv[]) {
 \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
index 3fdcf5a5498ce4152483b0c101fdce453bddba80..303dbf9d845867bf0f825c26a193551f411129ce 100755 (executable)
@@ -27,7 +27,7 @@ void main(int argc, char *argv[])
 \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