diff options
author | Simon Howard | 2010-02-08 21:14:30 +0000 |
---|---|---|
committer | Simon Howard | 2010-02-08 21:14:30 +0000 |
commit | 56412813c70ba44a6f6a74cee5bf460ca6a31402 (patch) | |
tree | 0770e771e2a03defd6668531fe8125afa4a526b8 | |
parent | 08e0b1471b357ae22a632d1752919d973db8983e (diff) | |
download | chocolate-doom-56412813c70ba44a6f6a74cee5bf460ca6a31402.tar.gz chocolate-doom-56412813c70ba44a6f6a74cee5bf460ca6a31402.tar.bz2 chocolate-doom-56412813c70ba44a6f6a74cee5bf460ca6a31402.zip |
Add Heretic implementation of HHE "Text" section, add DEH_String()
around appropriate strings to allow string replacements.
Subversion-branch: /branches/raven-branch
Subversion-revision: 1867
-rw-r--r-- | src/heretic/Makefile.am | 1 | ||||
-rw-r--r-- | src/heretic/am_map.c | 7 | ||||
-rw-r--r-- | src/heretic/ct_chat.c | 11 | ||||
-rw-r--r-- | src/heretic/d_main.c | 72 | ||||
-rw-r--r-- | src/heretic/deh_htext.c | 903 | ||||
-rw-r--r-- | src/heretic/deh_htic.c | 6 | ||||
-rw-r--r-- | src/heretic/f_finale.c | 23 | ||||
-rw-r--r-- | src/heretic/g_game.c | 13 | ||||
-rw-r--r-- | src/heretic/in_lude.c | 67 | ||||
-rw-r--r-- | src/heretic/mn_menu.c | 52 | ||||
-rw-r--r-- | src/heretic/p_spec.c | 40 | ||||
-rw-r--r-- | src/heretic/p_switch.c | 5 | ||||
-rw-r--r-- | src/heretic/p_user.c | 3 | ||||
-rw-r--r-- | src/heretic/r_data.c | 38 | ||||
-rw-r--r-- | src/heretic/r_draw.c | 49 | ||||
-rw-r--r-- | src/heretic/r_plane.c | 3 | ||||
-rw-r--r-- | src/heretic/r_things.c | 14 | ||||
-rw-r--r-- | src/heretic/sb_bar.c | 120 |
18 files changed, 1184 insertions, 243 deletions
diff --git a/src/heretic/Makefile.am b/src/heretic/Makefile.am index 081ca989..e56ee806 100644 --- a/src/heretic/Makefile.am +++ b/src/heretic/Makefile.am @@ -59,6 +59,7 @@ i_ibm.c FEATURE_DEHACKED_SOURCE_FILES = \ deh_ammo.c \ deh_frame.c \ +deh_htext.c \ deh_htic.c \ deh_sound.c \ deh_thing.c \ diff --git a/src/heretic/am_map.c b/src/heretic/am_map.c index 99a8e206..aae30cc9 100644 --- a/src/heretic/am_map.c +++ b/src/heretic/am_map.c @@ -27,6 +27,7 @@ #include <stdio.h> #include "doomdef.h" +#include "deh_str.h" #include "i_video.h" #include "m_controls.h" #include "p_local.h" @@ -408,7 +409,7 @@ void AM_loadPics(void) sprintf(namebuf, "AMMNUM%d", i); marknums[i] = W_CacheLumpName(namebuf, PU_STATIC); }*/ - maplump = W_CacheLumpName("AUTOPAGE", PU_STATIC); + maplump = W_CacheLumpName(DEH_String("AUTOPAGE"), PU_STATIC); } /*void AM_unloadPics(void) @@ -1473,6 +1474,7 @@ void AM_drawCrosshair(int color) void AM_Drawer(void) { + char *level_name; int numepisodes; if (!automapactive) @@ -1505,7 +1507,8 @@ void AM_Drawer(void) if (gameepisode <= numepisodes && gamemap < 10) { - MN_DrTextA(LevelNames[(gameepisode - 1) * 9 + gamemap - 1], 20, 145); + level_name = LevelNames[(gameepisode - 1) * 9 + gamemap - 1]; + MN_DrTextA(DEH_String(level_name), 20, 145); } // I_Update(); // V_MarkRect(f_x, f_y, f_w, f_h); diff --git a/src/heretic/ct_chat.c b/src/heretic/ct_chat.c index 75fa6035..958d1fff 100644 --- a/src/heretic/ct_chat.c +++ b/src/heretic/ct_chat.c @@ -29,6 +29,7 @@ #include <ctype.h> #include "doomdef.h" #include "doomkeys.h" +#include "deh_str.h" #include "p_local.h" #include "s_sound.h" #include "v_video.h" @@ -115,7 +116,7 @@ void CT_Init(void) memset(plr_lastmsg[i], 0, MESSAGESIZE); memset(chat_msg[i], 0, MESSAGESIZE); } - FontABaseLump = W_GetNumForName("FONTA_S") + 1; + FontABaseLump = W_GetNumForName(DEH_String("FONTA_S")) + 1; return; } @@ -300,7 +301,7 @@ void CT_Ticker(void) CT_AddChar(i, 0); // set the end of message character if (numplayers > 2) { - strcpy(plr_lastmsg[i], CT_FromPlrText[i]); + strcpy(plr_lastmsg[i], DEH_String(CT_FromPlrText[i])); strcat(plr_lastmsg[i], chat_msg[i]); } else @@ -320,13 +321,13 @@ void CT_Ticker(void) if (numplayers > 1) { P_SetMessage(&players[consoleplayer], - "-MESSAGE SENT-", true); + DEH_String("-MESSAGE SENT-"), true); S_StartSound(NULL, sfx_chat); } else { P_SetMessage(&players[consoleplayer], - "THERE ARE NO OTHER PLAYERS IN THE GAME!", + DEH_String("THERE ARE NO OTHER PLAYERS IN THE GAME!"), true); S_StartSound(NULL, sfx_chat); } @@ -376,7 +377,7 @@ void CT_Drawer(void) x += patch->width; } } - V_DrawPatch(x, 10, W_CacheLumpName("FONTA59", PU_CACHE)); + V_DrawPatch(x, 10, W_CacheLumpName(DEH_String("FONTA59"), PU_CACHE)); BorderTopRefresh = true; UpdateState |= I_MESSAGES; } diff --git a/src/heretic/d_main.c b/src/heretic/d_main.c index ddcbca20..52e4239f 100644 --- a/src/heretic/d_main.c +++ b/src/heretic/d_main.c @@ -185,12 +185,12 @@ void D_Display(void) { if (!netgame) { - V_DrawPatch(160, viewwindowy + 5, W_CacheLumpName("PAUSED", + V_DrawPatch(160, viewwindowy + 5, W_CacheLumpName(DEH_String("PAUSED"), PU_CACHE)); } else { - V_DrawPatch(160, 70, W_CacheLumpName("PAUSED", PU_CACHE)); + V_DrawPatch(160, 70, W_CacheLumpName(DEH_String("PAUSED"), PU_CACHE)); } } // Handle player messages @@ -316,7 +316,7 @@ void D_PageDrawer(void) V_DrawRawScreen(W_CacheLumpName(pagename, PU_CACHE)); if (demosequence == 1) { - V_DrawPatch(4, 160, W_CacheLumpName("ADVISOR", PU_CACHE)); + V_DrawPatch(4, 160, W_CacheLumpName(DEH_String("ADVISOR"), PU_CACHE)); } UpdateState |= I_FULLSCRN; } @@ -348,45 +348,45 @@ void D_DoAdvanceDemo(void) case 0: pagetic = 210; gamestate = GS_DEMOSCREEN; - pagename = "TITLE"; + pagename = DEH_String("TITLE"); S_StartSong(mus_titl, false); break; case 1: pagetic = 140; gamestate = GS_DEMOSCREEN; - pagename = "TITLE"; + pagename = DEH_String("TITLE"); break; case 2: BorderNeedRefresh = true; UpdateState |= I_FULLSCRN; - G_DeferedPlayDemo("demo1"); + G_DeferedPlayDemo(DEH_String("demo1")); break; case 3: pagetic = 200; gamestate = GS_DEMOSCREEN; - pagename = "CREDIT"; + pagename = DEH_String("CREDIT"); break; case 4: BorderNeedRefresh = true; UpdateState |= I_FULLSCRN; - G_DeferedPlayDemo("demo2"); + G_DeferedPlayDemo(DEH_String("demo2")); break; case 5: pagetic = 200; gamestate = GS_DEMOSCREEN; if (gamemode == shareware) { - pagename = "ORDER"; + pagename = DEH_String("ORDER"); } else { - pagename = "CREDIT"; + pagename = DEH_String("CREDIT"); } break; case 6: BorderNeedRefresh = true; UpdateState |= I_FULLSCRN; - G_DeferedPlayDemo("demo3"); + G_DeferedPlayDemo(DEH_String("demo3")); break; } } @@ -639,7 +639,7 @@ void initStartup(void) // Blit main screen textScreen = TXT_GetScreenData(); - loading = W_CacheLumpName("LOADING", PU_CACHE); + loading = W_CacheLumpName(DEH_String("LOADING"), PU_CACHE); memcpy(textScreen, loading, 4000); // Print version string @@ -699,7 +699,7 @@ void tprintf(char *msg, int initflag) // haleyjd: moved up, removed WATCOMC code void CleanExit(void) { - printf("Exited from HERETIC.\n"); + printf(DEH_String("Exited from HERETIC.\n")); exit(1); } @@ -783,7 +783,7 @@ static void D_Endoom(void) return; } - endoom_data = W_CacheLumpName("ENDTEXT", PU_STATIC); + endoom_data = W_CacheLumpName(DEH_String("ENDTEXT"), PU_STATIC); I_Endoom(endoom_data); } @@ -848,7 +848,7 @@ void D_DoomMain(void) // // init subsystems // - printf("V_Init: allocate screens.\n"); + printf(DEH_String("V_Init: allocate screens.\n")); V_Init(); // Check for -CDROM @@ -873,7 +873,7 @@ void D_DoomMain(void) if (cdrom) { - M_SetConfigDir("c:\\heretic.cd\\"); + M_SetConfigDir(DEH_String("c:\\heretic.cd")); } else { @@ -881,14 +881,14 @@ void D_DoomMain(void) } // Load defaults before initing other systems - printf("M_LoadDefaults: Load system defaults.\n"); + printf(DEH_String("M_LoadDefaults: Load system defaults.\n")); D_BindVariables(); M_SetConfigFilenames("heretic.cfg", PROGRAM_PREFIX "heretic.cfg"); M_LoadDefaults(); I_AtExit(M_SaveDefaults, false); - printf("Z_Init: Init zone memory allocation daemon.\n"); + printf(DEH_String("Z_Init: Init zone memory allocation daemon.\n")); Z_Init(); #ifdef FEATURE_DEHACKED @@ -896,7 +896,7 @@ void D_DoomMain(void) DEH_Init(); #endif - printf("W_Init: Init WADfiles.\n"); + printf(DEH_String("W_Init: Init WADfiles.\n")); iwadfile = D_FindIWAD(IWAD_MASK_HERETIC, &gamemission); @@ -933,12 +933,12 @@ void D_DoomMain(void) } if (p && p < myargc - 1) { - sprintf(file, "%s.lmp", myargv[p + 1]); + sprintf(file, DEH_String("%s.lmp"), myargv[p + 1]); D_AddFile(file); - printf("Playing demo %s.lmp.\n", myargv[p + 1]); + printf(DEH_String("Playing demo %s.lmp.\n"), myargv[p + 1]); } - if (W_CheckNumForName("E2M1") == -1) + if (W_CheckNumForName(DEH_String("E2M1")) == -1) { gamemode = shareware; gamedescription = "Heretic (shareware)"; @@ -966,54 +966,54 @@ void D_DoomMain(void) // smsg[0] = 0; if (deathmatch) - status("DeathMatch..."); + status(DEH_String("DeathMatch...")); if (nomonsters) - status("No Monsters..."); + status(DEH_String("No Monsters...")); if (respawnparm) - status("Respawning..."); + status(DEH_String("Respawning...")); if (autostart) { char temp[64]; - sprintf(temp, "Warp to Episode %d, Map %d, Skill %d ", + sprintf(temp, DEH_String("Warp to Episode %d, Map %d, Skill %d "), startepisode, startmap, startskill + 1); status(temp); } wadprintf(); // print the added wadfiles - tprintf("MN_Init: Init menu system.\n", 1); + tprintf(DEH_String("MN_Init: Init menu system.\n"), 1); MN_Init(); CT_Init(); - tprintf("R_Init: Init Heretic refresh daemon.", 1); - hprintf("Loading graphics"); + tprintf(DEH_String("R_Init: Init Heretic refresh daemon."), 1); + hprintf(DEH_String("Loading graphics")); R_Init(); tprintf("\n", 0); - tprintf("P_Init: Init Playloop state.\n", 1); - hprintf("Init game engine."); + tprintf(DEH_String("P_Init: Init Playloop state.\n"), 1); + hprintf(DEH_String("Init game engine.")); P_Init(); IncThermo(); - tprintf("I_Init: Setting up machine state.\n", 1); + tprintf(DEH_String("I_Init: Setting up machine state.\n"), 1); I_CheckIsScreensaver(); I_InitTimer(); I_InitJoystick(); IncThermo(); - tprintf("S_Init: Setting up sound.\n", 1); + tprintf(DEH_String("S_Init: Setting up sound.\n"), 1); S_Init(); //IO_StartupTimer(); S_Start(); - tprintf("D_CheckNetGame: Checking network game status.\n", 1); - hprintf("Checking network game status."); + tprintf(DEH_String("D_CheckNetGame: Checking network game status.\n"), 1); + hprintf(DEH_String("Checking network game status.")); D_CheckNetGame(); IncThermo(); // haleyjd: removed WATCOMC - tprintf("SB_Init: Loading patches.\n", 1); + tprintf(DEH_String("SB_Init: Loading patches.\n"), 1); SB_Init(); IncThermo(); diff --git a/src/heretic/deh_htext.c b/src/heretic/deh_htext.c new file mode 100644 index 00000000..9075e610 --- /dev/null +++ b/src/heretic/deh_htext.c @@ -0,0 +1,903 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 2005-2010 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +//----------------------------------------------------------------------------- +// +// Parses Text substitution sections in dehacked files +// +//----------------------------------------------------------------------------- + +#include <stdio.h> +#include <string.h> + +#include "doomtype.h" +#include "dstrings.h" + +#include "z_zone.h" + +#include "deh_defs.h" +#include "deh_io.h" +#include "deh_main.h" + +// +// Ok, Greg, the action pointers thing was bad enough, but this really +// takes the biscuit. Why does HHE's text replacement address strings +// by offset??!! The dehacked way was much nicer, why change it? +// +// Anyway, this is the Heretic 1.0 string table, which can be seen in +// HHE. This is the string and its offset from the start of the +// text section. Not all the strings are here; this is a redacted list +// that contains just the strings we support. +// + +static const struct +{ + unsigned int offset; + char *string; +} +string_table[] = +{ + { 0, NULL }, + { 4, NULL }, + { 64, NULL }, + { 104, NULL }, + { 160, NULL }, + { 200, NULL }, + { 220, NULL }, + { 228, "PLAYPAL" }, + { 236, NULL }, + { 244, NULL }, + { 252, NULL }, + { 272, NULL }, + { 288, NULL }, + { 296, NULL }, + { 316, NULL }, + { 332, NULL }, + { 372, NULL }, + { 436, NULL }, + { 504, NULL }, + { 536, NULL }, + { 544, NULL }, + { 560, NULL }, + { 576, NULL }, + { 584, "ENDTEXT" }, + { 592, NULL }, + { 612, NULL }, + { 640, NULL }, + { 664, NULL }, + { 712, NULL }, + { 744, NULL }, + { 764, NULL }, + { 808, NULL }, + { 820, NULL }, + { 828, NULL }, + { 840, NULL }, + { 876, NULL }, + { 884, NULL }, + { 908, NULL }, + { 952, NULL }, + { 992, NULL }, + { 1028, NULL }, + { 1036, NULL }, + { 1048, NULL }, + { 1088, NULL }, + { 1128, NULL }, + { 1160, NULL }, + { 1192, NULL }, + { 1212, NULL }, + { 1240, "E1M1: THE DOCKS" }, + { 1260, "E1M2: THE DUNGEONS" }, + { 1280, "E1M3: THE GATEHOUSE" }, + { 1304, "E1M4: THE GUARD TOWER" }, + { 1328, "E1M5: THE CITADEL" }, + { 1348, "E1M6: THE CATHEDRAL" }, + { 1372, "E1M7: THE CRYPTS" }, + { 1392, "E1M8: HELL'S MAW" }, + { 1412, "E1M9: THE GRAVEYARD" }, + { 1436, "E2M1: THE CRATER" }, + { 1456, "E2M2: THE LAVA PITS" }, + { 1480, "E2M3: THE RIVER OF FIRE" }, + { 1508, "E2M4: THE ICE GROTTO" }, + { 1532, "E2M5: THE CATACOMBS" }, + { 1556, "E2M6: THE LABYRINTH" }, + { 1580, "E2M7: THE GREAT HALL" }, + { 1604, "E2M8: THE PORTALS OF CHAOS" }, + { 1632, "E2M9: THE GLACIER" }, + { 1652, "E3M1: THE STOREHOUSE" }, + { 1676, "E3M2: THE CESSPOOL" }, + { 1696, "E3M3: THE CONFLUENCE" }, + { 1720, "E3M4: THE AZURE FORTRESS" }, + { 1748, "E3M5: THE OPHIDIAN LAIR" }, + { 1776, "E3M6: THE HALLS OF FEAR" }, + { 1804, "E3M7: THE CHASM" }, + { 1824, "E3M8: D'SPARIL'S KEEP" }, + { 1848, "E3M9: THE AQUIFER" }, + { 1868, "AUTOPAGE" }, + { 1880, "FOLLOW MODE ON" }, + { 1896, "FOLLOW MODE OFF" }, + { 1912, "GREEN: " }, + { 1936, "YELLOW: " }, + { 1948, "RED: " }, + { 1956, "BLUE: " }, + { 1964, "FONTA_S" }, + { 1972, "-MESSAGE SENT-" }, + { 1988, "THERE ARE NO OTHER PLAYERS IN THE GAME!" }, + { 2028, "FONTA59" }, + { 2036, "PAUSED" }, + { 2044, NULL }, + { 2056, NULL }, + { 2072, "ADVISOR" }, + { 2080, "TITLE" }, + { 2088, "demo1" }, + { 2096, "CREDIT" }, + { 2104, "demo2" }, + { 2112, "ORDER" }, + { 2120, "demo3" }, + { 2128, NULL }, + { 2140, NULL }, + { 2168, "hticsav%c.hsg" }, + { 2184, "heretic.wad" }, + { 2196, NULL }, + { 2212, NULL }, + { 2228, NULL }, + { 2240, "heretic.cfg" }, + { 2252, NULL }, + { 2264, NULL }, + { 2284, NULL }, + { 2304, "Exited from HERETIC.\n" }, + { 2328, NULL }, + { 2340, NULL }, + { 2352, NULL }, + { 2364, NULL }, + { 2372, NULL }, + { 2388, NULL }, + { 2404, NULL }, + { 2412, "c:\\heretic.cd" }, + { 2428, NULL }, + { 2436, NULL }, + { 2444, NULL }, + { 2464, NULL }, + { 2496, NULL }, + { 2508, NULL }, + { 2520, NULL }, + { 2528, "Playing demo %s.lmp.\n" }, + { 2552, NULL }, + { 2564, NULL }, + { 2572, NULL }, + { 2584, NULL }, + { 2592, "V_Init: allocate screens.\n" }, + { 2620, "M_LoadDefaults: Load system defaults.\n" }, + { 2660, "Z_Init: Init zone memory allocation daemon.\n" }, + { 2708, "W_Init: Init WADfiles.\n" }, + { 2732, "E2M1" }, + { 2740, "LOADING" }, + { 2748, "DeathMatch..." }, + { 2764, "No Monsters..." }, + { 2780, "Respawning..." }, + { 2796, "Warp to Episode %d, Map %d, Skill %d " }, + { 2836, "MN_Init: Init menu system.\n" }, + { 2864, "R_Init: Init Heretic refresh daemon." }, + { 2904, "Loading graphics" }, + { 2924, "P_Init: Init Playloop state." }, + { 2956, "Init game engine." }, + { 2976, "I_Init: Setting up machine state.\n" }, + { 3012, "D_CheckNetGame: Checking network game status.\n" }, + { 3060, "Checking network game status." }, + { 3092, "SB_Init: Loading patches.\n" }, + { 3120, NULL }, + { 3128, NULL }, + { 3140, NULL }, + { 3184, NULL }, + { 3220, NULL }, + { 3256, NULL }, + { 3280, NULL }, + { 3304, NULL }, + { 3320, NULL }, + { 3352, "PLAYER 1 HAS LEFT THE GAME" }, + { 3380, NULL }, + { 3432, NULL }, + { 3464, NULL }, + { 3508, NULL }, + { 3548, NULL }, + { 3600, NULL }, + { 3624, NULL }, + { 3664, NULL }, + { 3696, NULL }, + { 3736, "NET GAME" }, + { 3748, "SAVE GAME" }, + { 3760, "Only %i deathmatch spots, 4 required" }, + { 3800, "version %i" }, + { 3812, NULL }, + { 3828, NULL }, + { 3856, NULL }, + { 3872, NULL }, + { 3896, "GAME SAVED" }, + { 3908, "SKY1" }, + { 3916, "SKY2" }, + { 3924, "SKY3" }, + { 3932, NULL }, + { 3940, NULL }, + { 3976, NULL }, + { 3996, NULL }, + { 4016, E1TEXT }, + { 4536, E2TEXT }, + { 5068, E3TEXT }, + { 5632, "FLOOR25" }, + { 5640, "FLATHUH1" }, + { 5652, "FLTWAWA2" }, + { 5664, "FONTA_S" }, + { 5672, "FINAL1" }, + { 5680, "FINAL2" }, + { 5688, "E2PAL" }, + { 5696, "E2END" }, + { 5704, "PLAYPAL" }, + { 5712, "ORDER" }, + { 5720, "IMPX" }, + { 5728, "ACLO" }, + { 5736, "PTN1" }, + { 5744, "SHLD" }, + { 5752, "SHD2" }, + { 5760, "BAGH" }, + { 5768, "SPMP" }, + { 5776, "INVS" }, + { 5784, "PTN2" }, + { 5792, "SOAR" }, + { 5800, "INVU" }, + { 5808, "PWBK" }, + { 5816, "EGGC" }, + { 5824, "EGGM" }, + { 5832, "FX01" }, + { 5840, "SPHL" }, + { 5848, "TRCH" }, + { 5856, "FBMB" }, + { 5864, "XPL1" }, + { 5872, "ATLP" }, + { 5880, "PPOD" }, + { 5888, "AMG1" }, + { 5896, "SPSH" }, + { 5904, "LVAS" }, + { 5912, "SLDG" }, + { 5920, "SKH1" }, + { 5928, "SKH2" }, + { 5936, "SKH3" }, + { 5944, "SKH4" }, + { 5952, "CHDL" }, + { 5960, "SRTC" }, + { 5968, "SMPL" }, + { 5976, "STGS" }, + { 5984, "STGL" }, + { 5992, "STCS" }, + { 6000, "STCL" }, + { 6008, "KFR1" }, + { 6016, "BARL" }, + { 6024, "BRPL" }, + { 6032, "MOS1" }, + { 6040, "MOS2" }, + { 6048, "WTRH" }, + { 6056, "HCOR" }, + { 6064, "KGZ1" }, + { 6072, "KGZB" }, + { 6080, "KGZG" }, + { 6088, "KGZY" }, + { 6096, "VLCO" }, + { 6104, "VFBL" }, + { 6112, "VTFB" }, + { 6120, "SFFI" }, + { 6128, "TGLT" }, + { 6136, "TELE" }, + { 6144, "STFF" }, + { 6152, "PUF3" }, + { 6160, "PUF4" }, + { 6168, "BEAK" }, + { 6176, "WGNT" }, + { 6184, "GAUN" }, + { 6192, "PUF1" }, + { 6200, "WBLS" }, + { 6208, "BLSR" }, + { 6216, "FX18" }, + { 6224, "FX17" }, + { 6232, "WMCE" }, + { 6240, "MACE" }, + { 6248, "FX02" }, + { 6256, "WSKL" }, + { 6264, "HROD" }, + { 6272, "FX00" }, + { 6280, "FX20" }, + { 6288, "FX21" }, + { 6296, "FX22" }, + { 6304, "FX23" }, + { 6312, "GWND" }, + { 6320, "PUF2" }, + { 6328, "WPHX" }, + { 6336, "PHNX" }, + { 6344, "FX04" }, + { 6352, "FX08" }, + { 6360, "FX09" }, + { 6368, "WBOW" }, + { 6376, "CRBW" }, + { 6384, "FX03" }, + { 6392, "BLOD" }, + { 6400, "PLAY" }, + { 6408, "FDTH" }, + { 6416, "BSKL" }, + { 6424, "CHKN" }, + { 6432, "MUMM" }, + { 6440, "FX15" }, + { 6448, "BEAS" }, + { 6456, "FRB1" }, + { 6464, "SNKE" }, + { 6472, "SNFX" }, + { 6480, "HEAD" }, + { 6488, "FX05" }, + { 6496, "FX06" }, + { 6504, "FX07" }, + { 6512, "CLNK" }, + { 6520, "WZRD" }, + { 6528, "FX11" }, + { 6536, "FX10" }, + { 6544, "KNIG" }, + { 6552, "SPAX" }, + { 6560, "RAXE" }, + { 6568, "SRCR" }, + { 6576, "FX14" }, + { 6584, "SOR2" }, + { 6592, "SDTH" }, + { 6600, "FX16" }, + { 6608, "MNTR" }, + { 6616, "FX12" }, + { 6624, "FX13" }, + { 6632, "AKYY" }, + { 6640, "BKYY" }, + { 6648, "CKYY" }, + { 6656, "AMG2" }, + { 6664, "AMM1" }, + { 6672, "AMM2" }, + { 6680, "AMC1" }, + { 6688, "AMC2" }, + { 6696, "AMS1" }, + { 6704, "AMS2" }, + { 6712, "AMP1" }, + { 6720, "AMP2" }, + { 6728, "AMB1" }, + { 6736, "AMB2" }, + { 6768, "PLAYPAL" }, + { 6776, "MAPE1" }, + { 6784, "MAPE2" }, + { 6792, "MAPE3" }, + { 6800, "IN_X" }, + { 6808, "IN_YAH" }, + { 6816, "FONTB16" }, + { 6824, "FONTB_S" }, + { 6832, "FONTB13" }, + { 6840, "FONTB15" }, + { 6848, "FONTB05" }, + { 6856, "FACEA0" }, + { 6864, "FACEB0" }, + { 6872, NULL }, + { 6896, NULL }, + { 6940, "FLOOR16" }, + { 6948, "FINISHED" }, + { 6960, "NOW ENTERING:" }, + { 6976, "KILLS" }, + { 6984, "ITEMS" }, + { 6992, "SECRETS" }, + { 7000, "TIME" }, + { 7008, "BONUS" }, + { 7016, "SECRET" }, + { 7024, "TOTAL" }, + { 7032, "VICTIMS" }, + { 7044, "NEW GAME" }, + { 7056, "OPTIONS" }, + { 7064, "GAME FILES" }, + { 7076, "INFO" }, + { 7084, "QUIT GAME" }, + { 7096, "CITY OF THE DAMNED" }, + { 7116, "HELL'S MAW" }, + { 7128, "THE DOME OF D'SPARIL" }, + { 7152, "LOAD GAME" }, + { 7164, "SAVE GAME" }, + { 7176, "THOU NEEDETH A WET-NURSE" }, + { 7204, "YELLOWBELLIES-R-US" }, + { 7224, "BRINGEST THEM ONETH" }, + { 7244, "THOU ART A SMITE-MEISTER" }, + { 7272, "BLACK PLAGUE POSSESSES THEE" }, + { 7300, "END GAME" }, + { 7312, "MESSAGES : " }, + { 7324, "MOUSE SENSITIVITY" }, + { 7344, "MORE..." }, + { 7352, "SCREEN SIZE" }, + { 7364, "SFX VOLUME" }, + { 7376, "MUSIC VOLUME" }, + { 7392, "M_SKL00" }, + { 7400, "FONTA_S" }, + { 7408, "FONTB_S" }, + { 7416, "ARE YOU SURE YOU WANT TO QUIT?" }, + { 7448, "ARE YOU SURE YOU WANT TO END THE GAME?" }, + { 7488, "DO YOU WANT TO QUICKSAVE THE GAME NAMED" }, + { 7528, "DO YOU WANT TO QUICKLOAD THE GAME NAMED" }, + { 7572, "M_SLCTR1" }, + { 7584, "M_SLCTR2" }, + { 7596, "M_HTIC" }, + { 7604, NULL }, + { 7632, "hticsav%d.hsg" }, + { 7652, "M_FSLOT" }, + { 7668, "MESSAGES ON" }, + { 7680, "MESSAGES OFF" }, + { 7696, "YOU CAN'T START A NEW GAME FROM WITHIN A NETGAME!" }, + { 7748, "ONLY AVAILABLE IN THE REGISTERED VERSION" }, + { 7792, "PLAYPAL" }, + { 7800, "QUICKSAVING...." }, + { 7816, "QUICKLOADING...." }, + { 7836, "CHOOSE A QUICKSAVE SLOT" }, + { 7860, "CHOOSE A QUICKLOAD SLOT" }, + { 7884, "TITLE" }, + { 7892, "M_SLDLT" }, + { 7900, "M_SLDMD1" }, + { 7912, "M_SLDMD2" }, + { 7924, "M_SLDRT" }, + { 7932, "M_SLDKB" }, + { 7940, NULL }, + { 7968, NULL }, + { 7992, NULL }, + { 8020, NULL }, + { 8028, NULL }, + { 8056, NULL }, + { 8076, NULL }, + { 8088, NULL }, + { 8104, NULL }, + { 8116, NULL }, + { 8128, NULL }, + { 8136, NULL }, + { 8148, NULL }, + { 8164, NULL }, + { 8180, NULL }, + { 8192, NULL }, + { 8204, NULL }, + { 8220, NULL }, + { 8232, NULL }, + { 8248, NULL }, + { 8264, NULL }, + { 8276, NULL }, + { 8292, NULL }, + { 8308, NULL }, + { 8320, NULL }, + { 8328, NULL }, + { 8340, NULL }, + { 8352, NULL }, + { 8364, NULL }, + { 8376, NULL }, + { 8392, NULL }, + { 8408, NULL }, + { 8424, NULL }, + { 8436, NULL }, + { 8448, NULL }, + { 8460, NULL }, + { 8472, NULL }, + { 8488, NULL }, + { 8504, NULL }, + { 8520, NULL }, + { 8536, NULL }, + { 8548, NULL }, + { 8560, NULL }, + { 8572, NULL }, + { 8584, NULL }, + { 8596, NULL }, + { 8612, NULL }, + { 8624, NULL }, + { 8648, NULL }, + { 8660, NULL }, + { 8668, NULL }, + { 8680, NULL }, + { 8708, NULL }, + { 8720, NULL }, + { 8728, NULL }, + { 8740, NULL }, + { 8752, NULL }, + { 8764, NULL }, + { 8788, NULL }, + { 8800, NULL }, + { 8812, NULL }, + { 8824, NULL }, + { 8848, NULL }, + { 8880, NULL }, + { 8888, NULL }, + { 8896, NULL }, + { 8916, NULL }, + { 8968, "HRTIC00.pcx" }, + { 8980, NULL }, + { 9016, "SCREEN SHOT" }, + { 9028, "YOU NEED A BLUE KEY TO OPEN THIS DOOR" }, + { 9068, "YOU NEED A YELLOW KEY TO OPEN THIS DOOR" }, + { 9108, "YOU NEED A GREEN KEY TO OPEN THIS DOOR" }, + { 9148, NULL }, + { 9172, NULL }, + { 9220, NULL }, + { 9244, "CRYSTAL VIAL" }, + { 9260, "SILVER SHIELD" }, + { 9276, "ENCHANTED SHIELD" }, + { 9296, "BAG OF HOLDING" }, + { 9312, "MAP SCROLL" }, + { 9324, "BLUE KEY" }, + { 9336, "YELLOW KEY" }, + { 9348, "GREEN KEY" }, + { 9360, "QUARTZ FLASK" }, + { 9376, "WINGS OF WRATH" }, + { 9392, "RING OF INVINCIBILITY" }, + { 9416, "TOME OF POWER" }, + { 9432, "SHADOWSPHERE" }, + { 9448, "MORPH OVUM" }, + { 9460, "MYSTIC URN" }, + { 9472, "TORCH" }, + { 9480, "TIME BOMB OF THE ANCIENTS" }, + { 9508, "CHAOS DEVICE" }, + { 9524, "WAND CRYSTAL" }, + { 9540, "CRYSTAL GEODE" }, + { 9556, "MACE SPHERES" }, + { 9572, "PILE OF MACE SPHERES" }, + { 9596, "ETHEREAL ARROWS" }, + { 9612, "QUIVER OF ETHEREAL ARROWS" }, + { 9640, "CLAW ORB" }, + { 9652, "ENERGY ORB" }, + { 9664, "LESSER RUNES" }, + { 9680, "GREATER RUNES" }, + { 9696, "FLAME ORB" }, + { 9708, "INFERNO ORB" }, + { 9720, "FIREMACE" }, + { 9732, "ETHEREAL CROSSBOW" }, + { 9752, "DRAGON CLAW" }, + { 9764, "HELLSTAFF" }, + { 9776, "PHOENIX ROD" }, + { 9788, "GAUNTLETS OF THE NECROMANCER" }, + { 9820, NULL }, + { 9860, NULL }, + { 9892, NULL }, + { 9940, NULL }, + { 9972, NULL }, + { 10012, NULL }, + { 10052, NULL }, + { 10080, NULL }, + { 10088, "FLTWAWA1" }, + { 10100, "FLTFLWW1" }, + { 10112, "FLTLAVA1" }, + { 10124, "FLATHUH1" }, + { 10136, "FLTSLUD1" }, + { 10152, NULL }, + { 10192, NULL }, + { 10236, NULL }, + { 10248, NULL }, + { 10284, NULL }, + { 10320, NULL }, + { 10360, NULL }, + { 10392, NULL }, + { 10444, "PLAYPAL" }, + { 10452, NULL }, + { 10488, NULL }, + { 10508, NULL }, + { 10556, NULL }, + { 10596, "PNAMES" }, + { 10604, "TEXTURE1" }, + { 10616, "TEXTURE2" }, + { 10628, "S_END" }, + { 10636, "S_START" }, + { 10644, NULL }, + { 10684, NULL }, + { 10728, "F_START" }, + { 10736, "F_END" }, + { 10744, "COLORMAP" }, + { 10756, "\nR_InitTextures " }, + { 10776, "R_InitFlats\n" }, + { 10792, "R_InitSpriteLumps " }, + { 10812, NULL }, + { 10844, NULL }, + { 10880, NULL }, + { 10912, NULL }, + { 10948, "TINTTAB" }, + { 10956, NULL }, + { 10984, "FLOOR04" }, + { 10992, "FLAT513" }, + { 11000, "bordt" }, + { 11008, "bordb" }, + { 11016, "bordl" }, + { 11024, "bordr" }, + { 11032, "bordtl" }, + { 11040, "bordtr" }, + { 11048, "bordbr" }, + { 11056, "bordbl" }, + { 11064, "R_InitData " }, + { 11076, "R_InitPointToAngle\n" }, + { 11096, "R_InitTables " }, + { 11112, "R_InitPlanes\n" }, + { 11128, "R_InitLightTables " }, + { 11148, "R_InitSkyMap\n" }, + { 11164, "F_SKY1" }, + { 11172, NULL }, + { 11200, NULL }, + { 11232, NULL }, + { 11272, NULL }, + { 11312, NULL }, + { 11348, NULL }, + { 11380, NULL }, + { 11404, NULL }, + { 11436, NULL }, + { 11492, NULL }, + { 11548, NULL }, + { 11616, NULL }, + { 11684, NULL }, + { 11748, NULL }, + { 11792, NULL }, + { 11840, NULL }, + { 11896, NULL }, + { 11936, NULL }, + { 11980, NULL }, + { 12028, NULL }, + { 12072, NULL }, + { 12120, "LTFACE" }, + { 12128, "RTFACE" }, + { 12136, "BARBACK" }, + { 12144, "INVBAR" }, + { 12152, "CHAIN" }, + { 12160, "STATBAR" }, + { 12168, "LIFEBAR" }, + { 12176, "LIFEGEM2" }, + { 12188, "LIFEGEM0" }, + { 12200, "LTFCTOP" }, + { 12208, "RTFCTOP" }, + { 12216, "ARTIBOX" }, + { 12224, "SELECTBOX" }, + { 12236, "INVGEML1" }, + { 12248, "INVGEML2" }, + { 12260, "INVGEMR1" }, + { 12272, "INVGEMR2" }, + { 12284, "BLACKSQ" }, + { 12292, "ARMCLEAR" }, + { 12304, "CHAINBACK" }, + { 12320, "NEGNUM" }, + { 12328, "FONTB16" }, + { 12336, "SMALLIN0" }, + { 12348, "PLAYPAL" }, + { 12356, "SPINBK0" }, + { 12364, "SPFLY0" }, + { 12372, "LAME" }, + { 12408, "NAME" }, + { 12416, "MO.T" }, + { 12424, "MO.X" }, + { 12432, "MO.Y" }, + { 12448, "DIST" }, + { 12456, "------" }, + { 12472, "GOD1" }, + { 12480, "GOD2" }, + { 12488, "useartia" }, + { 12500, "ykeyicon" }, + { 12512, "gkeyicon" }, + { 12524, "bkeyicon" }, + { 12536, "GOD MODE ON" }, + { 12548, "GOD MODE OFF" }, + { 12564, "NO CLIPPING ON" }, + { 12580, "NO CLIPPING OFF" }, + { 12596, "ALL WEAPONS" }, + { 12608, "POWER OFF" }, + { 12620, "POWER ON" }, + { 12632, "FULL HEALTH" }, + { 12644, "ALL KEYS" }, + { 12656, "SOUND DEBUG ON" }, + { 12672, "SOUND DEBUG OFF" }, + { 12688, "TICKER ON" }, + { 12700, "TICKER OFF" }, + { 12712, "CHOOSE AN ARTIFACT ( A - J )" }, + { 12744, "HOW MANY ( 1 - 9 )" }, + { 12764, "YOU GOT IT" }, + { 12776, "BAD INPUT" }, + { 12788, "LEVEL WARP" }, + { 12800, "CHICKEN OFF" }, + { 12812, "CHICKEN ON" }, + { 12824, "MASSACRE" }, + { 12836, "CHEATER - YOU DON'T DESERVE WEAPONS" }, + { 12872, "TRYING TO CHEAT, EH? NOW YOU DIE!" }, + { 12908, "Bad V_DrawPatch" }, + { 12924, NULL }, + { 12960, NULL }, + { 12968, NULL }, + { 12976, NULL }, + { 13020, NULL }, + { 13048, NULL }, + { 13076, NULL }, + { 13104, NULL }, + { 13136, NULL }, + { 13168, NULL }, + { 13196, NULL }, + { 13240, NULL }, + { 13272, NULL }, + { 13296, NULL }, + { 13312, NULL }, + { 13324, NULL }, + { 13364, NULL }, + { 13408, NULL }, + { 13460, NULL }, + { 13492, NULL }, + { 13516, NULL }, + { 13560, NULL }, + { 13612, NULL }, + { 13664, NULL }, + { 13700, NULL }, + { 13744, NULL }, + { 13796, NULL }, + { 13848, NULL }, + { 13884, NULL }, + { 13940, NULL }, + { 13996, NULL }, + { 14040, NULL }, + { 14084, NULL }, + { 14140, NULL }, + { 14148, NULL }, + { 14164, NULL }, + { 14184, NULL }, + { 14192, NULL }, + { 14212, NULL }, + { 14256, NULL }, + { 14272, NULL }, + { 14284, NULL }, + { 14300, NULL }, + { 14312, NULL }, + { 14324, NULL }, + { 14348, NULL }, + { 14360, NULL }, + { 14372, NULL }, + { 14380, NULL }, + { 14392, NULL }, + { 14432, NULL }, + { 14444, NULL }, + { 14472, NULL }, + { 14496, NULL }, + { 14516, NULL }, + { 14536, NULL }, + { 14548, NULL }, + { 14560, NULL }, + { 14572, NULL }, + { 14580, NULL }, + { 14588, NULL }, + { 14596, NULL }, + { 14604, NULL }, + { 14612, NULL }, + { 14620, NULL }, + { 14636, NULL }, + { 14660, NULL }, + { 14704, NULL }, + { 14748, NULL }, + { 14760, NULL }, + { 14768, NULL }, +}; + +static boolean GetStringByOffset(unsigned int offset, char **result) +{ + int i; + + for (i=0; i<arrlen(string_table); ++i) + { + if (string_table[i].offset == offset) + { + *result = string_table[i].string; + return true; + } + } + + return false; +} + +// Given a string length, find the maximum length of a +// string that can replace it. + +static int MaxStringLength(int len) +{ + // Enough bytes for the string and the NUL terminator + + len += 1; + + // All strings in doom.exe are on 4-byte boundaries, so we may be able + // to support a slightly longer string. + // Extend up to the next 4-byte boundary + + len += (4 - (len % 4)) % 4; + + // Less one for the NUL terminator. + + return len - 1; +} + +static void *DEH_TextStart(deh_context_t *context, char *line) +{ + char *repl_text; + char *orig_text; + int orig_offset, repl_len; + int i; + + if (sscanf(line, "Text %i %i", &orig_offset, &repl_len) != 2) + { + DEH_Warning(context, "Parse error on section start"); + return NULL; + } + + repl_text = Z_Malloc(repl_len + 1, PU_STATIC, NULL); + + // read in the "to" text + + for (i=0; i<repl_len; ++i) + { + int c; + + c = DEH_GetChar(context); + + repl_text[i] = c; + } + repl_text[repl_len] = '\0'; + + // Find the string to replace: + + if (!GetStringByOffset(orig_offset, &orig_text)) + { + DEH_Error(context, "Unknown string offset: %i", orig_offset); + } + + // We don't support all strings, but at least recognise them: + + else if (orig_text == NULL) + { + DEH_Warning(context, "Unsupported string replacement: %i", orig_offset); + } + + // Only allow string replacements that are possible in Vanilla Doom. + // Chocolate Doom is unforgiving! + + else if (!deh_allow_long_strings + && repl_len > MaxStringLength(strlen(orig_text))) + { + DEH_Error(context, "Replacement string is longer than the maximum " + "possible in heretic.exe"); + } + else + { + // Success. + + DEH_AddStringReplacement(orig_text, repl_text); + + return NULL; + } + + // Failure. + + Z_Free(repl_text); + + return NULL; +} + +static void DEH_TextParseLine(deh_context_t *context, char *line, void *tag) +{ + // not used +} + +deh_section_t deh_section_heretic_text = +{ + "Text", + NULL, + DEH_TextStart, + DEH_TextParseLine, + NULL, + NULL, +}; + diff --git a/src/heretic/deh_htic.c b/src/heretic/deh_htic.c index ca1c6d5c..59c426ef 100644 --- a/src/heretic/deh_htic.c +++ b/src/heretic/deh_htic.c @@ -44,8 +44,8 @@ extern deh_section_t deh_section_frame; extern deh_section_t deh_section_pointer; // deh_sound.c extern deh_section_t deh_section_sound; -// deh_text.c: -extern deh_section_t deh_section_text; +// deh_htext.c: +extern deh_section_t deh_section_heretic_text; // deh_thing.c: extern deh_section_t deh_section_thing; // deh_weapon.c: @@ -61,7 +61,7 @@ deh_section_t *deh_section_types[] = &deh_section_frame, // &deh_section_pointer, TODO &deh_section_sound, -// &deh_section_text, TODO + &deh_section_heretic_text, &deh_section_thing, &deh_section_weapon, NULL diff --git a/src/heretic/f_finale.c b/src/heretic/f_finale.c index 03806214..27b33e96 100644 --- a/src/heretic/f_finale.c +++ b/src/heretic/f_finale.c @@ -26,6 +26,7 @@ #include <ctype.h> #include "doomdef.h" +#include "deh_str.h" #include "i_swap.h" #include "i_video.h" #include "s_sound.h" @@ -72,30 +73,30 @@ void F_StartFinale(void) switch (gameepisode) { case 1: - finaleflat = "FLOOR25"; + finaleflat = DEH_String("FLOOR25"); finaletext = e1text; break; case 2: - finaleflat = "FLATHUH1"; + finaleflat = DEH_String("FLATHUH1"); finaletext = e2text; break; case 3: - finaleflat = "FLTWAWA2"; + finaleflat = DEH_String("FLTWAWA2"); finaletext = e3text; break; case 4: - finaleflat = "FLOOR28"; + finaleflat = DEH_String("FLOOR28"); finaletext = e4text; break; case 5: - finaleflat = "FLOOR08"; + finaleflat = DEH_String("FLOOR08"); finaletext = e5text; break; } finalestage = 0; finalecount = 0; - FontABaseLump = W_GetNumForName("FONTA_S") + 1; + FontABaseLump = W_GetNumForName(DEH_String("FONTA_S")) + 1; // S_ChangeMusic(mus_victor, true); S_StartSong(mus_cptd, true); @@ -277,8 +278,8 @@ void F_DemonScroll(void) { return; } - p1 = W_CacheLumpName("FINAL1", PU_LEVEL); - p2 = W_CacheLumpName("FINAL2", PU_LEVEL); + p1 = W_CacheLumpName(DEH_String("FINAL1"), PU_LEVEL); + p2 = W_CacheLumpName(DEH_String("FINAL2"), PU_LEVEL); if (finalecount < 70) { memcpy(I_VideoBuffer, p1, SCREENHEIGHT * SCREENWIDTH); @@ -319,8 +320,8 @@ void F_DrawUnderwater(void) { underwawa = true; memset((byte *) 0xa0000, 0, SCREENWIDTH * SCREENHEIGHT); - I_SetPalette(W_CacheLumpName("E2PAL", PU_CACHE)); - V_DrawRawScreen(W_CacheLumpName("E2END", PU_CACHE)); + I_SetPalette(W_CacheLumpName(DEH_String("E2PAL"), PU_CACHE)); + V_DrawRawScreen(W_CacheLumpName(DEH_String("E2END"), PU_CACHE)); } paused = false; MenuActive = false; @@ -328,7 +329,7 @@ void F_DrawUnderwater(void) break; case 2: - V_DrawRawScreen(W_CacheLumpName("TITLE", PU_CACHE)); + V_DrawRawScreen(W_CacheLumpName(DEH_String("TITLE"), PU_CACHE)); //D_StartTitle(); // go to intro/demo mode. } } diff --git a/src/heretic/g_game.c b/src/heretic/g_game.c index a256b63b..4d1e63c3 100644 --- a/src/heretic/g_game.c +++ b/src/heretic/g_game.c @@ -28,6 +28,7 @@ #include <string.h> #include "doomdef.h" #include "doomkeys.h" +#include "deh_str.h" #include "i_timer.h" #include "i_system.h" #include "m_controls.h" @@ -862,11 +863,11 @@ void G_Ticker(void) { if (netgame) { - strcpy(savedescription, "NET GAME"); + strcpy(savedescription, DEH_String("NET GAME")); } else { - strcpy(savedescription, "SAVE GAME"); + strcpy(savedescription, DEH_String("SAVE GAME")); } } savegameslot = @@ -1320,7 +1321,7 @@ void G_DoLoadGame(void) save_p = savebuffer + SAVESTRINGSIZE; // Skip the description field memset(vcheck, 0, sizeof(vcheck)); - sprintf(vcheck, "version %i", HERETIC_VERSION); + sprintf(vcheck, DEH_String("version %i"), HERETIC_VERSION); if (strcmp((char *) save_p, vcheck) != 0) { // Bad version return; @@ -1449,11 +1450,11 @@ void G_InitNew(skill_t skill, int episode, int map) // Set the sky map if (episode > 5) { - skytexture = R_TextureNumForName("SKY1"); + skytexture = R_TextureNumForName(DEH_String("SKY1")); } else { - skytexture = R_TextureNumForName(skyLumpNames[episode - 1]); + skytexture = R_TextureNumForName(DEH_String(skyLumpNames[episode - 1])); } // @@ -1694,7 +1695,7 @@ void G_DoSaveGame(void) SV_Open(name); SV_Write(description, SAVESTRINGSIZE); memset(verString, 0, sizeof(verString)); - sprintf(verString, "version %i", HERETIC_VERSION); + sprintf(verString, DEH_String("version %i"), HERETIC_VERSION); SV_Write(verString, VERSIONSIZE); SV_WriteByte(gameskill); SV_WriteByte(gameepisode); diff --git a/src/heretic/in_lude.c b/src/heretic/in_lude.c index 33b75956..084cd5c3 100644 --- a/src/heretic/in_lude.c +++ b/src/heretic/in_lude.c @@ -30,6 +30,7 @@ */ #include "doomdef.h" +#include "deh_str.h" #include "s_sound.h" #include "i_system.h" #include "i_video.h" @@ -161,7 +162,7 @@ extern void AM_Stop(void); void IN_Start(void) { - I_SetPalette(W_CacheLumpName("PLAYPAL", PU_CACHE)); + I_SetPalette(W_CacheLumpName(DEH_String("PLAYPAL"), PU_CACHE)); IN_LoadPics(); IN_InitStats(); intermission = true; @@ -308,26 +309,26 @@ static void IN_LoadUnloadPics(void (*callback)(char *lumpname, switch (gameepisode) { case 1: - callback("MAPE1", 0, &patchINTERPIC); + callback(DEH_String("MAPE1"), 0, &patchINTERPIC); break; case 2: - callback("MAPE2", 0, &patchINTERPIC); + callback(DEH_String("MAPE2"), 0, &patchINTERPIC); break; case 3: - callback("MAPE3", 0, &patchINTERPIC); + callback(DEH_String("MAPE3"), 0, &patchINTERPIC); break; default: break; } - callback("IN_X", 0, &patchBEENTHERE); - callback("IN_YAH", 0, &patchGOINGTHERE); - callback("FONTB13", 0, &FontBNegative); + callback(DEH_String("IN_X"), 0, &patchBEENTHERE); + callback(DEH_String("IN_YAH"), 0, &patchGOINGTHERE); + callback(DEH_String("FONTB13"), 0, &FontBNegative); - callback("FONTB15", 0, &FontBSlash); - callback("FONTB05", 0, &FontBPercent); + callback(DEH_String("FONTB15"), 0, &FontBSlash); + callback(DEH_String("FONTB05"), 0, &FontBPercent); - FontBLumpBase = W_GetNumForName("FONTB16"); + FontBLumpBase = W_GetNumForName(DEH_String("FONTB16")); for (i = 0; i < 10; i++) { @@ -355,9 +356,9 @@ static void LoadLumpCallback(char *lumpname, int lumpnum, patch_t **ptr) void IN_LoadPics(void) { - FontBLump = W_GetNumForName("FONTB_S") + 1; - patchFaceOkayBase = W_GetNumForName("FACEA0"); - patchFaceDeadBase = W_GetNumForName("FACEB0"); + FontBLump = W_GetNumForName(DEH_String("FONTB_S")) + 1; + patchFaceOkayBase = W_GetNumForName(DEH_String("FACEA0")); + patchFaceDeadBase = W_GetNumForName(DEH_String("FACEB0")); IN_LoadUnloadPics(LoadLumpCallback); } @@ -580,7 +581,7 @@ void IN_DrawStatBack(void) byte *src; byte *dest; - src = W_CacheLumpName("FLOOR16", PU_CACHE); + src = W_CacheLumpName(DEH_String("FLOOR16"), PU_CACHE); dest = I_VideoBuffer; for (y = 0; y < SCREENHEIGHT; y++) @@ -612,8 +613,8 @@ void IN_DrawOldLevel(void) x = 160 - MN_TextBWidth(LevelNames[(gameepisode - 1) * 9 + prevmap - 1] + 7) / 2; IN_DrTextB(LevelNames[(gameepisode - 1) * 9 + prevmap - 1] + 7, x, 3); - x = 160 - MN_TextAWidth("FINISHED") / 2; - MN_DrTextA("FINISHED", x, 25); + x = 160 - MN_TextAWidth(DEH_String("FINISHED")) / 2; + MN_DrTextA(DEH_String("FINISHED"), x, 25); if (prevmap == 9) { @@ -660,8 +661,8 @@ void IN_DrawYAH(void) int i; int x; - x = 160 - MN_TextAWidth("NOW ENTERING:") / 2; - MN_DrTextA("NOW ENTERING:", x, 10); + x = 160 - MN_TextAWidth(DEH_String("NOW ENTERING:")) / 2; + MN_DrTextA(DEH_String("NOW ENTERING:"), x, 10); x = 160 - MN_TextBWidth(LevelNames[(gameepisode - 1) * 9 + gamemap - 1] + 7) / 2; IN_DrTextB(LevelNames[(gameepisode - 1) * 9 + gamemap - 1] + 7, x, 20); @@ -698,15 +699,15 @@ void IN_DrawSingleStats(void) int x; static int sounds; - IN_DrTextB("KILLS", 50, 65); - IN_DrTextB("ITEMS", 50, 90); - IN_DrTextB("SECRETS", 50, 115); + IN_DrTextB(DEH_String("KILLS"), 50, 65); + IN_DrTextB(DEH_String("ITEMS"), 50, 90); + IN_DrTextB(DEH_String("SECRETS"), 50, 115); x = 160 - MN_TextBWidth(LevelNames[(gameepisode - 1) * 9 + prevmap - 1] + 7) / 2; IN_DrTextB(LevelNames[(gameepisode - 1) * 9 + prevmap - 1] + 7, x, 3); - x = 160 - MN_TextAWidth("FINISHED") / 2; - MN_DrTextA("FINISHED", x, 25); + x = 160 - MN_TextAWidth(DEH_String("FINISHED")) / 2; + MN_DrTextA(DEH_String("FINISHED"), x, 25); if (intertime < 30) { @@ -757,13 +758,13 @@ void IN_DrawSingleStats(void) if (gamemode != retail || gameepisode <= 3) { - IN_DrTextB("TIME", 85, 160); + IN_DrTextB(DEH_String("TIME"), 85, 160); IN_DrawTime(155, 160, hours, minutes, seconds); } else { - x = 160 - MN_TextAWidth("NOW ENTERING:") / 2; - MN_DrTextA("NOW ENTERING:", x, 160); + x = 160 - MN_TextAWidth(DEH_String("NOW ENTERING:")) / 2; + MN_DrTextA(DEH_String("NOW ENTERING:"), x, 160); x = 160 - MN_TextBWidth(LevelNames[(gameepisode - 1) * 9 + gamemap - 1] + 7) / 2; @@ -787,14 +788,14 @@ void IN_DrawCoopStats(void) static int sounds; - IN_DrTextB("KILLS", 95, 35); - IN_DrTextB("BONUS", 155, 35); - IN_DrTextB("SECRET", 232, 35); + IN_DrTextB(DEH_String("KILLS"), 95, 35); + IN_DrTextB(DEH_String("BONUS"), 155, 35); + IN_DrTextB(DEH_String("SECRET"), 232, 35); x = 160 - MN_TextBWidth(LevelNames[(gameepisode - 1) * 9 + prevmap - 1] + 7) / 2; IN_DrTextB(LevelNames[(gameepisode - 1) * 9 + prevmap - 1] + 7, x, 3); - x = 160 - MN_TextAWidth("FINISHED") / 2; - MN_DrTextA("FINISHED", x, 25); + x = 160 - MN_TextAWidth(DEH_String("FINISHED")) / 2; + MN_DrTextA(DEH_String("FINISHED"), x, 25); ypos = 50; for (i = 0; i < MAXPLAYERS; i++) @@ -845,8 +846,8 @@ void IN_DrawDMStats(void) xpos = 90; ypos = 55; - IN_DrTextB("TOTAL", 265, 30); - MN_DrTextA("VICTIMS", 140, 8); + IN_DrTextB(DEH_String("TOTAL"), 265, 30); + MN_DrTextA(DEH_String("VICTIMS"), 140, 8); for (i = 0; i < 7; i++) { MN_DrTextA(KillersText[i], 10, 80 + 9 * i); diff --git a/src/heretic/mn_menu.c b/src/heretic/mn_menu.c index 33024a96..2b380234 100644 --- a/src/heretic/mn_menu.c +++ b/src/heretic/mn_menu.c @@ -25,6 +25,8 @@ // MN_menu.c #include <ctype.h> + +#include "deh_str.h" #include "doomdef.h" #include "doomkeys.h" #include "i_system.h" @@ -73,7 +75,7 @@ typedef struct { ItemType_t type; char *text; - boolean(*func) (int option); + boolean(*func) (int option); int option; MenuType_t menu; } MenuItem_t; @@ -305,7 +307,7 @@ void MN_Init(void) InitFonts(); MenuActive = false; messageson = true; - SkullBaseLump = W_GetNumForName("M_SKL00"); + SkullBaseLump = W_GetNumForName(DEH_String("M_SKL00")); if (gamemode == retail) { // Add episodes 4 and 5 to the menu @@ -322,8 +324,8 @@ void MN_Init(void) static void InitFonts(void) { - FontABaseLump = W_GetNumForName("FONTA_S") + 1; - FontBBaseLump = W_GetNumForName("FONTB_S") + 1; + FontABaseLump = W_GetNumForName(DEH_String("FONTA_S")) + 1; + FontBBaseLump = W_GetNumForName(DEH_String("FONTB_S")) + 1; } //--------------------------------------------------------------------------- @@ -476,14 +478,16 @@ void MN_Drawer(void) int x; int y; MenuItem_t *item; + char *message; char *selName; if (MenuActive == false) { if (askforquit) { - MN_DrTextA(QuitEndMsg[typeofask - 1], 160 - - MN_TextAWidth(QuitEndMsg[typeofask - 1]) / 2, 80); + message = DEH_String(QuitEndMsg[typeofask - 1]); + + MN_DrTextA(message, 160 - MN_TextAWidth(message) / 2, 80); if (typeofask == 3) { MN_DrTextA(SlotText[quicksave - 1], 160 - @@ -525,13 +529,13 @@ void MN_Drawer(void) { if (item->type != ITT_EMPTY && item->text) { - MN_DrTextB(item->text, x, y); + MN_DrTextB(DEH_String(item->text), x, y); } y += ITEM_HEIGHT; item++; } y = CurrentMenu->y + (CurrentItPos * ITEM_HEIGHT) + SELECTOR_YOFFSET; - selName = MenuTime & 16 ? "M_SLCTR1" : "M_SLCTR2"; + selName = DEH_String(MenuTime & 16 ? "M_SLCTR1" : "M_SLCTR2"); V_DrawPatch(x + SELECTOR_XOFFSET, y, W_CacheLumpName(selName, PU_CACHE)); } @@ -548,7 +552,7 @@ static void DrawMainMenu(void) int frame; frame = (MenuTime / 3) % 18; - V_DrawPatch(88, 0, W_CacheLumpName("M_HTIC", PU_CACHE)); + V_DrawPatch(88, 0, W_CacheLumpName(DEH_String("M_HTIC"), PU_CACHE)); V_DrawPatch(40, 10, W_CacheLumpNum(SkullBaseLump + (17 - frame), PU_CACHE)); V_DrawPatch(232, 10, W_CacheLumpNum(SkullBaseLump + frame, PU_CACHE)); @@ -597,7 +601,11 @@ static void DrawFilesMenu(void) static void DrawLoadMenu(void) { - MN_DrTextB("LOAD GAME", 160 - MN_TextBWidth("LOAD GAME") / 2, 10); + char *title; + + title = DEH_String("LOAD GAME"); + + MN_DrTextB(title, 160 - MN_TextBWidth(title) / 2, 10); if (!slottextloaded) { MN_LoadSlotText(); @@ -613,7 +621,11 @@ static void DrawLoadMenu(void) static void DrawSaveMenu(void) { - MN_DrTextB("SAVE GAME", 160 - MN_TextBWidth("SAVE GAME") / 2, 10); + char *title; + + title = DEH_String("SAVE GAME"); + + MN_DrTextB(title, 160 - MN_TextBWidth(title) / 2, 10); if (!slottextloaded) { MN_LoadSlotText(); @@ -675,7 +687,7 @@ static void DrawFileSlots(Menu_t * menu) y = menu->y; for (i = 0; i < 6; i++) { - V_DrawPatch(x, y, W_CacheLumpName("M_FSLOT", PU_CACHE)); + V_DrawPatch(x, y, W_CacheLumpName(DEH_String("M_FSLOT"), PU_CACHE)); if (SlotStatus[i]) { MN_DrTextA(SlotText[i], x + 5, y + 5); @@ -796,11 +808,11 @@ static boolean SCMessages(int option) messageson ^= 1; if (messageson) { - P_SetMessage(&players[consoleplayer], "MESSAGES ON", true); + P_SetMessage(&players[consoleplayer], DEH_String("MESSAGES ON"), true); } else { - P_SetMessage(&players[consoleplayer], "MESSAGES OFF", true); + P_SetMessage(&players[consoleplayer], DEH_String("MESSAGES OFF"), true); } S_StartSound(NULL, sfx_chat); return true; @@ -1460,7 +1472,7 @@ boolean MN_Responder(event_t * event) if (CurrentMenu->items[i].text) { if (toupper(charTyped) - == toupper(CurrentMenu->items[i].text[0])) + == toupper(DEH_String(CurrentMenu->items[i].text)[0])) { CurrentItPos = i; return (true); @@ -1628,13 +1640,13 @@ static void DrawSlider(Menu_t * menu, int item, int width, int slot) x = menu->x + 24; y = menu->y + 2 + (item * ITEM_HEIGHT); - V_DrawPatch(x - 32, y, W_CacheLumpName("M_SLDLT", PU_CACHE)); + V_DrawPatch(x - 32, y, W_CacheLumpName(DEH_String("M_SLDLT"), PU_CACHE)); for (x2 = x, count = width; count--; x2 += 8) { - V_DrawPatch(x2, y, W_CacheLumpName(count & 1 ? "M_SLDMD1" - : "M_SLDMD2", PU_CACHE)); + V_DrawPatch(x2, y, W_CacheLumpName(DEH_String(count & 1 ? "M_SLDMD1" + : "M_SLDMD2"), PU_CACHE)); } - V_DrawPatch(x2, y, W_CacheLumpName("M_SLDRT", PU_CACHE)); + V_DrawPatch(x2, y, W_CacheLumpName(DEH_String("M_SLDRT"), PU_CACHE)); V_DrawPatch(x + 4 + slot * 8, y + 7, - W_CacheLumpName("M_SLDKB", PU_CACHE)); + W_CacheLumpName(DEH_String("M_SLDKB"), PU_CACHE)); } diff --git a/src/heretic/p_spec.c b/src/heretic/p_spec.c index 6227237b..49c067fa 100644 --- a/src/heretic/p_spec.c +++ b/src/heretic/p_spec.c @@ -25,6 +25,7 @@ // P_Spec.c #include "doomdef.h" +#include "deh_str.h" #include "i_system.h" #include "i_timer.h" #include "m_random.h" @@ -204,18 +205,12 @@ struct int type; } TerrainTypeDefs[] = { - { - "FLTWAWA1", FLOOR_WATER}, - { - "FLTFLWW1", FLOOR_WATER}, - { - "FLTLAVA1", FLOOR_LAVA}, - { - "FLATHUH1", FLOOR_LAVA}, - { - "FLTSLUD1", FLOOR_SLUDGE}, - { - "END", -1} + { "FLTWAWA1", FLOOR_WATER }, + { "FLTFLWW1", FLOOR_WATER }, + { "FLTLAVA1", FLOOR_LAVA }, + { "FLATHUH1", FLOOR_LAVA }, + { "FLTSLUD1", FLOOR_SLUDGE }, + { "END", -1 } }; mobj_t LavaInflictor; @@ -266,35 +261,40 @@ void P_InitTerrainTypes(void) void P_InitPicAnims(void) { + char *startname; + char *endname; int i; lastanim = anims; for (i = 0; animdefs[i].istexture != -1; i++) { + startname = DEH_String(animdefs[i].startname); + endname = DEH_String(animdefs[i].endname); + if (animdefs[i].istexture) { // Texture animation - if (R_CheckTextureNumForName(animdefs[i].startname) == -1) + if (R_CheckTextureNumForName(startname) == -1) { // Texture doesn't exist continue; } - lastanim->picnum = R_TextureNumForName(animdefs[i].endname); - lastanim->basepic = R_TextureNumForName(animdefs[i].startname); + lastanim->picnum = R_TextureNumForName(endname); + lastanim->basepic = R_TextureNumForName(startname); } else { // Flat animation - if (W_CheckNumForName(animdefs[i].startname) == -1) + if (W_CheckNumForName(startname) == -1) { // Flat doesn't exist continue; } - lastanim->picnum = R_FlatNumForName(animdefs[i].endname); - lastanim->basepic = R_FlatNumForName(animdefs[i].startname); + lastanim->picnum = R_FlatNumForName(endname); + lastanim->basepic = R_FlatNumForName(startname); } lastanim->istexture = animdefs[i].istexture; lastanim->numpics = lastanim->picnum - lastanim->basepic + 1; if (lastanim->numpics < 2) { I_Error("P_InitPicAnims: bad cycle from %s to %s", - animdefs[i].startname, animdefs[i].endname); + startname, endname); } lastanim->speed = animdefs[i].speed; lastanim++; @@ -1132,7 +1132,7 @@ void P_SpawnSpecials(void) int episode; episode = 1; - if (W_CheckNumForName("texture2") >= 0) + if (W_CheckNumForName(DEH_String("texture2")) >= 0) episode = 2; // diff --git a/src/heretic/p_switch.c b/src/heretic/p_switch.c index cef6a74b..2ec758b6 100644 --- a/src/heretic/p_switch.c +++ b/src/heretic/p_switch.c @@ -23,6 +23,7 @@ //----------------------------------------------------------------------------- #include "doomdef.h" +#include "deh_str.h" #include "i_system.h" #include "p_local.h" #include "s_sound.h" @@ -129,9 +130,9 @@ void P_InitSwitchList(void) if (alphSwitchList[i].episode <= episode) { switchlist[index++] = - R_TextureNumForName(alphSwitchList[i].name1); + R_TextureNumForName(DEH_String(alphSwitchList[i].name1)); switchlist[index++] = - R_TextureNumForName(alphSwitchList[i].name2); + R_TextureNumForName(DEH_String(alphSwitchList[i].name2)); } } } diff --git a/src/heretic/p_user.c b/src/heretic/p_user.c index 63368bab..16dbed49 100644 --- a/src/heretic/p_user.c +++ b/src/heretic/p_user.c @@ -27,6 +27,7 @@ #include <stdlib.h> #include "doomdef.h" +#include "deh_str.h" #include "m_random.h" #include "p_local.h" #include "s_sound.h" @@ -394,7 +395,7 @@ void P_DeathThink(player_t * player) { if (player == &players[consoleplayer]) { - I_SetPalette((byte *) W_CacheLumpName("PLAYPAL", PU_CACHE)); + I_SetPalette(W_CacheLumpName(DEH_String("PLAYPAL"), PU_CACHE)); inv_ptr = 0; curpos = 0; newtorch = 0; diff --git a/src/heretic/r_data.c b/src/heretic/r_data.c index ee005248..b55e6dfc 100644 --- a/src/heretic/r_data.c +++ b/src/heretic/r_data.c @@ -316,12 +316,17 @@ void R_InitTextures(void) int offset, maxoff, maxoff2; int numtextures1, numtextures2; int *directory; + char *texture1, *texture2, *pnames; + + texture1 = DEH_String("TEXTURE1"); + texture2 = DEH_String("TEXTURE2"); + pnames = DEH_String("PNAMES"); // // load the patch names from pnames.lmp // name[8] = 0; - names = W_CacheLumpName("PNAMES", PU_STATIC); + names = W_CacheLumpName(pnames, PU_STATIC); nummappatches = LONG(*((int *) names)); name_p = names + 4; patchlookup = Z_Malloc(nummappatches * sizeof(*patchlookup), PU_STATIC, NULL); @@ -330,21 +335,21 @@ void R_InitTextures(void) strncpy(name, name_p + i * 8, 8); patchlookup[i] = W_CheckNumForName(name); } - W_ReleaseLumpName("PNAMES"); + W_ReleaseLumpName(pnames); // // load the map texture definitions from textures.lmp // - maptex = maptex1 = W_CacheLumpName("TEXTURE1", PU_STATIC); + maptex = maptex1 = W_CacheLumpName(texture1, PU_STATIC); numtextures1 = LONG(*maptex); - maxoff = W_LumpLength(W_GetNumForName("TEXTURE1")); + maxoff = W_LumpLength(W_GetNumForName(texture1)); directory = maptex + 1; - if (W_CheckNumForName("TEXTURE2") != -1) + if (W_CheckNumForName(texture2) != -1) { - maptex2 = W_CacheLumpName("TEXTURE2", PU_STATIC); + maptex2 = W_CacheLumpName(texture2, PU_STATIC); numtextures2 = LONG(*maptex2); - maxoff2 = W_LumpLength(W_GetNumForName("TEXTURE2")); + maxoff2 = W_LumpLength(W_GetNumForName(texture2)); } else { @@ -358,8 +363,11 @@ void R_InitTextures(void) // Init the startup thermometer at this point... // { + int start, end; int spramount; - spramount = W_GetNumForName("S_END") - W_GetNumForName("S_START") + 1; + start = W_GetNumForName(DEH_String("S_START")); + end = W_GetNumForName(DEH_String("S_END")); + spramount = end - start + 1; InitThermo(spramount + numtextures + 6); } @@ -427,10 +435,10 @@ void R_InitTextures(void) Z_Free(patchlookup); - W_ReleaseLumpName("TEXTURE1"); + W_ReleaseLumpName(texture1); if (maptex2) { - W_ReleaseLumpName("TEXTURE2"); + W_ReleaseLumpName(texture2); } // @@ -463,8 +471,8 @@ void R_InitFlats(void) { int i; - firstflat = W_GetNumForName("F_START") + 1; - lastflat = W_GetNumForName("F_END") - 1; + firstflat = W_GetNumForName(DEH_String("F_START")) + 1; + lastflat = W_GetNumForName(DEH_String("F_END")) - 1; numflats = lastflat - firstflat + 1; // translation table for global animation @@ -489,8 +497,8 @@ void R_InitSpriteLumps(void) int i; patch_t *patch; - firstspritelump = W_GetNumForName("S_START") + 1; - lastspritelump = W_GetNumForName("S_END") - 1; + firstspritelump = W_GetNumForName(DEH_String("S_START")) + 1; + lastspritelump = W_GetNumForName(DEH_String("S_END")) - 1; numspritelumps = lastspritelump - firstspritelump + 1; spritewidth = Z_Malloc(numspritelumps * sizeof(fixed_t), PU_STATIC, 0); spriteoffset = Z_Malloc(numspritelumps * sizeof(fixed_t), PU_STATIC, 0); @@ -527,7 +535,7 @@ void R_InitColormaps(void) // load in the light tables // 256 byte align tables // - lump = W_GetNumForName("COLORMAP"); + lump = W_GetNumForName(DEH_String("COLORMAP")); length = W_LumpLength(lump); colormaps = Z_Malloc(length, PU_STATIC, 0); W_ReadLump(lump, colormaps); diff --git a/src/heretic/r_draw.c b/src/heretic/r_draw.c index 5a20b50a..88653df1 100644 --- a/src/heretic/r_draw.c +++ b/src/heretic/r_draw.c @@ -24,6 +24,7 @@ // R_draw.c #include "doomdef.h" +#include "deh_str.h" #include "r_local.h" #include "i_video.h" #include "v_video.h" @@ -386,11 +387,11 @@ void R_DrawViewBorder(void) if (gamemode == shareware) { - src = W_CacheLumpName("FLOOR04", PU_CACHE); + src = W_CacheLumpName(DEH_String("FLOOR04"), PU_CACHE); } else { - src = W_CacheLumpName("FLAT513", PU_CACHE); + src = W_CacheLumpName(DEH_String("FLAT513"), PU_CACHE); } dest = I_VideoBuffer; @@ -409,24 +410,26 @@ void R_DrawViewBorder(void) } for (x = viewwindowx; x < viewwindowx + viewwidth; x += 16) { - V_DrawPatch(x, viewwindowy - 4, W_CacheLumpName("bordt", PU_CACHE)); - V_DrawPatch(x, viewwindowy + viewheight, W_CacheLumpName("bordb", - PU_CACHE)); + V_DrawPatch(x, viewwindowy - 4, + W_CacheLumpName(DEH_String("bordt"), PU_CACHE)); + V_DrawPatch(x, viewwindowy + viewheight, + W_CacheLumpName(DEH_String("bordb"), PU_CACHE)); } for (y = viewwindowy; y < viewwindowy + viewheight; y += 16) { - V_DrawPatch(viewwindowx - 4, y, W_CacheLumpName("bordl", PU_CACHE)); - V_DrawPatch(viewwindowx + viewwidth, y, W_CacheLumpName("bordr", - PU_CACHE)); + V_DrawPatch(viewwindowx - 4, y, + W_CacheLumpName(DEH_String("bordl"), PU_CACHE)); + V_DrawPatch(viewwindowx + viewwidth, y, + W_CacheLumpName(DEH_String("bordr"), PU_CACHE)); } - V_DrawPatch(viewwindowx - 4, viewwindowy - 4, W_CacheLumpName("bordtl", - PU_CACHE)); + V_DrawPatch(viewwindowx - 4, viewwindowy - 4, + W_CacheLumpName(DEH_String("bordtl"), PU_CACHE)); V_DrawPatch(viewwindowx + viewwidth, viewwindowy - 4, - W_CacheLumpName("bordtr", PU_CACHE)); + W_CacheLumpName(DEH_String("bordtr"), PU_CACHE)); V_DrawPatch(viewwindowx + viewwidth, viewwindowy + viewheight, - W_CacheLumpName("bordbr", PU_CACHE)); + W_CacheLumpName(DEH_String("bordbr"), PU_CACHE)); V_DrawPatch(viewwindowx - 4, viewwindowy + viewheight, - W_CacheLumpName("bordbl", PU_CACHE)); + W_CacheLumpName(DEH_String("bordbl"), PU_CACHE)); } /* @@ -450,11 +453,11 @@ void R_DrawTopBorder(void) if (gamemode == shareware) { - src = W_CacheLumpName("FLOOR04", PU_CACHE); + src = W_CacheLumpName(DEH_String("FLOOR04"), PU_CACHE); } else { - src = W_CacheLumpName("FLAT513", PU_CACHE); + src = W_CacheLumpName(DEH_String("FLAT513"), PU_CACHE); } dest = I_VideoBuffer; @@ -476,20 +479,20 @@ void R_DrawTopBorder(void) for (x = viewwindowx; x < viewwindowx + viewwidth; x += 16) { V_DrawPatch(x, viewwindowy - 4, - W_CacheLumpName("bordt", PU_CACHE)); + W_CacheLumpName(DEH_String("bordt"), PU_CACHE)); } - V_DrawPatch(viewwindowx - 4, viewwindowy, W_CacheLumpName("bordl", - PU_CACHE)); + V_DrawPatch(viewwindowx - 4, viewwindowy, + W_CacheLumpName(DEH_String("bordl"), PU_CACHE)); V_DrawPatch(viewwindowx + viewwidth, viewwindowy, - W_CacheLumpName("bordr", PU_CACHE)); + W_CacheLumpName(DEH_String("bordr"), PU_CACHE)); V_DrawPatch(viewwindowx - 4, viewwindowy + 16, - W_CacheLumpName("bordl", PU_CACHE)); + W_CacheLumpName(DEH_String("bordl"), PU_CACHE)); V_DrawPatch(viewwindowx + viewwidth, viewwindowy + 16, - W_CacheLumpName("bordr", PU_CACHE)); + W_CacheLumpName(DEH_String("bordr"), PU_CACHE)); V_DrawPatch(viewwindowx - 4, viewwindowy - 4, - W_CacheLumpName("bordtl", PU_CACHE)); + W_CacheLumpName(DEH_String("bordtl"), PU_CACHE)); V_DrawPatch(viewwindowx + viewwidth, viewwindowy - 4, - W_CacheLumpName("bordtr", PU_CACHE)); + W_CacheLumpName(DEH_String("bordtr"), PU_CACHE)); } } diff --git a/src/heretic/r_plane.c b/src/heretic/r_plane.c index e35e2931..cc86b118 100644 --- a/src/heretic/r_plane.c +++ b/src/heretic/r_plane.c @@ -25,6 +25,7 @@ #include <stdlib.h> #include "doomdef.h" +#include "deh_str.h" #include "i_system.h" #include "r_local.h" @@ -90,7 +91,7 @@ fixed_t cachedystep[SCREENHEIGHT]; void R_InitSkyMap(void) { - skyflatnum = R_FlatNumForName("F_SKY1"); + skyflatnum = R_FlatNumForName(DEH_String("F_SKY1")); skytexturemid = 200 * FRACUNIT; skyiscale = FRACUNIT; } diff --git a/src/heretic/r_things.c b/src/heretic/r_things.c index 6302303e..e5ff4b4b 100644 --- a/src/heretic/r_things.c +++ b/src/heretic/r_things.c @@ -25,6 +25,7 @@ #include <stdio.h> #include <stdlib.h> #include "doomdef.h" +#include "deh_str.h" #include "i_swap.h" #include "i_system.h" #include "r_local.h" @@ -154,7 +155,7 @@ void R_InstallSpriteLump(int lump, unsigned frame, unsigned rotation, void R_InitSpriteDefs(char **namelist) { char **check; - int i, l, intname, frame, rotation; + int i, l, frame, rotation; int start, end; // count the number of sprite names @@ -176,17 +177,16 @@ void R_InitSpriteDefs(char **namelist) // Just compare 4 characters as ints for (i = 0; i < numsprites; i++) { - spritename = namelist[i]; + spritename = DEH_String(namelist[i]); memset(sprtemp, -1, sizeof(sprtemp)); maxframe = -1; - intname = *(int *) namelist[i]; // // scan the lumps, filling in the frames for whatever is found // for (l = start + 1; l < end; l++) - if (*(int *) lumpinfo[l].name == intname) + if (!strncasecmp(lumpinfo[l].name, spritename, 4)) { frame = lumpinfo[l].name[4] - 'A'; rotation = lumpinfo[l].name[5] - '0'; @@ -209,7 +209,7 @@ void R_InitSpriteDefs(char **namelist) if (gamemode == shareware) continue; I_Error("R_InitSprites: No lumps found for sprite %s", - namelist[i]); + spritename); } maxframe++; @@ -219,7 +219,7 @@ void R_InitSpriteDefs(char **namelist) { case -1: // no rotations were found for that frame at all I_Error("R_InitSprites: No patches found for %s frame %c", - namelist[i], frame + 'A'); + spritename, frame + 'A'); case 0: // only the first rotation is needed break; @@ -228,7 +228,7 @@ void R_InitSpriteDefs(char **namelist) if (sprtemp[frame].lump[rotation] == -1) I_Error ("R_InitSprites: Sprite %s frame %c is missing rotations", - namelist[i], frame + 'A'); + spritename, frame + 'A'); } } diff --git a/src/heretic/sb_bar.c b/src/heretic/sb_bar.c index 77bd40c2..3a90c000 100644 --- a/src/heretic/sb_bar.c +++ b/src/heretic/sb_bar.c @@ -25,6 +25,7 @@ // SB_bar.c #include "doomdef.h" +#include "deh_str.h" #include "i_video.h" #include "m_cheat.h" #include "m_misc.h" @@ -196,53 +197,53 @@ void SB_Init(void) int i; int startLump; - PatchLTFACE = W_CacheLumpName("LTFACE", PU_STATIC); - PatchRTFACE = W_CacheLumpName("RTFACE", PU_STATIC); - PatchBARBACK = W_CacheLumpName("BARBACK", PU_STATIC); - PatchINVBAR = W_CacheLumpName("INVBAR", PU_STATIC); - PatchCHAIN = W_CacheLumpName("CHAIN", PU_STATIC); + PatchLTFACE = W_CacheLumpName(DEH_String("LTFACE"), PU_STATIC); + PatchRTFACE = W_CacheLumpName(DEH_String("RTFACE"), PU_STATIC); + PatchBARBACK = W_CacheLumpName(DEH_String("BARBACK"), PU_STATIC); + PatchINVBAR = W_CacheLumpName(DEH_String("INVBAR"), PU_STATIC); + PatchCHAIN = W_CacheLumpName(DEH_String("CHAIN"), PU_STATIC); if (deathmatch) { - PatchSTATBAR = W_CacheLumpName("STATBAR", PU_STATIC); + PatchSTATBAR = W_CacheLumpName(DEH_String("STATBAR"), PU_STATIC); } else { - PatchSTATBAR = W_CacheLumpName("LIFEBAR", PU_STATIC); + PatchSTATBAR = W_CacheLumpName(DEH_String("LIFEBAR"), PU_STATIC); } if (!netgame) { // single player game uses red life gem - PatchLIFEGEM = W_CacheLumpName("LIFEGEM2", PU_STATIC); + PatchLIFEGEM = W_CacheLumpName(DEH_String("LIFEGEM2"), PU_STATIC); } else { - PatchLIFEGEM = W_CacheLumpNum(W_GetNumForName("LIFEGEM0") + PatchLIFEGEM = W_CacheLumpNum(W_GetNumForName(DEH_String("LIFEGEM0")) + consoleplayer, PU_STATIC); } - PatchLTFCTOP = W_CacheLumpName("LTFCTOP", PU_STATIC); - PatchRTFCTOP = W_CacheLumpName("RTFCTOP", PU_STATIC); - PatchSELECTBOX = W_CacheLumpName("SELECTBOX", PU_STATIC); - PatchINVLFGEM1 = W_CacheLumpName("INVGEML1", PU_STATIC); - PatchINVLFGEM2 = W_CacheLumpName("INVGEML2", PU_STATIC); - PatchINVRTGEM1 = W_CacheLumpName("INVGEMR1", PU_STATIC); - PatchINVRTGEM2 = W_CacheLumpName("INVGEMR2", PU_STATIC); - PatchBLACKSQ = W_CacheLumpName("BLACKSQ", PU_STATIC); - PatchARMCLEAR = W_CacheLumpName("ARMCLEAR", PU_STATIC); - PatchCHAINBACK = W_CacheLumpName("CHAINBACK", PU_STATIC); - startLump = W_GetNumForName("IN0"); + PatchLTFCTOP = W_CacheLumpName(DEH_String("LTFCTOP"), PU_STATIC); + PatchRTFCTOP = W_CacheLumpName(DEH_String("RTFCTOP"), PU_STATIC); + PatchSELECTBOX = W_CacheLumpName(DEH_String("SELECTBOX"), PU_STATIC); + PatchINVLFGEM1 = W_CacheLumpName(DEH_String("INVGEML1"), PU_STATIC); + PatchINVLFGEM2 = W_CacheLumpName(DEH_String("INVGEML2"), PU_STATIC); + PatchINVRTGEM1 = W_CacheLumpName(DEH_String("INVGEMR1"), PU_STATIC); + PatchINVRTGEM2 = W_CacheLumpName(DEH_String("INVGEMR2"), PU_STATIC); + PatchBLACKSQ = W_CacheLumpName(DEH_String("BLACKSQ"), PU_STATIC); + PatchARMCLEAR = W_CacheLumpName(DEH_String("ARMCLEAR"), PU_STATIC); + PatchCHAINBACK = W_CacheLumpName(DEH_String("CHAINBACK"), PU_STATIC); + startLump = W_GetNumForName(DEH_String("IN0")); for (i = 0; i < 10; i++) { PatchINumbers[i] = W_CacheLumpNum(startLump + i, PU_STATIC); } - PatchNEGATIVE = W_CacheLumpName("NEGNUM", PU_STATIC); - FontBNumBase = W_GetNumForName("FONTB16"); - startLump = W_GetNumForName("SMALLIN0"); + PatchNEGATIVE = W_CacheLumpName(DEH_String("NEGNUM"), PU_STATIC); + FontBNumBase = W_GetNumForName(DEH_String("FONTB16")); + startLump = W_GetNumForName(DEH_String("SMALLIN0")); for (i = 0; i < 10; i++) { PatchSmNumbers[i] = W_CacheLumpNum(startLump + i, PU_STATIC); } - playpalette = W_GetNumForName("PLAYPAL"); - spinbooklump = W_GetNumForName("SPINBK0"); - spinflylump = W_GetNumForName("SPFLY0"); + playpalette = W_GetNumForName(DEH_String("PLAYPAL")); + spinbooklump = W_GetNumForName(DEH_String("SPINBK0")); + spinflylump = W_GetNumForName(DEH_String("SPFLY0")); } //--------------------------------------------------------------------------- @@ -311,7 +312,7 @@ static void DrINumber(signed int val, int x, int y) { if (val < -9) { - V_DrawPatch(x + 1, y + 1, W_CacheLumpName("LAME", PU_CACHE)); + V_DrawPatch(x + 1, y + 1, W_CacheLumpName(DEH_String("LAME"), PU_CACHE)); } else { @@ -458,7 +459,7 @@ static void DrawSoundInfo(void) if (leveltime & 16) { - MN_DrTextA("*** SOUND DEBUG INFO ***", xPos[0], 20); + MN_DrTextA(DEH_String("*** SOUND DEBUG INFO ***"), xPos[0], 20); } S_GetChannelInfo(&s); if (s.channelCount == 0) @@ -466,13 +467,13 @@ static void DrawSoundInfo(void) return; } x = 0; - MN_DrTextA("NAME", xPos[x++], 30); - MN_DrTextA("MO.T", xPos[x++], 30); - MN_DrTextA("MO.X", xPos[x++], 30); - MN_DrTextA("MO.Y", xPos[x++], 30); - MN_DrTextA("ID", xPos[x++], 30); - MN_DrTextA("PRI", xPos[x++], 30); - MN_DrTextA("DIST", xPos[x++], 30); + MN_DrTextA(DEH_String("NAME"), xPos[x++], 30); + MN_DrTextA(DEH_String("MO.T"), xPos[x++], 30); + MN_DrTextA(DEH_String("MO.X"), xPos[x++], 30); + MN_DrTextA(DEH_String("MO.Y"), xPos[x++], 30); + MN_DrTextA(DEH_String("ID"), xPos[x++], 30); + MN_DrTextA(DEH_String("PRI"), xPos[x++], 30); + MN_DrTextA(DEH_String("DIST"), xPos[x++], 30); for (i = 0; i < s.channelCount; i++) { c = &s.chan[i]; @@ -480,7 +481,7 @@ static void DrawSoundInfo(void) y = 40 + i * 10; if (c->mo == NULL) { // Channel is unused - MN_DrTextA("------", xPos[0], y); + MN_DrTextA(DEH_String("------"), xPos[0], y); continue; } sprintf(text, "%s", c->name); @@ -570,8 +571,10 @@ void SB_Drawer(void) V_DrawPatch(0, 158, PatchBARBACK); if (players[consoleplayer].cheats & CF_GODMODE) { - V_DrawPatch(16, 167, W_CacheLumpName("GOD1", PU_CACHE)); - V_DrawPatch(287, 167, W_CacheLumpName("GOD2", PU_CACHE)); + V_DrawPatch(16, 167, + W_CacheLumpName(DEH_String("GOD1"), PU_CACHE)); + V_DrawPatch(287, 167, + W_CacheLumpName(DEH_String("GOD2"), PU_CACHE)); } oldhealth = -1; } @@ -776,8 +779,10 @@ void DrawMainBar(void) if (ArtifactFlash) { V_DrawPatch(180, 161, PatchBLACKSQ); - V_DrawPatch(182, 161, W_CacheLumpNum(W_GetNumForName("useartia") - + ArtifactFlash - 1, PU_CACHE)); + + temp = W_GetNumForName(DEH_String("useartia")) + ArtifactFlash - 1; + + V_DrawPatch(182, 161, W_CacheLumpNum(temp, PU_CACHE)); ArtifactFlash--; oldarti = -1; // so that the correct artifact fills in after the flash UpdateState |= I_STATBAR; @@ -789,7 +794,7 @@ void DrawMainBar(void) if (CPlayer->readyArtifact > 0) { V_DrawPatch(179, 160, - W_CacheLumpName(patcharti[CPlayer->readyArtifact], + W_CacheLumpName(DEH_String(patcharti[CPlayer->readyArtifact]), PU_CACHE)); DrSmallNumber(CPlayer->inventory[inv_ptr].count, 201, 182); } @@ -839,15 +844,15 @@ void DrawMainBar(void) { if (CPlayer->keys[key_yellow]) { - V_DrawPatch(153, 164, W_CacheLumpName("ykeyicon", PU_CACHE)); + V_DrawPatch(153, 164, W_CacheLumpName(DEH_String("ykeyicon"), PU_CACHE)); } if (CPlayer->keys[key_green]) { - V_DrawPatch(153, 172, W_CacheLumpName("gkeyicon", PU_CACHE)); + V_DrawPatch(153, 172, W_CacheLumpName(DEH_String("gkeyicon"), PU_CACHE)); } if (CPlayer->keys[key_blue]) { - V_DrawPatch(153, 180, W_CacheLumpName("bkeyicon", PU_CACHE)); + V_DrawPatch(153, 180, W_CacheLumpName(DEH_String("bkeyicon"), PU_CACHE)); } oldkeys = playerkeys; UpdateState |= I_STATBAR; @@ -861,7 +866,7 @@ void DrawMainBar(void) { DrINumber(temp, 109, 162); V_DrawPatch(111, 172, - W_CacheLumpName(ammopic[CPlayer->readyweapon - 1], + W_CacheLumpName(DEH_String(ammopic[CPlayer->readyweapon - 1]), PU_CACHE)); } oldammo = temp; @@ -887,6 +892,7 @@ void DrawMainBar(void) void DrawInventoryBar(void) { + char *patch; int i; int x; @@ -899,10 +905,9 @@ void DrawInventoryBar(void) if (CPlayer->inventorySlotNum > x + i && CPlayer->inventory[x + i].type != arti_none) { - V_DrawPatch(50 + i * 31, 160, - W_CacheLumpName(patcharti - [CPlayer->inventory[x + i].type], - PU_CACHE)); + patch = DEH_String(patcharti[CPlayer->inventory[x + i].type]); + + V_DrawPatch(50 + i * 31, 160, W_CacheLumpName(patch, PU_CACHE)); DrSmallNumber(CPlayer->inventory[x + i].count, 69 + i * 31, 182); } } @@ -921,6 +926,7 @@ void DrawInventoryBar(void) void DrawFullScreenStuff(void) { + char *patch; int i; int x; int temp; @@ -950,10 +956,9 @@ void DrawFullScreenStuff(void) { if (CPlayer->readyArtifact > 0) { - V_DrawTLPatch(286, 170, W_CacheLumpName("ARTIBOX", PU_CACHE)); - V_DrawPatch(286, 170, - W_CacheLumpName(patcharti[CPlayer->readyArtifact], - PU_CACHE)); + patch = DEH_String(patcharti[CPlayer->readyArtifact]); + V_DrawTLPatch(286, 170, W_CacheLumpName(DEH_String("ARTIBOX"), PU_CACHE)); + V_DrawPatch(286, 170, W_CacheLumpName(patch, PU_CACHE)); DrSmallNumber(CPlayer->inventory[inv_ptr].count, 307, 192); } } @@ -962,15 +967,14 @@ void DrawFullScreenStuff(void) x = inv_ptr - curpos; for (i = 0; i < 7; i++) { - V_DrawTLPatch(50 + i * 31, 168, W_CacheLumpName("ARTIBOX", - PU_CACHE)); + V_DrawTLPatch(50 + i * 31, 168, + W_CacheLumpName(DEH_String("ARTIBOX"), PU_CACHE)); if (CPlayer->inventorySlotNum > x + i && CPlayer->inventory[x + i].type != arti_none) { + patch = DEH_String(patcharti[CPlayer->inventory[x + i].type]); V_DrawPatch(50 + i * 31, 168, - W_CacheLumpName(patcharti - [CPlayer->inventory[x + i].type], - PU_CACHE)); + W_CacheLumpName(patch, PU_CACHE)); DrSmallNumber(CPlayer->inventory[x + i].count, 69 + i * 31, 190); } |