diff --git a/README.md b/README.md index 26c49ce7..3415a3d7 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,9 @@ Supported versions: - `GMPE01_00`: Rev 0 (USA) - `GMPE01_01`: Rev 1 (USA) +- `GMPP01_00`, Rev 0 (PAL) +- `GMPP01_02`, REV 2 (PAL) +- `GMPJ01_00`, REV 0 (JP) Dependencies ============ diff --git a/include/ovl_table.h b/include/ovl_table.h index fcf4747c..fe695ea9 100644 --- a/include/ovl_table.h +++ b/include/ovl_table.h @@ -71,7 +71,7 @@ OVL_DEFINE(OVL_M461, "dll/m461dll.rel") OVL_DEFINE(OVL_M462, "dll/m462dll.rel") OVL_DEFINE(OVL_M463, "dll/m463dll.rel") OVL_DEFINE(OVL_MENT, "dll/mentdll.rel") -#if VERSION_JPN +#if VERSION_JP OVL_DEFINE(OVL_MGMODE, "dll/mgmodedll.rel") OVL_DEFINE(OVL_MODELTEST, "dll/modeltestdll.rel") OVL_DEFINE(OVL_MODESEL, "dll/modeseldll.rel") diff --git a/include/version.h b/include/version.h index 379389bb..209a7d53 100644 --- a/include/version.h +++ b/include/version.h @@ -5,14 +5,14 @@ #define VERSION_NO_ENG1 1 #define VERSION_NO_PAL0 2 #define VERSION_NO_PAL2 3 -#define VERSION_NO_JAP 4 +#define VERSION_NO_JP 4 #define VERSION_ENG (VERSION == VERSION_NO_ENG0 || VERSION == VERSION_NO_ENG1) #define VERSION_PAL (VERSION == VERSION_NO_PAL0 || VERSION == VERSION_NO_PAL2) -#define VERSION_JPN (VERSION == VERSION_NO_JAP) +#define VERSION_JP (VERSION == VERSION_NO_JP) #define VERSION_NTSC (!VERSION_PAL) -#define VERSION_REV0 (VERSION == VERSION_NO_ENG0 || VERSION == VERSION_NO_PAL0 || VERSION == VERSION_NO_JAP) +#define VERSION_REV0 (VERSION == VERSION_NO_ENG0 || VERSION == VERSION_NO_PAL0 || VERSION == VERSION_NO_JP) #define VERSION_REV1 (!VERSION_REV0) #if VERSION_PAL diff --git a/src/game/board/main.c b/src/game/board/main.c index a1a904e3..119780c2 100644 --- a/src/game/board/main.c +++ b/src/game/board/main.c @@ -1988,7 +1988,7 @@ void BoardLast5GfxInit(void) } else { prio = 1400; } -#if !VERSION_JPN +#if !VERSION_JP spr_file = last5GfxSprTbl[i]; if(i == 2 && work->is_last && GWLanguageGet() != 0) { spr_file = DATA_MAKE_NUM(DATADIR_BOARD, 98); diff --git a/src/game/board/player.c b/src/game/board/player.c index c73efa85..c54b318e 100644 --- a/src/game/board/player.c +++ b/src/game/board/player.c @@ -137,7 +137,7 @@ static s32 bowserSuitCharMdlTbl[] = { static s32 bowserSuitMotTbl[] = { DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x19), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1A), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1B), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1E), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 0x1F) }; -#if VERSION_JPN +#if VERSION_JP static s32 sparkMotTbl[] = { DATA_MAKE_NUM(DATADIR_BOARD, 0x94), DATA_MAKE_NUM(DATADIR_BOARD, 0x95), @@ -2512,7 +2512,7 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam) BoardCameraMotionWait(); BoardCameraTargetPlayerSet(player); BoardPlayerIdleSet(player); - temp_r28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, VERSION_JPN ? 0x73 : 0x74), NULL, 0); + temp_r28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, VERSION_JP ? 0x73 : 0x74), NULL, 0); BoardModelMotionStart(temp_r28, 0, 0x40000002); BoardModelMotionTimeSet(temp_r28, 30.0f); BoardModelAttrSet(temp_r28, 0x40000002); @@ -2520,7 +2520,7 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam) BoardModelScaleSet(temp_r28, 2.0f, 2.0f, 2.0f); BoardModelVisibilitySet(temp_r28, 0); BoardModelLayerSet(temp_r28, 1); - sp2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, VERSION_JPN ? 0x66 : 0x67), NULL, 0); + sp2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, VERSION_JP ? 0x66 : 0x67), NULL, 0); BoardModelLayerSet(sp2E, 1); BoardModelMotionStart(sp2E, 0, 0); HuAudFXPlay(796); diff --git a/src/game/gamework.c b/src/game/gamework.c index 2a074800..68c1783c 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -54,7 +54,7 @@ void GWInit(void) _InitFlag(); GWErase(); InitPlayerConfig(); -#if VERSION_JPN +#if VERSION_JP GWGameStat.language = 0; #elif VERSION_ENG GWGameStat.language = 1; @@ -131,7 +131,7 @@ void GWGameStatReset(void) GameStat *game_stat = &GWGameStatDefault; memset(game_stat, 0, sizeof(GameStat)); game_stat->unk_00 = 0; -#if VERSION_JPN +#if VERSION_JP game_stat->language = 0; #elif VERSION_ENG game_stat->language = 1; diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index ee3d52df..1bdf7b50 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -808,7 +808,7 @@ static s32 SeqMakeWord(SeqWork *work, char *str, s16 flags) s16 x; s16 i; s16 grp_idx; -#if VERSION_JPN +#if VERSION_JP char *str_ptr; AnimData **char_anim; s16 *char_pos; @@ -832,7 +832,7 @@ static s32 SeqMakeWord(SeqWork *work, char *str, s16 flags) x = 0; len = 0; while (*str_ptr != '\0') { -#if VERSION_JPN +#if VERSION_JP if (*str_ptr == ' ') { x += 56; } @@ -876,26 +876,26 @@ static AnimData *SeqLoadFontChar(char *str, s16 flags) if (c == 222 || c == 223) { return NULL; } -#if !VERSION_JPN +#if !VERSION_JP if (c == 32) { return HuSprAnimRead(SeqReadFile(DATA_MAKE_NUM(DATADIR_GAMEMES, 10))); } #endif for (id = 0, list = seqFontAlphaTbl; *list != 0; id++, list++) { if (*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 20 : 21)); + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 20 : 21)); return HuSprAnimRead(SeqReadFile(data_num)); } } for (id = 0, list = seqFontNumTbl; *list != 0; id++, list++) { if (*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 10 : 11)); + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 10 : 11)); return HuSprAnimRead(SeqReadFile(data_num)); } } for (id = 0, list = seqPunctTbl; *list != 0; id++, list++) { if (*list == c) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 153 : 154)); + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 153 : 154)); return HuSprAnimRead(SeqReadFile(data_num)); } } @@ -916,10 +916,10 @@ static AnimData *SeqLoadFontChar(char *str, s16 flags) while (*list != 0) { if (*list == c) { if (flags & 0x1) { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 155 : 156)); + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 155 : 156)); } else { - data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JPN ? 72 : 73)); + data_num = DATA_MAKE_NUM(DATADIR_GAMEMES, id + (VERSION_JP ? 72 : 73)); } return HuSprAnimRead(SeqReadFile(data_num)); } @@ -2685,7 +2685,7 @@ static char *winCharNameTbl[] = { "ワリオ", "WARIO", "ドンキー", - VERSION_JPN ? "DK" : " DK ", + VERSION_JP ? "DK" : " DK ", "デイジー", "DAISY", "ワルイージ", @@ -2695,21 +2695,21 @@ static char *winCharNameTbl[] = { "キノピオ", "TOAD", "ヘイホー", - VERSION_JPN ? "HEHOH" : "SHY GUY", + VERSION_JP ? "HEHOH" : "SHY GUY", "テレサ", - VERSION_JPN ? "TERETHA" : "BOO", + VERSION_JP ? "TERETHA" : "BOO", "ノコノコ", - VERSION_JPN ? "NOKONOKO" : "KOOPA", + VERSION_JP ? "NOKONOKO" : "KOOPA", "ミニクッパ", VERSION_NTSC ? (VERSION_ENG ? "KOOPA KID" : "BABYBOWSER") : "MINI BOWSER", "クリボー", - VERSION_JPN ? "KURIBO" : "GOOMBA", + VERSION_JP ? "KURIBO" : "GOOMBA", }; static char *winWordTbl[] = { "カチ", "WON!", "ハイボク", "LOSE", "ユウショウ!", "CHAMPION!" }; static s16 winPosOfs[][5][2] = { - { { VERSION_JPN ? 144 : 114, 0 }, { -144, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + { { VERSION_JP ? 144 : 114, 0 }, { -144, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, { { 0, 35 }, { -144, -35 }, { 144, -35 }, { 0, 0 }, { 0, 0 } }, { { 0, 105 }, { 0, -105 }, { -144, 0 }, { 144, 0 }, { 0, 0 } }, { { 0, 105 }, { -144, -105 }, { 144, -105 }, { -144, 0 }, { 144, 0 } }, @@ -2745,15 +2745,15 @@ s32 MGSeqInitWin(SeqWork *work, va_list params) } } word_grp = SeqMakeWord(work, winWordTbl[word_idx], GET_WIN_KANAF()); - winnerNameW[0] = work->word_len * (VERSION_JPN ? 56 : 50); -#if !VERSION_JPN + winnerNameW[0] = work->word_len * (VERSION_JP ? 56 : 50); +#if !VERSION_JP for (i = 0; i < work->word_len; i++) { HuSprPosSet(work->spr_grp[word_grp], i, 25.0f + ((i * 50) - (0.5f * (work->word_len * 50))), 0.0f); HuSprAttrSet(work->spr_grp[word_grp], i, HUSPR_ATTR_LINEAR); } #endif num_winners = 0; -#if !VERSION_JPN +#if !VERSION_JP work->win_scale = 1.0f; #endif for (j = 0; j < 4; j++) { @@ -2855,7 +2855,7 @@ s32 MGSeqInitWin(SeqWork *work, va_list params) work->type = 0; for (j = 0; j < num_winners + 1; j++) { if (num_winners == 1) { -#if VERSION_JPN +#if VERSION_JP word_x = 32 + (winnerNameW[1] + winnerNameW[0]); #else word_x = 32.0f + ((float)winnerNameW[0] + (winnerNameW[1] * work->win_scale)); diff --git a/src/game/saveload.c b/src/game/saveload.c index f756d77e..df1e5d6e 100644 --- a/src/game/saveload.c +++ b/src/game/saveload.c @@ -35,7 +35,7 @@ s32 saveExecF; u8 curBoxNo; s16 curSlotNo; -#if VERSION_JPN +#if VERSION_JP static u8 commentTbl[2][32] = { "マリオパーティ4", "??月??日 データ?です。" }; static u8 sjisNumTbl[20] = "0123456789"; #else @@ -48,7 +48,7 @@ s32 SaveEnableF = 1; static char *SlotNameTbl[] = { "A", "B" }; -#if VERSION_JPN +#if VERSION_JP static char *slotIconMesTbl[] = { "\x0E\x16", "\x0E\x17" }; static u8 sjisSpace[] = " "; #endif @@ -498,7 +498,7 @@ s32 SLSave(void) #define SAVEWIN_POS 120 #endif -#if VERSION_JPN +#if VERSION_JP #define SAVEWIN_MESS slotIconMesTbl #else #define SAVEWIN_MESS SlotNameTbl diff --git a/src/game/sreset.c b/src/game/sreset.c index 44679b73..10d49ef4 100644 --- a/src/game/sreset.c +++ b/src/game/sreset.c @@ -22,7 +22,7 @@ extern s32 HuDvdErrWait; static s32 SR_PreRstChk[4] = {}; -#if VERSION_JPN +#if VERSION_JP static s32 padding[4] = {}; #endif diff --git a/src/game/window.c b/src/game/window.c index c4806b31..ac3be92e 100644 --- a/src/game/window.c +++ b/src/game/window.c @@ -91,7 +91,7 @@ u8 charWETbl[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0 17, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; -#elif VERSION_JPN +#elif VERSION_JP u8 charWETbl[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 8, 11, 12, 13, 12, 11, 11, 12, 11, 18, 20, 12, 12, 11, 14, 8, 13, 12, 12, 12, 12, 12, 12, 12, 9, 11, 12, 11, 15, 12, 13, 12, 13, 12, 12, 11, 12, 11, 15, 12, 13, 11, 12, 6, 8, 8, 12, 20, 12, 11, 12, 11, 11, 9, 12, 11, 4, 8, 11, 4, 14, 11, 12, 11, 12, 9, 11, 9, 11, 11, 15, @@ -257,7 +257,7 @@ s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame) sprite_ptr->work[0] = window_id; HuSprGrpMemberSet(group, 1, sprite); window->num_chars = 0; -#if VERSION_JPN +#if VERSION_JP window->max_chars = (w / 20) * (h / 24) * 3; #else window->max_chars = (w / 8) * (h / 24) * 4; @@ -290,7 +290,7 @@ s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame) window->scissor_h = 0x1E0; window->tab_w = 24; window->push_key = 0x300; -#if !VERSION_JPN +#if !VERSION_JP window->key_auto = 0; #endif if (frame == 0 || frame == 2) { @@ -425,12 +425,12 @@ static void MesDispFunc(HuSprite *sprite) MTXConcat(*sprite->group_mtx, modelview, modelview); GXLoadPosMtxImm(modelview, 0); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - HuSprTexLoad(fontAnim, 0, 0, GX_CLAMP, GX_CLAMP, VERSION_JPN ? GX_NEAR : GX_LINEAR); + HuSprTexLoad(fontAnim, 0, 0, GX_CLAMP, GX_CLAMP, VERSION_JP ? GX_NEAR : GX_LINEAR); GXBegin(GX_QUADS, GX_VTXFMT0, window->num_chars * 4); char_uv_h = (LanguageNo == 0) ? (24.0f / 408.0f) : (24.0f / 312.0f); for (i = 0; i < window->num_chars; i++) { char_w = fontWidthP[window->char_data[i].character + 48]; -#if VERSION_JPN +#if VERSION_JP uv_minx = 0.003125 + (20.0f / 320.0f) * (window->char_data[i].character % 16); #else uv_minx = (20.0f / 320.0f) * (window->char_data[i].character % 16); @@ -605,9 +605,9 @@ static void HuWinDrawMes(s16 window) s16 color; s16 mess_w; - window_ptr->mess_time += VERSION_JPN ? 1 : 3; + window_ptr->mess_time += VERSION_JP ? 1 : 3; while (window_ptr->mess_time >= window_ptr->speed || (window_ptr->attr & 0x2000)) { -#if VERSION_JPN +#if VERSION_JP window_ptr->mess_time = 0; #else window_ptr->mess_time -= window_ptr->speed; @@ -634,7 +634,7 @@ static void HuWinDrawMes(s16 window) } window_ptr->mess_stackptr--; window_ptr->mess = window_ptr->mess_stack[window_ptr->mess_stackptr]; -#if !VERSION_JPN +#if !VERSION_JP window_ptr->mess_time = 0; #endif break; @@ -1108,14 +1108,14 @@ static void HuWinChoice(WindowData *window) window->choice = choice_next; HuAudFXPlay(0); } - else if (key & (VERSION_JPN ? PAD_BUTTON_A : (window->key_auto | PAD_BUTTON_A))) { + else if (key & (VERSION_JP ? PAD_BUTTON_A : (window->key_auto | PAD_BUTTON_A))) { HuAudFXPlay(2); window->key_down = key; window->stat = 0; } else if ((key & PAD_BUTTON_B) && !(window->attr & 0x10)) { HuAudFXPlay(3); -#if !VERSION_JPN +#if !VERSION_JP window->key_down = key; #else (void)key; // hack to match Japanese version @@ -1324,7 +1324,7 @@ void HuWinMesSet(s16 window, u32 mess) window_ptr->mess = MessData_MesPtrGet(messDataPtr, mess); if (window_ptr->mess == 0) { OSReport("Error: No Message data\n"); -#if !VERSION_JPN +#if !VERSION_JP HuWinMesSet(window, 0); return; #endif @@ -1335,7 +1335,7 @@ void HuWinMesSet(s16 window, u32 mess) } if (!(window_ptr->attr & 0x80)) { window_ptr->mess_color = 7; -#if !VERSION_JPN +#if !VERSION_JP window_ptr->mess_time = 0; #endif }