From 083ce19f7402b3a78defb445fb862d8f2f423f7c Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 16 Mar 2022 22:18:09 +1000 Subject: [PATCH] jpn-final: Get data segment matching excluding pointers --- src/assets/jpn-final/files/list.ld | 5 +- src/game/botinv.c | 4 + src/game/credits.c | 12 ++- src/game/file.c | 10 +- src/game/game_00c490.c | 2 +- src/game/game_10c9c0.c | 2 +- src/game/game_1531a0.c | 27 ++++- src/game/hudmsg.c | 8 ++ src/game/inventory/items.c | 16 +++ src/game/lang.c | 4 +- src/game/lv.c | 5 + src/game/mainmenu.c | 44 +++++++- src/game/menu.c | 2 + src/game/menuitem.c | 47 +++++---- src/game/modeldata/general.c | 14 ++- src/game/mplayer/ingame.c | 49 +++++++-- src/game/mplayer/mplayer.c | 164 ++++++++++++++++------------- src/game/mplayer/setup.c | 2 + src/game/player.c | 5 +- src/game/propobj.c | 2 +- src/game/sparks/sparks.c | 2 +- src/game/title.c | 52 ++++++++- src/game/training/menus.c | 28 +++-- src/game/training/training.c | 8 ++ src/include/constants.h | 4 + src/include/data.h | 6 +- src/include/files.h | 2 + 27 files changed, 389 insertions(+), 137 deletions(-) diff --git a/src/assets/jpn-final/files/list.ld b/src/assets/jpn-final/files/list.ld index 491a0b809..efad60ff6 100644 --- a/src/assets/jpn-final/files/list.ld +++ b/src/assets/jpn-final/files/list.ld @@ -2021,7 +2021,6 @@ FILE(07d9, CheadphelpsZ, _file_CheadphelpsZ); FILE(07da, Ap29_15_joM, _file_Ap29_15_joM); FILE(07db, Ap16_03_joM, _file_Ap16_03_joM); FILE(07dc, Acarrbye02M, _file_Acarrbye02M); - -#if VERSION >= VERSION_NTSC_1_0 FILE(07dd, Asaucerexp1M, _file_Asaucerexp1M); -#endif +FILE(07de, PjaplogoZ, _file_PjaplogoZ); +FILE(07df, PjappdZ, _file_PjappdZ); diff --git a/src/game/botinv.c b/src/game/botinv.c index 2006e55cc..b71e5bd0d 100644 --- a/src/game/botinv.c +++ b/src/game/botinv.c @@ -56,7 +56,11 @@ struct aibotweaponpreference g_AibotWeaponPreferences[] = { /*0x17*/ { 176, 188, 0, 0, 1, 1, BOTDISTCFG_SHOOTEXPLOSIVE, BOTDISTCFG_SHOOTEXPLOSIVE, 20, 20, 4, 4, 2, 0 }, // WEAPON_DEVASTATOR /*0x18*/ { 160, 188, 0, 0, 1, 1, BOTDISTCFG_SHOOTEXPLOSIVE, BOTDISTCFG_SHOOTEXPLOSIVE, 2, 2, 1, 1, 2, 0 }, // WEAPON_ROCKETLAUNCHER /*0x19*/ { 168, 188, 0, 0, 1, 1, BOTDISTCFG_SHOOTEXPLOSIVE, BOTDISTCFG_SHOOTEXPLOSIVE, 2, 2, 1, 1, 3, 0 }, // WEAPON_SLAYER +#if VERSION == VERSION_JPN_FINAL + /*0x1a*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_COMBATKNIFE +#else /*0x1a*/ { 20, 40, 24, 40, 1, 1, BOTDISTCFG_CLOSE, BOTDISTCFG_DEFAULT, 0, 5, 0, 1, 1, 0 }, // WEAPON_COMBATKNIFE +#endif /*0x1b*/ { 108, 176, 0, 0, 1, 1, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 15, 15, 5, 5, 4, 1 }, // WEAPON_CROSSBOW /*0x1c*/ { 48, 188, 0, 0, 1, 1, BOTDISTCFG_DEFAULT, BOTDISTCFG_CLOSE, 20, 24, 6, 8, 1, 0 }, // WEAPON_TRANQUILIZER /*0x1d*/ { 112, 112, 0, 0, 1, 1, BOTDISTCFG_DEFAULT, BOTDISTCFG_CLOSE, 0, 0, 0, 0, 1, 0 }, // WEAPON_LASER diff --git a/src/game/credits.c b/src/game/credits.c index 9a41f4c18..98200b73d 100644 --- a/src/game/credits.c +++ b/src/game/credits.c @@ -494,7 +494,17 @@ struct credit g_Credits[] = { { 1, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_131, L_TITLE_132 }, // "armond williams junior", "henry sterchi" { 0, 0, 0, 0, CREDITSTYLE_R_MED, L_TITLE_133, L_TITLE_000 }, // "ed ridgeway", "" -#if VERSION >= VERSION_PAL_FINAL +#if VERSION == VERSION_JPN_FINAL + { 1, 0, 1, 0, CREDITSTYLE_C_BIG, L_TITLE_184, L_TITLE_000 }, // "ncl staff", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_185, L_TITLE_186 }, // "s. miyamoto", "k. miki" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_187, L_TITLE_188 }, // "s. kojoh", "y. nakano" + + { 1, 1, 0, 0, CREDITSTYLE_C_BIG, L_TITLE_184, L_TITLE_000 }, // "ncl staff", "" + { 1, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_189, L_TITLE_190 }, // "k.yamaguchi", "k. terasaki" + { 0, 0, 0, 0, CREDITSTYLE_C_MED, L_TITLE_191, L_TITLE_192 }, // "m. goto", "super mario club" +#endif + +#if VERSION == VERSION_PAL_FINAL { 1, 0, 1, 0, CREDITSTYLE_L_BIG, L_TITLE_151, L_TITLE_000 }, // "testing (noe)" { 1, 0, 0, 0, CREDITSTYLE_11, L_TITLE_152, L_TITLE_153 }, // "supervisor", "kai 'jellybean' neumann" { 0, 0, 0, 0, CREDITSTYLE_11, L_TITLE_154, L_TITLE_155 }, // "deputy supervisor", "maurice 'pathfinder' tisdale" diff --git a/src/game/file.c b/src/game/file.c index 322240aed..eebec96a0 100644 --- a/src/game/file.c +++ b/src/game/file.c @@ -2025,6 +2025,10 @@ extern void *_file_Acarrbye02M; #if VERSION >= VERSION_NTSC_1_0 extern void *_file_Asaucerexp1M; #endif +#if VERSION >= VERSION_JPN_FINAL +extern void *_file_PjaplogoZ; +extern void *_file_PjappdZ; +#endif extern void *_filenamesSegmentRomStart; #if VERSION < VERSION_NTSC_1_0 @@ -4057,7 +4061,11 @@ void *filetable[] = { #if VERSION >= VERSION_NTSC_1_0 /*0x07dd*/ &_file_Asaucerexp1M, #endif - /*0x07de*/ &_filenamesSegmentRomStart, +#if VERSION == VERSION_JPN_FINAL + /*0x07de*/ &_file_PjaplogoZ, + /*0x07df*/ &_file_PjappdZ, +#endif + &_filenamesSegmentRomStart, }; u32 fileGetRomAddress(s32 filenum) diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index 19817b1be..c980e594d 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -3550,7 +3550,7 @@ void setupLoadFiles(s32 stagenum) g_DoorScale = 1; - for (i = 0; i < ARRAYCOUNT(g_ModelStates); i++) { + for (i = 0; i < NUM_MODELS; i++) { g_ModelStates[i].filedata = NULL; } diff --git a/src/game/game_10c9c0.c b/src/game/game_10c9c0.c index 7ed447791..830b29102 100644 --- a/src/game/game_10c9c0.c +++ b/src/game/game_10c9c0.c @@ -361,7 +361,7 @@ struct menudialogdef g_MpQuickGo4MbMenuDialog = { }; struct menuitem g_MpConfirmChallenge4MbMenuItems[] = { -#if VERSION >= VERSION_PAL_FINAL +#if VERSION == VERSION_PAL_FINAL { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_MPCONFIG, 0x00000000, 0x0000007c, 65, NULL }, #else { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_MPCONFIG, 0x00000000, 0x0000007c, 55, NULL }, diff --git a/src/game/game_1531a0.c b/src/game/game_1531a0.c index 5fb6bcb88..122385d21 100644 --- a/src/game/game_1531a0.c +++ b/src/game/game_1531a0.c @@ -36,10 +36,21 @@ Gfx *var800a4634; u32 var800a4638; u32 var800a463c; +#if VERSION == VERSION_JPN_FINAL +u32 var800800f0jf = 0; s32 g_ScaleX = 1; s32 var8007fac4 = 0; -u32 var8007fac8 = 0x00000000; -u32 var8007facc = 0x00000000; +u32 var8007fac8 = 0; +u32 var8007facc = 0; +u32 var80080104jf = 0; +u32 var80080108jf = 1; +#else +s32 g_ScaleX = 1; +s32 var8007fac4 = 0; +u32 var8007fac8 = 0; +u32 var8007facc = 0; +#endif + u32 var8007fad0 = 0x00000001; u32 var8007fad4 = 0xffffffff; u32 var8007fad8 = 0x00000000; @@ -93,6 +104,18 @@ u32 var8007fb8c = 0xff00ff18; u32 var8007fb90 = 0xff30ff5c; u32 var8007fb94 = 0xff88ffb4; u32 var8007fb98 = 0xffd8ffff; + +#if VERSION == VERSION_JPN_FINAL +u32 var800801d8jf = 0xff00ff11; +u32 var800801dcjf = 0xff22ff33; +u32 var800801e0jf = 0xff44ff55; +u32 var800801e4jf = 0xff66ff77; +u32 var800801e8jf = 0xff88ff99; +u32 var800801ecjf = 0xffaaffbb; +u32 var800801f0jf = 0xffccffdd; +u32 var800801f4jf = 0xffeeffff; +#endif + u32 var8007fb9c = 0x00000000; s32 var8007fba0 = 0; s32 var8007fba4 = -1; diff --git a/src/game/hudmsg.c b/src/game/hudmsg.c index 625ff7437..3c696697f 100644 --- a/src/game/hudmsg.c +++ b/src/game/hudmsg.c @@ -51,14 +51,22 @@ struct sndstate *var800736b0nb = NULL; struct hudmsgtype g_HudmsgTypes[] = { /* 0*/ { 1, 1, 0, &g_CharsHandelGothicSm, &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 80 }, /* 1*/ { 0, 1, 0, &g_CharsHandelGothicMd, &g_FontHandelGothicMd, 0x00ff0000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_YMIDDLE, 0, 0, 120 }, +#if VERSION == VERSION_JPN_FINAL + /* 2*/ { 0, 0, 1, &g_CharsHandelGothicMd, &g_FontHandelGothicMd, 0xff999900, 0xffffffa0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_YMIDDLE, 0, 0, 120 }, +#else /* 2*/ { 0, 0, 1, &g_CharsHandelGothicMd, &g_FontHandelGothicMd, 0xff000000, 0xffffffa0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_YMIDDLE, 0, 0, 120 }, +#endif /* 3*/ { 0, 1, 0, &g_CharsHandelGothicMd, &g_FontHandelGothicMd, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 120 }, /* 4*/ { 1, 1, 0, &g_CharsHandelGothicSm, &g_FontHandelGothicSm, 0x00ffc000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 40 }, /* 5*/ { 0, 0, 0, &g_CharsHandelGothicMd, &g_FontHandelGothicMd, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_TOP, 0, 0, 120 }, /* 6*/ { 1, 0, 0, &g_CharsHandelGothicSm, &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_TOP, 0, 0, 120 }, /* 7*/ { 1, 1, 0, &g_CharsHandelGothicSm, &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_TOP, 0, 0, -1 }, /* 8*/ { 1, 1, 0, &g_CharsHandelGothicSm, &g_FontHandelGothicSm, 0x00ffc000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_BOTTOM, 0, 0, 500 }, +#if VERSION == VERSION_JPN_FINAL + /* 9*/ { 1, 1, 0, &g_CharsHandelGothicSm, &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 120 }, +#else /* 9*/ { 1, 1, 0, &g_CharsHandelGothicXs, &g_FontHandelGothicXs, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 120 }, +#endif /*10*/ { 1, 1, 0, &g_CharsHandelGothicSm, &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_LEFT, HUDMSGALIGN_BOTTOM, 0, 0, 240 }, #if VERSION >= VERSION_NTSC_1_0 /*11*/ { 0, 0, 0, &g_CharsHandelGothicSm, &g_FontHandelGothicSm, 0x00ff0000, 0x000000a0, HUDMSGALIGN_XMIDDLE, HUDMSGALIGN_BELOWVIEWPORT, 0, 0, 120 }, diff --git a/src/game/inventory/items.c b/src/game/inventory/items.c index d16f7a9ff..b8774db5d 100644 --- a/src/game/inventory/items.c +++ b/src/game/inventory/items.c @@ -547,7 +547,11 @@ struct weapon invitem_falcon2 = { 1, // unk38 invf_000113f4, // fptr invpartvisibility_falcon2, // part visibility +#if VERSION == VERSION_JPN_FINAL + L_GUN_257, // short name +#else L_GUN_007, // short name +#endif L_GUN_007, // name L_GUN_150, // manufacturer L_GUN_156, // description @@ -3300,7 +3304,11 @@ struct weapon invitem_ecmmine = { 1, // unk38 NULL, // fptr NULL, // part visibility +#if VERSION >= VERSION_JPN_FINAL + L_GUN_256, // short name +#else L_GUN_041, // short name +#endif L_GUN_041, // name L_GUN_000, // manufacturer L_GUN_188, // description @@ -5672,7 +5680,11 @@ struct weapon invitem_skedarbomb = { 1, // unk38 NULL, // fptr NULL, // part visibility +#if VERSION >= VERSION_JPN_FINAL + L_GUN_259, // short name +#else L_GUN_221, // short name +#endif L_GUN_221, // name L_GUN_000, // manufacturer L_GUN_203, // description @@ -5898,7 +5910,11 @@ struct weapon invitem_suitcase = { 1, // unk38 NULL, // fptr NULL, // part visibility +#if VERSION >= VERSION_JPN_FINAL + L_GUN_258, // short name +#else L_GUN_067, // short name +#endif L_GUN_067, // name L_GUN_000, // manufacturer L_GUN_000, // description diff --git a/src/game/lang.c b/src/game/lang.c index f8c913e9d..b16f3ce0e 100644 --- a/src/game/lang.c +++ b/src/game/lang.c @@ -12,7 +12,7 @@ * PAL ignores this mostly and introduces g_LanguageId. */ #if VERSION >= VERSION_PAL_BETA -bool g_Jpn = false; +bool g_Jpn = VERSION == VERSION_JPN_FINAL ? true : false; u32 var80084664pf = 0; u32 var80084668pf = 0; u32 var8008466cpf = 0; @@ -177,6 +177,8 @@ u32 langGetLangBankIndexFromStagenum(s32 stagenum) #if VERSION == VERSION_JPN_FINAL const char var7f1b8850jf[] = "tmul"; const char var7f1b8858jf[] = "tload"; +u32 var80084810jf = 0; +u32 var80084814jf = 8; GLOBAL_ASM( glabel func0f16e3fc diff --git a/src/game/lv.c b/src/game/lv.c index 73aadcbd1..e355edb2f 100644 --- a/src/game/lv.c +++ b/src/game/lv.c @@ -962,6 +962,11 @@ void lvFindThreats(void) } #if VERSION >= VERSION_JPN_FINAL +u32 var800846d4jf[] = {0, 0, 0, 0x1e000000}; +struct sndstate *g_CutsceneStaticAudioHandle = NULL; +s32 g_CutsceneStaticTimer = 100; +u8 g_CutsceneStaticActive = false; + GLOBAL_ASM( glabel lvRender .late_rodata diff --git a/src/game/mainmenu.c b/src/game/mainmenu.c index 73a9510f0..a40b45141 100644 --- a/src/game/mainmenu.c +++ b/src/game/mainmenu.c @@ -4395,7 +4395,13 @@ struct menudialogdef g_2PMissionControlStyleMenuDialog = { }; struct menuitem g_SoloMissionControlStyleMenuItems[] = { - { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, PAL ? 0x9c : 0x96, menuhandler001024dc }, +#if VERSION == VERSION_JPN_FINAL + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0xbe, menuhandler001024dc }, +#elif PAL + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0x9c, menuhandler001024dc }, +#else + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0x96, menuhandler001024dc }, +#endif { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -4410,7 +4416,13 @@ struct menudialogdef g_SoloMissionControlStyleMenuDialog = { }; struct menuitem g_CiControlStyleMenuItems[] = { - { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, PAL ? 0x9c : 0x96, menuhandler001024dc }, +#if VERSION == VERSION_JPN_FINAL + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0xbe, menuhandler001024dc }, +#elif PAL + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0x9c, menuhandler001024dc }, +#else + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0x96, menuhandler001024dc }, +#endif { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -4425,7 +4437,13 @@ struct menudialogdef g_CiControlStyleMenuDialog = { }; struct menuitem g_CiControlStylePlayer2MenuItems[] = { - { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, PAL ? 0x9c : 0x96, menuhandler001024fc }, +#if VERSION == VERSION_JPN_FINAL + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0xbe, menuhandler001024fc }, +#elif PAL + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0x9c, menuhandler001024fc }, +#else + { MENUITEMTYPE_LIST, 0, 0x00800000, 0x00000028, 0x96, menuhandler001024fc }, +#endif { MENUITEMTYPE_CONTROLLER, 0, 0x00000001, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; @@ -4448,7 +4466,9 @@ struct menuitem g_AudioOptionsMenuItems[] = { { MENUITEMTYPE_SLIDER, 0, 0x00002800, L_OPTIONS_229, 0x7fff, menuhandlerMusicVolume }, // "Music" #endif { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_OPTIONS_230, 0x00000000, menuhandlerSoundMode }, // "Sound Mode" +#if VERSION != VERSION_JPN_FINAL { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS_218, 0x00000000, menuhandlerLangFilter }, // "Language Filter" +#endif #if VERSION >= VERSION_PAL_FINAL { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 200, 0x00000000, NULL }, #else @@ -4476,7 +4496,9 @@ struct menuitem g_2PMissionAudioOptionsVMenuItems[] = { { MENUITEMTYPE_SLIDER, 0, 0x00102800, L_OPTIONS_229, 0x7fff, menuhandlerMusicVolume }, // "Music" #endif { MENUITEMTYPE_DROPDOWN, 0, 0x00000000, L_MPWEAPONS_153, 0x00000000, menuhandlerSoundMode }, // "Mode" +#if VERSION != VERSION_JPN_FINAL { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, L_MPWEAPONS_218, 0x00000000, menuhandlerLangFilter }, // "Language Filter" +#endif { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000008, L_OPTIONS_231, 0x00000000, NULL }, // "Back" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -5771,10 +5793,18 @@ glabel var7f1b2e84 #endif struct menuitem g_SoloMissionInventoryMenuItems[] = { - { MENUITEMTYPE_LIST, 0, 0x00000000, 0x0000006e, 0x00000063, menuhandler00106178 }, +#if VERSION == VERSION_JPN_FINAL + { MENUITEMTYPE_LIST, 0, 0x00000000, 0x0000006e, 0x54, menuhandler00106178 }, +#else + { MENUITEMTYPE_LIST, 0, 0x00000000, 0x0000006e, 0x63, menuhandler00106178 }, +#endif { MENUITEMTYPE_LABEL, 0, 0x00000203, L_OPTIONS_003, (u32)&invMenuTextWeaponManufacturer, NULL }, // "" { MENUITEMTYPE_LABEL, 0, 0x00000302, L_OPTIONS_003, (u32)&invMenuTextWeaponName, NULL }, // "" - { MENUITEMTYPE_MODEL, 0, 0x00000000, 0x0000008c, 0x00000037, NULL }, +#if VERSION >= VERSION_JPN_FINAL + { MENUITEMTYPE_MODEL, 0, 0x00000000, 0x0000008c, 0x14, NULL }, +#else + { MENUITEMTYPE_MODEL, 0, 0x00000000, 0x0000008c, 0x37, NULL }, +#endif { MENUITEMTYPE_LABEL, 0, 0x00000202, L_OPTIONS_003, (u32)&invMenuTextPrimaryFunction, NULL }, // "" { MENUITEMTYPE_LABEL, 0, 0x00000202, L_OPTIONS_003, (u32)&invMenuTextSecondaryFunction, NULL }, // "" { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32)&invMenuTextWeaponDescription, 0x00000000, NULL }, @@ -5797,7 +5827,11 @@ struct menudialogdef g_SoloMissionInventoryMenuDialog = { L_OPTIONS_178, // "Inventory" g_SoloMissionInventoryMenuItems, inventoryMenuDialog, +#if VERSION >= VERSION_JPN_FINAL + MENUDIALOGFLAG_0002 | MENUDIALOGFLAG_DISABLERESIZE | MENUDIALOGFLAG_0400 | MENUDIALOGFLAG_1000, +#else MENUDIALOGFLAG_0002 | MENUDIALOGFLAG_DISABLERESIZE | MENUDIALOGFLAG_0400, +#endif &g_SoloMissionOptionsMenuDialog, }; diff --git a/src/game/menu.c b/src/game/menu.c index 0f59a3fd7..b469b7af6 100644 --- a/src/game/menu.c +++ b/src/game/menu.c @@ -27414,7 +27414,9 @@ struct menudialogdef g_PakDamagedMenuDialog = { struct menuitem g_PakFullMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&menuTextSaveDeviceName, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x02000210, L_MPWEAPONS_071, 0x00000000, NULL }, // "is too full to save note - 1 note and 28 pages required to save" +#if VERSION != VERSION_JPN_FINAL { MENUITEMTYPE_LABEL, 0, 0x02000220, L_OPTIONS_003, 0x00000000, NULL }, // "" +#endif { MENUITEMTYPE_LABEL, 0, 0x02000210, L_MPWEAPONS_072, 0x00000000, NULL }, // "Enter the Controller Pak Menu to free some space (hold START while powering up.)" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, L_MPWEAPONS_073, 0x00000000, NULL }, // "OK" diff --git a/src/game/menuitem.c b/src/game/menuitem.c index 7112063cb..d0a0e4e81 100644 --- a/src/game/menuitem.c +++ b/src/game/menuitem.c @@ -33,7 +33,7 @@ s32 g_ScissorY2 = 0; s32 var800711a0 = 0; s32 var800711a4 = 0; -u32 g_LineHeight = 11; +u32 g_LineHeight = LINEHEIGHT; u8 g_KeyboardKeys[5][10] = { { '0','1','2','3','4','5','6','7','8','9' }, @@ -10561,28 +10561,29 @@ struct lineconfig { #if VERSION >= VERSION_JPN_FINAL struct lineconfig linecfgs[] = { - /* 0*/ { 12, 10, -1, 3 }, - /* 1*/ { 51, 10, -1, 3 }, - /* 2*/ { 12, 3, 75, -1 }, - /* 3*/ { 55, 19, 64, -1 }, - /* 4*/ { 63, 19, -1, 10 }, - /* 5*/ { 63, 10, 75, -1 }, - /* 6*/ { 51, 23, 55, -1 }, - /* 7*/ { 59, 23, 68, -1 }, - /* 8*/ { 67, 23, -1, 17 }, - /* 9*/ { 67, 17, 75, -1 }, - /*10*/ { 55, 27, 72, -1 }, - /*11*/ { 71, 27, -1, 24 }, - /*12*/ { 71, 24, 75, -1 }, - /*13*/ { 49, 31, 75, -1 }, - /*14*/ { 43, 28, -1, 38 }, - /*15*/ { 43, 38, 75, -1 }, - /*16*/ { 30, 35, 37, -1 }, - /*17*/ { 37, 35, -1, 45 }, - /*18*/ { 37, 45, 75, -1 }, - /*19*/ { 34, 52, 75, -1 }, - /*20*/ { 12, 30, -1, 59 }, - /*21*/ { 12, 59, 75, -1 }, + /* 0*/ { 12, 4, -1, 31 }, + /* 1*/ { 51, 4, -1, 31 }, + /* 2*/ { 12, 4, 75, -1 }, + /* 3*/ { 55, 40, 64, -1 }, + /* 4*/ { 63, 40, -1, 16 }, + /* 5*/ { 63, 16, 75, -1 }, + /* 6*/ { 51, 44, 55, -1 }, + /* 7*/ { 59, 44, 68, -1 }, + /* 8*/ { 67, 44, -1, 28 }, + /* 9*/ { 67, 28, 75, -1 }, + /*10*/ { 55, 48, 72, -1 }, + /*11*/ { 71, 48, -1, 40 }, + /*12*/ { 71, 40, 75, -1 }, + /*13*/ { 49, 52, 75, -1 }, + /*14*/ { 43, 49, -1, 64 }, + /*15*/ { 43, 64, 75, -1 }, + /*16*/ { 30, 56, 37, -1 }, + /*17*/ { 37, 56, -1, 76 }, + /*18*/ { 37, 76, 75, -1 }, + /*19*/ { 34, 73, 34, 88 }, + /*20*/ { 34, 88, 75, -1 }, + /*21*/ { 12, 51, -1, 100 }, + /*22*/ { 12, 100, 75, -1 }, }; GLOBAL_ASM( diff --git a/src/game/modeldata/general.c b/src/game/modeldata/general.c index 9a027b47a..982605657 100644 --- a/src/game/modeldata/general.c +++ b/src/game/modeldata/general.c @@ -401,7 +401,7 @@ struct skeleton g_SkelBB = { SKEL_BB, ARRAYCOUNT(g_SkelBBJoints), g_SkelBBJoints, }; -struct modelstate g_ModelStates[441] = { +struct modelstate g_ModelStates[NUM_MODELS] = { // file scale /*0x0000*/ { NULL, FILE_PROOFGUN, 0x0199 }, /*0x0001*/ { NULL, FILE_PGROUNDGUN, 0x0199 }, @@ -844,6 +844,10 @@ struct modelstate g_ModelStates[441] = { /*0x01b6*/ { NULL, FILE_PDD_DR_NONREF, 0x1000 }, /*0x01b7*/ { NULL, FILE_PCETANDOORSIDE, 0x1000 }, /*0x01b8*/ { NULL, FILE_PBUDDYBRIDGE, 0x0199 }, +#if VERSION == VERSION_JPN_FINAL + /*0x01b9*/ { NULL, FILE_PJPNLOGO, 0x1000 }, + /*0x01ba*/ { NULL, FILE_PJPNPD, 0x1000 }, +#endif }; u8 g_PropExplosionTypes[] = { @@ -1295,9 +1299,15 @@ u8 g_PropExplosionTypes[] = { /*0x01bd*/ EXPLOSIONTYPE_0, /*0x01be*/ EXPLOSIONTYPE_0, /*0x01bf*/ EXPLOSIONTYPE_0, + /*0x01c0*/ EXPLOSIONTYPE_0, + /*0x01c1*/ EXPLOSIONTYPE_0, +#if VERSION >= VERSION_JPN_FINAL + /*0x01c2*/ EXPLOSIONTYPE_0, + /*0x01c3*/ EXPLOSIONTYPE_0, +#endif + 0xff, }; -u32 var8007bff4 = 0x0000ff00; u32 var8007bff8 = 0x00000000; u32 var8007bffc = 0x00000000; u32 var8007c000 = 0x00000000; diff --git a/src/game/mplayer/ingame.c b/src/game/mplayer/ingame.c index 674843afb..53389715e 100644 --- a/src/game/mplayer/ingame.c +++ b/src/game/mplayer/ingame.c @@ -399,6 +399,14 @@ struct menudialogdef g_MpEndGameMenuDialog = { }; struct menuitem g_MpPauseControlMenuItems[] = { +#if VERSION == VERSION_JPN_FINAL + { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&mpMenuTextChallengeName, 0x00000000, menuhandler00178018 }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPWEAPONS_162, (u32)&mpMenuTextInGameLimit, menuhandlerMpInGameLimitLabel }, // "Time Limit:" + { MENUITEMTYPE_LABEL, 1, 0x00000010, L_MPWEAPONS_163, (u32)&mpMenuTextInGameLimit, menuhandlerMpInGameLimitLabel }, // "Score Limit:" + { MENUITEMTYPE_LABEL, 2, 0x00000010, L_MPWEAPONS_164, (u32)&mpMenuTextInGameLimit, menuhandlerMpInGameLimitLabel }, // "Team Score Limit:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_286, (u32)&menutextMatchTime, NULL }, // "Game Time:" +#else { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&mpMenuTextChallengeName, 0x00000000, menuhandler00178018 }, { MENUITEMTYPE_LABEL, 0, 0x00000020, (u32)&mpMenuTextScenarioName, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000200, L_MPWEAPONS_162, (u32)&mpMenuTextInGameLimit, menuhandlerMpInGameLimitLabel }, // "Time Limit:" @@ -406,6 +414,7 @@ struct menuitem g_MpPauseControlMenuItems[] = { { MENUITEMTYPE_LABEL, 2, 0x00000200, L_MPWEAPONS_164, (u32)&mpMenuTextInGameLimit, menuhandlerMpInGameLimitLabel }, // "Team Score Limit:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000082, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000000, L_MPMENU_286, (u32)&menutextMatchTime, NULL }, // "Game Time:" +#endif { MENUITEMTYPE_SELECTABLE, 1, 0x00000020, (u32)&menutextPauseOrUnpause, 0x00000000, menuhandlerMpPause }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000024, L_MPMENU_287, 0x00000000, (void *)&g_MpEndGameMenuDialog }, // "End Game" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -413,13 +422,29 @@ struct menuitem g_MpPauseControlMenuItems[] = { struct menudialogdef g_MpPauseControlMenuDialog = { MENUDIALOGTYPE_DEFAULT, +#if VERSION >= VERSION_JPN_FINAL + (u32)&mpMenuTextScenarioName, +#else L_MPMENU_285, // "Control" +#endif g_MpPauseControlMenuItems, NULL, 0, NULL, }; +#if VERSION == VERSION_JPN_FINAL +u32 var80084de8jf[] = { + 0x4c56715b, + 0x6566727a, + 0x835a0000, + 0x4d40595f, + 0x6e716958, + 0x726c7568, + 0x69380000, +}; +#endif + struct menuitem g_Mp2PMissionInventoryMenuItems[] = { { MENUITEMTYPE_LIST, 0, 0x00000000, 0x00000078, 0x00000042, menuhandler00106178 }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32)&mpMenuTextWeaponDescription, 0x00000000, NULL }, @@ -463,7 +488,7 @@ struct menudialogdef g_MpPausePlayerStatsMenuDialog = { (u32)&mpMenuTitleStatsFor, g_MpInGamePlayerStatsMenuItems, NULL, - 0, + VERSION >= VERSION_JPN_FINAL ? MENUDIALOGFLAG_1000 : 0, &g_MpPauseInventoryMenuDialog, }; @@ -472,7 +497,7 @@ struct menudialogdef g_MpEndscreenPlayerStatsMenuDialog = { (u32)&mpMenuTitleStatsFor, g_MpInGamePlayerStatsMenuItems, NULL, - 0, + VERSION >= VERSION_JPN_FINAL ? MENUDIALOGFLAG_1000 : 0, NULL, }; @@ -486,7 +511,7 @@ struct menudialogdef g_MpPausePlayerRankingMenuDialog = { L_MPMENU_276, // "Player Ranking" g_MpPlayerRankingMenuItems, NULL, - 0, + VERSION >= VERSION_JPN_FINAL ? MENUDIALOGFLAG_1000 : 0, &g_MpPausePlayerStatsMenuDialog, }; @@ -495,7 +520,7 @@ struct menudialogdef g_MpEndscreenPlayerRankingMenuDialog = { L_MPMENU_276, // "Player Ranking" g_MpPlayerRankingMenuItems, NULL, - 0, + VERSION >= VERSION_JPN_FINAL ? MENUDIALOGFLAG_1000 : 0, &g_MpEndscreenPlayerStatsMenuDialog, }; @@ -509,7 +534,7 @@ struct menudialogdef g_MpPauseTeamRankingsMenuDialog = { L_MPMENU_279, // "Team Ranking" g_MpTeamRankingsMenuItems, NULL, - 0, + VERSION >= VERSION_JPN_FINAL ? MENUDIALOGFLAG_1000 : 0, &g_MpPausePlayerRankingMenuDialog, }; @@ -518,7 +543,7 @@ struct menudialogdef g_MpEndscreenTeamRankingMenuDialog = { L_MPMENU_279, // "Team Ranking" g_MpTeamRankingsMenuItems, NULL, - 0, + VERSION >= VERSION_JPN_FINAL ? MENUDIALOGFLAG_1000 : 0, &g_MpEndscreenPlayerRankingMenuDialog, }; @@ -856,6 +881,17 @@ void mpPushEndscreenDialog(u32 arg0, u32 playernum) struct menuitem g_MpGameOverMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x01000010, (u32)&mpGetCurrentPlayerName, (u32)&mpMenuTextPlacementWithSuffix, mpPlacementMenuHandler }, +#if VERSION >= VERSION_JPN_FINAL + { MENUITEMTYPE_LABEL, 0, 0x01000020, (u32)&mpMenuTextPlayerTitle, 0, mpPlayerTitleMenuHandler }, // "Title:" + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000210, L_MPMENU_262, 0x00000000, NULL }, // "Weapon of Choice:" + { MENUITEMTYPE_LABEL, 0, 0x00000120, (u32)&mpMenuTextWeaponOfChoiceName, 0x00000000, NULL }, + { MENUITEMTYPE_MODEL, 0, 0x00000002, 0x00000001, 0x00000003, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_MODEL, 0, 0x00200002, 0x00000001, 0x00000002, mpAwardsMenuHandler }, + { MENUITEMTYPE_LABEL, 0, 0x00000100, (u32)&mpMenuTextAward1, 0x00000000, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000100, (u32)&mpMenuTextAward2, 0x00000000, NULL }, +#else { MENUITEMTYPE_LABEL, 0, 0x01000000, L_MPMENU_261, (u32)&mpMenuTextPlayerTitle, mpPlayerTitleMenuHandler }, // "Title:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000210, L_MPMENU_262, 0x00000000, NULL }, // "Weapon of Choice:" @@ -864,6 +900,7 @@ struct menuitem g_MpGameOverMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00200210, L_MPMENU_263, 0x00000000, mpAwardsMenuHandler }, // "Awards:" { MENUITEMTYPE_LABEL, 0, 0x00000120, (u32)&mpMenuTextAward1, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000120, (u32)&mpMenuTextAward2, 0x00000000, NULL }, +#endif { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; diff --git a/src/game/mplayer/mplayer.c b/src/game/mplayer/mplayer.c index 4c8f95bf4..6db57b291 100644 --- a/src/game/mplayer/mplayer.c +++ b/src/game/mplayer/mplayer.c @@ -54,7 +54,7 @@ const char var7f1b8a00[] = "||||||||||||| Starting game... players %d\n"; s32 var80087260 = 0x00000000; bool g_MpEnableMusicSwitching = false; -struct mpweapon g_MpWeapons[0x27] = { +struct mpweapon g_MpWeapons[NUM_MPWEAPONS] = { /*0x00*/ { WEAPON_NONE, 0x00, 0x00, 0x00, 0x00, 1, 0, MODEL_CHRTT33, 0x0100 }, /*0x01*/ { WEAPON_FALCON2, 0x01, 0x50, 0x00, 0x00, 1, 0, MODEL_CHRFALCON2, 0x0100 }, /*0x02*/ { WEAPON_FALCON2_SILENCER, 0x01, 0x50, 0x00, 0x00, 1, MPFEATURE_WEAPON_FALCON2SILENCED, MODEL_CHRFALCON2SIL, 0x0100 }, @@ -80,7 +80,9 @@ struct mpweapon g_MpWeapons[0x27] = { /*0x16*/ { WEAPON_DEVASTATOR, 0x0b, 0x10, 0x00, 0x00, 1, MPFEATURE_WEAPON_DEVASTATOR, MODEL_CHRDEVASTATOR, 0x0100 }, /*0x17*/ { WEAPON_ROCKETLAUNCHER, 0x08, 0x03, 0x00, 0x00, 1, 0, MODEL_CHRDYROCKET, 0x0100 }, /*0x18*/ { WEAPON_SLAYER, 0x08, 0x03, 0x00, 0x00, 1, MPFEATURE_WEAPON_SLAYER, MODEL_CHRSKROCKET, 0x0100 }, +#if VERSION != VERSION_JPN_FINAL /*0x19*/ { WEAPON_COMBATKNIFE, 0x09, 0x05, 0x00, 0x00, 1, 0, MODEL_CHRKNIFE, 0x0100 }, +#endif /*0x1a*/ { WEAPON_CROSSBOW, 0x03, 0x0a, 0x00, 0x00, 1, MPFEATURE_WEAPON_CROSSBOW, MODEL_CHRCROSSBOW, 0x0100 }, /*0x1b*/ { WEAPON_TRANQUILIZER, 0x13, 0x32, 0x00, 0x00, 1, MPFEATURE_WEAPON_TRANQUILIZER, MODEL_CHRDRUGGUN, 0x0100 }, /*0x1c*/ { WEAPON_GRENADE, 0x07, 0x05, 0x00, 0x00, 0, 0, MODEL_CHRGRENADE, 0x0100 }, @@ -93,7 +95,7 @@ struct mpweapon g_MpWeapons[0x27] = { /*0x23*/ { WEAPON_CLOAKINGDEVICE, 0x00, 0x00, 0x00, 0x00, 1, MPFEATURE_WEAPON_CLOAKINGDEVICE, MODEL_CHRCLOAKER, 0x0100 }, /*0x24*/ { WEAPON_COMBATBOOST, 0x00, 0x00, 0x00, 0x00, 1, MPFEATURE_WEAPON_COMBATBOOST, MODEL_CHRSPEEDPILL, 0x0100 }, /*0x25*/ { WEAPON_MPSHIELD, 0x00, 0x00, 0x00, 0x00, 1, MPFEATURE_WEAPON_SHIELD, MODEL_CHRSHIELD, 0x0100 }, - /*0x26*/ { WEAPON_DISABLED, 0x00, 0x00, 0x00, 0x00, 0, 0x00, 0, 0x0000 }, + /*0x26*/ { WEAPON_DISABLED }, }; /** @@ -1864,7 +1866,11 @@ struct mpweaponset g_MpWeaponSets[12] = { { /*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 +#if VERSION == VERSION_JPN_FINAL + { /*0x0b*/ L_MPWEAPONS_044, { WEAPON_TIMEDMINE, WEAPON_CROSSBOW, WEAPON_TIMEDMINE, WEAPON_CROSSBOW, WEAPON_MPSHIELD, WEAPON_DISABLED }, { MPFEATURE_WEAPON_CROSSBOW, 0, 0, 0 }, WEAPON_TIMEDMINE, WEAPON_TIMEDMINE, WEAPON_TIMEDMINE, WEAPON_TIMEDMINE, WEAPON_MPSHIELD, WEAPON_DISABLED }, // Close Combat +#else { /*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 +#endif }; s32 g_MpWeaponSetNum = 0x00000000; @@ -2296,83 +2302,85 @@ struct mphead g_MpBeauHeads[NUM_MPBEAUHEADS] = { { HEAD_BEAU6, 0 }, }; -struct mphead g_MpHeads[75] = { +struct mphead g_MpHeads[NUM_MPHEADS] = { // head, require feature - { /*0x00*/ HEAD_DARK_COMBAT, 0 }, - { /*0x01*/ HEAD_DARK_FROCK, MPFEATURE_CHR_CI }, - { /*0x02*/ HEAD_DARKAQUA, MPFEATURE_CHR_PELAGIC }, - { /*0x03*/ HEAD_DARK_SNOW, MPFEATURE_4A }, - { /*0x04*/ HEAD_ELVIS, MPFEATURE_CHR_ELVIS }, - { /*0x05*/ HEAD_ELVIS_GOGS, MPFEATURE_CHR_ELVIS }, - { /*0x06*/ HEAD_CARRINGTON, 0 }, - { /*0x07*/ HEAD_MRBLONDE, MPFEATURE_CHR_MRBLONDE }, - { /*0x08*/ HEAD_CASSANDRA, 0 }, - { /*0x09*/ HEAD_TRENT, MPFEATURE_CHR_TRENT }, + { /*0x00*/ HEAD_DARK_COMBAT, 0 }, + { /*0x01*/ HEAD_DARK_FROCK, MPFEATURE_CHR_CI }, + { /*0x02*/ HEAD_DARKAQUA, MPFEATURE_CHR_PELAGIC }, + { /*0x03*/ HEAD_DARK_SNOW, MPFEATURE_4A }, + { /*0x04*/ HEAD_ELVIS, MPFEATURE_CHR_ELVIS }, + { /*0x05*/ HEAD_ELVIS_GOGS, MPFEATURE_CHR_ELVIS }, + { /*0x06*/ HEAD_CARRINGTON, 0 }, + { /*0x07*/ HEAD_MRBLONDE, MPFEATURE_CHR_MRBLONDE }, + { /*0x08*/ HEAD_CASSANDRA, 0 }, + { /*0x09*/ HEAD_TRENT, MPFEATURE_CHR_TRENT }, { /*0x0a*/ HEAD_JONATHAN, MPFEATURE_CHR_INFILTRATION }, - { /*0x0b*/ HEAD_VD, 0 }, - { /*0x0c*/ HEAD_PRESIDENT, MPFEATURE_CHR_CI }, - { /*0x0d*/ HEAD_DDSHOCK, 0 }, - { /*0x0e*/ HEAD_BIOTECH, MPFEATURE_CHR_BIOTECH }, - { /*0x0f*/ HEAD_DDSNIPER, MPFEATURE_CHR_VILLACHRS }, + { /*0x0b*/ HEAD_VD, 0 }, + { /*0x0c*/ HEAD_PRESIDENT, MPFEATURE_CHR_CI }, + { /*0x0d*/ HEAD_DDSHOCK, 0 }, + { /*0x0e*/ HEAD_BIOTECH, MPFEATURE_CHR_BIOTECH }, + { /*0x0f*/ HEAD_DDSNIPER, MPFEATURE_CHR_VILLACHRS }, { /*0x10*/ HEAD_A51FACEPLATE, MPFEATURE_CHR_INFILTRATION }, - { /*0x11*/ HEAD_SECRETARY, 0 }, - { /*0x12*/ HEAD_FEM_GUARD, MPFEATURE_CHR_FEMGUARD }, - { /*0x13*/ HEAD_FEM_GUARD2, MPFEATURE_CHR_FEMGUARD }, - { /*0x14*/ HEAD_MAIAN_S, MPFEATURE_CHR_ELVIS }, - { /*0x15*/ HEAD_JON, 0 }, - { /*0x16*/ HEAD_BEAU1, 0 }, - { /*0x17*/ HEAD_ROSS, 0 }, - { /*0x18*/ HEAD_MARK2, 0 }, - { /*0x19*/ HEAD_CHRIST, 0 }, - { /*0x1a*/ HEAD_RUSS, 0 }, - { /*0x1b*/ HEAD_DARLING, 0 }, - { /*0x1c*/ HEAD_BRIAN, 0 }, - { /*0x1d*/ HEAD_JAMIE, 0 }, - { /*0x1e*/ HEAD_DUNCAN2, 0 }, - { /*0x1f*/ HEAD_KEITH, 0 }, - { /*0x20*/ HEAD_STEVEM, 0 }, - { /*0x21*/ HEAD_GRANT, 0 }, - { /*0x22*/ HEAD_PENNY, 0 }, - { /*0x23*/ HEAD_DAVEC, 0 }, - { /*0x24*/ HEAD_JONES, 0 }, - { /*0x25*/ HEAD_GRAHAM, 0 }, - { /*0x26*/ HEAD_ROBERT, 0 }, - { /*0x27*/ HEAD_NEIL2, 0 }, - { /*0x28*/ HEAD_SHAUN, 0 }, - { /*0x29*/ HEAD_ROBIN, 0 }, - { /*0x2a*/ HEAD_COOK, 0 }, - { /*0x2b*/ HEAD_PRYCE, 0 }, - { /*0x2c*/ HEAD_SILKE, 0 }, - { /*0x2d*/ HEAD_SMITH, 0 }, - { /*0x2e*/ HEAD_GARETH, 0 }, - { /*0x2f*/ HEAD_MURCHIE, 0 }, - { /*0x30*/ HEAD_WONG, 0 }, - { /*0x31*/ HEAD_CARTER, 0 }, - { /*0x32*/ HEAD_TINTIN, 0 }, - { /*0x33*/ HEAD_MUNTON, 0 }, - { /*0x34*/ HEAD_STAMPER, 0 }, - { /*0x35*/ HEAD_PHELPS, 0 }, - { /*0x36*/ HEAD_ALEX, 0 }, - { /*0x37*/ HEAD_JULIANNE, 0 }, - { /*0x38*/ HEAD_LAURA, 0 }, - { /*0x39*/ HEAD_EDMCG, 0 }, - { /*0x3a*/ HEAD_ANKA, 0 }, - { /*0x3b*/ HEAD_LESLIE_S, 0 }, - { /*0x3c*/ HEAD_MATT_C, 0 }, - { /*0x3d*/ HEAD_PEER_S, 0 }, - { /*0x3e*/ HEAD_EILEEN_T, 0 }, - { /*0x3f*/ HEAD_ANDY_R, 0 }, - { /*0x40*/ HEAD_BEN_R, 0 }, - { /*0x41*/ HEAD_STEVE_K, 0 }, - { /*0x42*/ HEAD_SANCHEZ, 0 }, - { /*0x43*/ HEAD_TIM, 0 }, - { /*0x44*/ HEAD_KEN, 0 }, - { /*0x45*/ HEAD_EILEEN_H, 0 }, - { /*0x46*/ HEAD_SCOTT_H, 0 }, - { /*0x47*/ HEAD_JOEL, 0 }, - { /*0x48*/ HEAD_GRIFFEY, 0 }, - { /*0x49*/ HEAD_MOTO, 0 }, - { /*0x4a*/ HEAD_WINNER, 0 }, + { /*0x11*/ HEAD_SECRETARY, 0 }, + { /*0x12*/ HEAD_FEM_GUARD, MPFEATURE_CHR_FEMGUARD }, + { /*0x13*/ HEAD_FEM_GUARD2, MPFEATURE_CHR_FEMGUARD }, + { /*0x14*/ HEAD_MAIAN_S, MPFEATURE_CHR_ELVIS }, + { /*0x15*/ HEAD_JON, 0 }, + { /*0x16*/ HEAD_BEAU1, 0 }, + { /*0x17*/ HEAD_ROSS, 0 }, + { /*0x18*/ HEAD_MARK2, 0 }, + { /*0x19*/ HEAD_CHRIST, 0 }, + { /*0x1a*/ HEAD_RUSS, 0 }, + { /*0x1b*/ HEAD_DARLING, 0 }, + { /*0x1c*/ HEAD_BRIAN, 0 }, + { /*0x1d*/ HEAD_JAMIE, 0 }, + { /*0x1e*/ HEAD_DUNCAN2, 0 }, + { /*0x1f*/ HEAD_KEITH, 0 }, + { /*0x20*/ HEAD_STEVEM, 0 }, + { /*0x21*/ HEAD_GRANT, 0 }, + { /*0x22*/ HEAD_PENNY, 0 }, + { /*0x23*/ HEAD_DAVEC, 0 }, + { /*0x24*/ HEAD_JONES, 0 }, + { /*0x25*/ HEAD_GRAHAM, 0 }, + { /*0x26*/ HEAD_ROBERT, 0 }, + { /*0x27*/ HEAD_NEIL2, 0 }, + { /*0x28*/ HEAD_SHAUN, 0 }, + { /*0x29*/ HEAD_ROBIN, 0 }, + { /*0x2a*/ HEAD_COOK, 0 }, + { /*0x2b*/ HEAD_PRYCE, 0 }, + { /*0x2c*/ HEAD_SILKE, 0 }, + { /*0x2d*/ HEAD_SMITH, 0 }, + { /*0x2e*/ HEAD_GARETH, 0 }, + { /*0x2f*/ HEAD_MURCHIE, 0 }, + { /*0x30*/ HEAD_WONG, 0 }, + { /*0x31*/ HEAD_CARTER, 0 }, + { /*0x32*/ HEAD_TINTIN, 0 }, + { /*0x33*/ HEAD_MUNTON, 0 }, + { /*0x34*/ HEAD_STAMPER, 0 }, + { /*0x35*/ HEAD_PHELPS, 0 }, + { /*0x36*/ HEAD_ALEX, 0 }, + { /*0x37*/ HEAD_JULIANNE, 0 }, + { /*0x38*/ HEAD_LAURA, 0 }, + { /*0x39*/ HEAD_EDMCG, 0 }, + { /*0x3a*/ HEAD_ANKA, 0 }, + { /*0x3b*/ HEAD_LESLIE_S, 0 }, + { /*0x3c*/ HEAD_MATT_C, 0 }, + { /*0x3d*/ HEAD_PEER_S, 0 }, + { /*0x3e*/ HEAD_EILEEN_T, 0 }, + { /*0x3f*/ HEAD_ANDY_R, 0 }, + { /*0x40*/ HEAD_BEN_R, 0 }, + { /*0x41*/ HEAD_STEVE_K, 0 }, + { /*0x42*/ HEAD_SANCHEZ, 0 }, + { /*0x43*/ HEAD_TIM, 0 }, + { /*0x44*/ HEAD_KEN, 0 }, + { /*0x45*/ HEAD_EILEEN_H, 0 }, + { /*0x46*/ HEAD_SCOTT_H, 0 }, + { /*0x47*/ HEAD_JOEL, 0 }, + { /*0x48*/ HEAD_GRIFFEY, 0 }, +#if VERSION != VERSION_JPN_FINAL + { /*0x49*/ HEAD_MOTO, 0 }, +#endif + { /*0x4a*/ HEAD_WINNER, 0 }, }; u32 g_BotHeads[] = { @@ -2428,7 +2436,9 @@ u32 g_BotHeads[] = { MPHEAD_SCOTT_H, MPHEAD_JOEL, MPHEAD_GRIFFEY, +#if VERSION != VERSION_JPN_FINAL MPHEAD_MOTO, +#endif }; // 2d74c @@ -2564,7 +2574,9 @@ u32 g_MpMaleHeads[] = { HEAD_KEN, HEAD_SCOTT_H, HEAD_JOEL, +#if VERSION != VERSION_JPN_FINAL HEAD_MOTO, +#endif }; u32 g_MpFemaleHeads[] = { diff --git a/src/game/mplayer/setup.c b/src/game/mplayer/setup.c index d5fb5388d..88e2b7126 100644 --- a/src/game/mplayer/setup.c +++ b/src/game/mplayer/setup.c @@ -1008,7 +1008,9 @@ struct menudialogdef g_MpSavePlayerMenuDialog = { }; struct menuitem g_MpSaveSetupNameMenuItems[] = { +#if VERSION != VERSION_JPN_FINAL { MENUITEMTYPE_LABEL, 0, 0x00000010, L_MPMENU_189, 0x00000000, NULL }, // "Enter a name for your game setup file:" +#endif { MENUITEMTYPE_KEYBOARD, 0, 0x00000000, 0x00000000, 0x00000000, menuhandlerMpSetupName }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; diff --git a/src/game/player.c b/src/game/player.c index 5787295d2..b2b1bae28 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -121,7 +121,10 @@ struct vimode g_ViModes[] = { // | | | | | | | | | cinemaheight // | | | | | | | | | | cinematop // | | | | | | | | | | | -#if VERSION >= VERSION_PAL_FINAL +#if VERSION >= VERSION_JPN_FINAL + { 320, 220, 320, 1, 1, 220, 0, 180, 20, 136, 42 }, // default + { 640, 220, 640, 0.5, 1, 220, 0, 180, 20, 136, 42 }, // hi-res +#elif VERSION >= VERSION_PAL_FINAL { 320, 266, 320, 1, 1, 266, 0, 212, 20, 168, 42 }, // default { 448, 266, 448, 0.71428567171097, 1, 266, 0, 212, 20, 168, 42 }, // hi-res #elif VERSION >= VERSION_PAL_BETA diff --git a/src/game/propobj.c b/src/game/propobj.c index bee538343..74b2091bc 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -220,7 +220,7 @@ u32 var80069a70 = 0x42b40000; u32 var80069a74 = 0x3f800000; u32 var80069a78 = 0x40000000; -#if VERSION >= VERSION_PAL_BETA +#if PAL u32 var80069a7c = 0x3a9d4952; u32 var80069a80 = 0x3f99999a; u32 var80069a84 = 0x3bcddaca; diff --git a/src/game/sparks/sparks.c b/src/game/sparks/sparks.c index cfebc93fd..3b5ef7192 100644 --- a/src/game/sparks/sparks.c +++ b/src/game/sparks/sparks.c @@ -41,7 +41,7 @@ struct sparktype g_SparkTypes[] = { // | max age // | | decel // | | | -#if VERSION >= VERSION_PAL_BETA +#if PAL /*0x00*/ { 100, 28, 100, 1, 0, 0, 2.4, 50, 50, 15, 1, 0xffff80ff, 0xffffffff, 0.024 }, /*0x00*/ { 100, 28, 100, 1, 0, 0, 2.4, 50, 50, 15, 1, 0x80ffffff, 0xffffffff, 0.024 }, /*0x00*/ { 40, -1, 30, 30, 0, 0, 2.4, 29, 29, 5, 1, 0x301010ff, 0x401010ff, 0.024 }, diff --git a/src/game/title.c b/src/game/title.c index e1373cb72..67f559376 100644 --- a/src/game/title.c +++ b/src/game/title.c @@ -63,6 +63,11 @@ u32 var80062500 = 0x00000000; u32 var80062504 = 0x00000000; struct model *g_TitleModelPdTwo = NULL; struct model *g_TitleModelPdThree = NULL; + +#if VERSION == VERSION_JPN_FINAL +u32 var800623f0jf[4] = {0}; +#endif + u32 var80062510 = 0x00000000; u32 var80062514 = 0x00000000; u32 var80062518 = 0x96969600; @@ -75,6 +80,11 @@ u32 var8006252c = 0x00000000; Lights1 var80062530 = gdSPDefLights1(0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); Lights1 var80062548 = gdSPDefLights1(0x3f, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); Lights1 var80062560 = gdSPDefLights1(0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); + +#if VERSION == VERSION_JPN_FINAL +u32 var80062468jf[6] = {0xffffff00, 0xffffff00 }; +#endif + Lights1 var80062578 = gdSPDefLights1(0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f); Lights1 var80062590 = gdSPDefLights1(0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); @@ -97,6 +107,21 @@ u32 var800625e4 = 0xffffff00; u32 var800625e8 = 0x00007f00; u32 var800625ec = 0x00000000; +#if VERSION == VERSION_JPN_FINAL +u32 var800624f8jf = 0; +u32 var800624fcjf = 0; +u32 var80062500jf = 0; +u32 var80062504jf = 0; +u32 var80062508jf = 0x00007f00; +u32 var8006250cjf = 0; +u32 var80062510jf = 0; +u32 var80062514jf = 0; +u32 var80062518jf = 0; +u32 var8006251cjf = 0; +u32 var80062520jf = 0x00007f00; +u32 var80062524jf = 0; +#endif + char *mpPlayerGetWeaponOfChoiceName(u32 playernum, u32 slot) { char *name; @@ -448,6 +473,29 @@ struct legalelement { }; struct legalelement g_LegalElements[] = { +#if VERSION == VERSION_JPN_FINAL + { 49, 163, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_077 }, // "Nintendo 64 Product Identification" + { 49, 184, 1, 1, LEGALELEMENTTYPE_LINE, 0 }, + { 69, 191, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_078 }, // "Product ID:" + { 69, 211, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_079 }, // "Product Code:" + { 69, 231, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_080 }, // "Variant:" + { 69, 251, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_081 }, // "Developer:" + { 249, 191, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_082 }, // "Perfect Dark" + { 249, 211, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_083 }, // "NUS-NPDE-USA" + { 249, 231, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_084 }, // "NTSC version 8.7 final" + { 249, 251, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_085 }, // "Rare Ltd. (twycross)" + { 69, 274, 1, 1, LEGALELEMENTTYPE_LINE, 0 }, + { 69, 283, 0, 1, LEGALELEMENTTYPE_WHITETEXTLG, L_OPTIONS_076 }, // "N64 EXPANSION PAK" + { -1, 283, 0, 1, LEGALELEMENTTYPE_WHITETEXTLG, L_OPTIONS_074 }, // "NOT DETECTED" + { 69, 304, 1, 1, LEGALELEMENTTYPE_LINE, 0 }, + { 69, 312, 0, 1, LEGALELEMENTTYPE_BLUETEXTMD, L_OPTIONS_087 }, // "The Rarewere Logo and Perfect Dark are ..." + { 69, 328, 0, 1, LEGALELEMENTTYPE_BLUETEXTMD, L_MPWEAPONS_280 }, // "Perfect Dark Registered Trademark No..." + { 138, 343, 0, 1, LEGALELEMENTTYPE_BLUETEXTMD, L_OPTIONS_088 }, // "Presented in Dolby Surround. Dolby and ..." + { 69, 372, 0, 1, LEGALELEMENTTYPE_BLUETEXTMD, L_OPTIONS_089 }, // "Uses Miles Sound System ..." + { 69, 428, 1, 1, LEGALELEMENTTYPE_LINE, 0 }, + { 69, 433, 0, 1, LEGALELEMENTTYPE_BLUETEXTSM, L_OPTIONS_093 }, // "rare designs on the future <<<" + { 69, 343, 0, 1, LEGALELEMENTTYPE_DOLBYLOGO, 0 }, +#else { 49, 179, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_077 }, // "Nintendo 64 Product Identification" { 49, 200, 1, 1, LEGALELEMENTTYPE_LINE, 0 }, { 69, 207, 1, 1, LEGALELEMENTTYPE_BLUETEXTLG, L_OPTIONS_078 }, // "Product ID:" @@ -474,6 +522,7 @@ struct legalelement g_LegalElements[] = { { 69, 428, 1, 1, LEGALELEMENTTYPE_LINE, 0 }, { 69, 433, 0, 1, LEGALELEMENTTYPE_BLUETEXTSM, L_OPTIONS_093 }, // "rare designs on the future <<<" { 69, 344, 0, 1, LEGALELEMENTTYPE_DOLBYLOGO, 0 }, +#endif }; #if VERSION >= VERSION_JPN_FINAL @@ -1608,6 +1657,8 @@ u32 var80062760 = 0; u32 var80062764 = 0; #if VERSION >= VERSION_JPN_FINAL +struct coord var800624a4jf = {0}; + GLOBAL_ASM( glabel titleInitPdLogo .late_rodata @@ -10031,7 +10082,6 @@ u32 var8006292c = 0x00000001; u32 var80062930 = 0x00000001; u32 var80062934 = 0x00000001; u32 var80062938 = 0x00000000; -u32 var8006293c = 0x00000000; s32 getNumPlayers(void) { diff --git a/src/game/training/menus.c b/src/game/training/menus.c index 5e31ccf82..9a6265dd3 100644 --- a/src/game/training/menus.c +++ b/src/game/training/menus.c @@ -1747,11 +1747,17 @@ struct menudialogdef g_HtDetailsMenuDialog = { struct menuitem g_HtFailedMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU_426, 0x00000000, NULL }, // "Failed!" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU_424, (u32)&htMenuTextTimeTakenValue, NULL }, // "Time Taken:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP1, 0x00000000, 0x00000082, PAL ? 110 : 100, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, +#if VERSION >= VERSION_JPN_FINAL + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP1, 0x00000000, 0x00000082, 120, NULL }, +#elif PAL + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP1, 0x00000000, 0x00000082, 110, NULL }, +#else + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP1, 0x00000000, 0x00000082, 100, NULL }, +#endif + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialogdef g_HtFailedMenuDialog = { @@ -1765,11 +1771,17 @@ struct menudialogdef g_HtFailedMenuDialog = { struct menuitem g_HtCompletedMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU_425, 0x00000000, NULL }, // "Completed!" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU_424, (u32)&htMenuTextTimeTakenValue, NULL }, // "Time Taken:" - { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP2, 0x00000000, 0x00000082, PAL ? 110 : 100, NULL }, - { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, + { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, +#if VERSION >= VERSION_JPN_FINAL + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP2, 0x00000000, 0x00000082, 120, NULL }, +#elif PAL + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP2, 0x00000000, 0x00000082, 110, NULL }, +#else + { MENUITEMTYPE_SCROLLABLE, DESCRIPTION_HOLOTIP2, 0x00000000, 0x00000082, 100, NULL }, +#endif + { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menudialogdef g_HtCompletedMenuDialog = { diff --git a/src/game/training/training.c b/src/game/training/training.c index 8a0da243d..4912c3b85 100644 --- a/src/game/training/training.c +++ b/src/game/training/training.c @@ -10880,6 +10880,14 @@ const char var7f1ba170[] = "%s"; const char var7f1ba174[] = "%s"; const char var7f1ba178[] = "\n"; +u32 var800898c8jf[] = { + L_MISC_423, // "ZONE 3" + L_MISC_424, // "ZONE 2" + L_MISC_425, // "ZONE 1" + L_MISC_426, // "BULL'S-EYE" + L_MISC_427, // "EXPLODED" +}; + GLOBAL_ASM( glabel frGetFeedback .late_rodata diff --git a/src/include/constants.h b/src/include/constants.h index c50449295..c63b8febd 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -2045,6 +2045,9 @@ #define MODEL_DD_DR_NONREF 0x01b6 #define MODEL_CETANDOORSIDE 0x01b7 #define MODEL_BUDDYBRIDGE 0x01b8 +#define MODEL_JPNLOGO 0x01b9 +#define MODEL_JPNPD 0x01ba +#define NUM_MODELS (VERSION == VERSION_JPN_FINAL ? 0x1bb : 0x1b9) #define MODELNODETYPE_CHRINFO 0x01 #define MODELNODETYPE_POSITION 0x02 @@ -2867,6 +2870,7 @@ #define MPWEAPON_COMBATBOOST (VERSION == VERSION_JPN_FINAL ? 0x23 : 0x24) #define MPWEAPON_SHIELD (VERSION == VERSION_JPN_FINAL ? 0x24 : 0x25) #define MPWEAPON_DISABLED (VERSION == VERSION_JPN_FINAL ? 0x25 : 0x26) +#define NUM_MPWEAPONS (VERSION == VERSION_JPN_FINAL ? 0x26 : 0x27) #define MUSICEVENTTYPE_PLAY 1 #define MUSICEVENTTYPE_STOP 2 diff --git a/src/include/data.h b/src/include/data.h index b86f0bf55..a0dedcbb1 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -349,7 +349,7 @@ extern struct skeleton g_SkelTarget; extern struct skeleton g_SkelRareLogo; extern struct skeleton g_SkelWireFence; extern struct skeleton g_SkelBB; -extern struct modelstate g_ModelStates[441]; +extern struct modelstate g_ModelStates[NUM_MODELS]; extern u8 g_PropExplosionTypes[]; extern struct skeleton g_SkelBasic; extern struct skeleton g_SkelChrGun; @@ -499,8 +499,8 @@ extern struct menudialogdef g_MpScenarioMenuDialog; extern struct menudialogdef g_MpQuickTeamScenarioMenuDialog; extern s32 var80087260; extern bool g_MpEnableMusicSwitching; -extern struct mpweapon g_MpWeapons[0x27]; -extern struct mphead g_MpHeads[75]; +extern struct mpweapon g_MpWeapons[NUM_MPWEAPONS]; +extern struct mphead g_MpHeads[NUM_MPHEADS]; extern struct botprofile g_BotProfiles[18]; extern struct mpbody g_MpBodies[NUM_MPBODIES]; extern struct mppreset g_MpPresets[NUM_MPPRESETS]; diff --git a/src/include/files.h b/src/include/files.h index c6a7c2451..8f0b1af3f 100644 --- a/src/include/files.h +++ b/src/include/files.h @@ -2011,3 +2011,5 @@ #define FILE_AP16_03_JOM 0x07db #define FILE_ACARRBYE02M 0x07dc #define FILE_ASAUCEREXP1M 0x07dd +#define FILE_PJPNLOGO 0x07de +#define FILE_PJPNPD 0x07df