]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/scroll16.c
p16 is being worked on a bunch by me wwww [16_ca needs huge amounts of work and I...
[16.git] / src / lib / scroll16.c
index 249d0b3da2120a7c1d2be44561338008699a9407..94338ab7d872a49765a44ccfe9f9c4d8f4606653 100755 (executable)
 */\r
 #include "src/lib/scroll16.h"\r
 \r
+//check map edge\r
+boolean ZCL_mapEdgeChk(map_view_t *map_v, nibble dir, int tx, int ty, boolean pansw, boolean noscrollsw)\r
+{\r
+       int     w,h;\r
+\r
+       switch (pansw)\r
+       {\r
+               case 0:\r
+                       w = map_v[0].map->width;\r
+                       h = map_v[0].map->height;\r
+               break;\r
+               case 1:\r
+                       w = map_v[0].page->ti.tilesw;\r
+                       h = map_v[0].page->ti.tilesh;\r
+               break;\r
+       }\r
+\r
+       switch(dir)\r
+       {\r
+               default://no direction\r
+               case 2:\r
+                       //0000pip[0].video->startclk = (*clockw);\r
+                       return false;\r
+               break;\r
+               //right movement\r
+               case 3:\r
+                       if(noscrollsw) return tx < map_v[0].map->width;\r
+                       else return (map_v[0].tx >= 0 && map_v[0].tx+map_v[0].page->ti.tw < w);\r
+               break;\r
+               //left movement\r
+               case 1:\r
+                       if(noscrollsw) return tx > 1;\r
+                       else return (map_v[0].tx > 0 && map_v[0].tx+map_v[0].page->ti.tw <= w);\r
+               break;\r
+               //down movement\r
+               case 4:\r
+                       if(noscrollsw) return ty < map_v[0].map->height;\r
+                       else return (map_v[0].ty >= 0 && map_v[0].ty+map_v[0].page->ti.th < h);\r
+               break;\r
+               //up movement\r
+               case 0:\r
+                       if(noscrollsw) return ty > 1;\r
+                       else return (map_v[0].ty > 0 && map_v[0].ty+map_v[0].page->ti.th <= h);\r
+               break;\r
+       }\r
+       return false;\r
+}\r
+\r
+boolean ZCL_CollCheck(map_view_t *map_v, nibble dir, int tx, int ty)\r
+{\r
+       switch (dir)\r
+       {\r
+               default://no direction\r
+               case 2:\r
+               break;\r
+               case 3://right\r
+                       return !(map_v[0].map->layerdata[0].data[(tx)+(map_v[0].map->width*(ty-1))] == 0);\r
+               break;\r
+               case 1://left\r
+                       return !(map_v[0].map->layerdata[0].data[(tx-2)+(map_v[0].map->width*(ty-1))] == 0);\r
+               break;\r
+               case 4://down\r
+                       return !(map_v[0].map->layerdata[0].data[(tx-1)+(map_v[0].map->width*(ty))] == 0);\r
+               break;\r
+               case 0://up\r
+                       return !(map_v[0].map->layerdata[0].data[(tx-1)+(map_v[0].map->width*(ty-2))] == 0);\r
+               break;\r
+       }\r
+       return false;\r
+}\r
+\r
+boolean ZCL_ScreenMidPosChk(map_view_t *map_v, nibble dir, int tx, int ty)\r
+{\r
+       if(ZCL_mapEdgeChk(map_v, dir, 0, 0, 0, 0))\r
+               switch(dir)\r
+               {\r
+                       default://no direction\r
+                       case 2:\r
+                               //0000map_v[0].video->startclk = (*clockw);\r
+                               return false;\r
+                       break;\r
+                       //right movement\r
+                       case 3:\r
+                               return tx == map_v[0].tx+map_v[0].page->ti.tilemidposscreenx;\r
+                       break;\r
+                       //left movement\r
+                       case 1:\r
+                               return tx == map_v[0].tx+map_v[0].page->ti.tilemidposscreenx;\r
+                       break;\r
+                       //down movement\r
+                       case 4:\r
+                               return ty == map_v[0].ty+map_v[0].page->ti.tilemidposscreeny;\r
+                       break;\r
+                       //up movement\r
+                       case 0:\r
+                               return ty == map_v[0].ty+map_v[0].page->ti.tilemidposscreeny;\r
+                       break;\r
+               }\r
+       return false;\r
+}\r
+\r
 //#define INC_PER_FRAME if(player[pn].enti.q&1) player[pn].enti.persist_aniframe++; if(player[pn].enti.persist_aniframe>4) player[pn].enti.persist_aniframe = 1;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+#define SHOWMVFUN__ ZC_ShowMV(pip, 1, 0);\r
+#endif\r
 \r
 void ZC_walk(map_view_t *pip, player_t *player, word pn)\r
 {\r
@@ -36,8 +140,8 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                break;\r
                //right movement\r
                case 3:\r
-                       if(ZC_mapEdgeChk(pip, player[pn].enti.d, 0) && player[pn].enti.tx == pip[0].tx+pip[0].page->ti.tilemidposscreenx &&\r
-                       !(pip[0].map->layerdata[0].data[(player[pn].enti.tx)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY))     //collision detection!\r
+                       if(ZCL_ScreenMidPosChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty) &&\r
+                       ZCL_CollCheck(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY))      //collision detection!\r
                        {\r
                                player[pn].walktype=2;\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
@@ -46,9 +150,13 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                        ZC_mapScroll(pip, player, pn);\r
                                        player[pn].enti.q++;\r
                                        //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                                       SHOWMVFUN__\r
+#endif\r
                                } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx++; }\r
                        }\r
