Wii PAL d_s_logo improvements (#3157)

* Wii PAL d_s_logo improvements

* Fix d_s_logo/d_pane_class_alpha sdata spltis

* Specify some symbols to improve matches

Is there a better way to do this?

* More symbols

* match phase_1

* Fix regressions

* Fix d_s_name rodata split

* Add nextPauseTimer__9dScnPly_c to symbol map
This commit is contained in:
Pieter-Jan Briers
2026-06-20 02:46:30 +02:00
committed by GitHub
parent 853a6addb4
commit 79fda477b1
9 changed files with 171 additions and 26 deletions
+4 -3
View File
@@ -1354,7 +1354,7 @@ d/d_pane_class.cpp:
d/d_pane_class_alpha.cpp:
.text start:0x802410A0 end:0x80241CA8
.data start:0x80406F90 end:0x80406FD0
.sdata start:0x805200E0 end:0x80520104
.sdata start:0x805200E0 end:0x805200E8
.sdata2 start:0x805255B0 end:0x805255D0
d/d_pane_class_ex.cpp:
@@ -1363,10 +1363,10 @@ d/d_pane_class_ex.cpp:
d/d_s_logo.cpp:
.text start:0x80241CE0 end:0x80243FE4
.ctors start:0x803B919C end:0x803B91A0
.rodata start:0x803D9C10 end:0x803D9C80
.rodata start:0x803D9C10 end:0x803D9C68
.data start:0x80406FD0 end:0x80407578
.bss start:0x804A5778 end:0x804A5788
.sdata start:0x80520104 end:0x80520110
.sdata start:0x805200E8 end:0x80520110
.sbss start:0x805215B0 end:0x805215B8
.sdata2 start:0x805255D0 end:0x80525600
@@ -1376,6 +1376,7 @@ d/d_s_menu.cpp:
d/d_s_name.cpp:
.text start:0x80243FE4 end:0x80244BE8
.ctors start:0x803B91A0 end:0x803B91A4
.rodata start:0x803D9C68 end:0x803D9C80
.data start:0x804075A0 end:0x804076B0
.bss start:0x804A5788 end:0x804A5798
.sdata start:0x80520110 end:0x80520148
+43 -11
View File
@@ -20523,7 +20523,7 @@ lbl_803EA3BC = .data:0x803EA3BC; // type:object size:0x13 data:string
@111989 = .data:0x803EA3D0; // type:object size:0xC scope:local align:4
lbl_803EA3DC = .data:0x803EA3DC; // type:object size:0x13 data:string
lbl_803EA3EF = .data:0x803EA3EF; // type:object size:0x15 data:string
lbl_803EA404 = .data:0x803EA404; // type:object size:0xD data:string
@STRING@setObjectRes__14dRes_control_cFPCcUcP7JKRHeap = .data:0x803EA404; // type:object size:0xD data:string
ZeroQuat = .data:0x803EA418; // type:object size:0x10 scope:global align:4
__vt__10CSTControl = .data:0x803EA428; // type:object size:0x10 scope:global align:4
lbl_803EA438 = .data:0x803EA438; // type:object size:0xB data:string
@@ -22408,14 +22408,49 @@ lbl_80406FA0 = .data:0x80406FA0; // type:object size:0x12 data:string
__vt__13CPaneMgrAlpha = .data:0x80406FC0; // type:object size:0x10 scope:global align:4
...data.0 = .data:0x80406FD0; // type:label scope:local align:4
l_execFunc = .data:0x80406FD0; // type:object size:0xF0 scope:global align:4
lbl_804070C0 = .data:0x804070C0; // type:object size:0x3C
@s_LogoGmWii = .data:0x804070C0; // type:object size:0xA scope:local data:string
@s_LogoFrWii = .data:0x804070CA; // type:object size:0xA scope:local data:string
@s_LogoSpWii = .data:0x804070D4; // type:object size:0xA scope:local data:string
@s_LogoItWii = .data:0x804070DE; // type:object size:0xA scope:local data:string
@s_LogoDuWii = .data:0x804070E8; // type:object size:0xA scope:local data:string
@s_LogoUkWii = .data:0x804070F2; // type:object size:0xA scope:local data:string
l_method$96196 = .data:0x804070FC; // type:object size:0xC scope:local align:4
lbl_80407108 = .data:0x80407108; // type:object size:0x1D data:string
lbl_80407125 = .data:0x80407125; // type:object size:0x1D data:string
lbl_80407142 = .data:0x80407142; // type:object size:0x1D data:string
lbl_8040715F = .data:0x8040715F; // type:object size:0x1D data:string
lbl_8040717C = .data:0x8040717C; // type:object size:0x1D data:string
lbl_80407199 = .data:0x80407199; // type:object size:0x343
lbl_80407199 = .data:0x80407199; // type:object size:0x1D data:string
@s__res_FieldMap_Field0_arc = .data:0x804071B6; // type:object size:0x19 scope:local data:string
@s__res_Object_AlAnm_arc = .data:0x804071CF; // type:object size:0x16 scope:local data:string
@s__res_LayoutRevo_fmapresR_arc = .data:0x804071E5; // type:object size:0x1D scope:local data:string
@s__res_LayoutRevo_dmapresR_arc = .data:0x80407202; // type:object size:0x1D scope:local data:string
@s__res_LayoutRevo_clctresR_arc = .data:0x8040721F; // type:object size:0x1D scope:local data:string
@s__res_Layout_itemicon_arc = .data:0x8040723C; // type:object size:0x19 scope:local data:string
@s__res_LayoutRevo_ringresR_arc = .data:0x80407255; // type:object size:0x1D scope:local data:string
@s__res_Layout_playerName_arc = .data:0x80407272; // type:object size:0x1B scope:local data:string
@s__res_LayoutRevo_itmInfResR_arc = .data:0x8040728D; // type:object size:0x1F scope:local data:string
@s__res_LayoutRevo_buttonR_arc = .data:0x804072AC; // type:object size:0x1C scope:local data:string
@s__res_WiiBannerIcon_bannerIcon_ = .data:0x804072C8; // type:object size:0x22 scope:local data:string
@s__res_Msgde_bmgres_arc = .data:0x804072EA; // type:object size:0x16 scope:local data:string
@s__res_Msgfr_bmgres_arc = .data:0x80407300; // type:object size:0x16 scope:local data:string
@s__res_Msgsp_bmgres_arc = .data:0x80407316; // type:object size:0x16 scope:local data:string
@s__res_Msgit_bmgres_arc = .data:0x8040732C; // type:object size:0x16 scope:local data:string
@s__res_Msguk_bmgres_arc = .data:0x80407342; // type:object size:0x16 scope:local data:string
@s__res_LayoutRevo_msgcomR_arc = .data:0x80407358; // type:object size:0x1C scope:local data:string
@s__res_LayoutRevo_msgres00R_arc = .data:0x80407374; // type:object size:0x1E scope:local data:string
@s__res_LayoutRevo_msgres01R_arc = .data:0x80407392; // type:object size:0x1E scope:local data:string
@s__res_LayoutRevo_msgres02R_arc = .data:0x804073B0; // type:object size:0x1E scope:local data:string
@s__res_LayoutRevo_msgres03R_arc = .data:0x804073CE; // type:object size:0x1E scope:local data:string
@s__res_Layout_msgres04F_arc = .data:0x804073EC; // type:object size:0x1A scope:local data:string
@s__res_Layout_msgres05_arc = .data:0x80407406; // type:object size:0x19 scope:local data:string
@s__res_Layout_msgres06_arc = .data:0x8040741F; // type:object size:0x19 scope:local data:string
@s__res_LayoutRevo_main2DR_arc = .data:0x80407438; // type:object size:0x1C scope:local data:string
@s__res_Fonteu_fontres_arc = .data:0x80407454; // type:object size:0x18 scope:local data:string
@s__res_Fonteu_rubyres_arc = .data:0x8040746C; // type:object size:0x18 scope:local data:string
@s__res_Particle_common_r_jpc = .data:0x80407484; // type:object size:0x1B scope:local data:string
@s__res_ItemTable_item_table_bin = .data:0x8040749F; // type:object size:0x1E scope:local data:string
@s__res_ItemTable_enemy_table_bin = .data:0x804074BD; // type:object size:0x1F scope:local data:string
l_dScnLogo_Method = .data:0x804074DC; // type:object size:0x14 scope:global align:4
g_profile_LOGO_SCENE = .data:0x804074F0; // type:object size:0x28 scope:global align:4
@99263 = .data:0x80407518; // type:object size:0x1C scope:local align:4
@@ -25757,10 +25792,7 @@ lbl_8051E433 = .sdata:0x8051E433; // type:object size:0x8 data:string
lbl_8051E43B = .sdata:0x8051E43B; // type:object size:0x7 data:string
lbl_8051E442 = .sdata:0x8051E442; // type:object size:0x5 data:string
lbl_8051E447 = .sdata:0x8051E447; // type:object size:0x8 data:string
g_blackColor = .sdata:0x8051E44F; // type:object size:0x1 data:byte
lbl_8051E450 = .sdata:0x8051E450; // type:object size:0x1 data:byte
lbl_8051E451 = .sdata:0x8051E451; // type:object size:0x1 data:byte
lbl_8051E452 = .sdata:0x8051E452; // type:object size:0x1 data:byte
g_blackColor = .sdata:0x8051E44F; // type:object size:0x4 data:4byte
lbl_8051E453 = .sdata:0x8051E453; // type:object size:0x1 data:byte
lbl_8051E454 = .sdata:0x8051E454; // type:object size:0x1 data:byte
lbl_8051E455 = .sdata:0x8051E455; // type:object size:0x1 data:byte
@@ -27450,10 +27482,10 @@ __float_nan = .sdata:0x80520EB8; // type:object size:0x4 scope:global align:4 da
__float_huge = .sdata:0x80520EBC; // type:object size:0x4 scope:global align:4 data:float
SendCount = .sdata:0x80520EC0; // type:object size:0x1 data:byte
m_myObj__13dHomeButton_c = .sbss:0x80520EE0; // type:object size:0x4 scope:global align:4 data:4byte
lbl_80520EE4 = .sbss:0x80520EE4; // type:object size:0x1 data:byte
lbl_80520EE5 = .sbss:0x80520EE5; // type:object size:0x1 data:byte
lbl_8053A724__13dHomeButton_c = .sbss:0x80520EE4; // type:object size:0x1 data:byte
lbl_8053A725__13dHomeButton_c = .sbss:0x80520EE5; // type:object size:0x1 data:byte
m_myObj__10dCsr_mng_c = .sbss:0x80520EE8; // type:object size:0x4 scope:global align:4 data:4byte
lbl_80520EF0 = .sbss:0x80520EF0; // type:object size:0x8 data:byte
data_8053a730 = .sbss:0x80520EF0; // type:object size:0x1 data:byte
lbl_80520EF8 = .sbss:0x80520EF8; // type:object size:0x1 data:byte
sPowerOnTime__7mDoMain = .sbss:0x80520F00; // type:object size:0x8 scope:global align:4 data:4byte
sHungUpTime__7mDoMain = .sbss:0x80520F08; // type:object size:0x8 scope:global align:4 data:4byte
@@ -27883,7 +27915,7 @@ resPreLoadTime0 = .sbss:0x805215E0; // type:object size:0x8 scope:global align:4
resPreLoadTime1 = .sbss:0x805215E8; // type:object size:0x8 scope:global align:4 data:4byte
g_preLoadHIO = .sbss:0x805215F0; // type:object size:0x4 scope:global align:4
pauseTimer__9dScnPly_c = .sbss:0x805215F4; // type:object size:0x1 data:byte
lbl_805215F5 = .sbss:0x805215F5; // type:object size:0x1 data:byte
nextPauseTimer__9dScnPly_c = .sbss:0x805215F5; // type:object size:0x1 data:byte
g_regHIO = .sbss:0x805215F8; // type:object size:0x4 scope:global align:4
m_nowID__9dkWmark_c = .sbss:0x80521600; // type:object size:0x4 scope:global align:4 data:4byte
lbl_80521604 = .sbss:0x80521604; // type:object size:0x1 data:byte
+1 -1
View File
@@ -149,7 +149,7 @@ public:
/* 0x200 */ dDlst_2D_c* mNvLogo;
/* 0x204 */ dDlst_2D_c* mMocImg;
#endif
#if VERSION == VERSION_GCN_PAL
#if REGION_PAL
/* 0x1FC */ mDoDvdThd_mountArchive_c* mpPalLogoResCommand;
#endif
/* 0x1FC */ request_of_phase_process_class* m_preLoad_dylPhase;
+3 -1
View File
@@ -255,7 +255,9 @@ public:
static void onWide();
static void offWide();
static u8 isWide();
inline static u8 isWide() {
return mWide == TRUE;
}
static void onWideZoom();
static void offWideZoom();
+3
View File
@@ -17,6 +17,9 @@ void mDoMch_HeapFreeFillAll();
int mDoMch_Create();
extern GXRenderModeObj g_ntscZeldaProg;
#if VERSION == VERSION_WII_PAL
extern GXRenderModeObj g_palZeldaProg60;
#endif
class mDoMch_render_c {
public:
+1
View File
@@ -185,6 +185,7 @@ BOOL SCGetIdleMode(SCIdleModeInfo* data);
u8 SCGetLanguage(void);
u8 SCGetProgressiveMode(void);
void SCSetProgressiveMode(u8 mode);
void SCSetEuRgb60Mode(u8 mode);
u8 SCGetScreenSaverMode(void);
u8 SCGetSoundMode(void);
u32 SCGetCounterBias(void);
+114 -6
View File
@@ -381,7 +381,7 @@ void dScnLogo_c::progOutDraw() {
dComIfGd_set2DOpa(mProgressiveNo);
if (mTimer == 0) {
#if VERSION == VERSION_GCN_PAL
#if REGION_PAL
if (field_0x218 == 1 && field_0x209 == 0)
#else
if (field_0x218 != 0 && field_0x209 == 0)
@@ -497,7 +497,7 @@ void dScnLogo_c::warningDispDraw() {
field_0x210--;
}
#if PLATFORM_WII
#if PLATFORM_WII && VERSION != VERSION_WII_PAL
if (mTimer == 0 || cAPICPad_A_TRIGGER(PAD_1) || cAPICPad_B_TRIGGER(PAD_1) || cAPICPad_START_TRIGGER(PAD_1))
#else
if (mTimer == 0 || mDoCPd_c::getTrig(PAD_1) &
@@ -796,15 +796,32 @@ dScnLogo_c::~dScnLogo_c() {
#if PLATFORM_WII || PLATFORM_SHIELD
switch (getPalLanguage()) {
#if REGION_PAL
case 1:
dComIfG_deleteObjectResMain("LogoGmWii");
break;
#endif
case 2:
dComIfG_deleteObjectResMain("LogoFrWii");
break;
case 3:
dComIfG_deleteObjectResMain("LogoSpWii");
break;
#if REGION_PAL
case 4:
dComIfG_deleteObjectResMain("LogoItWii");
break;
case 5:
dComIfG_deleteObjectResMain("LogoDuWii");
break;
#endif
case 0:
default:
#if REGION_PAL
dComIfG_deleteObjectResMain("LogoUkWii");
#else
dComIfG_deleteObjectResMain("LogoUsWii");
#endif
break;
}
#else
@@ -992,6 +1009,27 @@ static int phase_1(dScnLogo_c* i_this) {
int rt;
#if PLATFORM_WII || PLATFORM_SHIELD
switch (i_this->getPalLanguage()) {
#if REGION_PAL
case 1:
rt = dComIfG_setObjectRes("LogoGmWii", (u8)0, i_this->mLogoHeap);
break;
case 2:
rt = dComIfG_setObjectRes("LogoFrWii", (u8)0, i_this->mLogoHeap);
break;
case 3:
rt = dComIfG_setObjectRes("LogoSpWii", (u8)0, i_this->mLogoHeap);
break;
case 4:
rt = dComIfG_setObjectRes("LogoItWii", (u8)0, i_this->mLogoHeap);
break;
case 5:
rt = dComIfG_setObjectRes("LogoDuWii", (u8)0, i_this->mLogoHeap);
break;
case 0:
default:
rt = dComIfG_setObjectRes("LogoUkWii", (u8)0, i_this->mLogoHeap);
break;
#else
case 0:
default:
rt = dComIfG_setObjectRes("LogoUsWii", (u8)0, i_this->mLogoHeap);
@@ -1002,6 +1040,7 @@ static int phase_1(dScnLogo_c* i_this) {
case 3:
rt = dComIfG_setObjectRes("LogoSpWii", (u8)0, i_this->mLogoHeap);
break;
#endif
}
#else
rt = dComIfG_setObjectRes(LOGO_ARC, (u8)0, i_this->mLogoHeap);
@@ -1111,6 +1150,12 @@ int dScnLogo_c::create() {
}
#if PLATFORM_WII || PLATFORM_SHIELD
#if REGION_PAL
static const u8 logoIndexes[6] = {4, 4, 4, 4, 4, 4};
static const u8 widescreenLogoIndexes[6] = {3, 3, 3, 3, 3, 3};
#endif
void dScnLogo_c::logoInitWii() {
u8 language = getPalLanguage();
if (language > 5) {
@@ -1120,11 +1165,48 @@ void dScnLogo_c::logoInitWii() {
ResTIMG* timg;
s16 width;
s16 height;
#if REGION_PAL
int index;
if (mDoGph_gInf_c::isWide()) {
width = 832;
index = widescreenLogoIndexes[language];
height = FB_HEIGHT;
} else {
width = FB_WIDTH_BASE;
index = logoIndexes[language];
height = FB_HEIGHT;
}
switch (language) {
case 1:
timg = (ResTIMG*)dComIfG_getObjectRes("LogoGmWii", index);
break;
case 2:
timg = (ResTIMG*)dComIfG_getObjectRes("LogoFrWii", index);
break;
case 3:
timg = (ResTIMG*)dComIfG_getObjectRes("LogoSpWii", index);
break;
case 4:
timg = (ResTIMG*)dComIfG_getObjectRes("LogoItWii", index);
break;
case 0:
timg = (ResTIMG*)dComIfG_getObjectRes("LogoUkWii", index);
break;
case 5:
timg = (ResTIMG*)dComIfG_getObjectRes("LogoDuWii", index);
break;
}
#else
if (mDoGph_gInf_c::isWide()) {
switch (language) {
case 0:
default:
#if PLATFORM_SHIELD
timg = (ResTIMG*)dComIfG_getObjectRes("LogoUsWii", 3);
#else
timg = (ResTIMG*)dComIfG_getObjectRes("LogoUsWii", dRes_ID_LOGOUSWII_BTI_STRAP_16_9_832X456_US_e);
#endif
break;
case 2:
timg = (ResTIMG*)dComIfG_getObjectRes("LogoFrWii", 3);
@@ -1140,7 +1222,11 @@ void dScnLogo_c::logoInitWii() {
switch (language) {
case 0:
default:
#if PLATFORM_SHIELD
timg = (ResTIMG*)dComIfG_getObjectRes("LogoUsWii", 4);
#else
timg = (ResTIMG*)dComIfG_getObjectRes("LogoUsWii", dRes_ID_LOGOUSWII_BTI_STRAP_608X456_US_e);
#endif
break;
case 2:
timg = (ResTIMG*)dComIfG_getObjectRes("LogoFrWii", 4);
@@ -1154,6 +1240,7 @@ void dScnLogo_c::logoInitWii() {
width = FB_WIDTH_BASE;
height = FB_HEIGHT;
}
#endif
JUT_ASSERT(2309, timg != NULL);
mStrapImg = new dDlst_2D_c(timg, (FB_WIDTH_BASE / 2) - (width / 2), (FB_HEIGHT_BASE / 2) - (height / 2), width, height, 255);
@@ -1313,11 +1400,20 @@ void dScnLogo_c::dvdDataLoad() {
static const homeBtnData l_homeBtnData[] = {
{SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
#if REGION_PAL
{SC_LANG_GERMAN, "/res/HomeBtn/homeBtn_GER.arc"},
#else
{SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
#endif
{SC_LANG_FRENCH, "/res/HomeBtn/homeBtn_FRA.arc"},
{SC_LANG_SPANISH, "/res/HomeBtn/homeBtn_SPA.arc"},
#if REGION_PAL
{SC_LANG_ITALIAN, "/res/HomeBtn/homeBtn_ITA.arc"},
{SC_LANG_DUTCH, "/res/HomeBtn/homeBtn_NED.arc"},
#else
{SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
{SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
#endif
{SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
};
@@ -1355,7 +1451,7 @@ void dScnLogo_c::dvdDataLoad() {
mpButtonCommand = aramMount(BUTTON_RES_PATH, mDoExt_getJ2dHeap());
mpCardIconCommand = aramMount(ICON_RES_PATH, mDoExt_getJ2dHeap());
#if VERSION == VERSION_GCN_PAL
#if REGION_PAL
switch (getPalLanguage()) {
case 1:
mpBmgResCommand = onMemMount("/res/Msgde/bmgres.arc");
@@ -1408,7 +1504,7 @@ void dScnLogo_c::dvdDataLoad() {
#if VERSION == VERSION_GCN_JPN
mpFontResCommand = mDoDvdThd_mountXArchive_c::create("/res/Fontjp/fontres.arc", 1, JKRArchive::MOUNT_MEM, NULL);
mpRubyResCommand = onMemMount("/res/Fontjp/rubyres.arc");
#elif VERSION == VERSION_GCN_PAL
#elif REGION_PAL
mpFontResCommand = onMemMount("/res/Fonteu/fontres.arc");
mpRubyResCommand = onMemMount("/res/Fonteu/rubyres.arc");
#elif VERSION == VERSION_SHIELD_DEBUG
@@ -1564,7 +1660,9 @@ void dScnLogo_c::setProgressiveMode(u8 mode) {
return;
#endif
#if PLATFORM_WII
#if VERSION == VERSION_WII_PAL
SCSetEuRgb60Mode(mode);
#elif PLATFORM_WII
SCSetProgressiveMode(mode);
#elif VERSION == VERSION_GCN_PAL
OSSetEuRgb60Mode(mode);
@@ -1574,7 +1672,9 @@ void dScnLogo_c::setProgressiveMode(u8 mode) {
}
u8 dScnLogo_c::getProgressiveMode() {
#if PLATFORM_WII || PLATFORM_SHIELD
#if VERSION == VERSION_WII_PAL
return SCGetEuRgb60Mode();
#elif PLATFORM_WII || PLATFORM_SHIELD
return SCGetProgressiveMode();
#endif
@@ -1594,6 +1694,14 @@ bool dScnLogo_c::isProgressiveMode() {
}
void dScnLogo_c::setRenderMode() {
#if VERSION == VERSION_WII_PAL
if (VIGetDTVStatus() != 0) {
if (SCGetProgressiveMode() == 1) {
mDoMch_render_c::setRenderModeObj(&g_palZeldaProg60);
return;
}
}
#endif
mDoMch_render_c::setProgressiveMode();
}
-4
View File
@@ -578,10 +578,6 @@ BOOL mDoGph_gInf_c::isWideZoom() {
return isWide() && mWideZoom;
}
u8 mDoGph_gInf_c::isWide() {
return mWide == TRUE;
}
void mDoGph_gInf_c::setWideZoomProjection(Mtx44& m) {
if (!isWideZoom()) {
return;
+2
View File
@@ -250,7 +250,9 @@ GXRenderModeObj g_ntscZeldaProg = {
#if DEBUG
static void myGXVerifyCallback(GXWarningLevel, u32, const char*);
#endif
#if DEBUG || VERSION == VERSION_WII_PAL
GXRenderModeObj g_palZeldaProg60 = {
VI_TVMODE_EURGB60_PROG,
640, 456, 456, 25, 12, 670, 456,