Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Doom 1 Episode 5: SIGIL by John Romero #302

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,4 @@ msvc*
Doom3BFGVR_Alpha020.exe
Doom3BFGVR_Fully_Possessed_Alpha020.exe
PrivateStuff/
/vr_assets/Fully Possessed/wads/SIGIL.wad
8 changes: 5 additions & 3 deletions README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2477,15 +2477,17 @@ __________________________________________________________

9. Extract the FFmpeg DLLs to your current build directory (eg. Release) under DOOM-3-BFG-VR/build/

10. Copy the Fully Possessed folder from Doom3-BFG-VR\vr_assets\ to your DOOM 3 BFG Edition folder.
10. (NEW) Download SIGIL from https://www.romerogames.ie/si6il and extract SIGIL.WAD to Doom3-BFG-VR\vr_assets\wads

11. (OPTIONAL) If Doom 3 BFG wasn't installed from Steam or GOG, set the path in Visual Studio.
11. Copy the Fully Possessed folder from Doom3-BFG-VR\vr_assets\ to your DOOM 3 BFG Edition folder.

12. (OPTIONAL) If Doom 3 BFG wasn't installed from Steam or GOG, set the path in Visual Studio.
Right click project Doom3BFGVR, click Properties. Set Configuration to All Configurations.
Choose Debugging, set Command Arguments to:
+set fs_basepath "C:\Program Files (x86)\Steam\steamapps\common\DOOM 3 BFG Edition"
or wherever you installed Doom 3 BFG edition

12. To create the installer, download and install NSIS. Build the release version in visual
13. To create the installer, download and install NSIS. Build the release version in visual
studio. Right click on the installer.nsi file and choose Compile NSIS Script.

