summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/heretic/deh_htext.c1400
1 files changed, 654 insertions, 746 deletions
diff --git a/src/heretic/deh_htext.c b/src/heretic/deh_htext.c
index 9075e610..6c506cd8 100644
--- a/src/heretic/deh_htext.c
+++ b/src/heretic/deh_htext.c
@@ -34,6 +34,7 @@
#include "deh_defs.h"
#include "deh_io.h"
+#include "deh_htic.h"
#include "deh_main.h"
//
@@ -41,758 +42,665 @@
// 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
+typedef struct
{
- unsigned int offset;
+ unsigned int offsets[deh_hhe_num_versions];
char *string;
-}
-string_table[] =
+} hhe_string_t;
+
+// Offsets String
+// v1.0 v1.2 v1.3
+
+static hhe_string_t strings[] = {
+ { { 228, 228, 228 }, "PLAYPAL" },
+ { { 1240, 1252, 1252 }, "E1M1: THE DOCKS" },
+ { { 1260, 1272, 1272 }, "E1M2: THE DUNGEONS" },
+ { { 1280, 1292, 1292 }, "E1M3: THE GATEHOUSE" },
+ { { 1304, 1316, 1316 }, "E1M4: THE GUARD TOWER" },
+ { { 1328, 1340, 1340 }, "E1M5: THE CITADEL" },
+ { { 1348, 1360, 1360 }, "E1M6: THE CATHEDRAL" },
+ { { 1372, 1384, 1384 }, "E1M7: THE CRYPTS" },
+ { { 1392, 1404, 1404 }, "E1M8: HELL'S MAW" },
+ { { 1412, 1424, 1424 }, "E1M9: THE GRAVEYARD" },
+ { { 1436, 1448, 1448 }, "E2M1: THE CRATER" },
+ { { 1456, 1468, 1468 }, "E2M2: THE LAVA PITS" },
+ { { 1480, 1492, 1492 }, "E2M3: THE RIVER OF FIRE" },
+ { { 1508, 1520, 1520 }, "E2M4: THE ICE GROTTO" },
+ { { 1532, 1544, 1544 }, "E2M5: THE CATACOMBS" },
+ { { 1556, 1568, 1568 }, "E2M6: THE LABYRINTH" },
+ { { 1580, 1592, 1592 }, "E2M7: THE GREAT HALL" },
+ { { 1604, 1616, 1616 }, "E2M8: THE PORTALS OF CHAOS" },
+ { { 1632, 1644, 1644 }, "E2M9: THE GLACIER" },
+ { { 1652, 1664, 1664 }, "E3M1: THE STOREHOUSE" },
+ { { 1676, 1688, 1688 }, "E3M2: THE CESSPOOL" },
+ { { 1696, 1708, 1708 }, "E3M3: THE CONFLUENCE" },
+ { { 1720, 1732, 1732 }, "E3M4: THE AZURE FORTRESS" },
+ { { 1748, 1760, 1760 }, "E3M5: THE OPHIDIAN LAIR" },
+ { { 1776, 1788, 1788 }, "E3M6: THE HALLS OF FEAR" },
+ { { 1804, 1816, 1816 }, "E3M7: THE CHASM" },
+ { { 1824, 1836, 1836 }, "E3M8: D'SPARIL'S KEEP" },
+ { { 1848, 1860, 1860 }, "E3M9: THE AQUIFER" },
+ { { 0, 1880, 1880 }, "E4M1: CATAFALQUE" },
+ { { 0, 1900, 1900 }, "E4M2: BLOCKHOUSE" },
+ { { 0, 1920, 1920 }, "E4M3: AMBULATORY" },
+ { { 0, 1940, 1940 }, "E4M4: SEPULCHER" },
+ { { 0, 1960, 1960 }, "E4M5: GREAT STAIR" },
+ { { 0, 1980, 1980 }, "E4M6: HALLS OF THE APOSTATE" },
+ { { 0, 2012, 2012 }, "E4M7: RAMPARTS OF PERDITION" },
+ { { 0, 2044, 2044 }, "E4M8: SHATTERED BRIDGE" },
+ { { 0, 2068, 2068 }, "E4M9: MAUSOLEUM" },
+ { { 0, 2088, 2088 }, "E5M1: OCHRE CLIFFS" },
+ { { 0, 2108, 2108 }, "E5M2: RAPIDS" },
+ { { 0, 2124, 2124 }, "E5M3: QUAY" },
+ { { 0, 2136, 2136 }, "E5M4: COURTYARD" },
+ { { 0, 2156, 2156 }, "E5M5: HYDRATYR" },
+ { { 0, 2172, 2172 }, "E5M6: COLONNADE" },
+ { { 0, 2192, 2192 }, "E5M7: FOETID MANSE" },
+ { { 0, 2212, 2212 }, "E5M8: FIELD OF JUDGEMENT" },
+ { { 0, 2240, 2240 }, "E5M9: SKEIN OF D'SPARIL" },
+ { { 1868, 2268, 2268 }, "AUTOPAGE" },
+ { { 1880, 2280, 2280 }, "FOLLOW MODE ON" },
+ { { 1896, 2296, 2296 }, "FOLLOW MODE OFF" },
+ { { 1924, 2324, 2324 }, "GREEN: " },
+ { { 1936, 2336, 2336 }, "YELLOW: " },
+ { { 1948, 2348, 2348 }, "RED: " },
+ { { 1956, 2356, 2356 }, "BLUE: " },
+ { { 1964, 2364, 2364 }, "FONTA_S" },
+ { { 1972, 2372, 2372 }, "-MESSAGE SENT-" },
+ { { 1988, 2388, 2388 }, "THERE ARE NO OTHER PLAYERS IN THE GAME!" },
+ { { 2028, 2428, 2428 }, "FONTA59" },
+ { { 2036, 2504, 2504 }, "PAUSED" },
+ { { 2072, 2540, 2540 }, "ADVISOR" },
+ { { 2080, 2548, 2548 }, "TITLE" },
+ { { 2088, 2556, 2556 }, "demo1" },
+ { { 2096, 2564, 2564 }, "CREDIT" },
+ { { 2104, 2572, 2572 }, "demo2" },
+ { { 2112, 2580, 2580 }, "ORDER" },
+ { { 2120, 2588, 2588 }, "demo3" },
+ { { 2304, 2696, 2696 }, "Exited from HERETIC.\n" },
+ { { 2412, 2800, 2800 }, "c:\\heretic.cd" },
+ { { 2528, 2916, 2916 }, "Playing demo %s.lmp.\n" },
+ { { 2592, 2980, 2980 }, "V_Init: allocate screens.\n" },
+ { { 2620, 3008, 3008 }, "M_LoadDefaults: Load system defaults.\n" },
+ { { 2660, 3048, 3048 }, "Z_Init: Init zone memory allocation daemon.\n" },
+ { { 2708, 3096, 3096 }, "W_Init: Init WADfiles.\n" },
+ { { 2732, 3120, 3120 }, "E2M1" },
+ { { 0, 3128, 3128 }, "EXTENDED" },
+ { { 2740, 3140, 3140 }, "LOADING" },
+ { { 2748, 3148, 3148 }, "DeathMatch..." },
+ { { 2764, 3164, 3164 }, "No Monsters..." },
+ { { 2780, 3180, 3180 }, "Respawning..." },
+ { { 2796, 3196, 3196 }, "Warp to Episode %d, Map %d, Skill %d " },
+ { { 2836, 3236, 3236 }, "MN_Init: Init menu system.\n" },
+ { { 2864, 3264, 3264 }, "R_Init: Init Heretic refresh daemon." },
+ { { 2904, 3304, 3304 }, "Loading graphics" },
+ { { 2924, 3324, 3324 }, "P_Init: Init Playloop state." },
+ { { 2956, 3356, 3356 }, "Init game engine." },
+ { { 2976, 3376, 3376 }, "I_Init: Setting up machine state.\n" },
+ { { 3012, 3412, 3412 }, "D_CheckNetGame: Checking network game status.\n" },
+ { { 3060, 3460, 3460 }, "Checking network game status." },
+ { { 3092, 3492, 3492 }, "SB_Init: Loading patches.\n" },
+ { { 0, 3752, 3752 }, "PLAYER 1 LEFT THE GAME" },
+ { { 3508, 3932, 3932 }, "Network game synchronization aborted." },
+ { { 0, 3972, 3972 }, "Different DOOM versions cannot play a net game!" },
+ { { 3908, 4132, 4132 }, "SKY1" },
+ { { 3916, 4140, 4140 }, "SKY2" },
+ { { 3924, 4148, 4148 }, "SKY3" },
+ { { 3736, 4196, 4196 }, "NET GAME" },
+ { { 3748, 4208, 4208 }, "SAVE GAME" },
+ { { 3760, 4220, 4220 }, "Only %i deathmatch spots, 4 required" },
+ { { 3800, 4260, 4260 }, "version %i" },
+ { { 3828, 4372, 4372 }, "c:\\heretic.cd\\hticsav%d.hsg" },
+ { { 3856, 4400, 4400 }, "hticsav%d.hsg" },
+ { { 3896, 4416, 4416 }, "GAME SAVED" },
+ { { 4016, 4456, 4456 }, E1TEXT },
+ { { 4536, 4976, 4976 }, E2TEXT },
+ { { 5068, 5508, 5508 }, E3TEXT },
+ { { 0, 6072, 6072 }, E4TEXT },
+ { { 0, 6780, 6780 }, E5TEXT },
+ { { 5632, 7468, 7468 }, "FLOOR25" },
+ { { 5640, 7476, 7476 }, "FLATHUH1" },
+ { { 5652, 7488, 7488 }, "FLTWAWA2" },
+ { { 0, 7500, 7500 }, "FLOOR28" },
+ { { 0, 7508, 7508 }, "FLOOR08" },
+ { { 5664, 7516, 7516 }, "FONTA_S" },
+ { { 5704, 7524, 7524 }, "PLAYPAL" },
+ { { 5672, 7532, 7532 }, "FINAL1" },
+ { { 5680, 7540, 7540 }, "FINAL2" },
+ { { 5688, 7548, 7548 }, "E2PAL" },
+ { { 5696, 7556, 7556 }, "E2END" },
+ { { 7884, 7564, 7564 }, "TITLE" },
+ { { 5712, 7572, 7572 }, "ORDER" },
+ { { 0, 7580, 7580 }, "CREDIT" },
+ { { 5720, 7588, 7588 }, "IMPX" },
+ { { 5728, 7596, 7596 }, "ACLO" },
+ { { 5736, 7604, 7604 }, "PTN1" },
+ { { 5744, 7612, 7612 }, "SHLD" },
+ { { 5752, 7620, 7620 }, "SHD2" },
+ { { 5760, 7628, 7628 }, "BAGH" },
+ { { 5768, 7636, 7636 }, "SPMP" },
+ { { 5776, 7644, 7644 }, "INVS" },
+ { { 5784, 7652, 7652 }, "PTN2" },
+ { { 5792, 7660, 7660 }, "SOAR" },
+ { { 5800, 7668, 7668 }, "INVU" },
+ { { 5808, 7676, 7676 }, "PWBK" },
+ { { 5816, 7684, 7684 }, "EGGC" },
+ { { 5824, 7692, 7692 }, "EGGM" },
+ { { 5832, 7700, 7700 }, "FX01" },
+ { { 5840, 7708, 7708 }, "SPHL" },
+ { { 5848, 7716, 7716 }, "TRCH" },
+ { { 5856, 7724, 7724 }, "FBMB" },
+ { { 5864, 7732, 7732 }, "XPL1" },
+ { { 5872, 7740, 7740 }, "ATLP" },
+ { { 5880, 7748, 7748 }, "PPOD" },
+ { { 5888, 7756, 7756 }, "AMG1" },
+ { { 5896, 7764, 7764 }, "SPSH" },
+ { { 5904, 7772, 7772 }, "LVAS" },
+ { { 5912, 7780, 7780 }, "SLDG" },
+ { { 5920, 7788, 7788 }, "SKH1" },
+ { { 5928, 7796, 7796 }, "SKH2" },
+ { { 5936, 7804, 7804 }, "SKH3" },
+ { { 5944, 7812, 7812 }, "SKH4" },
+ { { 5952, 7820, 7820 }, "CHDL" },
+ { { 5960, 7828, 7828 }, "SRTC" },
+ { { 5968, 7836, 7836 }, "SMPL" },
+ { { 5976, 7844, 7844 }, "STGS" },
+ { { 5984, 7852, 7852 }, "STGL" },
+ { { 5992, 7860, 7860 }, "STCS" },
+ { { 6000, 7868, 7868 }, "STCL" },
+ { { 6008, 7876, 7876 }, "KFR1" },
+ { { 6016, 7884, 7884 }, "BARL" },
+ { { 6024, 7892, 7892 }, "BRPL" },
+ { { 6032, 7900, 7900 }, "MOS1" },
+ { { 6040, 7908, 7908 }, "MOS2" },
+ { { 6048, 7916, 7916 }, "WTRH" },
+ { { 6056, 7924, 7924 }, "HCOR" },
+ { { 6064, 7932, 7932 }, "KGZ1" },
+ { { 6072, 7940, 7940 }, "KGZB" },
+ { { 6080, 7948, 7948 }, "KGZG" },
+ { { 6088, 7956, 7956 }, "KGZY" },
+ { { 6096, 7964, 7964 }, "VLCO" },
+ { { 6104, 7972, 7972 }, "VFBL" },
+ { { 6112, 7980, 7980 }, "VTFB" },
+ { { 6120, 7988, 7988 }, "SFFI" },
+ { { 6128, 7996, 7996 }, "TGLT" },
+ { { 6136, 8004, 8004 }, "TELE" },
+ { { 6144, 8012, 8012 }, "STFF" },
+ { { 6152, 8020, 8020 }, "PUF3" },
+ { { 6160, 8028, 8028 }, "PUF4" },
+ { { 6168, 8036, 8036 }, "BEAK" },
+ { { 6176, 8044, 8044 }, "WGNT" },
+ { { 6184, 8052, 8052 }, "GAUN" },
+ { { 6192, 8060, 8060 }, "PUF1" },
+ { { 6200, 8068, 8068 }, "WBLS" },
+ { { 6208, 8076, 8076 }, "BLSR" },
+ { { 6216, 8084, 8084 }, "FX18" },
+ { { 6224, 8092, 8092 }, "FX17" },
+ { { 6232, 8100, 8100 }, "WMCE" },
+ { { 6240, 8108, 8108 }, "MACE" },
+ { { 6248, 8116, 8116 }, "FX02" },
+ { { 6256, 8124, 8124 }, "WSKL" },
+ { { 6264, 8132, 8132 }, "HROD" },
+ { { 6272, 8140, 8140 }, "FX00" },
+ { { 6280, 8148, 8148 }, "FX20" },
+ { { 6288, 8156, 8156 }, "FX21" },
+ { { 6296, 8164, 8164 }, "FX22" },
+ { { 6304, 8172, 8172 }, "FX23" },
+ { { 6312, 8180, 8180 }, "GWND" },
+ { { 6320, 8188, 8188 }, "PUF2" },
+ { { 6328, 8196, 8196 }, "WPHX" },
+ { { 6336, 8204, 8204 }, "PHNX" },
+ { { 6344, 8212, 8212 }, "FX04" },
+ { { 6352, 8220, 8220 }, "FX08" },
+ { { 6360, 8228, 8228 }, "FX09" },
+ { { 6368, 8236, 8236 }, "WBOW" },
+ { { 6376, 8244, 8244 }, "CRBW" },
+ { { 6384, 8252, 8252 }, "FX03" },
+ { { 6392, 8260, 8260 }, "BLOD" },
+ { { 6400, 8268, 8268 }, "PLAY" },
+ { { 6408, 8276, 8276 }, "FDTH" },
+ { { 6416, 8284, 8284 }, "BSKL" },
+ { { 6424, 8292, 8292 }, "CHKN" },
+ { { 6432, 8300, 8300 }, "MUMM" },
+ { { 6440, 8308, 8308 }, "FX15" },
+ { { 6448, 8316, 8316 }, "BEAS" },
+ { { 6456, 8324, 8324 }, "FRB1" },
+ { { 6464, 8332, 8332 }, "SNKE" },
+ { { 6472, 8340, 8340 }, "SNFX" },
+ { { 6480, 8348, 8348 }, "HEAD" },
+ { { 6488, 8356, 8356 }, "FX05" },
+ { { 6496, 8364, 8364 }, "FX06" },
+ { { 6504, 8372, 8372 }, "FX07" },
+ { { 6512, 8380, 8380 }, "CLNK" },
+ { { 6520, 8388, 8388 }, "WZRD" },
+ { { 6528, 8396, 8396 }, "FX11" },
+ { { 6536, 8404, 8404 }, "FX10" },
+ { { 6544, 8412, 8412 }, "KNIG" },
+ { { 6552, 8420, 8420 }, "SPAX" },
+ { { 6560, 8428, 8428 }, "RAXE" },
+ { { 6568, 8436, 8436 }, "SRCR" },
+ { { 6576, 8444, 8444 }, "FX14" },
+ { { 6584, 8452, 8452 }, "SOR2" },
+ { { 6592, 8460, 8460 }, "SDTH" },
+ { { 6600, 8468, 8468 }, "FX16" },
+ { { 6608, 8476, 8476 }, "MNTR" },
+ { { 6616, 8484, 8484 }, "FX12" },
+ { { 6624, 8492, 8492 }, "FX13" },
+ { { 6632, 8500, 8500 }, "AKYY" },
+ { { 6640, 8508, 8508 }, "BKYY" },
+ { { 6648, 8516, 8516 }, "CKYY" },
+ { { 6656, 8524, 8524 }, "AMG2" },
+ { { 6664, 8532, 8532 }, "AMM1" },
+ { { 6672, 8540, 8540 }, "AMM2" },
+ { { 6680, 8548, 8548 }, "AMC1" },
+ { { 6688, 8556, 8556 }, "AMC2" },
+ { { 6696, 8564, 8564 }, "AMS1" },
+ { { 6704, 8572, 8572 }, "AMS2" },
+ { { 6712, 8580, 8580 }, "AMP1" },
+ { { 6720, 8588, 8588 }, "AMP2" },
+ { { 6728, 8596, 8596 }, "AMB1" },
+ { { 6736, 8604, 8604 }, "AMB2" },
+ { { 6744, 8612, 8612 }, "K" },
+ { { 6748, 8616, 8616 }, "I" },
+ { { 6752, 8620, 8620 }, "L" },
+ { { 6756, 8624, 8624 }, "E" },
+ { { 6760, 8628, 8628 }, "R" },
+ { { 6764, 8632, 8632 }, "S" },
+ { { 6768, 8636, 8636 }, "PLAYPAL" },
+ { { 6776, 8644, 8644 }, "MAPE1" },
+ { { 6784, 8652, 8652 }, "MAPE2" },
+ { { 6792, 8660, 8660 }, "MAPE3" },
+ { { 6800, 8668, 8668 }, "IN_X" },
+ { { 6808, 8676, 8676 }, "IN_YAH" },
+ { { 6816, 8684, 8684 }, "FONTB16" },
+ { { 6824, 8692, 8692 }, "FONTB_S" },
+ { { 6832, 8700, 8700 }, "FONTB13" },
+ { { 6840, 8708, 8708 }, "FONTB15" },
+ { { 6848, 8716, 8716 }, "FONTB05" },
+ { { 6856, 8724, 8724 }, "FACEA0" },
+ { { 6864, 8732, 8732 }, "FACEB0" },
+ { { 6940, 8808, 8808 }, "FLOOR16" },
+ { { 6948, 8816, 8816 }, "FINISHED" },
+ { { 6960, 8828, 8828 }, "NOW ENTERING:" },
+ { { 6976, 8844, 8844 }, "KILLS" },
+ { { 6984, 8852, 8852 }, "ITEMS" },
+ { { 6992, 8860, 8860 }, "SECRETS" },
+ { { 7000, 8868, 8868 }, "TIME" },
+ { { 7008, 8876, 8876 }, "BONUS" },
+ { { 7016, 8884, 8884 }, "SECRET" },
+ { { 7024, 8892, 8892 }, "TOTAL" },
+ { { 7032, 8900, 8900 }, "VICTIMS" },
+ { { 7040, 8908, 8908 }, ":" },
+ { { 7044, 8912, 8912 }, "NEW GAME" },
+ { { 7056, 8924, 8924 }, "OPTIONS" },
+ { { 7064, 8932, 8932 }, "GAME FILES" },
+ { { 7076, 8944, 8944 }, "INFO" },
+ { { 7084, 8952, 8952 }, "QUIT GAME" },
+ { { 7096, 8964, 8964 }, "CITY OF THE DAMNED" },
+ { { 7116, 8984, 8984 }, "HELL'S MAW" },
+ { { 7128, 8996, 8996 }, "THE DOME OF D'SPARIL" },
+ { { 0, 9020, 9020 }, "THE OSSUARY" },
+ { { 0, 9032, 9032 }, "THE STAGNANT DEMESNE" },
+ { { 7152, 9056, 9056 }, "LOAD GAME" },
+ { { 7164, 9068, 9068 }, "SAVE GAME" },
+ { { 7176, 9080, 9080 }, "THOU NEEDETH A WET-NURSE" },
+ { { 7204, 9108, 9108 }, "YELLOWBELLIES-R-US" },
+ { { 7224, 9128, 9128 }, "BRINGEST THEM ONETH" },
+ { { 7244, 9148, 9148 }, "THOU ART A SMITE-MEISTER" },
+ { { 7272, 9176, 9176 }, "BLACK PLAGUE POSSESSES THEE" },
+ { { 7300, 9204, 9204 }, "END GAME" },
+ { { 7312, 9216, 9216 }, "MESSAGES : " },
+ { { 7324, 9228, 9228 }, "MOUSE SENSITIVITY" },
+ { { 7344, 9248, 9248 }, "MORE..." },
+ { { 7352, 9256, 9256 }, "SCREEN SIZE" },
+ { { 7364, 9268, 9268 }, "SFX VOLUME" },
+ { { 7376, 9280, 9280 }, "MUSIC VOLUME" },
+ { { 7416, 9296, 9296 }, "ARE YOU SURE YOU WANT TO QUIT?" },
+ { { 7448, 9328, 9328 }, "ARE YOU SURE YOU WANT TO END THE GAME?" },
+ { { 7488, 9368, 9368 }, "DO YOU WANT TO QUICKSAVE THE GAME NAMED" },
+ { { 7528, 9408, 9408 }, "DO YOU WANT TO QUICKLOAD THE GAME NAMED" },
+ { { 7392, 9448, 9448 }, "M_SKL00" },
+ { { 7400, 9456, 9456 }, "FONTA_S" },
+ { { 7408, 9464, 9464 }, "FONTB_S" },
+ { { 7568, 9472, 9472 }, "?" },
+ { { 7572, 9476, 9476 }, "M_SLCTR1" },
+ { { 7584, 9488, 9488 }, "M_SLCTR2" },
+ { { 7596, 9500, 9500 }, "M_HTIC" },
+ { { 7604, 9508, 9508 }, "c:\\heretic.cd\\hticsav%d.hsg" },
+ { { 7632, 9536, 9536 }, "hticsav%d.hsg" },
+ { { 7652, 9556, 9556 }, "M_FSLOT" },
+ { { 7660, 9564, 9564 }, "ON" },
+ { { 7664, 9568, 9568 }, "OFF" },
+ { { 0, 9572, 9572 }, "YOU CAN'T START A NEW GAME IN NETPLAY!" },
+ { { 0, 9612, 9612 }, "YOU CAN'T LOAD A GAME IN NETPLAY!" },
+ { { 7668, 9648, 9648 }, "MESSAGES ON" },
+ { { 7680, 9660, 9660 }, "MESSAGES OFF" },
+ { { 7748, 9676, 9676 }, "ONLY AVAILABLE IN THE REGISTERED VERSION" },
+ { { 7792, 9720, 9720 }, "PLAYPAL" },
+ { { 7800, 9728, 9728 }, "QUICKSAVING...." },
+ { { 7816, 9744, 9744 }, "QUICKLOADING...." },
+ { { 7836, 9764, 9764 }, "CHOOSE A QUICKSAVE SLOT" },
+ { { 7860, 9788, 9788 }, "CHOOSE A QUICKLOAD SLOT" },
+ { { 0, 9812, 9812 }, "TITLE" },
+ { { 7892, 9820, 9820 }, "M_SLDLT" },
+ { { 7900, 9828, 9828 }, "M_SLDMD1" },
+ { { 7912, 9840, 9840 }, "M_SLDMD2" },
+ { { 7924, 9852, 9852 }, "M_SLDRT" },
+ { { 7932, 9860, 9860 }, "M_SLDKB" },
+ { { 9016, 10944, 10944 }, "SCREEN SHOT" },
+ { { 9028, 10956, 10956 }, "YOU NEED A BLUE KEY TO OPEN THIS DOOR" },
+ { { 9068, 10996, 10996 }, "YOU NEED A YELLOW KEY TO OPEN THIS DOOR" },
+ { { 9108, 11036, 11036 }, "YOU NEED A GREEN KEY TO OPEN THIS DOOR" },
+ { { 9244, 11172, 11172 }, "CRYSTAL VIAL" },
+ { { 9260, 11188, 11188 }, "SILVER SHIELD" },
+ { { 9276, 11204, 11204 }, "ENCHANTED SHIELD" },
+ { { 9296, 11224, 11224 }, "BAG OF HOLDING" },
+ { { 9312, 11240, 11240 }, "MAP SCROLL" },
+ { { 9324, 11252, 11252 }, "BLUE KEY" },
+ { { 9336, 11264, 11264 }, "YELLOW KEY" },
+ { { 9348, 11276, 11276 }, "GREEN KEY" },
+ { { 9360, 11288, 11288 }, "QUARTZ FLASK" },
+ { { 9376, 11304, 11304 }, "WINGS OF WRATH" },
+ { { 9392, 11320, 11320 }, "RING OF INVINCIBILITY" },
+ { { 9416, 11344, 11344 }, "TOME OF POWER" },
+ { { 9432, 11360, 11360 }, "SHADOWSPHERE" },
+ { { 9448, 11376, 11376 }, "MORPH OVUM" },
+ { { 9460, 11388, 11388 }, "MYSTIC URN" },
+ { { 9472, 11400, 11400 }, "TORCH" },
+ { { 9480, 11408, 11408 }, "TIME BOMB OF THE ANCIENTS" },
+ { { 9508, 11436, 11436 }, "CHAOS DEVICE" },
+ { { 9524, 11452, 11452 }, "WAND CRYSTAL" },
+ { { 9540, 11468, 11468 }, "CRYSTAL GEODE" },
+ { { 9556, 11484, 11484 }, "MACE SPHERES" },
+ { { 9572, 11500, 11500 }, "PILE OF MACE SPHERES" },
+ { { 9596, 11524, 11524 }, "ETHEREAL ARROWS" },
+ { { 9612, 11540, 11540 }, "QUIVER OF ETHEREAL ARROWS" },
+ { { 9640, 11568, 11568 }, "CLAW ORB" },
+ { { 9652, 11580, 11580 }, "ENERGY ORB" },
+ { { 9664, 11592, 11592 }, "LESSER RUNES" },
+ { { 9680, 11608, 11608 }, "GREATER RUNES" },
+ { { 9696, 11624, 11624 }, "FLAME ORB" },
+ { { 9708, 11636, 11636 }, "INFERNO ORB" },
+ { { 9720, 11648, 11648 }, "FIREMACE" },
+ { { 9732, 11660, 11660 }, "ETHEREAL CROSSBOW" },
+ { { 9752, 11680, 11680 }, "DRAGON CLAW" },
+ { { 9764, 11692, 11692 }, "HELLSTAFF" },
+ { { 9776, 11704, 11704 }, "PHOENIX ROD" },
+ { { 9788, 11716, 11716 }, "GAUNTLETS OF THE NECROMANCER" },
+ { { 10088, 12016, 12016 }, "FLTWAWA1" },
+ { { 10100, 12028, 12028 }, "FLTFLWW1" },
+ { { 10112, 12040, 12040 }, "FLTLAVA1" },
+ { { 10124, 12052, 12052 }, "FLATHUH1" },
+ { { 10136, 12064, 12064 }, "FLTSLUD1" },
+ { { 10148, 12076, 12076 }, "END" },
+ { { 10236, 12164, 12164 }, "texture2" },
+ { { 10444, 12372, 12372 }, "PLAYPAL" },
+ { { 10596, 12488, 12488 }, "PNAMES" },
+ { { 10604, 12496, 12496 }, "TEXTURE1" },
+ { { 10616, 12508, 12508 }, "TEXTURE2" },
+ { { 10628, 12520, 12520 }, "S_END" },
+ { { 10636, 12528, 12528 }, "S_START" },
+ { { 10728, 12620, 12620 }, "F_START" },
+ { { 10736, 12628, 12628 }, "F_END" },
+ { { 10744, 12636, 12636 }, "COLORMAP" },
+ { { 10756, 12648, 12648 }, "\nR_InitTextures " },
+ { { 10776, 12668, 12668 }, "R_InitFlats\n" },
+ { { 10792, 12684, 12684 }, "R_InitSpriteLumps " },
+ { { 10948, 12772, 12772 }, "TINTTAB" },
+ { { 10984, 12780, 12780 }, "FLOOR04" },
+ { { 10992, 12788, 12788 }, "FLAT513" },
+ { { 11000, 12796, 12796 }, "bordt" },
+ { { 11008, 12804, 12804 }, "bordb" },
+ { { 11016, 12812, 12812 }, "bordl" },
+ { { 11024, 12820, 12820 }, "bordr" },
+ { { 11032, 12828, 12828 }, "bordtl" },
+ { { 11040, 12836, 12836 }, "bordtr" },
+ { { 11048, 12844, 12844 }, "bordbr" },
+ { { 11056, 12852, 12852 }, "bordbl" },
+ { { 11064, 12860, 12860 }, "R_InitData " },
+ { { 11076, 12872, 12872 }, "R_InitPointToAngle\n" },
+ { { 11096, 12892, 12892 }, "R_InitTables " },
+ { { 11112, 12908, 12908 }, "R_InitPlanes\n" },
+ { { 11128, 12924, 12924 }, "R_InitLightTables " },
+ { { 11148, 12944, 12944 }, "R_InitSkyMap\n" },
+ { { 11164, 12960, 12960 }, "F_SKY1" },
+ { { 12120, 13484, 13484 }, "LTFACE" },
+ { { 12128, 13492, 13492 }, "RTFACE" },
+ { { 12136, 13500, 13500 }, "BARBACK" },
+ { { 12144, 13508, 13508 }, "INVBAR" },
+ { { 12152, 13516, 13516 }, "CHAIN" },
+ { { 12160, 13524, 13524 }, "STATBAR" },
+ { { 12168, 13532, 13532 }, "LIFEBAR" },
+ { { 12176, 13540, 13540 }, "LIFEGEM2" },
+ { { 12188, 13552, 13552 }, "LIFEGEM0" },
+ { { 12200, 13564, 13564 }, "LTFCTOP" },
+ { { 12208, 13572, 13572 }, "RTFCTOP" },
+ { { 12224, 13580, 13580 }, "SELECTBOX" },
+ { { 12236, 13592, 13592 }, "INVGEML1" },
+ { { 12248, 13604, 13604 }, "INVGEML2" },
+ { { 12260, 13616, 13616 }, "INVGEMR1" },
+ { { 12272, 13628, 13628 }, "INVGEMR2" },
+ { { 12284, 13640, 13640 }, "BLACKSQ" },
+ { { 12292, 13648, 13648 }, "ARMCLEAR" },
+ { { 12304, 13660, 13660 }, "CHAINBACK" },
+ { { 12316, 13672, 13672 }, "IN0" },
+ { { 12320, 13676, 13676 }, "NEGNUM" },
+ { { 12328, 13684, 13684 }, "FONTB16" },
+ { { 12336, 13692, 13692 }, "SMALLIN0" },
+ { { 12348, 13704, 13704 }, "PLAYPAL" },
+ { { 12356, 13712, 13712 }, "SPINBK0" },
+ { { 12364, 13720, 13720 }, "SPFLY0" },
+ { { 12372, 13728, 13728 }, "LAME" },
+ { { 12380, 13736, 13736 }, "*** SOUND DEBUG INFO ***" },
+ { { 12408, 13764, 13764 }, "NAME" },
+ { { 12416, 13772, 13772 }, "MO.T" },
+ { { 12424, 13780, 13780 }, "MO.X" },
+ { { 12432, 13788, 13788 }, "MO.Y" },
+ { { 12440, 13796, 13796 }, "ID" },
+ { { 12444, 13800, 13800 }, "PRI" },
+ { { 12448, 13804, 13804 }, "DIST" },
+ { { 12456, 13812, 13812 }, "------" },
+ { { 12464, 13820, 13820 }, "%s" },
+ { { 12468, 13824, 13824 }, "%d" },
+ { { 12472, 13828, 13828 }, "GOD1" },
+ { { 12480, 13836, 13836 }, "GOD2" },
+ { { 12488, 13844, 13844 }, "useartia" },
+ { { 12500, 13856, 13856 }, "ykeyicon" },
+ { { 12512, 13868, 13868 }, "gkeyicon" },
+ { { 12524, 13880, 13880 }, "bkeyicon" },
+ { { 12216, 13892, 13892 }, "ARTIBOX" },
+ { { 12536, 13900, 13900 }, "GOD MODE ON" },
+ { { 12548, 13912, 13912 }, "GOD MODE OFF" },
+ { { 12564, 13928, 13928 }, "NO CLIPPING ON" },
+ { { 12580, 13944, 13944 }, "NO CLIPPING OFF" },
+ { { 12596, 13960, 13960 }, "ALL WEAPONS" },
+ { { 12608, 13972, 13972 }, "POWER OFF" },
+ { { 12620, 13984, 13984 }, "POWER ON" },
+ { { 12632, 13996, 13996 }, "FULL HEALTH" },
+ { { 12644, 14008, 14008 }, "ALL KEYS" },
+ { { 12656, 14020, 14020 }, "SOUND DEBUG ON" },
+ { { 12672, 14036, 14036 }, "SOUND DEBUG OFF" },
+ { { 12688, 14052, 14052 }, "TICKER ON" },
+ { { 12700, 14064, 14064 }, "TICKER OFF" },
+ { { 12712, 14076, 14076 }, "CHOOSE AN ARTIFACT ( A - J )" },
+ { { 12744, 14108, 14108 }, "HOW MANY ( 1 - 9 )" },
+ { { 12764, 14128, 14128 }, "YOU GOT IT" },
+ { { 12776, 14140, 14140 }, "BAD INPUT" },
+ { { 12788, 14152, 14152 }, "LEVEL WARP" },
+ { { 12800, 14164, 14164 }, "CHICKEN OFF" },
+ { { 12812, 14176, 14176 }, "CHICKEN ON" },
+ { { 12824, 14188, 14188 }, "MASSACRE" },
+ { { 12836, 14200, 14200 }, "CHEATER - YOU DON'T DESERVE WEAPONS" },
+ { { 12872, 14236, 14236 }, "TRYING TO CHEAT, EH? NOW YOU DIE!" },
+};
+
+// String offsets that are valid but we don't support.
+
+static int unsupported_strings_1_0[] = {
+ 0, 4, 64, 104, 160, 200, 220, 236,
+ 244, 252, 272, 288, 296, 316, 332, 372,
+ 436, 500, 504, 536, 544, 560, 576, 584,
+ 592, 612, 640, 664, 708, 712, 744, 764,
+ 808, 820, 828, 840, 876, 884, 908, 952,
+ 992, 1028, 1036, 1048, 1088, 1128, 1160, 1192,
+ 1212, 1912, 2044, 2056, 2068, 2128, 2140, 2168,
+ 2184, 2196, 2212, 2228, 2240, 2252, 2260, 2264,
+ 2284, 2292, 2296, 2300, 2328, 2340, 2352, 2364,
+ 2372, 2384, 2388, 2404, 2428, 2436, 2444, 2464,
+ 2496, 2508, 2520, 2552, 2564, 2572, 2584, 3120,
+ 3128, 3140, 3184, 3220, 3248, 3252, 3256, 3280,
+ 3304, 3320, 3352, 3380, 3400, 3432, 3464, 3548,
+ 3600, 3624, 3664, 3696, 3812, 3872, 3932, 3940,
+ 3976, 3996, 6872, 6896, 7648, 7696, 7940, 7964,
+ 7968, 7992, 8020, 8028, 8052, 8056, 8076, 8088,
+ 8104, 8116, 8128, 8136, 8148, 8164, 8180, 8192,
+ 8204, 8220, 8232, 8248, 8264, 8276, 8292, 8308,
+ 8320, 8328, 8340, 8352, 8364, 8376, 8392, 8408,
+ 8424, 8436, 8448, 8460, 8472, 8488, 8504, 8520,
+ 8536, 8548, 8560, 8572, 8584, 8596, 8608, 8612,
+ 8624, 8648, 8660, 8668, 8680, 8708, 8720, 8728,
+ 8740, 8752, 8764, 8788, 8800, 8812, 8824, 8848,
+ 8860, 8864, 8868, 8876, 8888, 8896, 8916, 8944,
+ 8948, 8960, 8964, 8968, 8980, 9148, 9172, 9212,
+ 9216, 9220, 9820, 9860, 9892, 9940, 9972, 10012,
+ 10036, 10040, 10052, 10080, 10152, 10192, 10248, 10284,
+ 10320, 10360, 10392, 10452, 10488, 10508, 10556, 10644,
+ 10684, 10812, 10844, 10880, 10912, 10956, 11172, 11200,
+ 11232, 11272, 11312, 11348, 11380, 11404, 11436, 11492,
+ 11548, 11616, 11684, 11748, 11792, 11840, 11896, 11936,
+ 11980, 12028, 12072, 12908, 12924, 12956, 12960, 12968,
+ 12976, 13020, 13048, 13076, 13104, 13136, 13168, 13196,
+ 13240, 13272, 13292, 13296, 13308, 13312, 13320, 13324,
+ 13364, 13408, 13460, 13492, 13516, 13560, 13612, 13664,
+ 13700, 13744, 13796, 13848, 13884, 13940, 13996, 14040,
+ 14084, 14140, 14148, 14156, 14164, 14184, 14192, 14204,
+ 14208, 14212, 14256, 14272, 14284, 14296, 14300, 14312,
+ 14320, 14324, 14348, 14356, 14360, 14372, 14380, 14392,
+ 14432, 14440, 14444, 14472, 14496, 14516, 14536, 14548,
+ 14560, 14572, 14580, 14588, 14596, 14604, 14612, 14620,
+ 14636, 14660, 14704, 14740, 14748, 14756, 14760, 14768,
+ -1,
+};
+
+static int unsupported_strings_1_2[] = {
+ 0, 4, 64, 104, 160, 200, 220, 236,
+ 244, 252, 272, 288, 296, 316, 332, 372,
+ 436, 500, 504, 536, 544, 560, 576, 584,
+ 592, 612, 640, 664, 708, 712, 744, 756,
+ 776, 820, 832, 840, 852, 888, 896, 920,
+ 964, 1004, 1040, 1048, 1060, 1100, 1140, 1172,
+ 1204, 1224, 2312, 2436, 2448, 2464, 2480, 2492,
+ 2512, 2524, 2536, 2596, 2608, 2636, 2652, 2656,
+ 2676, 2684, 2688, 2720, 2732, 2744, 2752, 2764,
+ 2772, 2776, 2792, 2816, 2824, 2832, 2852, 2884,
+ 2896, 2908, 2940, 2952, 2960, 2972, 3520, 3528,
+ 3540, 3584, 3620, 3648, 3652, 3656, 3680, 3704,
+ 3720, 3776, 3804, 3824, 3856, 3888, 4020, 4044,
+ 4084, 4116, 4156, 4272, 4288, 4296, 4332, 4352,
+ 4428, 4432, 8740, 8764, 9552, 9868, 9888, 9900,
+ 9916, 9928, 9940, 9948, 9960, 9976, 9992, 10004,
+ 10016, 10032, 10044, 10060, 10076, 10088, 10104, 10120,
+ 10132, 10140, 10152, 10164, 10176, 10188, 10204, 10220,
+ 10236, 10248, 10260, 10272, 10284, 10300, 10316, 10332,
+ 10348, 10360, 10372, 10384, 10396, 10408, 10420, 10424,
+ 10436, 10460, 10472, 10480, 10492, 10520, 10532, 10540,
+ 10552, 10564, 10576, 10600, 10612, 10624, 10636, 10660,
+ 10672, 10676, 10700, 10704, 10728, 10756, 10764, 10788,
+ 10792, 10796, 10804, 10816, 10824, 10844, 10872, 10876,
+ 10888, 10892, 10896, 10908, 11076, 11100, 11140, 11144,
+ 11148, 11748, 11788, 11820, 11868, 11900, 11940, 11964,
+ 11968, 11980, 12008, 12080, 12120, 12176, 12212, 12248,
+ 12288, 12320, 12380, 12400, 12448, 12536, 12576, 12704,
+ 12736, 12968, 13000, 13024, 13080, 13136, 13204, 13272,
+ 13336, 13380, 13428, 14272, 14288, 14320, 14324, 14332,
+ 14340, 14384, 14412, 14440, 14468, 14500, 14532, 14560,
+ 14604, 14636, 14656, 14696, 14740, 14792, 14824, 14848,
+ 14892, 14944, 14996, 15032, 15076, 15128, 15180, 15216,
+ 15272, 15328, 15372, 15416, 15472, 15480, 15488, 15496,
+ 15516, 15524, 15536, 15540, 15544, 15588, 15604, 15616,
+ 15628, 15632, 15644, 15652, 15656, 15680, 15688, 15692,
+ 15704, 15712, 15724, 15764, 15772, 15776, 15804, 15828,
+ 15848, 15868, 15880, 15892, 15904, 15912, 15920, 15928,
+ 15936, -1,
+};
+
+static int unsupported_strings_1_3[] = {
+ 0, 4, 64, 104, 160, 200, 220, 236,
+ 244, 252, 272, 288, 296, 316, 332, 372,
+ 436, 500, 504, 536, 544, 560, 576, 584,
+ 592, 612, 640, 664, 708, 712, 744, 756,
+ 776, 820, 832, 840, 852, 888, 896, 920,
+ 964, 1004, 1040, 1048, 1060, 1100, 1140, 1172,
+ 1204, 1224, 2312, 2436, 2448, 2464, 2480, 2492,
+ 2512, 2524, 2536, 2596, 2608, 2636, 2652, 2656,
+ 2676, 2684, 2688, 2720, 2732, 2744, 2752, 2764,
+ 2772, 2776, 2792, 2816, 2824, 2832, 2852, 2884,
+ 2896, 2908, 2940, 2952, 2960, 2972, 3520, 3528,
+ 3540, 3584, 3620, 3648, 3652, 3656, 3680, 3704,
+ 3720, 3776, 3804, 3824, 3856, 3888, 4020, 4044,
+ 4084, 4116, 4156, 4272, 4288, 4296, 4332, 4352,
+ 4428, 4432, 8740, 8764, 9552, 9868, 9888, 9900,
+ 9916, 9928, 9940, 9948, 9960, 9976, 9992, 10004,
+ 10016, 10032, 10044, 10060, 10076, 10088, 10104, 10120,
+ 10132, 10140, 10152, 10164, 10176, 10188, 10204, 10220,
+ 10236, 10248, 10260, 10272, 10284, 10300, 10316, 10332,
+ 10348, 10360, 10372, 10384, 10396, 10408, 10420, 10424,
+ 10436, 10460, 10472, 10480, 10492, 10520, 10532, 10540,
+ 10552, 10564, 10576, 10600, 10612, 10624, 10636, 10660,
+ 10672, 10676, 10700, 10704, 10728, 10756, 10764, 10788,
+ 10792, 10796, 10804, 10816, 10824, 10844, 10872, 10876,
+ 10888, 10892, 10896, 10908, 11076, 11100, 11140, 11144,
+ 11148, 11748, 11788, 11820, 11868, 11900, 11940, 11964,
+ 11968, 11980, 12008, 12080, 12120, 12176, 12212, 12248,
+ 12288, 12320, 12380, 12400, 12448, 12536, 12576, 12704,
+ 12736, 12968, 13000, 13024, 13080, 13136, 13204, 13272,
+ 13336, 13380, 13428, 14272, 14288, 14320, 14324, 14332,
+ 14340, 14384, 14412, 14440, 14468, 14500, 14532, 14560,
+ 14604, 14636, 14656, 14696, 14740, 14792, 14824, 14848,
+ 14892, 14944, 14996, 15032, 15076, 15128, 15180, 15216,
+ 15272, 15328, 15372, 15416, 15472, 15480, 15488, 15496,
+ 15516, 15524, 15536, 15540, 15544, 15588, 15604, 15616,
+ 15628, 15632, 15644, 15652, 15656, 15680, 15688, 15692,
+ 15704, 15712, 15724, 15764, 15772, 15776, 15804, 15828,
+ 15848, 15868, 15880, 15892, 15904, 15912, 15920, 15928,
+ 15936, -1,
+};
+
+static int *unsupported_strings[] =
{
- { 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 },
+ unsupported_strings_1_0,
+ unsupported_strings_1_2,
+ unsupported_strings_1_3,
};
+static boolean StringIsUnsupported(unsigned int offset)
+{
+ int *string_list;
+ int i;
+
+ string_list = unsupported_strings[deh_hhe_version];
+
+ for (i=0; string_list[i] >= 0; ++i)
+ {
+ if ((unsigned int) string_list[i] == offset)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
static boolean GetStringByOffset(unsigned int offset, char **result)
{
int i;
- for (i=0; i<arrlen(string_table); ++i)
+ for (i=0; i<arrlen(strings); ++i)
{
- if (string_table[i].offset == offset)
+ if (strings[i].offsets[deh_hhe_version] == offset)
{
- *result = string_table[i].string;
+ *result = strings[i].string;
return true;
}
}
@@ -847,18 +755,18 @@ static void *DEH_TextStart(deh_context_t *context, char *line)
}
repl_text[repl_len] = '\0';
- // Find the string to replace:
+ // We don't support all strings, but at least recognise them:
- if (!GetStringByOffset(orig_offset, &orig_text))
+ if (StringIsUnsupported(orig_offset))
{
- DEH_Error(context, "Unknown string offset: %i", orig_offset);
+ DEH_Warning(context, "Unsupported string replacement: %i", orig_offset);
}
- // We don't support all strings, but at least recognise them:
+ // Find the string to replace:
- else if (orig_text == NULL)
+ else if (!GetStringByOffset(orig_offset, &orig_text))
{
- DEH_Warning(context, "Unsupported string replacement: %i", orig_offset);
+ DEH_Error(context, "Unknown string offset: %i", orig_offset);
}
// Only allow string replacements that are possible in Vanilla Doom.