mirror of
https://github.com/DrBeef/Raze.git
synced 2025-01-18 15:11:51 +00:00
Add support for shareware 0.99/1.0/1.1, for shits and giggles.
git-svn-id: https://svn.eduke32.com/eduke32@3803 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
6a2ffa9e47
commit
85cf8de0f3
11 changed files with 179 additions and 81 deletions
|
@ -2980,7 +2980,7 @@ ACTOR_STATIC void G_MoveWeapons(void)
|
|||
A_GetZLimits(i);
|
||||
|
||||
if (s->picnum == RPG && actor[i].picnum != BOSS2 && s->xrepeat >= 10 &&
|
||||
sector[s->sectnum].lotag != ST_2_UNDERWATER)
|
||||
sector[s->sectnum].lotag != ST_2_UNDERWATER && g_scriptVersion >= 13)
|
||||
{
|
||||
j = A_Spawn(i,SMALLSMOKE);
|
||||
sprite[j].z += (1<<8);
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#define GAMEFLAG_NAPALM 0x00000004
|
||||
#define GAMEFLAG_WW2GI 0x00000008
|
||||
#define GAMEFLAG_ADDON 0x00000010
|
||||
#define GAMEFLAG_SHAREWARE 0x00000020
|
||||
#define GAMEFLAG_DUKEBETA 0x00000060 // includes 0x20 since it's a shareware beta
|
||||
|
||||
extern int32_t g_gameType;
|
||||
|
||||
|
@ -19,6 +21,8 @@ extern int32_t g_gameType;
|
|||
#define NAM (g_gameType & GAMEFLAG_NAM)
|
||||
#define NAPALM (g_gameType & GAMEFLAG_NAPALM)
|
||||
#define WW2GI (g_gameType & GAMEFLAG_WW2GI)
|
||||
#define SHAREWARE (g_gameType & GAMEFLAG_SHAREWARE)
|
||||
#define DUKEBETA (g_gameType & GAMEFLAG_DUKEBETA)
|
||||
|
||||
enum Games_t {
|
||||
GAME_DUKE = 0,
|
||||
|
|
|
@ -2088,7 +2088,7 @@ static void G_DisplayExtraScreens(void)
|
|||
S_StopMusic();
|
||||
FX_StopAllSounds();
|
||||
|
||||
if (!VOLUMEALL || flags & LOGO_SHAREWARESCREENS)
|
||||
if (!DUKEBETA && (!VOLUMEALL || flags & LOGO_SHAREWARESCREENS))
|
||||
{
|
||||
setview(0,0,xdim-1,ydim-1);
|
||||
flushperms();
|
||||
|
@ -5216,7 +5216,7 @@ int32_t A_Spawn(int32_t j, int32_t pn)
|
|||
case LIZTROOPSTAYPUT__STATIC:
|
||||
case LIZTROOPJUSTSIT__STATIC:
|
||||
case LIZTROOP__STATIC:
|
||||
if (g_scriptVersion == 13)
|
||||
if (g_scriptVersion != 14)
|
||||
default:
|
||||
sp->extra <<= 1;
|
||||
break;
|
||||
|
@ -10657,11 +10657,17 @@ int32_t app_main(int32_t argc, const char **argv)
|
|||
|
||||
G_CleanupSearchPaths();
|
||||
|
||||
i = kopen4load("DUKESW.BIN",1); // JBF 20030810
|
||||
if (i!=-1)
|
||||
{
|
||||
if (SHAREWARE)
|
||||
g_Shareware = 1;
|
||||
kclose(i);
|
||||
else
|
||||
{
|
||||
i = kopen4load("DUKESW.BIN",1); // JBF 20030810
|
||||
|
||||
if (i != -1)
|
||||
{
|
||||
g_Shareware = 1;
|
||||
kclose(i);
|
||||
}
|
||||
}
|
||||
|
||||
// gotta set the proper title after we compile the CONs if this is the full version
|
||||
|
@ -11763,7 +11769,7 @@ FRAGBONUS:
|
|||
{
|
||||
for (ii=MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].partime/(REALGAMETICSPERSEC*60), ij=1; ii>9; ii/=10, ij++) ;
|
||||
clockpad = max(clockpad,ij);
|
||||
if (!NAM)
|
||||
if (!NAM && MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].designertime)
|
||||
{
|
||||
for (ii=MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].designertime/(REALGAMETICSPERSEC*60), ij=1; ii>9; ii/=10, ij++) ;
|
||||
clockpad = max(clockpad,ij);
|
||||
|
@ -11903,7 +11909,7 @@ FRAGBONUS:
|
|||
gametext((320>>2)+71,yy+9,tempbuf,0,2+8+16);
|
||||
yy+=10;
|
||||
|
||||
if (!NAM)
|
||||
if (!NAM && MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].designertime)
|
||||
{
|
||||
Bsprintf(tempbuf,"%0*d:%02d",clockpad,
|
||||
(MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].designertime/(REALGAMETICSPERSEC*60)),
|
||||
|
|
|
@ -91,6 +91,10 @@ static struct { uint32_t keyw; uint32_t date; } g_keywdate[] =
|
|||
{ CON_ECHO, 20120304 },
|
||||
{ CON_SHOWVIEWUNBIASED, 20120331 },
|
||||
{ CON_ROTATESPRITEA, 20130324 },
|
||||
{ CON_SHADETO, 20130522 },
|
||||
{ CON_ENDOFLEVEL, 20130522 },
|
||||
{ CON_IFPLAYERSL, 20130522 },
|
||||
{ CON_ACTIVATE, 20130522 },
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -578,6 +582,10 @@ const char *keyw[] =
|
|||
"echo", // 362
|
||||
"showviewunbiased", // 363
|
||||
"rotatespritea", // 364
|
||||
"shadeto", // 365
|
||||
"endoflevel", // 366
|
||||
"ifplayersl", // 367
|
||||
"activate", // 368
|
||||
"<null>"
|
||||
};
|
||||
#endif
|
||||
|
@ -2081,16 +2089,29 @@ void G_DoGameStartup(const int32_t *params)
|
|||
g_maxPlayerHealth = g_player[0].ps->max_player_health = g_player[0].ps->max_shield_amount = params[j++];
|
||||
g_startArmorAmount = params[j++];
|
||||
g_actorRespawnTime = params[j++];
|
||||
g_itemRespawnTime = params[j++];
|
||||
g_playerFriction = params[j++];
|
||||
if (g_scriptVersion == 14) g_spriteGravity = params[j++];
|
||||
g_rpgBlastRadius = params[j++];
|
||||
g_pipebombBlastRadius = params[j++];
|
||||
g_shrinkerBlastRadius = params[j++];
|
||||
g_tripbombBlastRadius = params[j++];
|
||||
g_morterBlastRadius = params[j++];
|
||||
g_bouncemineBlastRadius = params[j++];
|
||||
g_seenineBlastRadius = params[j++];
|
||||
|
||||
if (g_scriptVersion >= 11)
|
||||
g_itemRespawnTime = params[j++];
|
||||
else
|
||||
g_itemRespawnTime = g_actorRespawnTime;
|
||||
|
||||
if (g_scriptVersion >= 11)
|
||||
g_playerFriction = params[j++];
|
||||
|
||||
if (g_scriptVersion == 14)
|
||||
g_spriteGravity = params[j++];
|
||||
|
||||
if (g_scriptVersion >= 11)
|
||||
{
|
||||
g_rpgBlastRadius = params[j++];
|
||||
g_pipebombBlastRadius = params[j++];
|
||||
g_shrinkerBlastRadius = params[j++];
|
||||
g_tripbombBlastRadius = params[j++];
|
||||
g_morterBlastRadius = params[j++];
|
||||
g_bouncemineBlastRadius = params[j++];
|
||||
g_seenineBlastRadius = params[j++];
|
||||
}
|
||||
|
||||
g_player[0].ps->max_ammo_amount[PISTOL_WEAPON] = params[j++];
|
||||
g_player[0].ps->max_ammo_amount[SHOTGUN_WEAPON] = params[j++];
|
||||
g_player[0].ps->max_ammo_amount[CHAINGUN_WEAPON] = params[j++];
|
||||
|
@ -2099,17 +2120,25 @@ void G_DoGameStartup(const int32_t *params)
|
|||
g_player[0].ps->max_ammo_amount[SHRINKER_WEAPON] = params[j++];
|
||||
g_player[0].ps->max_ammo_amount[DEVISTATOR_WEAPON] = params[j++];
|
||||
g_player[0].ps->max_ammo_amount[TRIPBOMB_WEAPON] = params[j++];
|
||||
g_player[0].ps->max_ammo_amount[FREEZE_WEAPON] = params[j++];
|
||||
if (g_scriptVersion == 14) g_player[0].ps->max_ammo_amount[GROW_WEAPON] = params[j++];
|
||||
g_damageCameras = params[j++];
|
||||
g_numFreezeBounces = params[j++];
|
||||
g_freezerSelfDamage = params[j++];
|
||||
if (g_scriptVersion == 14)
|
||||
{
|
||||
g_spriteDeleteQueueSize = params[j++];
|
||||
g_spriteDeleteQueueSize = clamp(g_spriteDeleteQueueSize, 0, 1024);
|
||||
|
||||
g_tripbombLaserMode = params[j++];
|
||||
if (g_scriptVersion >= 13)
|
||||
{
|
||||
g_player[0].ps->max_ammo_amount[FREEZE_WEAPON] = params[j++];
|
||||
|
||||
if (g_scriptVersion == 14)
|
||||
g_player[0].ps->max_ammo_amount[GROW_WEAPON] = params[j++];
|
||||
|
||||
g_damageCameras = params[j++];
|
||||
g_numFreezeBounces = params[j++];
|
||||
g_freezerSelfDamage = params[j++];
|
||||
|
||||
if (g_scriptVersion == 14)
|
||||
{
|
||||
g_spriteDeleteQueueSize = params[j++];
|
||||
g_spriteDeleteQueueSize = clamp(g_spriteDeleteQueueSize, 0, 1024);
|
||||
|
||||
g_tripbombLaserMode = params[j++];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2759,8 +2788,7 @@ static int32_t C_ParseCommand(int32_t loop)
|
|||
while (j>-1)
|
||||
{
|
||||
bitptr[(g_scriptPtr-script)>>3] &= ~(BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
*g_scriptPtr = 0;
|
||||
g_scriptPtr++;
|
||||
*g_scriptPtr++ = 0;
|
||||
j--;
|
||||
}
|
||||
continue;
|
||||
|
@ -3257,6 +3285,7 @@ static int32_t C_ParseCommand(int32_t loop)
|
|||
case CON_CSTAT:
|
||||
case CON_COUNT:
|
||||
case CON_ENDOFGAME:
|
||||
case CON_ENDOFLEVEL:
|
||||
case CON_SPRITEPAL:
|
||||
case CON_CACTOR:
|
||||
case CON_MONEY:
|
||||
|
@ -4361,6 +4390,12 @@ static int32_t C_ParseCommand(int32_t loop)
|
|||
}
|
||||
continue;
|
||||
|
||||
case CON_ACTIVATE:
|
||||
*g_scriptPtr = CON_OPERATEACTIVATORS;
|
||||
C_GetNextValue(LABEL_DEFINE);
|
||||
*g_scriptPtr++ = g_iThisActorID;
|
||||
continue;
|
||||
|
||||
case CON_DRAGPOINT:
|
||||
case CON_GETKEYNAME:
|
||||
C_GetManyVars(3);
|
||||
|
@ -5061,6 +5096,7 @@ repeatcase:
|
|||
case CON_IFMOVE:
|
||||
case CON_IFP:
|
||||
case CON_IFPINVENTORY:
|
||||
case CON_IFPLAYERSL:
|
||||
{
|
||||
intptr_t offset;
|
||||
intptr_t lastScriptPtr = (g_scriptPtr-&script[0]-1);
|
||||
|
@ -5588,12 +5624,17 @@ repeatcase:
|
|||
textptr += 5;
|
||||
while (*textptr == ' ' || *textptr == '\t') textptr++;
|
||||
|
||||
MapInfo[j *MAXLEVELS+k].designertime =
|
||||
(((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*REALGAMETICSPERSEC*60)+
|
||||
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC);
|
||||
// cheap hack, 0.99 doesn't have the 3D Realms time
|
||||
if (*(textptr+2) == ':')
|
||||
{
|
||||
MapInfo[j *MAXLEVELS+k].designertime =
|
||||
(((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*REALGAMETICSPERSEC*60)+
|
||||
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC);
|
||||
|
||||
textptr += 5;
|
||||
while (*textptr == ' ' || *textptr == '\t') textptr++;
|
||||
textptr += 5;
|
||||
while (*textptr == ' ' || *textptr == '\t') textptr++;
|
||||
}
|
||||
else g_scriptVersion = 9;
|
||||
|
||||
i = 0;
|
||||
|
||||
|
@ -5890,6 +5931,12 @@ repeatcase:
|
|||
if (C_SetScriptSize(j)) return 1;
|
||||
continue;
|
||||
|
||||
case CON_SHADETO:
|
||||
g_scriptPtr--;
|
||||
C_GetNextValue(LABEL_DEFINE);
|
||||
g_scriptPtr--;
|
||||
continue;
|
||||
|
||||
case CON_FALL:
|
||||
case CON_TIP:
|
||||
// case 21:
|
||||
|
@ -5930,19 +5977,18 @@ repeatcase:
|
|||
g_scriptPtr--;
|
||||
params[j] = *g_scriptPtr;
|
||||
|
||||
if (j != 25) continue;
|
||||
if (j != 12 && j != 21 && j != 25) continue;
|
||||
|
||||
if (C_GetKeyword() != -1)
|
||||
{
|
||||
// initprintf("Duke Nukem 3D v1.3D style CON files detected.\n");
|
||||
if (j == 12)
|
||||
g_scriptVersion = 10;
|
||||
else if (j == 21)
|
||||
g_scriptVersion = 11;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_scriptVersion = 14;
|
||||
// initprintf("Duke Nukem 3D v1.4+ style CON files detected.\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -6130,6 +6176,23 @@ void C_InitProjectiles(void)
|
|||
extern int32_t g_numObituaries;
|
||||
extern int32_t g_numSelfObituaries;
|
||||
|
||||
static char * C_ScriptVersionString(int32_t version)
|
||||
{
|
||||
switch (version)
|
||||
{
|
||||
case 9:
|
||||
return "0.99";
|
||||
case 10:
|
||||
return "1.0";
|
||||
case 11:
|
||||
return "1.1";
|
||||
case 13:
|
||||
return "1.3D";
|
||||
default:
|
||||
return "1.4+";
|
||||
}
|
||||
}
|
||||
|
||||
void C_Compile(const char *filenam)
|
||||
{
|
||||
char *mptr;
|
||||
|
@ -6315,8 +6378,8 @@ void C_Compile(const char *filenam)
|
|||
|
||||
C_SetScriptSize(g_scriptPtr-script+8);
|
||||
|
||||
initprintf("Script compiled in %dms, %ld*%db, version %s\n", getticks() - startcompiletime,
|
||||
(unsigned long)(g_scriptPtr-script), (int32_t)sizeof(intptr_t), (g_scriptVersion == 14?"1.4+":"1.3D"));
|
||||
initprintf("Script compiled in %dms, %ld*%db, language version %s\n", getticks() - startcompiletime,
|
||||
(unsigned long)(g_scriptPtr-script), (int32_t)sizeof(intptr_t), C_ScriptVersionString(g_scriptVersion));
|
||||
|
||||
initprintf("%d/%d labels, %d/%d variables, %d/%d arrays\n", g_numLabels,
|
||||
(int32_t)min((MAXSECTORS * sizeof(sectortype)/sizeof(int32_t)),
|
||||
|
|
|
@ -937,6 +937,10 @@ enum ScriptKeywords_t
|
|||
CON_ECHO, // 362
|
||||
CON_SHOWVIEWUNBIASED, // 363
|
||||
CON_ROTATESPRITEA, // 364
|
||||
CON_SHADETO, // 365
|
||||
CON_ENDOFLEVEL, // 366
|
||||
CON_IFPLAYERSL, // 367
|
||||
CON_ACTIVATE, // 368
|
||||
CON_END
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -1289,6 +1289,10 @@ skip_check:
|
|||
vm.g_t[4] = *insptr++;
|
||||
continue;
|
||||
|
||||
case CON_IFPLAYERSL:
|
||||
VM_CONDITIONAL(numplayers < *(++insptr));
|
||||
continue;
|
||||
|
||||
case CON_IFPDISTL:
|
||||
VM_CONDITIONAL(vm.g_x < *(++insptr));
|
||||
if (vm.g_x > MAXSLEEPDIST && actor[vm.g_i].timetosleep == 0)
|
||||
|
@ -1617,6 +1621,7 @@ skip_check:
|
|||
continue;
|
||||
|
||||
case CON_ENDOFGAME:
|
||||
case CON_ENDOFLEVEL:
|
||||
insptr++;
|
||||
g_player[vm.g_p].ps->timebeforeexit = *insptr++;
|
||||
g_player[vm.g_p].ps->customexitsound = -1;
|
||||
|
|
|
@ -57,6 +57,13 @@ int32_t g_timerTicsPerSecond = TICRATE;
|
|||
|
||||
int32_t g_actorRespawnTime = 768;
|
||||
int32_t g_itemRespawnTime = 768;
|
||||
int32_t g_rpgBlastRadius = 1780;
|
||||
int32_t g_pipebombBlastRadius = 2500;
|
||||
int32_t g_shrinkerBlastRadius = 650;
|
||||
int32_t g_tripbombBlastRadius = 3880;
|
||||
int32_t g_morterBlastRadius = 2500;
|
||||
int32_t g_bouncemineBlastRadius = 2500;
|
||||
int32_t g_seenineBlastRadius = 2048;
|
||||
|
||||
int32_t g_scriptSize = 1048576;
|
||||
|
||||
|
@ -79,7 +86,7 @@ int16_t BlimpSpawnSprites[15] =
|
|||
FREEZEAMMO__STATIC
|
||||
};
|
||||
|
||||
int32_t g_playerFriction = 0xcc00;
|
||||
int32_t g_playerFriction = 0xCFD0;
|
||||
|
||||
int32_t g_numFreezeBounces = 3;
|
||||
|
||||
|
|
|
@ -126,13 +126,6 @@ G_EXTERN uint32_t everyothertime;
|
|||
G_EXTERN uint32_t g_moveThingsCount;
|
||||
G_EXTERN vec3_t my,omy,myvel;
|
||||
G_EXTERN volatile char g_soundlocks[MAXSOUNDS];
|
||||
G_EXTERN int32_t g_rpgBlastRadius;
|
||||
G_EXTERN int32_t g_pipebombBlastRadius;
|
||||
G_EXTERN int32_t g_tripbombBlastRadius;
|
||||
G_EXTERN int32_t g_shrinkerBlastRadius;
|
||||
G_EXTERN int32_t g_morterBlastRadius;
|
||||
G_EXTERN int32_t g_bouncemineBlastRadius;
|
||||
G_EXTERN int32_t g_seenineBlastRadius;
|
||||
G_EXTERN int32_t g_restorePalette;
|
||||
G_EXTERN int32_t g_screenCapture;
|
||||
G_EXTERN int32_t g_noEnemies;
|
||||
|
@ -156,6 +149,13 @@ G_EXTERN int16_t BlimpSpawnSprites[15];
|
|||
G_EXTERN int32_t g_playerFriction;
|
||||
G_EXTERN int32_t g_numFreezeBounces;
|
||||
G_EXTERN int32_t g_lastSaveSlot;
|
||||
G_EXTERN int32_t g_rpgBlastRadius;
|
||||
G_EXTERN int32_t g_pipebombBlastRadius;
|
||||
G_EXTERN int32_t g_tripbombBlastRadius;
|
||||
G_EXTERN int32_t g_shrinkerBlastRadius;
|
||||
G_EXTERN int32_t g_morterBlastRadius;
|
||||
G_EXTERN int32_t g_bouncemineBlastRadius;
|
||||
G_EXTERN int32_t g_seenineBlastRadius;
|
||||
G_EXTERN char CheatKeys[2];
|
||||
G_EXTERN char setupfilename[BMAX_PATH];
|
||||
#endif
|
||||
|
|
|
@ -33,21 +33,24 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
// custom GRP support for the startup window, file format reflects the structure below
|
||||
#define GAMELISTFILE "games.list"
|
||||
// name crc size flags dependency scriptname defname
|
||||
// name crc size flags dependency scriptname defname
|
||||
struct grpfile internalgrpfiles[NUMGRPFILES] =
|
||||
{
|
||||
{ "Duke Nukem 3D", DUKE13_CRC, 26524524, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D (South Korean Censored)", DUKEKR_CRC, 26385383, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D: Atomic Edition", DUKE15_CRC, 44356548, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D: Plutonium Pak", DUKEPP_CRC, 44348015, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D Shareware", DUKESW_CRC, 11035779, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D Mac Demo", DUKEMD_CRC, 10444391, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke it out in D.C.", DUKEDC_CRC, 8410183 , GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, NULL, NULL, NULL },
|
||||
{ "Duke Caribbean: Life's a Beach", DUKECB_CRC, 22213819, GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, NULL, NULL, NULL },
|
||||
{ "Duke: Nuclear Winter", DUKENW_CRC, 16169365, GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, "nwinter.con", NULL, NULL },
|
||||
{ "NAM", NAM_CRC, 43448927, GAMEFLAG_NAM, 0, "nam.con", "nam.def", NULL },
|
||||
{ "NAPALM", NAPALM_CRC, 44365728, GAMEFLAG_NAM|GAMEFLAG_NAPALM, 0, "napalm.con", "nam.def", NULL },
|
||||
{ "WWII GI", WW2GI_CRC, 77939508, GAMEFLAG_WW2GI|GAMEFLAG_NAM, 0, "ww2gi.con", "ww2gi.def", NULL },
|
||||
{ "Duke Nukem 3D", DUKE13_CRC, 26524524, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D (South Korean Censored)", DUKEKR_CRC, 26385383, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D: Atomic Edition", DUKE15_CRC, 44356548, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D: Plutonium Pak", DUKEPP_CRC, 44348015, GAMEFLAG_DUKE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D Shareware 0.99", DUKE099_CRC, 9690241, GAMEFLAG_DUKE|GAMEFLAG_DUKEBETA, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D Shareware 1.0", DUKE10_CRC, 10429258, GAMEFLAG_DUKE|GAMEFLAG_SHAREWARE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D Shareware 1.1", DUKE11_CRC, 10442980, GAMEFLAG_DUKE|GAMEFLAG_SHAREWARE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D Shareware 1.3D", DUKESW_CRC, 11035779, GAMEFLAG_DUKE|GAMEFLAG_SHAREWARE, 0, NULL, NULL, NULL },
|
||||
{ "Duke Nukem 3D Mac Demo", DUKEMD_CRC, 10444391, GAMEFLAG_DUKE|GAMEFLAG_SHAREWARE, 0, NULL, NULL, NULL },
|
||||
{ "Duke it out in D.C.", DUKEDC_CRC, 8410183 , GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, NULL, NULL, NULL },
|
||||
{ "Duke Caribbean: Life's a Beach", DUKECB_CRC, 22213819, GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, NULL, NULL, NULL },
|
||||
{ "Duke: Nuclear Winter", DUKENW_CRC, 16169365, GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, "nwinter.con", NULL, NULL },
|
||||
{ "NAM", NAM_CRC, 43448927, GAMEFLAG_NAM, 0, "nam.con", "nam.def", NULL },
|
||||
{ "NAPALM", NAPALM_CRC, 44365728, GAMEFLAG_NAM|GAMEFLAG_NAPALM, 0, "napalm.con", "nam.def", NULL },
|
||||
{ "WWII GI", WW2GI_CRC, 77939508, GAMEFLAG_WW2GI|GAMEFLAG_NAM, 0, "ww2gi.con", "ww2gi.def", NULL },
|
||||
};
|
||||
struct grpfile *foundgrps = NULL;
|
||||
struct grpfile *listgrps = NULL;
|
||||
|
@ -454,6 +457,9 @@ int32_t ScanGroups(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (igrp->game && !grp->game)
|
||||
grp->game = igrp->game;
|
||||
|
||||
grp=grp->next;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,20 +26,23 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#define MAXLISTNAMELEN 32
|
||||
|
||||
// List of internally-known GRP files
|
||||
#define NUMGRPFILES 12
|
||||
#define NUMGRPFILES 15
|
||||
|
||||
#define DUKE13_CRC (int32_t)0xBBC9CE44
|
||||
#define DUKEKR_CRC (int32_t)0xAA4F6A40
|
||||
#define DUKE15_CRC (int32_t)0xFD3DCFF1
|
||||
#define DUKEPP_CRC (int32_t)0xF514A6AC
|
||||
#define DUKESW_CRC (int32_t)0x983AD923
|
||||
#define DUKEMD_CRC (int32_t)0xC5F71561
|
||||
#define DUKEDC_CRC (int32_t)0xA8CF80DA
|
||||
#define DUKECB_CRC (int32_t)0x18F01C5B
|
||||
#define DUKENW_CRC (int32_t)0xF1CAE8E4
|
||||
#define NAM_CRC (int32_t)0x75C1F07B
|
||||
#define NAPALM_CRC (int32_t)0x3DE1589A
|
||||
#define WW2GI_CRC (int32_t)0x907B82BF
|
||||
#define DUKE13_CRC (int32_t)0xBBC9CE44
|
||||
#define DUKEKR_CRC (int32_t)0xAA4F6A40
|
||||
#define DUKE15_CRC (int32_t)0xFD3DCFF1
|
||||
#define DUKEPP_CRC (int32_t)0xF514A6AC
|
||||
#define DUKE099_CRC (int32_t)0x02F18900
|
||||
#define DUKE10_CRC (int32_t)0xA28AA589
|
||||
#define DUKE11_CRC (int32_t)0x912E1E8D
|
||||
#define DUKESW_CRC (int32_t)0x983AD923
|
||||
#define DUKEMD_CRC (int32_t)0xC5F71561
|
||||
#define DUKEDC_CRC (int32_t)0xA8CF80DA
|
||||
#define DUKECB_CRC (int32_t)0x18F01C5B
|
||||
#define DUKENW_CRC (int32_t)0xF1CAE8E4
|
||||
#define NAM_CRC (int32_t)0x75C1F07B
|
||||
#define NAPALM_CRC (int32_t)0x3DE1589A
|
||||
#define WW2GI_CRC (int32_t)0x907B82BF
|
||||
|
||||
enum addon_t {
|
||||
ADDON_NONE,
|
||||
|
|
|
@ -926,7 +926,7 @@ void M_DisplayMenus(void)
|
|||
mgametext(160,41-8,"You are playing the shareware",0,2+8+16);
|
||||
mgametext(160,50-8,"version of Duke Nukem 3D. While",0,2+8+16);
|
||||
mgametext(160,59-8,"this version is really cool, you",0,2+8+16);
|
||||
mgametext(160,68-8,"are missing over 75%% of the total",0,2+8+16);
|
||||
mgametext(160,68-8,"are missing over 75% of the total",0,2+8+16);
|
||||
mgametext(160,77-8,"game, along with other great extras",0,2+8+16);
|
||||
mgametext(160,86-8,"and games, which you'll get when",0,2+8+16);
|
||||
mgametext(160,95-8,"you order the complete version and",0,2+8+16);
|
||||
|
@ -2019,7 +2019,7 @@ void M_DisplayMenus(void)
|
|||
M_DrawTopBar("About EDuke32");
|
||||
|
||||
cheat_for_port_credits:
|
||||
if (g_scriptVersion == 13) l = (-2);
|
||||
if (g_scriptVersion != 14) l = (-2);
|
||||
mgametext(160,38-l,"Programming and Project Management",0,2+8+16);
|
||||
p = "Richard \"TerminX\" Gobeille";
|
||||
minitext(161-(Bstrlen(p)<<1), 39+10-l, p, 4, 10+16+128);
|
||||
|
@ -2060,7 +2060,7 @@ cheat_for_port_credits:
|
|||
M_DrawTopBar("About EDuke32");
|
||||
|
||||
cheat_for_port_credits2:
|
||||
if (g_scriptVersion == 13) l = (-2);
|
||||
if (g_scriptVersion != 14) l = (-2);
|
||||
mgametext(160,38-l,"License and Other Contributors",0,2+8+16);
|
||||
{
|
||||
const char *header[] =
|
||||
|
|
Loading…
Reference in a new issue