__________________________________
Expand Down
20 changes: 16 additions & 4 deletions doomclassic/doom/constructs.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,12 @@ menu_t temp_MainDef = {


memcpy( &::g->MainDef, &temp_MainDef, sizeof(temp_MainDef) );
menuitem_t temp_EpisodeMenu[4] = {
menuitem_t temp_EpisodeMenu[5] = {
{1,"M_EPI1", M_Episode,'k'},
{1,"M_EPI2", M_Episode,'t'},
{1,"M_EPI3", M_Episode,'i'},
{1,"M_EPI4", M_Episode,'t'}
{1,"M_EPI4", M_Episode,'t'},
{1,"M_EPI5", M_Episode,'s'}
};
memcpy( ::g->EpisodeMenu, temp_EpisodeMenu, sizeof(temp_EpisodeMenu) );
menu_t temp_EpiDef = {
Expand Down Expand Up @@ -416,7 +417,7 @@ memcpy( ::g->fuzzoffset, temp_fuzzoffset, sizeof(temp_fuzzoffset) );
::g->validcount = 1;
// r_main.constructs end //
// sounds.constructs begin //
musicinfo_t temp_S_music[80] = {
musicinfo_t temp_S_music[90] = {
{ 0 },
{ "e1m1", 0 },
{ "e1m2", 0 },
Expand Down Expand Up @@ -484,7 +485,18 @@ musicinfo_t temp_S_music[80] = {
{ "ultima", 0 },
{ "read_m", 0 },
{ "dm2ttl", 0 },
{ "dm2int", 0 }
{ "dm2int", 0 },
{ "e5m1", 0 },
{ "e5m2", 0 },
{ "e5m3", 0 },
{ "e5m4", 0 },
{ "e5m5", 0 },
{ "e5m6", 0 },
{ "e5m7", 0 },
{ "e5m8", 0 },
{ "e5m9", 0 },
{ "intro5", 0 },
{ "inter5", 0 }
};
memcpy( ::g->S_music, temp_S_music, sizeof(temp_S_music) );
// sounds.constructs end //
Expand Down
20 changes: 20 additions & 0 deletions doomclassic/doom/d_englsh.h
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,17 @@ If you have questions concerning this license or the applicable additional terms
#define HUSTR_E4M8 "E4M8: Unto The Cruel"
#define HUSTR_E4M9 "E4M9: Fear"

#define HUSTR_EPI5 = "SIGIL";
#define HUSTR_E5M1 = "E5M1: Baphomet's Demesne";
#define HUSTR_E5M2 = "E5M2: Sheol";
#define HUSTR_E5M3 = "E5M3: Cages of the Damned";
#define HUSTR_E5M4 = "E5M4: Paths of Wretchedness";
#define HUSTR_E5M5 = "E5M5: Abaddon's Void";
#define HUSTR_E5M6 = "E5M6: Unspeakable Persecution";
#define HUSTR_E5M7 = "E5M7: Nightmare Underworld";
#define HUSTR_E5M8 = "E5M8: Halls of Perdition";
#define HUSTR_E5M9 = "E5M9: Realm of Iblis";

#define HUSTR_1 "level 1: entryway"
#define HUSTR_2 "level 2: underhalls"
#define HUSTR_3 "level 3: the gantlet"
Expand Down Expand Up @@ -440,6 +451,15 @@ If you have questions concerning this license or the applicable additional terms
"\n"\
"next stop, hell on earth!"

#define E5TEXT \
"Baphomet was only doing Satan's bidding\n"\
"by bringing you back to Hell. Somehow they\n"\
"didn't understand that you're the reason\n"\
"they failed in the first place.\n\n"\
"After mopping up the place with your\n"\
"arsenal, you're ready to face the more\n"\
"advanced demons that were sent to Earth.\n\n"\
"Lock and load. Rip and tear.";

// after level 6, put this:

Expand Down
2 changes: 1 addition & 1 deletion doomclassic/doom/d_player.h
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ typedef struct

typedef struct
{
int epsd; // episode # (0-2)
int epsd; // episode # (0-4)

// if true, splash the secret level
qboolean didsecret;
Expand Down
4 changes: 2 additions & 2 deletions doomclassic/doom/doomdef.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ typedef enum
registered, // DOOM 1 registered, E3, M27
commercial, // DOOM 2 retail, E1 M34
// DOOM 2 german edition not handled
retail, // DOOM 1 retail, E4, M36
retail, // DOOM 1 retail with SIGIL, E5, M45
indetermined // Well, no IWAD found.

} GameMode_t;
Expand All @@ -64,7 +64,7 @@ typedef enum
pack_plut, // Plutonia pack
pack_master, // Master levels
pack_nerve, // Nerve levels

pack_sigil, // SIGIL (John Romero) levels
none

} GameMission_t;
Expand Down
5 changes: 3 additions & 2 deletions doomclassic/doom/doomlib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ namespace DoomLib
"E1M1: Hangar", "E1M2: Nuclear Plant", "E1M3: Toxin Refinery", "E1M4: Command Control", "E1M5: Phobos Lab", "E1M6: Central Processing", "E1M7: Computer Station", "E1M8: Phobos Anomaly", "E1M9: Military Base",
"E2M1: Deimos Anomaly", "E2M2: Containment Area", "E2M3: Refinery", "E2M4: Deimos Lab", "E2M5: Command Center", "E2M6: Halls of the Damned", "E2M7: Spawning Vats", "E2M8: Tower of Babel", "E2M9: Fortress of Mystery",
"E3M1: Hell Keep", "E3M2: Slough of Despair", "E3M3: Pandemonium", "E3M4: House of Pain", "E3M5: Unholy Cathedral", "E3M6: MT. Erebus", "E3M7: Gate to Limbo", "E3M8: DIS", "E3M9: Warrens",
"E4M1: Hell Beneath", "E4M2: Perfect Hatred", "E4M3: Sever The Wicked", "E4M4: Unruly Evil", "E4M5: They Will Repent", "E4M6: Against Thee Wickedly", "E4M7: And Hell Followed", "E4M8: Unto The Cruel", "E4M9: Fear"
"E4M1: Hell Beneath", "E4M2: Perfect Hatred", "E4M3: Sever The Wicked", "E4M4: Unruly Evil", "E4M5: They Will Repent", "E4M6: Against Thee Wickedly", "E4M7: And Hell Followed", "E4M8: Unto The Cruel", "E4M9: Fear",
"E5M1: Baphomet's Demesne", "E5M2: Sheol", "E5M3: Cages of the Damned", "E5M4: Paths of Wretchedness", "E5M5: Abaddon's Void", "E5M6: Unspeakable Persecution", "E5M7: Nightmare Underworld", "E5M8: Halls of Perdition", "E5M9: Realm of Iblis"
};

static const char * Doom2_MapNames[] = {
Expand Down Expand Up @@ -106,7 +107,7 @@ namespace DoomLib
};

const ExpansionData App_Expansion_Data_Local[] = {
{ ExpansionData::IWAD, retail, doom, "DOOM", DOOMWADDIR"DOOM.WAD", NULL, "base/textures/DOOMICON.PNG" , Doom_MapNames },
{ ExpansionData::PWAD, retail, doom, "DOOM", DOOMWADDIR"DOOM.WAD", DOOMWADDIR"SIGIL.WAD", "base/textures/DOOMICON.PNG" , Doom_MapNames },
{ ExpansionData::IWAD, commercial, doom2, "DOOM 2", DOOMWADDIR"DOOM2.WAD", NULL, "base/textures/DOOM2ICON.PNG" , Doom2_MapNames },
{ ExpansionData::IWAD, commercial, pack_tnt, "FINAL DOOM: TNT EVILUTION", DOOMWADDIR"TNT.WAD", NULL, "base/textures/TNTICON.PNG" , TNT_MapNames },
{ ExpansionData::IWAD, commercial, pack_plut, "FINAL DOOM: PLUTONIA EXPERIMENT", DOOMWADDIR"PLUTONIA.WAD", NULL, "base/textures/PLUTICON.PNG" , Plut_MapNames },
Expand Down
9 changes: 9 additions & 0 deletions doomclassic/doom/f_finale.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ const char* e1text = E1TEXT;
const char* e2text = E2TEXT;
const char* e3text = E3TEXT;
const char* e4text = E4TEXT;
const char* e5text = E5TEXT;

const char* c1text = C1TEXT;
const char* c2text = C2TEXT;
Expand Down Expand Up @@ -151,6 +152,10 @@ void F_StartFinale (void)
finaleflat = "MFLR8_3";
finaletext = e4text;
break;
case 5:
finaleflat = "FLOOR7_2";
finaletext = e5text;
break;
default:
// Ouch.
break;
Expand Down Expand Up @@ -807,6 +812,10 @@ void F_Drawer (void)
V_DrawPatch (0,0,0,
(patch_t*)W_CacheLumpName("ENDPIC",PU_CACHE_SHARED));
break;
case 5:
V_DrawPatch (0,0,0,
(patch_t*)W_CacheLumpName("SIGILEND",PU_CACHE_SHARED));
break;
}
}

Expand Down
15 changes: 11 additions & 4 deletions doomclassic/doom/g_game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1156,13 +1156,14 @@ void G_ScreenShot (void)

// DHM - Nerve :: Added episode 4 par times
// DOOM Par Times
const int pars[5][10] =
const int pars[6][10] =
{
{0},
{0,30,75,120,90,165,180,180,30,165},
{0,90,90,90,120,90,360,240,30,170},
{0,90,45,90,150,90,90,165,30,135},
{0,165,255,135,150,180,390,135,360,180}
{0,165,255,135,150,180,390,135,360,180},
{0,0,0,0,0,0,0,0,0,0}
};

// DOOM II Par Times
Expand Down Expand Up @@ -1303,6 +1304,9 @@ void G_DoCompleted (void)
case 4:
::g->wminfo.next = 2;
break;
case 5:
::g->wminfo.next = 6;
break;
}
}
else
Expand Down Expand Up @@ -1666,8 +1670,8 @@ G_InitNew