-                       else if(player[pn].enti.tx < pip[0].map->width && !(pip[0].map->layerdata[0].data[(player[pn].enti.tx)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY))\r
+                       else if(ZCL_mapEdgeChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty, 0, 1) &&\r
+                       ZCL_CollCheck(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY))\r
                        {\r
                                player[pn].walktype=1;\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
@@ -56,6 +164,9 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                        player[pn].enti.x+=(player[pn].enti.speed);\r
                                        ZC_animatePlayer(pip, player, pn);\r
                                        player[pn].enti.q++;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                                       SHOWMVFUN__\r
+#endif\r
                                } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx++; }\r
                        }\r
                        else\r
@@ -63,14 +174,17 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                player[pn].walktype=0;\r
                                ZC_animatePlayer(pip, player, pn);\r
                                player[pn].enti.d = 2;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                               SHOWMVFUN__\r
+#endif\r
                        }\r
                        player[pn].enti.triggerx = player[pn].enti.tx+1;\r
                        player[pn].enti.triggery = player[pn].enti.ty;\r
                break;\r
                //left movement\r
                case 1:\r
-                       if(ZC_mapEdgeChk(pip, player[pn].enti.d, 0) && player[pn].enti.tx == pip[0].tx+pip[0].page->ti.tilemidposscreenx &&\r
-                       !(pip[0].map->layerdata[0].data[(player[pn].enti.tx-2)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY))   //collision detection!\r
+                       if(ZCL_ScreenMidPosChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty) &&\r
+                       ZCL_CollCheck(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY))      //collision detection!\r
                        {\r
                                player[pn].walktype=2;\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
@@ -79,9 +193,13 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                        ZC_mapScroll(pip, player, pn);\r
                                        player[pn].enti.q++;\r
                                        //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                                       SHOWMVFUN__\r
+#endif\r
                                } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx--; }\r
                        }\r
-                       else if(player[pn].enti.tx > 1 && !(pip[0].map->layerdata[0].data[(player[pn].enti.tx-2)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY))\r
+                       else if(ZCL_mapEdgeChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty, 0, 1) &&\r
+                       ZCL_CollCheck(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY))\r
                        {\r
                                player[pn].walktype=1;\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
@@ -89,6 +207,9 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                        player[pn].enti.x-=(player[pn].enti.speed);\r
                                        ZC_animatePlayer(pip, player, pn);\r
                                        player[pn].enti.q++;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                                       SHOWMVFUN__\r
+#endif\r
                                } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx--; }\r
                        }\r
                        else\r
@@ -96,14 +217,17 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                player[pn].walktype=0;\r
                                ZC_animatePlayer(pip, player, pn);\r
                                player[pn].enti.d = 2;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                               SHOWMVFUN__\r
+#endif\r
                        }\r
                        player[pn].enti.triggerx = player[pn].enti.tx-1;\r
                        player[pn].enti.triggery = player[pn].enti.ty;\r
                break;\r
                //down movement\r
                case 4:\r
