]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_rf.c
p16 is being worked on a bunch by me wwww [16_ca needs huge amounts of work and I...
[16.git] / src / lib / 16_rf.c
index 8e17be22fcccdd159b26bd1ba6bb4c16aad26bd9..bc0afca6164f6c0165f50478650e1ca7b6d98c77 100755 (executable)
@@ -359,23 +359,23 @@ void RF_Shutdown (void)
 =====================\r
 */\r
 \r
-void RF_FixOfs (void)\r
+void RF_FixOfs (global_game_variables_t *gvar)\r
 {\r
-       if (grmode == EGAGR)\r
-       {\r
+//     if (grmode == EGAGR)\r
+//     {\r
                screenpage = 0;\r
                otherpage = 1;\r
-               panx = pany = pansx = pansy = panadjust = 0;\r
+               gvar->video.ofs.pan.panx = gvar->video.ofs.pan.pany = gvar->video.ofs.pan.pansx = gvar->video.ofs.pan.pansy = gvar->video.ofs.pan.panadjust = 0;\r
                displayofs = screenstart[screenpage];\r
                bufferofs = screenstart[otherpage];\r
                masterofs = screenstart[2];\r
-               VL_SetScreen (displayofs,0);\r
+/*++++         VL_SetScreen (displayofs,0);\r
        }\r
        else\r
        {\r
                bufferofs = 0;\r
                masterofs = 0x8000;\r
-       }\r
+       }*/\r
 }\r
 \r
 \r
@@ -915,19 +915,20 @@ void RFL_CalcOriginStuff (long x, long y)
        originyscreen = originytile<<SY_T_SHIFT;\r
        originmap = mapbwidthtable[originytile] + originxtile*2;\r
 \r
-#if GRMODE == EGAGR\r
-       panx = (originxglobal>>G_P_SHIFT) & 15;\r
-       pansx = panx & 8;\r
-       pany = pansy = (originyglobal>>G_P_SHIFT) & 15;\r
-       panadjust = panx/8 + ylookup[pany];\r
-#endif\r
+//#if GRMODE == EGAGR\r
+       gvar->video.ofs.pan.panx = (originxglobal>>G_P_SHIFT) & 15;\r
+       gvar->video.ofs.pan.pansx = gvar->video.ofs.pan.panx & 8;\r
+       gvar->video.ofs.pan.pany = gvar->video.ofs.pan.pansy = (originyglobal>>G_P_SHIFT) & 15;\r
+       gvar->video.ofs.pan.panadjust = gvar->video.ofs.pan.panx/8 + gvar->video.ofs.ylookup[gvar->video.ofs.pan.pany];\r
+/*#endif\r
 \r
 #if GRMODE == CGAGR\r
-       panx = (originxglobal>>G_P_SHIFT) & 15;\r
-       pansx = panx & 12;\r
-       pany = pansy = (originyglobal>>G_P_SHIFT) & 15;\r
-       panadjust = pansx/4 + ylookup[pansy];\r
+       gvar->video.ofs.pan.panx = (originxglobal>>G_P_SHIFT) & 15;\r
+       gvar->video.ofs.pan.pansx = gvar->video.ofs.pan.panx & 12;\r
+       gvar->video.ofs.pan.pany = gvar->video.ofs.pan.pansy = (originyglobal>>G_P_SHIFT) & 15;\r
+       gvar->video.ofs.pan.panadjust = gvar->video.ofs.pan.pansx/4 + gvar->video.ofs.ylookup[gvar->video.ofs.pan.pansy];\r
 #endif\r
+       */\r
 \r
 }\r
 \r
@@ -942,7 +943,7 @@ void RFL_CalcOriginStuff (long x, long y)
 \r
 void RFL_ClearScrollBlocks (void)\r
 {\r
-       hscrollblocks = vscrollblocks = 0;\r
+       gvar->video.ofs.pan.hscrollblocks = gvar->video.ofs.pan.vscrollblocks = 0;\r
 }\r
 \r
 \r
@@ -961,14 +962,14 @@ void RF_SetScrollBlock (int x, int y, boolean horizontal)
 {\r
        if (horizontal)\r
        {\r
-               hscrolledge[hscrollblocks] = y;\r
-               if (hscrollblocks++ == MAXSCROLLEDGES)\r
+               gvar->video.ofs.pan.hscrolledge[gvar->video.ofs.pan.hscrollblocks] = y;\r
+               if (gvar->video.ofs.pan.hscrollblocks++ == MAXSCROLLEDGES)\r
                        Quit (gvar, "RF_SetScrollBlock: Too many horizontal scroll blocks");\r
        }\r
        else\r
        {\r
-               vscrolledge[vscrollblocks] = x;\r
-               if (vscrollblocks++ == MAXSCROLLEDGES)\r
+               gvar->video.ofs.pan.vscrolledge[gvar->video.ofs.pan.vscrollblocks] = x;\r
+               if (gvar->video.ofs.pan.vscrollblocks++ == MAXSCROLLEDGES)\r
                        Quit (gvar, "RF_SetScrollBlock: Too many vertical scroll blocks");\r
        }\r
 }\r
@@ -997,8 +998,8 @@ void RFL_BoundScroll (int x, int y)
        if (x>0)\r
        {\r
                newxtile+=SCREENTILESWIDE;\r
-               for (check=0;check<vscrollblocks;check++)\r
-                       if (vscrolledge[check] == newxtile)\r
+               for (check=0;check<gvar->video.ofs.pan.vscrollblocks;check++)\r
+                       if (gvar->video.ofs.pan.vscrolledge[check] == newxtile)\r
                        {\r
                                originxglobal = originxglobal&0xff00;\r
                                break;\r
@@ -1006,8 +1007,8 @@ void RFL_BoundScroll (int x, int y)
        }\r
        else if (x<0)\r
        {\r
-               for (check=0;check<vscrollblocks;check++)\r
-                       if (vscrolledge[check] == newxtile)\r
+               for (check=0;check<gvar->video.ofs.pan.vscrollblocks;check++)\r
+                       if (gvar->video.ofs.pan.vscrolledge[check] == newxtile)\r
                        {\r
                                originxglobal = (originxglobal&0xff00)+0x100;\r
                                break;\r
@@ -1018,8 +1019,8 @@ void RFL_BoundScroll (int x, int y)
        if (y>0)\r
        {\r
                newytile+=SCREENTILESHIGH;\r
-               for (check=0;check<hscrollblocks;check++)\r
-                       if (hscrolledge[check] == newytile)\r
+               for (check=0;check<gvar->video.ofs.pan.hscrollblocks;check++)\r
+                       if (gvar->video.ofs.pan.hscrolledge[check] == newytile)\r
                        {\r
                                originyglobal = originyglobal&0xff00;\r
                                break;\r
@@ -1027,8 +1028,8 @@ void RFL_BoundScroll (int x, int y)
        }\r
        else if (y<0)\r
        {\r
-               for (check=0;check<hscrollblocks;check++)\r
-                       if (hscrolledge[check] == newytile)\r
+               for (check=0;check<gvar->video.ofs.pan.hscrollblocks;check++)\r
+                       if (gvar->video.ofs.pan.hscrolledge[check] == newytile)\r
                        {\r
                                originyglobal = (originyglobal&0xff00)+0x100;\r
                                break;\r
@@ -1315,9 +1316,9 @@ void RFL_BoundNewOrigin (unsigned orgx,unsigned orgy)
        originxtile = orgx>>G_T_SHIFT;\r
        originytile = orgy>>G_T_SHIFT;\r
 \r
-       for (check=0;check<vscrollblocks;check++)\r
+       for (check=0;check<gvar->video.ofs.pan.vscrollblocks;check++)\r
        {\r
-               edge = vscrolledge[check];\r
+               edge = gvar->video.ofs.pan.vscrolledge[check];\r
                if (edge>=originxtile && edge <=originxtile+10)\r
                {\r
                        orgx = (edge+1)*TILEGLOBAL;\r
@@ -1330,9 +1331,9 @@ void RFL_BoundNewOrigin (unsigned orgx,unsigned orgy)
                }\r
        }\r
 \r
-       for (check=0;check<hscrollblocks;check++)\r
+       for (check=0;check<gvar->video.ofs.pan.hscrollblocks;check++)\r
        {\r
-               edge = hscrolledge[check];\r
+               edge = gvar->video.ofs.pan.hscrolledge[check];\r
                if (edge>=originytile && edge <=originytile+6)\r
                {\r
                        orgy = (edge+1)*TILEGLOBAL;\r
@@ -1406,10 +1407,10 @@ void RF_RedrawBlock (int x, int y, int width, int height)
 {\r
        int     xx,yy,xl,xh,yl,yh;\r
 \r
-       xl=(x+panx)/16;\r
-       xh=(x+panx+width+15)/16;\r
-       yl=(y+pany)/16;\r
-       yh=(y+pany+height+15)/16;\r
+       xl=(x+gvar->video.ofs.pan.panx)/16;\r
+       xh=(x+gvar->video.ofs.pan.panx+width+15)/16;\r
+       yl=(y+gvar->video.ofs.pan.pany)/16;\r
+       yh=(y+gvar->video.ofs.pan.pany+height+15)/16;\r
        for (yy=yl;yy<=yh;yy++)\r
                for (xx=xl;xx<=xh;xx++)\r
                        RFL_NewTile (yy*UPDATEWIDE+xx);\r
@@ -1437,7 +1438,7 @@ void RF_CalcTics (void)
        if (lasttimecount > TimeCount)\r
                TimeCount = lasttimecount;              // if the game was paused a LONG time\r
 \r
-       if (DemoMode)                                   // demo recording and playback needs\r
+/*++++ if (DemoMode)                                   // demo recording and playback needs\r
        {                                                               // to be constant\r
 //\r
 // take DEMOTICS or more tics, and modify Timecount to reflect time taken\r
@@ -1450,7 +1451,7 @@ void RF_CalcTics (void)
                tics = DEMOTICS;\r
        }\r
        else\r
-       {\r
+       {*/\r
 //\r
 // non demo, so report actual time\r
 //\r
@@ -1474,7 +1475,7 @@ void RF_CalcTics (void)
                        TimeCount -= (tics-MAXTICS);\r
                        tics = MAXTICS;\r
                }\r
-       }\r
+//     }\r
 }\r
 \r
 /*\r
@@ -1536,10 +1537,10 @@ void RF_NewPosition (unsigned x, unsigned y)
        unsigned        updatenum;\r
 \r
        RFL_BoundNewOrigin (x,y);\r
-/*??\r
+\r
 // calculate new origin related globals\r
 //\r
-       RFL_CalcOriginStuff (x,y);*/\r
+       RFL_CalcOriginStuff (x,y);\r
 \r
 //\r
 // clear out all animating tiles\r
@@ -1549,7 +1550,7 @@ void RF_NewPosition (unsigned x, unsigned y)
 //\r
 // set up the new update arrays at base position\r
 //\r
-//??   memset (tilecache,0,sizeof(tilecache));         // old cache is invalid\r
+       memset (tilecache,0,sizeof(tilecache));         // old cache is invalid\r
 \r
        updatestart[0] = baseupdatestart[0];\r
        updatestart[1] = baseupdatestart[1];\r
@@ -1635,14 +1636,14 @@ void RF_Scroll (int x, int y)
        int                     oldxt,oldyt,move,yy;\r
        unsigned        updatespot;\r
        byte            *update0,*update1;\r
-       unsigned        oldpanx,oldpanadjust,oldoriginmap,oldscreen,newscreen,screencopy;\r
+       unsigned        oldgvar->video.ofs.pan.panx,oldgvar->video.ofs.pan.panadjust,oldoriginmap,oldscreen,newscreen,screencopy;\r
        int                     screenmove;\r
 \r
        oldxt = originxtile;\r
        oldyt = originytile;\r
        oldoriginmap = originmap;\r
-       oldpanadjust = panadjust;\r
-       oldpanx = panx;\r
+       oldgvar->video.ofs.pan.panadjust = gvar->video.ofs.pan.panadjust;\r
+       oldgvar->video.ofs.pan.panx = gvar->video.ofs.pan.panx;\r
 \r
        RFL_CalcOriginStuff ((long)originxglobal + x,(long)originyglobal + y);\r
 \r
@@ -1683,8 +1684,8 @@ void RF_Scroll (int x, int y)
 //++++                 VW_ScreenToScreen (oldscreen,newscreen,\r
                                PORTTILESWIDE*2,PORTTILESHIGH*16);\r
 \r
-                       if (i==screenpage)\r
-                               VL_SetScreen(newscreen+oldpanadjust,oldpanx & xpanmask);\r
+//++++                 if (i==screenpage)\r
+//++++                         VL_SetScreen(newscreen+oldgvar->video.ofs.pan.panadjust,oldgvar->video.ofs.pan.panx & xpanmask);\r
                }\r
        }\r
        bufferofs = screenstart[otherpage];\r
@@ -2016,7 +2017,7 @@ void RFL_EraseBlocks (void)
        //\r
        // erase the block by copying from the master screen\r
        //\r
-               pos = ylookup[block->screeny]+block->screenx;\r
+               pos = gvar->video.ofs.ylookup[block->screeny]+block->screenx;\r
 //++++         VW_ScreenToScreen (masterofs+pos,bufferofs+pos,\r
                        block->width,block->height);\r
 \r
@@ -2160,7 +2161,7 @@ redraw:
                                height = PORTSCREENHIGH - porty;    // clip bottom off\r
                        }\r
 \r
-                       dest = bufferofs + ylookup[porty] + portx;\r
+                       dest = bufferofs + gvar->video.ofs.ylookup[porty] + portx;\r
 \r
                        switch (sprite->draw)\r
                        {\r
@@ -2239,7 +2240,7 @@ void RF_Refresh (void)
 //\r
 // display the changed screen\r
 //\r
-       VL_SetScreen(bufferofs+panadjust,panx & xpanmask);\r
+       VL_SetScreen(bufferofs+gvar->video.ofs.pan.panadjust,gvar->video.ofs.pan.panx & xpanmask);\r
 \r
 //\r
 // prepare for next refresh\r
@@ -2295,10 +2296,10 @@ void RF_NewPosition (unsigned x, unsigned y)
        unsigned        updatenum;\r
 \r
        RFL_BoundNewOrigin (x,y);\r
-/*??\r
+\r
 // calculate new origin related globals\r
 //\r
-       RFL_CalcOriginStuff (x,y);*/\r
+       RFL_CalcOriginStuff (x,y);\r
 \r
 //\r
 // clear out all animating tiles\r
@@ -2677,7 +2678,7 @@ void RFL_EraseBlocks (void)
        //\r
        // erase the block by copying from the master screen\r
        //\r
-               pos = ylookup[block->screeny]+block->screenx;\r
+               pos = gvar->video.ofs.ylookup[block->screeny]+block->screenx;\r
                block->width = (block->width + (pos&1) + 1)& ~1;\r
                pos &= ~1;                              // make sure a word copy gets used\r
 //++++         VW_ScreenToScreen (masterofs+pos,bufferofs+pos,\r
@@ -2815,7 +2816,7 @@ redraw:
                                height = PORTSCREENHIGH - porty;    // clip bottom off\r
                        }\r
 \r
-                       dest = bufferofs + ylookup[porty] + portx;\r
+                       dest = bufferofs + gvar->video.ofs.ylookup[porty] + portx;\r
 \r
                        switch (sprite->draw)\r
                        {\r