if ( ::g->gamemode == retail )
{
if (episode > 4)
episode = 4;
if (episode > 5)
episode = 5;
}
else if ( ::g->gamemode == shareware )
{
Expand Down Expand Up @@ -1732,6 +1736,9 @@ G_InitNew
case 4: // Special Edition sky
::g->skytexture = R_TextureNumForName ("SKY4");
break;
case 5: // Special Edition sky
::g->skytexture = R_TextureNumForName ("SKY5");
break;
default:
::g->skytexture = R_TextureNumForName ("SKY1");
break;
Expand Down
10 changes: 9 additions & 1 deletion doomclassic/doom/i_sound_win32.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -908,7 +908,15 @@ DWORD WINAPI I_LoadSong( LPVOID songname ) {
unsigned char * musFile = static_cast< unsigned char * >( W_CacheLumpName( lumpName.c_str(), PU_STATIC_SHARED ) );

int length = 0;
Mus2Midi( musFile, midiConversionBuffer, &length );

MidiHeaderChunk_t* midi = (MidiHeaderChunk_t*)musFile;
if ( midi->name[0] == 'M' && midi->name[1] == 'T' && midi->name[2] == 'h' &&
midi->name[3] == 'd' ) {
length = W_LumpLength( W_GetNumForName( lumpName.c_str() ) );
memcpy( &midiConversionBuffer, musFile, length );
} else {
Mus2Midi( musFile, midiConversionBuffer, &length );
}

doomMusic = Timidity_LoadSongMem( midiConversionBuffer, length );

Expand Down
2 changes: 1 addition & 1 deletion doomclassic/doom/i_system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ void I_Error(const char *error, ...)
// CRASH DUMP - enable this to get extra info on error from crash dumps
//*(int*)0x0 = 21;
DoomLib::Interface.QuitCurrentGame();
idLib::Printf( "DOOM Classic error: %s", error_msg );
idLib::Printf( "DOOM Classic error: %s\n", error_msg );
common->SwitchToGame( DOOM3_BFG );
}

Expand Down
6 changes: 6 additions & 0 deletions doomclassic/doom/m_menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -726,6 +726,12 @@ void M_Episode(int choice)
{
I_PrintfE("M_Episode: 4th episode requires UltimateDOOM\n");
choice = 0;
} else if ( (::g->gamemode == retail)
&& (choice == 4))
{
// Play the SIGIL opening music if we're starting Episode 5,
// otherwise we'll never have a chance to hear it
S_ChangeMusic(mus_intro5, true);
}

::g->epi = choice;
Expand Down
15 changes: 13 additions & 2 deletions doomclassic/doom/s_sound.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,13 +209,24 @@ void S_Start(void)
mus_e2m4, // Romero e4m6
mus_e2m6, // J.Anderson e4m7 CHIRON.WAD
mus_e2m5, // Shawn e4m8
mus_e1m9 // Tim e4m9
mus_e1m9, // Tim e4m9
mus_e5m1, // E5M1: Hate Machine by James Paddock
mus_e5m2, // E5M2: You Ain't the Boss O' Me by James Paddock
mus_e5m3, // E5M3: Quell the Beast by James Paddock
mus_e5m4, // E5M4: Riot Squadron by James Paddock
mus_e5m5, // E5M5: Alice by James Paddock
mus_e5m6, // E5M6: Besieged City by James Paddock
mus_e5m7, // E5M7: Watching You by James Paddock
mus_e5m8, // E5M8: Easel by James Paddock
mus_e5m9, // E5M9: Adrenaline in the Blood by James Paddock
mus_intro5, // E5 Intro: Lands of Ire
mus_inter5 // E5 Intermission screen: Big Guns
};

