]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/hb/c6_debug.c
[16_ca needs huge amounts of work and I should remember what needs to be done soon...
[16.git] / src / lib / hb / c6_debug.c
diff --git a/src/lib/hb/c6_debug.c b/src/lib/hb/c6_debug.c
new file mode 100755 (executable)
index 0000000..f3ce665
--- /dev/null
@@ -0,0 +1,799 @@
+/* Catacomb Apocalypse Source Code\r
+ * Copyright (C) 1993-2014 Flat Rock Software\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License along\r
+ * with this program; if not, write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+ */\r
+\r
+// C3_DEBUG.C\r
+\r
+#include "DEF.H"\r
+#include "gelib.h"\r
+#pragma hdrstop\r
+\r
+/*\r
+=============================================================================\r
+\r
+                                                LOCAL CONSTANTS\r
+\r
+=============================================================================\r
+*/\r
+\r
+#define DEBUG_OVERHEAD 0\r
+\r
+\r
+#define VIEWTILEX      20\r
+#define VIEWTILEY      (VIEWHEIGHT/16)\r
+\r
+/*\r
+=============================================================================\r
+\r
+                                                GLOBAL VARIABLES\r
+\r
+=============================================================================\r
+*/\r
+\r
+\r
+/*\r
+=============================================================================\r
+\r
+                                                LOCAL VARIABLES\r
+\r
+=============================================================================\r
+*/\r
+\r
+short colordelay=0;\r
+//boolean autofire=false;\r
+int    maporgx;\r
+int    maporgy;\r
+enum {mapview,tilemapview,actoratview,visview,mapseg2,lastview}        viewtype;\r
+\r
+void ViewMap (void);\r
+\r
+//===========================================================================\r
+\r
+#if 0\r
+/*\r
+================\r
+=\r
+= PicturePause\r
+=\r
+================\r
+*/\r
+\r
+void PicturePause (void)\r
+{\r
+       int     y;\r
+       unsigned        source;\r
+\r
+       source = displayofs+panadjust;\r
+\r
+//     VW_ColorBorder (15);\r
+       VW_SetLineWidth (40);\r
+       VW_SetScreen (0,0);\r
+\r
+       if (source<0x10000l-200*64)\r
+       {\r
+       //\r
+       // copy top line first\r
+       //\r
+               for (y=0;y<200;y++)\r
+                       VW_ScreenToScreen (source+y*64,y*40,40,1);\r
+       }\r
+       else\r
+       {\r
+       //\r
+       // copy bottom line first\r
+       //\r
+               for (y=199;y>=0;y--)\r
+                       VW_ScreenToScreen (source+y*64,y*40,40,1);\r
+       }\r
+\r
+       IN_Shutdown ();\r
+\r
+       VW_WaitVBL(70);\r
+       bioskey(0);\r
+       VW_WaitVBL(70);\r
+       Quit (NULL);\r
+}\r
+#endif\r
+\r
+\r
+//===========================================================================\r
+\r
+//===========================================================================\r
+\r
+#define        sc_1                    0x02\r
+#define        sc_2                    0x03\r
+#define        sc_3                    0x04\r
+#define        sc_4                    0x05\r
+#define        sc_5                    0x06\r
+#define        sc_6                    0x07\r
+#define        sc_7                    0x08\r
+#define        sc_8                    0x09\r
+#define        sc_9                    0x0a\r
+#define        sc_0                    0x0b\r
+\r
+\r
+\r
+/*\r
+================\r
+=\r
+= DebugKeys\r
+=\r
+================\r
+*/\r
+\r
+int DebugKeys (void)\r
+{\r
+       boolean esc;\r
+       int level,i;\r
+\r
+#if DEBUG_KEYS_AVAILABLE\r
+       if (Keyboard[sc_R])\r
+       {\r
+               CenterWindow (12,2);\r
+               if (autofire)\r
+                 US_PrintCentered ("Rapid-Fire OFF");\r
+               else\r
+                 US_PrintCentered ("Rapid-Fire ON");\r
+               VW_UpdateScreen();\r
+               IN_Ack();\r
+               autofire ^= 1;\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+#if DEBUG_KEYS_AVAILABLE\r
+       if (Keyboard[sc_A])\r
+       {\r
+               char levelstr[50];\r
+               unsigned org_tile,org_mapon,msgnum;\r
+               boolean newmsg=true,newlevel=false;\r
+\r
+               VW_FixRefreshBuffer ();\r
+               CenterWindow (16,3);\r
+               US_Print("\n");\r
+               US_CPrint("Message Test");\r
+               VW_UpdateScreen();\r
+\r
+               org_mapon = mapon;\r
+               msgnum = (org_tile = *(mapsegs[0]+farmapylookup[player->tiley]+player->tilex))-NAMESTART;\r
+               while (1)\r
+               {\r
+       // Get outta' here\r
+       //\r
+                       if (Keyboard[sc_Escape])\r
+                       {\r
+                               while (Keyboard[sc_Escape]);\r
+                               break;\r
+                       }\r
+\r
+       // Move to previous message\r
+       //\r
+                       if (Keyboard[sc_UpArrow])\r
+                       {\r
+                               if (msgnum)\r
+                               {\r
+                                       msgnum--;\r
+                                       newmsg = true;\r
+                               }\r
+                       }\r
+\r
+       // Move to next message\r
+       //\r
+                       if (Keyboard[sc_DownArrow])\r
+                       {\r
+                               if (msgnum < 24)\r
+                               {\r
+                                       msgnum++;\r
+                                       newmsg = true;\r
+                               }\r
+                       }\r
+\r
+       // Move to previous level\r
+       //\r
+                       if (Keyboard[sc_LeftArrow])\r
+                       {\r
+                               if (mapon)\r
+                               {\r
+                                       MM_SetPurge(&grsegs[LEVEL1TEXT+mapon],3);\r
+                                       mapon--;\r
+                                       newlevel = true;\r
+                               }\r
+                       }\r
+\r
+       // Move to next level\r
+       //\r
+                       if (Keyboard[sc_RightArrow])\r
+                       {\r
+                               if (mapon < LASTMAP-1)\r
+                               {\r
+                                       MM_SetPurge(&grsegs[LEVEL1TEXT+mapon],3);\r
+                                       mapon++;\r
+                                       newlevel = true;\r
+                               }\r
+                       }\r
+\r
+       // Load new level text\r
+       //\r
+                       if (newlevel)\r
+                       {\r
+                               CA_CacheGrChunk(LEVEL1TEXT+mapon);\r
+                               ScanText();\r
+                               newmsg = true;\r
+                               newlevel=false;\r
+                       }\r
+\r
+       // Display new message text\r
+       //\r
+                       if (newmsg)\r
+                       {\r
+                               *(mapsegs[0]+farmapylookup[player->tiley]+player->tilex) = msgnum+NAMESTART;\r
+                               DrawText(true);\r
+                               strcpy(levelstr,"Level: ");\r
+                               itoa(mapon,levelstr+strlen(levelstr),10);\r
+                               strcat(levelstr,"  Msg: ");\r
+                               itoa(msgnum,levelstr+strlen(levelstr),10);\r
+                               DisplaySMsg(levelstr,NULL);\r
+                               newmsg = false;\r
+\r
+                               if (Keyboard[sc_UpArrow] || Keyboard[sc_DownArrow] || Keyboard[sc_LeftArrow] || Keyboard[sc_RightArrow])\r
+                                       VW_WaitVBL(6);\r
+                       }\r
+\r
+               }\r
+// Restore game\r
+//\r
+               MM_SetPurge(&grsegs[LEVEL1TEXT+mapon],3);\r
+               mapon = org_mapon;\r
+               CA_CacheGrChunk(LEVEL1TEXT+mapon);\r
+               ScanText();\r
+               *(mapsegs[0]+farmapylookup[player->tiley]+player->tilex) = org_tile;\r
+               DrawText(true);\r
+               status_flag = 0;\r
+       }\r
+\r
+\r
+       if (Keyboard[sc_V])\r
+       {\r
+               displayofs = bufferofs = screenloc[screenpage];\r
+               CenterWindow (16,4);\r
+               US_CPrint("\n"GAMENAME);\r
+               US_CPrint(VERSION);\r
+               US_CPrint(REVISION);\r
+               VW_UpdateScreen();\r
+               IN_Ack ();\r
+       }\r
+\r
+#endif\r
+       if (Keyboard[sc_Q])                     // Q = Insta-Quit!\r
+               Quit("Insta-Quit!");\r
+#if 0\r
+       if (Keyboard[sc_Z])             // Z = freeze Time\r
+       {\r
+               if (FreezeTime)\r
+                 FreezeTime = 1;               // Allow refresh to dec to zero..\r
+               else\r
+                       StopTime();\r
+\r
+               IN_Ack();\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+\r
+//     if (Keyboard[sc_E])\r
+//             FaceDoor((player->x>>16l)+1,(player->y>>16l));\r
+//             FaceAngle(90);\r
+\r
+#if 0\r
+       if (Keyboard[sc_B])             // B = border color\r
+       {\r
+               CenterWindow(24,3);\r
+               PrintY+=6;\r
+               US_Print(" Border color (0-15):");\r
+               VW_UpdateScreen();\r
+               esc = !US_LineInput (px,py,str,NULL,true,2,0);\r
+               if (!esc)\r
+               {\r
+                       level = atoi (str);\r
+                       if (level>=0 && level<=15)\r
+                               VW_ColorBorder (level);\r
+               }\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+\r
+#if 1//DEBUG_KEYS_AVAILABLE\r
+       if (Keyboard[sc_O])\r
+       {\r
+               extern unsigned objectcount,latchmemavail;\r
+               unsigned unused,total;\r
+\r
+               CenterWindow (30,13);\r
+               US_Print ("Objects: ");\r
+               US_PrintUnsigned (objectcount);\r
+\r
+               US_Print("\n\nTics: ");\r
+               US_PrintUnsigned (tics);\r
+               US_Print("      Real Tics: ");\r
+               US_PrintUnsigned(realtics);\r
+\r
+               US_Print ("\n\n    Total Available: ");\r
+               US_PrintUnsigned (mminfo.mainmem/1024);\r
+               US_Print ("k\n        Mem In Use: ");\r
+               unused=MM_UnusedMemory()/1024;\r
+               US_PrintUnsigned (unused);\r
+               US_Print ("k\n Mem After Purge: ");\r
+               total=MM_TotalFree()/1024;\r
+               US_PrintUnsigned (total);\r
+               US_Print ("k (");\r
+               US_PrintUnsigned (total-unused);\r
+\r
+               US_Print (")\n\nLatch Mem Free: ");\r
+               US_PrintUnsigned (latchmemavail);\r
+               US_Print ("\n");\r
+               VW_UpdateScreen();\r
+               IN_Ack();\r
+       }\r
+\r
+       if (colordelay<1)\r
+       {\r
+               if (Keyboard[26])\r
+               {\r
+                       extern unsigned *groundcolor,debug_gnd;\r
+\r
+                       groundcolor = &debug_gnd;\r
+                       debug_gnd += 0x0101;\r
+                       if (debug_gnd == 0x1010)\r
+                               debug_gnd = 0;\r
+                       colordelay = 10;\r
+               }\r
+\r
+               if (Keyboard[27])\r
+               {\r
+                       extern unsigned *skycolor,debug_sky;\r
+\r
+                       skycolor = &debug_sky;\r
+                       debug_sky += 0x0101;\r
+                       if (debug_sky == 0x1010)\r
+                               debug_sky = 0;\r
+                       colordelay = 10;\r
+               }\r
+       }\r
+       else\r
+               colordelay -= realtics;\r
+#endif\r
+\r
+\r
+#if 0\r
+       if (Keyboard[sc_C])             // C = count objects\r
+       {\r
+               CountObjects();\r
+               return 1;\r
+       }\r
+\r
+\r
+       if (Keyboard[sc_D])             // D = start / end demo record\r
+       {\r
+               if (DemoMode == demo_Off)\r
+                       StartDemoRecord ();\r
+               else if (DemoMode == demo_Record)\r
+               {\r
+                       EndDemoRecord ();\r
+                       playstate = ex_completed;\r
+               }\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+#if 0\r
+       if (Keyboard[sc_E])             // E = quit level\r
+       {\r
+               if (tedlevel)\r
+                       TEDDeath();\r
+               playstate = ex_warped;\r
+               gamestate.mapon++;\r
+       }\r
+#endif\r
+\r
+#if 0\r
+       if (Keyboard[sc_F])             // F = facing spot\r
+       {\r
+               CenterWindow (12,4);\r
+               US_Print ("X:");\r
+               US_PrintUnsigned (player->x);\r
+               US_Print ("Y:");\r
+               US_PrintUnsigned (player->y);\r
+               US_Print ("A:");\r
+               US_PrintUnsigned (player->angle);\r
+               VW_UpdateScreen();\r
+               IN_Ack();\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+       if (Keyboard[sc_G])             // G = god mode\r
+       {\r
+               CenterWindow (12,2);\r
+               if (godmode)\r
+                 US_PrintCentered ("God mode OFF");\r
+               else\r
+                 US_PrintCentered ("God mode ON");\r
+               VW_UpdateScreen();\r
+               IN_Ack();\r
+               godmode ^= 1;\r
+               return 1;\r
+       }\r
+\r
+#if 0\r
+       if (Keyboard[sc_H])             // H = hurt self\r
+       {\r
+               TakeDamage (5);\r
+       }\r
+#endif\r
+\r
+       if (Keyboard[sc_I])                     // I = item cheat\r
+       {\r
+               extern boolean redraw_gems;\r
+\r
+               CenterWindow (12,3);\r
+               US_PrintCentered ("Free items!");\r
+               VW_UpdateScreen();\r
+               for (i=0;i<4;i++)\r
+               {\r
+                       GiveBolt ();\r
+                       GiveNuke ();\r
+                       GivePotion ();\r
+//                     if (!gamestate.keys[i])\r
+                               GiveKey (i);\r
+                       gamestate.gems[i] = GEM_DELAY_TIME;\r
+               }\r
+               gamestate.gems[4] = GEM_DELAY_TIME;\r
+               redraw_gems = true;\r
+/////////              for (i=0;i<8;i++)\r
+/////////                      GiveScroll (i,false);\r
+\r
+               IN_Ack ();\r
+               return 1;\r
+       }\r
+\r
+#if DEBUG_OVERHEAD\r
+       if (Keyboard[sc_Z])                     // O is used elsewhere...\r
+       {\r
+               ViewMap();\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+#if 0\r
+       if (Keyboard[sc_P])                     // P = pause with no screen disruptioon\r
+       {\r
+               PicturePause ();\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+#if 0\r
+       if (Keyboard[sc_S])     // S = slow motion\r
+       {\r
+               singlestep^=1;\r
+               CenterWindow (18,3);\r
+               if (singlestep)\r
+                       US_PrintCentered ("Slow motion ON");\r
+               else\r
+                       US_PrintCentered ("Slow motion OFF");\r
+               VW_UpdateScreen();\r
+               IN_Ack ();\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+#if 0\r
+       if (Keyboard[sc_V])                     // V = extra VBLs\r
+       {\r
+               CenterWindow(30,3);\r
+               PrintY+=6;\r
+               US_Print("  Add how many extra VBLs(0-8):");\r
+               VW_UpdateScreen();\r
+               esc = !US_LineInput (px,py,str,NULL,true,2,0);\r
+               if (!esc)\r
+               {\r
+                       level = atoi (str);\r
+                       if (level>=0 && level<=8)\r
+                               extravbls = level;\r
+               }\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+       if (Keyboard[sc_W])     // W = warp to level\r
+       {\r
+               CenterWindow(26,3);\r
+               PrintY+=6;\r
+               US_Print("  Warp to which level(0-17):");\r
+               VW_UpdateScreen();\r
+               esc = !US_LineInput (px,py,str,NULL,true,2,0);\r
+               if (!esc)\r
+               {\r
+                       level = atoi (str);\r
+                       if (level>=0 && level<=LASTMAP-1)\r
+                       {\r
+                               gamestate.mapon = level;\r
+                               playstate = ex_warped;\r
+                               lasttext = -1;\r
+                       }\r
+               }\r
+               return 1;\r
+       }\r
+\r
+#if 0\r
+       if (Keyboard[sc_X])                     // X = item cheat\r
+       {\r
+               CenterWindow (12,3);\r
+               US_PrintCentered ("Extra stuff!");\r
+               VW_UpdateScreen();\r
+               for (i=0;i<4;i++)\r
+               {\r
+                       GiveBolt ();\r
+                       GiveNuke ();\r
+                       GivePotion ();\r
+               }\r
+               IN_Ack ();\r
+               return 1;\r
+       }\r
+#endif\r
+\r
+////////       if (LastScan >= sc_1 && LastScan <= sc_8)       // free scrolls\r
+////////       {\r
+////////               GiveScroll (LastScan-sc_1,false);\r
+////////               IN_ClearKeysDown ();\r
+////////       }\r
+\r
+       return 0;\r
+}\r
+\r
+\r
+#if DEBUG_OVERHEAD\r
+\r
+/*\r
+=====================\r
+=\r
+= LatchDrawChar\r
+=\r
+=====================\r
+*/\r
+\r
+void LatchDrawChar (unsigned x, unsigned y, unsigned picnum)\r
+{\r
+       unsigned        source, dest;\r
+\r
+       dest = bufferofs + ylookup[y]+x;\r
+       source = latchpics[0]+picnum*8;\r
+\r
+       EGAWRITEMODE(1);\r
+       EGAMAPMASK(15);\r
+\r
+asm    mov     bx,[linewidth]\r
+asm    dec     bx\r
+\r
+asm    mov     ax,[screenseg]\r
+asm    mov     es,ax\r
+asm    mov     ds,ax\r
+\r
+asm    mov     si,[source]\r
+asm    mov     di,[dest]\r
+\r
+asm    movsb\r
+asm    add     di,bx\r
+asm    movsb\r
+asm    add     di,bx\r
+asm    movsb\r
+asm    add     di,bx\r
+asm    movsb\r
+asm    add     di,bx\r
+asm    movsb\r
+asm    add     di,bx\r
+asm    movsb\r
+asm    add     di,bx\r
+asm    movsb\r
+asm    add     di,bx\r
+asm    movsb\r
+\r
+asm    mov     ax,ss\r
+asm    mov     ds,ax                                   // restore turbo's data segment\r
+\r
+       EGAWRITEMODE(0);\r
+}\r
+\r
+#endif\r
+\r
+\r
+#if DEBUG_OVERHEAD\r
+/*\r
+=====================\r
+=\r
+= LatchDrawTile\r
+=\r
+=====================\r
+*/\r
+\r
+void LatchDrawTile (unsigned x, unsigned y, unsigned picnum)\r
+{\r
+       unsigned        source, dest;\r
+\r
+       dest = bufferofs + ylookup[y]+x;\r
+       source = tileoffsets[picnum];\r
+\r
+       EGAWRITEMODE(1);\r
+       EGAMAPMASK(15);\r
+\r
+asm    mov     bx,[linewidth]\r
+asm    sub     bx,2\r
+\r
+asm    mov     ax,[screenseg]\r
+asm    mov     es,ax\r
+asm    mov     ds,ax\r
+\r
+asm    mov     si,[source]\r
+asm    mov     di,[dest]\r
+asm    mov     dx,16\r
+\r
+lineloop:\r
+asm    movsb\r
+asm    movsb\r
+asm    add     di,bx\r
+\r
+asm    dec     dx\r
+asm    jnz     lineloop\r
+\r
+asm    mov     ax,ss\r
+asm    mov     ds,ax                                   // restore turbo's data segment\r
+\r
+       EGAWRITEMODE(0);\r
+}\r
+#endif\r
+\r
+\r
+#if DEBUG_OVERHEAD\r
+/*\r
+===================\r
+=\r
+= OverheadRefresh\r
+=\r
+===================\r
+*/\r
+\r
+void OverheadRefresh (void)\r
+{\r
+       unsigned        x,y,endx,endy,sx,sy;\r
+       unsigned        tile;\r
+\r
+\r
+       if (++screenpage == 3)\r
+               screenpage = 0;\r
+\r
+       bufferofs = screenloc[screenpage];\r
+\r
+       endx = maporgx+VIEWTILEX;\r
+       endy = maporgy+VIEWTILEY;\r
+\r
+       for (y=maporgy;y<endy;y++)\r
+               for (x=maporgx;x<endx;x++)\r
+               {\r
+                       sx = (x-maporgx)*2;\r
+                       sy = (y-maporgy)*16;\r
+\r
+                       switch (viewtype)\r
+                       {\r
+                       case mapview:\r
+                               tile = *(mapsegs[0]+farmapylookup[y]+x);\r
+                               break;\r
+\r
+                       case tilemapview:\r
+                               tile = tilemap[x][y];\r
+                               break;\r
+\r
+                       case actoratview:\r
+                               tile = (unsigned)actorat[x][y];\r
+                               break;\r
+\r
+                       case visview:\r
+                               tile = spotvis[x][y];\r
+                               break;\r
+\r
+                       case mapseg2:\r
+                               tile = *(mapsegs[2]+farmapylookup[y]+x);\r
+                               if (tile < 256)\r
+                                       tile = *(mapsegs[0]+farmapylookup[y]+x);\r
+                       break;\r
+\r
+                       }\r
+\r
+                       if (tile<NUMTILE16)\r
+                               LatchDrawTile(sx,sy,tile);\r
+                       else\r
+                       {\r
+                               LatchDrawChar(sx,sy,NUMBERCHARS+((tile&0xf000)>>12));\r
+                               LatchDrawChar(sx+1,sy,NUMBERCHARS+((tile&0x0f00)>>8));\r
+                               LatchDrawChar(sx,sy+8,NUMBERCHARS+((tile&0x00f0)>>4));\r
+                               LatchDrawChar(sx+1,sy+8,NUMBERCHARS+(tile&0x000f));\r
+                       }\r
+               }\r
+\r
+       VW_SetScreen (bufferofs,0);\r
+       displayofs = bufferofs;\r
+}\r
+\r
+\r
+/*\r
+===================\r
+=\r
+= ViewMap\r
+=\r
+===================\r
+*/\r
+\r
+void ViewMap (void)\r
+{\r
+       boolean         button0held;\r
+\r
+       viewtype = actoratview;\r
+       button0held = false;\r
+\r
+\r
+       maporgx = player->tilex - VIEWTILEX/2;\r
+       if (maporgx<0)\r
+               maporgx = 0;\r
+       maporgy = player->tiley - VIEWTILEY/2;\r
+       if (maporgy<0)\r
+               maporgy = 0;\r
+\r
+       do\r
+       {\r
+//\r
+// let user pan around\r
+//\r
+               IN_ReadControl(0,&control);\r
+               if (control.xaxis == -1 && maporgx>0)\r
+                       maporgx--;\r
+               if (control.xaxis == 1 && maporgx<mapwidth-VIEWTILEX)\r
+                       maporgx++;\r
+               if (control.yaxis == -1 && maporgy>0)\r
+                       maporgy--;\r
+               if (control.yaxis == 1 && maporgy<mapheight-VIEWTILEY)\r
+                       maporgy++;\r
+\r
+               if (control.button0 && !button0held)\r
+               {\r
+                       button0held = true;\r
+                       viewtype++;\r
+                       if (viewtype==lastview)\r
+                               viewtype = mapview;\r
+               }\r
+               if (!control.button0)\r
+                       button0held = false;\r
+\r
+\r
+               OverheadRefresh ();\r
+\r
+       } while (!Keyboard[sc_Escape]);\r
+\r
+       IN_ClearKeysDown ();\r
+       DrawPlayScreen ();\r
+}\r
+#endif\r
+\r