]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/hb/wl_inter.c
going to start wolf3d core core (loop with input only) work soon. I was mostly brains...
[16.git] / src / lib / hb / wl_inter.c
diff --git a/src/lib/hb/wl_inter.c b/src/lib/hb/wl_inter.c
deleted file mode 100755 (executable)
index c74cc9e..0000000
+++ /dev/null
@@ -1,1718 +0,0 @@
-// WL_INTER.C\r
-\r
-#include "WL_DEF.H"\r
-#pragma hdrstop\r
-\r
-\r
-//==========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= CLearSplitVWB\r
-=\r
-==================\r
-*/\r
-\r
-void ClearSplitVWB (void)\r
-{\r
-       memset (update,0,sizeof(update));\r
-       WindowX = 0;\r
-       WindowY = 0;\r
-       WindowW = 320;\r
-       WindowH = 160;\r
-}\r
-\r
-\r
-//==========================================================================\r
-\r
-#ifdef SPEAR\r
-#ifndef SPEARDEMO\r
-////////////////////////////////////////////////////////\r
-//\r
-// End of Spear of Destiny\r
-//\r
-////////////////////////////////////////////////////////\r
-\r
-void EndScreen (int palette, int screen)\r
-{\r
-       CA_CacheScreen (screen);\r
-       VW_UpdateScreen ();\r
-       CA_CacheGrChunk (palette);\r
-       VL_FadeIn(0,255,grsegs[palette],30);\r
-       UNCACHEGRCHUNK (palette);\r
-       IN_ClearKeysDown ();\r
-       IN_Ack ();\r
-       VW_FadeOut ();\r
-}\r
-\r
-\r
-void EndSpear(void)\r
-{\r
-       EndScreen (END1PALETTE, ENDSCREEN11PIC);\r
-\r
-       CA_CacheScreen (ENDSCREEN3PIC);\r
-       VW_UpdateScreen ();\r
-       CA_CacheGrChunk (END3PALETTE);\r
-       VL_FadeIn(0,255,grsegs[END3PALETTE],30);\r
-       UNCACHEGRCHUNK (END3PALETTE);\r
-       fontnumber = 0;\r
-       fontcolor = 0xd0;\r
-       WindowX = 0;\r
-       WindowW = 320;\r
-       PrintX = 0;\r
-       PrintY = 180;\r
-       US_CPrint (STR_ENDGAME1"\n");\r
-       US_CPrint (STR_ENDGAME2);\r
-       VW_UpdateScreen ();\r
-       IN_StartAck ();\r
-       TimeCount = 0;\r
-       while (!IN_CheckAck () && TimeCount < 700);\r
-\r
-       PrintX = 0;\r
-       PrintY = 180;\r
-       VWB_Bar(0,180,320,20,0);\r
-       US_CPrint (STR_ENDGAME3"\n");\r
-       US_CPrint (STR_ENDGAME4);\r
-       VW_UpdateScreen ();\r
-       IN_StartAck ();\r
-       TimeCount = 0;\r
-       while (!IN_CheckAck () && TimeCount < 700);\r
-\r
-       VW_FadeOut ();\r
-\r
-       EndScreen (END4PALETTE, ENDSCREEN4PIC);\r
-       EndScreen (END5PALETTE, ENDSCREEN5PIC);\r
-       EndScreen (END6PALETTE, ENDSCREEN6PIC);\r
-       EndScreen (END7PALETTE, ENDSCREEN7PIC);\r
-       EndScreen (END8PALETTE, ENDSCREEN8PIC);\r
-       EndScreen (END9PALETTE, ENDSCREEN9PIC);\r
-\r
-       EndScreen (END2PALETTE, ENDSCREEN12PIC);\r
-\r
-       MainMenu[savegame].active = 0;\r
-}\r
-#endif\r
-#endif\r
-\r
-//==========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= Victory\r
-=\r
-==================\r
-*/\r
-\r
-void Victory (void)\r
-{\r
-#ifndef SPEARDEMO\r
-       long    sec;\r
-       int i,min,kr,sr,tr,x;\r
-       char tempstr[8];\r
-\r
-#define RATIOX 6\r
-#define RATIOY 14\r
-#define TIMEX  14\r
-#define TIMEY  8\r
-\r
-\r
-#ifdef SPEAR\r
-       StartCPMusic (XTHEEND_MUS);\r
-\r
-       CA_CacheGrChunk(BJCOLLAPSE1PIC);\r
-       CA_CacheGrChunk(BJCOLLAPSE2PIC);\r
-       CA_CacheGrChunk(BJCOLLAPSE3PIC);\r
-       CA_CacheGrChunk(BJCOLLAPSE4PIC);\r
-\r
-       VWB_Bar(0,0,320,200,VIEWCOLOR);\r
-       VWB_DrawPic (124,44,BJCOLLAPSE1PIC);\r
-       VW_UpdateScreen ();\r
-       VW_FadeIn ();\r
-       VW_WaitVBL(2*70);\r
-       VWB_DrawPic (124,44,BJCOLLAPSE2PIC);\r
-       VW_UpdateScreen ();\r
-       VW_WaitVBL(105);\r
-       VWB_DrawPic (124,44,BJCOLLAPSE3PIC);\r
-       VW_UpdateScreen ();\r
-       VW_WaitVBL(105);\r
-       VWB_DrawPic (124,44,BJCOLLAPSE4PIC);\r
-       VW_UpdateScreen ();\r
-       VW_WaitVBL(3*70);\r
-\r
-       UNCACHEGRCHUNK(BJCOLLAPSE1PIC);\r
-       UNCACHEGRCHUNK(BJCOLLAPSE2PIC);\r
-       UNCACHEGRCHUNK(BJCOLLAPSE3PIC);\r
-       UNCACHEGRCHUNK(BJCOLLAPSE4PIC);\r
-       VL_FadeOut (0,255,0,17,17,5);\r
-#endif\r
-\r
-       StartCPMusic (URAHERO_MUS);\r
-       ClearSplitVWB ();\r
-       CacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END);\r
-       CA_CacheGrChunk(STARTFONT);\r
-\r
-#ifndef SPEAR\r
-       CA_CacheGrChunk(C_TIMECODEPIC);\r
-#endif\r
-\r
-\r
-       VWB_Bar (0,0,320,200-STATUSLINES,127);\r
-#ifdef JAPAN\r
-#ifndef JAPDEMO\r
-       CA_CacheGrChunk(C_ENDRATIOSPIC);\r
-       VWB_DrawPic(0,0,C_ENDRATIOSPIC);\r
-       UNCACHEGRCHUNK(C_ENDRATIOSPIC);\r
-#endif\r
-#else\r
-       Write(18,2,STR_YOUWIN);\r
-\r
-       Write(TIMEX,TIMEY-2,STR_TOTALTIME);\r
-\r
-       Write(12,RATIOY-2,"averages");\r
-\r
-       #ifdef SPANISH\r
-       Write(RATIOX+2,  RATIOY,      STR_RATKILL);\r
-       Write(RATIOX+2,  RATIOY+2,  STR_RATSECRET);\r
-       Write(RATIOX+2,  RATIOY+4,STR_RATTREASURE);\r
-       #else\r
-       Write(RATIOX+8,RATIOY,      STR_RATKILL);\r
-       Write(RATIOX+4,RATIOY+2,  STR_RATSECRET);\r
-       Write(RATIOX,  RATIOY+4,STR_RATTREASURE);\r
-       #endif\r
-\r
-#endif\r
-\r
-#ifndef JAPDEMO\r
-       VWB_DrawPic (8,4,L_BJWINSPIC);\r
-#endif\r
-\r
-\r
-#ifndef SPEAR\r
-       for (kr = sr = tr = sec = i = 0;i < 8;i++)\r
-#else\r
-       for (kr = sr = tr = sec = i = 0;i < 20;i++)\r
-#endif\r
-       {\r
-               sec += LevelRatios[i].time;\r
-               kr += LevelRatios[i].kill;\r
-               sr += LevelRatios[i].secret;\r
-               tr += LevelRatios[i].treasure;\r
-       }\r
-\r
-#ifndef SPEAR\r
-       kr /= 8;\r
-       sr /= 8;\r
-       tr /= 8;\r
-#else\r
-       kr /= 14;\r
-       sr /= 14;\r
-       tr /= 14;\r
-#endif\r
-\r
-       min = sec/60;\r
-       sec %= 60;\r
-\r
-       if (min > 99)\r
-               min = sec = 99;\r
-\r
-       i = TIMEX*8+1;\r
-       VWB_DrawPic(i,TIMEY*8,L_NUM0PIC+(min/10));\r
-       i += 2*8;\r
-       VWB_DrawPic(i,TIMEY*8,L_NUM0PIC+(min%10));\r
-       i += 2*8;\r
-       Write(i/8,TIMEY,":");\r
-       i += 1*8;\r
-       VWB_DrawPic(i,TIMEY*8,L_NUM0PIC+(sec/10));\r
-       i += 2*8;\r
-       VWB_DrawPic(i,TIMEY*8,L_NUM0PIC+(sec%10));\r
-       VW_UpdateScreen ();\r
-\r
-       itoa(kr,tempstr,10);\r
-       x=RATIOX+24-strlen(tempstr)*2;\r
-       Write(x,RATIOY,tempstr);\r
-\r
-       itoa(sr,tempstr,10);\r
-       x=RATIOX+24-strlen(tempstr)*2;\r
-       Write(x,RATIOY+2,tempstr);\r
-\r
-       itoa(tr,tempstr,10);\r
-       x=RATIOX+24-strlen(tempstr)*2;\r
-       Write(x,RATIOY+4,tempstr);\r
-\r
-\r
-#ifndef SPANISH\r
-#ifndef UPLOAD\r
-#ifndef SPEAR\r
-       //\r
-       // TOTAL TIME VERIFICATION CODE\r
-       //\r
-       if (gamestate.difficulty>=gd_medium)\r
-       {\r
-               VWB_DrawPic (30*8,TIMEY*8,C_TIMECODEPIC);\r
-               fontnumber = 0;\r
-               fontcolor = READHCOLOR;\r
-               PrintX = 30*8-3;\r
-               PrintY = TIMEY*8+8;\r
-               PrintX+=4;\r
-               tempstr[0] = (((min/10)^(min%10))^0xa)+'A';\r
-               tempstr[1] = (((sec/10)^(sec%10))^0xa)+'A';\r
-               tempstr[2] = (tempstr[0]^tempstr[1])+'A';\r
-               tempstr[3] = 0;\r
-               US_Print(tempstr);\r
-       }\r
-#endif\r
-#endif\r
-#endif\r
-\r
-\r
-       fontnumber = 1;\r
-\r
-       VW_UpdateScreen ();\r
-       VW_FadeIn ();\r
-\r
-       IN_Ack();\r
-\r
-       #ifndef SPEAR\r
-       if (Keyboard[sc_P] && MS_CheckParm("goobers"))\r
-               PicturePause();\r
-       #endif\r
-\r
-       VW_FadeOut ();\r
-\r
-#ifndef SPEAR\r
-       UNCACHEGRCHUNK(C_TIMECODEPIC);\r
-#endif\r
-       UnCacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END);\r
-\r
-#ifndef SPEAR\r
-       EndText();\r
-#else\r
-       EndSpear();\r
-#endif\r
-\r
-#endif // SPEARDEMO\r
-}\r
-\r
-\r
-//==========================================================================\r
-\r
-#ifndef JAPAN\r
-/*\r
-==================\r
-=\r
-= PG13\r
-=\r
-==================\r
-*/\r
-\r
-void PG13 (void)\r
-{\r
-       VW_FadeOut();\r
-       VWB_Bar(0,0,320,200,0x82);                      // background\r
-\r
-       CA_CacheGrChunk (PG13PIC);\r
-       VWB_DrawPic (216,110,PG13PIC);\r
-       VW_UpdateScreen ();\r
-\r
-       UNCACHEGRCHUNK (PG13PIC);\r
-\r
-       VW_FadeIn();\r
-       IN_UserInput(TickBase*7);\r
-\r
-       VW_FadeOut ();\r
-}\r
-#endif\r
-\r
-\r
-//==========================================================================\r
-\r
-void Write(int x,int y,char *string)\r
-{\r
- int alpha[]={L_NUM0PIC,L_NUM1PIC,L_NUM2PIC,L_NUM3PIC,L_NUM4PIC,L_NUM5PIC,\r
-       L_NUM6PIC,L_NUM7PIC,L_NUM8PIC,L_NUM9PIC,L_COLONPIC,0,0,0,0,0,0,L_APIC,L_BPIC,\r
-       L_CPIC,L_DPIC,L_EPIC,L_FPIC,L_GPIC,L_HPIC,L_IPIC,L_JPIC,L_KPIC,\r
-       L_LPIC,L_MPIC,L_NPIC,L_OPIC,L_PPIC,L_QPIC,L_RPIC,L_SPIC,L_TPIC,\r
-       L_UPIC,L_VPIC,L_WPIC,L_XPIC,L_YPIC,L_ZPIC};\r
-\r
- int i,ox,nx,ny;\r
- char ch;\r
-\r
-\r
- ox=nx=x*8;\r
- ny=y*8;\r
- for (i=0;i<strlen(string);i++)\r
-   if (string[i]=='\n')\r
-   {\r
-       nx=ox;\r
-       ny+=16;\r
-   }\r
-   else\r
-   {\r
-       ch=string[i];\r
-       if (ch>='a')\r
-         ch-=('a'-'A');\r
-       ch-='0';\r
-\r
-       switch(string[i])\r
-       {\r
-        case '!':\r
-          VWB_DrawPic(nx,ny,L_EXPOINTPIC);\r
-          nx+=8;\r
-          continue;\r
-\r
-        case '\'':\r
-          VWB_DrawPic(nx,ny,L_APOSTROPHEPIC);\r
-          nx+=8;\r
-          continue;\r
-\r
-        case ' ': break;\r
-        case 0x3a:     // ':'\r
-\r
-          VWB_DrawPic(nx,ny,L_COLONPIC);\r
-          nx+=8;\r
-          continue;\r
-\r
-        case '%':\r
-          VWB_DrawPic(nx,ny,L_PERCENTPIC);\r
-          break;\r
-\r
-        default:\r
-          VWB_DrawPic(nx,ny,alpha[ch]);\r
-       }\r
-       nx+=16;\r
-   }\r
-}\r
-\r
-\r
-//\r
-// Breathe Mr. BJ!!!\r
-//\r
-void BJ_Breathe(void)\r
-{\r
-       static int which=0,max=10;\r
-       int pics[2]={L_GUYPIC,L_GUY2PIC};\r
-\r
-\r
-       if (TimeCount>max)\r
-       {\r
-               which^=1;\r
-               VWB_DrawPic(0,16,pics[which]);\r
-               VW_UpdateScreen();\r
-               TimeCount=0;\r
-               max=35;\r
-       }\r
-}\r
-\r
-\r
-\r
-/*\r
-==================\r
-=\r
-= LevelCompleted\r
-=\r
-= Entered with the screen faded out\r
-= Still in split screen mode with the status bar\r
-=\r
-= Exit with the screen faded out\r
-=\r
-==================\r
-*/\r
-\r
-#ifndef SPEAR\r
-LRstruct LevelRatios[8];\r
-#else\r
-LRstruct LevelRatios[20];\r
-#endif\r
-\r
-void LevelCompleted (void)\r
-{\r
-       #define VBLWAIT 30\r
-       #define PAR_AMOUNT      500\r
-       #define PERCENT100AMT   10000\r
-       typedef struct {\r
-                       float time;\r
-                       char timestr[6];\r
-                       } times;\r
-\r
-       int     x,i,min,sec,ratio,kr,sr,tr;\r
-       unsigned        temp;\r
-       char tempstr[10];\r
-       long bonus,timeleft=0;\r
-       times parTimes[]=\r
-       {\r
-#ifndef SPEAR\r
-        //\r
-        // Episode One Par Times\r
-        //\r
-        {1.5,  "01:30"},\r
-        {2,    "02:00"},\r
-        {2,    "02:00"},\r
-        {3.5,  "03:30"},\r
-        {3,    "03:00"},\r
-        {3,    "03:00"},\r
-        {2.5,  "02:30"},\r
-        {2.5,  "02:30"},\r
-        {0,    "??:??"},       // Boss level\r
-        {0,    "??:??"},       // Secret level\r
-\r
-        //\r
-        // Episode Two Par Times\r
-        //\r
-        {1.5,  "01:30"},\r
-        {3.5,  "03:30"},\r
-        {3,    "03:00"},\r
-        {2,    "02:00"},\r
-        {4,    "04:00"},\r
-        {6,    "06:00"},\r
-        {1,    "01:00"},\r
-        {3,    "03:00"},\r
-        {0,    "??:??"},\r
-        {0,    "??:??"},\r
-\r
-        //\r
-        // Episode Three Par Times\r
-        //\r
-        {1.5,  "01:30"},\r
-        {1.5,  "01:30"},\r
-        {2.5,  "02:30"},\r
-        {2.5,  "02:30"},\r
-        {3.5,  "03:30"},\r
-        {2.5,  "02:30"},\r
-        {2,    "02:00"},\r
-        {6,    "06:00"},\r
-        {0,    "??:??"},\r
-        {0,    "??:??"},\r
-\r
-        //\r
-        // Episode Four Par Times\r
-        //\r
-        {2,    "02:00"},\r
-        {2,    "02:00"},\r
-        {1.5,  "01:30"},\r
-        {1,    "01:00"},\r
-        {4.5,  "04:30"},\r
-        {3.5,  "03:30"},\r
-        {2,    "02:00"},\r
-        {4.5,  "04:30"},\r
-        {0,    "??:??"},\r
-        {0,    "??:??"},\r
-\r
-        //\r
-        // Episode Five Par Times\r
-        //\r
-        {2.5,  "02:30"},\r
-        {1.5,  "01:30"},\r
-        {2.5,  "02:30"},\r
-        {2.5,  "02:30"},\r
-        {4,    "04:00"},\r
-        {3,    "03:00"},\r
-        {4.5,  "04:30"},\r
-        {3.5,  "03:30"},\r
-        {0,    "??:??"},\r
-        {0,    "??:??"},\r
-\r
-        //\r
-        // Episode Six Par Times\r
-        //\r
-        {6.5,  "06:30"},\r
-        {4,    "04:00"},\r
-        {4.5,  "04:30"},\r
-        {6,    "06:00"},\r
-        {5,    "05:00"},\r
-        {5.5,  "05:30"},\r
-        {5.5,  "05:30"},\r
-        {8.5,  "08:30"},\r
-        {0,    "??:??"},\r
-        {0,    "??:??"}\r
-#else\r
-        //\r
-        // SPEAR OF DESTINY TIMES\r
-        //\r
-        {1.5,  "01:30"},\r
-        {3.5,  "03:30"},\r
-        {2.75, "02:45"},\r
-        {3.5,  "03:30"},\r
-        {0,    "??:??"},       // Boss 1\r
-        {4.5,  "04:30"},\r
-        {3.25, "03:15"},\r
-        {2.75, "02:45"},\r
-        {4.75, "04:45"},\r
-        {0,    "??:??"},       // Boss 2\r
-        {6.5,  "06:30"},\r
-        {4.5,  "04:30"},\r
-        {2.75, "02:45"},\r
-        {4.5,  "04:30"},\r
-        {6,    "06:00"},\r
-        {0,    "??:??"},       // Boss 3\r
-        {6,    "06:00"},\r
-        {0,    "??:??"},       // Boss 4\r
-        {0,    "??:??"},       // Secret level 1\r
-        {0,    "??:??"},       // Secret level 2\r
-#endif\r
-       };\r
-\r
-\r
-\r
-       CacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END);\r
-       ClearSplitVWB ();                       // set up for double buffering in split screen\r
-       VWB_Bar (0,0,320,200-STATUSLINES,127);\r
-       StartCPMusic(ENDLEVEL_MUS);\r
-\r
-//\r
-// do the intermission\r
-//\r
-       IN_ClearKeysDown();\r
-       IN_StartAck();\r
-\r
-#ifdef JAPAN\r
-       CA_CacheGrChunk(C_INTERMISSIONPIC);\r
-       VWB_DrawPic(0,0,C_INTERMISSIONPIC);\r
-       UNCACHEGRCHUNK(C_INTERMISSIONPIC);\r
-#endif\r
-       VWB_DrawPic(0,16,L_GUYPIC);\r
-\r
-#ifndef SPEAR\r
-       if (mapon<8)\r
-#else\r
-       if (mapon != 4 &&\r
-               mapon != 9 &&\r
-               mapon != 15 &&\r
-               mapon < 17)\r
-#endif\r
-       {\r
-#ifndef JAPAN\r
-        #ifdef SPANISH\r
-        Write(14,2,"piso\ncompletado");\r
-        #else\r
-        Write(14,2,"floor\ncompleted");\r
-        #endif\r
-\r
-        Write(14,7,STR_BONUS"     0");\r
-        Write(16,10,STR_TIME);\r
-        Write(16,12,STR_PAR);\r
-\r
-        #ifdef SPANISH\r
-        Write(11,14,    STR_RAT2KILL);\r
-        Write(11,16,  STR_RAT2SECRET);\r
-        Write(11,18,STR_RAT2TREASURE);\r
-        #else\r
-        Write(9,14,    STR_RAT2KILL);\r
-        Write(5,16,  STR_RAT2SECRET);\r
-        Write(1,18,STR_RAT2TREASURE);\r
-        #endif\r
-\r
-        Write(26,2,itoa(gamestate.mapon+1,tempstr,10));\r
-#endif\r
-\r
-        #ifdef SPANISH\r
-        Write(30,12,parTimes[gamestate.episode*10+mapon].timestr);\r
-        #else\r
-        Write(26,12,parTimes[gamestate.episode*10+mapon].timestr);\r
-        #endif\r
-\r
-        //\r
-        // PRINT TIME\r
-        //\r
-        sec=gamestate.TimeCount/70;\r
-\r
-        if (sec > 99*60)               // 99 minutes max\r
-          sec = 99*60;\r
-\r
-        if (gamestate.TimeCount<parTimes[gamestate.episode*10+mapon].time*4200)\r
-               timeleft=(parTimes[gamestate.episode*10+mapon].time*4200)/70-sec;\r
-\r
-        min=sec/60;\r
-        sec%=60;\r
-\r
-        #ifdef SPANISH\r
-        i=30*8;\r
-        #else\r
-        i=26*8;\r
-        #endif\r
-        VWB_DrawPic(i,10*8,L_NUM0PIC+(min/10));\r
-        i+=2*8;\r
-        VWB_DrawPic(i,10*8,L_NUM0PIC+(min%10));\r
-        i+=2*8;\r
-        Write(i/8,10,":");\r
-        i+=1*8;\r
-        VWB_DrawPic(i,10*8,L_NUM0PIC+(sec/10));\r
-        i+=2*8;\r
-        VWB_DrawPic(i,10*8,L_NUM0PIC+(sec%10));\r
-\r
-        VW_UpdateScreen ();\r
-        VW_FadeIn ();\r
-\r
-\r
-        //\r
-        // FIGURE RATIOS OUT BEFOREHAND\r
-        //\r
-        kr = sr = tr = 0;\r
-        if (gamestate.killtotal)\r
-               kr=(gamestate.killcount*100)/gamestate.killtotal;\r
-        if (gamestate.secrettotal)\r
-               sr=(gamestate.secretcount*100)/gamestate.secrettotal;\r
-        if (gamestate.treasuretotal)\r
-               tr=(gamestate.treasurecount*100)/gamestate.treasuretotal;\r
-\r
-\r
-        //\r
-        // PRINT TIME BONUS\r
-        //\r
-        bonus=timeleft*PAR_AMOUNT;\r
-        if (bonus)\r
-        {\r
-         for (i=0;i<=timeleft;i++)\r
-         {\r
-          ltoa((long)i*PAR_AMOUNT,tempstr,10);\r
-          x=36-strlen(tempstr)*2;\r
-          Write(x,7,tempstr);\r
-          if (!(i%(PAR_AMOUNT/10)))\r
-                SD_PlaySound(ENDBONUS1SND);\r
-          VW_UpdateScreen();\r
-          while(SD_SoundPlaying())\r
-                BJ_Breathe();\r
-          if (IN_CheckAck())\r
-                goto done;\r
-         }\r
-\r
-         VW_UpdateScreen();\r
-         SD_PlaySound(ENDBONUS2SND);\r
-         while(SD_SoundPlaying())\r
-               BJ_Breathe();\r
-        }\r
-\r
-\r
-        #ifdef SPANISH\r
-        #define RATIOXX                33\r
-        #else\r
-        #define RATIOXX                37\r
-        #endif\r
-        //\r
-        // KILL RATIO\r
-        //\r
-        ratio=kr;\r
-        for (i=0;i<=ratio;i++)\r
-        {\r
-         itoa(i,tempstr,10);\r
-         x=RATIOXX-strlen(tempstr)*2;\r
-         Write(x,14,tempstr);\r
-         if (!(i%10))\r
-               SD_PlaySound(ENDBONUS1SND);\r
-         VW_UpdateScreen ();\r
-         while(SD_SoundPlaying())\r
-               BJ_Breathe();\r
-\r
-         if (IN_CheckAck())\r
-               goto done;\r
-        }\r
-        if (ratio==100)\r
-        {\r
-          VW_WaitVBL(VBLWAIT);\r
-          SD_StopSound();\r
-          bonus+=PERCENT100AMT;\r
-          ltoa(bonus,tempstr,10);\r
-          x=(RATIOXX-1)-strlen(tempstr)*2;\r
-          Write(x,7,tempstr);\r
-          VW_UpdateScreen();\r
-          SD_PlaySound(PERCENT100SND);\r
-        }\r
-        else\r
-        if (!ratio)\r
-        {\r
-          VW_WaitVBL(VBLWAIT);\r
-          SD_StopSound();\r
-          SD_PlaySound(NOBONUSSND);\r
-        }\r
-        else\r
-        SD_PlaySound(ENDBONUS2SND);\r
-\r
-        VW_UpdateScreen();\r
-        while(SD_SoundPlaying())\r
-          BJ_Breathe();\r
-\r
-\r
-        //\r
-        // SECRET RATIO\r
-        //\r
-        ratio=sr;\r
-        for (i=0;i<=ratio;i++)\r
-        {\r
-         itoa(i,tempstr,10);\r
-         x=RATIOXX-strlen(tempstr)*2;\r
-         Write(x,16,tempstr);\r
-         if (!(i%10))\r
-               SD_PlaySound(ENDBONUS1SND);\r
-         VW_UpdateScreen ();\r
-         while(SD_SoundPlaying())\r
-               BJ_Breathe();\r
-         BJ_Breathe();\r
-\r
-         if (IN_CheckAck())\r
-               goto done;\r
-        }\r
-        if (ratio==100)\r
-        {\r
-          VW_WaitVBL(VBLWAIT);\r
-          SD_StopSound();\r
-          bonus+=PERCENT100AMT;\r
-          ltoa(bonus,tempstr,10);\r
-          x=(RATIOXX-1)-strlen(tempstr)*2;\r
-          Write(x,7,tempstr);\r
-          VW_UpdateScreen();\r
-          SD_PlaySound(PERCENT100SND);\r
-        }\r
-        else\r
-        if (!ratio)\r
-        {\r
-          VW_WaitVBL(VBLWAIT);\r
-          SD_StopSound();\r
-          SD_PlaySound(NOBONUSSND);\r
-        }\r
-        else\r
-          SD_PlaySound(ENDBONUS2SND);\r
-        VW_UpdateScreen();\r
-        while(SD_SoundPlaying())\r
-          BJ_Breathe();\r
-\r
-\r
-        //\r
-        // TREASURE RATIO\r
-        //\r
-        ratio=tr;\r
-        for (i=0;i<=ratio;i++)\r
-        {\r
-         itoa(i,tempstr,10);\r
-         x=RATIOXX-strlen(tempstr)*2;\r
-         Write(x,18,tempstr);\r
-         if (!(i%10))\r
-               SD_PlaySound(ENDBONUS1SND);\r
-         VW_UpdateScreen ();\r
-         while(SD_SoundPlaying())\r
-               BJ_Breathe();\r
-         if (IN_CheckAck())\r
-               goto done;\r
-        }\r
-        if (ratio==100)\r
-        {\r
-          VW_WaitVBL(VBLWAIT);\r
-          SD_StopSound();\r
-          bonus+=PERCENT100AMT;\r
-          ltoa(bonus,tempstr,10);\r
-          x=(RATIOXX-1)-strlen(tempstr)*2;\r
-          Write(x,7,tempstr);\r
-          VW_UpdateScreen();\r
-          SD_PlaySound(PERCENT100SND);\r
-        }\r
-        else\r
-        if (!ratio)\r
-        {\r
-          VW_WaitVBL(VBLWAIT);\r
-          SD_StopSound();\r
-          SD_PlaySound(NOBONUSSND);\r
-        }\r
-        else\r
-        SD_PlaySound(ENDBONUS2SND);\r
-        VW_UpdateScreen();\r
-        while(SD_SoundPlaying())\r
-          BJ_Breathe();\r
-\r
-\r
-        //\r
-        // JUMP STRAIGHT HERE IF KEY PRESSED\r
-        //\r
-        done:\r
-\r
-        itoa(kr,tempstr,10);\r
-        x=RATIOXX-strlen(tempstr)*2;\r
-        Write(x,14,tempstr);\r
-\r
-        itoa(sr,tempstr,10);\r
-        x=RATIOXX-strlen(tempstr)*2;\r
-        Write(x,16,tempstr);\r
-\r
-        itoa(tr,tempstr,10);\r
-        x=RATIOXX-strlen(tempstr)*2;\r
-        Write(x,18,tempstr);\r
-\r
-        bonus=(long)timeleft*PAR_AMOUNT+\r
-                  (PERCENT100AMT*(kr==100))+\r
-                  (PERCENT100AMT*(sr==100))+\r
-                  (PERCENT100AMT*(tr==100));\r
-\r
-        GivePoints(bonus);\r
-        ltoa(bonus,tempstr,10);\r
-        x=36-strlen(tempstr)*2;\r
-        Write(x,7,tempstr);\r
-\r
-        //\r
-        // SAVE RATIO INFORMATION FOR ENDGAME\r
-        //\r
-        LevelRatios[mapon].kill=kr;\r
-        LevelRatios[mapon].secret=sr;\r
-        LevelRatios[mapon].treasure=tr;\r
-        LevelRatios[mapon].time=min*60+sec;\r
-       }\r
-       else\r
-       {\r
-#ifdef SPEAR\r
-#ifndef SPEARDEMO\r
-         switch(mapon)\r
-         {\r
-          case 4: Write(14,4," trans\n"\r
-                                                 " grosse\n"\r
-                                                 STR_DEFEATED); break;\r
-          case 9: Write(14,4,"barnacle\n"\r
-                                                 "wilhelm\n"\r
-                                                 STR_DEFEATED); break;\r
-          case 15: Write(14,4,"ubermutant\n"\r
-                                                  STR_DEFEATED); break;\r
-          case 17: Write(14,4," death\n"\r
-                                                  " knight\n"\r
-                                                  STR_DEFEATED); break;\r
-          case 18: Write(13,4,"secret tunnel\n"\r
-                                                  "    area\n"\r
-                                                  "  completed!"); break;\r
-          case 19: Write(13,4,"secret castle\n"\r
-                                                  "    area\n"\r
-                                                  "  completed!"); break;\r
-         }\r
-#endif\r
-#else\r
-         Write(14,4,"secret floor\n completed!");\r
-#endif\r
-\r
-         Write(10,16,"15000 bonus!");\r
-\r
-         VW_UpdateScreen();\r
-         VW_FadeIn();\r
-\r
-         GivePoints(15000);\r
-       }\r
-\r
-\r
-       DrawScore();\r
-       VW_UpdateScreen();\r
-\r
-       TimeCount=0;\r
-       IN_StartAck();\r
-       while(!IN_CheckAck())\r
-         BJ_Breathe();\r
-\r
-//\r
-// done\r
-//\r
-#ifdef SPEARDEMO\r
-       if (gamestate.mapon == 1)\r
-       {\r
-               SD_PlaySound (BONUS1UPSND);\r
-\r
-               CA_CacheGrChunk (STARTFONT+1);\r
-               Message ("This concludes your demo\n"\r
-                                "of Spear of Destiny! Now,\n"\r
-                                "go to your local software\n"\r
-                                "store and buy it!");\r
-               UNCACHEGRCHUNK (STARTFONT+1);\r
-\r
-               IN_ClearKeysDown();\r
-               IN_Ack();\r
-       }\r
-#endif\r
-\r
-#ifdef JAPDEMO\r
-       if (gamestate.mapon == 3)\r
-       {\r
-               SD_PlaySound (BONUS1UPSND);\r
-\r
-               CA_CacheGrChunk (STARTFONT+1);\r
-               Message ("This concludes your demo\n"\r
-                                "of Wolfenstein 3-D! Now,\n"\r
-                                "go to your local software\n"\r
-                                "store and buy it!");\r
-               UNCACHEGRCHUNK (STARTFONT+1);\r
-\r
-               IN_ClearKeysDown();\r
-               IN_Ack();\r
-       }\r
-#endif\r
-\r
-       #ifndef SPEAR\r
-       if (Keyboard[sc_P] && MS_CheckParm("goobers"))\r
-               PicturePause();\r
-       #endif\r
-\r
-       VW_FadeOut ();\r
-       temp = bufferofs;\r
-       for (i=0;i<3;i++)\r
-       {\r
-               bufferofs = screenloc[i];\r
-               DrawPlayBorder ();\r
-       }\r
-       bufferofs = temp;\r
-\r
-       UnCacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END);\r
-}\r
-\r
-\r
-\r
-//==========================================================================\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= PreloadGraphics\r
-=\r
-= Fill the cache up\r
-=\r
-=================\r
-*/\r
-\r
-boolean PreloadUpdate(unsigned current, unsigned total)\r
-{\r
-       unsigned w = WindowW - 10;\r
-\r
-\r
-       VWB_Bar(WindowX + 5,WindowY + WindowH - 3,w,2,BLACK);\r
-       w = ((long)w * current) / total;\r
-       if (w)\r
-       {\r
-        VWB_Bar(WindowX + 5,WindowY + WindowH - 3,w,2,0x37); //SECONDCOLOR);\r
-        VWB_Bar(WindowX + 5,WindowY + WindowH - 3,w-1,1,0x32);\r
-\r
-       }\r
-       VW_UpdateScreen();\r
-//     if (LastScan == sc_Escape)\r
-//     {\r
-//             IN_ClearKeysDown();\r
-//             return(true);\r
-//     }\r
-//     else\r
-               return(false);\r
-}\r
-\r
-void PreloadGraphics(void)\r
-{\r
-       DrawLevel ();\r
-       ClearSplitVWB ();                       // set up for double buffering in split screen\r
-\r
-       VWB_Bar (0,0,320,200-STATUSLINES,127);\r
-\r
-       LatchDrawPic (20-14,80-3*8,GETPSYCHEDPIC);\r
-\r
-       WindowX = 160-14*8;\r
-       WindowY = 80-3*8;\r
-       WindowW = 28*8;\r
-       WindowH = 48;\r
-       VW_UpdateScreen();\r
-       VW_FadeIn ();\r
-\r
-       PM_Preload (PreloadUpdate);\r
-       IN_UserInput (70);\r
-       VW_FadeOut ();\r
-\r
-       DrawPlayBorder ();\r
-       VW_UpdateScreen ();\r
-}\r
-\r
-\r
-//==========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= DrawHighScores\r
-=\r
-==================\r
-*/\r
-\r
-void   DrawHighScores(void)\r
-{\r
-       char            buffer[16],*str,buffer1[5];\r
-       byte            temp,temp1,temp2,temp3;\r
-       word            i,j,\r
-                               w,h,\r
-                               x,y;\r
-       HighScore       *s;\r
-\r
-\r
-       MM_SortMem ();\r
-\r
-#ifndef SPEAR\r
-//     CA_CacheGrChunk (C_CODEPIC);\r
-       CA_CacheGrChunk (HIGHSCORESPIC);\r
-       CA_CacheGrChunk (STARTFONT);\r
-       CA_CacheGrChunk (C_LEVELPIC);\r
-       CA_CacheGrChunk (C_SCOREPIC);\r
-       CA_CacheGrChunk (C_NAMEPIC);\r
-\r
-       ClearMScreen();\r
-       DrawStripes(10);\r
-\r
-       VWB_DrawPic(48,0,HIGHSCORESPIC);\r
-       UNCACHEGRCHUNK (HIGHSCORESPIC);\r
-\r
-       VWB_DrawPic(4*8,68,C_NAMEPIC);\r
-       VWB_DrawPic(20*8,68,C_LEVELPIC);\r
-       VWB_DrawPic(28*8,68,C_SCOREPIC);\r
-#ifndef UPLOAD\r
-//     VWB_DrawPic(35*8,68,C_CODEPIC);\r
-#endif\r
-       fontnumber=0;\r
-\r
-#else\r
-       CacheLump (BACKDROP_LUMP_START,BACKDROP_LUMP_END);\r
-       ClearMScreen();\r
-       DrawStripes(10);\r
-       UnCacheLump (BACKDROP_LUMP_START,BACKDROP_LUMP_END);\r
-\r
-       CacheLump (HIGHSCORES_LUMP_START,HIGHSCORES_LUMP_END);\r
-       CA_CacheGrChunk (STARTFONT+1);\r
-       VWB_DrawPic (0,0,HIGHSCORESPIC);\r
-\r
-       fontnumber = 1;\r
-#endif\r
-\r
-\r
-#ifndef SPEAR\r
-       SETFONTCOLOR(15,0x29);\r
-#else\r
-       SETFONTCOLOR(HIGHLIGHT,0x29);\r
-#endif\r
-\r
-       for (i = 0,s = Scores;i < MaxScores;i++,s++)\r
-       {\r
-               PrintY = 76 + (16 * i);\r
-\r
-               //\r
-               // name\r
-               //\r
-#ifndef SPEAR\r
-               PrintX = 4*8;\r
-#else\r
-               PrintX = 16;\r
-#endif\r
-               US_Print(s->name);\r
-\r
-               //\r
-               // level\r
-               //\r
-               ultoa(s->completed,buffer,10);\r
-#ifndef SPEAR\r
-               for (str = buffer;*str;str++)\r
-                       *str = *str + (129 - '0');      // Used fixed-width numbers (129...)\r
-               USL_MeasureString(buffer,&w,&h);\r
-               PrintX = (22 * 8)-w;\r
-#else\r
-               USL_MeasureString(buffer,&w,&h);\r
-               PrintX = 194 - w;\r
-#endif\r
-\r
-#ifndef UPLOAD\r
-#ifndef SPEAR\r
-               PrintX -= 6;\r
-               itoa(s->episode+1,buffer1,10);\r
-               US_Print("E");\r
-               US_Print(buffer1);\r
-               US_Print("/L");\r
-#endif\r
-#endif\r
-\r
-#ifdef SPEAR\r
-               if (s->completed == 21)\r
-                       VWB_DrawPic (PrintX+8,PrintY-1,C_WONSPEARPIC);\r
-               else\r
-#endif\r
-               US_Print(buffer);\r
-\r
-               //\r
-               // score\r
-               //\r
-               ultoa(s->score,buffer,10);\r
-#ifndef SPEAR\r
-               for (str = buffer;*str;str++)\r
-                       *str = *str + (129 - '0');      // Used fixed-width numbers (129...)\r
-               USL_MeasureString(buffer,&w,&h);\r
-               PrintX = (34 * 8) - 8 - w;\r
-#else\r
-               USL_MeasureString(buffer,&w,&h);\r
-               PrintX = 292 - w;\r
-#endif\r
-               US_Print(buffer);\r
-\r
-               #if 0\r
-#ifndef UPLOAD\r
-#ifndef SPEAR\r
-               //\r
-               // verification #\r
-               //\r
-               if (!i)\r
-               {\r
-                temp=(((s->score >> 28)& 0xf)^\r
-                         ((s->score >> 24)& 0xf))+'A';\r
-                temp1=(((s->score >> 20)& 0xf)^\r
-                          ((s->score >> 16)& 0xf))+'A';\r
-                temp2=(((s->score >> 12)& 0xf)^\r
-                          ((s->score >> 8)& 0xf))+'A';\r
-                temp3=(((s->score >> 4)& 0xf)^\r
-                          ((s->score >> 0)& 0xf))+'A';\r
-\r
-                SETFONTCOLOR(0x49,0x29);\r
-                PrintX = 35*8;\r
-                buffer[0]=temp;\r
-                buffer[1]=temp1;\r
-                buffer[2]=temp2;\r
-                buffer[3]=temp3;\r
-                buffer[4]=0;\r
-                US_Print(buffer);\r
-                SETFONTCOLOR(15,0x29);\r
-               }\r
-#endif\r
-#endif\r
-               #endif\r
-       }\r
-\r
-       VW_UpdateScreen ();\r
-\r
-#ifdef SPEAR\r
-       UnCacheLump (HIGHSCORES_LUMP_START,HIGHSCORES_LUMP_END);\r
-       fontnumber = 0;\r
-#endif\r
-}\r
-\r
-//===========================================================================\r
-\r
-\r
-/*\r
-=======================\r
-=\r
-= CheckHighScore\r
-=\r
-=======================\r
-*/\r
-\r
-void   CheckHighScore (long score,word other)\r
-{\r
-       word            i,j;\r
-       int                     n;\r
-       HighScore       myscore;\r
-\r
-       strcpy(myscore.name,"");\r
-       myscore.score = score;\r
-       myscore.episode = gamestate.episode;\r
-       myscore.completed = other;\r
-\r
-       for (i = 0,n = -1;i < MaxScores;i++)\r
-       {\r
-               if\r
-               (\r
-                       (myscore.score > Scores[i].score)\r
-               ||      (\r
-                               (myscore.score == Scores[i].score)\r
-                       &&      (myscore.completed > Scores[i].completed)\r
-                       )\r
-               )\r
-               {\r
-                       for (j = MaxScores;--j > i;)\r
-                               Scores[j] = Scores[j - 1];\r
-                       Scores[i] = myscore;\r
-                       n = i;\r
-                       break;\r
-               }\r
-       }\r
-\r
-#ifdef SPEAR\r
-       StartCPMusic (XAWARD_MUS);\r
-#else\r
-       StartCPMusic (ROSTER_MUS);\r
-#endif\r
-       DrawHighScores ();\r
-\r
-       VW_FadeIn ();\r
-\r
-       if (n != -1)\r
-       {\r
-       //\r
-       // got a high score\r
-       //\r
-               PrintY = 76 + (16 * n);\r
-#ifndef SPEAR\r
-               PrintX = 4*8;\r
-               backcolor = BORDCOLOR;\r
-               fontcolor = 15;\r
-               US_LineInput(PrintX,PrintY,Scores[n].name,nil,true,MaxHighName,100);\r
-#else\r
-               PrintX = 16;\r
-               fontnumber = 1;\r
-               VWB_Bar (PrintX-2,PrintY-2,145,15,0x9c);\r
-               VW_UpdateScreen ();\r
-               backcolor = 0x9c;\r
-               fontcolor = 15;\r
-               US_LineInput(PrintX,PrintY,Scores[n].name,nil,true,MaxHighName,130);\r
-#endif\r
-       }\r
-       else\r
-       {\r
-               IN_ClearKeysDown ();\r
-               IN_UserInput(500);\r
-       }\r
-\r
-}\r
-\r
-\r
-#ifndef UPLOAD\r
-#ifndef SPEAR\r
-#ifndef JAPAN\r
-////////////////////////////////////////////////////////\r
-//\r
-// NON-SHAREWARE NOTICE\r
-//\r
-////////////////////////////////////////////////////////\r
-void NonShareware(void)\r
-{\r
-       VW_FadeOut();\r
-\r
-       ClearMScreen();\r
-       DrawStripes(10);\r
-\r
-       CA_CacheGrChunk(STARTFONT+1);\r
-       fontnumber = 1;\r
-\r
-       SETFONTCOLOR(READHCOLOR,BKGDCOLOR);\r
-       PrintX=110;\r
-       PrintY=15;\r
-\r
-       #ifdef SPANISH\r
-       US_Print("Atencion");\r
-       #else\r
-       US_Print("Attention");\r
-       #endif\r
-\r
-       SETFONTCOLOR(HIGHLIGHT,BKGDCOLOR);\r
-       WindowX=PrintX=40;\r
-       PrintY=60;\r
-       #ifdef SPANISH\r
-       US_Print("Este juego NO es gratis y\n");\r
-       US_Print("NO es Shareware; favor de\n");\r
-       US_Print("no distribuirlo.\n\n");\r
-       #else\r
-       US_Print("This game is NOT shareware.\n");\r
-       US_Print("Please do not distribute it.\n");\r
-       US_Print("Thanks.\n\n");\r
-       #endif\r
-       US_Print("        Id Software\n");\r
-\r
-       VW_UpdateScreen ();\r
-       VW_FadeIn();\r
-       IN_Ack();\r
-}\r
-#endif\r
-#endif\r
-#endif\r
-\r
-#ifdef SPEAR\r
-#ifndef SPEARDEMO\r
-////////////////////////////////////////////////////////\r
-//\r
-// COPY PROTECTION FOR FormGen\r
-//\r
-////////////////////////////////////////////////////////\r
-char   far CopyProFailedStrs[][100] = {\r
-                       STR_COPY1,\r
-                       STR_COPY2,\r
-\r
-                       STR_COPY3,\r
-                       STR_COPY4,\r
-\r
-                       STR_COPY5,\r
-                       STR_COPY6,\r
-\r
-                       STR_COPY7,\r
-                       STR_COPY8,\r
-\r
-                       STR_COPY9,\r
-                       "",\r
-\r
-                       STR_COPY10,\r
-                       STR_COPY11,\r
-\r
-                       STR_COPY12,\r
-                       "",\r
-\r
-                       STR_COPY13,\r
-                       "",\r
-\r
-                       STR_COPY14,\r
-                       ""\r
-                       },\r
-\r
-               far BackDoorStrs[5][16] = {\r
-                       "a spoon?",\r
-                       "bite me!",\r
-                       "joshua",\r
-                       "pelt",\r
-#ifdef BETA\r
-                       "beta"\r
-#else\r
-                       "snoops"\r
-#endif\r
-                       },\r
-\r
-               far GoodBoyStrs[10][40] = {\r
-                       "...is the CORRECT ANSWER!",\r
-                       "",\r
-\r
-                       "Consider yourself bitten, sir.",\r
-                       "",\r
-\r
-                       "Greetings Professor Falken, would you",\r
-                       "like to play Spear of Destiny?",\r
-\r
-                       "Do you have any gold spray paint?",\r
-                       "",\r
-\r
-#ifdef BETA\r
-                       "Beta testing approved.",\r
-#else\r
-                       "I wish I had a 21\" monitor...",\r
-#endif\r
-                       ""\r
-                       },\r
-\r
-               far bossstrs[4][24] = {\r
-                       "DEATH KNIGHT",\r
-                       "BARNACLE WILHELM",\r
-                       "UBERMUTANTUBER MUTANT",\r
-                       "TRANS GROSSE"\r
-                       },\r
-\r
-               far WordStr[5][20] = {\r
-                       "New Game",\r
-                       "Sound...F4",\r
-                       "Control...F6",\r
-                       "Change View...F5",\r
-                       "Quit...F10"},\r
-\r
-               far     WordCorrect[5][2] = {"3","4","4","5","5"},\r
-\r
-               far MemberStr[10][40] = {\r
-                       STR_COPY15,\r
-                       "",\r
-\r
-                       STR_COPY16,\r
-                       "",\r
-\r
-                       STR_COPY17,\r
-                       STR_COPY18,\r
-\r
-                       STR_COPY19,\r
-                       STR_COPY20,\r
-\r
-                       STR_COPY21,\r
-                       STR_COPY22},\r
-\r
-               far MemberCorrect[5][24] = {\r
-                       "adrian carmack",\r
-                       "john carmackjohn romero",\r
-                       "tom hall",\r
-                       "jay wilbur",\r
-                       "kevin cloud"},\r
-\r
-               far DosMessages[9][80] = {\r
-                       STR_NOPE1,\r
-                       STR_NOPE2,\r
-                       STR_NOPE3,\r
-                       STR_NOPE4,\r
-                       STR_NOPE5,\r
-                       STR_NOPE6,\r
-                       STR_NOPE7,\r
-                       STR_NOPE8,\r
-                       STR_NOPE9},\r
-\r
-               far MiscTitle[4][20] = {\r
-                       "BLOOD TEST",\r
-                       "STRAIGHT-LACED",\r
-                       "QUITE SHAPELY",\r
-                       "I AM WHAT I AMMO"\r
-                       },\r
-\r
-               far MiscStr[12][40] = {\r
-                       STR_MISC1,\r
-                       STR_MISC2,\r
-                       "",\r
-\r
-                       STR_MISC3,\r
-                       STR_MISC4,\r
-                       "",\r
-\r
-                       STR_MISC5,\r
-                       STR_MISC6,\r
-                       "",\r
-\r
-                       STR_MISC7,\r
-                       STR_MISC8,\r
-                       STR_MISC9\r
-                       },\r
-\r
-               far MiscCorrect[4][5] = {"ss","8",STR_STAR,"45"};\r
-\r
-\r
-int  BackDoor(char *s)\r
-{\r
-       int i;\r
-\r
-\r
-       strlwr(s);\r
-\r
-       for (i=0;i<5;i++)\r
-               if (!_fstrcmp(s,BackDoorStrs[i]))\r
-               {\r
-                       SETFONTCOLOR(14,15);\r
-                       fontnumber = 0;\r
-                       PrintY = 175;\r
-                       VWB_DrawPic (0,20*8,COPYPROTBOXPIC);\r
-                       US_CPrint(GoodBoyStrs[i*2]);\r
-                       US_CPrint(GoodBoyStrs[i*2+1]);\r
-                       VW_UpdateScreen();\r
-                       return 1;\r
-               }\r
-\r
-       return 0;\r
-}\r
-\r
-\r
-void CopyProtection(void)\r
-{\r
-#define TYPEBOX_Y              177\r
-#define TYPEBOX_BKGD   0x9c\r
-#define PRINTCOLOR             HIGHLIGHT\r
-\r
-       int     i,match,whichboss,bossnum,try,whichline,enemypicked[4]={0,0,0,0},\r
-               bosses[4] = { BOSSPIC1PIC,BOSSPIC2PIC,BOSSPIC3PIC,BOSSPIC4PIC },\r
-               whichone,whichpicked[4]={0,0,0,0},quiztype,whichmem,\r
-               memberpicked[5]={0,0,0,0,0},wordpicked[5]={0,0,0,0,0},whichword;\r
-\r
-       char    inputbuffer[20],\r
-                       message[80];\r
-\r
-       enum\r
-       {\r
-               debriefing,\r
-               checkmanual,\r
-               staffquiz,\r
-               miscquiz,\r
-\r
-               totaltypes\r
-       };\r
-\r
-\r
-\r
-       try = 0;\r
-       VW_FadeOut();\r
-       CA_CacheGrChunk(C_BACKDROPPIC);\r
-       CacheLump(COPYPROT_LUMP_START,COPYPROT_LUMP_END);\r
-       CA_CacheGrChunk(STARTFONT+1);\r
-       CA_LoadAllSounds();\r
-       StartCPMusic(COPYPRO_MUS);\r
-       US_InitRndT(true);\r
-\r
-       while (try<3)\r
-       {\r
-               fontnumber = 1;\r
-               SETFONTCOLOR(PRINTCOLOR-2,15);\r
-               VWB_DrawPic (0,0,C_BACKDROPPIC);\r
-               VWB_DrawPic (0,0,COPYPROTTOPPIC);\r
-               VWB_DrawPic (0,20*8,COPYPROTBOXPIC);\r
-               WindowX = WindowY = 0;\r
-               WindowW = 320;\r
-               WindowH = 200;\r
-               PrintY = 65;\r
-\r
-               quiztype = US_RndT()%totaltypes;\r
-               switch(quiztype)\r
-               {\r
-                       //\r
-                       // BOSSES QUIZ\r
-                       //\r
-                       case debriefing:\r
-                               PrintX = 0;\r
-                               US_Print(STR_DEBRIEF);\r
-                               SETFONTCOLOR(PRINTCOLOR,15);\r
-\r
-                               while (enemypicked[whichboss = US_RndT()&3]);\r
-                               enemypicked[whichboss] = 1;\r
-                               bossnum = bosses[whichboss];\r
-                               VWB_DrawPic(128,60,bossnum);\r
-                               fontnumber = 0;\r
-                               PrintY = 130;\r
-                               US_CPrint(STR_ENEMY1"\n");\r
-                               US_CPrint(STR_ENEMY2"\n\n");\r
-\r
-                               VW_UpdateScreen();\r
-                               VW_FadeIn();\r
-\r
-                               PrintX = 100;\r
-                               fontcolor = 15;\r
-                               backcolor = TYPEBOX_BKGD;\r
-                               inputbuffer[0] = 0;\r
-                               PrintY = TYPEBOX_Y;\r
-                               fontnumber = 1;\r
-                               US_LineInput(PrintX,PrintY,inputbuffer,nil,true,20,100);\r
-\r
-                               match = 0;\r
-                               for (i=0;i<_fstrlen(bossstrs[whichboss]);i++)\r
-                                       if (!_fstrnicmp(inputbuffer,bossstrs[whichboss]+i,strlen(inputbuffer)) &&\r
-                                               strlen(inputbuffer)>3)\r
-                                               match = 1;\r
-\r
-                               match += BackDoor(inputbuffer);\r
-                               break;\r
-\r
-                       //\r
-                       // MANUAL CHECK\r
-                       //\r
-                       case checkmanual:\r
-                               while (wordpicked[whichword = US_RndT()%5]);\r
-                               wordpicked[whichword] = 1;\r
-                               US_CPrint(STR_CHECKMAN);\r
-                               SETFONTCOLOR(PRINTCOLOR,15);\r
-                               PrintY += 25;\r
-                               US_CPrint(STR_MAN1);\r
-                               US_CPrint(STR_MAN2);\r
-                               _fstrcpy(message,STR_MAN3" \"");\r
-                               _fstrcat(message,WordStr[whichword]);\r
-                               _fstrcat(message,"\" "STR_MAN4);\r
-                               US_CPrint(message);\r
-                               VW_UpdateScreen();\r
-                               VW_FadeIn();\r
-\r
-                               PrintX = 146;\r
-                               fontcolor = 15;\r
-                               backcolor = TYPEBOX_BKGD;\r
-                               inputbuffer[0] = 0;\r
-                               PrintY = TYPEBOX_Y;\r
-                               US_LineInput(PrintX,PrintY,inputbuffer,nil,true,6,100);\r
-\r
-                               strlwr(inputbuffer);\r
-                               match = 1-(_fstrcmp(inputbuffer,WordCorrect[whichword])!=0);\r
-                               match += BackDoor(inputbuffer);\r
-                               break;\r
-\r
-                       //\r
-                       // STAFF QUIZ\r
-                       //\r
-                       case staffquiz:\r
-                               while (memberpicked[whichmem = US_RndT()%5]);\r
-                               memberpicked[whichmem] = 1;\r
-                               US_CPrint(STR_ID1);\r
-                               SETFONTCOLOR(PRINTCOLOR,15);\r
-                               PrintY += 25;\r
-                               US_CPrint(MemberStr[whichmem*2]);\r
-                               US_CPrint(MemberStr[whichmem*2+1]);\r
-                               VW_UpdateScreen();\r
-                               VW_FadeIn();\r
-\r
-                               PrintX = 100;\r
-                               fontcolor = 15;\r
-                               backcolor = TYPEBOX_BKGD;\r
-                               inputbuffer[0] = 0;\r
-                               PrintY = TYPEBOX_Y;\r
-                               US_LineInput(PrintX,PrintY,inputbuffer,nil,true,20,120);\r
-\r
-                               strlwr(inputbuffer);\r
-                               match = 0;\r
-                               for (i=0;i<_fstrlen(MemberCorrect[whichmem]);i++)\r
-                                       if (!_fstrnicmp(inputbuffer,MemberCorrect[whichmem]+i,strlen(inputbuffer)) &&\r
-                                               strlen(inputbuffer)>2)\r
-                                                       match = 1;\r
-                               match += BackDoor(inputbuffer);\r
-                               break;\r
-\r
-                       //\r
-                       // MISCELLANEOUS QUESTIONS\r
-                       //\r
-                       case miscquiz:\r
-                               while (whichpicked[whichone = US_RndT()&3]);\r
-                               whichpicked[whichone] = 1;\r
-                               US_CPrint(MiscTitle[whichone]);\r
-                               SETFONTCOLOR(PRINTCOLOR,15);\r
-                               PrintY += 25;\r
-                               US_CPrint(MiscStr[whichone*3]);\r
-                               US_CPrint(MiscStr[whichone*3+1]);\r
-                               US_CPrint(MiscStr[whichone*3+2]);\r
-                               VW_UpdateScreen();\r
-                               VW_FadeIn();\r
-\r
-                               PrintX = 146;\r
-                               fontcolor = 15;\r
-                               backcolor = TYPEBOX_BKGD;\r
-                               inputbuffer[0] = 0;\r
-                               PrintY = TYPEBOX_Y;\r
-                               US_LineInput(PrintX,PrintY,inputbuffer,nil,true,6,100);\r
-\r
-                               strlwr(inputbuffer);\r
-                               match = 1-(_fstrcmp(inputbuffer,MiscCorrect[whichone])!=0);\r
-                               match += BackDoor(inputbuffer);\r
-                               break;\r
-                       }\r
-\r
-               //\r
-               // IF NO MATCH, WE'VE GOT A (MINOR) PROBLEM!\r
-               //\r
-\r
-               if (!match)\r
-               {\r
-                       whichline = 2*(US_RndT()%9);\r
-                       SETFONTCOLOR(14,15);\r
-                       fontnumber = 0;\r
-                       PrintY = 175;\r
-                       VWB_DrawPic (0,20*8,COPYPROTBOXPIC);\r
-                       US_CPrint(CopyProFailedStrs[whichline]);\r
-                       US_CPrint(CopyProFailedStrs[whichline+1]);\r
-\r
-                       VW_UpdateScreen();\r
-                       SD_PlaySound(NOWAYSND);\r
-                       IN_UserInput(TickBase*3);\r
-                       VW_FadeOut();\r
-                       try++;\r
-               }\r
-               else\r
-               {\r
-                       int start;\r
-\r
-\r
-                       SD_PlaySound(BONUS1UPSND);\r
-                       SD_WaitSoundDone();\r
-                       UNCACHEGRCHUNK (STARTFONT+1);\r
-                       UNCACHEGRCHUNK (C_BACKDROPPIC);\r
-                       UnCacheLump (COPYPROT_LUMP_START,COPYPROT_LUMP_END);\r
-\r
-                       switch(SoundMode)\r
-                       {\r
-                               case sdm_Off: return;\r
-                               case sdm_PC: start = STARTPCSOUNDS; break;\r
-                               case sdm_AdLib: start = STARTADLIBSOUNDS;\r
-                       }\r
-\r
-                       for (i=0;i<NUMSOUNDS;i++,start++)\r
-                               MM_FreePtr ((memptr *)&audiosegs[start]);\r
-                       return;\r
-               }\r
-       }\r
-\r
-       ClearMemory();\r
-       ShutdownId();\r
-\r
-       _fstrcpy(message,DosMessages[US_RndT()%9]);\r
-\r
-       _AX = 3;\r
-       geninterrupt(0x10);\r
-\r
-       printf("%s\n",message);\r
-       exit(1);\r
-}\r
-\r
-#endif // SPEARDEMO\r
-#endif // SPEAR\r
-//===========================================================================\r