-                       if(ZC_mapEdgeChk(pip, player[pn].enti.d, 0) && player[pn].enti.ty == pip[0].ty+pip[0].page->ti.tilemidposscreeny &&\r
-                       !(pip[0].map->layerdata[0].data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY))     //collision detection!\r
+                       if(ZCL_ScreenMidPosChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty) &&\r
+                       ZCL_CollCheck(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY))      //collision detection!\r
                        {\r
                                player[pn].walktype=2;\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
@@ -112,9 +236,13 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                        ZC_mapScroll(pip, player, pn);\r
                                        player[pn].enti.q++;\r
                                        //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                                       SHOWMVFUN__\r
+#endif\r
                                } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty++; }\r
                        }\r
-                       else if(player[pn].enti.ty < pip[0].map->height && !(pip[0].map->layerdata[0].data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY))\r
+                       else if(ZCL_mapEdgeChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty, 0, 1) &&\r
+                       ZCL_CollCheck(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY))\r
                        {\r
                                player[pn].walktype=1;\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
@@ -122,6 +250,9 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                        player[pn].enti.y+=(player[pn].enti.speed);\r
                                        ZC_animatePlayer(pip, player, pn);\r
                                        player[pn].enti.q++;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                                       SHOWMVFUN__\r
+#endif\r
                                } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty++; }\r
                        }\r
                        else\r
@@ -129,14 +260,17 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                player[pn].walktype=0;\r
                                ZC_animatePlayer(pip, player, pn);\r
                                player[pn].enti.d = 2;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                               SHOWMVFUN__\r
+#endif\r
                        }\r
                        player[pn].enti.triggerx = player[pn].enti.tx;\r
                        player[pn].enti.triggery = player[pn].enti.ty+1;\r
                break;\r
                //up movement\r
                case 0:\r
-                       if(ZC_mapEdgeChk(pip, player[pn].enti.d, 0) && player[pn].enti.ty == pip[0].ty+pip[0].page->ti.tilemidposscreeny &&\r
-                       !(pip[0].map->layerdata[0].data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty-2))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty-1 == TRIGGY))   //collision detection!\r
+                       if(ZCL_ScreenMidPosChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty) &&\r
+                       ZCL_CollCheck(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty-1 == TRIGGY))      //collision detection!\r
                        {\r
                                player[pn].walktype=2;\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
@@ -145,9 +279,13 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                        ZC_mapScroll(pip, player, pn);\r
                                        player[pn].enti.q++;\r
                                        //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                                       SHOWMVFUN__\r
+#endif\r
                                } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty--; }\r
                        }\r
-                       else if(player[pn].enti.ty > 1 && !(pip[0].map->layerdata[0].data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty-2))] == 0))//!(player[pn].enti.tx == TRIGGX &&  player[pn].enti.ty-1 == TRIGGY))\r
+                       else if(ZCL_mapEdgeChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty, 0, 1) &&\r
+                       ZCL_CollCheck(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty))//!(player[pn].enti.tx == TRIGGX &&  player[pn].enti.ty-1 == TRIGGY))\r
                        {\r
                                player[pn].walktype=1;\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
@@ -155,6 +293,9 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                        player[pn].enti.y-=(player[pn].enti.speed);\r
                                        ZC_animatePlayer(pip, player, pn);\r
                                        player[pn].enti.q++;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                                       SHOWMVFUN__\r
+#endif\r
                                } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty--; }\r
                        }\r
                        else\r
@@ -162,6 +303,9 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                                player[pn].walktype=0;\r
                                ZC_animatePlayer(pip, player, pn);\r
                                player[pn].enti.d = 2;\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                               SHOWMVFUN__\r
+#endif\r
                        }\r
                        player[pn].enti.triggerx = player[pn].enti.tx;\r
                        player[pn].enti.triggery = player[pn].enti.ty-1;\r