if (::g->gameepisode < 4)
mnum = mus_e1m1 + (::g->gameepisode-1)*9 + ::g->gamemap-1;
else
mnum = spmus[::g->gamemap-1];
mnum = spmus[::g->gamemap-1 + (::g->gameepisode-4)*9];
}

S_StopMusic();
Expand Down
11 changes: 11 additions & 0 deletions doomclassic/doom/sounds.h
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,17 @@ typedef enum
mus_read_m,
mus_dm2ttl,
mus_dm2int,
mus_e5m1,
mus_e5m2,
mus_e5m3,
mus_e5m4,
mus_e5m5,
mus_e5m6,
mus_e5m7,
mus_e5m8,
mus_e5m9,
mus_intro5,
mus_inter5,
NUMMUSIC
} musicenum_t;

Expand Down
4 changes: 2 additions & 2 deletions doomclassic/doom/st_stuff.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ ST_Responder (event_t* ev)

// Ohmygod - this is not going to work.
if ((::g->gamemode == retail)
&& ((epsd > 4) || (map > 9)))
&& ((epsd > 5) || (map > 9)))
return false;

if ((::g->gamemode == registered)
Expand Down Expand Up @@ -1451,7 +1451,7 @@ CONSOLE_COMMAND_SHIP( idclev, "warp to next level", 0 ) {

// Ohmygod - this is not going to work.
if ((::g->gamemode == retail)
&& ((epsd > 4) || (map > 9)))
&& ((epsd > 5) || (map > 9)))
return;

if ((::g->gamemode == registered)
Expand Down
1 change: 1 addition & 0 deletions doomclassic/doom/structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ typedef enum
ep2,
ep3,
ep4,
ep5,
ep_end
} episodes_e;
typedef enum
Expand Down
2 changes: 1 addition & 1 deletion doomclassic/doom/vars.h
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ menuitem_t MainMenu[5];
menu_t QuitDef;
menuitem_t QuitMenu[3];
menu_t MainDef;
menuitem_t EpisodeMenu[4];
menuitem_t EpisodeMenu[5];
menu_t EpiDef;
menuitem_t ExpansionMenu[2];
menu_t ExpDef;
Expand Down
31 changes: 30 additions & 1 deletion doomclassic/doom/w_wad.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ void W_AddFile ( const char *filename)
int length;
int startlump;
std::vector<filelump_t> fileinfo( 1 );
bool isSigil = false;

// open the file and add to directory
if ( (handle = fileSystem->OpenFileRead(filename)) == 0)
Expand All @@ -165,6 +166,8 @@ void W_AddFile ( const char *filename)
else
{
// WAD file
if (strstr(filename, "SIGIL"))
isSigil = true;
handle->Read( &header, sizeof( header ) );
if ( idStr::Cmpn( header.identification,"IWAD",4 ) )
{
Expand Down Expand Up @@ -207,7 +210,33 @@ void W_AddFile ( const char *filename)
lump_p->handle = handle;
lump_p->position = LONG(filelumpPointer->filepos);
lump_p->size = LONG(filelumpPointer->size);
strncpy (lump_p->name, filelumpPointer->name, 8);
if (isSigil)
{
if (strcmp(filelumpPointer->name, "DEMO1") == 0)
strncpy(lump_p->name, "DEMO5", 8);
else if (strcmp(filelumpPointer->name, "DEMO2") == 0)
strncpy(lump_p->name, "DEMO6", 8);
else if (strcmp(filelumpPointer->name, "DEMO3") == 0)
strncpy(lump_p->name, "DEMO7", 8);
else if (strcmp(filelumpPointer->name, "DEMO4") == 0)
strncpy(lump_p->name, "DEMO8", 8);
else if (strcmp(filelumpPointer->name, "TITLEPIC") == 0)
strncpy(lump_p->name, "SIGILPIC", 8);
else if (strcmp(filelumpPointer->name, "CREDIT") == 0)
strncpy(lump_p->name, "SIGILCRD", 8);
else if (strcmp(filelumpPointer->name, "HELP1") == 0)
strncpy(lump_p->name, "SIGILHLP", 8);
else if (strcmp(filelumpPointer->name, "D_INTER") == 0)
strncpy(lump_p->name, "D_INTER5", 8);
else if (strcmp(filelumpPointer->name, "D_INTRO") == 0)
strncpy(lump_p->name, "D_INTRO5", 8);
else
strncpy(lump_p->name, filelumpPointer->name, 8);
}
else
{
strncpy (lump_p->name, filelumpPointer->name, 8);
}
}
}

Expand Down
Loading