From 39e9768da4c9cb2883fc38e9f7665c51cd90b9e7 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 24 Jan 2022 21:44:50 +1000 Subject: [PATCH] Attempt to decompile menuRenderBanner --- src/game/camdraw.c | 14 +-- src/game/filemgr.c | 4 +- src/game/game_01bea0.c | 2 +- src/game/game_0f09f0.c | 189 ++++++++++++++++++++++++++++----- src/game/pak/pak.c | 62 +++++------ src/include/constants.h | 12 +++ src/include/game/game_0f09f0.h | 6 +- src/include/types.h | 4 +- 8 files changed, 222 insertions(+), 71 deletions(-) diff --git a/src/game/camdraw.c b/src/game/camdraw.c index fd12ea184..9ea4730f6 100644 --- a/src/game/camdraw.c +++ b/src/game/camdraw.c @@ -1603,7 +1603,7 @@ void func0f14bdbc(s32 index) if (value == 4 || value == 5) { thing->unk0f4 = 6; g_MpPlayerNum = index; - func0f0f0ca0(-1, false); + menuSetBanner(-1, false); thing2 = func0f14a06c(-1); thing2->unk3f4_00 = false; @@ -1678,7 +1678,7 @@ void func0f14bec8(s32 index) func0f14bc04(); pak0f11d478(func0f14a5a4()); g_MpPlayerNum = index; - func0f0f0ca0(-1, false); + menuSetBanner(-1, false); func0f14a678(); thing2->unk3f4_00 = true; g_MpPlayerNum = index; @@ -1783,7 +1783,7 @@ void func0f14c4c0(s32 index) var8007f8dc[index].unk0f4 = 4; g_MpPlayerNum = index; - func0f0f0ca0(2, false); + menuSetBanner(MENUBANNER_DOWNLOADINGIMAGE, false); } GLOBAL_ASM( @@ -2166,7 +2166,7 @@ glabel var7f1b734c /* f14cf74: 3c018007 */ lui $at,%hi(g_MpPlayerNum) /* f14cf78: ac201448 */ sw $zero,%lo(g_MpPlayerNum)($at) /* f14cf7c: 2404ffff */ addiu $a0,$zero,-1 -/* f14cf80: 0fc3c328 */ jal func0f0f0ca0 +/* f14cf80: 0fc3c328 */ jal menuSetBanner /* f14cf84: 00002825 */ or $a1,$zero,$zero /* f14cf88: 0fc52969 */ jal func0f14a5a4 /* f14cf8c: 00000000 */ nop @@ -2208,7 +2208,7 @@ glabel var7f1b734c /* f14d01c: 3c018007 */ lui $at,%hi(g_MpPlayerNum) /* f14d020: ac201448 */ sw $zero,%lo(g_MpPlayerNum)($at) /* f14d024: 2404ffff */ addiu $a0,$zero,-1 -/* f14d028: 0fc3c328 */ jal func0f0f0ca0 +/* f14d028: 0fc3c328 */ jal menuSetBanner /* f14d02c: 00002825 */ or $a1,$zero,$zero .L0f14d030: /* f14d030: 0fc52969 */ jal func0f14a5a4 @@ -2238,7 +2238,7 @@ void func0f14d064(s32 index, u8 *arg1) thing->unk064 = 0x2000; thing->unk060 = 6; g_MpPlayerNum = index; - func0f0f0ca0(1, false); + menuSetBanner(MENUBANNER_CALIBRATINGCAMERA, false); func0f14a16c(1); pak0f1171b4(func0f14a5a4(), 1, 1); thing->unk0f8 = 3; @@ -2283,7 +2283,7 @@ void func0f14d064(s32 index, u8 *arg1) thing->unk0f8 = 6; thing->unk100 = thing->unk0fc; g_MpPlayerNum = index; - func0f0f0ca0(-1, 0); + menuSetBanner(-1, false); pak0f1171b4(func0f14a5a4(), 3, 0); var8007f8dc[var800a45a0->unk000].unk0d4_04 = true; thing->unk0f8 = 0; diff --git a/src/game/filemgr.c b/src/game/filemgr.c index 36cf02e28..746cd4132 100644 --- a/src/game/filemgr.c +++ b/src/game/filemgr.c @@ -451,7 +451,7 @@ char *filemgrMenuTextFileType(struct menuitem *item) void func0f10898c(void) { - func0f0f0ca0(-1, false); + menuSetBanner(-1, false); switch (g_Menus[g_MpPlayerNum].fm.fileop) { case FILEOP_WRITE_GAME: @@ -478,7 +478,7 @@ void func0f10898c(void) void filemgrHandleSuccess(void) { - func0f0f0ca0(-1, false); + menuSetBanner(-1, false); switch (g_Menus[g_MpPlayerNum].fm.fileop) { case FILEOP_WRITE_GAME: diff --git a/src/game/game_01bea0.c b/src/game/game_01bea0.c index 5749425bc..af0021655 100644 --- a/src/game/game_01bea0.c +++ b/src/game/game_01bea0.c @@ -719,7 +719,7 @@ void menuTick(void) || g_MenuData.unk5d5_05 || g_MenuData.unk5d4 || g_Menus[mpindex].curdialog - || g_MenuData.unk01b != -1) { + || g_MenuData.bannernum != -1) { g_Vars.players[i]->menuisactive = true; } else { g_Vars.players[i]->menuisactive = false; diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 0b51a9a35..78e09b541 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -139,7 +139,6 @@ const struct menucolourpalette g_MenuColourPalettes3[] = { }; #if VERSION >= VERSION_NTSC_1_0 -const u32 var7f1b23e8[] = {0x544d0000}; char *g_StringPointer = g_CheatMarqueeString; char *g_StringPointer2 = &g_CheatMarqueeString[PAL ? 150 : 125]; #endif @@ -263,27 +262,19 @@ bool func0f0f0c68(void) return true; } -void func0f0f0ca0(s32 value, bool allplayers) +void menuSetBanner(s32 bannernum, bool allplayers) { if (allplayers) { - g_MenuData.unk01b = value; + g_MenuData.bannernum = bannernum; return; } - g_Menus[g_MpPlayerNum].unkdf8 = value; + g_Menus[g_MpPlayerNum].bannernum = bannernum; } -u32 var8007144c = 0x51e451e5; -u32 var80071450 = 0x51e651e7; -u32 var80071454 = 0x51e851e9; -u32 var80071458 = 0x51ea51eb; -u32 var8007145c = 0x51ec51ed; -u32 var80071460 = 0x51ee0000; -u32 var80071464 = 0x00000000; - #if VERSION >= VERSION_PAL_FINAL GLOBAL_ASM( -glabel menuRenderBannerMessages +glabel menuRenderBanner /* f0f1408: 27bdff70 */ addiu $sp,$sp,-144 /* f0f140c: 8fae00a4 */ lw $t6,0xa4($sp) /* f0f1410: afb10038 */ sw $s1,0x38($sp) @@ -706,7 +697,7 @@ glabel menuRenderBannerMessages ); #elif VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( -glabel menuRenderBannerMessages +glabel menuRenderBanner /* f0f0ce8: 27bdff70 */ addiu $sp,$sp,-144 /* f0f0cec: 8fae00a4 */ lw $t6,0xa4($sp) /* f0f0cf0: afb10038 */ sw $s1,0x38($sp) @@ -1125,7 +1116,7 @@ glabel menuRenderBannerMessages ); #else GLOBAL_ASM( -glabel menuRenderBannerMessages +glabel menuRenderBanner /* f0ed9ec: 27bdff68 */ addiu $sp,$sp,-152 /* f0ed9f0: 8fae00ac */ lw $t6,0xac($sp) /* f0ed9f4: afb30040 */ sw $s3,0x40($sp) @@ -1479,6 +1470,154 @@ glabel menuRenderBannerMessages ); #endif +u32 var8007144c = 0x51e451e5; +u32 var80071450 = 0x51e651e7; +u32 var80071454 = 0x51e851e9; +u32 var80071458 = 0x51ea51eb; +u32 var8007145c = 0x51ec51ed; +u32 var80071460 = 0x51ee0000; + +const char var7f1b23e8[] = "TM"; + +// Mismatch: Regalloc at first y calculation. Note that the calculation of tmp +// is postponed until later (tmp is eventually stored in a compiler-managed +// stack slot). +//#if VERSION >= VERSION_NTSC_1_0 +//Gfx *menuRenderBanner(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, bool big, s32 msgnum, s32 arg7, s32 arg8) +//#else +//Gfx *menuRenderBanner(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, bool big, s32 msgnum) +//#endif +//{ +// s32 tmp; +// s32 x; // 88 +// s32 y; // 84 +// s32 texttop; // 80 +// s32 textheight; // 7c +// s32 textwidth; // 78 +// s32 waitheight; // 74 +// s32 waitwidth; // 70 +// s32 bannertop; // 6c +// s32 bannerbottom; // 68 +// struct fontchar *chars; // 64 +// struct font *font; // 60 +// +// static u16 msgs[] = { +// L_MPMENU_484, // "Searching for Camera!" +// L_MPMENU_485, // "Calibrating Camera" +// L_MPMENU_486, // "Downloading Image" +// L_MPMENU_487, // "Loading Image" +// L_MPMENU_488, // "Saving Image" +// L_MPMENU_489, // "Transferring Image" +// L_MPMENU_490, // "Uploading Segment" +// L_MPMENU_491, // "Checking Controller Pak" +// L_MPMENU_492, // "Getting PerfectHead" +// L_MPMENU_493, // "Saving PerfectHead" +// L_MPMENU_494, // "Auto Camera Adjustment" +// }; +// +// chars = g_CharsHandelGothicSm; +// font = g_FontHandelGothicSm; +// +// if (big) { +//#if VERSION >= VERSION_PAL_FINAL +// if (g_CharsHandelGothicMd) { +// chars = g_CharsHandelGothicMd; +// font = g_FontHandelGothicMd; +// } +//#else +// chars = g_CharsHandelGothicMd; +// font = g_FontHandelGothicMd; +//#endif +// } +// +//#if VERSION >= VERSION_NTSC_1_0 +// tmp = x1 + arg7 + x2 - arg8; +// tmp /= 2; +//#else +// tmp = x1 + x2; +// tmp /= 2; +//#endif +// +// y = y1 + y2; +// y /= 2; +// +// textMeasure(&textheight, &textwidth, langGet(msgs[msgnum]), chars, font, 0); +// +// // "Please Wait..." +// textMeasure(&waitheight, &waitwidth, langGet(L_MPMENU_495), chars, font, 0); +// +//#if VERSION >= VERSION_NTSC_1_0 +// if (msgs[msgnum] == L_MPMENU_491) { // "Checking Controller Pak" +// // Add space for "TM" +// textwidth += 7; +// } +//#endif +// +// texttop = y - (textheight + waitheight) / 2; +// bannertop = texttop - 4; +// bannerbottom = texttop + textheight + waitheight + 7; +// +// y = texttop; +// +// // Black fill +// gdl = gfxSetPrimColour(gdl, 0x0000007f); +// gDPFillRectangleScaled(gdl++, x1, y1, x2, y2); +// gdl = func0f153838(gdl); +// +// // Dark blue fill +// gdl = gfxSetPrimColour(gdl, 0x00007f7f); +// gDPFillRectangleScaled(gdl++, x1, bannertop, x2, bannerbottom); +// gdl = func0f153838(gdl); +// +// // Top and bottom borders (light blue) +// gdl = gfxSetPrimColour(gdl, 0x7f7fff7f); +// gDPFillRectangleScaled(gdl++, x1, bannerbottom + 2, x2, bannerbottom + 4); +// gDPFillRectangleScaled(gdl++, x1, bannertop - 4, x2, bannertop - 2); +// gdl = func0f153838(gdl); +// +// gdl = func0f153628(gdl); +// +// // Render the selected message's shadow +// x = tmp - textwidth / 2 + 2; +// y += 2; +// gdl = textRenderProjected(gdl, &x, &y, langGet(msgs[msgnum]), +// chars, font, 0x000000ff, viGetWidth(), viGetWidth(), 0, 0); +// +// // Render "Please Wait..." shadow +// x = tmp - waitwidth / 2 + 2; +// y += 3; +// gdl = textRenderProjected(gdl, &x, &y, langGet(L_MPMENU_495), +// chars, font, 0x000000ff, viGetWidth(), viGetWidth(), 0, 0); +// +// // Render the selected message proper +// x = tmp - textwidth / 2; +// y = texttop; +// gdl = textRenderProjected(gdl, &x, &y, langGet(msgs[msgnum]), +// chars, font, 0xbfbfffff, viGetWidth(), viGetWidth(), 0, 0); +// +// // Render "Please Wait..." proper +// x = tmp - waitwidth / 2; +// y += 3; +// gdl = textRenderProjected(gdl, &x, &y, langGet(L_MPMENU_495), +// chars, font, 0xbfbfffff, viGetWidth(), viGetWidth(), 0, 0); +// +//#if VERSION >= VERSION_NTSC_1_0 +// if (msgs[msgnum] == L_MPMENU_491) { // "Checking Controller Pak" +// // Render "TM" +// y = texttop - 1; +// x = textwidth / 2 + tmp - 7; +// gdl = textRenderProjected(gdl, &x, &y, "TM", +// g_CharsHandelGothicXs, g_FontHandelGothicXs, 0xbfbfffff, viGetWidth(), viGetWidth(), 0, 0); +// } +//#endif +// +// gdl = func0f153780(gdl); +// +// return gdl; +//} + +u32 var80071464 = 0; + struct menudfc *func0f0f1338(struct menuitem *item) { s32 i; @@ -14045,7 +14184,7 @@ Gfx *menuRenderDialogs(Gfx *gdl) } // Render banner messages - if (g_Menus[g_MpPlayerNum].unkdf8 != -1 && (g_Menus[g_MpPlayerNum].curdialog->definition->unk10 & 0x80) == 0) { + if (g_Menus[g_MpPlayerNum].bannernum != -1 && (g_Menus[g_MpPlayerNum].curdialog->definition->unk10 & 0x80) == 0) { if (g_MenuData.count >= 2) { s32 xmin; s32 ymin; @@ -14055,9 +14194,9 @@ Gfx *menuRenderDialogs(Gfx *gdl) menuFindAvailableSize(&xmin, &ymin, &xmax, &ymax); #if VERSION >= VERSION_NTSC_1_0 - gdl = menuRenderBannerMessages(gdl, xmin, ymin, xmax, ymax, 0, g_Menus[g_MpPlayerNum].unkdf8, 0, 0); + gdl = menuRenderBanner(gdl, xmin, ymin, xmax, ymax, false, g_Menus[g_MpPlayerNum].bannernum, 0, 0); #else - gdl = menuRenderBannerMessages(gdl, xmin, ymin, xmax, ymax, 0, g_Menus[g_MpPlayerNum].unkdf8); + gdl = menuRenderBanner(gdl, xmin, ymin, xmax, ymax, false, g_Menus[g_MpPlayerNum].bannernum); #endif } else { s32 xmin = viGetViewLeft() / g_ScaleX; @@ -14066,9 +14205,9 @@ Gfx *menuRenderDialogs(Gfx *gdl) s32 ymax = viGetViewTop() + viGetViewHeight(); #if VERSION >= VERSION_NTSC_1_0 - gdl = menuRenderBannerMessages(gdl, xmin, ymin, xmax, ymax, 1, g_Menus[g_MpPlayerNum].unkdf8, 0, 0); + gdl = menuRenderBanner(gdl, xmin, ymin, xmax, ymax, true, g_Menus[g_MpPlayerNum].bannernum, 0, 0); #else - gdl = menuRenderBannerMessages(gdl, xmin, ymin, xmax, ymax, 1, g_Menus[g_MpPlayerNum].unkdf8); + gdl = menuRenderBanner(gdl, xmin, ymin, xmax, ymax, true, g_Menus[g_MpPlayerNum].bannernum); #endif } } @@ -14233,7 +14372,7 @@ void menuInit(void) g_Menus[i].rowend = 0; g_Menus[i].blockend = 0; g_Menus[i].colend = 0; - g_Menus[i].unkdf8 = -1; + g_Menus[i].bannernum = -1; g_Menus[i].fm.unke41 = 0; g_Menus[i].fm.unke64 = 0; g_Menus[i].fm.headtextures = NULL; @@ -14248,7 +14387,7 @@ void menuInit(void) g_MenuData.bg = 0; g_MenuData.unk5d5_06 = false; g_MenuData.nextbg = 255; - g_MenuData.unk01b = -1; + g_MenuData.bannernum = -1; for (i = 0; i < 5; i++) { g_MenuData.unk669[i] = 0xff; @@ -22491,7 +22630,7 @@ Gfx *menuRender(Gfx *gdl) // Render banner messages, such as "Please Wait...", // "Checking Controller Pak" and some unused game boy camera texts. - if (g_MenuData.unk01b != -1) { + if (g_MenuData.bannernum != -1) { s32 x1 = viGetViewLeft() / g_ScaleX; s32 y1 = viGetViewTop(); s32 x2 = (viGetViewLeft() + viGetViewWidth()) / g_ScaleX; @@ -22517,7 +22656,7 @@ Gfx *menuRender(Gfx *gdl) } } - gdl = menuRenderBannerMessages(gdl, x1, y1, x2, y2, PLAYERCOUNT() < 2, g_MenuData.unk01b, left, right); + gdl = menuRenderBanner(gdl, x1, y1, x2, y2, PLAYERCOUNT() < 2, g_MenuData.bannernum, left, right); #else if (PLAYERCOUNT() >= 3) { if (g_Vars.currentplayernum == 1 || g_Vars.currentplayernum == 3) { @@ -22535,7 +22674,7 @@ Gfx *menuRender(Gfx *gdl) } } - gdl = menuRenderBannerMessages(gdl, x1, y1, x2, y2, PLAYERCOUNT() < 2, g_MenuData.unk01b); + gdl = menuRenderBanner(gdl, x1, y1, x2, y2, PLAYERCOUNT() < 2, g_MenuData.bannernum); #endif } diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index e2f402a5c..ba430a46a 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -6841,7 +6841,7 @@ void pak0f11c54c(void) if (g_Vars.unk0004e4) { g_MpPlayerNum = 0; - func0f0f0ca0(7, true); + menuSetBanner(MENUBANNER_CHECKINGPAK, true); var80075d14 = 0; @@ -6874,7 +6874,7 @@ void pak0f11c54c(void) joy000139c8(); } - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); var80075d14 = 1; } @@ -6897,7 +6897,7 @@ void pak0f11c6d0(void) g_Paks[i].unk010 = PAK010_01; var80075d10 &= ~(1 << i); g_MpPlayerNum = i; - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); break; } } @@ -8524,14 +8524,14 @@ void pak0f11df94(s8 device) g_Paks[device].type = PAKTYPE_NONE; if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } func0f14aed0(device); break; case PAK010_02: if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } pakProbe(device); @@ -8557,7 +8557,7 @@ void pak0f11df94(s8 device) g_MpPlayerNum = device; if (var80075d14) { - func0f0f0ca0(7, true); + menuSetBanner(MENUBANNER_CHECKINGPAK, true); } g_Paks[device].unk010 = PAK010_05; @@ -8569,7 +8569,7 @@ void pak0f11df94(s8 device) break; case PAK010_06: if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } g_Paks[device].unk010 = PAK010_11; @@ -8597,7 +8597,7 @@ void pak0f11df94(s8 device) break; case PAK010_15: if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } if ((g_Vars.paksconnected & (1 << device)) && func0f0fd1f4(device, 1)) { func0f0fd320(device, 1); @@ -8615,7 +8615,7 @@ void pak0f11df94(s8 device) break; case PAK010_14: if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } if (((g_Vars.paksconnected & (1 << device))) && func0f0fd1f4(device, 2)) { func0f0fd320(device, 2); @@ -8624,7 +8624,7 @@ void pak0f11df94(s8 device) break; case PAK010_16: if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } if ((g_Vars.paksconnected & (1 << device)) && func0f0fd1f4(device, 0)) { func0f0fd320(device, 0); @@ -8633,19 +8633,19 @@ void pak0f11df94(s8 device) break; case PAK010_21: if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } break; case PAK010_22: if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } break; } if (g_Paks[device].unk2b8_07) { if (var80075d14) { - func0f0f0ca0(-1, true); + menuSetBanner(-1, true); } if (func0f0fd1f4(device, 4)) { @@ -8741,7 +8741,7 @@ glabel var7f1b4fd8 /* f11dd6c: 24050001 */ addiu $a1,$zero,0x1 /* f11dd70: 51400005 */ beqzl $t2,.L0f11dd88 /* f11dd74: 83a40023 */ lb $a0,0x23($sp) -/* f11dd78: 0fc3c320 */ jal func0f0f0ca0 +/* f11dd78: 0fc3c320 */ jal menuSetBanner /* f11dd7c: afa3001c */ sw $v1,0x1c($sp) /* f11dd80: 8fa3001c */ lw $v1,0x1c($sp) /* f11dd84: 83a40023 */ lb $a0,0x23($sp) @@ -8779,7 +8779,7 @@ glabel var7f1b4fd8 /* f11ddfc: 13000004 */ beqz $t8,.L0f11de10 /* f11de00: ac600000 */ sw $zero,0x0($v1) /* f11de04: 2404ffff */ addiu $a0,$zero,-1 -/* f11de08: 0fc3c320 */ jal func0f0f0ca0 +/* f11de08: 0fc3c320 */ jal menuSetBanner /* f11de0c: 24050001 */ addiu $a1,$zero,0x1 .L0f11de10: /* f11de10: 0fc52b28 */ jal func0f14aed0 @@ -8790,7 +8790,7 @@ glabel var7f1b4fd8 /* f11de24: 2404ffff */ addiu $a0,$zero,-1 /* f11de28: 13200003 */ beqz $t9,.L0f11de38 /* f11de2c: 00000000 */ sll $zero,$zero,0x0 -/* f11de30: 0fc3c320 */ jal func0f0f0ca0 +/* f11de30: 0fc3c320 */ jal menuSetBanner /* f11de34: 24050001 */ addiu $a1,$zero,0x1 .L0f11de38: /* f11de38: 0fc46a7f */ jal pakProbe @@ -8838,7 +8838,7 @@ glabel var7f1b4fd8 /* f11ded8: 24050001 */ addiu $a1,$zero,0x1 /* f11dedc: 51c00005 */ beqzl $t6,.L0f11def4 /* f11dee0: 240f0005 */ addiu $t7,$zero,0x5 -/* f11dee4: 0fc3c320 */ jal func0f0f0ca0 +/* f11dee4: 0fc3c320 */ jal menuSetBanner /* f11dee8: afa3001c */ sw $v1,0x1c($sp) /* f11deec: 8fa3001c */ lw $v1,0x1c($sp) /* f11def0: 240f0005 */ addiu $t7,$zero,0x5 @@ -8858,7 +8858,7 @@ glabel var7f1b4fd8 /* f11df24: 24050001 */ addiu $a1,$zero,0x1 /* f11df28: 53000005 */ beqzl $t8,.L0f11df40 /* f11df2c: 2409000b */ addiu $t1,$zero,0xb -/* f11df30: 0fc3c320 */ jal func0f0f0ca0 +/* f11df30: 0fc3c320 */ jal menuSetBanner /* f11df34: afa3001c */ sw $v1,0x1c($sp) /* f11df38: 8fa3001c */ lw $v1,0x1c($sp) /* f11df3c: 2409000b */ addiu $t1,$zero,0xb @@ -8893,7 +8893,7 @@ glabel var7f1b4fd8 /* f11dfac: 11c00005 */ beqz $t6,.L0f11dfc4 /* f11dfb0: 2404ffff */ addiu $a0,$zero,-1 /* f11dfb4: 24050001 */ addiu $a1,$zero,0x1 -/* f11dfb8: 0fc3c320 */ jal func0f0f0ca0 +/* f11dfb8: 0fc3c320 */ jal menuSetBanner /* f11dfbc: afa3001c */ sw $v1,0x1c($sp) /* f11dfc0: 8fa3001c */ lw $v1,0x1c($sp) .L0f11dfc4: @@ -8940,7 +8940,7 @@ glabel var7f1b4fd8 /* f11e064: 24050001 */ addiu $a1,$zero,0x1 /* f11e068: 51a00005 */ beqzl $t5,.L0f11e080 /* f11e06c: 83a90023 */ lb $t1,0x23($sp) -/* f11e070: 0fc3c320 */ jal func0f0f0ca0 +/* f11e070: 0fc3c320 */ jal menuSetBanner /* f11e074: afa3001c */ sw $v1,0x1c($sp) /* f11e078: 8fa3001c */ lw $v1,0x1c($sp) /* f11e07c: 83a90023 */ lb $t1,0x23($sp) @@ -8969,7 +8969,7 @@ glabel var7f1b4fd8 /* f11e0d4: 11000005 */ beqz $t0,.L0f11e0ec /* f11e0d8: 2404ffff */ addiu $a0,$zero,-1 /* f11e0dc: 24050001 */ addiu $a1,$zero,0x1 -/* f11e0e0: 0fc3c320 */ jal func0f0f0ca0 +/* f11e0e0: 0fc3c320 */ jal menuSetBanner /* f11e0e4: afa3001c */ sw $v1,0x1c($sp) /* f11e0e8: 8fa3001c */ lw $v1,0x1c($sp) .L0f11e0ec: @@ -8997,7 +8997,7 @@ glabel var7f1b4fd8 /* f11e140: 8cd90000 */ lw $t9,0x0($a2) /* f11e144: 1320000b */ beqz $t9,.L0f11e174 /* f11e148: 2404ffff */ addiu $a0,$zero,-1 -/* f11e14c: 0fc3c320 */ jal func0f0f0ca0 +/* f11e14c: 0fc3c320 */ jal menuSetBanner /* f11e150: 24050001 */ addiu $a1,$zero,0x1 /* f11e154: 10000008 */ beqz $zero,.L0f11e178 /* f11e158: 8fbf0014 */ lw $ra,0x14($sp) @@ -9005,7 +9005,7 @@ glabel var7f1b4fd8 /* f11e160: 2404ffff */ addiu $a0,$zero,-1 /* f11e164: 51200004 */ beqzl $t1,.L0f11e178 /* f11e168: 8fbf0014 */ lw $ra,0x14($sp) -/* f11e16c: 0fc3c320 */ jal func0f0f0ca0 +/* f11e16c: 0fc3c320 */ jal menuSetBanner /* f11e170: 24050001 */ addiu $a1,$zero,0x1 .L0f11e174: /* f11e174: 8fbf0014 */ lw $ra,0x14($sp) @@ -9103,7 +9103,7 @@ glabel var7f1af164nb /* f117bf4: ac690264 */ sw $t1,0x264($v1) /* f117bf8: 2404ffff */ addiu $a0,$zero,-1 /* f117bfc: 24050001 */ addiu $a1,$zero,0x1 -/* f117c00: 0fc3b669 */ jal func0f0f0ca0 +/* f117c00: 0fc3b669 */ jal menuSetBanner /* f117c04: a3a6002b */ sb $a2,0x2b($sp) /* f117c08: 0fc515a8 */ jal func0f14aed0 /* f117c0c: 83a4002b */ lb $a0,0x2b($sp) @@ -9157,7 +9157,7 @@ glabel var7f1af164nb /* f117cc4: ac263af0 */ sw $a2,0x3af0($at) /* f117cc8: 24040007 */ addiu $a0,$zero,0x7 /* f117ccc: 24050001 */ addiu $a1,$zero,0x1 -/* f117cd0: 0fc3b669 */ jal func0f0f0ca0 +/* f117cd0: 0fc3b669 */ jal menuSetBanner /* f117cd4: afa3001c */ sw $v1,0x1c($sp) /* f117cd8: 8fa3001c */ lw $v1,0x1c($sp) /* f117cdc: 24080005 */ addiu $t0,$zero,0x5 @@ -9171,7 +9171,7 @@ glabel var7f1af164nb /* f117cfc: 8fbf0014 */ lw $ra,0x14($sp) /* f117d00: 2404ffff */ addiu $a0,$zero,-1 /* f117d04: 24050001 */ addiu $a1,$zero,0x1 -/* f117d08: 0fc3b669 */ jal func0f0f0ca0 +/* f117d08: 0fc3b669 */ jal menuSetBanner /* f117d0c: afa3001c */ sw $v1,0x1c($sp) /* f117d10: 8fa3001c */ lw $v1,0x1c($sp) /* f117d14: 240a000b */ addiu $t2,$zero,0xb @@ -9272,7 +9272,7 @@ glabel var7f1af164nb /* f117e80: 2404ffff */ addiu $a0,$zero,-1 /* f117e84: 24050001 */ addiu $a1,$zero,0x1 /* f117e88: afa3001c */ sw $v1,0x1c($sp) -/* f117e8c: 0fc3b669 */ jal func0f0f0ca0 +/* f117e8c: 0fc3b669 */ jal menuSetBanner /* f117e90: a3a6002b */ sb $a2,0x2b($sp) /* f117e94: 83a4002b */ lb $a0,0x2b($sp) /* f117e98: 0fc3e5ed */ jal func0f0fd1f4 @@ -9291,7 +9291,7 @@ glabel var7f1af164nb /* f117ecc: 2404ffff */ addiu $a0,$zero,-1 /* f117ed0: 24050001 */ addiu $a1,$zero,0x1 /* f117ed4: afa3001c */ sw $v1,0x1c($sp) -/* f117ed8: 0fc3b669 */ jal func0f0f0ca0 +/* f117ed8: 0fc3b669 */ jal menuSetBanner /* f117edc: a3a6002b */ sb $a2,0x2b($sp) /* f117ee0: 83a4002b */ lb $a0,0x2b($sp) /* f117ee4: 0fc3e5ed */ jal func0f0fd1f4 @@ -9310,7 +9310,7 @@ glabel var7f1af164nb /* f117f18: 2404ffff */ addiu $a0,$zero,-1 /* f117f1c: 24050001 */ addiu $a1,$zero,0x1 /* f117f20: afa3001c */ sw $v1,0x1c($sp) -/* f117f24: 0fc3b669 */ jal func0f0f0ca0 +/* f117f24: 0fc3b669 */ jal menuSetBanner /* f117f28: a3a6002b */ sb $a2,0x2b($sp) /* f117f2c: 83a4002b */ lb $a0,0x2b($sp) /* f117f30: 0fc3e5ed */ jal func0f0fd1f4 @@ -9327,12 +9327,12 @@ glabel var7f1af164nb /* f117f5c: 10000009 */ beqz $zero,.NB0f117f84 /* f117f60: ac780010 */ sw $t8,0x10($v1) /* f117f64: 2404ffff */ addiu $a0,$zero,-1 -/* f117f68: 0fc3b669 */ jal func0f0f0ca0 +/* f117f68: 0fc3b669 */ jal menuSetBanner /* f117f6c: 24050001 */ addiu $a1,$zero,0x1 /* f117f70: 10000005 */ beqz $zero,.NB0f117f88 /* f117f74: 8fbf0014 */ lw $ra,0x14($sp) /* f117f78: 2404ffff */ addiu $a0,$zero,-1 -/* f117f7c: 0fc3b669 */ jal func0f0f0ca0 +/* f117f7c: 0fc3b669 */ jal menuSetBanner /* f117f80: 24050001 */ addiu $a1,$zero,0x1 .NB0f117f84: /* f117f84: 8fbf0014 */ lw $ra,0x14($sp) diff --git a/src/include/constants.h b/src/include/constants.h index 4ebb2600b..932d17656 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -1423,6 +1423,18 @@ #define MEMPOOL_7 7 #define MEMPOOL_8 8 +#define MENUBANNER_SEARCHINGFORCAMERA 0 +#define MENUBANNER_CALIBRATINGCAMERA 1 +#define MENUBANNER_DOWNLOADINGIMAGE 2 +#define MENUBANNER_LOADINGIMAGE 3 +#define MENUBANNER_SAVINGIMAGE 4 +#define MENUBANNER_TRANSFERRINGIMAGE 5 +#define MENUBANNER_UPLOADINGSEGMENT 6 +#define MENUBANNER_CHECKINGPAK 7 +#define MENUBANNER_GETTINGPERFECTHEAD 8 +#define MENUBANNER_SAVINGPERFECTHEAD 9 +#define MENUBANNER_AUTOADJUST 10 + #define MENUBG_BLUR 1 #define MENUBG_BLACK 2 // solid black, unused? #define MENUBG_FAILURE 3 // solo mission failure endscreen diff --git a/src/include/game/game_0f09f0.h b/src/include/game/game_0f09f0.h index 7487c6d77..1af2e3802 100644 --- a/src/include/game/game_0f09f0.h +++ b/src/include/game/game_0f09f0.h @@ -12,12 +12,12 @@ void menuPlaySound(s32 menusound); bool menuIsSoloMissionOrMp(void); bool currentPlayerIsMenuOpenInSoloOrMp(void); bool func0f0f0c68(void); -void func0f0f0ca0(s32 value, bool allplayers); +void menuSetBanner(s32 bannernum, bool allplayers); #if VERSION >= VERSION_NTSC_1_0 -Gfx *menuRenderBannerMessages(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, bool arg5, s32 arg6, s32 arg7, s32 arg8); +Gfx *menuRenderBanner(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, bool big, s32 msgnum, s32 arg7, s32 arg8); #else -Gfx *menuRenderBannerMessages(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, bool arg5, s32 arg6); +Gfx *menuRenderBanner(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, bool big, s32 msgnum); #endif struct menudfc *func0f0f1338(struct menuitem *item); diff --git a/src/include/types.h b/src/include/types.h index 713d43314..dd3feaf30 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4343,7 +4343,7 @@ struct menu { /*0xdf0*/ u8 unkdf0; /*0xdf1*/ u8 unkdf1 : 1; /*0xdf4*/ struct modelpartvisibility *partvisibility; - /*0xdf8*/ s8 unkdf8; + /*0xdf8*/ s8 bannernum; /*0xdfc*/ struct menudfc unkdfc[4]; union { @@ -5149,7 +5149,7 @@ struct menudata { /*0x015*/ u8 nextbg; /*0x016*/ u8 unk016; /*0x017*/ u8 playerjoinalpha[4]; - /*0x01b*/ s8 unk01b; + /*0x01b*/ s8 bannernum; /*0x01c*/ u8 unk01c; /*0x020*/ u32 unk020; /*0x024*/ u32 unk024;