@@ -178,7 +322,7 @@ void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)
        {\r
                //right movement\r
                case 3:\r
-                       if(ZC_mapEdgeChk(pip, player[pn].enti.d, 1))\r
+                       if(ZCL_mapEdgeChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty, 1, 0))\r
                        {\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
                                {\r
@@ -191,7 +335,7 @@ void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)
 \r
                //left movement\r
                case 1:\r
-                       if(ZC_mapEdgeChk(pip, player[pn].enti.d, 1))\r
+                       if(ZCL_mapEdgeChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty, 1, 0))\r
                        {\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
                                {\r
@@ -204,7 +348,7 @@ void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)
 \r
                //down movement\r
                case 4:\r
-                       if(ZC_mapEdgeChk(pip, player[pn].enti.d, 1))\r
+                       if(ZCL_mapEdgeChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty, 1, 0))\r
                        {\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
                                {\r
@@ -217,7 +361,7 @@ void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)
 \r
                //up movement\r
                case 0:\r
-                       if(ZC_mapEdgeChk(pip, player[pn].enti.d, 1))\r
+                       if(ZCL_mapEdgeChk(pip, player[pn].enti.d, player[pn].enti.tx, player[pn].enti.ty, 1, 0))\r
                        {\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
                                {\r
@@ -238,11 +382,12 @@ void ZC_MVSetup(map_view_t *pip, map_t *map, global_game_variables_t *gv)
 #define ZC_MVI 1\r
        nibble i;\r
        // 1st page\r
-       pip[0].page = &gv->video.page[0];\r
-       pip[0].map = map;\r
-       pip[0].video = &gv->video;\r
-       pip[0].p        = &gv->video.p;\r
-       pip[0].sp       = &gv->video.sp;\r
+       pip[0].page             = &gv->video.page[0];\r
+       pip[0].map              = map;\r
+       pip[0].video            = &gv->video;\r
+       pip[0].kurokku  = &gv->kurokku;\r
+       pip[0].p                = &gv->video.p;\r
+       pip[0].sp               = &gv->video.sp;\r
        ZC_MVInit(pip, 1, 1);\r
 \r
        for(i=ZC_MVI;i<gv->video.num_of_pages;i++)\r
@@ -269,43 +414,7 @@ void ZC_MVInit(map_view_t *pip, int tx, int ty)
 \r
 void ZC_ShowMV(map_view_t *moo, boolean vsync, boolean sr)\r
 {\r
-       word high_address, low_address, offset;\r
-       byte crtcOffset;\r
-\r
-       // calculate offset\r
-       offset = (word) moo[moo[0].video->sp].page->data;\r
-       offset += moo[0].page->dy * (moo[0].page->width >> 2 );\r
-       offset += moo[0].page->dx >> 2;\r
-\r
-       // calculate crtcOffset according to virtual width\r
-       switch(sr)\r
-       {\r
-               case 1:\r
-                       crtcOffset = moo[moo[0].video->sp].page->sw >> 3;\r
-               break;\r
-               default:\r
-               case 0:\r
-                       crtcOffset = moo[0].page->width >> 3;\r
-               break;\r
-       }\r
-\r
-       high_address = HIGH_ADDRESS | (offset & 0xff00);\r
-       low_address  = LOW_ADDRESS  | (offset << 8);\r
-\r
-       // wait for appropriate timing and then program CRTC\r
-       if(vsync) while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE));\r
-       outpw(CRTC_INDEX, high_address);\r
-       outpw(CRTC_INDEX, low_address);\r
-       outp(CRTC_INDEX, 0x13);\r
-       outp(CRTC_DATA, crtcOffset);\r
-\r
-       // wait for one retrace\r
-       if(vsync) while (!(inp(INPUT_STATUS_1) & VRETRACE));\r
-\r
-       // do PEL panning here\r
-       outp(AC_INDEX, 0x33);\r
-       outp(AC_INDEX, (moo[0].page->dx & 0x03) << 1);\r
-       vga_state.vga_draw_stride_limit = vga_state.vga_draw_stride = moo[0].page->stridew;\r
+       VL_ShowPage(moo[0].page, vsync, sr);\r
 }\r
 \r
 #if 0\r
@@ -384,7 +493,7 @@ void near mapScrollRight(map_view_t *mv, player_t *player, word id, word plid)
 \r
        /* draw the next column */\r
        x= mv[0].page->sw + mv[0].map->tiles->tileWidth;\r
-       if(ZC_mapEdgeChk(mv, player[plid].enti.d, 0))\r
+       if(ZCL_mapEdgeChk(mv, player[plid].enti.d, player[plid].enti.tx, player[plid].enti.ty, 0, 0))\r
 #ifndef FULLRCREND\r
        if(player[plid].enti.q%4)\r
 #else\r
@@ -407,7 +516,7 @@ void near mapScrollLeft(map_view_t *mv, player_t *player, word id, word plid)
 \r
        /* draw the next column */\r
        x= 0;\r
-       if(ZC_mapEdgeChk(mv, player[plid].enti.d, 0))\r
+       if(ZCL_mapEdgeChk(mv, player[plid].enti.d, player[plid].enti.tx, player[plid].enti.ty, 0, 0))\r
 #ifndef FULLRCREND\r
        if(player[plid].enti.q%4)\r
 #else\r
@@ -430,7 +539,7 @@ void near mapScrollUp(map_view_t *mv, player_t *player, word id, word plid)
 \r
        /* draw the next row */\r
        y= 0;\r
-       if(ZC_mapEdgeChk(mv, player[plid].enti.d, 0))\r
+       if(ZCL_mapEdgeChk(mv, player[plid].enti.d, player[plid].enti.tx, player[plid].enti.ty, 0, 0))\r
 #ifndef FULLRCREND\r
        if(player[plid].enti.q%3)\r
 #else\r
@@ -453,7 +562,7 @@ void near mapScrollDown(map_view_t *mv, player_t *player, word id, word plid)
 \r
        /* draw the next row */\r
        y= mv[0].page->sh + mv[0].map->tiles->tileHeight;\r
-       if(ZC_mapEdgeChk(mv, player[plid].enti.d, 0))\r
+       if(ZCL_mapEdgeChk(mv, player[plid].enti.d, player[plid].enti.tx, player[plid].enti.ty, 0, 0))\r
 #ifndef FULLRCREND\r
        if(player[plid].enti.q%3)\r
 #else\r
@@ -776,22 +885,8 @@ void shinku(global_game_variables_t *gv)
        }else //copy dat sheet\r
        gv->kurokku.tiku++;\r
 \r
