diff --git a/src/game/activemenu/activemenu.c b/src/game/activemenu/activemenu.c index 551e93f1a..571f413ea 100644 --- a/src/game/activemenu/activemenu.c +++ b/src/game/activemenu/activemenu.c @@ -2109,7 +2109,7 @@ u8 var800719a0[][3] = { {0, 1, 2}, {3, 4, 5}, {6, 7, 8} }; Gfx *amRenderSlot(Gfx *gdl, char *text, s16 x, s16 y, s32 mode, s32 flags) { static u32 obcol = 0xff00004f; // outer border - static u32 ibcol = 0x3f00008f; // inner background + static u32 ibcol = VERSION >= VERSION_NTSC_1_0 ? 0x3f00008f : 0x3f00006f; // inner background static u32 defcol = 0xff4f00ff; // text static u32 favcol = 0xffff7fff; // unused static u32 pickcol = 0xff4f00ff; // unused diff --git a/src/game/bg.c b/src/game/bg.c index 2487755c2..73cab2578 100644 --- a/src/game/bg.c +++ b/src/game/bg.c @@ -110,6 +110,11 @@ u32 var8007fc04 = 0x00000000; u8 *var8007fc08 = NULL; s16 var8007fc0c = 0; s16 var8007fc10 = 0; + +#if VERSION < VERSION_NTSC_1_0 +u32 var80082474nb = 0; +#endif + s32 var8007fc14 = 0; u32 var8007fc18 = 0x01000100; u32 var8007fc1c = 0x00000000; diff --git a/src/game/bondview.c b/src/game/bondview.c index bf489e546..efa6bc332 100644 --- a/src/game/bondview.c +++ b/src/game/bondview.c @@ -16247,6 +16247,21 @@ const char var7f1b046cnb[] = ""; const char var7f1b0470nb[] = ""; const char var7f1b0474nb[] = " JMBC WIDE BAND SCANNER\n"; +s32 var8008095cnb = 0; +s32 var80080960nb = -1; + +char directions[][3] = { + {'n', '\0', '\0'}, + {'n', 'e', '\0'}, + {'e', '\0', '\0'}, + {'s', 'e', '\0'}, + {'s', '\0', '\0'}, + {'s', 'w', '\0'}, + {'w', '\0', '\0'}, + {'n', 'w', '\0'}, + {'n', '\0', '\0'}, +}; + GLOBAL_ASM( glabel bviewRenderHorizonScanner .late_rodata diff --git a/src/game/bondwalk.c b/src/game/bondwalk.c index 1be59a11b..de6242c14 100644 --- a/src/game/bondwalk.c +++ b/src/game/bondwalk.c @@ -2292,6 +2292,12 @@ void bwalkUpdateVertical(void) } } #else +s32 sounds[] = { + SFX_JO_LANDING_046F, + SFX_JO_LANDING_05B6, + SFX_JO_LANDING_05B7 +}; + GLOBAL_ASM( glabel bwalkUpdateVertical .late_rodata diff --git a/src/game/cheats.c b/src/game/cheats.c index 946e16c08..a16c64d92 100644 --- a/src/game/cheats.c +++ b/src/game/cheats.c @@ -21,33 +21,63 @@ u32 g_CheatsEnabledBank1; struct menuitem g_CheatsBuddiesMenuItems[]; struct menudialog g_CheatsBuddiesMenuDialog; +#define TIME(mins, secs) (mins * 60 + secs) +#define m +#define s + struct cheat g_Cheats[NUM_CHEATS] = { - { L_MPWEAPONS_075, 123, SOLOSTAGEINDEX_EXTRACTION, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Hurricane Fists - { L_MPWEAPONS_076, 100, SOLOSTAGEINDEX_G5BUILDING, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Cloaking Device - { L_MPWEAPONS_077, 230, SOLOSTAGEINDEX_ESCAPE, DIFF_A, CHEATFLAG_TIMED }, // Invincible - { L_MPWEAPONS_078, 331, SOLOSTAGEINDEX_SKEDARRUINS, DIFF_PA, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // All Guns in Solo - { L_MPWEAPONS_079, 427, SOLOSTAGEINDEX_PELAGIC, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo - { L_MPWEAPONS_080, 191, SOLOSTAGEINDEX_AIRBASE, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo, No Reloads - { L_MPWEAPONS_081, 0, SOLOSTAGEINDEX_INVESTIGATION, DIFF_A, CHEATFLAG_COMPLETION }, // Slo-mo Single Player - { L_MPWEAPONS_082, 0, SOLOSTAGEINDEX_CHICAGO, DIFF_A, CHEATFLAG_COMPLETION }, // DK Mode - { L_MPWEAPONS_083, 170, SOLOSTAGEINDEX_CRASHSITE, DIFF_A, CHEATFLAG_TIMED }, // Trent's Magnum - { L_MPWEAPONS_084, 447, SOLOSTAGEINDEX_DEEPSEA, DIFF_PA, CHEATFLAG_TIMED }, // FarSight - { L_MPWEAPONS_085, 0, SOLOSTAGEINDEX_G5BUILDING, DIFF_A, CHEATFLAG_COMPLETION }, // Small Jo - { L_MPWEAPONS_086, 0, SOLOSTAGEINDEX_INFILTRATION, DIFF_A, CHEATFLAG_COMPLETION }, // Small Characters - { L_MPWEAPONS_087, 0, SOLOSTAGEINDEX_DEFENSE, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Shields - { L_MPWEAPONS_088, 0, SOLOSTAGEINDEX_DEEPSEA, DIFF_A, CHEATFLAG_COMPLETION }, // Jo Shield - { L_MPWEAPONS_089, 105, SOLOSTAGEINDEX_DEFENSE, DIFF_A, CHEATFLAG_TIMED }, // Super Shield - { L_MPWEAPONS_090, 0, SOLOSTAGEINDEX_DEFECTION, DIFF_A, CHEATFLAG_COMPLETION }, // Classic Sight - { L_MPWEAPONS_091, 0, SOLOSTAGEINDEX_AIRBASE, DIFF_A, CHEATFLAG_COMPLETION }, // Team Heads Only - { L_MPWEAPONS_092, 479, SOLOSTAGEINDEX_RESCUE, DIFF_PA, CHEATFLAG_TIMED }, // Play as Elvis - { L_MPWEAPONS_093, 0, SOLOSTAGEINDEX_PELAGIC, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Rockets - { L_MPWEAPONS_094, 235, SOLOSTAGEINDEX_AIRFORCEONE, DIFF_PA, CHEATFLAG_TIMED }, // Unlimited Ammo - Laptop Sentry Gun - { L_MPWEAPONS_095, 90, SOLOSTAGEINDEX_DEFECTION, DIFF_SA, CHEATFLAG_TIMED }, // Marquis of Queensbury Rules - { L_MPWEAPONS_096, 0, SOLOSTAGEINDEX_CRASHSITE, DIFF_A, CHEATFLAG_COMPLETION }, // Perfect Darkness - { L_MPWEAPONS_097, 390, SOLOSTAGEINDEX_INVESTIGATION, DIFF_PA, CHEATFLAG_TIMED }, // Pugilist - { L_MPWEAPONS_098, 300, SOLOSTAGEINDEX_INFILTRATION, DIFF_SA, CHEATFLAG_TIMED }, // Hotshot - { L_MPWEAPONS_099, 150, SOLOSTAGEINDEX_VILLA, DIFF_SA, CHEATFLAG_TIMED }, // Hit and Run - { L_MPWEAPONS_100, 317, SOLOSTAGEINDEX_ATTACKSHIP, DIFF_SA, CHEATFLAG_TIMED }, // Alien + { L_MPWEAPONS_075, TIME(2 m, 3 s), SOLOSTAGEINDEX_EXTRACTION, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Hurricane Fists +#if VERSION >= VERSION_NTSC_1_0 + { L_MPWEAPONS_076, TIME(1 m, 40 s), SOLOSTAGEINDEX_G5BUILDING, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Cloaking Device +#else + { L_MPWEAPONS_076, TIME(0 m, 59 s), SOLOSTAGEINDEX_G5BUILDING, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Cloaking Device +#endif + { L_MPWEAPONS_077, TIME(3 m, 50 s), SOLOSTAGEINDEX_ESCAPE, DIFF_A, CHEATFLAG_TIMED }, // Invincible +#if VERSION >= VERSION_NTSC_1_0 + { L_MPWEAPONS_078, TIME(5 m, 31 s), SOLOSTAGEINDEX_SKEDARRUINS, DIFF_PA, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // All Guns in Solo + { L_MPWEAPONS_079, TIME(7 m, 7 s), SOLOSTAGEINDEX_PELAGIC, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo + { L_MPWEAPONS_080, TIME(3 m, 11 s), SOLOSTAGEINDEX_AIRBASE, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo, No Reloads +#else + { L_MPWEAPONS_078, TIME(4 m, 7 s), SOLOSTAGEINDEX_SKEDARRUINS, DIFF_PA, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // All Guns in Solo + { L_MPWEAPONS_079, TIME(5 m, 50 s), SOLOSTAGEINDEX_PELAGIC, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo + { L_MPWEAPONS_080, TIME(2 m, 59 s), SOLOSTAGEINDEX_AIRBASE, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo, No Reloads +#endif + { L_MPWEAPONS_081, 0, SOLOSTAGEINDEX_INVESTIGATION, DIFF_A, CHEATFLAG_COMPLETION }, // Slo-mo Single Player + { L_MPWEAPONS_082, 0, SOLOSTAGEINDEX_CHICAGO, DIFF_A, CHEATFLAG_COMPLETION }, // DK Mode + { L_MPWEAPONS_083, TIME(2 m, 50 s), SOLOSTAGEINDEX_CRASHSITE, DIFF_A, CHEATFLAG_TIMED }, // Trent's Magnum +#if VERSION >= VERSION_NTSC_1_0 + { L_MPWEAPONS_084, TIME(7 m, 27 s), SOLOSTAGEINDEX_DEEPSEA, DIFF_PA, CHEATFLAG_TIMED }, // FarSight +#else + { L_MPWEAPONS_084, TIME(5 m, 13 s), SOLOSTAGEINDEX_DEEPSEA, DIFF_PA, CHEATFLAG_TIMED }, // FarSight +#endif + { L_MPWEAPONS_085, 0, SOLOSTAGEINDEX_G5BUILDING, DIFF_A, CHEATFLAG_COMPLETION }, // Small Jo + { L_MPWEAPONS_086, 0, SOLOSTAGEINDEX_INFILTRATION, DIFF_A, CHEATFLAG_COMPLETION }, // Small Characters + { L_MPWEAPONS_087, 0, SOLOSTAGEINDEX_DEFENSE, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Shields + { L_MPWEAPONS_088, 0, SOLOSTAGEINDEX_DEEPSEA, DIFF_A, CHEATFLAG_COMPLETION }, // Jo Shield +#if VERSION >= VERSION_NTSC_1_0 + { L_MPWEAPONS_089, TIME(1 m, 45 s), SOLOSTAGEINDEX_DEFENSE, DIFF_A, CHEATFLAG_TIMED }, // Super Shield +#else + { L_MPWEAPONS_089, TIME(1 m, 12 s), SOLOSTAGEINDEX_DEFENSE, DIFF_A, CHEATFLAG_TIMED }, // Super Shield +#endif + { L_MPWEAPONS_090, 0, SOLOSTAGEINDEX_DEFECTION, DIFF_A, CHEATFLAG_COMPLETION }, // Classic Sight + { L_MPWEAPONS_091, 0, SOLOSTAGEINDEX_AIRBASE, DIFF_A, CHEATFLAG_COMPLETION }, // Team Heads Only +#if VERSION >= VERSION_NTSC_1_0 + { L_MPWEAPONS_092, TIME(7 m, 59 s), SOLOSTAGEINDEX_RESCUE, DIFF_PA, CHEATFLAG_TIMED }, // Play as Elvis +#else + { L_MPWEAPONS_092, TIME(7 m, 0 s), SOLOSTAGEINDEX_RESCUE, DIFF_PA, CHEATFLAG_TIMED }, // Play as Elvis +#endif + { L_MPWEAPONS_093, 0, SOLOSTAGEINDEX_PELAGIC, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Rockets +#if VERSION >= VERSION_NTSC_1_0 + { L_MPWEAPONS_094, TIME(3 m, 55 s), SOLOSTAGEINDEX_AIRFORCEONE, DIFF_PA, CHEATFLAG_TIMED }, // Unlimited Ammo - Laptop Sentry Gun +#else + { L_MPWEAPONS_094, TIME(2 m, 59 s), SOLOSTAGEINDEX_AIRFORCEONE, DIFF_PA, CHEATFLAG_TIMED }, // Unlimited Ammo - Laptop Sentry Gun +#endif + { L_MPWEAPONS_095, TIME(1 m, 30 s), SOLOSTAGEINDEX_DEFECTION, DIFF_SA, CHEATFLAG_TIMED }, // Marquis of Queensbury Rules + { L_MPWEAPONS_096, 0, SOLOSTAGEINDEX_CRASHSITE, DIFF_A, CHEATFLAG_COMPLETION }, // Perfect Darkness + { L_MPWEAPONS_097, TIME(6 m, 30 s), SOLOSTAGEINDEX_INVESTIGATION, DIFF_PA, CHEATFLAG_TIMED }, // Pugilist + { L_MPWEAPONS_098, TIME(5 m, 0 s), SOLOSTAGEINDEX_INFILTRATION, DIFF_SA, CHEATFLAG_TIMED }, // Hotshot + { L_MPWEAPONS_099, TIME(2 m, 30 s), SOLOSTAGEINDEX_VILLA, DIFF_SA, CHEATFLAG_TIMED }, // Hit and Run + { L_MPWEAPONS_100, TIME(5 m, 17 s), SOLOSTAGEINDEX_ATTACKSHIP, DIFF_SA, CHEATFLAG_TIMED }, // Alien { L_MPWEAPONS_101, 0, SOLOSTAGEINDEX_SKEDARRUINS, DIFF_A, CHEATFLAG_COMPLETION | CHEATFLAG_TRANSFERPAK }, // R-Tracker/Weapon Cache Locations { L_MPWEAPONS_102, 0, SOLOSTAGEINDEX_EXTRACTION, DIFF_A, CHEATFLAG_COMPLETION }, // Rocket Launcher { L_MPWEAPONS_103, 0, SOLOSTAGEINDEX_VILLA, DIFF_A, CHEATFLAG_COMPLETION }, // Sniper Rifle @@ -55,7 +85,11 @@ struct cheat g_Cheats[NUM_CHEATS] = { { L_MPWEAPONS_105, 0, SOLOSTAGEINDEX_ESCAPE, DIFF_A, CHEATFLAG_COMPLETION }, // SuperDragon { L_MPWEAPONS_106, 0, SOLOSTAGEINDEX_AIRFORCEONE, DIFF_A, CHEATFLAG_COMPLETION }, // Laptop Gun { L_MPWEAPONS_107, 0, SOLOSTAGEINDEX_ATTACKSHIP, DIFF_A, CHEATFLAG_COMPLETION }, // Phoenix - { L_MPWEAPONS_108, 120, SOLOSTAGEINDEX_CHICAGO, DIFF_PA, CHEATFLAG_TIMED }, // Psychosis Gun +#if VERSION >= VERSION_NTSC_1_0 + { L_MPWEAPONS_108, TIME(2 m, 0 s), SOLOSTAGEINDEX_CHICAGO, DIFF_PA, CHEATFLAG_TIMED }, // Psychosis Gun +#else + { L_MPWEAPONS_108, TIME(1 m, 44 s), SOLOSTAGEINDEX_CHICAGO, DIFF_PA, CHEATFLAG_TIMED }, // Psychosis Gun +#endif { L_MPWEAPONS_109, WEAPON_PP9I, 0, 0, CHEATFLAG_FIRINGRANGE }, // PP9i { L_MPWEAPONS_110, WEAPON_CC13, 0, 0, CHEATFLAG_FIRINGRANGE }, // CC13 { L_MPWEAPONS_111, WEAPON_KL01313, 0, 0, CHEATFLAG_FIRINGRANGE }, // KL01313 diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index f4b9a254d..ebef85c9c 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -52,6 +52,27 @@ #include "data.h" #include "types.h" +s32 g_RecentQuipsPlayed[5]; +u32 var8009cd84; +u32 var8009cd88; +u32 var8009cd8c; +u32 var8009cd90; +u32 var8009cd94; +u8 g_RecentQuipsIndex; + +f32 g_EnemyAccuracyScale = 1; +f32 g_DamageReceivedScale = 1; +f32 g_DamageDealtScale = 1; +f32 var80062cac = 1; + +#if VERSION >= VERSION_NTSC_1_0 +u32 var80062cb0 = 0x00000000; +u32 var80062cb4 = 0x00000000; +u32 var80062cb8 = 0x00000000; +#endif + +s32 var80062cbc = 0; + #if VERSION < VERSION_NTSC_1_0 const char *g_ChrActionNames[] = { "ACT_INIT", @@ -199,22 +220,6 @@ const char *g_ChrLiftActionNames[] = { }; #endif -s32 g_RecentQuipsPlayed[5]; -u32 var8009cd84; -u32 var8009cd88; -u32 var8009cd8c; -u32 var8009cd90; -u32 var8009cd94; -u8 g_RecentQuipsIndex; - -f32 g_EnemyAccuracyScale = 1; -f32 g_DamageReceivedScale = 1; -f32 g_DamageDealtScale = 1; -f32 var80062cac = 1; -u32 var80062cb0 = 0x00000000; -u32 var80062cb4 = 0x00000000; -u32 var80062cb8 = 0x00000000; -s32 var80062cbc = 0; struct animtablerow g_DeathAnimsHumanLfoot[] = { { ANIM_DEATH_0020, 0, -1, 0.5, 0, 26, -1 }, @@ -9342,11 +9347,19 @@ void chrTickDie(struct chrdata *chr) }; u16 specialdiesounds[] = { +#if VERSION >= VERSION_NTSC_1_0 SFX_M1_NOOO, // "Noooo!" SFX_M1_SCREAM, // Death scream SFX_M2_NOOO, // "Noooo!" SFX_M2_NOOO, // "Noooo!" SFX_M1_SCREAM, // Death scream +#else + SFX_0313, + SFX_034C, + SFX_0411, + SFX_0411, + SFX_034C, +#endif SFX_THUD_8092, SFX_THUD_8093, SFX_THUD_8094, @@ -22258,7 +22271,11 @@ void func0f0482cc(u32 ailistid) g_BgChrs[g_NumBgChrs - 1].aireturnlist = -1; } + +#if VERSION >= VERSION_NTSC_1_0 u32 var80068454 = 0; +#endif + s32 var80068458 = 0; u32 var8006845c = 0x01020408; diff --git a/src/game/chr/chrai.c b/src/game/chr/chrai.c index 9e31098cb..61124bd3a 100644 --- a/src/game/chr/chrai.c +++ b/src/game/chr/chrai.c @@ -500,129 +500,129 @@ bool (*g_CommandPointers[])(void) = { }; u16 g_CommandLengths[] = { - /*0x0000*/ 0x0003, /*0x0001*/ 0x0003, /*0x0002*/ 0x0003, /*0x0003*/ 0x0002, - /*0x0004*/ 0x0002, /*0x0005*/ 0x0005, /*0x0006*/ 0x0005, /*0x0007*/ 0x0004, - /*0x0008*/ 0x0002, /*0x0009*/ 0x0002, /*0x000a*/ 0x0002, /*0x000b*/ 0x000c, - /*0x000c*/ 0x0003, /*0x000d*/ 0x0002, /*0x000e*/ 0x0002, /*0x000f*/ 0x0003, - /*0x0010*/ 0x0003, /*0x0011*/ 0x0003, /*0x0012*/ 0x0003, /*0x0013*/ 0x0003, - /*0x0014*/ 0x0003, /*0x0015*/ 0x0007, /*0x0016*/ 0x0007, /*0x0017*/ 0x0007, - /*0x0018*/ 0x0007, /*0x0019*/ 0x0008, /*0x001a*/ 0x0005, /*0x001b*/ 0x0007, - /*0x001c*/ 0x0006, /*0x001d*/ 0x0004, /*0x001e*/ 0x0003, /*0x001f*/ 0x0004, - /*0x0020*/ 0x0004, /*0x0021*/ 0x0003, /*0x0022*/ 0x0002, /*0x0023*/ 0x0003, - /*0x0024*/ 0x0002, /*0x0025*/ 0x0002, /*0x0026*/ 0x0003, /*0x0027*/ 0x0005, - /*0x0028*/ 0x0002, /*0x0029*/ 0x0002, /*0x002a*/ 0x0003, /*0x002b*/ 0x0003, - /*0x002c*/ 0x0003, /*0x002d*/ 0x0003, /*0x002e*/ 0x0003, /*0x002f*/ 0x0004, - /*0x0030*/ 0x0004, /*0x0031*/ 0x0004, /*0x0032*/ 0x0003, /*0x0033*/ 0x0004, - /*0x0034*/ 0x0004, /*0x0035*/ 0x0003, /*0x0036*/ 0x0002, /*0x0037*/ 0x0004, - /*0x0038*/ 0x0004, /*0x0039*/ 0x0003, /*0x003a*/ 0x0003, /*0x003b*/ 0x0003, - /*0x003c*/ 0x0003, /*0x003d*/ 0x0004, /*0x003e*/ 0x0004, /*0x003f*/ 0x0003, - /*0x0040*/ 0x0007, /*0x0041*/ 0x0007, /*0x0042*/ 0x0003, /*0x0043*/ 0x0003, - /*0x0044*/ 0x0003, /*0x0045*/ 0x0004, /*0x0046*/ 0x0003, /*0x0047*/ 0x0003, - /*0x0048*/ 0x0004, /*0x0049*/ 0x0005, /*0x004a*/ 0x0003, /*0x004b*/ 0x0003, - /*0x004c*/ 0x0003, /*0x004d*/ 0x0004, /*0x004e*/ 0x0006, /*0x004f*/ 0x0004, - /*0x0050*/ 0x0004, /*0x0051*/ 0x0004, /*0x0052*/ 0x0005, /*0x0053*/ 0x0005, - /*0x0054*/ 0x0008, /*0x0055*/ 0x0008, /*0x0056*/ 0x0006, /*0x0057*/ 0x0006, - /*0x0058*/ 0x0005, /*0x0059*/ 0x0007, /*0x005a*/ 0x0007, /*0x005b*/ 0x0007, - /*0x005c*/ 0x0005, /*0x005d*/ 0x0005, /*0x005e*/ 0x0004, /*0x005f*/ 0x0005, - /*0x0060*/ 0x0005, /*0x0061*/ 0x0005, /*0x0062*/ 0x0004, /*0x0063*/ 0x0005, - /*0x0064*/ 0x0001, /*0x0065*/ 0x0003, /*0x0066*/ 0x0003, /*0x0067*/ 0x0003, - /*0x0068*/ 0x0003, /*0x0069*/ 0x0003, /*0x006a*/ 0x0004, /*0x006b*/ 0x0005, - /*0x006c*/ 0x0003, /*0x006d*/ 0x0003, /*0x006e*/ 0x0005, /*0x006f*/ 0x0004, - /*0x0070*/ 0x0004, /*0x0071*/ 0x0004, /*0x0072*/ 0x0005, /*0x0073*/ 0x0004, - /*0x0074*/ 0x0004, /*0x0075*/ 0x0004, /*0x0076*/ 0x0004, /*0x0077*/ 0x0004, - /*0x0078*/ 0x0004, /*0x0079*/ 0x0005, /*0x007a*/ 0x0005, /*0x007b*/ 0x0004, - /*0x007c*/ 0x0004, /*0x007d*/ 0x0004, /*0x007e*/ 0x0004, /*0x007f*/ 0x0004, - /*0x0080*/ 0x0004, /*0x0081*/ 0x0005, /*0x0082*/ 0x0005, /*0x0083*/ 0x0004, - /*0x0084*/ 0x0003, /*0x0085*/ 0x0003, /*0x0086*/ 0x0004, /*0x0087*/ 0x0003, - /*0x0088*/ 0x0004, /*0x0089*/ 0x0003, /*0x008a*/ 0x0003, /*0x008b*/ 0x0003, - /*0x008c*/ 0x0004, /*0x008d*/ 0x0003, /*0x008e*/ 0x0005, /*0x008f*/ 0x0005, - /*0x0090*/ 0x0003, /*0x0091*/ 0x0002, /*0x0092*/ 0x0004, /*0x0093*/ 0x0003, - /*0x0094*/ 0x0003, /*0x0095*/ 0x0003, /*0x0096*/ 0x0005, /*0x0097*/ 0x0004, - /*0x0098*/ 0x0003, /*0x0099*/ 0x0003, /*0x009a*/ 0x0003, /*0x009b*/ 0x0007, - /*0x009c*/ 0x0007, /*0x009d*/ 0x0009, /*0x009e*/ 0x0008, /*0x009f*/ 0x0008, - /*0x00a0*/ 0x0009, /*0x00a1*/ 0x0006, /*0x00a2*/ 0x0006, /*0x00a3*/ 0x0008, - /*0x00a4*/ 0x0006, /*0x00a5*/ 0x0006, /*0x00a6*/ 0x0007, /*0x00a7*/ 0x0007, - /*0x00a8*/ 0x0007, /*0x00a9*/ 0x0008, /*0x00aa*/ 0x0007, /*0x00ab*/ 0x0007, - /*0x00ac*/ 0x0008, /*0x00ad*/ 0x0007, /*0x00ae*/ 0x0007, /*0x00af*/ 0x0008, - /*0x00b0*/ 0x0003, /*0x00b1*/ 0x0004, /*0x00b2*/ 0x0004, /*0x00b3*/ 0x0005, - /*0x00b4*/ 0x0004, /*0x00b5*/ 0x0000, /*0x00b6*/ 0x0002, /*0x00b7*/ 0x0002, - /*0x00b8*/ 0x0002, /*0x00b9*/ 0x0002, /*0x00ba*/ 0x0003, /*0x00bb*/ 0x0003, - /*0x00bc*/ 0x0006, /*0x00bd*/ 0x0006, /*0x00be*/ 0x0002, /*0x00bf*/ 0x0002, - /*0x00c0*/ 0x0004, /*0x00c1*/ 0x0002, /*0x00c2*/ 0x0002, /*0x00c3*/ 0x0003, - /*0x00c4*/ 0x0005, /*0x00c5*/ 0x0005, /*0x00c6*/ 0x000d, /*0x00c7*/ 0x000c, - /*0x00c8*/ 0x000a, /*0x00c9*/ 0x0009, /*0x00ca*/ 0x000a, /*0x00cb*/ 0x0005, - /*0x00cc*/ 0x0006, /*0x00cd*/ 0x0009, /*0x00ce*/ 0x0005, /*0x00cf*/ 0x0006, - /*0x00d0*/ 0x0007, /*0x00d1*/ 0x0007, /*0x00d2*/ 0x0007, /*0x00d3*/ 0x0003, - /*0x00d4*/ 0x0006, /*0x00d5*/ 0x0003, /*0x00d6*/ 0x0006, /*0x00d7*/ 0x0006, - /*0x00d8*/ 0x0003, /*0x00d9*/ 0x0003, /*0x00da*/ 0x0005, /*0x00db*/ 0x0003, - /*0x00dc*/ 0x0002, /*0x00dd*/ 0x0002, /*0x00de*/ 0x0004, /*0x00df*/ 0x0007, - /*0x00e0*/ 0x0004, /*0x00e1*/ 0x0003, /*0x00e2*/ 0x0007, /*0x00e3*/ 0x0003, - /*0x00e4*/ 0x0003, /*0x00e5*/ 0x0004, /*0x00e6*/ 0x0001, /*0x00e7*/ 0x0001, - /*0x00e8*/ 0x0003, /*0x00e9*/ 0x0004, /*0x00ea*/ 0x0004, /*0x00eb*/ 0x0006, - /*0x00ec*/ 0x0004, /*0x00ed*/ 0x0004, /*0x00ee*/ 0x0005, /*0x00ef*/ 0x0006, - /*0x00f0*/ 0x0003, /*0x00f1*/ 0x0003, /*0x00f2*/ 0x0002, /*0x00f3*/ 0x0003, - /*0x00f4*/ 0x000e, /*0x00f5*/ 0x0002, /*0x00f6*/ 0x0003, /*0x00f7*/ 0x0003, - /*0x00f8*/ 0x0004, /*0x00f9*/ 0x0005, /*0x00fa*/ 0x0003, /*0x00fb*/ 0x0003, - /*0x00fc*/ 0x0004, /*0x00fd*/ 0x0004, /*0x00fe*/ 0x0002, /*0x00ff*/ 0x0002, - /*0x0100*/ 0x0003, /*0x0101*/ 0x0003, /*0x0102*/ 0x000b, /*0x0103*/ 0x0003, - /*0x0104*/ 0x0002, /*0x0105*/ 0x0005, /*0x0106*/ 0x0005, /*0x0107*/ 0x0003, - /*0x0108*/ 0x0006, /*0x0109*/ 0x0006, /*0x010a*/ 0x0008, /*0x010b*/ 0x0004, - /*0x010c*/ 0x0004, /*0x010d*/ 0x0002, /*0x010e*/ 0x0004, /*0x010f*/ 0x0006, - /*0x0110*/ 0x0006, /*0x0111*/ 0x0004, /*0x0112*/ 0x0008, /*0x0113*/ 0x0003, - /*0x0114*/ 0x0003, /*0x0115*/ 0x0003, /*0x0116*/ 0x0003, /*0x0117*/ 0x0003, - /*0x0118*/ 0x0007, /*0x0119*/ 0x0007, /*0x011a*/ 0x0008, /*0x011b*/ 0x0007, - /*0x011c*/ 0x0007, /*0x011d*/ 0x0008, /*0x011e*/ 0x0004, /*0x011f*/ 0x0004, - /*0x0120*/ 0x0004, /*0x0121*/ 0x0005, /*0x0122*/ 0x0009, /*0x0123*/ 0x0009, - /*0x0124*/ 0x0003, /*0x0125*/ 0x0003, /*0x0126*/ 0x0003, /*0x0127*/ 0x0003, - /*0x0128*/ 0x0004, /*0x0129*/ 0x0004, /*0x012a*/ 0x0004, /*0x012b*/ 0x0003, - /*0x012c*/ 0x0003, /*0x012d*/ 0x0001, /*0x012e*/ 0x0001, /*0x012f*/ 0x0002, - /*0x0130*/ 0x000a, /*0x0131*/ 0x0003, /*0x0132*/ 0x0004, /*0x0133*/ 0x0004, - /*0x0134*/ 0x0005, /*0x0135*/ 0x0003, /*0x0136*/ 0x0004, /*0x0137*/ 0x0004, - /*0x0138*/ 0x0004, /*0x0139*/ 0x0008, /*0x013a*/ 0x0005, /*0x013b*/ 0x0003, - /*0x013c*/ 0x0003, /*0x013d*/ 0x0004, /*0x013e*/ 0x0002, /*0x013f*/ 0x0003, - /*0x0140*/ 0x0005, /*0x0141*/ 0x0009, /*0x0142*/ 0x0004, /*0x0143*/ 0x0002, - /*0x0144*/ 0x0002, /*0x0145*/ 0x0002, /*0x0146*/ 0x0002, /*0x0147*/ 0x0004, - /*0x0148*/ 0x0004, /*0x0149*/ 0x0006, /*0x014a*/ 0x0006, /*0x014b*/ 0x0003, - /*0x014c*/ 0x0001, /*0x014d*/ 0x0001, /*0x014e*/ 0x0001, /*0x014f*/ 0x0001, - /*0x0150*/ 0x0001, /*0x0151*/ 0x0001, /*0x0152*/ 0x0005, /*0x0153*/ 0x0001, - /*0x0154*/ 0x0001, /*0x0155*/ 0x0001, /*0x0156*/ 0x0001, /*0x0157*/ 0x0003, - /*0x0158*/ 0x0001, /*0x0159*/ 0x0001, /*0x015a*/ 0x0001, /*0x015b*/ 0x0003, - /*0x015c*/ 0x0002, /*0x015d*/ 0x0001, /*0x015e*/ 0x0001, /*0x015f*/ 0x0001, - /*0x0160*/ 0x0001, /*0x0161*/ 0x0001, /*0x0162*/ 0x0001, /*0x0163*/ 0x0001, - /*0x0164*/ 0x0001, /*0x0165*/ 0x0004, /*0x0166*/ 0x0004, /*0x0167*/ 0x0003, - /*0x0168*/ 0x0004, /*0x0169*/ 0x0004, /*0x016a*/ 0x0007, /*0x016b*/ 0x000a, - /*0x016c*/ 0x0002, /*0x016d*/ 0x0005, /*0x016e*/ 0x0005, /*0x016f*/ 0x0005, - /*0x0170*/ 0x0004, /*0x0171*/ 0x0005, /*0x0172*/ 0x0004, /*0x0173*/ 0x0004, - /*0x0174*/ 0x0003, /*0x0175*/ 0x0003, /*0x0176*/ 0x0003, /*0x0177*/ 0x0009, - /*0x0178*/ 0x0004, /*0x0179*/ 0x000b, /*0x017a*/ 0x0003, /*0x017b*/ 0x0004, - /*0x017c*/ 0x0005, /*0x017d*/ 0x0003, /*0x017e*/ 0x0002, /*0x017f*/ 0x0003, - /*0x0180*/ 0x0002, /*0x0181*/ 0x0005, /*0x0182*/ 0x0004, /*0x0183*/ 0x0003, - /*0x0184*/ 0x0004, /*0x0185*/ 0x0002, /*0x0186*/ 0x0006, /*0x0187*/ 0x0003, - /*0x0188*/ 0x0004, /*0x0189*/ 0x0004, /*0x018a*/ 0x0005, /*0x018b*/ 0x0003, - /*0x018c*/ 0x0004, /*0x018d*/ 0x0004, /*0x018e*/ 0x0007, /*0x018f*/ 0x0008, - /*0x0190*/ 0x0003, /*0x0191*/ 0x0003, /*0x0192*/ 0x0004, /*0x0193*/ 0x0004, - /*0x0194*/ 0x0001, /*0x0195*/ 0x0001, /*0x0196*/ 0x0001, /*0x0197*/ 0x0001, - /*0x0198*/ 0x0001, /*0x0199*/ 0x0001, /*0x019a*/ 0x0001, /*0x019b*/ 0x0001, - /*0x019c*/ 0x0001, /*0x019d*/ 0x0001, /*0x019e*/ 0x0006, /*0x019f*/ 0x0005, - /*0x01a0*/ 0x0004, /*0x01a1*/ 0x0002, /*0x01a2*/ 0x0004, /*0x01a3*/ 0x0003, - /*0x01a4*/ 0x0006, /*0x01a5*/ 0x0003, /*0x01a6*/ 0x0004, /*0x01a7*/ 0x0004, - /*0x01a8*/ 0x0001, /*0x01a9*/ 0x0001, /*0x01aa*/ 0x0003, /*0x01ab*/ 0x0005, - /*0x01ac*/ 0x0001, /*0x01ad*/ 0x0003, /*0x01ae*/ 0x0003, /*0x01af*/ 0x0004, - /*0x01b0*/ 0x0001, /*0x01b1*/ 0x0012, /*0x01b2*/ 0x0003, /*0x01b3*/ 0x0003, - /*0x01b4*/ 0x0003, /*0x01b5*/ 0x0004, /*0x01b6*/ 0x0003, /*0x01b7*/ 0x0005, - /*0x01b8*/ 0x0004, /*0x01b9*/ 0x0002, /*0x01ba*/ 0x0007, /*0x01bb*/ 0x0004, - /*0x01bc*/ 0x0004, /*0x01bd*/ 0x0003, /*0x01be*/ 0x0005, /*0x01bf*/ 0x0005, - /*0x01c0*/ 0x0004, /*0x01c1*/ 0x0004, /*0x01c2*/ 0x0004, /*0x01c3*/ 0x0004, - /*0x01c4*/ 0x0004, /*0x01c5*/ 0x0002, /*0x01c6*/ 0x0004, /*0x01c7*/ 0x0003, - /*0x01c8*/ 0x0003, /*0x01c9*/ 0x0003, /*0x01ca*/ 0x0005, /*0x01cb*/ 0x0008, - /*0x01cc*/ 0x0003, /*0x01cd*/ 0x0004, /*0x01ce*/ 0x0003, /*0x01cf*/ 0x0004, - /*0x01d0*/ 0x0005, /*0x01d1*/ 0x0005, /*0x01d2*/ 0x0003, /*0x01d3*/ 0x0005, - /*0x01d4*/ 0x0006, /*0x01d5*/ 0x0003, /*0x01d6*/ 0x0006, /*0x01d7*/ 0x0005, - /*0x01d8*/ 0x0005, /*0x01d9*/ 0x000b, /*0x01da*/ 0x0003, /*0x01db*/ 0x0003, - /*0x01dc*/ 0x0003, /*0x01dd*/ 0x0004, /*0x01de*/ 0x0003, + /*0x0000*/ 3, /*0x0001*/ 3, /*0x0002*/ 3, /*0x0003*/ 2, + /*0x0004*/ 2, /*0x0005*/ 5, /*0x0006*/ 5, /*0x0007*/ 4, + /*0x0008*/ 2, /*0x0009*/ 2, /*0x000a*/ 2, /*0x000b*/ 12, + /*0x000c*/ 3, /*0x000d*/ 2, /*0x000e*/ 2, /*0x000f*/ 3, + /*0x0010*/ 3, /*0x0011*/ 3, /*0x0012*/ 3, /*0x0013*/ 3, + /*0x0014*/ 3, /*0x0015*/ 7, /*0x0016*/ 7, /*0x0017*/ 7, + /*0x0018*/ 7, /*0x0019*/ 8, /*0x001a*/ 5, /*0x001b*/ 7, + /*0x001c*/ 6, /*0x001d*/ 4, /*0x001e*/ 3, /*0x001f*/ 4, + /*0x0020*/ 4, /*0x0021*/ 3, /*0x0022*/ 2, /*0x0023*/ 3, + /*0x0024*/ 2, /*0x0025*/ 2, /*0x0026*/ 3, /*0x0027*/ 5, + /*0x0028*/ 2, /*0x0029*/ 2, /*0x002a*/ 3, /*0x002b*/ 3, + /*0x002c*/ 3, /*0x002d*/ 3, /*0x002e*/ 3, /*0x002f*/ 4, + /*0x0030*/ 4, /*0x0031*/ 4, /*0x0032*/ 3, /*0x0033*/ 4, + /*0x0034*/ 4, /*0x0035*/ 3, /*0x0036*/ 2, /*0x0037*/ 4, + /*0x0038*/ 4, /*0x0039*/ 3, /*0x003a*/ 3, /*0x003b*/ 3, + /*0x003c*/ 3, /*0x003d*/ 4, /*0x003e*/ 4, /*0x003f*/ 3, + /*0x0040*/ 7, /*0x0041*/ 7, /*0x0042*/ 3, /*0x0043*/ 3, + /*0x0044*/ 3, /*0x0045*/ 4, /*0x0046*/ 3, /*0x0047*/ 3, + /*0x0048*/ 4, /*0x0049*/ 5, /*0x004a*/ 3, /*0x004b*/ 3, + /*0x004c*/ 3, /*0x004d*/ 4, /*0x004e*/ 6, /*0x004f*/ 4, + /*0x0050*/ 4, /*0x0051*/ 4, /*0x0052*/ 5, /*0x0053*/ 5, + /*0x0054*/ 8, /*0x0055*/ 8, /*0x0056*/ 6, /*0x0057*/ 6, + /*0x0058*/ 5, /*0x0059*/ 7, /*0x005a*/ 7, /*0x005b*/ 7, + /*0x005c*/ 5, /*0x005d*/ 5, /*0x005e*/ 4, /*0x005f*/ 5, + /*0x0060*/ 5, /*0x0061*/ 5, /*0x0062*/ 4, /*0x0063*/ 5, + /*0x0064*/ 1, /*0x0065*/ 3, /*0x0066*/ 3, /*0x0067*/ 3, + /*0x0068*/ 3, /*0x0069*/ 3, /*0x006a*/ 4, /*0x006b*/ 5, + /*0x006c*/ 3, /*0x006d*/ 3, /*0x006e*/ 5, /*0x006f*/ 4, + /*0x0070*/ 4, /*0x0071*/ 4, /*0x0072*/ 5, /*0x0073*/ 4, + /*0x0074*/ 4, /*0x0075*/ 4, /*0x0076*/ 4, /*0x0077*/ 4, + /*0x0078*/ 4, /*0x0079*/ 5, /*0x007a*/ 5, /*0x007b*/ 4, + /*0x007c*/ 4, /*0x007d*/ 4, /*0x007e*/ 4, /*0x007f*/ 4, + /*0x0080*/ 4, /*0x0081*/ 5, /*0x0082*/ 5, /*0x0083*/ 4, + /*0x0084*/ 3, /*0x0085*/ 3, /*0x0086*/ 4, /*0x0087*/ 3, + /*0x0088*/ 4, /*0x0089*/ 3, /*0x008a*/ 3, /*0x008b*/ 3, + /*0x008c*/ 4, /*0x008d*/ 3, /*0x008e*/ 5, /*0x008f*/ 5, + /*0x0090*/ 3, /*0x0091*/ 2, /*0x0092*/ 4, /*0x0093*/ 3, + /*0x0094*/ 3, /*0x0095*/ 3, /*0x0096*/ 5, /*0x0097*/ 4, + /*0x0098*/ 3, /*0x0099*/ 3, /*0x009a*/ 3, /*0x009b*/ 7, + /*0x009c*/ 7, /*0x009d*/ 9, /*0x009e*/ 8, /*0x009f*/ 8, + /*0x00a0*/ 9, /*0x00a1*/ 6, /*0x00a2*/ 6, /*0x00a3*/ 8, + /*0x00a4*/ 6, /*0x00a5*/ 6, /*0x00a6*/ 7, /*0x00a7*/ 7, + /*0x00a8*/ 7, /*0x00a9*/ 8, /*0x00aa*/ 7, /*0x00ab*/ 7, + /*0x00ac*/ 8, /*0x00ad*/ 7, /*0x00ae*/ 7, /*0x00af*/ 8, + /*0x00b0*/ 3, /*0x00b1*/ 4, /*0x00b2*/ 4, /*0x00b3*/ 5, + /*0x00b4*/ 4, /*0x00b5*/ 0, /*0x00b6*/ 2, /*0x00b7*/ 2, + /*0x00b8*/ 2, /*0x00b9*/ 2, /*0x00ba*/ 3, /*0x00bb*/ 3, + /*0x00bc*/ 6, /*0x00bd*/ 6, /*0x00be*/ 2, /*0x00bf*/ 2, + /*0x00c0*/ 4, /*0x00c1*/ 2, /*0x00c2*/ 2, /*0x00c3*/ 3, + /*0x00c4*/ 5, /*0x00c5*/ 5, /*0x00c6*/ 13, /*0x00c7*/ 12, + /*0x00c8*/ 10, /*0x00c9*/ 9, /*0x00ca*/ 10, /*0x00cb*/ 5, + /*0x00cc*/ 6, /*0x00cd*/ 9, /*0x00ce*/ 5, /*0x00cf*/ 6, + /*0x00d0*/ 7, /*0x00d1*/ 7, /*0x00d2*/ 7, /*0x00d3*/ 3, + /*0x00d4*/ 6, /*0x00d5*/ 3, /*0x00d6*/ 6, /*0x00d7*/ 6, + /*0x00d8*/ 3, /*0x00d9*/ 3, /*0x00da*/ 5, /*0x00db*/ 3, + /*0x00dc*/ 2, /*0x00dd*/ 2, /*0x00de*/ 4, /*0x00df*/ 7, + /*0x00e0*/ 4, /*0x00e1*/ 3, /*0x00e2*/ 7, /*0x00e3*/ 3, + /*0x00e4*/ 3, /*0x00e5*/ 4, /*0x00e6*/ 1, /*0x00e7*/ 1, + /*0x00e8*/ 3, /*0x00e9*/ 4, /*0x00ea*/ 4, /*0x00eb*/ 6, + /*0x00ec*/ 4, /*0x00ed*/ 4, /*0x00ee*/ 5, /*0x00ef*/ 6, + /*0x00f0*/ 3, /*0x00f1*/ 3, /*0x00f2*/ 2, /*0x00f3*/ 3, + /*0x00f4*/ 14, /*0x00f5*/ 2, /*0x00f6*/ 3, /*0x00f7*/ 3, + /*0x00f8*/ 4, /*0x00f9*/ 5, /*0x00fa*/ 3, /*0x00fb*/ 3, + /*0x00fc*/ 4, /*0x00fd*/ 4, /*0x00fe*/ 2, /*0x00ff*/ 2, + /*0x0100*/ 3, /*0x0101*/ 3, /*0x0102*/ 11, /*0x0103*/ 3, + /*0x0104*/ 2, /*0x0105*/ 5, /*0x0106*/ 5, /*0x0107*/ 3, + /*0x0108*/ 6, /*0x0109*/ 6, /*0x010a*/ 8, /*0x010b*/ 4, + /*0x010c*/ 4, /*0x010d*/ 2, /*0x010e*/ 4, /*0x010f*/ 6, + /*0x0110*/ 6, /*0x0111*/ 4, /*0x0112*/ 8, /*0x0113*/ 3, + /*0x0114*/ 3, /*0x0115*/ 3, /*0x0116*/ 3, /*0x0117*/ 3, + /*0x0118*/ 7, /*0x0119*/ 7, /*0x011a*/ 8, /*0x011b*/ 7, + /*0x011c*/ 7, /*0x011d*/ 8, /*0x011e*/ 4, /*0x011f*/ 4, + /*0x0120*/ 4, /*0x0121*/ 5, /*0x0122*/ 9, /*0x0123*/ 9, + /*0x0124*/ 3, /*0x0125*/ 3, /*0x0126*/ 3, /*0x0127*/ 3, + /*0x0128*/ 4, /*0x0129*/ 4, /*0x012a*/ 4, /*0x012b*/ 3, + /*0x012c*/ 3, /*0x012d*/ 1, /*0x012e*/ 1, /*0x012f*/ 2, + /*0x0130*/ 10, /*0x0131*/ 3, /*0x0132*/ 4, /*0x0133*/ 4, + /*0x0134*/ 5, /*0x0135*/ 3, /*0x0136*/ 4, /*0x0137*/ 4, + /*0x0138*/ 4, /*0x0139*/ 8, /*0x013a*/ 5, /*0x013b*/ 3, + /*0x013c*/ 3, /*0x013d*/ 4, /*0x013e*/ 2, /*0x013f*/ 3, + /*0x0140*/ 5, /*0x0141*/ 9, /*0x0142*/ 4, /*0x0143*/ 2, + /*0x0144*/ 2, /*0x0145*/ 2, /*0x0146*/ 2, /*0x0147*/ 4, + /*0x0148*/ 4, /*0x0149*/ 6, /*0x014a*/ 6, /*0x014b*/ 3, + /*0x014c*/ 1, /*0x014d*/ 1, /*0x014e*/ 1, /*0x014f*/ 1, + /*0x0150*/ 1, /*0x0151*/ 1, /*0x0152*/ 5, /*0x0153*/ 1, + /*0x0154*/ 1, /*0x0155*/ 1, /*0x0156*/ 1, /*0x0157*/ 3, + /*0x0158*/ 1, /*0x0159*/ 1, /*0x015a*/ 1, /*0x015b*/ 3, + /*0x015c*/ 2, /*0x015d*/ 1, /*0x015e*/ 1, /*0x015f*/ 1, + /*0x0160*/ 1, /*0x0161*/ 1, /*0x0162*/ 1, /*0x0163*/ 1, + /*0x0164*/ 1, /*0x0165*/ 4, /*0x0166*/ 4, /*0x0167*/ 3, + /*0x0168*/ 4, /*0x0169*/ 4, /*0x016a*/ 7, /*0x016b*/ 10, + /*0x016c*/ 2, /*0x016d*/ 5, /*0x016e*/ 5, /*0x016f*/ 5, + /*0x0170*/ 4, /*0x0171*/ 5, /*0x0172*/ 4, /*0x0173*/ 4, + /*0x0174*/ 3, /*0x0175*/ 3, /*0x0176*/ 3, /*0x0177*/ 9, + /*0x0178*/ 4, /*0x0179*/ 11, /*0x017a*/ 3, /*0x017b*/ 4, + /*0x017c*/ 5, /*0x017d*/ 3, /*0x017e*/ 2, /*0x017f*/ 3, + /*0x0180*/ 2, /*0x0181*/ 5, /*0x0182*/ 4, /*0x0183*/ 3, + /*0x0184*/ 4, /*0x0185*/ 2, /*0x0186*/ 6, /*0x0187*/ 3, + /*0x0188*/ 4, /*0x0189*/ 4, /*0x018a*/ 5, /*0x018b*/ 3, + /*0x018c*/ 4, /*0x018d*/ 4, /*0x018e*/ 7, /*0x018f*/ 8, + /*0x0190*/ 3, /*0x0191*/ 3, /*0x0192*/ 4, /*0x0193*/ 4, + /*0x0194*/ 1, /*0x0195*/ 1, /*0x0196*/ 1, /*0x0197*/ 1, + /*0x0198*/ 1, /*0x0199*/ 1, /*0x019a*/ 1, /*0x019b*/ 1, + /*0x019c*/ 1, /*0x019d*/ 1, /*0x019e*/ 6, /*0x019f*/ 5, + /*0x01a0*/ 4, /*0x01a1*/ 2, /*0x01a2*/ 4, /*0x01a3*/ 3, + /*0x01a4*/ 6, /*0x01a5*/ 3, /*0x01a6*/ 4, /*0x01a7*/ 4, + /*0x01a8*/ 1, /*0x01a9*/ 1, /*0x01aa*/ 3, /*0x01ab*/ 5, + /*0x01ac*/ 1, /*0x01ad*/ 3, /*0x01ae*/ 3, /*0x01af*/ 4, + /*0x01b0*/ 1, /*0x01b1*/ 18, /*0x01b2*/ 3, /*0x01b3*/ 3, + /*0x01b4*/ VERSION >= VERSION_NTSC_1_0 ? 3 : 1, /*0x01b5*/ 4, /*0x01b6*/ 3, /*0x01b7*/ 5, + /*0x01b8*/ 4, /*0x01b9*/ 2, /*0x01ba*/ 7, /*0x01bb*/ 4, + /*0x01bc*/ 4, /*0x01bd*/ 3, /*0x01be*/ 5, /*0x01bf*/ 5, + /*0x01c0*/ 4, /*0x01c1*/ 4, /*0x01c2*/ 4, /*0x01c3*/ 4, + /*0x01c4*/ 4, /*0x01c5*/ 2, /*0x01c6*/ 4, /*0x01c7*/ 3, + /*0x01c8*/ 3, /*0x01c9*/ 3, /*0x01ca*/ 5, /*0x01cb*/ 8, + /*0x01cc*/ 3, /*0x01cd*/ 4, /*0x01ce*/ 3, /*0x01cf*/ 4, + /*0x01d0*/ 5, /*0x01d1*/ 5, /*0x01d2*/ 3, /*0x01d3*/ 5, + /*0x01d4*/ 6, /*0x01d5*/ 3, /*0x01d6*/ 6, /*0x01d7*/ 5, + /*0x01d8*/ 5, /*0x01d9*/ 11, /*0x01da*/ 3, /*0x01db*/ 3, + /*0x01dc*/ 3, /*0x01dd*/ 4, /*0x01de*/ 3, #if VERSION >= VERSION_NTSC_1_0 - /*0x01df*/ 0x0008, - /*0x01e0*/ 0x0002, + /*0x01df*/ 8, + /*0x01e0*/ 2, #endif }; diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 1dfd260f3..f642eb390 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -7319,7 +7319,7 @@ s16 g_GuardQuipBank[][4] = { #if VERSION >= VERSION_NTSC_1_0 { QUIP_SHOTUNALERT, SFX_M0_HOLY_SHH, SFX_M0_HOLY_SHH, SFX_M0_WHAT_THE_HELL }, #else - { QUIP_SHOTUNALERT, 0, 0, 0 }, + { QUIP_SHOTUNALERT, SFX_80F6, SFX_80F6, SFX_M0_WHAT_THE_HELL }, #endif { QUIP_INJURED1, SFX_M0_MEDIC, SFX_M0_OW, SFX_M0_YOU_SHOT_ME }, { QUIP_INJURED2, SFX_M0_IM_HIT, SFX_M0_IM_TAKING_FIRE, SFX_M0_TAKING_DAMAGE }, @@ -7372,14 +7372,18 @@ s16 g_GuardQuipBank[][4] = { #if VERSION >= VERSION_NTSC_1_0 { QUIP_INSPECTBODY, SFX_M1_NOOO, SFX_M1_OH_GOD_HES_DEAD, SFX_M1_HES_GONE }, #else - { QUIP_INSPECTBODY, SFX_M1_NOOO, 0, SFX_M1_HES_GONE }, + { QUIP_INSPECTBODY, SFX_0313, SFX_M1_NOOO, SFX_M1_HES_GONE }, #endif { QUIP_20, SFX_M1_M2_LOOK_OUT_SHES_COMING, SFX_M1_M2_TAKE_COVER, SFX_M1_M2_LOOK_OUT_LOOK_OUT }, { QUIP_HITPLAYER, SFX_M1_IM_JUST_TOO_GOOD, SFX_M1_YEAH_BABY, SFX_M1_YEAH_BABY }, { QUIP_MISSEDPLAYER1, SFX_M1_BLOODY_STUPID_GUN, SFX_M1_MY_GUN_ITS_USELESS, SFX_M1_DAMN_IT }, { QUIP_MISSEDPLAYER2, SFX_M1_STOP_DODGING, SFX_M1_SOMEONE_HIT_HER, SFX_M1_DAMN_SHES_GOOD }, { QUIP_GOTOCOVER2, SFX_M1_GO_FOR_IT, SFX_M1_GO_GO_GO, SFX_M1_RUN }, +#if VERSION >= VERSION_NTSC_1_0 { QUIP_DIE, SFX_M1_SCREAM, SFX_M1_WHY_ME, SFX_M1_CHOKING }, +#else + { QUIP_DIE, SFX_034C, SFX_M1_WHY_ME, SFX_M1_CHOKING }, +#endif { QUIP_26, SFX_M1_OUTSTANDING, SFX_M1_IM_JUST_TOO_GOOD, SFX_M1_YEEHAH_GOT_ONE }, { QUIP_SEARCHSUCCESS, SFX_M1_OVER_THERE, SFX_M1_HALT, SFX_M1_FREEZE }, { QUIP_SEEEYESPY, SFX_M1_WHAT_IS_IT, SFX_M1_HOW_DID_THAT_GET_HERE, SFX_M1_DONT_TOUCH_IT }, @@ -7421,7 +7425,11 @@ s16 g_GuardQuipBank[][4] = { { QUIP_MISSEDPLAYER1, SFX_M2_DAMN_MISSED_AGAIN, SFX_M2_I_DONT_BELIEVE_IT, SFX_M2_DAMN_YOU }, { QUIP_MISSEDPLAYER2, SFX_M2_HELL_SHES_GOOD, SFX_M2_STOP_MOVING, SFX_M2_NO_ESCAPE_FOR_YOU }, { QUIP_GOTOCOVER2, SFX_M2_MOVE_IT_MOVE_IT, SFX_M2_GET_TO_COVER_NOW, SFX_M2_RUN_FOR_IT }, +#if VERSION >= VERSION_NTSC_1_0 { QUIP_DIE, SFX_M2_NOOO, SFX_M2_OH_GOD_IM_DYING, SFX_M2_I_DONT_WANT_TO_DIE }, +#else + { QUIP_DIE, SFX_0411, SFX_M2_OH_GOD_IM_DYING, SFX_M2_I_DONT_WANT_TO_DIE }, +#endif { QUIP_26, SFX_M2_IM_THE_MAN, SFX_M2_BOY_THAT_WAS_CLOSE, SFX_M2_DID_YOU_SEE_THAT }, { QUIP_SEARCHSUCCESS, SFX_M2_GET_HER, SFX_M2_THERE_ATTACK, SFX_M2_HEY_YOU_STOP }, { QUIP_SEEEYESPY, SFX_M2_IS_IT_DANGEROUS, SFX_M2_DONT_MOVE, SFX_M2_STAY_BACK }, @@ -7464,7 +7472,7 @@ s16 g_GuardQuipBank[][4] = { #if VERSION >= VERSION_NTSC_1_0 { QUIP_MISSEDPLAYER2, SFX_F_STAND_STILL, SFX_F_SOMEONE_HIT_HER, SFX_F_DAMN_SHES_GOOD }, #else - { QUIP_MISSEDPLAYER2, SFX_F_STAND_STILL, SFX_F_SOMEONE_HIT_HER, 0, }, + { QUIP_MISSEDPLAYER2, SFX_F_STAND_STILL, SFX_F_SOMEONE_HIT_HER, SFX_M1_SCREAM }, #endif { QUIP_GOTOCOVER2, SFX_F_GO_FOR_IT, SFX_0037, SFX_F_RUN }, { QUIP_DIE, SFX_F_WHY_ME, SFX_F_NOO, SFX_F_MY_GOD }, @@ -7486,12 +7494,16 @@ s16 g_GuardQuipBank[][4] = { }; s16 g_SpecialQuipBank[][4] = { +#if VERSION >= VERSION_NTSC_1_0 { 0, MP3_CASS_HOW_DARE_YOU_DISTURB_ME, MP3_CASS_YOU_WILL_REGRET, MP3_CASS_LEAVE_NOW }, +#else + { 0, 0x12f2, 0x12f3, 0x12f8 }, +#endif { 1, MP3_SEC_PLEASE_DONT_KILL_ME, MP3_SEC_DONT_SHOOT, MP3_SEC_PLEASE_DONT_KILL_ME }, { 2, SFX_DRCAROLL_COME_ON, SFX_DRCAROLL_TAKING_YOUR_TIME, SFX_DRCAROLL_GET_OUT_OF_HERE }, { 3, SFX_DRCAROLL_KNOW_WHAT_YOURE_DOING, SFX_DRCAROLL_0249, SFX_DRCAROLL_GOING_TO_THE_HELIPAD }, - { 4, SFX_DRCAROLL_STOP_THAT, SFX_DRCAROLL_WHAT, SFX_ARGH_DRCAROLL_0240 }, - { 5, SFX_ARGH_DRCAROLL_024C, SFX_DRCAROLL_QUITE_ENOUGH, SFX_ARGH_DRCAROLL_0251 }, + { 4, SFX_DRCAROLL_STOP_THAT, SFX_DRCAROLL_WHAT, SFX_ARGH_DRCAROLL_0240 }, + { 5, SFX_ARGH_DRCAROLL_024C, SFX_DRCAROLL_QUITE_ENOUGH, SFX_ARGH_DRCAROLL_0251 }, { 6, SFX_DRCAROLL_I_CANT_MAKE_IT, SFX_DRCAROLL_YOU_WERE_SUPPOSED, SFX_DRCAROLL_SYSTEMS_FAILURE }, { 7, SFX_DRCAROLL_OH_CRIKEY, SFX_DRCAROLL_GOODNESS_GRACIOUS, SFX_DRCAROLL_DONT_THEY_KNOW }, { 8, MP3_K7_IM_NOT_SURE, MP3_K7_ONE_MORE_TIME, MP3_K7_I_DUNNO }, @@ -7503,7 +7515,7 @@ s16 g_SpecialQuipBank[][4] = { { 14, MP3_SCI_SECURITY, MP3_SCI_IM_CALLING_SECURITY, MP3_SCI_ACCIDENTS_WILL_HAPPEN }, { 15, MP3_SCI_HOW_DID_THAT_HAPPEN, MP3_SCI_OFF_ALREADY, MP3_SCI_HAVE_YOU_BEEN_TAMPERING }, { 16, MP3_SCI_SOMEONES_BROKEN_MY_EQUIPMENT, MP3_SCI_WHATS_HAPPENED_TO_THE_TERMINAL, MP3_SCI_YOU_VANDAL }, - { 17, SFX_ARGH_FEMALE_000D, SFX_ARGH_FEMALE_000D, SFX_ARGH_FEMALE_000D }, + { 17, SFX_ARGH_FEMALE_000D, SFX_ARGH_FEMALE_000D, SFX_ARGH_FEMALE_000D }, { 18, SFX_M0_HOWS_THINGS, SFX_M0_HEY_THERE, SFX_M0_HI_HOW_ARE_YOU }, { 19, MP3_M0_WHERE_DID_YOU_GET_THAT, MP3_M0_SHOULD_YOU_HAVE_THAT, MP3_M0_WHAT_ARE_YOU_DOING }, { 20, SFX_0037, MP3_M0_DONT_POINT_THAT_AT_ME, MP3_M0_WATCH_WHERE_YOURE_POINTING }, @@ -7529,7 +7541,11 @@ s16 g_SpecialQuipBank[][4] = { { 40, SFX_ELVIS_DONT_MESS_WITH_THE_MAIAN, SFX_ELVIS_IM_BAD, SFX_ELVIS_HEHE }, { 41, SFX_ELVIS_ALL_GOING_WRONG, SFX_ELVIS_ALL_GOING_WRONG, SFX_ELVIS_WATCH_THE_SUIT }, { 42, MP3_M2_ITS_A_TERRORIST, MP3_M0_ITS_A_SPY, MP3_M1_STOP_RIGHT_THERE }, +#if VERSION >= VERSION_NTSC_1_0 { 43, MP3_CASS_HOW_DARE_YOU_DISTURB_ME, MP3_CASS_LEAVE_NOW, MP3_CASS_LEAVE_NOW }, +#else + { 43, 0x12f2, 0x12f8, 0x12f8, }, +#endif { 44, SFX_ELVIS_HEHE, SFX_ELVIS_HEHE, SFX_ELVIS_HEHE }, { 45, MP3_ROBOT_ALERT_UNDER_ATTACK, MP3_ROBOT_ALERT_UNDER_ATTACK, MP3_ROBOT_ALERT_UNDER_ATTACK }, }; diff --git a/src/game/credits.c b/src/game/credits.c index 7faaee5e4..f166c5b6a 100644 --- a/src/game/credits.c +++ b/src/game/credits.c @@ -376,103 +376,103 @@ u32 var8007f468 = 0x00000025; u32 var8007f46c = 0x00000000; struct credit g_Credits[] = { - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_002, L_TITLE_000 }, // "perfect dark", "" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_002, L_TITLE_000 }, // "perfect dark", "" // The order of these items are randomised - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_003, L_TITLE_004 }, // "beau ner chesluk", "guns and visual orgasms" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_005, L_TITLE_006 }, // "jonathan nasty mummery", "mover and shaker" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_007, L_TITLE_008 }, // "darkmark", "reality engineer" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_009, L_TITLE_010 }, // "chris tilston", "designs on the future" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_011, L_TITLE_012 }, // "chris darling", "weapons specialist" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_013, L_TITLE_014 }, // "duncan botwood", "grey area" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_015, L_TITLE_016 }, // "b jones", "bodybuilder" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_017, L_TITLE_018 }, // "steve malpass", "perfect locations and vox" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_019, L_TITLE_020 }, // "brian marshall", "-aqham-" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_021, L_TITLE_022 }, // "russel irwin", "well packed man" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_023, L_TITLE_024 }, // "jamie 'evo' williams", "manic welsh designer" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_025, L_TITLE_026 }, // "ross bury", "bionic backgrounds" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_027, L_TITLE_028 }, // "martin penny", "sound geezer" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_029, L_TITLE_030 }, // "grant kirkhope", "play that music maestro" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_031, L_TITLE_032 }, // "david clynick", "bangin hardcore choonz" - { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_033, L_TITLE_034 }, // "keith 'bunny' rabbette", "dinomic backgrounds" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_003, L_TITLE_004 }, // "beau ner chesluk", "guns and visual orgasms" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_005, L_TITLE_006 }, // "jonathan nasty mummery", "mover and shaker" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_007, L_TITLE_008 }, // "darkmark", "reality engineer" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_009, L_TITLE_010 }, // "chris tilston", "designs on the future" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_011, L_TITLE_012 }, // "chris darling", "weapons specialist" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_013, L_TITLE_014 }, // "duncan botwood", "grey area" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_015, L_TITLE_016 }, // "b jones", "bodybuilder" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_017, L_TITLE_018 }, // "steve malpass", "perfect locations and vox" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_019, L_TITLE_020 }, // "brian marshall", "-aqham-" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_021, L_TITLE_022 }, // "russel irwin", "well packed man" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_023, L_TITLE_024 }, // "jamie 'evo' williams", "manic welsh designer" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_025, L_TITLE_026 }, // "ross bury", "bionic backgrounds" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_027, L_TITLE_028 }, // "martin penny", "sound geezer" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_029, L_TITLE_030 }, // "grant kirkhope", "play that music maestro" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_031, L_TITLE_032 }, // "david clynick", "bangin hardcore choonz" + { 0, 0, 0, 0, CREDITSTYLE_R_BIG_R_MED, L_TITLE_033, L_TITLE_034 }, // "keith 'bunny' rabbette", "dinomic backgrounds" //load next credit for same slide //| no transition in //| | no transition out //| | | duration: 0=4s, 1=8s, 2=12s, 3=16s //| | | | - { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_035, L_TITLE_000 }, // "dd snipers", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_036, L_TITLE_037 }, // "kevin bayliss", "dean smith" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_038, L_TITLE_001 }, // "graham smith", "\n" + { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_035, L_TITLE_000 }, // "dd snipers", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_036, L_TITLE_037 }, // "kevin bayliss", "dean smith" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_038, L_TITLE_001 }, // "graham smith", "\n" - { 1, 1, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_035, L_TITLE_000 }, // "dd snipers", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_039, L_TITLE_040 }, // "mike 'curry' currington", "tony wong" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_041, L_TITLE_001 }, // "simon farmer", "\n" + { 1, 1, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_035, L_TITLE_000 }, // "dd snipers", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_039, L_TITLE_040 }, // "mike 'curry' currington", "tony wong" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_041, L_TITLE_001 }, // "simon farmer", "\n" - { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_035, L_TITLE_000 }, // "dd snipers", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_042, L_TITLE_043 }, // "leigh loveday", "rob harrison" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_044, L_TITLE_001 }, // "steven hurst", "\n" + { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_035, L_TITLE_000 }, // "dd snipers", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_042, L_TITLE_043 }, // "leigh loveday", "rob harrison" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_044, L_TITLE_001 }, // "steven hurst", "\n" - { 1, 0, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_045, L_TITLE_000 }, // "fearsome foursome", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_046, L_TITLE_047 }, // "phil dunne", "ricky berwick" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_048, L_TITLE_049 }, // "gareth glover", "jonathan ambrose" + { 1, 0, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_045, L_TITLE_000 }, // "fearsome foursome", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_046, L_TITLE_047 }, // "phil dunne", "ricky berwick" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_048, L_TITLE_049 }, // "gareth glover", "jonathan ambrose" - { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_050, L_TITLE_000 }, // "trent's henchmen", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_051, L_TITLE_052 }, // "lee musgrave", "johnni christensen" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_053, L_TITLE_001 }, // "mark betteridge", "\n" + { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_050, L_TITLE_000 }, // "trent's henchmen", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_051, L_TITLE_052 }, // "lee musgrave", "johnni christensen" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_053, L_TITLE_001 }, // "mark betteridge", "\n" - { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_050, L_TITLE_000 }, // "trent's henchmen", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_054, L_TITLE_055 }, // "chris marlow", "robin beanland" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_056, L_TITLE_057 }, // "neil gallagher", "feargal plant" + { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_050, L_TITLE_000 }, // "trent's henchmen", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_054, L_TITLE_055 }, // "chris marlow", "robin beanland" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_056, L_TITLE_057 }, // "neil gallagher", "feargal plant" - { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_058, L_TITLE_000 }, // "voices in the dark", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_059, L_TITLE_060 }, // "eveline fischer", "chris sutherland" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_061, L_TITLE_062 }, // "chris seavor", "john silke" + { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_058, L_TITLE_000 }, // "voices in the dark", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_059, L_TITLE_060 }, // "eveline fischer", "chris sutherland" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_061, L_TITLE_062 }, // "chris seavor", "john silke" - { 1, 1, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_058, L_TITLE_000 }, // "voices in the dark", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_063, L_TITLE_064 }, // "ben cullum", "louise tilston" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_065, L_TITLE_066 }, // "alistair", "lindsay" + { 1, 1, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_058, L_TITLE_000 }, // "voices in the dark", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_063, L_TITLE_064 }, // "ben cullum", "louise tilston" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_065, L_TITLE_066 }, // "alistair", "lindsay" - { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_058, L_TITLE_000 }, // "voices in the dark", "" - { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_068, L_TITLE_067 }, // "beau chesluk", "b jones" - { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_069, L_TITLE_001 }, // "steve malpass", "\n" + { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_058, L_TITLE_000 }, // "voices in the dark", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_068, L_TITLE_067 }, // "beau chesluk", "b jones" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_069, L_TITLE_001 }, // "steve malpass", "\n" - { 1, 0, 1, 0, CREDITSTYLE_L_BIG, L_TITLE_093, L_TITLE_000 }, // "rare exterminators", "" - { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_094, L_TITLE_095 }, // "huw ward", "adam munton" - { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_096, L_TITLE_097 }, // "david wong", "luke munton" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_098, L_TITLE_109 }, // "gary phelps", "andrew wilson" + { 1, 0, 1, 0, CREDITSTYLE_L_BIG, L_TITLE_093, L_TITLE_000 }, // "rare exterminators", "" + { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_094, L_TITLE_095 }, // "huw ward", "adam munton" + { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_096, L_TITLE_097 }, // "david wong", "luke munton" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_098, L_TITLE_109 }, // "gary phelps", "andrew wilson" - { 1, 1, 1, 0, CREDITSTYLE_L_BIG, L_TITLE_093, L_TITLE_000 }, // "rare exterminators", "" - { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_099, L_TITLE_100 }, // "john silke", "matthew carter" + { 1, 1, 1, 0, CREDITSTYLE_L_BIG, L_TITLE_093, L_TITLE_000 }, // "rare exterminators", "" + { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_099, L_TITLE_100 }, // "john silke", "matthew carter" { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_101, L_TITLE_102 }, // "gavin price", "gareth stevenson" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_103, L_TITLE_001 }, // "bushbaby", "\n" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_103, L_TITLE_001 }, // "bushbaby", "\n" - { 1, 1, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_093, L_TITLE_000 }, // "rare exterminators", "" + { 1, 1, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_093, L_TITLE_000 }, // "rare exterminators", "" { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_104, L_TITLE_105 }, // "stephen stamper", "ross bullimore" { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_106, L_TITLE_107 }, // "justin cook", "dale murchie" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_108, L_TITLE_001 }, // "roger smith", "\n" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_108, L_TITLE_001 }, // "roger smith", "\n" - { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_070, L_TITLE_000 }, // "ci techs", "" - { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_071, L_TITLE_072 }, // "richard 'force 9' gale", "mark green" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_073, L_TITLE_074 }, // "alex zoro", "mark wilson" + { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_070, L_TITLE_000 }, // "ci techs", "" + { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_071, L_TITLE_072 }, // "richard 'force 9' gale", "mark green" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_073, L_TITLE_074 }, // "alex zoro", "mark wilson" - { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_075, L_TITLE_000 }, // "hard and wary support", "" - { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_076, L_TITLE_077 }, // "pete 'hardrom' cox", "maul 'max' mikell" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_078, L_TITLE_000 }, // "doug crouch", "" + { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_075, L_TITLE_000 }, // "hard and wary support", "" + { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_076, L_TITLE_077 }, // "pete 'hardrom' cox", "maul 'max' mikell" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_078, L_TITLE_000 }, // "doug crouch", "" - { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_083, L_TITLE_000 }, // "motion capture", "" - { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_084, L_TITLE_085 }, // "alan tippertronic", "des easen" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_086, L_TITLE_000 }, // "jim 'love' ballard", "" + { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_083, L_TITLE_000 }, // "motion capture", "" + { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_084, L_TITLE_085 }, // "alan tippertronic", "des easen" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_086, L_TITLE_000 }, // "jim 'love' ballard", "" - { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_087, L_TITLE_000 }, // "going through the motions", "" - { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_088, L_TITLE_089 }, // "duncan 'bot' botwood", "michelle tipper" - { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_090, L_TITLE_091 }, // "sue 'falling' fell", "doug 'crouch' crouch" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_092, L_TITLE_000 }, // "ross bury", "" + { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_087, L_TITLE_000 }, // "going through the motions", "" + { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_088, L_TITLE_089 }, // "duncan 'bot' botwood", "michelle tipper" + { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_090, L_TITLE_091 }, // "sue 'falling' fell", "doug 'crouch' crouch" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_092, L_TITLE_000 }, // "ross bury", "" - { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_118, L_TITLE_000 }, // "testing (rare miami)", "" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_119, L_TITLE_000 }, // "keith coll", "" + { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_118, L_TITLE_000 }, // "testing (rare miami)", "" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_119, L_TITLE_000 }, // "keith coll", "" - { 1, 0, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_113, L_TITLE_000 }, // "rare in the sun", "" + { 1, 0, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_113, L_TITLE_000 }, // "rare in the sun", "" { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_114, L_TITLE_115 }, // "joel hochberg", "" { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_116, L_TITLE_117 }, // "scott hochberg", "" @@ -526,24 +526,39 @@ struct credit g_Credits[] = { { 1, 0, 0, 0, CREDITSTYLE_04, L_TITLE_182, L_TITLE_183 }, // "product localization manager", "kai '0 to 100' zeh" #endif - { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_134, L_TITLE_000 }, // "perfect spelling", "" - { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_135, L_TITLE_000 }, // "teresa lillygren", "" +#if VERSION >= VERSION_NTSC_1_0 + { 1, 0, 0, 0, CREDITSTYLE_L_BIG, L_TITLE_134, L_TITLE_000 }, // "perfect spelling", "" + { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_135, L_TITLE_000 }, // "teresa lillygren", "" - { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_136, L_TITLE_000 }, // "nintendo", "" + { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_136, L_TITLE_000 }, // "nintendo", "" { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_137, L_TITLE_138 }, // "mr arakawa", "" { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_139, L_TITLE_140 }, // "don james", "" - { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_136, L_TITLE_000 }, // "nintendo", "" + { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_136, L_TITLE_000 }, // "nintendo", "" { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_141, L_TITLE_142 }, // "howard lincoln", "ken lobb" { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_143, L_TITLE_144 }, // "jacqualee story", "gail tilden" { 1, 0, 0, 1, CREDITSTYLE_C_BIG_C_BIG, L_TITLE_148, L_TITLE_149 }, // "rare", "designs on the future" - { 1, 0, 0, 0, CREDITSTYLE_C_SML, L_TITLE_001, L_TITLE_145 }, // "\n", "copyright rare 2000" + { 1, 0, 0, 0, CREDITSTYLE_C_SML, L_TITLE_001, L_TITLE_145 }, // "\n", "copyright rare 2000" { 0, 0, 0, 0, CREDITSTYLE_C_SML, L_TITLE_146, L_TITLE_147 }, // "perfect dark and the pd device", "are trademarks" - { 0, 0, 0, 0, CREDITSTYLE_C_SML, L_TITLE_150, L_TITLE_000 }, // "perfect dark is forever", "" + { 0, 0, 0, 0, CREDITSTYLE_C_SML, L_TITLE_150, L_TITLE_000 }, // "perfect dark is forever", "" - { 0, 0, 0, 0, CREDITSTYLE_TERMINATOR, L_TITLE_000, L_TITLE_000 }, // "", "" + { 0, 0, 0, 0, CREDITSTYLE_TERMINATOR, L_TITLE_000, L_TITLE_000 }, // "", "" +#else + // NTSC beta doesn't have the spelling credit + { 1, 0, 1, 0, CREDITSTYLE_C_BIG, 0x4e86, 0x4e00 }, // "nintendo", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, 0x4e87, 0x4e88 }, + { 0, 0, 0, 0, CREDITSTYLE_C_MED, 0x4e89, 0x4e8a }, + { 1, 1, 0, 0, CREDITSTYLE_C_BIG, 0x4e86, 0x4e00 }, + { 1, 0, 0, 0, CREDITSTYLE_C_MED, 0x4e8b, 0x4e8c }, + { 0, 0, 0, 0, CREDITSTYLE_C_MED, 0x4e8d, 0x4e8e }, + { 1, 0, 0, 1, CREDITSTYLE_C_BIG_C_BIG, 0x4e92, 0x4e93 }, + { 1, 0, 0, 0, CREDITSTYLE_C_SML, 0x4e01, 0x4e8f }, + { 0, 0, 0, 0, CREDITSTYLE_C_SML, 0x4e90, 0x4e91 }, + { 0, 0, 0, 0, CREDITSTYLE_C_SML, 0x4e94, 0x4e00 }, + { 0, 0, 0, 0, CREDITSTYLE_TERMINATOR, 0x4e00, 0x4e00 }, +#endif }; /** @@ -3189,6 +3204,10 @@ void creditsTickSlide(void) u32 var8007f6d4 = 0x00000000; +#if VERSION < VERSION_NTSC_1_0 +u32 var80081f2c = 0xffff; +#endif + #if VERSION >= VERSION_PAL_FINAL GLOBAL_ASM( glabel func0f13a3ec diff --git a/src/game/data/ailists.c b/src/game/data/ailists.c index 6e3a4179d..19882d6fd 100644 --- a/src/game/data/ailists.c +++ b/src/game/data/ailists.c @@ -934,13 +934,17 @@ u8 func0007_alerted[] = { say_quip(CHR_BOND, QUIP_INJURED2, 0x28, 0x03, 0x01, BANK_0, 0x00, 0x00) set_self_flag_bankx(CHRFLAG0_SAID_INJURY_QUIP, BANK_0) label(0x16) +#if VERSION >= VERSION_NTSC_1_0 if_timer_gt(180, /*goto*/ 0x13) +#endif if_chr_stopped(/*goto*/ 0x13) endloop(0x1d) label(0x13) +#if VERSION >= VERSION_NTSC_1_0 stop_chr dprint 'I','N','J',' ','O','V','E','R','\n',0, +#endif if_self_flag_bankx_eq(CHRFLAG1_CAN_DRAW_PISTOL, TRUE, BANK_1, /*goto*/ LABEL_DRAW_PISTOL) dprint 'B','4',' ','G','U','N','\n',0, if_has_gun(CHR_SELF, /*goto*/ 0x1b) @@ -1207,6 +1211,7 @@ u8 func0007_alerted[] = { label(0xa1) kneel +#if VERSION >= VERSION_NTSC_1_0 beginloop(0xa2) dprint 'W','A','I','T',' ','F','O','R',' ','A','M','B','\n',0, if_can_see_attack_target(/*goto*/ 0xa3) @@ -1222,6 +1227,26 @@ u8 func0007_alerted[] = { if_target_is_player(/*goto*/ 0x13) set_returnlist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET) set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET) +#else + beginloop(0xa2) + dprint 'W','A','I','T',' ','F','O','R',' ','A','M','B','\n',0, + if_can_see_attack_target(/*goto*/ 0xa3) + if_distance_from_target_to_pad_lt(200, PAD_PRESET, /*goto*/ 0x13) + if_chr_target_eq(CHR_SELF, CHR_P1P2, FALSE, /*goto*/ 0xee) + goto_next(0xef) + + label(0xee) + chr_toggle_p1p2(CHR_SELF) + if_chr_target_eq(CHR_SELF, CHR_P1P2, FALSE, /*goto*/ 0xee) + set_target_chr(CHR_P1P2) + if_can_see_attack_target(0xa3) + if_distance_from_target_to_pad_lt(200, PAD_PRESET, /*goto*/ 0x13) + label(0xee) + chr_toggle_p1p2(CHR_SELF) + set_target_chr(CHR_P1P2) + label(0xef) + endloop(0xa2) +#endif label(0x13) dprint 'A','M','B','U','S','H',' ','P','L','A','Y','E','R','\n',0, @@ -1231,7 +1256,9 @@ u8 func0007_alerted[] = { goto_first(0x1b) label(0xa3) +#if VERSION >= VERSION_NTSC_1_0 dprint 'S','E','E','N','T','A','R','G','\n',0, // seen target +#endif unset_self_flag_bankx(CHRFLAG0_01000000, BANK_0) goto_first(0x1b) @@ -1688,7 +1715,11 @@ u8 func0007_alerted[] = { beginloop(0xe8) if_self_flag_bankx_eq(CHRFLAG1_00000020, FALSE, BANK_1, /*goto*/ 0x16) if_timer_lt(120, /*goto*/ 0x16) +#if VERSION >= VERSION_NTSC_1_0 assign_sound(SFX_80F6, CHANNEL_7) +#else + assign_sound(SFX_01D9, CHANNEL_7) +#endif play_sound_from_entity(CHANNEL_7, CHR_SELF, 0x0bb8, 0x1770, 0x01) unset_self_flag_bankx(CHRFLAG1_00000020, BANK_1) label(0x16) @@ -2051,7 +2082,11 @@ u8 func0007_alerted[] = { yield if_self_flag_bankx_eq(CHRFLAG1_00000020, FALSE, BANK_1, /*goto*/ 0x16) if_timer_lt(120, /*goto*/ 0x16) +#if VERSION >= VERSION_NTSC_1_0 assign_sound(SFX_80F6, CHANNEL_6) +#else + assign_sound(SFX_01D9, CHANNEL_6) +#endif play_sound_from_entity(CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01) unset_self_flag_bankx(CHRFLAG1_00000020, BANK_1) label(0x16) @@ -2197,7 +2232,9 @@ u8 func0007_alerted[] = { goto_next(0x13) label(0x16) +#if VERSION >= VERSION_NTSC_1_0 if_target_is_player(/*goto*/ 0x13) +#endif set_returnlist(CHR_SELF, GAILIST_UNALERTED) set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET) @@ -2396,7 +2433,11 @@ u8 func0007_alerted[] = { yield if_self_flag_bankx_eq(CHRFLAG1_00000020, FALSE, BANK_1, /*goto*/ 0x16) if_timer_lt(120, /*goto*/ 0x16) +#if VERSION >= VERSION_NTSC_1_0 assign_sound(SFX_80F6, CHANNEL_6) +#else + assign_sound(SFX_01D9, CHANNEL_6) +#endif play_sound_from_entity(CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01) unset_self_flag_bankx(CHRFLAG1_00000020, BANK_1) label(0x16) @@ -2838,44 +2879,60 @@ u8 func000d_init_combat[] = { u8 func000c_combat_with_target_chr[] = { if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16) dprint 'S','E','E',' ','E','N','E','M','Y','\n',0, +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x16) label(0x13) +#endif if_target_is_player(/*goto*/ 0x13) goto_next(0x16) label(0x13) if_stage_is_not(STAGE_WAR, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_DEEPSEA, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_DEFENSE, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_WAR, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_ESCAPE, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_ATTACKSHIP, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_CRASHSITE, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) // Solo mode, or co-op/counter-op on any other stage @@ -2922,8 +2979,10 @@ u8 func000c_combat_with_target_chr[] = { dprint 'D','E','T','E','C','T','1','\n',0, if_num_times_shot_lt(1, /*goto*/ 0xb2) if_just_injured(CHR_SELF, /*goto*/ 0x16) +#if VERSION >= VERSION_NTSC_1_0 if_has_gun(CHR_SELF, /*goto*/ 0xb2) set_self_flag_bankx(CHRFLAG1_00000001, BANK_1) +#endif goto_next(0xb2) dprint 'D','E','T','E','C','T','2','\n',0, @@ -2941,7 +3000,9 @@ u8 func000c_combat_with_target_chr[] = { set_self_flag_bankx(CHRFLAG0_SAID_INJURY_QUIP, BANK_0) label(0x16) if_chr_stopped(/*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_timer_gt(180, /*goto*/ 0x13) +#endif endloop(0x1d) label(0x13) @@ -2972,43 +3033,59 @@ u8 func000c_combat_with_target_chr[] = { label(0xb3) if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16) +#if VERSION >= VERSION_NTSC_1_0 label(0x13) +#endif if_target_is_player(/*goto*/ 0x13) goto_next(0x16) label(0x13) if_stage_is_not(STAGE_WAR, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_DEEPSEA, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_DEFENSE, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_WAR, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_ESCAPE, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_ATTACKSHIP, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) if_stage_is_not(STAGE_CRASHSITE, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_num_human_players_lt(2, /*goto*/ 0x13) +#endif goto_next(0x16) label(0x13) @@ -3105,9 +3182,13 @@ u8 func000c_combat_with_target_chr[] = { goto_next(0xc0) label(0x13) +#if VERSION >= VERSION_NTSC_1_0 if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ 0x13) +#endif if_can_see_attack_target(/*goto*/ 0xbf) +#if VERSION >= VERSION_NTSC_1_0 label(0x13) +#endif if_timer_gt(120, /*goto*/ 0xc0) endloop(0xbc) @@ -3218,6 +3299,7 @@ u8 func000c_combat_with_target_chr[] = { say_quip(CHR_BOND, QUIP_ATTACK3, 0x19, 0x02, 0xff, BANK_0, 0x00, 0x00) say_quip(CHR_BOND, QUIP_ATTACK4, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00) +#if VERSION >= VERSION_NTSC_1_0 beginloop(0xe2) if_chr_dead(CHR_TARGET, /*goto*/ 0xc1) if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xc1) @@ -3228,6 +3310,17 @@ u8 func000c_combat_with_target_chr[] = { label(0x16) if_chr_stopped(/*goto*/ 0xc1) endloop(0xe2) +#else + if_chr_dead(CHR_TARGET, /*goto*/ 0xc1) + if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xc1) + if_chr_knockedout(CHR_TARGET, /*goto*/ 0xc1) + if_chrpresets_target_is_different(/*goto*/ 0xe2) + goto_next(0xc1) + + beginloop(0xe2) + if_chr_stopped(/*goto*/ 0xc1) + endloop(0xe2) +#endif label(0x13) restart_timer @@ -3312,34 +3405,54 @@ u8 func000c_combat_with_target_chr[] = { try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xc9) beginloop(0xc9) +#if VERSION >= VERSION_NTSC_1_0 if_chr_dead(CHR_TARGET, /*goto*/ 0xc5) if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xc5) if_chr_knockedout(CHR_TARGET, /*goto*/ 0xc5) +#else + if_chr_dead(CHR_TARGET, /*goto*/ 0xa3) + if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xa3) + if_chr_knockedout(CHR_TARGET, /*goto*/ 0xa3) +#endif if_chrpresets_target_is_different(/*goto*/ 0x13) goto_next(0xc5) label(0x13) +#if VERSION >= VERSION_NTSC_1_0 if_enemy_distance_lt_and_los(400, /*goto*/ 0x15) if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ 0x13) +#else + if_enemy_distance_lt_and_los(400, /*goto*/ 0x13) +#endif if_can_see_attack_target(/*goto*/ 0xca) +#if VERSION >= VERSION_NTSC_1_0 label(0x13) +#endif if_timer_gt(200, /*goto*/ 0x16) endloop(0xc9) label(0x16) +#if VERSION >= VERSION_NTSC_1_0 dprint 'T','I','M','O','U','T','\n',0, +#endif goto_first(0xb3) +#if VERSION >= VERSION_NTSC_1_0 label(0x15) dprint 'O','P','F','I','R','E','\n',0, +#else + label(0x13) +#endif goto_first(0xb5) label(0xa3) goto_first(0xc1) label(0xca) +#if VERSION >= VERSION_NTSC_1_0 restart_timer dprint 'T','A','R','S','H','O','\n',0, +#endif if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16) goto_next(0x17) @@ -3347,12 +3460,15 @@ u8 func000c_combat_with_target_chr[] = { say_quip(CHR_BOND, QUIP_ATTACK2, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) label(0x17) try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0xcb) +#if VERSION >= VERSION_NTSC_1_0 goto_next(0x16) +#endif label(0xcb) say_quip(CHR_BOND, QUIP_ATTACK3, 0x19, 0x02, 0xff, BANK_0, 0x00, 0x00) say_quip(CHR_BOND, QUIP_ATTACK4, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00) +#if VERSION >= VERSION_NTSC_1_0 beginloop(0xcc) if_chr_dead(CHR_TARGET, /*goto*/ 0xc5) if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xc5) @@ -3364,6 +3480,17 @@ u8 func000c_combat_with_target_chr[] = { if_timer_gt(300, /*goto*/ 0x16) if_chr_stopped(/*goto*/ 0x16) endloop(0xcc) +#else + if_chr_dead(CHR_TARGET, /*goto*/ 0xa3) + if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xa3) + if_chr_knockedout(CHR_TARGET, /*goto*/ 0xa3) + if_chrpresets_target_is_different(/*goto*/ 0xcc) + goto_next(0xc5) + + beginloop(0xcc) + if_chr_stopped(/*goto*/ 0x16) + endloop(0xcc) +#endif label(0x54) dprint 'N','O','C','O','V','E','R','\n',0, @@ -3388,6 +3515,9 @@ u8 func000c_combat_with_target_chr[] = { label(0x13) if_self_flag_bankx_eq(CHRFLAG0_NOHEAR, TRUE, BANK_0, /*goto*/ 0x13) +#if VERSION < VERSION_NTSC_1_0 + set_target_to_enemy_on_same_floor(/*goto*/ 0x16) +#endif label(0x13) goto_next(0xcf) @@ -3438,10 +3568,12 @@ u8 func000c_combat_with_target_chr[] = { label(0xcf) if_self_flag_bankx_eq(CHRFLAG0_10000000, FALSE, BANK_0, /*goto*/ 0x13) +#if VERSION >= VERSION_NTSC_1_0 if_target_is_player(/*goto*/ 0x16) goto_next(0x13) label(0x16) +#endif return label(0x13) @@ -3764,6 +3896,7 @@ u8 func000f_hand_combat[] = { #define LABEL_FACE_TARGET 0x16 #define LABEL_PUNCH 0x16 +#if VERSION >= VERSION_NTSC_1_0 if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x13) if_chr_dead(CHR_SELF, /*goto*/ 0x13) if_chr_knockedout(CHR_SELF, /*goto*/ 0x13) @@ -3775,40 +3908,43 @@ u8 func000f_hand_combat[] = { set_ailist(CHR_SELF, GAILIST_IDLE) label(0x16) +#endif + set_action(MA_UNARMEDATTACK, FALSE) restart_timer // If current chr doesn't have this flag and isn't idle, stop them if_self_flag_bankx_eq(CHRFLAG1_00000001, TRUE, BANK_1, /*goto*/ 0x0c) +#if VERSION >= VERSION_NTSC_1_0 if_chr_idle(/*goto*/ 0x0c) +#endif stop_chr // Begin loop - label(0x0c) - yield - if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xfa) - if_chr_dead(CHR_TARGET, /*goto*/ 0xfa) - if_chr_knockedout(CHR_TARGET, /*goto*/ 0xfa) + beginloop(0x0c) + if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xfa) + if_chr_dead(CHR_TARGET, /*goto*/ 0xfa) + if_chr_knockedout(CHR_TARGET, /*goto*/ 0xfa) - // This if-statement is effectively a no op - dprint 'L','1','\n',0, - if_chrpresets_target_is_different(/*goto*/ 0x13) + // This if-statement is effectively a no op + dprint 'L','1','\n',0, + if_chrpresets_target_is_different(/*goto*/ 0x13) - dprint 'L','2','\n',0, - label(0x13) - dprint 'L','O','O','K',' ','F','O','R',' ','T','A','R','G','E','T','\n',0, - if_self_flag_bankx_eq(CHRFLAG1_00000001, TRUE, BANK_1, /*goto*/ 0x13) - if_chr_is_skedar(CHR_SELF, /*goto*/ 0x0f) - if_distance_to_target_gt(120, /*goto*/ 0x13) - goto_next(0x10) + dprint 'L','2','\n',0, + label(0x13) + dprint 'L','O','O','K',' ','F','O','R',' ','T','A','R','G','E','T','\n',0, + if_self_flag_bankx_eq(CHRFLAG1_00000001, TRUE, BANK_1, /*goto*/ 0x13) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x0f) + if_distance_to_target_gt(120, /*goto*/ 0x13) + goto_next(0x10) - label(0x0f) - if_distance_to_target_gt(150, /*goto*/ 0x13) + label(0x0f) + if_distance_to_target_gt(150, /*goto*/ 0x13) - label(0x10) - if_can_see_attack_target(/*goto*/ 0x13) - if_timer_gt(120, /*goto*/ 0x0b) - goto_first(0x0c) + label(0x10) + if_can_see_attack_target(/*goto*/ 0x13) + if_timer_gt(120, /*goto*/ 0x0b) + endloop(0x0c) label(0x13) if_target_is_player(/*goto*/ 0x0a) @@ -4596,6 +4732,8 @@ u8 func0012_init_coop_100[] = { label(0x16) rebuild_teams rebuild_squadrons + +#if VERSION >= VERSION_NTSC_1_0 set_target_chr(-1) // Set stage flag 00000080 for Air Force One and Skedar Ruins @@ -4606,6 +4744,7 @@ u8 func0012_init_coop_100[] = { if_stage_is_not(STAGE_SKEDARRUINS, /*goto*/ 0x15) set_stage_flag(0x00000080) label(0x15) +#endif // Uncloak set_chr_cloaked(CHR_SELF, FALSE, TRUE) @@ -4973,6 +5112,7 @@ u8 func0023_dodge[] = { endlist }; +#if VERSION >= VERSION_NTSC_1_0 /** * In co-op mode with an AI buddy, this ailist is applied to the buddy when you * give them the Stealth command. @@ -5054,6 +5194,7 @@ u8 func0015_aibuddy_stealth[] = { set_ailist(CHR_SELF, GAILIST_COOP_BUDDY) endlist }; +#endif /** * Not used. @@ -5453,51 +5594,53 @@ u8 func002a_ai_bot_alive[] = { // 20c78 struct ailist g_GlobalAilists[] = { - { func0000_idle, 0x0000 }, - { func0001_unalerted_0001, 0x0001 }, - { func0004_unalerted_0004, 0x0004 }, - { func0003_stop_unalerted, 0x0003 }, - { func0002_unalerted_0002, 0x0002 }, - { func0005_end_cinema, 0x0005 }, - { func0006_unalerted, 0x0006 }, - { func0007_alerted, 0x0007 }, - { func0008_wakeup, 0x0008 }, - { func000a_do_idle_animation, 0x000a }, - { func000b_choose_target_chr, 0x000b }, - { func000c_combat_with_target_chr, 0x000c }, - { func000d_init_combat, 0x000d }, - { func000e_see_then_attack, 0x000e }, - { func0016_show_objective_failed_msg, 0x0016 }, - { func0017_rebuild_groups, 0x0017 }, - { func0018_do_bored_animation, 0x0018 }, - { func0019_do_sitting_animation, 0x0019 }, - { func0000_idle_0009, 0x0009 }, - { func001a_maybe_unset_disspee, 0x001a }, - { func000f_hand_combat, 0x000f }, - { func0010_civilian_say_comment, 0x0010 }, - { func0011_flee_from_grenade, 0x0011 }, - { func001b_observe_camspy, 0x001b }, - { func0020_place_coop_buddy, 0x0020 }, - { func0012_init_coop_100, 0x0012 }, - { func0013_init_coop_200, 0x0013 }, - { func0014_coop_buddy, 0x0014 }, - { func001d_search_for_player, 0x001d }, - { func001e_look_around, 0x001e }, - { func001f_related_to_spawning, 0x001f }, - { func001c_surprised, 0x001c }, - { func0022_comment_on_player_dead, 0x0022 }, - { func0023_dodge, 0x0023 }, - { func002c_init_search_unused, 0x002c }, - { func0024_follow_bond, 0x0024 }, - { func0025_pointless, 0x0025 }, - { func0026_init_psychosis, 0x0026 }, - { func0027_psychosised, 0x0027 }, - { func002d_invincible_and_idle, 0x002d }, - { func0021_stop_and_idle, 0x0021 }, - { func0015_aibuddy_stealth, 0x0015 }, - { func0028_ai_bot_dead, 0x0028 }, - { func0029_ai_bot_init, 0x0029 }, - { func002a_ai_bot_alive, 0x002a }, - { func002b_do_something_and_wait, 0x002b }, + { func0000_idle, GAILIST_IDLE }, + { func0001_unalerted_0001, GAILIST_UNALERTED_0001 }, + { func0004_unalerted_0004, GAILIST_UNALERTED_0004 }, + { func0003_stop_unalerted, GAILIST_STOP_UNALERTED }, + { func0002_unalerted_0002, GAILIST_UNALERTED_0002 }, + { func0005_end_cinema, GAILIST_END_CINEMA }, + { func0006_unalerted, GAILIST_UNALERTED }, + { func0007_alerted, GAILIST_ALERTED }, + { func0008_wakeup, GAILIST_WAKEUP }, + { func000a_do_idle_animation, GAILIST_BUSY }, + { func000b_choose_target_chr, GAILIST_CHOOSE_TARGET }, + { func000c_combat_with_target_chr, GAILIST_COMBAT_WITH_TARGET }, + { func000d_init_combat, GAILIST_INIT_COMBAT }, + { func000e_see_then_attack, GAILIST_SEE_THEN_ATTACK }, + { func0016_show_objective_failed_msg, GAILIST_SHOW_OBJ_FAILED_MSG }, + { func0017_rebuild_groups, GAILIST_REBUILD_GROUPS }, + { func0018_do_bored_animation, GAILIST_DO_BORED_ANIMATION }, + { func0019_do_sitting_animation, GAILIST_DO_SITTING_ANIMATION }, + { func0000_idle_0009, GAILIST_IDLE_0009 }, + { func001a_maybe_unset_disspee, GAILIST_DISGUISE_DETECTION }, + { func000f_hand_combat, GAILIST_HAND_COMBAT }, + { func0010_civilian_say_comment, GAILIST_CIVILIAN_SAY_COMMENT }, + { func0011_flee_from_grenade, GAILIST_FLEE_FROM_GRENADE }, + { func001b_observe_camspy, GAILIST_OBSERVE_CAMSPY }, + { func0020_place_coop_buddy, GAILIST_PLACE_COOP_BUDDY }, + { func0012_init_coop_100, GAILIST_INIT_COOP_100 }, + { func0013_init_coop_200, GAILIST_INIT_COOP_200 }, + { func0014_coop_buddy, GAILIST_COOP_BUDDY }, + { func001d_search_for_player, GAILIST_SEARCH_FOR_PLAYER }, + { func001e_look_around, GAILIST_LOOK_AROUND }, + { func001f_related_to_spawning, GAILIST_RELATED_TO_SPAWNING }, + { func001c_surprised, GAILIST_SURPRISED }, + { func0022_comment_on_player_dead, GAILIST_COMMENT_ON_PLAYER_DEAD }, + { func0023_dodge, GAILIST_DODGE }, + { func002c_init_search_unused, GAILIST_INIT_SEARCH }, + { func0024_follow_bond, GAILIST_FOLLOW_BOND }, + { func0025_pointless, GAILIST_POINTLESS }, + { func0026_init_psychosis, GAILIST_INIT_PSYCHOSIS }, + { func0027_psychosised, GAILIST_PSYCHOSISED }, + { func002d_invincible_and_idle, GAILIST_INVINCIBLE_AND_IDLE }, + { func0021_stop_and_idle, GAILIST_STOP_AND_IDLE }, +#if VERSION >= VERSION_NTSC_1_0 + { func0015_aibuddy_stealth, GAILIST_AIBUDDY_STEALTH }, +#endif + { func0028_ai_bot_dead, GAILIST_AI_BOT_DEAD }, + { func0029_ai_bot_init, GAILIST_AI_BOT_INIT }, + { func002a_ai_bot_alive, GAILIST_AI_BOT_ALIVE }, + { func002b_do_something_and_wait, GAILIST_DO_SOMETHING_AND_WAIT }, { NULL, 0 }, }; diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index 15d347d3e..d0f86e0a8 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -3467,10 +3467,17 @@ struct headorbody g_HeadsAndBodies[] = { // ismale // | height // | | +#if VERSION >= VERSION_NTSC_1_0 { /*0x0000*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CDJBOND, 1, 1.0446009635925, 0, FILE_GHAND_DDSECURITY }, { /*0x0001*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CCONNERY, 1, 1.0300469398499, 0, FILE_GHAND_MRBLONDE }, { /*0x0002*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 165, FILE_CDALTON, 1, 1.0572769641876, 0, FILE_GHAND_DDSECURITY }, { /*0x0003*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CMOORE, 1, 1.0399061441422, 0, FILE_GHAND_DDSECURITY }, +#else + { /*0x0000*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CDJBOND, 1, 1.0446009635925, 0, FILE_GHAND_DDSECURITY }, + { /*0x0001*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CCONNERY, 1, 1.0300469398499, 0, FILE_GHAND_MRBLONDE }, + { /*0x0002*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CDALTON, 1, 1.0572769641876, 0, FILE_GHAND_DDSECURITY }, + { /*0x0003*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CMOORE, 1, 1.0399061441422, 0, FILE_GHAND_DDSECURITY }, +#endif { /*0x0004*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARK_COMBAT, 1, 1, 0, 0 }, { /*0x0005*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADELVIS, 1, 1, 0, 0 }, { /*0x0006*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADROSS, 1, 1, 0, 0 }, @@ -3558,7 +3565,11 @@ struct headorbody g_HeadsAndBodies[] = { { /*0x0058*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CAREA51GUARD, 1, 0.92769956588745, 0, FILE_GHAND_A51GUARD }, { /*0x0059*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_COVERALL, 1, 0.92769956588745, 0, FILE_GHAND_A51GUARD }, { /*0x005a*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 154, FILE_CCARRINGTON, 1, 0.85915493965149, 0, FILE_GHAND_CARRINGTON }, +#if VERSION >= VERSION_NTSC_1_0 { /*0x005b*/ 1, 0, 0, HEADBODYTYPE_MRBLONDE, 169, FILE_CMRBLONDE, 1, 1.1032863855362, 0, FILE_GHAND_MRBLONDE }, +#else + { /*0x005b*/ 1, 0, 0, HEADBODYTYPE_MRBLONDE, 175, FILE_CMRBLONDE, 1, 1.1032863855362, 0, FILE_GHAND_MRBLONDE }, +#endif { /*0x005c*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CSKEDAR, 1, 1, 0, 0 }, { /*0x005d*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 161, FILE_CTRENT, 1, 0.93896716833115, 0, FILE_GHAND_TRENT }, { /*0x005e*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CDDSHOCK, 1, 0.93896716833115, 0, FILE_GHAND_DDFODDER }, @@ -3569,7 +3580,11 @@ struct headorbody g_HeadsAndBodies[] = { { /*0x0063*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 157, FILE_COFFICEWORKER, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK }, { /*0x0064*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 157, FILE_COFFICEWORKER2, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK }, { /*0x0065*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 140, FILE_CSECRETARY, 1, 0.87323945760727, 0, FILE_GHAND_JOFROCK }, +#if VERSION >= VERSION_NTSC_1_0 { /*0x0066*/ 0, 0, 0, HEADBODYTYPE_CASS, 167, FILE_CCASSANDRA, 1, 0.98591554164886, 0, FILE_GHAND_VRIES }, +#else + { /*0x0066*/ 0, 0, 0, HEADBODYTYPE_CASS, 169, FILE_CCASSANDRA, 1, 0.98591554164886, 0, FILE_GHAND_VRIES }, +#endif { /*0x0067*/ 1, 0, 0, HEADBODYTYPE_MAIAN, 106, FILE_CTHEKING, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, { /*0x0068*/ 0, 0, 1, HEADBODYTYPE_FEMALEGUARD, 160, FILE_CFEM_GUARD, 1, 0.96713620424271, 0, FILE_GHAND_JOTRENCH }, { /*0x0069*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CDD_LABTECH, 1, 0.93896716833115, 0, FILE_GHAND_DDLABTECH }, diff --git a/src/game/debug1.c b/src/game/debug1.c index 84464d819..e70021b4c 100644 --- a/src/game/debug1.c +++ b/src/game/debug1.c @@ -5,38 +5,19 @@ #include "data.h" #include "types.h" -s32 var80075d60 = 0x00000002; -u32 var80075d64 = 0x00000002; -u32 var80075d68 = 0x00000002; -u32 var80075d6c = 0x00000002; -u32 var80075d70 = 0x00000000; -bool g_DebugTurboMode = false; -s32 var80075d78 = 0; -u32 var80075d7c = 0x00000000; -u32 var80075d80 = 0x00000000; -u32 var80075d84 = 0x00000000; -u32 var80075d88 = 0x00000000; -u32 var80075d8c = 0x00000000; -u32 var80075d90 = 0x00000000; -u32 var80075d94 = 0xbf800000; -u32 var80075d98 = 0x00000000; -u32 var80075d9c = 0x3f800000; -u32 var80075da0 = 0x00000000; -u32 var80075da4 = 0x00000000; -u32 var80075da8 = 0x3f800000; -u32 var80075dac = 0x00000000; -u32 var80075db0 = 0x00000000; -u32 var80075db4 = 0x3f800000; -u32 var80075db8 = 0x00000000; -u32 var80075dbc = 0x00000000; -u32 var80075dc0 = 0x00000000; -u32 var80075dc4 = 0x00000000; -u32 var80075dc8 = 0x00000000; -u32 var80075dcc = 0x00000000; -u32 var80075dd0 = 0x00000000; -u32 var80075dd4 = 0x00000000; -u32 var80075dd8 = 0x3f800000; -u32 var80075ddc = 0x00000000; +s32 var80075d60 = 0x00000000; +u32 var80075d64 = 0x00000000; +u32 var80075d68 = 0x00000000; + +u32 var8007812cnb = 0x00000000; +u32 var80078130nb = 0x00000000; +u32 var80078134nb = 0x00000000; +u32 var80078138nb = 0x00000002; +u32 var8007813cnb = 0x04040400; +u32 var80078140nb = 0x07070700; +u32 var80078144nb = 0x00000000; +u32 var80078148nb = 0x00000000; +u32 var8007814cnb = 0x00000000; void debug0f118c80nb(void) { diff --git a/src/game/debug2.c b/src/game/debug2.c index 389b28f3d..ddb1b9829 100644 --- a/src/game/debug2.c +++ b/src/game/debug2.c @@ -5,6 +5,136 @@ #include "data.h" #include "types.h" +s32 var800769d0nb[] = { + 15, + 30, + 45, + 59, + 72, + 84, + 95, + 108, + -1, +}; + +u32 var800769f4nb[] = { + 8, 2, + 8, 3, + 8, 4, + 8, 5, + 8, 6, + 8, 7, + 8, 8, + 8, 9, + 8, 10, + 8, 11, + 8, 12, + 8, 13, + 8, 14, + 8, 15, + 8, 16, + + 25, 2, + 25, 3, + 25, 4, + 25, 5, + 25, 6, + 25, 7, + 25, 8, + 25, 9, + 25, 10, + 25, 11, + 25, 12, + 25, 13, + 25, 14, + 25, 15, + 25, 16, + + 40, 2, + 40, 3, + 40, 4, + 40, 5, + 40, 6, + 40, 7, + 40, 8, + 40, 9, + 40, 10, + 40, 11, + 40, 12, + 40, 13, + 40, 14, + 40, 15, + 40, 16, + + 57, 2, + 57, 3, + 57, 4, + 57, 5, + 57, 6, + 57, 7, + 57, 8, + 57, 9, + 57, 10, + 57, 11, + 57, 12, + 57, 13, + 57, 14, + 57, 15, + + 8, 18, + 8, 19, + 8, 20, + 8, 21, + 8, 22, + 8, 23, + 8, 24, + 8, 25, + 8, 26, + 8, 27, + 8, 28, + 8, 29, + 8, 30, + + 25, 18, + 25, 19, + 25, 20, + 25, 21, + 25, 22, + 25, 23, + 25, 24, + 25, 25, + 25, 26, + 25, 27, + 25, 28, + 25, 29, + + 40, 18, + 40, 19, + 40, 20, + 40, 21, + 40, 22, + 40, 23, + 40, 24, + 40, 25, + 40, 26, + 40, 27, + 40, 28, + + 57, 18, + 57, 19, + 57, 20, + 57, 21, + 57, 22, + 57, 23, + 57, 24, + 57, 25, + 57, 26, + 57, 27, + 57, 28, + 57, 29, + 57, 30, +}; + // ntsc-beta rodata at 7f1af170 char *g_DebugMenuLabels[] = { "-", @@ -124,6 +254,53 @@ char *g_DebugMenuLabels[] = { "-", }; +s32 var80076f04nb[] = { + 0, -1, +}; + +u32 var80076f0cnb[] = { + 8, 2, + 8, 3, + 8, 4, + 8, 5, + 8, 6, + 8, 7, + 8, 8, + 8, 9, + 8, 10, + 8, 11, +}; + +u32 var80076f5cnb[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000002, + 0x00000002, 0x00000002, 0x00000002, 0x00000000, + 0x00000001, 0x00000001, 0x00000001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x80500000, 0x00040000, + 0x7f000000, 0x7f100000, 0x80600000, 0x00040000, + 0x70000000, 0x70100000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0xbf800000, 0x00000000, + 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, + 0x00000000, 0x00000000, 0x3f800000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x3f800000, + 0x00000000, +}; + const char var7f1af378nb[] = "main"; const char var7f1af380nb[] = "scene %d"; diff --git a/src/game/dlights.c b/src/game/dlights.c index a4a12075b..c70bcf175 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -91,8 +91,12 @@ u32 var80061448 = 0x00000000; u32 var8006144c = 0x00000000; u32 var80061450 = 0x00000000; u32 var80061454 = 0xffffffff; + +#if VERSION >= VERSION_NTSC_1_0 s32 var80061458 = 0x00000000; u32 var8006145c = 0x00000000; +#endif + u32 var80061460 = 0x96969600; u32 var80061464 = 0x96969600; u32 var80061468 = 0xffffff00; @@ -100,7 +104,6 @@ u32 var8006146c = 0xffffff00; u32 var80061470 = 0x4d4d2e00; u32 var80061474 = 0x00000000; u32 var80061478 = 0x00000000; -u32 var8006147c = 0x00000000; /** * These numbers are suspected to be portal indexes, based on the size of the diff --git a/src/game/endscreen.c b/src/game/endscreen.c index ea217b8bd..8cc96adf2 100644 --- a/src/game/endscreen.c +++ b/src/game/endscreen.c @@ -976,35 +976,6 @@ struct menuitem g_2PMissionEndscreenVMenuItems[] = { { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; -u32 g_CheatColour = 0xff7f7fff; - -struct menuitem g_MissionEndscreenMenuItems[] = { - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_278, (u32)&soloMenuTextMissionStatus, NULL }, // "Mission Status:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_279, (u32)&soloMenuTextAgentStatus, NULL }, // "Agent Status:" -#if VERSION >= VERSION_NTSC_1_0 - { MENUITEMTYPE_LABEL, 0, 0x01000000, L_OPTIONS_280, (u32)&soloMenuTextMissionTime, menuhandlerEndscreenCheats }, // "Mission Time:" - { MENUITEMTYPE_LABEL, 1, 0x01000000, L_MPWEAPONS_242, (u32)&soloMenuTextTargetTime, menuhandlerEndscreenCheats }, // "Target Time:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPWEAPONS_129, (u32)&soloMenuTextDifficulty, NULL }, // "Difficulty:" - { MENUITEMTYPE_SEPARATOR, 2, 0x00000000, 0x00000000, 0x00000000, menuhandlerEndscreenCheats }, - { MENUITEMTYPE_LABEL, 2, 0x00000000, L_MPWEAPONS_243, 0x00000000, menuhandlerEndscreenCheats }, // "New Cheat Available!:" - { MENUITEMTYPE_LABEL, 3, 0x01000020, (u32)&soloMenuTextTimedCheatName, 0x00000000, menuhandlerEndscreenCheats }, - { MENUITEMTYPE_LABEL, 5, 0x01000020, (u32)&soloMenuTextCompletionCheatName, 0x00000000, menuhandlerEndscreenCheats }, - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_281, (u32)&mpMenuTextWeaponOfChoiceName, NULL }, // "Weapon of Choice" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_282, (u32)&soloMenuTextNumKills, NULL }, // "Kills:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_283, (u32)&soloMenuTextAccuracy, NULL }, // "Accuracy:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_284, (u32)&soloMenuTextNumShots, NULL }, // "Shot Total:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_285, (u32)&soloMenuTextNumHeadShots, NULL }, // "Head Shots:" - { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_286, (u32)&soloMenuTextNumBodyShots, NULL }, // "Body Shots:" - { MENUITEMTYPE_LABEL, 6, 0x00000000, L_OPTIONS_287, (u32)&soloMenuTextNumLimbShots, menuhandlerEndscreenCheats }, // "Limb Shots:" - { MENUITEMTYPE_LABEL, 4, 0x00000000, L_OPTIONS_288, (u32)&soloMenuTextNumOtherShots, menuhandlerEndscreenCheats }, // "Others:" -#endif - { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS_289, 0x00000000, NULL }, // "Press START" - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, -}; - #if VERSION >= VERSION_NTSC_1_0 /** * This function is re-used for several values on the endscreen. @@ -1020,26 +991,28 @@ struct menuitem g_MissionEndscreenMenuItems[] = { */ s32 menuhandlerEndscreenCheats(s32 operation, struct menuitem *item, union handlerdata *data) { + static u32 cheatcolour = 0xff7f7fff; + if (operation == MENUOP_GETCOLOUR && ((g_Menus[g_MpPlayerNum].endscreen.cheatinfo & 0x200) || item->param == 5)) { // Timed cheat just got unlocked, and this item is the timed cheat name u32 weight = func0f006b08(40) * 255; - mainOverrideVariable("ctcol", &g_CheatColour); + mainOverrideVariable("ctcol", &cheatcolour); if (item->param == 0 && cheatGetTime(g_Menus[g_MpPlayerNum].endscreen.cheatinfo & 0xff) == 0) { return 0; } - data->label.colour2 = colourBlend(data->label.colour2, g_CheatColour, weight); + data->label.colour2 = colourBlend(data->label.colour2, cheatcolour, weight); if (item->param == 3) { // completion cheat name - data->label.colour1 = colourBlend(data->label.colour1, g_CheatColour, weight); + data->label.colour1 = colourBlend(data->label.colour1, cheatcolour, weight); } if (item->param == 5) { // timed cheat name - data->label.colour1 = colourBlend(data->label.colour1, g_CheatColour, weight); + data->label.colour1 = colourBlend(data->label.colour1, cheatcolour, weight); } } @@ -1081,6 +1054,47 @@ s32 menuhandlerEndscreenCheats(s32 operation, struct menuitem *item, union handl } #endif +struct menuitem g_MissionEndscreenMenuItems[] = { + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_278, (u32)&soloMenuTextMissionStatus, NULL }, // "Mission Status:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_279, (u32)&soloMenuTextAgentStatus, NULL }, // "Agent Status:" +#if VERSION >= VERSION_NTSC_1_0 + { MENUITEMTYPE_LABEL, 0, 0x01000000, L_OPTIONS_280, (u32)&soloMenuTextMissionTime, menuhandlerEndscreenCheats }, // "Mission Time:" + { MENUITEMTYPE_LABEL, 1, 0x01000000, L_MPWEAPONS_242, (u32)&soloMenuTextTargetTime, menuhandlerEndscreenCheats }, // "Target Time:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPWEAPONS_129, (u32)&soloMenuTextDifficulty, NULL }, // "Difficulty:" + { MENUITEMTYPE_SEPARATOR, 2, 0x00000000, 0x00000000, 0x00000000, menuhandlerEndscreenCheats }, + { MENUITEMTYPE_LABEL, 2, 0x00000000, L_MPWEAPONS_243, 0x00000000, menuhandlerEndscreenCheats }, // "New Cheat Available!:" + { MENUITEMTYPE_LABEL, 3, 0x01000020, (u32)&soloMenuTextTimedCheatName, 0x00000000, menuhandlerEndscreenCheats }, + { MENUITEMTYPE_LABEL, 5, 0x01000020, (u32)&soloMenuTextCompletionCheatName, 0x00000000, menuhandlerEndscreenCheats }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_281, (u32)&mpMenuTextWeaponOfChoiceName, NULL }, // "Weapon of Choice" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_282, (u32)&soloMenuTextNumKills, NULL }, // "Kills:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_283, (u32)&soloMenuTextAccuracy, NULL }, // "Accuracy:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_284, (u32)&soloMenuTextNumShots, NULL }, // "Shot Total:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_285, (u32)&soloMenuTextNumHeadShots, NULL }, // "Head Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_286, (u32)&soloMenuTextNumBodyShots, NULL }, // "Body Shots:" + { MENUITEMTYPE_LABEL, 6, 0x00000000, L_OPTIONS_287, (u32)&soloMenuTextNumLimbShots, menuhandlerEndscreenCheats }, // "Limb Shots:" + { MENUITEMTYPE_LABEL, 4, 0x00000000, L_OPTIONS_288, (u32)&soloMenuTextNumOtherShots, menuhandlerEndscreenCheats }, // "Others:" +#else + // NTSC beta's endscreen dialog lacks cheat information + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_280, (u32)&soloMenuTextMissionTime, NULL }, // "Mission Time:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPWEAPONS_129, (u32)&soloMenuTextDifficulty, NULL }, // "Difficulty:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_281, (u32)&mpMenuTextWeaponOfChoiceName, NULL }, // "Weapon of Choice" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_282, (u32)&soloMenuTextNumKills, NULL }, // "Kills:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_283, (u32)&soloMenuTextAccuracy, NULL }, // "Accuracy:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_284, (u32)&soloMenuTextNumShots, NULL }, // "Shot Total:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_285, (u32)&soloMenuTextNumHeadShots, NULL }, // "Head Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_286, (u32)&soloMenuTextNumBodyShots, NULL }, // "Body Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_287, (u32)&soloMenuTextNumLimbShots, NULL }, // "Limb Shots:" + { MENUITEMTYPE_LABEL, 0, 0x00000000, L_OPTIONS_288, (u32)&soloMenuTextNumOtherShots, NULL }, // "Others:" +#endif + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS_289, 0x00000000, NULL }, // "Press START" + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +}; + #if VERSION >= VERSION_NTSC_1_0 char *soloMenuTextTimedCheatName(struct menuitem *item) { diff --git a/src/game/filemgr.c b/src/game/filemgr.c index 88f0f862a..7211a4e5a 100644 --- a/src/game/filemgr.c +++ b/src/game/filemgr.c @@ -1184,6 +1184,9 @@ struct menuitem g_FilemgrFileLostMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextDeviceName, 0x00000000, filemgrDeviceNameMenuHandler }, #if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPWEAPONS_251, 0x00000000, NULL }, // "The saved file has been erased due to corruption or damage." +#else + { MENUITEMTYPE_LABEL, 0, 0x00000010, L_OPTIONS_352, 0x00000000, NULL }, // "An error occurred while trying to load." + { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS_353, 0x00000000, filemgr0f108d14 }, // "Try Again" #endif { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS_354, 0x00000000, filemgrAcknowledgeFileLostMenuHandler }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -1217,6 +1220,8 @@ struct menudialog g_FilemgrSaveElsewhereMenuDialog = { struct menuitem g_PakNotOriginalMenuItems[] = { #if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextInsertOriginalPak, 0x00000000, NULL }, +#else + { MENUITEMTYPE_LABEL, 0, 0x00000010, L_OPTIONS_363, 0x00000000, NULL }, #endif { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS_365, 0x00000000, filemgrReinsertedOkMenuHandler }, // "OK" { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_OPTIONS_366, 0x00000000, filemgrReinsertedCancelMenuHandler }, // "Cancel" @@ -1617,10 +1622,8 @@ char *filemgrMenuTextLocationName2(struct menuitem *item) L_OPTIONS_113, // "Controller Pak 2" L_OPTIONS_114, // "Controller Pak 3" L_OPTIONS_115, // "Controller Pak 4" -#if VERSION >= VERSION_NTSC_1_0 L_OPTIONS_111, // "Game Pak" - L_OPTIONS_004, // "" -#endif + L_OPTIONS_004, // "" }; if (g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum] == NULL) { @@ -1634,6 +1637,15 @@ char *filemgrMenuTextLocationName2(struct menuitem *item) return langGet(names[item->param]); } #else +u16 names[] = { + L_OPTIONS_112, // "Controller Pak 1" + L_OPTIONS_113, // "Controller Pak 2" + L_OPTIONS_114, // "Controller Pak 3" + L_OPTIONS_115, // "Controller Pak 4" + L_OPTIONS_111, // "Game Pak" + L_OPTIONS_004, // "" +}; + GLOBAL_ASM( glabel filemgrMenuTextLocationName2 /* f105228: 27bdffd0 */ addiu $sp,$sp,-48 @@ -1713,9 +1725,44 @@ char *filemgrMenuTextSaveLocationSpaces(struct menuitem *item) return g_StringPointer; } -#if VERSION < VERSION_NTSC_1_0 +#if VERSION >= VERSION_NTSC_1_0 +const char var7f1b33fc[] = "GOT OKed!, item->data = %d\n"; +const char var7f1b3418[] = "GOT CANCELLED!\n"; +const char var7f1b3428[] = "Picking Location, type %d wadtype %d wad %d\n"; +const char var7f1b3458[] = "Torching file %d\n"; +const char var7f1b346c[] = "Copying file %d\n"; +const char var7f1b3480[] = "item: %x\n"; +const char var7f1b348c[] = "Switched Wads Back\n"; +const char var7f1b34a0[] = "MenuClosed\n"; +const char var7f1b34ac[] = "Deleting files, wad %d\n"; +#endif + +#if VERSION >= VERSION_NTSC_1_0 +/** + * item->param is a SAVEDEVICE constant. + */ +s32 filemgrSelectLocationMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data) +{ + if (g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum] == NULL) { + return 0; + } + + if (operation == MENUOP_CHECKDISABLED) { + if (g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->spacesfree[item->param] < 1) { + return true; + } + } + + if (operation == MENUOP_SET) { + g_Menus[g_MpPlayerNum].fm.device2 = item->param; + filemgrSaveToDevice(); + } + + return 0; +} +#else GLOBAL_ASM( -glabel func0f1053a0nb +glabel filemgrSelectLocationMenuHandler /* f1053a0: 3c0e8007 */ lui $t6,0x8007 /* f1053a4: 8dce3af0 */ lw $t6,0x3af0($t6) /* f1053a8: 3c18800a */ lui $t8,0x800a @@ -1865,43 +1912,6 @@ glabel func0f1053a0nb ); #endif -#if VERSION >= VERSION_NTSC_1_0 -const char var7f1b33fc[] = "GOT OKed!, item->data = %d\n"; -const char var7f1b3418[] = "GOT CANCELLED!\n"; -const char var7f1b3428[] = "Picking Location, type %d wadtype %d wad %d\n"; -const char var7f1b3458[] = "Torching file %d\n"; -const char var7f1b346c[] = "Copying file %d\n"; -const char var7f1b3480[] = "item: %x\n"; -const char var7f1b348c[] = "Switched Wads Back\n"; -const char var7f1b34a0[] = "MenuClosed\n"; -const char var7f1b34ac[] = "Deleting files, wad %d\n"; -#endif - -#if VERSION >= VERSION_NTSC_1_0 -/** - * item->param is a SAVEDEVICE constant. - */ -s32 filemgrSelectLocationMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data) -{ - if (g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum] == NULL) { - return 0; - } - - if (operation == MENUOP_CHECKDISABLED) { - if (g_FileLists[g_Menus[g_MpPlayerNum].fm.listnum]->spacesfree[item->param] < 1) { - return true; - } - } - - if (operation == MENUOP_SET) { - g_Menus[g_MpPlayerNum].fm.device2 = item->param; - filemgrSaveToDevice(); - } - - return 0; -} -#endif - s32 filemgrCancelSaveMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data) { if (operation == MENUOP_SET) { @@ -2945,7 +2955,6 @@ void pakPushPakMenuDialog(void) g_MpPlayerNum = prevplayernum; } -#if VERSION >= VERSION_NTSC_1_0 struct menuitem g_FilemgrSelectLocationMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000010, L_OPTIONS_368, L_OPTIONS_369, NULL }, // "Where", "Spaces" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -2968,7 +2977,6 @@ struct menudialog g_FilemgrSelectLocationMenuDialog = { 0x00000080, NULL, }; -#endif struct menuitem g_FilemgrConfirmDeleteMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&filemgrMenuTextDeleteFileName, 0x00000000, filemgrFileNameMenuHandler }, @@ -2988,11 +2996,14 @@ struct menudialog g_FilemgrConfirmDeleteMenuDialog = { NULL, }; -#if VERSION >= VERSION_NTSC_1_0 struct menuitem g_FilemgrFileInUseMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000030, (u32)&filemgrMenuTextDeleteFileName, 0x00000000, filemgrFileNameMenuHandler }, { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&filemgrMenuTextDeviceName, 0x00000000, filemgrDeviceNameMenuHandler }, +#if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_LABEL, 0, 0x00000010, (u32)&filemgrMenuTextFileInUseDescription, 0x00000000, NULL }, +#else + { MENUITEMTYPE_LABEL, 0, 0x00000010, 0x54a0, 0x00000000, NULL }, +#endif { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_MPWEAPONS_161, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -3005,7 +3016,6 @@ struct menudialog g_FilemgrFileInUseMenuDialog = { 0x00000080, NULL, }; -#endif struct menuitem g_FilemgrDeleteMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00004010, L_OPTIONS_377, 0x00000000, NULL }, // "Select a file to delete:" diff --git a/src/game/game_092610.c b/src/game/game_092610.c index 4974f6f3a..ae726c5ff 100644 --- a/src/game/game_092610.c +++ b/src/game/game_092610.c @@ -71,6 +71,11 @@ u32 var8006ae30 = 0x00000000; u32 var8006ae34 = 0x00000000; u32 var8006ae38 = 0x00000000; bool g_PropsndPrintChannels = false; + +#if VERSION < VERSION_NTSC_1_0 +u32 nbdata[3] = {0}; +#endif + u32 var8006ae40 = 0x00000000; u32 var8006ae44 = 0x00000000; u32 var8006ae48 = 0x00000001; diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 50e29adfb..c5513757c 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -5168,6 +5168,10 @@ u32 var800714b4 = 0x00000000; u32 var800714b8 = 0x00000000; u32 var800714bc = 0x00000000; +#if VERSION < VERSION_NTSC_1_0 +u32 var80073b6cnb[3] = {0}; +#endif + u32 var800714c0 = 0x0000000a; u32 var800714c4 = 0x0000012c; @@ -16644,8 +16648,11 @@ glabel func0f0f8634 ); u32 var800714e0 = 0x00000000; + +#if VERSION >= VERSION_NTSC_1_0 u32 var800714e4 = 0x00000000; u32 var800714e8 = 0x00000000; +#endif #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( @@ -27625,6 +27632,8 @@ struct menuitem g_PakRemovedMenuItems[] = { { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, #if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS_073, 0x00000000, menuhandler000fcc34 }, // "OK" +#else + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_MPWEAPONS_073, 0x00000000, NULL }, // "OK" #endif { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -27643,6 +27652,8 @@ struct menuitem g_PakRepairSuccessMenuItems[] = { { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, #if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_SELECTABLE, 0, 0x00000020, L_MPWEAPONS_073, 0x00000000, menuhandler000fcc34 }, +#else + { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_MPWEAPONS_073, 0x00000000, NULL }, #endif { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -28135,7 +28146,11 @@ struct menudialog g_PakDamagedMenuDialog = { L_MPWEAPONS_064, // "Damaged Controller Pak" g_PakDamagedMenuItems, menudialog000fcd48, +#if VERSION >= VERSION_NTSC_1_0 0x00000020, +#else + 0x00000000, +#endif NULL, }; @@ -28154,7 +28169,11 @@ struct menudialog g_PakFullMenuDialog = { L_MPWEAPONS_070, // "Full Controller Pak" g_PakFullMenuItems, menudialog000fcd48, +#if VERSION >= VERSION_NTSC_1_0 0x00000020, +#else + 0x00000000, +#endif NULL, }; diff --git a/src/game/game_10c9c0.c b/src/game/game_10c9c0.c index 8cd2e890f..fba663009 100644 --- a/src/game/game_10c9c0.c +++ b/src/game/game_10c9c0.c @@ -222,8 +222,13 @@ struct menudialog g_FilemgrFileSelect4MbMenuDialog = { }; struct menuitem g_AudioVideo4MbMenuItems[] = { +#if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_308, L_MPMENU_000, menuhandlerSfxVolume }, // "Sound" { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_309, L_MPMENU_000, menuhandlerMusicVolume }, // "Music" +#else + { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_308, 0x7fff, menuhandlerSfxVolume }, // "Sound" + { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_309, 0x7fff, menuhandlerMusicVolume }, // "Music" +#endif { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS_310, 0x00000000, menuhandlerSoundMode }, // "Sound Mode" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS_311, 0x00000000, menuhandlerScreenRatio }, // "Ratio" @@ -268,7 +273,9 @@ struct menudialog g_MpDropOut4MbMenuDialog; struct menuitem g_MpQuickGo4MbMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_456, 0x00000000, (void *)&g_MpReadyMenuDialog }, // "Start Game" +#if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_029, 0x00000000, (void *)&g_MpLoadPlayerMenuDialog }, // "Load Player" +#endif { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_458, 0x00000000, (void *)&g_MpPlayerSetup4MbMenuDialog }, // "Player Settings" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_457, 0x00000000, (void *)&g_MpDropOut4MbMenuDialog }, // "Drop Out" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, diff --git a/src/game/game_197c00.c b/src/game/game_197c00.c index 1e1723763..5c5f43810 100644 --- a/src/game/game_197c00.c +++ b/src/game/game_197c00.c @@ -100,7 +100,9 @@ struct aibotweaponpreference g_AibotWeaponPreferences[] = { /*0x4b*/ { 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0 }, // WEAPON_KEYCARD4B /*0x4c*/ { 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0 }, // WEAPON_KEYCARD4C /*0x4d*/ { 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0 }, // WEAPON_SUITCASE +#if VERSION >= VERSION_NTSC_1_0 /*0x4e*/ { 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0 }, // WEAPON_BRIEFCASE +#endif /*0x4f*/ { 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0 }, // WEAPON_SHIELD /*0x50*/ { 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0 }, // WEAPON_NECKLACE /*0x51*/ { 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0 }, // WEAPON_HAMMER diff --git a/src/game/hudmsg.c b/src/game/hudmsg.c index be6851481..0084c5711 100644 --- a/src/game/hudmsg.c +++ b/src/game/hudmsg.c @@ -52,6 +52,10 @@ s32 g_HudPaddingX = 24; s32 g_NumHudMessages = 0; struct hudmessage *g_HudMessages = NULL; +#if VERSION < VERSION_NTSC_1_0 +u32 var800736b0nb = 0; +#endif + struct hudmsgtype g_HudmsgTypes[] = { /* 0*/ { 1, 1, 0, (void *) &g_CharsHandelGothicSm, (void *) &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 80 }, /* 1*/ { 0, 1, 0, (void *) &g_CharsHandelGothicMd, (void *) &g_FontHandelGothicMd, 0x00ff0000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_YMIDDLE, 0, 0, 120 }, @@ -64,13 +68,15 @@ struct hudmsgtype g_HudmsgTypes[] = { /* 8*/ { 1, 1, 0, (void *) &g_CharsHandelGothicSm, (void *) &g_FontHandelGothicSm, 0x00ffc000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_BOTTOM, 0, 0, 500 }, /* 9*/ { 1, 1, 0, (void *) &g_CharsHandelGothicXs, (void *) &g_FontHandelGothicXs, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 120 }, /*10*/ { 1, 1, 0, (void *) &g_CharsHandelGothicSm, (void *) &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 240 }, +#if VERSION >= VERSION_NTSC_1_0 /*11*/ { 0, 0, 0, (void *) &g_CharsHandelGothicSm, (void *) &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_BELOWVIEWPORT, 0, 0, 120 }, +#else + /*11*/ { 1, 0, 0, (void *) &g_CharsHandelGothicSm, (void *) &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_BELOWVIEWPORT, 0, 0, 120 }, +#endif }; u32 var80071170 = 0x2e3b213f; u32 var80071174 = 0x2c000000; -u32 var80071178 = 0x00000000; -u32 var8007117c = 0x00000000; u8 hudmsgsAreActive(void) { diff --git a/src/game/inventory/items.c b/src/game/inventory/items.c index dd533e8f5..2d84408df 100644 --- a/src/game/inventory/items.c +++ b/src/game/inventory/items.c @@ -363,12 +363,16 @@ struct guncmd invanim_falcon2_reload_0[] = { gunscript_showpart(1, 53) gunscript_showpart(1, 43) gunscript_showpart(1, 42) - gunscript_playsound(10, 0x01d8) + gunscript_playsound(10, SFX_01D8) gunscript_hidepart(19, 42) gunscript_waittime(24, 1) - gunscript_playsound(24, 0x80f6) +#if VERSION >= VERSION_NTSC_1_0 + gunscript_playsound(24, SFX_80F6) +#else + gunscript_playsound(24, SFX_01D9) +#endif gunscript_hidepart(24, 43) - gunscript_playsound(53, 0x01db) + gunscript_playsound(53, SFX_01DB) gunscript_waittime(53, 3) gunscript_end }; @@ -378,12 +382,16 @@ struct guncmd invanim_falcon2scope_reload_0[] = { gunscript_showpart(1, 53) gunscript_showpart(1, 43) gunscript_showpart(1, 42) - gunscript_playsound(10, 0x01d8) + gunscript_playsound(10, SFX_01D8) gunscript_hidepart(19, 42) gunscript_waittime(24, 1) - gunscript_playsound(24, 0x80f6) +#if VERSION >= VERSION_NTSC_1_0 + gunscript_playsound(24, SFX_80F6) +#else + gunscript_playsound(24, SFX_01D9) +#endif gunscript_hidepart(24, 43) - gunscript_playsound(53, 0x01db) + gunscript_playsound(53, SFX_01DB) gunscript_waittime(53, 3) gunscript_end }; @@ -392,10 +400,14 @@ struct guncmd invanim_falcon2_reload_1[] = { gunscript_playanimation(ANIM_03F1, 0, 10000) gunscript_hidepart(1, 43) gunscript_showpart(1, 42) - gunscript_playsound(6, 0x01d8) + gunscript_playsound(6, SFX_01D8) gunscript_waittime(50, 1) - gunscript_playsound(50, 0x80f6) - gunscript_playsound(71, 0x01db) +#if VERSION >= VERSION_NTSC_1_0 + gunscript_playsound(50, SFX_80F6) +#else + gunscript_playsound(50, SFX_01D9) +#endif + gunscript_playsound(71, SFX_01DB) gunscript_end }; @@ -611,17 +623,21 @@ struct guncmd invanim_magsec_reload_0[] = { gunscript_showpart(1, 53) gunscript_showpart(1, 41) gunscript_setsoundspeed(3, 1300) - gunscript_playsound(3, 0x01d8) + gunscript_playsound(3, SFX_01D8) gunscript_showpart(10, 42) gunscript_hidepart(14, 41) gunscript_hidepart(22, 42) gunscript_showpart(22, 41) gunscript_setsoundspeed(27, 1300) - gunscript_playsound(27, 0x80f6) +#if VERSION >= VERSION_NTSC_1_0 + gunscript_playsound(27, SFX_80F6) +#else + gunscript_playsound(27, SFX_01D9) +#endif gunscript_waittime(30, 1) gunscript_waittime(56, 3) gunscript_setsoundspeed(58, 1300) - gunscript_playsound(58, 0x01db) + gunscript_playsound(58, SFX_01DB) gunscript_end }; @@ -629,13 +645,17 @@ struct guncmd invanim_magsec_reload_1[] = { gunscript_playanimation(ANIM_040A, 0, 10000) gunscript_showpart(1, 41) gunscript_setsoundspeed(5, 1300) - gunscript_playsound(5, 0x01d8) + gunscript_playsound(5, SFX_01D8) gunscript_hidepart(25, 41) gunscript_setsoundspeed(47, 1300) - gunscript_playsound(47, 0x80f6) +#if VERSION >= VERSION_NTSC_1_0 + gunscript_playsound(47, SFX_80F6) +#else + gunscript_playsound(47, SFX_01D9) +#endif gunscript_waittime(49, 1) gunscript_setsoundspeed(69, 1300) - gunscript_playsound(69, 0x01db) + gunscript_playsound(69, SFX_01DB) gunscript_end }; @@ -770,9 +790,9 @@ struct guncmd invanim_dy357_equiporshoot[] = { struct guncmd invanim_dy357_reload_0[] = { gunscript_playanimation(ANIM_0408, 0, 10000) - gunscript_playsound(50, 0x05cf) + gunscript_playsound(50, SFX_05CF) gunscript_setsoundspeed(80, 1830) - gunscript_playsound(80, 0x01d8) + gunscript_playsound(80, SFX_01D8) gunscript_popoutsackofpills(0x0050) gunscript_popoutsackofpills(0x0051) gunscript_popoutsackofpills(0x0052) @@ -787,7 +807,7 @@ struct guncmd invanim_dy357_reload_0[] = { gunscript_showpart(92, 44) gunscript_showpart(92, 45) gunscript_setsoundspeed(114, 1210) - gunscript_playsound(114, 0x01d8) + gunscript_playsound(114, SFX_01D8) gunscript_hidepart(121, 40) gunscript_hidepart(121, 41) gunscript_hidepart(121, 42) @@ -795,15 +815,15 @@ struct guncmd invanim_dy357_reload_0[] = { gunscript_hidepart(121, 44) gunscript_hidepart(121, 45) gunscript_waittime(123, 1) - gunscript_playsound(147, 0x05cd) + gunscript_playsound(147, SFX_05CD) gunscript_end }; struct guncmd invanim_dy357_reload_1[] = { gunscript_playanimation(ANIM_0420, 0, 10000) - gunscript_playsound(50, 0x05cf) + gunscript_playsound(50, SFX_05CF) gunscript_setsoundspeed(80, 1830) - gunscript_playsound(80, 0x01d8) + gunscript_playsound(80, SFX_01D8) gunscript_popoutsackofpills(0x0050) gunscript_popoutsackofpills(0x0051) gunscript_popoutsackofpills(0x0052) @@ -811,9 +831,9 @@ struct guncmd invanim_dy357_reload_1[] = { gunscript_popoutsackofpills(0x0054) gunscript_popoutsackofpills(0x0055) gunscript_setsoundspeed(114, 1210) - gunscript_playsound(114, 0x01d8) + gunscript_playsound(114, SFX_01D8) gunscript_waittime(123, 1) - gunscript_playsound(147, 0x05cd) + gunscript_playsound(147, SFX_05CD) gunscript_end }; @@ -971,7 +991,7 @@ struct guncmd invanim_equiporreload_0[] = { gunscript_showpart(1, 53) gunscript_showpart(1, 40) gunscript_setsoundspeed(44, 1510) - gunscript_playsound(44, 0x0433) + gunscript_playsound(44, SFX_RELOAD_FARSIGHT) gunscript_hidepart(50, 40) gunscript_end }; @@ -981,7 +1001,7 @@ struct guncmd invanim_phoenix_equiporreload_1[] = { gunscript_showpart(1, 53) gunscript_showpart(1, 40) gunscript_setsoundspeed(44, 1510) - gunscript_playsound(44, 0x0433) + gunscript_playsound(44, SFX_RELOAD_FARSIGHT) gunscript_hidepart(50, 40) gunscript_end }; @@ -1097,18 +1117,18 @@ struct guncmd invanim_mauler_reload_0[] = { gunscript_playanimation(ANIM_03F4, 0, 10000) gunscript_showpart(0, 53) gunscript_setsoundspeed(4, 1200) - gunscript_playsound(4, 0x0053) + gunscript_playsound(4, SFX_0053) gunscript_showpart(4, 43) gunscript_hidepart(18, 42) gunscript_setsoundspeed(20, 2500) - gunscript_playsound(20, 0x8012) + gunscript_playsound(20, SFX_DOOR_8012) gunscript_waittime(25, 1) gunscript_showpart(25, 42) gunscript_hidepart(25, 43) gunscript_setsoundspeed(27, 2000) - gunscript_playsound(27, 0x05c5) + gunscript_playsound(27, SFX_05C5) gunscript_setsoundspeed(61, 1000) - gunscript_playsound(61, 0x01db) + gunscript_playsound(61, SFX_01DB) gunscript_waittime(61, 3) gunscript_end }; @@ -1116,14 +1136,14 @@ struct guncmd invanim_mauler_reload_0[] = { struct guncmd invanim_mauler_reload_1[] = { gunscript_playanimation(ANIM_03F5, 0, 10000) gunscript_setsoundspeed(14, 1200) - gunscript_playsound(14, 0x0053) + gunscript_playsound(14, SFX_0053) gunscript_setsoundspeed(40, 2500) - gunscript_playsound(40, 0x8012) + gunscript_playsound(40, SFX_DOOR_8012) gunscript_setsoundspeed(47, 2000) - gunscript_playsound(47, 0x05c5) + gunscript_playsound(47, SFX_05C5) gunscript_waittime(47, 1) gunscript_setsoundspeed(68, 1000) - gunscript_playsound(68, 0x01db) + gunscript_playsound(68, SFX_01DB) gunscript_end }; @@ -1234,13 +1254,17 @@ struct guncmd invanim_cmp150_reload_0[] = { gunscript_showpart(33, 53) gunscript_showpart(33, 43) gunscript_setsoundspeed(9, 950) - gunscript_playsound(9, 0x01d8) + gunscript_playsound(9, SFX_01D8) gunscript_setsoundspeed(44, 950) - gunscript_playsound(44, 0x80f6) +#if VERSION >= VERSION_NTSC_1_0 + gunscript_playsound(44, SFX_80F6) +#else + gunscript_playsound(44, SFX_01D9) +#endif gunscript_hidepart(45, 43) gunscript_showpart(45, 42) gunscript_waittime(45, 1) - gunscript_playsound(86, 0x0431) + gunscript_playsound(86, SFX_0431) gunscript_end }; @@ -1250,13 +1274,17 @@ struct guncmd invanim_cmp150_reload_1[] = { gunscript_showpart(33, 53) gunscript_showpart(33, 43) gunscript_setsoundspeed(20, 950) - gunscript_playsound(20, 0x01d8) + gunscript_playsound(20, SFX_01D8) gunscript_setsoundspeed(61, 950) - gunscript_playsound(61, 0x80f6) +#if VERSION >= VERSION_NTSC_1_0 + gunscript_playsound(61, SFX_80F6) +#else + gunscript_playsound(61, SFX_01D9) +#endif gunscript_hidepart(61, 43) gunscript_showpart(61, 42) gunscript_waittime(61, 1) - gunscript_playsound(76, 0x0431) + gunscript_playsound(76, SFX_0431) gunscript_end }; @@ -1387,13 +1415,13 @@ struct guncmd invanim_cyclone_equiporreload_0[] = { gunscript_playanimation(ANIM_040E, 0, 10000) gunscript_showpart(1, 53) gunscript_showpart(1, 40) - gunscript_playsound(60, 0x05d3) + gunscript_playsound(60, SFX_05D3) gunscript_end }; struct guncmd invanim_cyclone_equiporreload_1[] = { gunscript_playanimation(ANIM_0421, 0, 10000) - gunscript_playsound(60, 0x05d3) + gunscript_playsound(60, SFX_05D3) gunscript_end }; @@ -1500,13 +1528,13 @@ struct weapon invitem_cyclone = { struct guncmd invanim_rcp120_reload[] = { gunscript_playanimation(ANIM_041A, 0, 10000) gunscript_setsoundspeed(18, 1100) - gunscript_playsound(18, 0x0053) + gunscript_playsound(18, SFX_0053) gunscript_showpart(25, 40) gunscript_showpart(50, 41) - gunscript_playsound(74, 0x05c5) + gunscript_playsound(74, SFX_05C5) gunscript_hidepart(75, 41) gunscript_showpart(75, 40) - gunscript_playsound(112, 0x0431) + gunscript_playsound(112, SFX_0431) gunscript_end }; @@ -1605,7 +1633,7 @@ struct guncmd invanim_callisto_equiporreload[] = { gunscript_playanimation(ANIM_0418, 0, 10000) gunscript_showpart(30, 40) gunscript_setsoundspeed(58, 933) - gunscript_playsound(58, 0x0433) + gunscript_playsound(58, SFX_RELOAD_FARSIGHT) gunscript_hidepart(79, 40) gunscript_end }; @@ -1732,11 +1760,11 @@ struct guncmd invanim_dragon_equiporshoot[] = { struct guncmd invanim_dragon_reload[] = { gunscript_playanimation(ANIM_03FA, 0, 10000) - gunscript_playsound(8, 0x0053) + gunscript_playsound(8, SFX_0053) gunscript_hidepart(17, 42) gunscript_showpart(17, 40) gunscript_waittime(41, 1) - gunscript_playsound(41, 0x05c5) + gunscript_playsound(41, SFX_05C5) gunscript_showpart(41, 42) gunscript_hidepart(41, 40) gunscript_end @@ -1831,10 +1859,10 @@ struct modelpartvisibility invpartvisibility_superdragon[] = { struct guncmd invanim_superdragon_reload[] = { gunscript_playanimation(ANIM_03FB, 0, 10000) - gunscript_playsound(8, 0x0053) + gunscript_playsound(8, SFX_0053) gunscript_hidepart(16, 42) gunscript_showpart(16, 40) - gunscript_playsound(41, 0x05c5) + gunscript_playsound(41, SFX_05C5) gunscript_waittime(43, 1) gunscript_showpart(43, 42) gunscript_hidepart(43, 40) @@ -1844,14 +1872,14 @@ struct guncmd invanim_superdragon_reload[] = { struct guncmd invanim_superdragon_grenadereload[] = { gunscript_playanimation(ANIM_03FC, 0, 10000) gunscript_setsoundspeed(6, 700) - gunscript_playsound(6, 0x0053) + gunscript_playsound(6, SFX_0053) gunscript_showpart(30, 41) gunscript_hidepart(30, 43) gunscript_hidepart(64, 41) gunscript_showpart(64, 43) gunscript_waittime(64, 1) gunscript_setsoundspeed(66, 850) - gunscript_playsound(66, 0x05c5) + gunscript_playsound(66, SFX_05C5) gunscript_end }; @@ -1988,16 +2016,16 @@ struct modelpartvisibility invpartvisibility_ar34[] = { struct guncmd invanim_ar34_equiporreload[] = { gunscript_playanimation(ANIM_0419, 0, 10000) gunscript_setsoundspeed(16, 900) - gunscript_playsound(16, 0x0053) + gunscript_playsound(16, SFX_0053) gunscript_hidepart(21, 41) gunscript_showpart(50, 42) gunscript_setsoundspeed(67, 1400) - gunscript_playsound(67, 0x8025) + gunscript_playsound(67, SFX_8025) gunscript_hidepart(72, 42) gunscript_showpart(72, 41) gunscript_waittime(72, 1) gunscript_setsoundspeed(95, 900) - gunscript_playsound(95, 0x05c5) + gunscript_playsound(95, SFX_05C5) gunscript_end }; @@ -2113,15 +2141,15 @@ struct modelpartvisibility invpartvisibility_k7avenger[] = { struct guncmd invanim_k7avenger_reload[] = { gunscript_playanimation(ANIM_00E9, 0, 10000) gunscript_setsoundspeed(15, 1200) - gunscript_playsound(15, 0x0053) + gunscript_playsound(15, SFX_0053) gunscript_hidepart(22, 41) gunscript_showpart(48, 42) gunscript_waittime(68, 1) gunscript_hidepart(69, 42) gunscript_showpart(69, 41) gunscript_setsoundspeed(69, 1400) - gunscript_playsound(69, 0x8025) - gunscript_playsound(91, 0x05c5) + gunscript_playsound(69, SFX_8025) + gunscript_playsound(91, SFX_05C5) gunscript_end }; @@ -2235,7 +2263,12 @@ struct weapon invitem_k7avenger = { L_GUN_019, // name L_GUN_149, // manufacturer L_GUN_168, // description +#if VERSION >= VERSION_NTSC_1_0 WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS, +#else + // NTSC beta uses "an" in "Picked up an K7 Avenger" + WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN, +#endif }; struct inventory_typef invf_00012fc8[] = { @@ -2254,21 +2287,21 @@ struct modelpartvisibility invpartvisibility_laptopgun[] = { struct guncmd invanim_laptopgun_reload[] = { gunscript_playanimation(ANIM_00E4, 0, 10000) gunscript_setsoundspeed(4, 1630) - gunscript_playsound(4, 0x04fb) + gunscript_playsound(4, SFX_RELOAD_04FB) gunscript_setsoundspeed(15, 1436) - gunscript_playsound(15, 0x04fa) - gunscript_playsound(25, 0x04f7) + gunscript_playsound(15, SFX_04FA) + gunscript_playsound(25, SFX_04F7) gunscript_showpart(40, 41) - gunscript_playsound(42, 0x0053) + gunscript_playsound(42, SFX_0053) gunscript_showpart(48, 42) gunscript_hidepart(55, 41) gunscript_hidepart(63, 42) gunscript_showpart(63, 41) - gunscript_playsound(63, 0x04f8) + gunscript_playsound(63, SFX_04F8) gunscript_hidepart(85, 41) gunscript_waittime(85, 1) - gunscript_playsound(85, 0x05c5) - gunscript_playsound(91, 0x04f9) + gunscript_playsound(85, SFX_05C5) + gunscript_playsound(91, SFX_04F9) gunscript_end }; @@ -2282,18 +2315,18 @@ struct guncmd invanim_laptopgun_shoot[] = { struct guncmd invanim_laptopgun_equip[] = { gunscript_playanimation(ANIM_00E2, 0, 10000) gunscript_setsoundspeed(15, 720) - gunscript_playsound(15, 0x04f7) - gunscript_playsound(35, 0x04f7) - gunscript_playsound(58, 0x04f8) + gunscript_playsound(15, SFX_04F7) + gunscript_playsound(35, SFX_04F7) + gunscript_playsound(58, SFX_04F8) gunscript_end }; struct guncmd invanim_laptopgun_unequip[] = { gunscript_playanimation(ANIM_00E3, 0, 10000) - gunscript_playsound(1, 0x04f7) + gunscript_playsound(1, SFX_04F7) gunscript_setsoundspeed(25, 720) - gunscript_playsound(25, 0x04f7) - gunscript_playsound(50, 0x04f8) + gunscript_playsound(25, SFX_04F7) + gunscript_playsound(50, SFX_04F8) gunscript_end }; @@ -2385,25 +2418,25 @@ struct modelpartvisibility invpartvisibility_shotgun[] = { struct guncmd invanim_shotgun_reload[] = { gunscript_playanimation(ANIM_03ED, 0, 10000) gunscript_showpart(1, 43) - gunscript_playsound(67, 0x01d8) + gunscript_playsound(67, SFX_01D8) gunscript_waittime(74, 1) gunscript_hidepart(75, 43) gunscript_repeatuntilfull(0x0054, 0x0000, 0x0032) - gunscript_playsound(103, 0x04fb) + gunscript_playsound(103, SFX_RELOAD_04FB) gunscript_end }; struct guncmd invanim_shotgun_equiporsingleshot[] = { gunscript_playanimation(ANIM_03EE, 0, 10000) gunscript_waittime(9, 2) - gunscript_playsound(34, 0x04fb) + gunscript_playsound(34, SFX_RELOAD_04FB) gunscript_end }; struct guncmd invanim_shotgun_doubleshot[] = { gunscript_playanimation(ANIM_042C, 0, 10000) gunscript_waittime(9, 2) - gunscript_playsound(54, 0x04fb) + gunscript_playsound(54, SFX_RELOAD_04FB) gunscript_end }; @@ -2508,10 +2541,10 @@ struct guncmd invanim_reaper_shoot[] = { struct guncmd invanim_reaper_reload[] = { gunscript_playanimation(ANIM_0401, 0, 10000) - gunscript_playsound(49, 0x05c7) + gunscript_playsound(49, SFX_05C7) gunscript_hidepart(70, 42) gunscript_showpart(90, 43) - gunscript_playsound(124, 0x05c6) + gunscript_playsound(124, SFX_05C6) gunscript_showpart(134, 42) gunscript_hidepart(134, 43) gunscript_waittime(134, 1) @@ -2625,16 +2658,16 @@ struct inventory_typef invf_00013564[] = { struct guncmd invanim_rocketlauncher_reload[] = { gunscript_playanimation(ANIM_03EF, 0, 10000) gunscript_setsoundspeed(16, 900) - gunscript_playsound(16, 0x04f9) - gunscript_playsound(40, 0x0053) + gunscript_playsound(16, SFX_04F9) + gunscript_playsound(40, SFX_0053) gunscript_showpart(24, 40) gunscript_waittime(76, 1) gunscript_hidepart(76, 40) - gunscript_playsound(77, 0x05d1) + gunscript_playsound(77, SFX_05D1) gunscript_setsoundspeed(106, 1000) - gunscript_playsound(106, 0x04f9) - gunscript_playsound(123, 0x0053) - gunscript_playsound(135, 0x04fa) + gunscript_playsound(106, SFX_04F9) + gunscript_playsound(123, SFX_0053) + gunscript_playsound(135, SFX_04FA) gunscript_end }; @@ -2757,10 +2790,10 @@ struct guncmd invanim_slayer_equiporshoot[] = { struct guncmd invanim_slayer_reload[] = { gunscript_playanimation(ANIM_0429, 0, 10000) gunscript_setsoundspeed(52, 800) - gunscript_playsound(52, 0x0053) - gunscript_playsound(79, 0x808c) + gunscript_playsound(52, SFX_0053) + gunscript_playsound(79, SFX_EYESPYHIT) gunscript_setsoundspeed(126, 900) - gunscript_playsound(126, 0x04fb) + gunscript_playsound(126, SFX_RELOAD_04FB) gunscript_end }; @@ -2872,15 +2905,15 @@ struct guncmd invanim_devastator_equiporshoot[] = { struct guncmd invanim_devastator_reload[] = { gunscript_playanimation(ANIM_03F8, 0, 10000) gunscript_setsoundspeed(15, 600) - gunscript_playsound(15, 0x0053) + gunscript_playsound(15, SFX_0053) gunscript_hidepart(22, 42) gunscript_showpart(36, 41) gunscript_setsoundspeed(47, 700) - gunscript_playsound(47, 0x05c5) + gunscript_playsound(47, SFX_05C5) gunscript_hidepart(47, 41) gunscript_showpart(47, 42) gunscript_waittime(47, 1) - gunscript_playsound(66, 0x05cc) + gunscript_playsound(66, SFX_05CC) gunscript_end }; @@ -3293,7 +3326,7 @@ struct inventory_typef invf_00013df8[] = { struct guncmd invanim_grenade_throw[] = { gunscript_playanimation(ANIM_0426, 0, 10000) gunscript_popoutsackofpills(0x0006) - gunscript_playsound(6, 0x05c1) + gunscript_playsound(6, SFX_05C1) gunscript_waitforzreleased(43) gunscript_waittime(49, 2) gunscript_end @@ -3434,7 +3467,7 @@ struct inventory_typef invf_00013fa4[] = { struct guncmd invanim_farsight_reload[] = { gunscript_playanimation(ANIM_03EB, 0, 10000) gunscript_showpart(1, 40) - gunscript_playsound(72, 0x0433) + gunscript_playsound(72, SFX_RELOAD_FARSIGHT) gunscript_waittime(76, 1) gunscript_hidepart(82, 40) gunscript_end @@ -3474,7 +3507,7 @@ struct weaponfunc_shootsingle invfunc_farsight_shoot = { 0, 0, 4, - 0x813e, + SFX_813E, 5, }; @@ -3496,7 +3529,7 @@ struct weaponfunc_shootsingle invfunc_farsight_targetlocator = { 0, 0, 4, - 0x813e, + SFX_813E, 5, }; @@ -3551,7 +3584,7 @@ struct guncmd invanim_crossbow_reload[] = { gunscript_showpart(1, 53) gunscript_hidepart(19, 40) gunscript_showpart(19, 41) - gunscript_playsound(45, 0x04fc) + gunscript_playsound(45, SFX_04FC) gunscript_waittime(50, 1) gunscript_hidepart(50, 41) gunscript_showpart(50, 40) @@ -3562,21 +3595,21 @@ struct guncmd invanim_crossbow_reload[] = { struct guncmd invanim_crossbow_shoot[] = { gunscript_playanimation(ANIM_00C2, 0, 10000) gunscript_hidepart(20, 40) - gunscript_playsound(37, 0x04f8) + gunscript_playsound(37, SFX_04F8) gunscript_end }; struct guncmd invanim_crossbow_unequip[] = { gunscript_playanimation(ANIM_00D3, 0, 10000) gunscript_hidepart(1, 40) - gunscript_playsound(37, 0x04f8) + gunscript_playsound(37, SFX_04F8) gunscript_end }; struct guncmd invanim_crosbow_equip[] = { gunscript_playanimation(ANIM_00C1, 0, 10000) - gunscript_playsound(32, 0x04fc) - gunscript_playsound(75, 0x04f8) + gunscript_playsound(32, SFX_04FC) + gunscript_playsound(75, SFX_04F8) gunscript_end }; @@ -3708,16 +3741,16 @@ struct guncmd invanim_tranquilizer_reload[] = { gunscript_hidepart(1, 41) gunscript_popoutsackofpills(0x0001) gunscript_setsoundspeed(3, 3500) - gunscript_playsound(3, 0x8016) + gunscript_playsound(3, SFX_DOOR_8016) gunscript_waittime(39, 1) gunscript_hidepart(39, 42) gunscript_showpart(39, 41) gunscript_setsoundspeed(39, 3500) - gunscript_playsound(39, 0x8083) + gunscript_playsound(39, SFX_HIT_MUD_8083) gunscript_setsoundspeed(63, 2070) - gunscript_playsound(63, 0x04f5) + gunscript_playsound(63, SFX_04F5) gunscript_setsoundspeed(72, 3000) - gunscript_playsound(72, 0x00ba) + gunscript_playsound(72, SFX_PRESS_SWITCH) gunscript_end }; @@ -3875,11 +3908,15 @@ struct guncmd invanim_sniperrifle_equip[] = { struct guncmd invanim_sniperrifle_reload[] = { gunscript_playanimation(ANIM_040F, 0, 10000) gunscript_setsoundspeed(22, 850) - gunscript_playsound(22, 0x01d8) + gunscript_playsound(22, SFX_01D8) gunscript_showpart(42, 41) gunscript_hidepart(42, 40) gunscript_setsoundspeed(72, 850) - gunscript_playsound(72, 0x80f6) +#if VERSION >= VERSION_NTSC_1_0 + gunscript_playsound(72, SFX_80F6) +#else + gunscript_playsound(72, SFX_01D9) +#endif gunscript_hidepart(72, 41) gunscript_showpart(72, 40) gunscript_waittime(72, 1) @@ -4731,15 +4768,15 @@ struct guncmd invanim_combatknife_slash[] = { struct guncmd invanim_combatknife_pritosec[] = { gunscript_playanimation(ANIM_0405, 0, 10000) - gunscript_playsound(30, 0x80a7) - gunscript_playsound(40, 0x80a6) + gunscript_playsound(30, SFX_80A7) + gunscript_playsound(40, SFX_80A6) gunscript_end }; struct guncmd invanim_combatknife_sectopri[] = { gunscript_playanimation(ANIM_0405, 65535, 55536) - gunscript_playsound(10, 0x80a8) - gunscript_playsound(20, 0x80a6) + gunscript_playsound(10, SFX_80A8) + gunscript_playsound(20, SFX_80A6) gunscript_end }; @@ -5366,7 +5403,12 @@ struct weapon invitem_xrayscanner = { L_GUN_065, // name L_GUN_000, // manufacturer L_GUN_193, // description +#if VERSION >= VERSION_NTSC_1_0 WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN | WEAPONFLAG_08000000, +#else + // NTSC beta uses "a" in "Picked up a X-ray scanner" + WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_08000000, +#endif }; struct guncmd invanim_datauplink_equip[] = { @@ -5833,6 +5875,7 @@ struct weapon invitem_necklace = { WEAPONFLAG_08000000, }; +#if VERSION >= VERSION_NTSC_1_0 struct weapon invitem_shield = { FILE_PCHRSHIELD, // hi model FILE_PCHRSHIELD, // lo model @@ -5852,19 +5895,13 @@ struct weapon invitem_shield = { 1, // unk38 NULL, // fptr NULL, // part visibility -#if VERSION >= VERSION_NTSC_1_0 L_GUN_240, // short name L_GUN_240, // name L_GUN_000, // manufacturer L_GUN_241, // description -#else - L_GUN_000, // short name - L_GUN_000, // name - L_GUN_000, // manufacturer - L_GUN_000, // description -#endif WEAPONFLAG_08000000, }; +#endif struct weapon invitem_keycard = { FILE_PKEYCARD, // hi model @@ -6095,10 +6132,10 @@ struct weapon *g_Weapons[] = { &invitem_keycard, &invitem_keycard, &invitem_suitcase, -#if VERSION >= VERSION_NTSC_1_0 &invitem_briefcase, -#endif +#if VERSION >= VERSION_NTSC_1_0 &invitem_shield, +#endif &invitem_necklace, &invitem_hammer, &invitem_hammer, diff --git a/src/game/lv.c b/src/game/lv.c index 788760ccf..3d17befac 100644 --- a/src/game/lv.c +++ b/src/game/lv.c @@ -1260,6 +1260,18 @@ bool lvCheckCmpFollowThreat(struct threat *threat, s32 index) } #if VERSION < VERSION_NTSC_1_0 +char var800868c8nb[][3] = { + {'n', '\0', '\0'}, + {'n', 'e', '\0'}, + {'e', '\0', '\0'}, + {'s', 'e', '\0'}, + {'s', '\0', '\0'}, + {'s', 'w', '\0'}, + {'w', '\0', '\0'}, + {'n', 'w', '\0'}, + {'n', '\0', '\0'}, +}; + GLOBAL_ASM( glabel func7f163414nb .late_rodata @@ -4365,6 +4377,11 @@ Gfx *lvRender(Gfx *gdl) return gdl; } #else +u32 var80086910nb[] = { + 0x00000000, 0x00000000, 0x00000000, 0x1e000000, + 0x00000000, 0x00000064, 0x00000000, 0x00000000, +}; + GLOBAL_ASM( glabel lvRender .late_rodata diff --git a/src/game/mainmenu.c b/src/game/mainmenu.c index 3b71ad76f..f44c5de5a 100644 --- a/src/game/mainmenu.c +++ b/src/game/mainmenu.c @@ -4323,8 +4323,13 @@ struct menudialog g_CiControlStylePlayer2MenuDialog = { }; struct menuitem g_AudioOptionsMenuItems[] = { +#if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_228, L_MPMENU_000, menuhandlerSfxVolume }, // "Sound" { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_229, L_MPMENU_000, menuhandlerMusicVolume }, // "Music" +#else + { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_228, 0x7fff, menuhandlerSfxVolume }, // "Sound" + { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_229, 0x7fff, menuhandlerMusicVolume }, // "Music" +#endif { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS_230, 0x00000000, menuhandlerSoundMode }, // "Sound Mode" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS_218, 0x00000000, menuhandlerLangFilter }, // "Language Filter" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, PAL ? 0xc8 : 0, 0x00000000, NULL }, @@ -4342,8 +4347,13 @@ struct menudialog g_AudioOptionsMenuDialog = { }; struct menuitem g_2PMissionAudioOptionsVMenuItems[] = { +#if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS_228, L_MPMENU_000, menuhandlerSfxVolume }, // "Sound" { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS_229, L_MPMENU_000, menuhandlerMusicVolume }, // "Music" +#else + { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS_228, 0x7fff, menuhandlerSfxVolume }, // "Sound" + { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS_229, 0x7fff, menuhandlerMusicVolume }, // "Music" +#endif { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPWEAPONS_153, 0x00000000, menuhandlerSoundMode }, // "Mode" { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS_218, 0x00000000, menuhandlerLangFilter }, // "Language Filter" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -4810,10 +4820,10 @@ void func0f105948(s32 weaponnum) { -1.8999999761581f, 0.89999997615814f, -55.0f, 43.142780303955f, 0.14989000558853f }, { 281.89999389648f, 0.89999997615814f, 8.3999996185303f, 5.0027899742126f, 0.18402999639511f }, { -1.8999999761581f, 0.89999997615814f, -55.0f, 43.142780303955f, 0.14989000558853f }, - { -3.7999999523163f, 6.1999998092651f, 1.0f, 5.6747899055481f, 0.29199999570847f }, #if VERSION >= VERSION_NTSC_1_0 - { -3.7999999523163f, 6.1999998092651f, 1.0f, 5.8997898101807f, 2.0506100654602f }, + { -3.7999999523163f, 6.1999998092651f, 1.0f, 5.6747899055481f, 0.29199999570847f }, #endif + { -3.7999999523163f, 6.1999998092651f, 1.0f, 5.8997898101807f, 2.0506100654602f }, }; s32 useindex; @@ -5543,6 +5553,9 @@ struct cutscene g_Cutscenes[] = { { /* 4*/ STAGE_EXTRACTION, 2, 0, L_OPTIONS_454 }, { /* 5*/ STAGE_EXTRACTION, 2, 1, L_OPTIONS_455 }, { /* 6*/ STAGE_VILLA, 3, 0, L_OPTIONS_456 }, +#if VERSION < VERSION_NTSC_1_0 + { /* 7*/ STAGE_VILLA, 3, 1, L_OPTIONS_457 }, +#endif { /* 7*/ STAGE_VILLA, 3, 2, L_OPTIONS_458 }, { /* 8*/ STAGE_CHICAGO, 4, 0, L_OPTIONS_459 }, { /* 9*/ STAGE_CHICAGO, 4, 1, L_OPTIONS_460 }, @@ -5581,6 +5594,9 @@ u32 g_CutsceneCountsByMission[] = { /* 1*/ 3, // 1 mission completed => 3 cutscenes available (Def intro, outro, Invest intro) /* 2*/ 5, /* 3*/ 7, +#if VERSION >= VERSION_NTSC_1_0 + // NTSC beta has an extra Villa cutscene + // so the numbers are bumped forward in that version /* 4*/ 9, /* 5*/ 11, /* 6*/ 14, @@ -5595,6 +5611,22 @@ u32 g_CutsceneCountsByMission[] = { /*15*/ 35, /*16*/ 37, /*17*/ 38, +#else + /* 4*/ 10, + /* 5*/ 12, + /* 6*/ 15, + /* 7*/ 17, + /* 8*/ 19, + /* 9*/ 22, + /*10*/ 24, + /*11*/ 27, + /*12*/ 29, + /*13*/ 31, + /*14*/ 34, + /*15*/ 36, + /*16*/ 38, + /*17*/ 39, +#endif }; s32 getNumCompletedMissions(void) @@ -5633,6 +5665,7 @@ s32 menuhandlerCinema(s32 operation, struct menuitem *item, union handlerdata *d { /* 0*/ 0, L_OPTIONS_436 }, // "Special" { /* 1*/ 1, L_OPTIONS_438 }, // "Mission 1 - dataDyne Central" { /* 2*/ 7, L_OPTIONS_439 }, +#if VERSION >= VERSION_NTSC_1_0 { /* 3*/ 9, L_OPTIONS_440 }, { /* 4*/ 14, L_OPTIONS_441 }, { /* 5*/ 21, L_OPTIONS_442 }, @@ -5641,6 +5674,16 @@ s32 menuhandlerCinema(s32 operation, struct menuitem *item, union handlerdata *d { /* 8*/ 35, L_OPTIONS_445 }, { /* 9*/ 37, L_OPTIONS_446 }, // "Mission 9 - Skedar Ruins" { /*10*/ 39, L_OPTIONS_447 }, // "Finale" +#else + { /* 3*/ 10, L_OPTIONS_440 }, + { /* 4*/ 15, L_OPTIONS_441 }, + { /* 5*/ 22, L_OPTIONS_442 }, + { /* 6*/ 29, L_OPTIONS_443 }, + { /* 7*/ 34, L_OPTIONS_444 }, + { /* 8*/ 36, L_OPTIONS_445 }, + { /* 9*/ 38, L_OPTIONS_446 }, // "Mission 9 - Skedar Ruins" + { /*10*/ 40, L_OPTIONS_447 }, // "Finale" +#endif }; switch (operation) { diff --git a/src/game/menu/items.c b/src/game/menu/items.c index 665d4efbe..a5476b98f 100644 --- a/src/game/menu/items.c +++ b/src/game/menu/items.c @@ -27,10 +27,13 @@ const char var7f1adfa0[] = "brcol"; const char var7f1adfa8[] = "%d: "; const char var7f1adfb0[] = "%s"; -s32 g_ScissorX1 = 0x00000000; -s32 g_ScissorX2 = 0x00000000; -s32 g_ScissorY1 = 0x00000000; -s32 g_ScissorY2 = 0x00000000; +#if VERSION >= VERSION_NTSC_1_0 +s32 g_ScissorX1 = 0; +s32 g_ScissorX2 = 0; +s32 g_ScissorY1 = 0; +s32 g_ScissorY2 = 0; +#endif + s32 var800711a0 = 0; s32 var800711a4 = 0; u32 g_LineHeight = 11; @@ -11591,6 +11594,18 @@ Gfx *menuRenderControllerText(Gfx *gdl, s32 curmode, struct menurendercontext *c return func0f153780(gdl); } #else +u16 labels[] = { + /*0*/ L_MPWEAPONS_185, // "L/R BUTTONS:" + /*1*/ L_MPWEAPONS_186, // "UP C BUTTON:" + /*2*/ L_MPWEAPONS_187, // "LEFT/RIGHT C BUTTONS:" + /*3*/ L_MPWEAPONS_188, // "DOWN C BUTTON:" + /*4*/ L_MPWEAPONS_189, // "A BUTTON:" + /*5*/ L_MPWEAPONS_190, // "B BUTTON:" + /*6*/ L_MPWEAPONS_191, // "CONTROL STICK:" + /*7*/ L_MPWEAPONS_192, // "Z BUTTON:" + /*8*/ L_MPWEAPONS_193, // "+ CONTROL PAD:" +}; + GLOBAL_ASM( glabel menuRenderControllerText /* f0ec8f0: 27bdff68 */ addiu $sp,$sp,-152 diff --git a/src/game/mplayer/mplayer.c b/src/game/mplayer/mplayer.c index 99bfdd6a9..2f9d23b1f 100644 --- a/src/game/mplayer/mplayer.c +++ b/src/game/mplayer/mplayer.c @@ -3360,18 +3360,18 @@ glabel func0f18a030 ); struct mpweaponset g_MpWeaponSets[12] = { - { /*0x00*/ L_MPWEAPONS_055, { WEAPON_FALCON2, WEAPON_MAGSEC4, WEAPON_PHOENIX, WEAPON_MAULER, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_PHOENIX, MPFEATURE_WEAPON_MAULER, 0, 0 }, 0x02, 0x05, 0x02, 0x08, 0x5b, 0x5c }, // Pistols - { /*0x01*/ L_MPWEAPONS_054, { WEAPON_FALCON2, WEAPON_CMP150, WEAPON_LAPTOPGUN, WEAPON_AR34, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_LAPTOPGUN, 0, 0, 0 }, 0x02, 0x0a, 0x0f, 0x11, 0x5b, 0x5c }, // Automatics - { /*0x02*/ L_MPWEAPONS_053, { WEAPON_MAGSEC4, WEAPON_DY357MAGNUM, WEAPON_SHOTGUN, WEAPON_RCP120, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_SHOTGUN, MPFEATURE_WEAPON_RCP120, 0, 0 }, 0x05, 0x08, 0x0f, 0x11, 0x5b, 0x5c }, // Power - { /*0x03*/ L_MPWEAPONS_052, { WEAPON_PHOENIX, WEAPON_CYCLONE, WEAPON_CALLISTO, WEAPON_FARSIGHT, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_FARSIGHT, MPFEATURE_WEAPON_CALLISTO, 0, 0 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // FarSight - { /*0x04*/ L_MPWEAPONS_051, { WEAPON_FALCON2, WEAPON_CMP150, WEAPON_DRAGON, WEAPON_TRANQUILIZER, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_TRANQUILIZER, 0, 0, 0 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Tranquilizer - { /*0x05*/ L_MPWEAPONS_050, { WEAPON_MAULER, WEAPON_K7AVENGER, WEAPON_REAPER, WEAPON_SUPERDRAGON, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_SUPERDRAGON, MPFEATURE_WEAPON_MAULER, MPFEATURE_WEAPON_K7AVENGER, MPFEATURE_WEAPON_REAPER }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Heavy - { /*0x06*/ L_MPWEAPONS_049, { WEAPON_FALCON2_SILENCER, WEAPON_GRENADE, WEAPON_CMP150, WEAPON_DY357LX, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_FALCON2SILENCED, MPFEATURE_WEAPON_DY357LX, 0, 0 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Golden Magnum - { /*0x07*/ L_MPWEAPONS_048, { WEAPON_DEVASTATOR, WEAPON_DEVASTATOR, WEAPON_SUPERDRAGON, WEAPON_SUPERDRAGON, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_SUPERDRAGON, MPFEATURE_WEAPON_DEVASTATOR, 0, 0 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Explosive - { /*0x08*/ L_MPWEAPONS_047, { WEAPON_MAGSEC4, WEAPON_CMP150, WEAPON_AR34, WEAPON_DEVASTATOR, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_DEVASTATOR, 0, 0, 0 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Grenade Launcher - { /*0x09*/ L_MPWEAPONS_046, { WEAPON_MAULER, WEAPON_CYCLONE, WEAPON_DRAGON, WEAPON_ROCKETLAUNCHER, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_MAULER, 0, 0, 0 }, 0x02, 0x0b, 0x0f, 0x18, 0x5b, 0x5c }, // Rocket Launcher - { /*0x0a*/ L_MPWEAPONS_045, { WEAPON_MAGSEC4, WEAPON_LAPTOPGUN, WEAPON_K7AVENGER, WEAPON_PROXIMITYMINE, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_LAPTOPGUN, MPFEATURE_WEAPON_K7AVENGER, MPFEATURE_WEAPON_PROXIMITYMINE, 0 }, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c }, // Proximity Mine - { /*0x0b*/ L_MPWEAPONS_044, { WEAPON_COMBATKNIFE, WEAPON_COMBATKNIFE, WEAPON_TIMEDMINE, WEAPON_CROSSBOW, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_CROSSBOW, 0, 0, 0 }, 0x1a, 0x1a, 0x20, 0x20, 0x5b, 0x5c }, // Close Combat + { /*0x00*/ L_MPWEAPONS_055, { WEAPON_FALCON2, WEAPON_MAGSEC4, WEAPON_PHOENIX, WEAPON_MAULER, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_PHOENIX, MPFEATURE_WEAPON_MAULER, 0, 0 }, WEAPON_FALCON2, WEAPON_MAGSEC4, WEAPON_FALCON2, WEAPON_DY357MAGNUM, WEAPON_MPSHIELD, WEAPON_DISABLED }, // Pistols + { /*0x01*/ L_MPWEAPONS_054, { WEAPON_FALCON2, WEAPON_CMP150, WEAPON_LAPTOPGUN, WEAPON_AR34, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_LAPTOPGUN, 0, 0, 0 }, WEAPON_FALCON2, WEAPON_CMP150, WEAPON_DRAGON, WEAPON_AR34, WEAPON_MPSHIELD, WEAPON_DISABLED }, // Automatics + { /*0x02*/ L_MPWEAPONS_053, { WEAPON_MAGSEC4, WEAPON_DY357MAGNUM, WEAPON_SHOTGUN, WEAPON_RCP120, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_SHOTGUN, MPFEATURE_WEAPON_RCP120, 0, 0 }, WEAPON_MAGSEC4, WEAPON_DY357MAGNUM, WEAPON_DRAGON, WEAPON_AR34, WEAPON_MPSHIELD, WEAPON_DISABLED }, // Power + { /*0x03*/ L_MPWEAPONS_052, { WEAPON_PHOENIX, WEAPON_CYCLONE, WEAPON_CALLISTO, WEAPON_FARSIGHT, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_FARSIGHT, MPFEATURE_WEAPON_CALLISTO, 0, 0 }, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED }, // FarSight + { /*0x04*/ L_MPWEAPONS_051, { WEAPON_FALCON2, WEAPON_CMP150, WEAPON_DRAGON, WEAPON_TRANQUILIZER, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_TRANQUILIZER, 0, 0, 0 }, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED }, // Tranquilizer + { /*0x05*/ L_MPWEAPONS_050, { WEAPON_MAULER, WEAPON_K7AVENGER, WEAPON_REAPER, WEAPON_SUPERDRAGON, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_SUPERDRAGON, MPFEATURE_WEAPON_MAULER, MPFEATURE_WEAPON_K7AVENGER, MPFEATURE_WEAPON_REAPER }, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED }, // Heavy + { /*0x06*/ L_MPWEAPONS_049, { WEAPON_FALCON2_SILENCER, WEAPON_GRENADE, WEAPON_CMP150, WEAPON_DY357LX, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_FALCON2SILENCED, MPFEATURE_WEAPON_DY357LX, 0, 0 }, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED }, // Golden Magnum + { /*0x07*/ L_MPWEAPONS_048, { WEAPON_DEVASTATOR, WEAPON_DEVASTATOR, WEAPON_SUPERDRAGON, WEAPON_SUPERDRAGON, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_SUPERDRAGON, MPFEATURE_WEAPON_DEVASTATOR, 0, 0 }, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED }, // Explosive + { /*0x08*/ L_MPWEAPONS_047, { WEAPON_MAGSEC4, WEAPON_CMP150, WEAPON_AR34, WEAPON_DEVASTATOR, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_DEVASTATOR, 0, 0, 0 }, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED }, // Grenade Launcher + { /*0x09*/ L_MPWEAPONS_046, { WEAPON_MAULER, WEAPON_CYCLONE, WEAPON_DRAGON, WEAPON_ROCKETLAUNCHER, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_MAULER, 0, 0, 0 }, WEAPON_FALCON2, WEAPON_CYCLONE, WEAPON_DRAGON, WEAPON_ROCKETLAUNCHER, WEAPON_MPSHIELD, WEAPON_DISABLED }, // Rocket Launcher + { /*0x0a*/ L_MPWEAPONS_045, { WEAPON_MAGSEC4, WEAPON_LAPTOPGUN, WEAPON_K7AVENGER, WEAPON_PROXIMITYMINE, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_LAPTOPGUN, MPFEATURE_WEAPON_K7AVENGER, MPFEATURE_WEAPON_PROXIMITYMINE, 0 }, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED, WEAPON_DISABLED }, // Proximity Mine + { /*0x0b*/ L_MPWEAPONS_044, { WEAPON_COMBATKNIFE, WEAPON_COMBATKNIFE, WEAPON_TIMEDMINE, WEAPON_CROSSBOW, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_CROSSBOW, 0, 0, 0 }, WEAPON_COMBATKNIFE, WEAPON_COMBATKNIFE, WEAPON_TIMEDMINE, WEAPON_TIMEDMINE, WEAPON_MPSHIELD, WEAPON_DISABLED }, // Close Combat }; u32 var800874c8 = 0x00000000; @@ -3490,6 +3490,8 @@ void mpCalculatePlayerTitle(struct mpplayer *mpplayer) } } #else +u32 var80089c70nb[10] = {0}; + GLOBAL_ASM( glabel mpCalculatePlayerTitle /* f184578: 3c0f7f1b */ lui $t7,0x7f1b diff --git a/src/game/mplayer/scenarios.c b/src/game/mplayer/scenarios.c index 430606407..49c09911f 100644 --- a/src/game/mplayer/scenarios.c +++ b/src/game/mplayer/scenarios.c @@ -549,7 +549,13 @@ u32 var80086a3c = 0x000003e8; u32 var80086a40 = 0xffffff00; u32 var80086a44 = 0xffffff00; u32 var80086a48 = 0x0fff0000; + +#if VERSION >= VERSION_NTSC_1_0 u32 var80086a4c = 0x57000000; +#else +u32 var80086a4c = 0x56000000; +#endif + u32 var80086a50 = 0x00ffffff; u32 var80086a54 = 0x00000000; @@ -1499,7 +1505,13 @@ u32 var80086bac = 0x000003e8; u32 var80086bb0 = 0xffffff00; u32 var80086bb4 = 0xffffff00; u32 var80086bb8 = 0x0fff0000; + +#if VERSION >= VERSION_NTSC_1_0 u32 var80086bbc = 0x57000000; +#else +u32 var80086bbc = 0x56000000; +#endif + u32 var80086bc0 = 0x00ffffff; u32 var80086bc4 = 0x00000000; diff --git a/src/game/mplayer/setup.c b/src/game/mplayer/setup.c index 5292ce53e..450633327 100644 --- a/src/game/mplayer/setup.c +++ b/src/game/mplayer/setup.c @@ -2355,10 +2355,10 @@ struct menuitem g_MpSaveSetupExistsMenuItems[] = { #if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_LABEL, 0, 0x00000210, L_MPWEAPONS_230, (u32)&mpMenuTextSetupName, NULL }, // "Name:" { MENUITEMTYPE_LABEL, 0, 0x00000230, (u32)&filemgrMenuTextDeviceName, 0x00000000, NULL }, +#endif { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_184, 0x00000000, NULL }, // "Do you want to save over your original game file?" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_185, 0x00000000, menuhandlerMpSaveSetupOverwrite }, // "Save Over Original" { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPMENU_186, 0x00000000, menuhandlerMpSaveSetupCopy }, // "Save Copy" -#endif { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_187, 0x00000000, NULL }, // "Do Not Save" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -2563,6 +2563,11 @@ struct menuitem g_MpPlayerStatsMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000220, (u32)&mpMenuTextUsernamePassword, 0x00000000, menuhandlerMpUsernamePassword }, { MENUITEMTYPE_LABEL, 0, 0x00000200, L_MPWEAPONS_220, 0x00000000, menuhandlerMpUsernamePassword }, // "PASSWORD:" { MENUITEMTYPE_LABEL, 1, 0x00000220, (u32)&mpMenuTextUsernamePassword, 0x00000000, menuhandlerMpUsernamePassword }, +#else + { MENUITEMTYPE_LABEL, 0, 0x00000200, L_MPWEAPONS_219, 0x00000000, menuhandlerMpUsernamePassword }, // "USERNAME:" + { MENUITEMTYPE_LABEL, 0, 0x00000220, 0x51f0, 0x00000000, menuhandlerMpUsernamePassword }, + { MENUITEMTYPE_LABEL, 0, 0x00000200, L_MPWEAPONS_220, 0x00000000, menuhandlerMpUsernamePassword }, // "PASSWORD:" + { MENUITEMTYPE_LABEL, 0, 0x00000220, 0x51f1, 0x00000000, menuhandlerMpUsernamePassword }, #endif { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_MPMENU_164, 0x00000000, NULL }, // "Back" @@ -5576,6 +5581,8 @@ s32 menuhandlerMpNTeams(s32 operation, struct menuitem *item, union handlerdata return 0; } #else +u32 var800881f0nb[4] = {0}; + GLOBAL_ASM( glabel menuhandlerMpNTeams /* f177bd0: 27bdff88 */ addiu $sp,$sp,-120 @@ -7308,6 +7315,9 @@ struct menudialog g_MpConfirmChallengeViaListOrDetailsMenuDialog = { struct menuitem g_MpChallengesListOrDetailsMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00200000, 0x00000078, 0x0000004d, menuhandler0017e4d4 }, +#if VERSION < VERSION_NTSC_1_0 + { MENUITEMTYPE_LABEL, 2, 0x110, 0x7f179198, 0, (void *)0x7f1790a8 }, +#endif { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_MPCHALLENGE, 0x00000000, 0x0000007c, PAL ? 0x41 : 0x37, menuhandler0017e9d8 }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, menuhandler0017e9d8 }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, L_MPWEAPONS_171, 0x00000000, menuhandlerMpStartChallenge }, // "Start Challenge" @@ -7317,10 +7327,18 @@ struct menuitem g_MpChallengesListOrDetailsMenuItems[] = { struct menudialog g_MpChallengeListOrDetailsMenuDialog = { MENUDIALOGTYPE_DEFAULT, +#if VERSION >= VERSION_NTSC_1_0 (u32)&mpMenuTextChallengeName, +#else + 0x5032, +#endif g_MpChallengesListOrDetailsMenuItems, mpCombatChallengesMenuDialog, +#if VERSION >= VERSION_NTSC_1_0 0x00000808, +#else + 0x00000800, +#endif NULL, }; @@ -7328,11 +7346,20 @@ struct menudialog g_MpAdvancedSetupViaAdvChallengeMenuDialog; struct menudialog g_MpChallengeListOrDetailsViaAdvChallengeMenuDialog = { MENUDIALOGTYPE_DEFAULT, +#if VERSION >= VERSION_NTSC_1_0 (u32)&mpMenuTextChallengeName, +#else + 0x5032, +#endif g_MpChallengesListOrDetailsMenuItems, mpCombatChallengesMenuDialog, +#if VERSION >= VERSION_NTSC_1_0 0x00000808, &g_MpAdvancedSetupViaAdvChallengeMenuDialog, +#else + 0x00000800, + &g_MpAdvancedSetupMenuDialog, +#endif }; struct menuitem g_MpConfirmChallengeMenuItems[] = { @@ -8117,7 +8144,9 @@ struct menudialog g_MpAdvancedSetupViaAdvChallengeMenuDialog = { struct menuitem g_MpQuickGoMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_456, 0x00000000, (void *)&g_MpReadyMenuDialog }, // "Start Game" +#if VERSION >= VERSION_NTSC_1_0 { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MPMENU_029, 0x00000000, (void *)&g_MpLoadPlayerMenuDialog }, // "Load Player" +#endif { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_458, 0x00000000, (void *)&g_MpPlayerSetupViaQuickGoMenuDialog }, // "Player Settings" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, L_MISC_457, 0x00000000, (void *)&g_MpDropOutMenuDialog }, // "Drop Out" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, diff --git a/src/game/music.c b/src/game/music.c index 076dc414e..ba5fa89ee 100644 --- a/src/game/music.c +++ b/src/game/music.c @@ -23,14 +23,22 @@ s32 g_MenuTrack = -1; u32 var800840c4 = 0x00000000; s32 g_TemporaryPrimaryTrack = -1; s32 g_TemporaryAmbientTrack = -1; + +#if VERSION >= VERSION_NTSC_1_0 s32 var800840d0 = -1; +#endif + u32 var800840d4 = 0x00000000; u32 var800840d8 = 0x00000000; s32 var800840dc = 0; u32 var800840e0 = 0x0000000f; u32 var800840e4 = 0x00000000; s32 var800840e8 = 0; + +#if VERSION >= VERSION_NTSC_1_0 u16 var800840ec = 0x5000; +#endif + u32 var800840f0 = 0x00000000; u32 var800840f4 = 0x00000000; u32 var800840f8 = PAL ? 100 : 120; diff --git a/src/game/options.c b/src/game/options.c index 6a5a567b3..f4ce203a2 100644 --- a/src/game/options.c +++ b/src/game/options.c @@ -18,6 +18,10 @@ s32 g_ScreenSize = SCREENSIZE_FULL; s32 g_ScreenRatio = SCREENRATIO_NORMAL; u8 g_ScreenSplit = SCREENSPLIT_HORIZONTAL; +#if VERSION < VERSION_NTSC_1_0 +u16 var8008231cnb = 0x7fff; +#endif + s32 optionsGetControlMode(s32 mpchrnum) { return g_MpPlayers[mpchrnum].base.controlmode; diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index 1ca7fa82c..1205fe6c6 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -143,21 +143,34 @@ u32 var800a3394; u32 var800a3398; u32 var800a339c; +#if VERSION >= VERSION_NTSC_1_0 u16 var80075cb0 = ROM_COMPANYCODE; char var80075cb4[] = "PerfDark"; char var80075cc0[] = "PerfDark"; +#else +u16 var80075cb0 = ROM_COMPANYCODE; +u16 var80078054nb = ROM_COMPANYCODE; +char var80078058nb[] = "POCKETCAMERA"; +char var80078068nb[] = "GAMEBOYCAMERA"; +char var80078078nb[] = "PerfDark"; +char var80078084nb[] = "GAMEBOYCAMERA"; +#endif u32 var80075ccc = 0x00000400; u32 g_PakHasEeprom = false; u32 var80075cd4 = 0x00000000; u32 var80075cd8 = 0x00000000; u32 var80075cdc = 0x00000000; -u32 g_PakDebugForceScrub = 0x00000000; -u32 g_PakDebugPakDump = 0x00000000; -u32 g_PakDebugPakCache = 0x00000001; -u32 g_PakDebugPakInit = 0x00000000; -u32 g_PakDebugWipeEeprom = 0x00000000; -u32 g_PakDebugCorruptMe = 0x00000000; + +u32 g_PakDebugForceScrub = 0; +u32 g_PakDebugPakDump = 0; +u32 g_PakDebugPakCache = 1; +u32 g_PakDebugPakInit = 0; + +#if VERSION >= VERSION_NTSC_1_0 +u32 g_PakDebugWipeEeprom = 0; +u32 g_PakDebugCorruptMe = 0; +#endif char g_PakNoteGameName[] = { N64CHAR('P'), @@ -182,7 +195,10 @@ char g_PakNoteExtName[] = {0, 0, 0, 0}; u32 var80075d0c = 0x00000000; u8 var80075d10 = 0; + +#if VERSION >= VERSION_NTSC_1_0 u32 var80075d14 = 0x00000001; +#endif u32 pakGetBlockSize(s8 device) { @@ -2387,9 +2403,11 @@ s32 _pakReadBodyAtGuid(s8 device, s32 fileid, u8 *body, s32 arg3) if (!pak0f1167d8(device)) { offset = pakFindFile(device, fileid, NULL); +#if VERSION >= VERSION_NTSC_1_0 if (offset == -1) { return 1; } +#endif if (offset == 0 || (offset && offset < pakGetPdNumBytes(device) && ((pakGetBlockSize(device) - 1) & offset) == 0)) { result = pak0f11b86c(device, offset, body, &header, arg3); @@ -8450,11 +8468,11 @@ void pakRumble(s32 device, f32 numsecs, s32 onduration, s32 offduration) } } #else +u8 var80009eb9cnb[5]; + void pakRumble(s8 device, f32 numsecs, s32 onduration, s32 offduration) { - // This might be a global variable rather than static - static u8 map[] = {0, 1, 0, 0, 0}; // 0x8009eb9c (ntsc-beta) - u8 index = map[device]; + u8 index = var80009eb9cnb[device]; if (g_Paks[index].unk010 == PAK010_11 && g_Paks[index].type == PAKTYPE_RUMBLE diff --git a/src/game/splat.c b/src/game/splat.c index 70105c826..89deaf990 100644 --- a/src/game/splat.c +++ b/src/game/splat.c @@ -13,6 +13,10 @@ #include "data.h" #include "types.h" +#if VERSION < VERSION_NTSC_1_0 +u32 var80082100nb = 0; +#endif + u32 var8007f8a0 = 0x3e19999a; u32 var8007f8a4 = 0x40400000; f32 var8007f8a8 = 12; diff --git a/src/game/training/menus.c b/src/game/training/menus.c index dd0958241..6fe55a06f 100644 --- a/src/game/training/menus.c +++ b/src/game/training/menus.c @@ -4579,6 +4579,9 @@ struct menudialog g_FrTrainingInfoPreGameMenuDialog = { struct menuitem g_FrCompletedMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000020, L_MPMENU_449, 0x00000000, NULL }, // "Completed!" +#if VERSION < VERSION_NTSC_1_0 + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +#endif { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU_450, (u32)&frMenuTextScoreValue, NULL }, // "Score:" { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU_451, (u32)&frMenuTextTargetsDestroyedValue, NULL }, // "Targets Destroyed:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -4600,12 +4603,20 @@ struct menudialog g_FrCompletedMenuDialog = { L_MPMENU_448, // "Training Stats" g_FrCompletedMenuItems, frTrainingStatsMenuDialog, +#if VERSION >= VERSION_NTSC_1_0 0x00000004, NULL, +#else + 0, + &g_FrWeaponListMenuDialog, +#endif }; struct menuitem g_FrFailedMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&frMenuTextFailReason, 0x00000000, NULL }, +#if VERSION < VERSION_NTSC_1_0 + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, +#endif { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU_450, (u32)&frMenuTextScoreValue, NULL }, // "Score:" { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU_451, (u32)&frMenuTextTargetsDestroyedValue, NULL }, // "Targets Destroyed:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -4627,8 +4638,13 @@ struct menudialog g_FrFailedMenuDialog = { L_MPMENU_448, // "Training Stats" g_FrFailedMenuItems, frTrainingStatsMenuDialog, +#if VERSION >= VERSION_NTSC_1_0 0x00000004, NULL, +#else + 0x00000000, + &g_FrWeaponListMenuDialog, +#endif }; s32 ciOfficeInformationMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data) diff --git a/src/include/bss.h b/src/include/bss.h index 48a9446fa..333d50d82 100644 --- a/src/include/bss.h +++ b/src/include/bss.h @@ -134,7 +134,7 @@ extern struct criteria_holograph *g_HolographCriterias; extern u32 var8009d0d0[2]; extern s32 var8009d0d8; extern struct audiohandle *g_BgunAudioHandles[4]; -extern struct fireslot g_Fireslots[NUM_FIRESLOTS]; +extern struct fireslot g_Fireslots[]; extern struct casing g_Casings[20]; extern struct var8009da60 var8009da60[8]; extern struct lasersight g_LaserSights[4]; diff --git a/src/include/commands.h b/src/include/commands.h index 060417617..ed8dcd997 100644 --- a/src/include/commands.h +++ b/src/include/commands.h @@ -2837,7 +2837,7 @@ /** * Set the current chr's action. If bool is false, also sets orders to zero. * - * Action is expected to be an ACT constant. + * Action is expected to be a MA constant. */ #define set_action(action, bool) \ mkshort(0x0132), \ diff --git a/src/include/constants.h b/src/include/constants.h index e282bc5f1..39ac3ddff 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -904,25 +904,25 @@ #define GAILIST_REBUILD_GROUPS (VERSION >= VERSION_NTSC_1_0 ? 0x0017 : 0x0016) #define GAILIST_DO_BORED_ANIMATION (VERSION >= VERSION_NTSC_1_0 ? 0x0018 : 0x0017) #define GAILIST_DO_SITTING_ANIMATION (VERSION >= VERSION_NTSC_1_0 ? 0x0019 : 0x0018) -#define GAILIST_DISGUISE_DETECTION 0x001a -#define GAILIST_OBSERVE_CAMSPY 0x001b -#define GAILIST_SURPRISED 0x001c +#define GAILIST_DISGUISE_DETECTION (VERSION >= VERSION_NTSC_1_0 ? 0x001a : 0x0019) +#define GAILIST_OBSERVE_CAMSPY (VERSION >= VERSION_NTSC_1_0 ? 0x001b : 0x001a) +#define GAILIST_SURPRISED (VERSION >= VERSION_NTSC_1_0 ? 0x001c : 0x001b) #define GAILIST_SEARCH_FOR_PLAYER (VERSION >= VERSION_NTSC_1_0 ? 0x001d : 0x001c) -#define GAILIST_LOOK_AROUND 0x001e +#define GAILIST_LOOK_AROUND (VERSION >= VERSION_NTSC_1_0 ? 0x001e : 0x001d) #define GAILIST_RELATED_TO_SPAWNING (VERSION >= VERSION_NTSC_1_0 ? 0x001f : 0x001e) -#define GAILIST_PLACE_COOP_BUDDY 0x0020 +#define GAILIST_PLACE_COOP_BUDDY (VERSION >= VERSION_NTSC_1_0 ? 0x0020 : 0x001f) #define GAILIST_STOP_AND_IDLE (VERSION >= VERSION_NTSC_1_0 ? 0x0021 : 0x0020) -#define GAILIST_COMMENT_ON_PLAYER_DEAD 0x0022 // unused -#define GAILIST_DODGE 0x0023 -#define GAILIST_FOLLOW_BOND 0x0024 -#define GAILIST_POINTLESS 0x0025 // unused -#define GAILIST_INIT_PSYCHOSIS 0x0026 -#define GAILIST_PSYCHOSISED 0x0027 -#define GAILIST_AI_BOT_DEAD 0x0028 // unused -#define GAILIST_AI_BOT_INIT 0x0029 // unused -#define GAILIST_AI_BOT_ALIVE 0x002a // unused -#define GAILIST_DO_SOMETHING_AND_WAIT 0x002b // unused -#define GAILIST_INIT_SEARCH 0x002c // unused +#define GAILIST_COMMENT_ON_PLAYER_DEAD (VERSION >= VERSION_NTSC_1_0 ? 0x0022 : 0x0021) // unused +#define GAILIST_DODGE (VERSION >= VERSION_NTSC_1_0 ? 0x0023 : 0x0022) +#define GAILIST_FOLLOW_BOND (VERSION >= VERSION_NTSC_1_0 ? 0x0024 : 0x0023) +#define GAILIST_POINTLESS (VERSION >= VERSION_NTSC_1_0 ? 0x0025 : 0x0024) // unused +#define GAILIST_INIT_PSYCHOSIS (VERSION >= VERSION_NTSC_1_0 ? 0x0026 : 0x0025) +#define GAILIST_PSYCHOSISED (VERSION >= VERSION_NTSC_1_0 ? 0x0027 : 0x0026) +#define GAILIST_AI_BOT_DEAD (VERSION >= VERSION_NTSC_1_0 ? 0x0028 : 0x0027) // unused +#define GAILIST_AI_BOT_INIT (VERSION >= VERSION_NTSC_1_0 ? 0x0029 : 0x0028) // unused +#define GAILIST_AI_BOT_ALIVE (VERSION >= VERSION_NTSC_1_0 ? 0x002a : 0x0029) // unused +#define GAILIST_DO_SOMETHING_AND_WAIT (VERSION >= VERSION_NTSC_1_0 ? 0x002b : 0x002a) // unused +#define GAILIST_INIT_SEARCH (VERSION >= VERSION_NTSC_1_0 ? 0x002c : 0x002b) // unused #define GAILIST_INVINCIBLE_AND_IDLE (VERSION >= VERSION_NTSC_1_0 ? 0x002d : 0x002c) #define GAMEFILEFLAG_P1_FORWARDPITCH 0x00 diff --git a/src/include/sfx.h b/src/include/sfx.h index f3c3ff290..35db1cf6b 100644 --- a/src/include/sfx.h +++ b/src/include/sfx.h @@ -1858,6 +1858,7 @@ enum sfx { SFX_M1_COVER_MY_ASS, SFX_M1_SCREAM, #if VERSION >= VERSION_NTSC_1_0 + // Might be SFX_M1_SCREAM that's actually being added here SFX_F_DAMN_SHES_GOOD, #endif SFX_F_MY_GOD, diff --git a/src/lib/base.c b/src/lib/base.c index 5842c0c71..08e465117 100644 --- a/src/lib/base.c +++ b/src/lib/base.c @@ -4,6 +4,196 @@ #include "data.h" #include "types.h" +#if VERSION < VERSION_NTSC_1_0 +// This data doesn't belong here, but I don't know what the data is or where +// exactly it should go yet. +u32 var800606e0nb[] = { + 0xb8000000, 0x00000000, 0x00000000, 0x00227a00, + 0x007a348b, 0x00223434, 0x00115811, 0x00696900, + 0x00000000, 0x00009c00, 0x00004600, 0x00460000, + 0x00004600, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000046, 0x00229c11, 0x00346900, + 0x00229c11, 0x00699c11, 0x00005834, 0x00adad34, + 0x00118b34, 0x009cad7a, 0x00229c11, 0x00229c11, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00113411, 0x00000000, 0x0046ce00, + 0x00ad58de, 0x00466969, 0x009c9c69, 0x008b8b00, + 0x00469c00, 0x0022ce00, 0x00583400, 0x00345800, + 0x007ace69, 0x00005800, 0x00000000, 0x00000000, + 0x00000000, 0x00003446, 0x008b007a, 0x00588b00, + 0x008b008b, 0x0022007a, 0x00119c69, 0x008b0000, + 0x009c1100, 0x0022008b, 0x008b007a, 0x008b007a, + 0x00000000, 0x00000000, 0x00225869, 0x00000000, + 0x69582200, 0x009c698b, 0x00000000, 0x0046ce00, + 0x00222258, 0x00deef7a, 0x00ad1111, 0x0069ef9c, + 0x008b0000, 0x00460000, 0x008b0000, 0x00008b00, + 0x0058ce34, 0x00008b00, 0x00000000, 0x00000000, + 0x00000000, 0x00008b00, 0x008b008b, 0x00008b00, + 0x0011007a, 0x00118b46, 0x0058467a, 0x00cead22, + 0x009c8b00, 0x0000117a, 0x00698b46, 0x008b00ad, + 0x0034ad00, 0x0034ad00, 0x228b4600, 0x8b8b8b8b, + 0x00468b22, 0x0011008b, 0x00000000, 0x00007a00, + 0x00000000, 0x009c9c00, 0x00118b34, 0x22adbd46, + 0x008b8b34, 0x00000000, 0x008b0000, 0x00008b00, + 0x007a2269, 0x22adef9c, 0x00000000, 0x22adadad, + 0x00000000, 0x00226900, 0x008b008b, 0x00008b00, + 0x00007a00, 0x0000117a, 0x009c347a, 0x0000008b, + 0x00ce117a, 0x00002269, 0x008b227a, 0x00229c8b, + 0x00001100, 0x00001100, 0xad580000, 0x34343434, + 0x000058ad, 0x0000bd34, 0x00000000, 0x00112200, + 0x00000000, 0x22dede22, 0x00ce5858, 0x0046468b, + 0x008bad00, 0x00000000, 0x008b0000, 0x00008b00, + 0x00000000, 0x00008b00, 0x00003400, 0x00000000, + 0x00002200, 0x00691100, 0x008b008b, 0x00008b00, + 0x00691158, 0x0011008b, 0x007a9cad, 0x1122008b, + 0x008b008b, 0x00008b00, 0x008b008b, 0x0000227a, + 0x00002200, 0x00002200, 0x228b4600, 0x8b8b8b8b, + 0x00468b22, 0x00006900, 0x00000000, 0x00228b00, + 0x00000000, 0x008b8b00, 0x0034bd00, 0x00119c46, + 0x007a6969, 0x00000000, 0x00583400, 0x00345800, + 0x00000000, 0x00005800, 0x0011ff00, 0x00000000, + 0x00228b00, 0x008b0000, 0x00349c22, 0x008bce69, + 0x22bdad8b, 0x007a9c11, 0x00008b8b, 0x118b9c11, + 0x00349c22, 0x00005800, 0x00349c11, 0x00588b11, + 0x00228b00, 0x0069ad00, 0x00225869, 0x00000000, + 0x69582200, 0x0000bd00, 0x00000000, 0x00000000, + 0x00000000, 0x00464600, 0x00004600, 0x00000000, + 0x00000000, 0x00000000, 0x00004600, 0x00460000, + 0x00000000, 0x00000000, 0x00583400, 0x00000000, + 0x00000000, 0x58340000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x008b0000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00229c11, 0x00221100, + 0x11223400, 0x00003411, 0x11342200, 0x00343422, + 0x00343422, 0x00002222, 0x00220022, 0x00342222, + 0x00003434, 0x00341122, 0x22341100, 0x11110022, + 0x22221134, 0x00002200, 0x00343411, 0x00003400, + 0x00343411, 0x00113411, 0x00343434, 0x11341134, + 0x11220034, 0x34220034, 0x11340022, 0x11220034, + 0x00223422, 0x00008b34, 0x00460000, 0x00587a00, + 0x00005800, 0x00000000, 0x348b008b, 0x0069bd00, + 0x11de7a58, 0x00ad69de, 0x22ce7a9c, 0x11ce7aad, + 0x11ce7aad, 0x00ad7ade, 0x22ce00ce, 0x0069ce58, + 0x00008bce, 0x22ce22ce, 0x46ce4600, 0x7abd00ff, + 0x58ff46ce, 0x00ad7a9c, 0x11ce7a7a, 0x00ad7a8b, + 0x22ce7a7a, 0x118b7abd, 0x469ccece, 0x8b8b34ce, + 0x8b8b00bd, 0xbd8b22bd, 0x58ce00ce, 0x22bd00ce, + 0x00bd7aad, 0x00008b00, 0x007a1100, 0x00008b00, + 0x00694658, 0x00000000, 0x468b7abd, 0x00588b22, + 0x008b008b, 0x46460011, 0x008b007a, 0x118b3458, + 0x008b3458, 0x46460011, 0x008b008b, 0x00008b00, + 0x0000117a, 0x008b7a11, 0x008b0000, 0x589c58bd, + 0x11ad698b, 0x4646007a, 0x118b007a, 0x5846007a, + 0x118b007a, 0x46580011, 0x34228b46, 0x6934008b, + 0x007a008b, 0x58348b7a, 0x11696946, 0x00695846, + 0x00113458, 0x00008b00, 0x00116900, 0x00008b00, + 0x00110011, 0x00000000, 0x468b8b9c, 0x009c228b, + 0x00dead7a, 0x58340000, 0x008b007a, 0x11dead00, + 0x00dead00, 0x583400ad, 0x46deadbd, 0x00008b00, + 0x3411117a, 0x00dead00, 0x008b0000, 0x5846ad7a, + 0x118b8b8b, 0x5834007a, 0x11dead34, 0x5834007a, + 0x11dede46, 0x0058ad34, 0x00008b00, 0x5834008b, + 0x008b117a, 0x00bdde8b, 0x0022ad00, 0x0011bd00, + 0x00226900, 0x00008b00, 0x00008b00, 0x00008b00, + 0x00000000, 0x00000000, 0x348b348b, 0x469c8bad, + 0x008b007a, 0x347a0058, 0x008b009c, 0x008b008b, + 0x008b0000, 0x228b007a, 0x008b008b, 0x00008b00, + 0x46462269, 0x008b117a, 0x008b007a, 0x6934347a, + 0x118b34de, 0x118b009c, 0x008b0000, 0x228b009c, + 0x008b117a, 0x3434008b, 0x00008b00, 0x4646008b, + 0x0022ce00, 0x00adbd8b, 0x008b007a, 0x00008b00, + 0x008b0058, 0x00008b00, 0x00003446, 0x00008b00, + 0x00000000, 0x00000000, 0x00697a9c, 0x7a9c00bd, + 0x69cead58, 0x0058ad58, 0x22bdad34, 0x22cead8b, + 0x22bd2200, 0x0058ad58, 0x22ad00ce, 0x008bbd7a, + 0x007a7a00, 0x22bd228b, 0x69bdadbd, 0x8b9c00bd, + 0x69ce227a, 0x0058ad34, 0x22ce6900, 0x009cef69, + 0x22bd2258, 0x7a9c9c22, 0x0046ce34, 0x007aad11, + 0x00005800, 0x00580058, 0x22ad00ce, 0x0058bd34, + 0x00ad9c9c, 0x00008b00, 0x0000008b, 0x00008b00, + 0x00000000, 0x22222222, 0x00002211, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0058588b, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000ce34, 0x0000007a, 0x1158ad00, + 0x00000000, 0x7a7a7a7a, 0x00693400, 0x00000000, + 0x22690000, 0x00000000, 0x0000008b, 0x00000000, + 0x0000589c, 0x11000000, 0x22690000, 0x00001100, + 0x00001100, 0x22690000, 0x008b7a00, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00004646, 0x00004600, 0x00464600, + 0x00000000, 0x00000000, 0x0046ad00, 0x00000000, + 0x008b0000, 0x00000000, 0x0000008b, 0x00000000, + 0x00116900, 0x00000000, 0x008b0000, 0x00006900, + 0x00006900, 0x008b0000, 0x00008b00, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00226900, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00008b00, 0x00008b00, 0x00008b00, + 0x00000000, 0x00000000, 0x00005800, 0x008b9c34, + 0x00cead69, 0x007aad9c, 0x008badbd, 0x007aad34, + 0x009cde7a, 0x008b9cce, 0x11cead69, 0x00589c00, + 0x008bad69, 0x008bad69, 0x00008b00, 0x7aad9c9c, + 0x22cead69, 0x007aad34, 0x22cead69, 0x008b9cde, + 0x22de9c69, 0x007aad9c, 0x009cde7a, 0x118b00ad, + 0x11ce00de, 0x34ce00de, 0x22ce34ad, 0x22ce00de, + 0x00bd9cad, 0x00008b00, 0x00008b00, 0x00008b00, + 0x229c347a, 0x00000000, 0x00000000, 0x009cad7a, + 0x008b007a, 0x69340034, 0x4634009c, 0x46ce9cbd, + 0x00226900, 0x4646008b, 0x008b008b, 0x00008b00, + 0x0000007a, 0x00de7a00, 0x00008b00, 0x46468b69, + 0x119c008b, 0x4646008b, 0x008b0069, 0x5846008b, + 0x008b0000, 0x008b7a58, 0x00226900, 0x008b008b, + 0x007a117a, 0x008b8b8b, 0x0058bd00, 0x008b008b, + 0x00464646, 0x00467a00, 0x00008b00, 0x00008b46, + 0x7a349c22, 0x00000000, 0x00000000, 0x4634227a, + 0x009c007a, 0x58460022, 0x4646009c, 0x34460034, + 0x00226900, 0x3446009c, 0x008b008b, 0x00008b00, + 0x0000007a, 0x008b6911, 0x00008b00, 0x46468b69, + 0x118b008b, 0x3458008b, 0x00ad0069, 0x584600ad, + 0x008b0000, 0x0069348b, 0x00226911, 0x008b009c, + 0x0011de00, 0x00adbd8b, 0x00699c11, 0x00469c34, + 0x00225858, 0x00008b00, 0x00008b00, 0x00008b00, + 0x00000000, 0x00000000, 0x00000000, 0x119c8bce, + 0x22adad58, 0x007a9c46, 0x0069adad, 0x1169ad46, + 0x008bbd7a, 0x0069adad, 0x22ad00bd, 0x118bce69, + 0x0000007a, 0x227a34ce, 0x008bbd7a, 0x7a699c46, + 0x69bd00ce, 0x007a9c22, 0x00bd9c58, 0x0069adad, + 0x22ce9c34, 0x008bad58, 0x00009c8b, 0x00699cad, + 0x11005800, 0x00580069, 0x11bd349c, 0x00009c00, + 0x00adad9c, 0x00008b00, 0x00008b00, 0x00008b00, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008b, 0x00000000, 0x00000000, + 0x00004646, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x008b0000, 0x0000008b, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00226900, + 0x00000000, 0x00008b46, 0x00008b00, 0x00467a00, + 0x00000000, 0x00000000, 0x00000005, 0x00000001, + 0x00000018, 0x00000010, 0x00000001, 0x00000000, + 0xe7000000, 0x00000000, 0xba001402, 0x00000000, + 0xba000602, 0x000000c0, 0xb900031d, 0x500a4240, + 0xfc30b261, 0x5566db6d, 0xba001301, 0x00000000, + 0xba000e02, 0x00000000, 0xb9000002, 0x00000000, + 0xfd700000, 0x800606e8, 0xf5700000, 0x07000000, + 0xe6000000, 0x00000000, 0xf3000000, 0x0753f080, + 0xe7000000, 0x00000000, 0xf5682000, 0x00000000, + 0xf2000000, 0x001fc050, 0xe6000000, 0x00000000, + 0xb8000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0xb8000000, 0x00000000, + 0xc0000000, 0x00000000, 0xfa000000, 0xffffff00, + 0xfb000000, 0x00000000, 0x00000000, 0x00000000, + 0x000000ff, 0x00000000, 0x00000000, 0x00000000, +}; +#endif + const char lower[] = "0123456789abcdefghijklmnopqrstuvwxyz"; const char upper[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; diff --git a/src/lib/boot.c b/src/lib/boot.c index 310308690..cb2eeec4e 100644 --- a/src/lib/boot.c +++ b/src/lib/boot.c @@ -30,11 +30,6 @@ OSSched g_Sched; OSScClient var8008dca8; u32 g_OsMemSize; -#if VERSION < VERSION_NTSC_1_0 -u32 var8005e5ccnb = 1; -u32 var8005e5d0nb = 0x10000000; -#endif - u32 var8005ce00 = 0; u32 var8005ce04 = 0; u32 var8005ce08 = 0; @@ -562,8 +557,8 @@ s32 bootGetMemSize(void) #if VERSION < VERSION_NTSC_1_0 void func00001978(void) { - var8005e5ccnb = 1; - var8005e5d0nb = 0x10000000; + var8005ce4c = 1; + var8005ce50 = 0x10000000; } #endif diff --git a/src/lib/crash.c b/src/lib/crash.c index e0865c5e9..41629c137 100644 --- a/src/lib/crash.c +++ b/src/lib/crash.c @@ -8,11 +8,17 @@ #include "data.h" #include "types.h" +#define MSG_FAULT 0x10 + OSThread g_FaultThread; u8 g_FaultStack[STACKSIZE_FAULT]; OSMesgQueue g_FaultMesgQueue; OSMesg g_FaultMesg; +#if VERSION < VERSION_NTSC_1_0 +u32 padding[2]; +#endif + u32 var8005d5b0 = 0; s16 g_CrashCurX = 0; s16 g_CrashCurY = 0; @@ -117,6 +123,35 @@ struct crashdescription g_CrashFpcsrDescriptions[] = { char (*g_CrashCharBuffer)[71] = NULL; u16 *g_CrashFrameBuffer = NULL; +#if VERSION < VERSION_NTSC_1_0 +u32 somethingnb[] = { + 0x22220200, 0x55000000, 0x05f5f500, 0x27427200, + 0x05124500, 0x34255300, 0x22000000, 0x24444420, + 0x42222240, 0x06f6f600, 0x00272000, 0x00000240, + 0x00070000, 0x00000200, 0x11224480, 0x25555200, + 0x26222700, 0x25125700, 0x61211600, 0x33557300, + 0x64611600, 0x24655200, 0x71112200, 0x25755200, + 0x25531600, 0x00200200, 0x00200640, 0x01242100, + 0x00707000, 0x04212400, 0x07120200, 0x25ff5700, + 0x02557d00, 0x06575e00, 0x07445300, 0x07555600, + 0x07565700, 0x07564400, 0x07c95700, 0x05575500, + 0x07222700, 0x03111600, 0x05665500, 0x04445f00, + 0x0dff9d00, 0x0f777d00, 0x07dd5700, 0x07564600, + 0x07995770, 0x07565500, 0x07461e00, 0x07222200, + 0x0d999600, 0x0d552200, 0x0df77500, 0x0d625500, + 0x05622600, 0x07125700, 0x32222230, 0x44222110, + 0x62222260, 0x25000000, 0x00000700, 0x42200000, + 0x0067d700, 0x44755700, 0x00788600, 0x117dd700, + 0x006fc700, 0x32722700, 0x007dd730, 0x44755500, + 0x02622700, 0x02711130, 0x44766500, 0x62222700, + 0x00ffff00, 0x00755d00, 0x006dd600, 0x00755740, + 0x00799710, 0x00744600, 0x00775700, 0x02722300, + 0x00555700, 0x00552200, 0x00577500, 0x00562500, + 0x00552220, 0x00703700, 0x12242210, 0x02222220, + 0x42212240, 0x005a0000, +}; +#endif + extern u32 _libSegmentStart; extern u32 _libSegmentEnd; @@ -150,33 +185,97 @@ void crashCreateThread(void) osStartThread(&g_FaultThread); } +#if VERSION >= VERSION_NTSC_1_0 void faultproc(void *arg0) { OSMesg msg = 0; OSIntMask mask; u32 callstack[10]; s32 tracelen; - static OSThread *thread; - static u32 var80094ad0; + static OSThread *curr; + static OSThread *last; - osSetEventMesg(OS_EVENT_FAULT, &g_FaultMesgQueue, (OSMesg) 16); - var80094ad0 = 0; + osSetEventMesg(OS_EVENT_FAULT, &g_FaultMesgQueue, (OSMesg) MSG_FAULT); + last = NULL; while (true) { do { - osRecvMesg(&g_FaultMesgQueue, &msg, 1); + osRecvMesg(&g_FaultMesgQueue, &msg, OS_MESG_BLOCK); mask = osSetIntMask(1); - thread = __osGetCurrFaultedThread(); - } while (!thread); + curr = __osGetCurrFaultedThread(); + } while (!curr); osSetIntMask(mask); #if VERSION < VERSION_NTSC_1_0 - crashGenerate(thread, callstack, &tracelen); + crashGenerate(curr, callstack, &tracelen); schedSetCrashedUnexpectedly(true); #endif } } +#else +GLOBAL_ASM( +glabel faultproc +/* c270: 27bdff98 */ addiu $sp,$sp,-104 +/* c274: afb40028 */ sw $s4,0x28($sp) +/* c278: 3c148009 */ lui $s4,0x8009 +/* c27c: 269470e8 */ addiu $s4,$s4,0x70e8 +/* c280: afbf002c */ sw $ra,0x2c($sp) +/* c284: afa40068 */ sw $a0,0x68($sp) +/* c288: afb30024 */ sw $s3,0x24($sp) +/* c28c: afb20020 */ sw $s2,0x20($sp) +/* c290: afb1001c */ sw $s1,0x1c($sp) +/* c294: afb00018 */ sw $s0,0x18($sp) +/* c298: afa00064 */ sw $zero,0x64($sp) +/* c29c: 2404000c */ addiu $a0,$zero,0xc +/* c2a0: 02802825 */ or $a1,$s4,$zero +/* c2a4: 0c01263c */ jal 0x498f0 +/* c2a8: 24060010 */ addiu $a2,$zero,0x10 +/* c2ac: 3c018009 */ lui $at,0x8009 +/* c2b0: ac207108 */ sw $zero,0x7108($at) +/* c2b4: 27b30034 */ addiu $s3,$sp,0x34 +/* c2b8: 27b20038 */ addiu $s2,$sp,0x38 +/* c2bc: 27b10064 */ addiu $s1,$sp,0x64 +.NB0000c2c0: +/* c2c0: 02802025 */ or $a0,$s4,$zero +.NB0000c2c4: +/* c2c4: 02202825 */ or $a1,$s1,$zero +/* c2c8: 0c0126b0 */ jal 0x49ac0 +/* c2cc: 24060001 */ addiu $a2,$zero,0x1 +/* c2d0: 0c012688 */ jal 0x49a20 +/* c2d4: 24040001 */ addiu $a0,$zero,0x1 +/* c2d8: 0c013eb8 */ jal 0x4fae0 +/* c2dc: 00408025 */ or $s0,$v0,$zero +/* c2e0: 3c018009 */ lui $at,0x8009 +/* c2e4: 1040fff6 */ beqz $v0,.NB0000c2c0 +/* c2e8: ac227104 */ sw $v0,0x7104($at) +/* c2ec: 0c012688 */ jal 0x49a20 +/* c2f0: 02002025 */ or $a0,$s0,$zero +/* c2f4: 3c048009 */ lui $a0,0x8009 +/* c2f8: 8c847104 */ lw $a0,0x7104($a0) +/* c2fc: 02402825 */ or $a1,$s2,$zero +/* c300: 0c003297 */ jal 0xca5c +/* c304: 02603025 */ or $a2,$s3,$zero +/* c308: 0c00073b */ jal 0x1cec +/* c30c: 24040001 */ addiu $a0,$zero,0x1 +/* c310: 1000ffec */ beqz $zero,.NB0000c2c4 +/* c314: 02802025 */ or $a0,$s4,$zero +/* c318: 00000000 */ sll $zero,$zero,0x0 +/* c31c: 00000000 */ sll $zero,$zero,0x0 +/* c320: 00000000 */ sll $zero,$zero,0x0 +/* c324: 00000000 */ sll $zero,$zero,0x0 +/* c328: 00000000 */ sll $zero,$zero,0x0 +/* c32c: 00000000 */ sll $zero,$zero,0x0 +/* c330: 8fbf002c */ lw $ra,0x2c($sp) +/* c334: 8fb00018 */ lw $s0,0x18($sp) +/* c338: 8fb1001c */ lw $s1,0x1c($sp) +/* c33c: 8fb20020 */ lw $s2,0x20($sp) +/* c340: 8fb30024 */ lw $s3,0x24($sp) +/* c344: 8fb40028 */ lw $s4,0x28($sp) +/* c348: 03e00008 */ jr $ra +/* c34c: 27bd0068 */ addiu $sp,$sp,0x68 +); +#endif /** * Given a pointer to an instruction and a stack frame pointer, attempt to find @@ -1253,9 +1352,15 @@ void crashPutChar(s32 x, s32 y, char c) c = '?'; } +#if VERSION >= VERSION_NTSC_1_0 if (x >= 0 && x < 72 && y >= 0 && y < 30 && g_CrashCharBuffer != NULL) { g_CrashCharBuffer[y][x] = c; } +#else + if (x >= 0 && x < 72 && y >= 0 && y < 32 && g_CrashCharBuffer != NULL) { + g_CrashCharBuffer[y][x] = c; + } +#endif } void crashAppendChar(char c) @@ -1277,10 +1382,17 @@ void crashAppendChar(char c) g_CrashCurX = 0; } +#if VERSION >= VERSION_NTSC_1_0 if (g_CrashCurY > 28) { crashScroll(g_CrashCurY - 28); g_CrashCurY = 28; } +#else + if (g_CrashCurY > 30) { + crashScroll(g_CrashCurY - 30); + g_CrashCurY = 30; + } +#endif if (c != '\n') { crashPutChar(g_CrashCurX, g_CrashCurY, c); diff --git a/src/lib/joy.c b/src/lib/joy.c index cef4020b5..2a8c836ad 100644 --- a/src/lib/joy.c +++ b/src/lib/joy.c @@ -83,16 +83,26 @@ u32 g_JoyCyclicPollDisableCount = 0; u32 var8005eec0 = 1; s32 (*var8005eec4)(struct contsample *samples, s32 samplenum) = NULL; void (*var8005eec8)(struct contsample *samples, s32 samplenum, s32 samplenum2) = NULL; -s32 g_JoyNextPfsStateIndex = 0; +s32 g_JoyNextPfsStateIndex = (VERSION >= VERSION_NTSC_1_0 ? 0 : 30); u32 var8005eed0 = 0; + +#if VERSION >= VERSION_NTSC_1_0 u32 var8005eed4 = 0; +#endif + u8 var8005eed8 = 0; + +#if VERSION >= VERSION_NTSC_1_0 bool var8005eedc = true; s32 var8005eee0 = 0; s32 var8005eee4 = -1; u32 var8005eee8 = 0; u32 var8005eeec = 0; u32 var8005eef0 = 1; +#else +u32 var8005eee8nb = 3; +u8 var8005eeecnb = 0; +#endif #if VERSION >= VERSION_NTSC_1_0 void joy00013900(void) @@ -154,7 +164,7 @@ u32 joy00013980(void) #if VERSION >= VERSION_NTSC_1_0 return var8005eeec; #else - return *(u8 *)&var8005eeec; + return var8005eeecnb; #endif } #endif diff --git a/src/lib/lib_04f60nb.c b/src/lib/lib_04f60nb.c index d3f1cb9f9..6abd4bfc6 100644 --- a/src/lib/lib_04f60nb.c +++ b/src/lib/lib_04f60nb.c @@ -1,6 +1,9 @@ #include #include "lib/mtx.h" +u32 var8005e6e0nb = 0; +u32 var8005e6e4nb = 1; + GLOBAL_ASM( glabel func00004f60nb /* 4f60: 27bdfff8 */ addiu $sp,$sp,-8 diff --git a/src/lib/main.c b/src/lib/main.c index 6036ebd8e..9b0a0ac00 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -1697,6 +1697,15 @@ u32 var8005dd50 = 0x00000000; s32 g_MainChangeToStageNum = -1; u32 var8005dd58 = 0x00000000; +#if VERSION < VERSION_NTSC_1_0 +u32 var8005f670nb[] = { + 0x00020000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00020000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +#endif + #if VERSION < VERSION_NTSC_1_0 GLOBAL_ASM( glabel func0000e000nb diff --git a/src/lib/snd.c b/src/lib/snd.c index 94e589844..0f155df15 100644 --- a/src/lib/snd.c +++ b/src/lib/snd.c @@ -69,463 +69,566 @@ struct audiohandle *g_SndNosediveHandle = NULL; struct audiohandle *g_SndUfoHandle = NULL; u16 g_SfxVolume = 32767; -s32 g_SoundMode = SOUNDMODE_STEREO; +s32 g_SoundMode = (VERSION >= VERSION_NTSC_1_0 ? SOUNDMODE_STEREO : SOUNDMODE_SURROUND); bool g_SndMp3Enabled = false; + +#if VERSION >= VERSION_NTSC_1_0 s32 var8005ddd4 = 0x00000000; u32 var8005ddd8 = 0x00000000; u32 var8005dddc = 0x00000000; +#endif + u8 *g_SndGuardStringPtr = NULL; +enum audioconfig_e { + AUDIOCONFIG_00, + AUDIOCONFIG_01, + AUDIOCONFIG_02, + AUDIOCONFIG_03, + AUDIOCONFIG_04, + AUDIOCONFIG_05, + AUDIOCONFIG_06, + AUDIOCONFIG_07, + AUDIOCONFIG_08, + AUDIOCONFIG_09, + AUDIOCONFIG_10, + AUDIOCONFIG_11, + AUDIOCONFIG_12, + AUDIOCONFIG_13, + AUDIOCONFIG_14, + AUDIOCONFIG_15, + AUDIOCONFIG_16, + AUDIOCONFIG_17, + AUDIOCONFIG_18, + AUDIOCONFIG_19, + AUDIOCONFIG_20, + AUDIOCONFIG_21, + AUDIOCONFIG_22, + AUDIOCONFIG_23, + AUDIOCONFIG_24, + AUDIOCONFIG_25, + AUDIOCONFIG_26, + AUDIOCONFIG_27, + AUDIOCONFIG_28, + AUDIOCONFIG_29, + AUDIOCONFIG_30, + AUDIOCONFIG_31, + AUDIOCONFIG_32, + AUDIOCONFIG_33, + AUDIOCONFIG_34, + AUDIOCONFIG_35, + AUDIOCONFIG_36, + AUDIOCONFIG_37, + AUDIOCONFIG_38, + AUDIOCONFIG_39, + AUDIOCONFIG_40, + AUDIOCONFIG_41, + AUDIOCONFIG_42, + AUDIOCONFIG_43, + AUDIOCONFIG_44, + AUDIOCONFIG_45, + AUDIOCONFIG_46, + AUDIOCONFIG_47, + AUDIOCONFIG_48, + AUDIOCONFIG_49, + AUDIOCONFIG_50, + AUDIOCONFIG_51, + AUDIOCONFIG_52, + AUDIOCONFIG_53, +#if VERSION >= VERSION_NTSC_1_0 + AUDIOCONFIG_54, +#endif + AUDIOCONFIG_55, + AUDIOCONFIG_56, + AUDIOCONFIG_57, + AUDIOCONFIG_58, + AUDIOCONFIG_59, +#if VERSION >= VERSION_NTSC_1_0 + AUDIOCONFIG_60, + AUDIOCONFIG_61, + AUDIOCONFIG_62, + AUDIOCONFIG_63 +#else + AUDIOCONFIG_60 +#endif +}; + // 3e04 struct audiorussmapping g_AudioRussMappings[] = { - /*0x0000*/ { 0x85ba, 59 }, - /*0x0001*/ { 0x85a5, 15 }, - /*0x0002*/ { 0x85a6, 15 }, - /*0x0003*/ { 0x80bb, 14 }, - /*0x0004*/ { 0x80bc, 14 }, - /*0x0005*/ { 0x8007, 14 }, - /*0x0006*/ { 0x8007, 14 }, - /*0x0007*/ { 0x80be, 14 }, - /*0x0008*/ { 0x80bf, 14 }, - /*0x0009*/ { 0x80bf, 14 }, - /*0x000a*/ { 0x80c0, 14 }, - /*0x000b*/ { 0x8007, 14 }, - /*0x000c*/ { 0x80c2, 14 }, - /*0x000d*/ { 0x80c3, 14 }, - /*0x000e*/ { 0x80c4, 14 }, - /*0x000f*/ { 0x80c5, 14 }, - /*0x0010*/ { 0x8007, 14 }, - /*0x0011*/ { 0x80c7, 14 }, - /*0x0012*/ { 0x80c8, 14 }, - /*0x0013*/ { 0x80c9, 14 }, - /*0x0014*/ { 0x80ca, 15 }, - /*0x0015*/ { 0x80cb, 15 }, - /*0x0016*/ { 0x80cc, 15 }, - /*0x0017*/ { 0x8007, 15 }, - /*0x0018*/ { 0x8007, 15 }, - /*0x0019*/ { 0x8007, 15 }, - /*0x001a*/ { 0x80d2, 15 }, - /*0x001b*/ { 0x80d3, 15 }, - /*0x001c*/ { 0x8007, 15 }, - /*0x001d*/ { 0x80c6, 14 }, - /*0x001e*/ { 0x80d6, 15 }, - /*0x001f*/ { 0x80d7, 15 }, - /*0x0020*/ { 0x80d8, 15 }, - /*0x0021*/ { 0x80db, 14 }, - /*0x0022*/ { 0x80da, 14 }, - /*0x0023*/ { 0x80bf, 14 }, - /*0x0024*/ { 0x80bf, 14 }, - /*0x0025*/ { 0x80de, 14 }, - /*0x0026*/ { 0x80e1, 15 }, - /*0x0027*/ { 0x80e2, 15 }, - /*0x0028*/ { 0x977a, 60 }, // Carrington: "Hello Joanna" - /*0x0029*/ { 0x97b0, 60 }, // Carrington: "Joanna, it's good to see you" - /*0x002a*/ { 0x97b1, 60 }, // Carrington: "Good day to you, Jo" - /*0x002b*/ { 0x977c, 60 }, // Female: "Hi there" - /*0x002c*/ { 0x9786, 60 }, // Grimshaw: "Welcome to hacker central" - /*0x002d*/ { 0x9787, 60 }, // Grimshaw: "Hi there" - /*0x002e*/ { 0x9788, 60 }, // Grimshaw: "Um, er, hi" - /*0x002f*/ { 0x978c, 60 }, // Holo girl: "Hi. What can I do for you?" - /*0x0030*/ { 0x9794, 60 }, // Hangar guy: "What do you want?" - /*0x0031*/ { 0x9784, 60 }, // Foster: "Ah, our star agent" - /*0x0032*/ { 0x978e, 60 }, // Male: "Hey there" - /*0x0033*/ { 0x978f, 60 }, // Male: "Hi" - /*0x0034*/ { 0x9790, 60 }, // Male "How's it going?" - /*0x0035*/ { 0x977e, 60 }, // Female: "Hello" - /*0x0036*/ { 0x977f, 60 }, // Holo girl: "Hi Jo" - /*0x0037*/ { 0x9780, 60 }, // Holo girl: "How's it going?" - /*0x0038*/ { 0x802e, 32 }, - /*0x0039*/ { 0x8037, 35 }, - /*0x003a*/ { 0x8037, 35 }, - /*0x003b*/ { 0x806a, 33 }, - /*0x003c*/ { 0x8037, 35 }, - /*0x003d*/ { 0x8037, 35 }, - /*0x003e*/ { 0x8037, 35 }, - /*0x003f*/ { 0x806d, 33 }, - /*0x0040*/ { 0x806e, 33 }, - /*0x0041*/ { 0x8037, 35 }, - /*0x0042*/ { 0x8037, 35 }, - /*0x0043*/ { 0x8070, 33 }, - /*0x0044*/ { 0x8071, 33 }, - /*0x0045*/ { 0x8037, 35 }, - /*0x0046*/ { 0x8037, 35 }, - /*0x0047*/ { 0x8037, 35 }, - /*0x0048*/ { 0x8037, 35 }, - /*0x0049*/ { 0x8075, 33 }, - /*0x004a*/ { 0x8037, 35 }, - /*0x004b*/ { 0x8037, 35 }, - /*0x004c*/ { 0x8079, 31 }, - /*0x004d*/ { 0x8066, 31 }, - /*0x004e*/ { 0x8037, 35 }, - /*0x004f*/ { 0x8032, 31 }, - /*0x0050*/ { 0x8037, 35 }, - /*0x0051*/ { 0x807a, 35 }, - /*0x0052*/ { 0x8059, 31 }, - /*0x0053*/ { 0x8001, 35 }, - /*0x0054*/ { 0x847e, 32 }, - /*0x0055*/ { 0x847d, 33 }, - /*0x0056*/ { 0x84f1, 32 }, - /*0x0057*/ { 0x84f2, 32 }, - /*0x0058*/ { 0x84f3, 32 }, - /*0x0059*/ { 0x84f4, 33 }, - /*0x005a*/ { 0x84f6, 33 }, - /*0x005b*/ { 0x8506, 31 }, - /*0x005c*/ { 0x84fd, 33 }, - /*0x005d*/ { 0x8504, 33 }, - /*0x005e*/ { 0x84fe, 33 }, - /*0x005f*/ { 0x8503, 33 }, - /*0x0060*/ { 0x8500, 32 }, - /*0x0061*/ { 0x8501, 32 }, - /*0x0062*/ { 0x8502, 32 }, - /*0x0063*/ { 0x85ca, 31 }, - /*0x0064*/ { 0x85cb, 31 }, - /*0x0065*/ { 0x85d2, 31 }, - /*0x0066*/ { 0x8074, 33 }, - /*0x0067*/ { 0x85eb, 35 }, - /*0x0068*/ { 0x85ec, 35 }, - /*0x0069*/ { 0x85ed, 31 }, - /*0x006a*/ { 0x85ee, 31 }, - /*0x006b*/ { 0x85ef, 33 }, - /*0x006c*/ { 0x85f0, 33 }, - /*0x006d*/ { 0x85f1, 33 }, - /*0x006e*/ { 0x85f2, 33 }, - /*0x006f*/ { 0x85f3, 33 }, - /*0x0070*/ { 0x85f4, 33 }, - /*0x0071*/ { 0x8508, 31 }, - /*0x0072*/ { 0x850a, 31 }, - /*0x0073*/ { 0x8076, 33 }, - /*0x0074*/ { 0x85f5, 30 }, - /*0x0075*/ { 0x8509, 33 }, - /*0x0076*/ { 0x8045, 45 }, - /*0x0077*/ { 0x8046, 45 }, - /*0x0078*/ { 0x8047, 25 }, - /*0x0079*/ { 0x8048, 45 }, - /*0x007a*/ { 0x80f0, 45 }, - /*0x007b*/ { 0x80ef, 45 }, - /*0x007c*/ { 0x8049, 45 }, - /*0x007d*/ { 0x804a, 45 }, - /*0x007e*/ { 0x804b, 45 }, - /*0x007f*/ { 0x80d9, 45 }, - /*0x0080*/ { 0x804c, 45 }, - /*0x0081*/ { 0x80e7, 45 }, - /*0x0082*/ { 0x80e6, 45 }, - /*0x0083*/ { 0x80e0, 45 }, - /*0x0084*/ { 0x80dc, 45 }, - /*0x0085*/ { 0x80b9, 45 }, - /*0x0086*/ { 0x80d4, 45 }, - /*0x0087*/ { 0x80d0, 45 }, - /*0x0088*/ { 0x80d1, 45 }, - /*0x0089*/ { 0x8078, 45 }, - /*0x008a*/ { 0x80dd, 45 }, - /*0x008b*/ { 0x8003, 45 }, - /*0x008c*/ { 0x802d, 21 }, - /*0x008d*/ { 0x807b, 21 }, - /*0x008e*/ { 0x807c, 21 }, - /*0x008f*/ { 0x807d, 21 }, - /*0x0090*/ { 0x807e, 21 }, - /*0x0091*/ { 0x807f, 21 }, - /*0x0092*/ { 0x8080, 21 }, - /*0x0093*/ { 0x8081, 21 }, - /*0x0094*/ { 0x8082, 21 }, - /*0x0095*/ { 0x8083, 21 }, - /*0x0096*/ { 0x8084, 21 }, - /*0x0097*/ { 0x8085, 21 }, - /*0x0098*/ { 0x80b4, 18 }, - /*0x0099*/ { 0x80b5, 18 }, - /*0x009a*/ { 0x80b6, 17 }, - /*0x009b*/ { 0x80a9, 18 }, - /*0x009c*/ { 0x80aa, 18 }, - /*0x009d*/ { 0x80ab, 17 }, - /*0x009e*/ { 0x80ac, 18 }, - /*0x009f*/ { 0x80ad, 18 }, - /*0x00a0*/ { 0x80ae, 17 }, - /*0x00a1*/ { 0x80b1, 18 }, - /*0x00a2*/ { 0x80b2, 18 }, - /*0x00a3*/ { 0x80b3, 18 }, - /*0x00a4*/ { 0x818a, 19 }, - /*0x00a5*/ { 0xefdd, 19 }, - /*0x00a6*/ { 0x805f, 32 }, - /*0x00a7*/ { 0x8060, 32 }, - /*0x00a8*/ { 0x8061, 32 }, - /*0x00a9*/ { 0x8004, 32 }, - /*0x00aa*/ { 0x80f1, 32 }, - /*0x00ab*/ { 0x80f3, 32 }, - /*0x00ac*/ { 0x8055, 16 }, - /*0x00ad*/ { 0x8056, 16 }, - /*0x00ae*/ { 0x8057, 16 }, - /*0x00af*/ { 0x85f7, 52 }, - /*0x00b0*/ { 0x8127, 29 }, - /*0x00b1*/ { 0x8128, 29 }, - /*0x00b2*/ { 0x8129, 29 }, - /*0x00b3*/ { 0x812a, 29 }, - /*0x00b4*/ { 0x812b, 29 }, - /*0x00b5*/ { 0x812c, 29 }, - /*0x00b6*/ { 0x812d, 50 }, - /*0x00b7*/ { 0x812e, 50 }, - /*0x00b8*/ { 0x8138, 50 }, - /*0x00b9*/ { 0x8138, 28 }, - /*0x00ba*/ { 0x812f, 51 }, - /*0x00bb*/ { 0x8151, 51 }, - /*0x00bc*/ { 0x8154, 51 }, - /*0x00bd*/ { 0x8157, 51 }, - /*0x00be*/ { 0x815a, 51 }, - /*0x00bf*/ { 0x8132, 51 }, - /*0x00c0*/ { 0x8139, 51 }, - /*0x00c1*/ { 0x813f, 51 }, - /*0x00c2*/ { 0x8145, 51 }, - /*0x00c3*/ { 0x814b, 51 }, - /*0x00c4*/ { 0x8161, 4 }, - /*0x00c5*/ { 0x8162, 4 }, - /*0x00c6*/ { 0x8163, 4 }, - /*0x00c7*/ { 0x8164, 4 }, - /*0x00c8*/ { 0x8165, 4 }, - /*0x00c9*/ { 0x8166, 4 }, - /*0x00ca*/ { 0x8167, 4 }, - /*0x00cb*/ { 0x8168, 4 }, - /*0x00cc*/ { 0x8169, 4 }, - /*0x00cd*/ { 0x816a, 4 }, - /*0x00ce*/ { 0x816b, 4 }, - /*0x00cf*/ { 0x816c, 4 }, - /*0x00d0*/ { 0x816d, 4 }, - /*0x00d1*/ { 0x816e, 4 }, - /*0x00d2*/ { 0x816f, 4 }, - /*0x00d3*/ { 0x8170, 4 }, - /*0x00d4*/ { 0x8171, 4 }, - /*0x00d5*/ { 0x8172, 4 }, - /*0x00d6*/ { 0x8173, 4 }, - /*0x00d7*/ { 0x8174, 4 }, - /*0x00d8*/ { 0x8175, 4 }, - /*0x00d9*/ { 0x8176, 4 }, - /*0x00da*/ { 0x8177, 4 }, - /*0x00db*/ { 0x8178, 4 }, - /*0x00dc*/ { 0x8179, 4 }, - /*0x00dd*/ { 0x817a, 4 }, - /*0x00de*/ { 0x817b, 4 }, - /*0x00df*/ { 0x817c, 4 }, - /*0x00e0*/ { 0x817d, 4 }, - /*0x00e1*/ { 0x817e, 4 }, - /*0x00e2*/ { 0x817f, 4 }, - /*0x00e3*/ { 0x8180, 4 }, - /*0x00e4*/ { 0x804d, 4 }, - /*0x00e5*/ { 0x804e, 4 }, - /*0x00e6*/ { 0x85f8, 5 }, - /*0x00e7*/ { 0x85f9, 5 }, - /*0x00e8*/ { 0x85fa, 5 }, - /*0x00e9*/ { 0x85fb, 5 }, - /*0x00ea*/ { 0x85fc, 6 }, - /*0x00eb*/ { 0x85fd, 6 }, - /*0x00ec*/ { 0x85fe, 6 }, - /*0x00ed*/ { 0x85ff, 6 }, - /*0x00ee*/ { 0x8600, 4 }, - /*0x00ef*/ { 0x8601, 4 }, - /*0x00f0*/ { 0x8602, 4 }, - /*0x00f1*/ { 0x8603, 4 }, - /*0x00f2*/ { 0x8604, 4 }, - /*0x00f3*/ { 0x8605, 4 }, - /*0x00f4*/ { 0x8606, 4 }, - /*0x00f5*/ { 0x8606, 4 }, - /*0x00f6*/ { 0x81d9, 61 }, - /*0x00f7*/ { 0x8267, 2 }, - /*0x00f8*/ { 0x8268, 2 }, - /*0x00f9*/ { 0x8286, 2 }, - /*0x00fa*/ { 0x8288, 2 }, - /*0x00fb*/ { 0x8291, 2 }, - /*0x00fc*/ { 0x829f, 2 }, - /*0x00fd*/ { 0x82a1, 2 }, - /*0x00fe*/ { 0x8af9, 47 }, // Cass: "You've become quite an annoyance" - /*0x00ff*/ { 0x8afa, 47 }, // Cass: "We meet again, girl" - /*0x0100*/ { 0x8afb, 47 }, // Cass: "Good night, Miss Dark" - /*0x0101*/ { 0x92fc, 47 }, // Cass: "Get her!" - /*0x0102*/ { 0x92fd, 47 }, // Cass: (laughing) - /*0x0103*/ { 0x9285, 2 }, // Scientist: "Who the hell are you?" - /*0x0104*/ { 0x9306, 48 }, // Programmer: "Yes, yes, I agree. Personality..." - /*0x0105*/ { 0x9307, 48 }, // Programmer: "No. I can start the process..." - /*0x0106*/ { 0x9308, 48 }, // Programmer: "I'll begin at once. Goodbye" - /*0x0107*/ { 0x9309, 48 }, // Programmer: "Security, help me!" - /*0x0108*/ { 0x930a, 48 }, // Programmer: "Help! Help!" - /*0x0109*/ { 0x8435, 49 }, - /*0x010a*/ { 0x81b5, 7 }, - /*0x010b*/ { 0x81b6, 8 }, - /*0x010c*/ { 0x81b5, 9 }, - /*0x010d*/ { 0x81b6, 10 }, - /*0x010e*/ { 0x85f3, 11 }, - /*0x010f*/ { 0x81b5, 12 }, - /*0x0110*/ { 0x81b6, 13 }, - /*0x0111*/ { 0x81b7, 20 }, - /*0x0112*/ { 0x81b8, 20 }, - /*0x0113*/ { 0x81c7, 20 }, - /*0x0114*/ { 0x8037, 20 }, - /*0x0115*/ { 0x81b7, 56 }, - /*0x0116*/ { 0x81b9, 0 }, - /*0x0117*/ { 0x81ba, 0 }, - /*0x0118*/ { 0x81bb, 0 }, - /*0x0119*/ { 0x81cb, 36 }, - /*0x011a*/ { 0x81cb, 37 }, - /*0x011b*/ { 0x81cb, 38 }, - /*0x011c*/ { 0x81c6, 55 }, - /*0x011d*/ { 0x9278, 47 }, // "That's not how it goes" - /*0x011e*/ { 0x9279, 47 }, // "Give it to me. You're doing it wrong" - /*0x011f*/ { 0x927a, 47 }, // "Oh no, we're too late" - /*0x0120*/ { 0x927b, 47 }, // "Yes it is" - /*0x0121*/ { 0x927c, 47 }, // "Stop annoying me" - /*0x0122*/ { 0x927d, 47 }, // "She's here!" - /*0x0123*/ { 0x9277, 47 }, // "Will you just hurry up?" - /*0x0124*/ { 0x82fd, 2 }, // "Holy..." - /*0x0125*/ { 0x82fe, 2 }, // "What the hell?" - /*0x0126*/ { 0x8300, 2 }, // "Oh my god" - /*0x0127*/ { 0x8303, 2 }, // "Oh god I'm hit" - /*0x0128*/ { 0x830a, 2 }, // "Oh my god" - /*0x0129*/ { 0x8313, 62 }, // "Noooo!" - /*0x012a*/ { 0x8314, 2 }, // "Oh god he's dead!" - /*0x012b*/ { 0x832e, 2 }, // "Bloody stupid gun" - /*0x012c*/ { 0x8330, 2 }, // "Damn it" - /*0x012d*/ { 0x8333, 2 }, // "Damn, she's good" - /*0x012e*/ { 0x8334, 2 }, // "Cover my ass" - /*0x012f*/ { 0x834c, 62 }, // Death scream - /*0x0130*/ { 0x83a3, 2 }, // Female: "Damn she's good" - /*0x0131*/ { 0x83b9, 2 }, // Female: "My god" - /*0x0132*/ { 0x83c7, 2 }, // "Geez, that hurt" - /*0x0133*/ { 0x83cf, 2 }, // "Damn it, I'm taking fire" - /*0x0134*/ { 0x83d2, 2 }, // "God damn it" - /*0x0135*/ { 0x83d4, 2 }, // "Holy moley" - /*0x0136*/ { 0x83f3, 2 }, // "Damn, missed again" - /*0x0137*/ { 0x83f5, 2 }, // "Damn" - /*0x0138*/ { 0x83f6, 2 }, // "Hell, she's good" - /*0x0139*/ { 0x8400, 2 }, // "Let's get the hell out of here" - /*0x013a*/ { 0x8411, 62 }, // "Noooo!" - /*0x013b*/ { 0x8413, 2 }, // "Shoot, damn it" - /*0x013c*/ { 0x8414, 2 }, // "Oh god, I'm dying" - /*0x013d*/ { 0x8422, 2 }, // "God, run!" - /*0x013e*/ { 0x8432, 33 }, - /*0x013f*/ { 0x843c, 58 }, - /*0x0140*/ { 0x843d, 58 }, - /*0x0141*/ { 0x84ab, 58 }, - /*0x0142*/ { 0x843d, 58 }, - /*0x0143*/ { 0x81b7, 58 }, - /*0x0144*/ { 0x8477, 57 }, - /*0x0145*/ { 0x8478, 57 }, - /*0x0146*/ { 0x81c2, 54 }, - /*0x0147*/ { 0x8479, 54 }, - /*0x0148*/ { 0x81c3, 54 }, - /*0x0149*/ { 0x81c4, 54 }, - /*0x014a*/ { 0x8443, 2 }, // Civilian: "Oh my god" - /*0x014b*/ { 0x844e, 2 }, // "What the hell was that?" - /*0x014c*/ { 0x843c, 63 }, - /*0x014d*/ { 0x847c, 63 }, - /*0x014e*/ { 0x843d, 63 }, - /*0x014f*/ { 0xf2ad, 1 }, // "Joanna, this is Jonathan. You're in grave danger" - /*0x0150*/ { 0xf2ae, 1 }, // "They've flooded the area with nerge gas" - /*0x0151*/ { 0xf2af, 1 }, // "Get our friend to the containment lab. There's a hiding place there" - /*0x0152*/ { 0xd2b0, 1 }, // "I'll contact you when you get there. Good luck" - /*0x0153*/ { 0xf2b1, 1 }, // "Good work Jo. We need to meet up. They're getting suspicious of me" - /*0x0154*/ { 0xd2b2, 1 }, // "Use the maintenance hatch I've opened in one of the containment labs. Hurry" - /*0x0155*/ { 0x92b8, 2 }, // "Damn it Joanna, cover me!" - /*0x0156*/ { 0x9b30, 2 }, // "Oh my god, a gun?!" - /*0x0157*/ { 0x9b27, 47 }, // "So you got here at last" - /*0x0158*/ { 0x9b28, 47 }, // "Hey, you're not, uh, security alert!" - /*0x0159*/ { 0x9b29, 47 }, // "No guns allowed in here. Put your weapon away" - /*0x015a*/ { 0x9b2a, 47 }, // "I won't tell you again. Lose the weapon" - /*0x015b*/ { 0x9b2b, 47 }, // "Right. I'm calling security" - /*0x015c*/ { 0x9b2c, 47 }, // "Everyone's been waiting for you" - /*0x015d*/ { 0x9a9d, 60 }, // "How's things?" - /*0x015e*/ { 0x9a9e, 60 }, // "Hey there" - /*0x015f*/ { 0x9a9f, 60 }, // "Hi. How are you?" - /*0x0160*/ { 0x8037, 4 }, - /*0x0161*/ { 0x9271, 60 }, // Female: "Good afternoon" - /*0x0162*/ { 0x9275, 2 }, // Female: "Oh my god!" - /*0x0163*/ { 0x9acc, 60 }, // "Hi there" - /*0x0164*/ { 0x9acd, 60 }, // "How's things" - /*0x0165*/ { 0x9ad4, 60 }, // "Hello" - /*0x0166*/ { 0x9ad5, 60 }, // "Hey, what's up?" - /*0x0167*/ { 0x84c8, 2 }, // "What the hell?" - /*0x0168*/ { 0x84cd, 2 }, // "Geez" - /*0x0169*/ { 0x84ad, 46 }, - /*0x016a*/ { 0x8507, 27 }, - /*0x016b*/ { 0x84ee, 16 }, - /*0x016c*/ { 0x84ef, 16 }, - /*0x016d*/ { 0x84f0, 16 }, - /*0x016e*/ { 0x92c8, 2 }, // President: "What the hell was that?" - /*0x016f*/ { 0x92c9, 2 }, // Trent: "How the hell did you get on board?" - /*0x0170*/ { 0xb3a0, 1 }, // Carrington: "We're getting a positive reading. The internal comms hub is nearby" - /*0x0171*/ { 0xb3a1, 1 }, // Carrington: "You're on the same floor as Cassandra's office" - /*0x0172*/ { 0xd3a3, 1 }, // Carrington: "The basement elevator must be around there somewhere" - /*0x0173*/ { 0xd3a4, 1 }, // Carrington: "That's the highest security sector. Dr Caroll has got to be nearby" - /*0x0174*/ { 0xd3a6, 1 }, // Grimshaw: "Reprogram the cleaning bot. It'll give you a way in" - /*0x0175*/ { 0xd3a7, 1 }, // Carrington: "Get out Jo! The levels are too high. Use the camspy" - /*0x0176*/ { 0xd3a8, 1 }, // Carrington: "They've locked down the ground floor. Get to the elevator" - /*0x0177*/ { 0xd3a9, 1 }, // Carrington: "That copter needs to be taken out of the jumpship will get shut down" - /*0x0178*/ { 0xd3ab, 1 }, // Carrington: "Don't keep the jumpship waiting. Get back to the landing pad" - /*0x0179*/ { 0xd3b0, 1 }, // Carrington: "The only place we could secure the equipment was a storm drain" - /*0x017a*/ { 0xd3b2, 1 }, // Grimshaw: "Reprogram that taxi. It's a mark 2 and should be compatible" - /*0x017b*/ { 0xd3b3, 1 }, // Carrington: The carpark lift is your only point of ingress" - /*0x017c*/ { 0xb3b6, 1 }, // Grimshaw: "The safe's heavily encrypted. The decoder's going to take a little longer" - /*0x017d*/ { 0xd3b8, 1 }, // Carrington: "The air intercept radar is controlled from that bunker" - /*0x017e*/ { 0xd3ba, 1 }, // Carrington: "The hangar lift is the other side of that huge door" - /*0x017f*/ { 0xd3bb, 1 }, // Jon: "Careful with that trigger finger, Agent Dark. You're closing in on my position" - /*0x0180*/ { 0xb3bd, 1 }, // Carrington: "The temperature's dropping. You must be close to the cryo room" - /*0x0181*/ { 0xd3bf, 1 }, // Carrington: "There he is Jo. Hurry or you'll be too late" - /*0x0182*/ { 0xb3c4, 1 }, // Carrington: "Now's your chance. Grab the stewardess's bag and get her uniform" - /*0x0183*/ { 0xb3c5, 1 }, // Carrington: "Use that case to conceal your equipment" - /*0x0184*/ { 0xb3c6, 1 }, // Carrington: "The case will get stopped unless you do something" - /*0x0185*/ { 0xb3c9, 1 }, // Carrington: "The president's room is on this level, Joanna" - /*0x0186*/ { 0xb3ca, 1 }, // Carrington: "Something's wrong. You have to get to the cockpit" - /*0x0187*/ { 0x8594, 4 }, // Footstep - /*0x0188*/ { 0x8595, 4 }, // Footstep - /*0x0189*/ { 0x8596, 4 }, // Footstep - /*0x018a*/ { 0x8597, 4 }, // Footstep - /*0x018b*/ { 0x8598, 4 }, // Footstep - /*0x018c*/ { 0x8599, 4 }, // Footstep - /*0x018d*/ { 0x859a, 4 }, // Footstep - /*0x018e*/ { 0x859b, 4 }, // Footstep - /*0x018f*/ { 0x85a0, 4 }, // Footstep - /*0x0190*/ { 0x85a1, 4 }, // Footstep - /*0x0191*/ { 0x85a2, 4 }, // Footstep - /*0x0192*/ { 0x85a3, 4 }, // Footstep - /*0x0193*/ { 0xf310, 1 }, // Carrington: "Joanna. We're under attack" - /*0x0194*/ { 0xd311, 1 }, // Carrington: "Get the guns back online. Hurry" - /*0x0195*/ { 0xf312, 1 }, // Carrington: "The Skedar have taken hostages" - /*0x0196*/ { 0xd313, 1 }, // Carrington: "Get up to the offices and save them" - /*0x0197*/ { 0xf314, 1 }, // Carrington: "They're using a new form of shield technology" - /*0x0198*/ { 0xd315, 1 }, // Carrington: "Foster was working on a new weapon which may be useful" - /*0x0199*/ { 0xf316, 3 }, // Carrington: "Damn it, my office. If they get access..." - /*0x019a*/ { 0xd317, 1 }, // Carrington: "Get there first, Jo and destroy the files" - /*0x019b*/ { 0xf318, 1 }, // Carrington: "Things are desparate. They've planted a bomb" - /*0x019c*/ { 0xd319, 1 }, // Carrington: "Find it and get it out of the building" - /*0x019d*/ { 0xf31a, 1 }, // Carrington: "Well done Joanna. We're nearly clear" - /*0x019e*/ { 0xd31b, 1 }, // Carrington: "The last dropship is waiting for you. Hurry" - /*0x019f*/ { 0xf293, 1 }, // Grimshaw: "Joanna, it's Grimshaw. We've got hackers at..." - /*0x01a0*/ { 0xf2df, 1 }, // Elvis: "We're outside, Joanna. Get the shields down and we can help you" - /*0x01a1*/ { 0xf2e0, 1 }, // Elvis: "You've got to open the hanger doors so we can dock" - /*0x01a2*/ { 0xd4ea, 1 }, // Carrington: "Stand back Joanna. We'll create your escape route" - /*0x01a3*/ { 0x8d24, 2 }, // Cass: "Get the hell out of my office" - /*0x01a4*/ { 0x9d62, 47 }, // Elvis: "Joanna, what took you so long? Follow me. Let's get off this old tub" - /*0x01a5*/ { 0x84aa, 43 }, - /*0x01a6*/ { 0x81cf, 41 }, - /*0x01a7*/ { 0x858f, 40 }, - /*0x01a8*/ { 0x80d5, 39 }, // Lift mechanical sound - /*0x01a9*/ { 0x80ec, 39 }, // Lift mechanical sound - /*0x01aa*/ { 0x80ed, 40 }, // Lift mechanical sound - /*0x01ab*/ { 0x80d5, 41 }, // Lift mechanical sound - /*0x01ac*/ { 0x80ec, 41 }, // Lift mechanical sound - /*0x01ad*/ { 0x80ed, 42 }, // Lift mechanical sound - /*0x01ae*/ { 0x80d5, 41 }, // Lift mechanical sound - /*0x01af*/ { 0x80ec, 41 }, // Lift mechanical sound - /*0x01b0*/ { 0x803a, 41 }, // Lift call - /*0x01b1*/ { 0x84e8, 43 }, // Lift mechanical sound - /*0x01b2*/ { 0x84e9, 43 }, // Lift mechanical sound - /*0x01b3*/ { 0x80cd, 42 }, // Lift mechanical sound - /*0x01b4*/ { 0x80ce, 42 }, // Lift mechanical sound - /*0x01b5*/ { 0x8039, 42 }, // Lift mechanical sound - /*0x01b6*/ { 0x80cd, 44 }, // Lift mechanical sound - /*0x01b7*/ { 0x80db, 16 }, // Lift roller door - /*0x01b8*/ { 0x80da, 16 }, // Lift roller door - /*0x01b9*/ { 0xf41c, 2 }, // Joanna: "Oh my god" - /*0x01ba*/ { 0xf434, 2 }, // Lab guy: "What the hell do you think you're doing? This is supposed..." - /*0x01bb*/ { 0xf44f, 2 }, // President: "Damn it man. I say no and I mean no..." - /*0x01bc*/ { 0x0000, 0 }, + /*0x0000*/ { 0x85ba, AUDIOCONFIG_59 }, + /*0x0001*/ { 0x85a5, AUDIOCONFIG_15 }, + /*0x0002*/ { 0x85a6, AUDIOCONFIG_15 }, + /*0x0003*/ { 0x80bb, AUDIOCONFIG_14 }, + /*0x0004*/ { 0x80bc, AUDIOCONFIG_14 }, + /*0x0005*/ { 0x8007, AUDIOCONFIG_14 }, + /*0x0006*/ { 0x8007, AUDIOCONFIG_14 }, + /*0x0007*/ { 0x80be, AUDIOCONFIG_14 }, + /*0x0008*/ { 0x80bf, AUDIOCONFIG_14 }, + /*0x0009*/ { 0x80bf, AUDIOCONFIG_14 }, + /*0x000a*/ { 0x80c0, AUDIOCONFIG_14 }, + /*0x000b*/ { 0x8007, AUDIOCONFIG_14 }, + /*0x000c*/ { 0x80c2, AUDIOCONFIG_14 }, + /*0x000d*/ { 0x80c3, AUDIOCONFIG_14 }, + /*0x000e*/ { 0x80c4, AUDIOCONFIG_14 }, + /*0x000f*/ { 0x80c5, AUDIOCONFIG_14 }, + /*0x0010*/ { 0x8007, AUDIOCONFIG_14 }, + /*0x0011*/ { 0x80c7, AUDIOCONFIG_14 }, + /*0x0012*/ { 0x80c8, AUDIOCONFIG_14 }, + /*0x0013*/ { 0x80c9, AUDIOCONFIG_14 }, + /*0x0014*/ { 0x80ca, AUDIOCONFIG_15 }, + /*0x0015*/ { 0x80cb, AUDIOCONFIG_15 }, + /*0x0016*/ { 0x80cc, AUDIOCONFIG_15 }, + /*0x0017*/ { 0x8007, AUDIOCONFIG_15 }, + /*0x0018*/ { 0x8007, AUDIOCONFIG_15 }, + /*0x0019*/ { 0x8007, AUDIOCONFIG_15 }, + /*0x001a*/ { 0x80d2, AUDIOCONFIG_15 }, + /*0x001b*/ { 0x80d3, AUDIOCONFIG_15 }, + /*0x001c*/ { 0x8007, AUDIOCONFIG_15 }, + /*0x001d*/ { 0x80c6, AUDIOCONFIG_14 }, + /*0x001e*/ { 0x80d6, AUDIOCONFIG_15 }, + /*0x001f*/ { 0x80d7, AUDIOCONFIG_15 }, + /*0x0020*/ { 0x80d8, AUDIOCONFIG_15 }, + /*0x0021*/ { 0x80db, AUDIOCONFIG_14 }, + /*0x0022*/ { 0x80da, AUDIOCONFIG_14 }, + /*0x0023*/ { 0x80bf, AUDIOCONFIG_14 }, + /*0x0024*/ { 0x80bf, AUDIOCONFIG_14 }, + /*0x0025*/ { 0x80de, AUDIOCONFIG_14 }, + /*0x0026*/ { 0x80e1, AUDIOCONFIG_15 }, + /*0x0027*/ { 0x80e2, AUDIOCONFIG_15 }, + /*0x0028*/ { 0x977a, AUDIOCONFIG_60 }, // Carrington: "Hello Joanna" + /*0x0029*/ { 0x97b0, AUDIOCONFIG_60 }, // Carrington: "Joanna, it's good to see you" + /*0x002a*/ { 0x97b1, AUDIOCONFIG_60 }, // Carrington: "Good day to you, Jo" + /*0x002b*/ { 0x977c, AUDIOCONFIG_60 }, // Female: "Hi there" + /*0x002c*/ { 0x9786, AUDIOCONFIG_60 }, // Grimshaw: "Welcome to hacker central" + /*0x002d*/ { 0x9787, AUDIOCONFIG_60 }, // Grimshaw: "Hi there" + /*0x002e*/ { 0x9788, AUDIOCONFIG_60 }, // Grimshaw: "Um, er, hi" + /*0x002f*/ { 0x978c, AUDIOCONFIG_60 }, // Holo girl: "Hi. What can I do for you?" + /*0x0030*/ { 0x9794, AUDIOCONFIG_60 }, // Hangar guy: "What do you want?" + /*0x0031*/ { 0x9784, AUDIOCONFIG_60 }, // Foster: "Ah, our star agent" + /*0x0032*/ { 0x978e, AUDIOCONFIG_60 }, // Male: "Hey there" + /*0x0033*/ { 0x978f, AUDIOCONFIG_60 }, // Male: "Hi" + /*0x0034*/ { 0x9790, AUDIOCONFIG_60 }, // Male "How's it going?" + /*0x0035*/ { 0x977e, AUDIOCONFIG_60 }, // Female: "Hello" + /*0x0036*/ { 0x977f, AUDIOCONFIG_60 }, // Holo girl: "Hi Jo" + /*0x0037*/ { 0x9780, AUDIOCONFIG_60 }, // Holo girl: "How's it going?" + /*0x0038*/ { 0x802e, AUDIOCONFIG_32 }, + /*0x0039*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x003a*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x003b*/ { 0x806a, AUDIOCONFIG_33 }, + /*0x003c*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x003d*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x003e*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x003f*/ { 0x806d, AUDIOCONFIG_33 }, + /*0x0040*/ { 0x806e, AUDIOCONFIG_33 }, + /*0x0041*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x0042*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x0043*/ { 0x8070, AUDIOCONFIG_33 }, + /*0x0044*/ { 0x8071, AUDIOCONFIG_33 }, + /*0x0045*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x0046*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x0047*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x0048*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x0049*/ { 0x8075, AUDIOCONFIG_33 }, + /*0x004a*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x004b*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x004c*/ { 0x8079, AUDIOCONFIG_31 }, + /*0x004d*/ { 0x8066, AUDIOCONFIG_31 }, + /*0x004e*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x004f*/ { 0x8032, AUDIOCONFIG_31 }, + /*0x0050*/ { 0x8037, AUDIOCONFIG_35 }, + /*0x0051*/ { 0x807a, AUDIOCONFIG_35 }, + /*0x0052*/ { 0x8059, AUDIOCONFIG_31 }, + /*0x0053*/ { 0x8001, AUDIOCONFIG_35 }, + /*0x0054*/ { 0x847e, AUDIOCONFIG_32 }, + /*0x0055*/ { 0x847d, AUDIOCONFIG_33 }, + /*0x0056*/ { 0x84f1, AUDIOCONFIG_32 }, + /*0x0057*/ { 0x84f2, AUDIOCONFIG_32 }, + /*0x0058*/ { 0x84f3, AUDIOCONFIG_32 }, + /*0x0059*/ { 0x84f4, AUDIOCONFIG_33 }, + /*0x005a*/ { 0x84f6, AUDIOCONFIG_33 }, + /*0x005b*/ { 0x8506, AUDIOCONFIG_31 }, + /*0x005c*/ { 0x84fd, AUDIOCONFIG_33 }, + /*0x005d*/ { 0x8504, AUDIOCONFIG_33 }, + /*0x005e*/ { 0x84fe, AUDIOCONFIG_33 }, + /*0x005f*/ { 0x8503, AUDIOCONFIG_33 }, + /*0x0060*/ { 0x8500, AUDIOCONFIG_32 }, + /*0x0061*/ { 0x8501, AUDIOCONFIG_32 }, + /*0x0062*/ { 0x8502, AUDIOCONFIG_32 }, + /*0x0063*/ { 0x85ca, AUDIOCONFIG_31 }, + /*0x0064*/ { 0x85cb, AUDIOCONFIG_31 }, + /*0x0065*/ { 0x85d2, AUDIOCONFIG_31 }, + /*0x0066*/ { 0x8074, AUDIOCONFIG_33 }, + /*0x0067*/ { 0x85eb, AUDIOCONFIG_35 }, + /*0x0068*/ { 0x85ec, AUDIOCONFIG_35 }, + /*0x0069*/ { 0x85ed, AUDIOCONFIG_31 }, + /*0x006a*/ { 0x85ee, AUDIOCONFIG_31 }, + /*0x006b*/ { 0x85ef, AUDIOCONFIG_33 }, + /*0x006c*/ { 0x85f0, AUDIOCONFIG_33 }, + /*0x006d*/ { 0x85f1, AUDIOCONFIG_33 }, + /*0x006e*/ { 0x85f2, AUDIOCONFIG_33 }, + /*0x006f*/ { 0x85f3, AUDIOCONFIG_33 }, + /*0x0070*/ { 0x85f4, AUDIOCONFIG_33 }, + /*0x0071*/ { 0x8508, AUDIOCONFIG_31 }, + /*0x0072*/ { 0x850a, AUDIOCONFIG_31 }, + /*0x0073*/ { 0x8076, AUDIOCONFIG_33 }, + /*0x0074*/ { 0x85f5, AUDIOCONFIG_30 }, + /*0x0075*/ { 0x8509, AUDIOCONFIG_33 }, + /*0x0076*/ { 0x8045, AUDIOCONFIG_45 }, + /*0x0077*/ { 0x8046, AUDIOCONFIG_45 }, + /*0x0078*/ { 0x8047, AUDIOCONFIG_25 }, + /*0x0079*/ { 0x8048, AUDIOCONFIG_45 }, + /*0x007a*/ { 0x80f0, AUDIOCONFIG_45 }, + /*0x007b*/ { 0x80ef, AUDIOCONFIG_45 }, + /*0x007c*/ { 0x8049, AUDIOCONFIG_45 }, + /*0x007d*/ { 0x804a, AUDIOCONFIG_45 }, + /*0x007e*/ { 0x804b, AUDIOCONFIG_45 }, + /*0x007f*/ { 0x80d9, AUDIOCONFIG_45 }, + /*0x0080*/ { 0x804c, AUDIOCONFIG_45 }, + /*0x0081*/ { 0x80e7, AUDIOCONFIG_45 }, + /*0x0082*/ { 0x80e6, AUDIOCONFIG_45 }, + /*0x0083*/ { 0x80e0, AUDIOCONFIG_45 }, + /*0x0084*/ { 0x80dc, AUDIOCONFIG_45 }, + /*0x0085*/ { 0x80b9, AUDIOCONFIG_45 }, + /*0x0086*/ { 0x80d4, AUDIOCONFIG_45 }, + /*0x0087*/ { 0x80d0, AUDIOCONFIG_45 }, + /*0x0088*/ { 0x80d1, AUDIOCONFIG_45 }, + /*0x0089*/ { 0x8078, AUDIOCONFIG_45 }, + /*0x008a*/ { 0x80dd, AUDIOCONFIG_45 }, + /*0x008b*/ { 0x8003, AUDIOCONFIG_45 }, + /*0x008c*/ { 0x802d, AUDIOCONFIG_21 }, + /*0x008d*/ { 0x807b, AUDIOCONFIG_21 }, + /*0x008e*/ { 0x807c, AUDIOCONFIG_21 }, + /*0x008f*/ { 0x807d, AUDIOCONFIG_21 }, + /*0x0090*/ { 0x807e, AUDIOCONFIG_21 }, + /*0x0091*/ { 0x807f, AUDIOCONFIG_21 }, + /*0x0092*/ { 0x8080, AUDIOCONFIG_21 }, + /*0x0093*/ { 0x8081, AUDIOCONFIG_21 }, + /*0x0094*/ { 0x8082, AUDIOCONFIG_21 }, + /*0x0095*/ { 0x8083, AUDIOCONFIG_21 }, + /*0x0096*/ { 0x8084, AUDIOCONFIG_21 }, + /*0x0097*/ { 0x8085, AUDIOCONFIG_21 }, + /*0x0098*/ { 0x80b4, AUDIOCONFIG_18 }, + /*0x0099*/ { 0x80b5, AUDIOCONFIG_18 }, + /*0x009a*/ { 0x80b6, AUDIOCONFIG_17 }, + /*0x009b*/ { 0x80a9, AUDIOCONFIG_18 }, + /*0x009c*/ { 0x80aa, AUDIOCONFIG_18 }, + /*0x009d*/ { 0x80ab, AUDIOCONFIG_17 }, + /*0x009e*/ { 0x80ac, AUDIOCONFIG_18 }, + /*0x009f*/ { 0x80ad, AUDIOCONFIG_18 }, + /*0x00a0*/ { 0x80ae, AUDIOCONFIG_17 }, + /*0x00a1*/ { 0x80b1, AUDIOCONFIG_18 }, + /*0x00a2*/ { 0x80b2, AUDIOCONFIG_18 }, + /*0x00a3*/ { 0x80b3, AUDIOCONFIG_18 }, + /*0x00a4*/ { 0x818a, AUDIOCONFIG_19 }, + /*0x00a5*/ { VERSION >= VERSION_NTSC_1_0 ? 0xefdd : 0x8190, AUDIOCONFIG_19 }, + /*0x00a6*/ { 0x805f, AUDIOCONFIG_32 }, + /*0x00a7*/ { 0x8060, AUDIOCONFIG_32 }, + /*0x00a8*/ { 0x8061, AUDIOCONFIG_32 }, + /*0x00a9*/ { 0x8004, AUDIOCONFIG_32 }, + /*0x00aa*/ { 0x80f1, AUDIOCONFIG_32 }, + /*0x00ab*/ { 0x80f3, AUDIOCONFIG_32 }, + /*0x00ac*/ { 0x8055, AUDIOCONFIG_16 }, + /*0x00ad*/ { 0x8056, AUDIOCONFIG_16 }, + /*0x00ae*/ { 0x8057, AUDIOCONFIG_16 }, + /*0x00af*/ { 0x85f7, AUDIOCONFIG_52 }, + /*0x00b0*/ { 0x8127, AUDIOCONFIG_29 }, + /*0x00b1*/ { 0x8128, AUDIOCONFIG_29 }, + /*0x00b2*/ { 0x8129, AUDIOCONFIG_29 }, + /*0x00b3*/ { 0x812a, AUDIOCONFIG_29 }, + /*0x00b4*/ { 0x812b, AUDIOCONFIG_29 }, + /*0x00b5*/ { 0x812c, AUDIOCONFIG_29 }, + /*0x00b6*/ { 0x812d, AUDIOCONFIG_50 }, + /*0x00b7*/ { 0x812e, AUDIOCONFIG_50 }, + /*0x00b8*/ { 0x8138, AUDIOCONFIG_50 }, + /*0x00b9*/ { 0x8138, AUDIOCONFIG_28 }, + /*0x00ba*/ { 0x812f, AUDIOCONFIG_51 }, + /*0x00bb*/ { 0x8151, AUDIOCONFIG_51 }, + /*0x00bc*/ { 0x8154, AUDIOCONFIG_51 }, + /*0x00bd*/ { 0x8157, AUDIOCONFIG_51 }, + /*0x00be*/ { 0x815a, AUDIOCONFIG_51 }, + /*0x00bf*/ { 0x8132, AUDIOCONFIG_51 }, + /*0x00c0*/ { 0x8139, AUDIOCONFIG_51 }, + /*0x00c1*/ { 0x813f, AUDIOCONFIG_51 }, + /*0x00c2*/ { 0x8145, AUDIOCONFIG_51 }, + /*0x00c3*/ { 0x814b, AUDIOCONFIG_51 }, + /*0x00c4*/ { 0x8161, AUDIOCONFIG_04 }, + /*0x00c5*/ { 0x8162, AUDIOCONFIG_04 }, + /*0x00c6*/ { 0x8163, AUDIOCONFIG_04 }, + /*0x00c7*/ { 0x8164, AUDIOCONFIG_04 }, + /*0x00c8*/ { 0x8165, AUDIOCONFIG_04 }, + /*0x00c9*/ { 0x8166, AUDIOCONFIG_04 }, + /*0x00ca*/ { 0x8167, AUDIOCONFIG_04 }, + /*0x00cb*/ { 0x8168, AUDIOCONFIG_04 }, + /*0x00cc*/ { 0x8169, AUDIOCONFIG_04 }, + /*0x00cd*/ { 0x816a, AUDIOCONFIG_04 }, + /*0x00ce*/ { 0x816b, AUDIOCONFIG_04 }, + /*0x00cf*/ { 0x816c, AUDIOCONFIG_04 }, + /*0x00d0*/ { 0x816d, AUDIOCONFIG_04 }, + /*0x00d1*/ { 0x816e, AUDIOCONFIG_04 }, + /*0x00d2*/ { 0x816f, AUDIOCONFIG_04 }, + /*0x00d3*/ { 0x8170, AUDIOCONFIG_04 }, + /*0x00d4*/ { 0x8171, AUDIOCONFIG_04 }, + /*0x00d5*/ { 0x8172, AUDIOCONFIG_04 }, + /*0x00d6*/ { 0x8173, AUDIOCONFIG_04 }, + /*0x00d7*/ { 0x8174, AUDIOCONFIG_04 }, + /*0x00d8*/ { 0x8175, AUDIOCONFIG_04 }, + /*0x00d9*/ { 0x8176, AUDIOCONFIG_04 }, + /*0x00da*/ { 0x8177, AUDIOCONFIG_04 }, + /*0x00db*/ { 0x8178, AUDIOCONFIG_04 }, + /*0x00dc*/ { 0x8179, AUDIOCONFIG_04 }, + /*0x00dd*/ { 0x817a, AUDIOCONFIG_04 }, + /*0x00de*/ { 0x817b, AUDIOCONFIG_04 }, + /*0x00df*/ { 0x817c, AUDIOCONFIG_04 }, + /*0x00e0*/ { 0x817d, AUDIOCONFIG_04 }, + /*0x00e1*/ { 0x817e, AUDIOCONFIG_04 }, + /*0x00e2*/ { 0x817f, AUDIOCONFIG_04 }, + /*0x00e3*/ { 0x8180, AUDIOCONFIG_04 }, + /*0x00e4*/ { 0x804d, AUDIOCONFIG_04 }, + /*0x00e5*/ { 0x804e, AUDIOCONFIG_04 }, + /*0x00e6*/ { 0x85f8, AUDIOCONFIG_05 }, + /*0x00e7*/ { 0x85f9, AUDIOCONFIG_05 }, + /*0x00e8*/ { 0x85fa, AUDIOCONFIG_05 }, + /*0x00e9*/ { 0x85fb, AUDIOCONFIG_05 }, + /*0x00ea*/ { 0x85fc, AUDIOCONFIG_06 }, + /*0x00eb*/ { 0x85fd, AUDIOCONFIG_06 }, + /*0x00ec*/ { 0x85fe, AUDIOCONFIG_06 }, + /*0x00ed*/ { 0x85ff, AUDIOCONFIG_06 }, + /*0x00ee*/ { 0x8600, AUDIOCONFIG_04 }, + /*0x00ef*/ { 0x8601, AUDIOCONFIG_04 }, + /*0x00f0*/ { 0x8602, AUDIOCONFIG_04 }, + /*0x00f1*/ { 0x8603, AUDIOCONFIG_04 }, + /*0x00f2*/ { 0x8604, AUDIOCONFIG_04 }, + /*0x00f3*/ { 0x8605, AUDIOCONFIG_04 }, + /*0x00f4*/ { 0x8606, AUDIOCONFIG_04 }, + /*0x00f5*/ { 0x8606, AUDIOCONFIG_04 }, +#if VERSION >= VERSION_NTSC_1_0 + /*0x00f6*/ { 0x81d9, AUDIOCONFIG_61 }, +#endif + /*0x00f7*/ { 0x8267, AUDIOCONFIG_02 }, + /*0x00f8*/ { 0x8268, AUDIOCONFIG_02 }, + /*0x00f9*/ { 0x8286, AUDIOCONFIG_02 }, + /*0x00fa*/ { 0x8288, AUDIOCONFIG_02 }, + /*0x00fb*/ { 0x8291, AUDIOCONFIG_02 }, + /*0x00fc*/ { 0x829f, AUDIOCONFIG_02 }, + /*0x00fd*/ { 0x82a1, AUDIOCONFIG_02 }, +#if VERSION >= VERSION_NTSC_1_0 + /*0x00fe*/ { 0x8af9, AUDIOCONFIG_47 }, // Cass: "You've become quite an annoyance" + /*0x00ff*/ { 0x8afa, AUDIOCONFIG_47 }, // Cass: "We meet again, girl" + /*0x0100*/ { 0x8afb, AUDIOCONFIG_47 }, // Cass: "Good night, Miss Dark" +#else + /*0x00fe*/ { 0x92f9, AUDIOCONFIG_47 }, // Cass: "You've become quite an annoyance" + /*0x00ff*/ { 0x92fa, AUDIOCONFIG_47 }, // Cass: "We meet again, girl" + /*0x0100*/ { 0x92fb, AUDIOCONFIG_47 }, // Cass: "Good night, Miss Dark" +#endif + /*0x0101*/ { 0x92fc, AUDIOCONFIG_47 }, // Cass: "Get her!" + /*0x0102*/ { 0x92fd, AUDIOCONFIG_47 }, // Cass: (laughing) + /*0x0103*/ { 0x9285, AUDIOCONFIG_02 }, // Scientist: "Who the hell are you?" + /*0x0104*/ { 0x9306, AUDIOCONFIG_48 }, // Programmer: "Yes, yes, I agree. Personality..." + /*0x0105*/ { 0x9307, AUDIOCONFIG_48 }, // Programmer: "No. I can start the process..." + /*0x0106*/ { 0x9308, AUDIOCONFIG_48 }, // Programmer: "I'll begin at once. Goodbye" + /*0x0107*/ { 0x9309, AUDIOCONFIG_48 }, // Programmer: "Security, help me!" + /*0x0108*/ { 0x930a, AUDIOCONFIG_48 }, // Programmer: "Help! Help!" + /*0x0109*/ { 0x8435, AUDIOCONFIG_49 }, + /*0x010a*/ { 0x81b5, AUDIOCONFIG_07 }, + /*0x010b*/ { 0x81b6, AUDIOCONFIG_08 }, + /*0x010c*/ { 0x81b5, AUDIOCONFIG_09 }, + /*0x010d*/ { 0x81b6, AUDIOCONFIG_10 }, + /*0x010e*/ { 0x85f3, AUDIOCONFIG_11 }, + /*0x010f*/ { 0x81b5, AUDIOCONFIG_12 }, + /*0x0110*/ { 0x81b6, AUDIOCONFIG_13 }, + /*0x0111*/ { 0x81b7, AUDIOCONFIG_20 }, + /*0x0112*/ { 0x81b8, AUDIOCONFIG_20 }, + /*0x0113*/ { 0x81c7, AUDIOCONFIG_20 }, + /*0x0114*/ { 0x8037, AUDIOCONFIG_20 }, + /*0x0115*/ { 0x81b7, AUDIOCONFIG_56 }, + /*0x0116*/ { 0x81b9, AUDIOCONFIG_00 }, + /*0x0117*/ { 0x81ba, AUDIOCONFIG_00 }, + /*0x0118*/ { 0x81bb, AUDIOCONFIG_00 }, + /*0x0119*/ { 0x81cb, AUDIOCONFIG_36 }, + /*0x011a*/ { 0x81cb, AUDIOCONFIG_37 }, + /*0x011b*/ { 0x81cb, AUDIOCONFIG_38 }, +#if VERSION >= VERSION_NTSC_1_0 + /*0x011c*/ { 0x81c6, AUDIOCONFIG_55 }, +#else + /*0x011c*/ { 0x81c6, AUDIOCONFIG_55 }, +#endif + /*0x011d*/ { 0x9278, AUDIOCONFIG_47 }, // "That's not how it goes" + /*0x011e*/ { 0x9279, AUDIOCONFIG_47 }, // "Give it to me. You're doing it wrong" + /*0x011f*/ { 0x927a, AUDIOCONFIG_47 }, // "Oh no, we're too late" + /*0x0120*/ { 0x927b, AUDIOCONFIG_47 }, // "Yes it is" + /*0x0121*/ { 0x927c, AUDIOCONFIG_47 }, // "Stop annoying me" + /*0x0122*/ { 0x927d, AUDIOCONFIG_47 }, // "She's here!" + /*0x0123*/ { 0x9277, AUDIOCONFIG_47 }, // "Will you just hurry up?" + /*0x0124*/ { 0x82fd, AUDIOCONFIG_02 }, // "Holy..." + /*0x0125*/ { 0x82fe, AUDIOCONFIG_02 }, // "What the hell?" + /*0x0126*/ { 0x8300, AUDIOCONFIG_02 }, // "Oh my god" + /*0x0127*/ { 0x8303, AUDIOCONFIG_02 }, // "Oh god I'm hit" + /*0x0128*/ { 0x830a, AUDIOCONFIG_02 }, // "Oh my god" +#if VERSION >= VERSION_NTSC_1_0 + /*0x0129*/ { 0x8313, AUDIOCONFIG_62 }, // "Noooo!" +#endif + /*0x012a*/ { 0x8314, AUDIOCONFIG_02 }, // "Oh god he's dead!" + /*0x012b*/ { 0x832e, AUDIOCONFIG_02 }, // "Bloody stupid gun" + /*0x012c*/ { 0x8330, AUDIOCONFIG_02 }, // "Damn it" + /*0x012d*/ { 0x8333, AUDIOCONFIG_02 }, // "Damn, she's good" + /*0x012e*/ { 0x8334, AUDIOCONFIG_02 }, // "Cover my ass" +#if VERSION >= VERSION_NTSC_1_0 + /*0x012f*/ { 0x834c, AUDIOCONFIG_62 }, // Death scream +#endif + /*0x0130*/ { 0x83a3, AUDIOCONFIG_02 }, // Female: "Damn she's good" + /*0x0131*/ { 0x83b9, AUDIOCONFIG_02 }, // Female: "My god" + /*0x0132*/ { 0x83c7, AUDIOCONFIG_02 }, // "Geez, that hurt" + /*0x0133*/ { 0x83cf, AUDIOCONFIG_02 }, // "Damn it, I'm taking fire" + /*0x0134*/ { 0x83d2, AUDIOCONFIG_02 }, // "God damn it" + /*0x0135*/ { 0x83d4, AUDIOCONFIG_02 }, // "Holy moley" + /*0x0136*/ { 0x83f3, AUDIOCONFIG_02 }, // "Damn, missed again" + /*0x0137*/ { 0x83f5, AUDIOCONFIG_02 }, // "Damn" + /*0x0138*/ { 0x83f6, AUDIOCONFIG_02 }, // "Hell, she's good" + /*0x0139*/ { 0x8400, AUDIOCONFIG_02 }, // "Let's get the hell out of here" +#if VERSION >= VERSION_NTSC_1_0 + /*0x013a*/ { 0x8411, AUDIOCONFIG_62 }, // "Noooo!" +#endif + /*0x013b*/ { 0x8413, AUDIOCONFIG_02 }, // "Shoot, damn it" + /*0x013c*/ { 0x8414, AUDIOCONFIG_02 }, // "Oh god, I'm dying" + /*0x013d*/ { 0x8422, AUDIOCONFIG_02 }, // "God, run!" + /*0x013e*/ { 0x8432, AUDIOCONFIG_33 }, + /*0x013f*/ { 0x843c, AUDIOCONFIG_58 }, + /*0x0140*/ { 0x843d, AUDIOCONFIG_58 }, + /*0x0141*/ { 0x84ab, AUDIOCONFIG_58 }, + /*0x0142*/ { 0x843d, AUDIOCONFIG_58 }, + /*0x0143*/ { 0x81b7, AUDIOCONFIG_58 }, + /*0x0144*/ { 0x8477, AUDIOCONFIG_57 }, + /*0x0145*/ { 0x8478, AUDIOCONFIG_57 }, +#if VERSION >= VERSION_NTSC_1_0 + /*0x0146*/ { 0x81c2, AUDIOCONFIG_54 }, + /*0x0147*/ { 0x8479, AUDIOCONFIG_54 }, + /*0x0148*/ { 0x81c3, AUDIOCONFIG_54 }, + /*0x0149*/ { 0x81c4, AUDIOCONFIG_54 }, +#else + /*0x0146*/ { 0x81c2, AUDIOCONFIG_55 }, + /*0x0147*/ { 0x8479, AUDIOCONFIG_55 }, + /*0x0148*/ { 0x81c3, AUDIOCONFIG_55 }, + /*0x0149*/ { 0x81c4, AUDIOCONFIG_55 }, +#endif + /*0x014a*/ { 0x8443, AUDIOCONFIG_02 }, // Civilian: "Oh my god" + /*0x014b*/ { 0x844e, AUDIOCONFIG_02 }, // "What the hell was that?" +#if VERSION >= VERSION_NTSC_1_0 + /*0x014c*/ { 0x843c, AUDIOCONFIG_63 }, + /*0x014d*/ { 0x847c, AUDIOCONFIG_63 }, + /*0x014e*/ { 0x843d, AUDIOCONFIG_63 }, +#endif + /*0x014f*/ { 0xf2ad, AUDIOCONFIG_01 }, // "Joanna, this is Jonathan. You're in grave danger" + /*0x0150*/ { 0xf2ae, AUDIOCONFIG_01 }, // "They've flooded the area with nerge gas" + /*0x0151*/ { 0xf2af, AUDIOCONFIG_01 }, // "Get our friend to the containment lab. There's a hiding place there" + /*0x0152*/ { 0xd2b0, AUDIOCONFIG_01 }, // "I'll contact you when you get there. Good luck" + /*0x0153*/ { 0xf2b1, AUDIOCONFIG_01 }, // "Good work Jo. We need to meet up. They're getting suspicious of me" + /*0x0154*/ { 0xd2b2, AUDIOCONFIG_01 }, // "Use the maintenance hatch I've opened in one of the containment labs. Hurry" + /*0x0155*/ { 0x92b8, AUDIOCONFIG_02 }, // "Damn it Joanna, cover me!" + /*0x0156*/ { 0x9b30, AUDIOCONFIG_02 }, // "Oh my god, a gun?!" + /*0x0157*/ { 0x9b27, AUDIOCONFIG_47 }, // "So you got here at last" + /*0x0158*/ { 0x9b28, AUDIOCONFIG_47 }, // "Hey, you're not, uh, security alert!" + /*0x0159*/ { 0x9b29, AUDIOCONFIG_47 }, // "No guns allowed in here. Put your weapon away" + /*0x015a*/ { 0x9b2a, AUDIOCONFIG_47 }, // "I won't tell you again. Lose the weapon" + /*0x015b*/ { 0x9b2b, AUDIOCONFIG_47 }, // "Right. I'm calling security" + /*0x015c*/ { 0x9b2c, AUDIOCONFIG_47 }, // "Everyone's been waiting for you" + /*0x015d*/ { 0x9a9d, AUDIOCONFIG_60 }, // "How's things?" + /*0x015e*/ { 0x9a9e, AUDIOCONFIG_60 }, // "Hey there" + /*0x015f*/ { 0x9a9f, AUDIOCONFIG_60 }, // "Hi. How are you?" + /*0x0160*/ { 0x8037, AUDIOCONFIG_04 }, + /*0x0161*/ { 0x9271, AUDIOCONFIG_60 }, // Female: "Good afternoon" + /*0x0162*/ { 0x9275, AUDIOCONFIG_02 }, // Female: "Oh my god!" + /*0x0163*/ { 0x9acc, AUDIOCONFIG_60 }, // "Hi there" + /*0x0164*/ { 0x9acd, AUDIOCONFIG_60 }, // "How's things" + /*0x0165*/ { 0x9ad4, AUDIOCONFIG_60 }, // "Hello" + /*0x0166*/ { 0x9ad5, AUDIOCONFIG_60 }, // "Hey, what's up?" + /*0x0167*/ { 0x84c8, AUDIOCONFIG_02 }, // "What the hell?" + /*0x0168*/ { 0x84cd, AUDIOCONFIG_02 }, // "Geez" + /*0x0169*/ { 0x84ad, AUDIOCONFIG_46 }, + /*0x016a*/ { 0x8507, AUDIOCONFIG_27 }, + /*0x016b*/ { 0x84ee, AUDIOCONFIG_16 }, + /*0x016c*/ { 0x84ef, AUDIOCONFIG_16 }, + /*0x016d*/ { 0x84f0, AUDIOCONFIG_16 }, + /*0x016e*/ { 0x92c8, AUDIOCONFIG_02 }, // President: "What the hell was that?" + /*0x016f*/ { 0x92c9, AUDIOCONFIG_02 }, // Trent: "How the hell did you get on board?" + /*0x0170*/ { 0xb3a0, AUDIOCONFIG_01 }, // Carrington: "We're getting a positive reading. The internal comms hub is nearby" + /*0x0171*/ { 0xb3a1, AUDIOCONFIG_01 }, // Carrington: "You're on the same floor as Cassandra's office" + /*0x0172*/ { 0xd3a3, AUDIOCONFIG_01 }, // Carrington: "The basement elevator must be around there somewhere" + /*0x0173*/ { 0xd3a4, AUDIOCONFIG_01 }, // Carrington: "That's the highest security sector. Dr Caroll has got to be nearby" + /*0x0174*/ { 0xd3a6, AUDIOCONFIG_01 }, // Grimshaw: "Reprogram the cleaning bot. It'll give you a way in" + /*0x0175*/ { 0xd3a7, AUDIOCONFIG_01 }, // Carrington: "Get out Jo! The levels are too high. Use the camspy" + /*0x0176*/ { 0xd3a8, AUDIOCONFIG_01 }, // Carrington: "They've locked down the ground floor. Get to the elevator" + /*0x0177*/ { 0xd3a9, AUDIOCONFIG_01 }, // Carrington: "That copter needs to be taken out of the jumpship will get shut down" + /*0x0178*/ { 0xd3ab, AUDIOCONFIG_01 }, // Carrington: "Don't keep the jumpship waiting. Get back to the landing pad" + /*0x0179*/ { 0xd3b0, AUDIOCONFIG_01 }, // Carrington: "The only place we could secure the equipment was a storm drain" + /*0x017a*/ { 0xd3b2, AUDIOCONFIG_01 }, // Grimshaw: "Reprogram that taxi. It's a mark 2 and should be compatible" + /*0x017b*/ { 0xd3b3, AUDIOCONFIG_01 }, // Carrington: The carpark lift is your only point of ingress" + /*0x017c*/ { 0xb3b6, AUDIOCONFIG_01 }, // Grimshaw: "The safe's heavily encrypted. The decoder's going to take a little longer" + /*0x017d*/ { 0xd3b8, AUDIOCONFIG_01 }, // Carrington: "The air intercept radar is controlled from that bunker" + /*0x017e*/ { 0xd3ba, AUDIOCONFIG_01 }, // Carrington: "The hangar lift is the other side of that huge door" + /*0x017f*/ { 0xd3bb, AUDIOCONFIG_01 }, // Jon: "Careful with that trigger finger, Agent Dark. You're closing in on my position" + /*0x0180*/ { 0xb3bd, AUDIOCONFIG_01 }, // Carrington: "The temperature's dropping. You must be close to the cryo room" + /*0x0181*/ { 0xd3bf, AUDIOCONFIG_01 }, // Carrington: "There he is Jo. Hurry or you'll be too late" + /*0x0182*/ { 0xb3c4, AUDIOCONFIG_01 }, // Carrington: "Now's your chance. Grab the stewardess's bag and get her uniform" + /*0x0183*/ { 0xb3c5, AUDIOCONFIG_01 }, // Carrington: "Use that case to conceal your equipment" + /*0x0184*/ { 0xb3c6, AUDIOCONFIG_01 }, // Carrington: "The case will get stopped unless you do something" + /*0x0185*/ { 0xb3c9, AUDIOCONFIG_01 }, // Carrington: "The president's room is on this level, Joanna" + /*0x0186*/ { 0xb3ca, AUDIOCONFIG_01 }, // Carrington: "Something's wrong. You have to get to the cockpit" + /*0x0187*/ { 0x8594, AUDIOCONFIG_04 }, // Footstep + /*0x0188*/ { 0x8595, AUDIOCONFIG_04 }, // Footstep + /*0x0189*/ { 0x8596, AUDIOCONFIG_04 }, // Footstep + /*0x018a*/ { 0x8597, AUDIOCONFIG_04 }, // Footstep + /*0x018b*/ { 0x8598, AUDIOCONFIG_04 }, // Footstep + /*0x018c*/ { 0x8599, AUDIOCONFIG_04 }, // Footstep + /*0x018d*/ { 0x859a, AUDIOCONFIG_04 }, // Footstep + /*0x018e*/ { 0x859b, AUDIOCONFIG_04 }, // Footstep + /*0x018f*/ { 0x85a0, AUDIOCONFIG_04 }, // Footstep + /*0x0190*/ { 0x85a1, AUDIOCONFIG_04 }, // Footstep + /*0x0191*/ { 0x85a2, AUDIOCONFIG_04 }, // Footstep + /*0x0192*/ { 0x85a3, AUDIOCONFIG_04 }, // Footstep + /*0x0193*/ { 0xf310, AUDIOCONFIG_01 }, // Carrington: "Joanna. We're under attack" + /*0x0194*/ { 0xd311, AUDIOCONFIG_01 }, // Carrington: "Get the guns back online. Hurry" + /*0x0195*/ { 0xf312, AUDIOCONFIG_01 }, // Carrington: "The Skedar have taken hostages" + /*0x0196*/ { 0xd313, AUDIOCONFIG_01 }, // Carrington: "Get up to the offices and save them" + /*0x0197*/ { 0xf314, AUDIOCONFIG_01 }, // Carrington: "They're using a new form of shield technology" + /*0x0198*/ { 0xd315, AUDIOCONFIG_01 }, // Carrington: "Foster was working on a new weapon which may be useful" + /*0x0199*/ { 0xf316, AUDIOCONFIG_03 }, // Carrington: "Damn it, my office. If they get access..." + /*0x019a*/ { 0xd317, AUDIOCONFIG_01 }, // Carrington: "Get there first, Jo and destroy the files" + /*0x019b*/ { 0xf318, AUDIOCONFIG_01 }, // Carrington: "Things are desparate. They've planted a bomb" + /*0x019c*/ { 0xd319, AUDIOCONFIG_01 }, // Carrington: "Find it and get it out of the building" + /*0x019d*/ { 0xf31a, AUDIOCONFIG_01 }, // Carrington: "Well done Joanna. We're nearly clear" + /*0x019e*/ { 0xd31b, AUDIOCONFIG_01 }, // Carrington: "The last dropship is waiting for you. Hurry" + /*0x019f*/ { 0xf293, AUDIOCONFIG_01 }, // Grimshaw: "Joanna, it's Grimshaw. We've got hackers at..." + /*0x01a0*/ { 0xf2df, AUDIOCONFIG_01 }, // Elvis: "We're outside, Joanna. Get the shields down and we can help you" + /*0x01a1*/ { 0xf2e0, AUDIOCONFIG_01 }, // Elvis: "You've got to open the hanger doors so we can dock" + /*0x01a2*/ { 0xd4ea, AUDIOCONFIG_01 }, // Carrington: "Stand back Joanna. We'll create your escape route" + /*0x01a3*/ { VERSION >= VERSION_NTSC_1_0 ? 0x8d24 : 0x9524, AUDIOCONFIG_02 }, // Cass: "Get the hell out of my office" + /*0x01a4*/ { 0x9d62, AUDIOCONFIG_47 }, // Elvis: "Joanna, what took you so long? Follow me. Let's get off this old tub" + /*0x01a5*/ { 0x84aa, AUDIOCONFIG_43 }, + /*0x01a6*/ { 0x81cf, AUDIOCONFIG_41 }, + /*0x01a7*/ { 0x858f, AUDIOCONFIG_40 }, + /*0x01a8*/ { 0x80d5, AUDIOCONFIG_39 }, // Lift mechanical sound + /*0x01a9*/ { 0x80ec, AUDIOCONFIG_39 }, // Lift mechanical sound + /*0x01aa*/ { 0x80ed, AUDIOCONFIG_40 }, // Lift mechanical sound + /*0x01ab*/ { 0x80d5, AUDIOCONFIG_41 }, // Lift mechanical sound + /*0x01ac*/ { 0x80ec, AUDIOCONFIG_41 }, // Lift mechanical sound + /*0x01ad*/ { 0x80ed, AUDIOCONFIG_42 }, // Lift mechanical sound + /*0x01ae*/ { 0x80d5, AUDIOCONFIG_41 }, // Lift mechanical sound + /*0x01af*/ { 0x80ec, AUDIOCONFIG_41 }, // Lift mechanical sound + /*0x01b0*/ { 0x803a, AUDIOCONFIG_41 }, // Lift call + /*0x01b1*/ { 0x84e8, AUDIOCONFIG_43 }, // Lift mechanical sound + /*0x01b2*/ { 0x84e9, AUDIOCONFIG_43 }, // Lift mechanical sound + /*0x01b3*/ { 0x80cd, AUDIOCONFIG_42 }, // Lift mechanical sound + /*0x01b4*/ { 0x80ce, AUDIOCONFIG_42 }, // Lift mechanical sound + /*0x01b5*/ { 0x8039, AUDIOCONFIG_42 }, // Lift mechanical sound + /*0x01b6*/ { 0x80cd, AUDIOCONFIG_44 }, // Lift mechanical sound + /*0x01b7*/ { 0x80db, AUDIOCONFIG_16 }, // Lift roller door + /*0x01b8*/ { 0x80da, AUDIOCONFIG_16 }, // Lift roller door + /*0x01b9*/ { 0xf41c, AUDIOCONFIG_02 }, // Joanna: "Oh my god" + /*0x01ba*/ { 0xf434, AUDIOCONFIG_02 }, // Lab guy: "What the hell do you think you're doing? This is supposed..." + /*0x01bb*/ { 0xf44f, AUDIOCONFIG_02 }, // President: "Damn it man. I say no and I mean no..." + /*0x01bc*/ { 0x0000, AUDIOCONFIG_00 }, }; -// 44f8 struct audioconfig g_AudioConfigs[] = { { /* 0*/ 200, 1000, 1200, -1, 100, -1, 0, 0 }, { /* 1*/ 400, 2500, 3000, -1, 100, 48, 0, AUDIOCONFIGFLAG_20 }, @@ -581,16 +684,20 @@ struct audioconfig g_AudioConfigs[] = { { /*51*/ 400, 2500, 3000, -1, 75, -1, 0, 0 }, { /*52*/ 200, 500, 800, -1, 100, -1, 100, 0 }, { /*53*/ 1000, 1100, 1600, -1, 100, -1, 0, 0 }, +#if VERSION >= VERSION_NTSC_1_0 { /*54*/ 300, 1300, 1500, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, +#endif { /*55*/ 300, 1300, 1500, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, { /*56*/ 250, 600, 900, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, { /*57*/ 50, 180, 250, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, { /*58*/ 100, 400, 600, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, { /*59*/ 700, 1100, 1400, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, { /*60*/ 400, 2500, 3000, -1, 100, -1, 0, AUDIOCONFIGFLAG_04 }, +#if VERSION >= VERSION_NTSC_1_0 { /*61*/ 300, 900, 1100, -1, 100, -1, 0, 0 }, { /*62*/ 1000, 2500, 3000, -1, 100, -1, 0, AUDIOCONFIGFLAG_08 }, { /*63*/ 400, 1000, 1200, -1, 100, -1, 0, 0 }, +#endif }; u32 var8005ecd8 = 0x00000000; @@ -602,68 +709,147 @@ u32 var8005ecec = 0x00000000; u32 var8005ecf0 = 0x00000000; u32 var8005ecf4 = 0x00000000; -s16 var8005ecf8[] = {0x6665, 0x5998}; -u32 var8005ecfc = 0x5fff4ccc; -u32 var8005ed00 = 0x5fff2ccc; -u32 var8005ed04 = 0x59986665; -u32 var8005ed08 = 0x4ccc5998; -u32 var8005ed0c = 0x59985998; -u32 var8005ed10 = 0x5fff6665; -u32 var8005ed14 = 0x66655fff; -u32 var8005ed18 = 0x59986665; -u32 var8005ed1c = 0x5fff5fff; -u32 var8005ed20 = 0x5fff6665; -u32 var8005ed24 = 0x5fff5fff; -u32 var8005ed28 = 0x5fff7332; -u32 var8005ed2c = 0x5fff6665; -u32 var8005ed30 = 0x5fff5998; -u32 var8005ed34 = 0x59985332; -u32 var8005ed38 = 0x53325fff; -u32 var8005ed3c = 0x33324ccc; -u32 var8005ed40 = 0x5fff4ccc; -u32 var8005ed44 = 0x3fff5fff; -u32 var8005ed48 = 0x5fff5fff; -u32 var8005ed4c = 0x5fff4ccc; -u32 var8005ed50 = 0x4ccc4ccc; -u32 var8005ed54 = 0x4ccc4ccc; -u32 var8005ed58 = 0x4ccc4ccc; -u32 var8005ed5c = 0x5fff5fff; -u32 var8005ed60 = 0x5fff5fff; -u32 var8005ed64 = 0x5fff5fff; -u32 var8005ed68 = 0x5fff4ccc; -u32 var8005ed6c = 0x5fff5fff; -u32 var8005ed70 = 0x5fff5fff; -u32 var8005ed74 = 0x5fff5fff; -u32 var8005ed78 = 0x5fff4ccc; -u32 var8005ed7c = 0x4ccc4ccc; -u32 var8005ed80 = 0x4ccc4ccc; -u32 var8005ed84 = 0x4ccc7332; -u32 var8005ed88 = 0x73327332; -u32 var8005ed8c = 0x4ccc3c28; -u32 var8005ed90 = 0x4ccc4ccc; -u32 var8005ed94 = 0x4ccc4ccc; -u32 var8005ed98 = 0x4ccc4ccc; -u32 var8005ed9c = 0x4ccc4ccc; -u32 var8005eda0 = 0x4ccc4ccc; -u32 var8005eda4 = 0x4ccc4ccc; -u32 var8005eda8 = 0x73327332; -u32 var8005edac = 0x4ccc4ccc; -u32 var8005edb0 = 0x4ccc4ccc; -u32 var8005edb4 = 0x4ccc6665; -u32 var8005edb8 = 0x4ccc4ccc; -u32 var8005edbc = 0x4ccc4ccc; -u32 var8005edc0 = 0x6ccb5fff; -u32 var8005edc4 = 0x59987998; -u32 var8005edc8 = 0x59985998; -u32 var8005edcc = 0x66655fff; -u32 var8005edd0 = 0x5fff7332; -u32 var8005edd4 = 0x73327332; -u32 var8005edd8 = 0x73327332; -u32 var8005eddc = 0x4ccc6665; -u32 var8005ede0 = 0x66656665; -u32 var8005ede4 = 0x4ccc6ccb; -u32 var8005ede8 = 0xffff0000; +s16 var8005ecf8[] = { + 0x6665, + 0x5998, + 0x5fff, + 0x4ccc, + 0x5fff, + 0x2ccc, + 0x5998, + 0x6665, + 0x4ccc, + 0x5998, + 0x5998, + 0x5998, + 0x5fff, + 0x6665, + 0x6665, + 0x5fff, + 0x5998, + 0x6665, + 0x5fff, + 0x5fff, + 0x5fff, + 0x6665, + 0x5fff, + 0x5fff, + 0x5fff, + 0x7332, + 0x5fff, + 0x6665, + 0x5fff, +#if VERSION >= VERSION_NTSC_1_0 + 0x5998, + 0x5998, +#else + 0x5fff, + 0x5fff, +#endif + 0x5332, + 0x5332, + 0x5fff, + 0x3332, +#if VERSION >= VERSION_NTSC_1_0 + 0x4ccc, +#else + 0x3fff, +#endif + 0x5fff, + 0x4ccc, + 0x3fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x4ccc, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x5fff, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x7332, + 0x7332, + 0x7332, + 0x4ccc, +#if VERSION >= VERSION_NTSC_1_0 + 0x3c28, +#else + 0x4ccc, +#endif + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x7332, + 0x7332, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x6665, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x4ccc, + 0x6ccb, + 0x5fff, + 0x5998, + 0x7998, + 0x5998, + 0x5998, + 0x6665, + 0x5fff, + 0x5fff, + 0x7332, + 0x7332, + 0x7332, + 0x7332, + 0x7332, + 0x4ccc, + 0x6665, + 0x6665, + 0x6665, + 0x4ccc, + 0x6ccb, + 0xffff, + 0x0000, +}; + +#if VERSION >= VERSION_NTSC_1_0 u32 var8005edec = 0xffffffff; +#endif extern u8 _sfxctlSegmentRomStart; extern u8 _sfxtblSegmentRomStart; diff --git a/src/lib/tlb.s b/src/lib/tlb.s index bb62d4552..06bb6da52 100644 --- a/src/lib/tlb.s +++ b/src/lib/tlb.s @@ -1,5 +1,6 @@ #include "asm_helper.h" #include "macros.inc" +#include "versions.h" .set noat .set noreorder @@ -81,7 +82,11 @@ glabel tlb000010a4 addiu $t1, $zero, 0x1ff lui $at, %hi(var8008d264+0x2) sh $t1, %lo(var8008d264+0x2)($at) - addiu $a0, $zero, 0x10c +#if VERSION >= VERSION_NTSC_1_0 + addiu $a0, $zero, 268 +#else + addiu $a0, $zero, 266 +#endif lui $at, %hi(var8008ae28+0x2) sh $a0, %lo(var8008ae28+0x2)($at) lui $at, %hi(var8008d258+0x2) @@ -121,11 +126,15 @@ glabel tlb0000113c .L00001150: sb $t0, 0x0($v0) bne $v0, $v1, .L00001150 - addiu $v0, $v0, 0x1 - addiu $a0, $zero, 0x4 + addiu $v0, $v0, 1 +#if VERSION >= VERSION_NTSC_1_0 + addiu $a0, $zero, 4 +#else + addiu $a0, $zero, 2 +#endif beqz $a0, .L00001178 addiu $a0, $a0, -1 - addiu $t0, $zero, 0x2 + addiu $t0, $zero, 2 sllv $t0, $t0, $a0 addiu $t0, $t0, -1 sb $t0, 0x0($v1) @@ -152,6 +161,13 @@ glabel tlbHandleMiss slt $at, $s5, $t1 beqz $at, .L0000162c nop +#if VERSION < VERSION_NTSC_1_0 + lui $t2, 0x8009 + addiu $t2, $t2, 0x30e4 + lw $t6, 0($t2) + addiu $t6, $t6, 1 + sw $t6, 0($t2) +#endif mfc0 $t9, C0_BADVADDR srl $t9, $t9, 0xc andi $t9, $t9, 0x1 @@ -198,6 +214,13 @@ glabel tlbHandleMiss sll $t0, $t0, 0xc addu $s1, $s1, $t0 .L00001268: +#if VERSION < VERSION_NTSC_1_0 + lui $t2, 0x8009 + addiu $t2, $t2, 0x30e8 + lw $t0, 0($t2) + addiu $t0, $t0, 1 + sw $t0, 0($t2) +#endif mfc0 $t2, C0_BADVADDR lui $t0, 0xff ori $t0, $t0, 0xf000 @@ -408,6 +431,14 @@ glabel tlbHandleMiss jr $ra nop .L00001570: +#if VERSION < VERSION_NTSC_1_0 + lui $t0, 0x8009 + addiu $t0, $t0, 0x30ec + lw $t1, 0($t0) + addiu $t1, $t1, 1 + sw $t1, 0($t0) +#endif +.L00001570_2: lui $s4, %hi(var8008ae24) lw $s4, %lo(var8008ae24)($s4) lui $gp, %hi(var80090b08) @@ -453,7 +484,7 @@ glabel tlbHandleMiss mfc0 $t0, C0_ENTRYHI bltz $t2, .L00001620 nop - j .L00001570 + j .L00001570_2 nop .L00001620: sw $zero, 0x0($t1) diff --git a/src/lib/ultra/os/initialize.c b/src/lib/ultra/os/initialize.c index 74b1d6893..2ba25ada6 100644 --- a/src/lib/ultra/os/initialize.c +++ b/src/lib/ultra/os/initialize.c @@ -24,7 +24,7 @@ s32 osViClock = VI_NTSC_CLOCK; u32 _osShutdown = 0; u32 __osGlobalIntMask = OS_IM_ALL; -#if VERSION < VERSION_PAL_FINAL +#if VERSION >= VERSION_NTSC_1_0 && VERSION < VERSION_PAL_FINAL u32 var8005cf74 = 0; u32 var8005cf78 = 0; u32 var8005cf7c = 0; diff --git a/src/lib/vm.c b/src/lib/vm.c index 81fa13eaf..f9fcec1d2 100644 --- a/src/lib/vm.c +++ b/src/lib/vm.c @@ -17,6 +17,10 @@ u32 var80090b04; u32 var80090b08; u32 var80090b0c; +#if VERSION < VERSION_NTSC_1_0 +u8 fillnb[0x0c] = {0}; +#endif + u32 var8005cf80 = 0; u32 var8005cf84 = 0; u32 var8005cf88 = 0;