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