-       switch(gv->kurokku.fpscap)\r
-       {\r
-               case 0: //turn this off if XT\r
-                       //modexprint(&(gv->video.page[0]), x, y+8, type, 1, col, bgcol, "sanic!");\r
-                       gv->kurokku.frames_per_second=1;\r
-               break;\r
-               case 1:\r
-                       //modexWaitBorder();\r
-                       //modexWaitBorder_start();\r
-                       //vga_wait_for_vsync();\r
-                       vga_wait_for_vsync_end();\r
-                       gv->kurokku.frames_per_second=60;\r
-               break;\r
-       }\r
        //render!!\r
-       if(gv->video.dorender )\r
+       if(gv->video.dorender)\r
        {//r=1\r
                /*if(video->bgp s)\r
                {\r
@@ -799,10 +894,30 @@ void shinku(global_game_variables_t *gv)
                }else{\r
                        //modexCopyPageRegion(&video->page[0], &video->page[1], enti->x, enti->y, 0, 0, 24, 32);\r
                }*/\r
+#ifndef OLDWALKSHOWPAGESTUFF\r
                VL_ShowPage(&(gv->video.page[gv->video.sp]), gv->kurokku.fpscap, 0);\r
+#endif\r
                gv->video.dorender =!gv->video.dorender;\r
                //0000gv->video.tickclk = ((*clockw)-gv->video.startclk)/18.2;\r
        }\r
+\r
+       switch(gv->kurokku.fpscap)\r
+       {\r
+               case 0: //turn this off if XT\r
+                       //modexprint(&(gv->video.page[0]), x, y+8, type, 1, col, bgcol, "sanic!");\r
+                       gv->kurokku.frames_per_second=1;\r
+               break;\r
+               case 1:\r
+#ifdef OLDWALKSHOWPAGESTUFF\r
+                       //modexWaitBorder();\r
+                       //modexWaitBorder_start();\r
+#else\r
+                       vga_wait_for_vsync();\r
+                       //vga_wait_for_vsync_end();\r
+#endif\r
+                       gv->kurokku.frames_per_second=60;\r
+               break;\r
+       }\r
        PM_NextFrame(gv);\r
 }\r
 \r
@@ -942,6 +1057,8 @@ void player_walk(player_t *player, map_view_t *map_v){
  *     end\r
  */\r
 \r
+\r
+\r
 void mapScroll(map_view_t *mv, player_t *player)\r
 {\r
        //word x, y;  /* coordinate for drawing */\r