started working on generic menu structs

This commit is contained in:
Henny022p 2022-01-24 02:16:20 +01:00
parent 0e57341980
commit 6fd53ccfa0
6 changed files with 119 additions and 110 deletions

View File

@ -44,8 +44,11 @@ typedef struct {
/*0x08*/ u16 transitionTimer;
/*0x0a*/ u16 field_0xa;
/*0x0c*/ u8* field_0xc;
/*0x10*/ // u8 focusCoords[2];
union {
} Menu;
typedef struct {
/*0x00*/ Menu base;
/*0x10*/ union {
s32 i;
u16 h[2];
u8 a[4];
@ -75,9 +78,15 @@ typedef struct {
/*0x2c*/ s8 unk2c;
/*0x2d*/ u8 unk2d;
/*0x2e*/ union SplitHWord unk2e;
} Menu;
static_assert(sizeof(Menu) == 0x30);
} GenericMenu;
static_assert(sizeof(GenericMenu) == 0x30);
typedef struct {
Menu base;
} KinstoneMenu;
extern Menu gMenu;
#define gGenericMenu (*(GenericMenu*)&gMenu)
#define gKinstoneMenu (*(KinstoneMenu*)&gMenu)
#endif

View File

@ -34,8 +34,8 @@ void sub_0805FA04(void) {
gScreen.bg3.updated = 1;
MessageInitialize();
MemClear((void*)&gUnk_02032EC0, sizeof(UI));
MemClear((void*)&gMenu, sizeof(Menu));
gMenu.unk16 = gSaveHeader->language;
MemClear((void*)&gGenericMenu, sizeof(GenericMenu));
gGenericMenu.unk16 = gSaveHeader->language;
LoadGfxGroups();
SetColor(0, 0x1144);
gMain.state = 1;
@ -48,14 +48,14 @@ void sub_0805FA98(void) {
switch (gInput.newKeys) {
case DPAD_UP:
gMenu.unk10.a[1] -= 1;
gGenericMenu.unk10.a[1] -= 1;
break;
case DPAD_DOWN:
gMenu.unk10.a[1] += 1;
gGenericMenu.unk10.a[1] += 1;
break;
case L_BUTTON:
gMenu.unk10.a[0] ^= 1;
if (gMenu.unk10.a[0] == 0) {
gGenericMenu.unk10.a[0] ^= 1;
if (gGenericMenu.unk10.a[0] == 0) {
gScreen.bg0.control = BGCNT_SCREENBASE(31) | BGCNT_CHARBASE(3);
gScreen.bg3.control = BGCNT_SCREENBASE(30) | BGCNT_CHARBASE(3) | BGCNT_PRIORITY(3);
} else {
@ -64,8 +64,8 @@ void sub_0805FA98(void) {
}
break;
case R_BUTTON:
gSaveHeader->language = gMenu.unk16;
MessageFromTarget(gMenu.unk14 * 0x100 + gMenu.unk15);
gSaveHeader->language = gGenericMenu.unk16;
MessageFromTarget(gGenericMenu.unk14 * 0x100 + gGenericMenu.unk15);
break;
case B_BUTTON:
MessageInitialize();
@ -82,19 +82,19 @@ void sub_0805FA98(void) {
iVar1 = 0;
break;
}
switch (gMenu.unk10.a[1]) {
switch (gGenericMenu.unk10.a[1]) {
case 0:
gMenu.unk14 = (gMenu.unk14 + iVar1 + 0x50) % 0x50;
gGenericMenu.unk14 = (gGenericMenu.unk14 + iVar1 + 0x50) % 0x50;
break;
case 1:
gMenu.unk15 += iVar1;
gGenericMenu.unk15 += iVar1;
break;
case 2:
gMenu.unk16 = (gMenu.unk16 + iVar1 + 7) % 7;
gGenericMenu.unk16 = (gGenericMenu.unk16 + iVar1 + 7) % 7;
break;
}
}
gMenu.unk10.a[1] = (gMenu.unk10.a[1] + 3) % 3;
gGenericMenu.unk10.a[1] = (gGenericMenu.unk10.a[1] + 3) % 3;
gScreen.bg3.updated = 1;
}

View File

@ -875,11 +875,11 @@ NONMATCH("asm/non_matching/fileScreen/sub_080610B8.inc", void sub_080610B8(void)
END_NONMATCH
void sub_08051358(void) {
gMenu.unk10.a[2] = gSaveHeader->language == 0 ? 4 : 3;
gGenericMenu.unk10.a[2] = gSaveHeader->language == 0 ? 4 : 3;
if (gMenu.unk10.a[0] != 0x0b || gMenu.unk10.a[1] != 0x5) {
gMenu.unk10.a[1] = 0x5;
gMenu.unk10.a[0] = 0xb;
if (gGenericMenu.unk10.a[0] != 0x0b || gGenericMenu.unk10.a[1] != 0x5) {
gGenericMenu.unk10.a[1] = 0x5;
gGenericMenu.unk10.a[0] = 0xb;
SoundReq(SFX_TEXTBOX_NEXT);
}
}
@ -940,7 +940,7 @@ void sub_08051480(u32 c) {
u32 idx;
result = sub_080514BC(c);
idx = gMenu.unk10.a[3];
idx = gGenericMenu.unk10.a[3];
if (result == RESULT_INVALID) {
return;
@ -955,7 +955,7 @@ void sub_08051480(u32 c) {
idx = FILENAME_LENGTH - 1;
}
gMenu.unk10.a[3] = idx + 1;
gGenericMenu.unk10.a[3] = idx + 1;
gSave.name[idx] = c;
sub_08051574(SFX_6B);
}
@ -976,7 +976,7 @@ u32 sub_080514BC(u32 a1) {
return 1;
}
idx = gMenu.unk10.a[3];
idx = gGenericMenu.unk10.a[3];
if (idx == 0)
return 0;
@ -1108,7 +1108,7 @@ NONMATCH("asm/non_matching/fileScreen/sub_08051738.inc", void sub_08051738(void)
} else {
uVar3++;
}
(&gMenu.selectMtx)[i] = uVar3;
(&gGenericMenu.selectMtx)[i] = uVar3;
}
if (uVar3 == 0) {
gMenu.transitionTimer = 0x3c;
@ -1118,9 +1118,9 @@ NONMATCH("asm/non_matching/fileScreen/sub_08051738.inc", void sub_08051738(void)
sub_080A7114(1);
}
uVar3++;
gMenu.unk16 = uVar3;
gMenu.unk10.a[3] = 4;
gMenu.unk14 = uVar3;
gGenericMenu.unk16 = uVar3;
gGenericMenu.unk10.a[3] = 4;
gGenericMenu.unk14 = uVar3;
}
END_NONMATCH
@ -1128,7 +1128,7 @@ s32 sub_080517B4(s32 a1) {
u32 i = gUnk_02019EE0.unk7;
if (a1 != 0) {
for (i = i + a1; i < 5; i += a1) {
if (gMenu.unk10.a[i] != 0 && gMenu.unk10.a[i] != 4)
if (gGenericMenu.unk10.a[i] != 0 && gGenericMenu.unk10.a[i] != 4)
return i;
}

View File

@ -652,7 +652,7 @@ static void GameOver_Init(void) {
if (gFadeControl.active)
return;
sub_08052010();
gMenu.unk10.a[0] = 80;
gGenericMenu.unk10.a[0] = 80;
gMenu.transitionTimer = 60;
gSave.stats.health = 24;
gMain.field_0x5 = 60;
@ -667,8 +667,8 @@ static void GameOver_FadeIn(void) {
return;
if (gMain.field_0x5 == 0) {
if (gMenu.unk10.a[0] >= 38) {
gMenu.unk10.a[0]--;
if (gGenericMenu.unk10.a[0] >= 38) {
gGenericMenu.unk10.a[0]--;
} else {
gMenu.transitionTimer--;
if (gMenu.transitionTimer == 0) {
@ -839,7 +839,7 @@ static void DrawGameOverText(void) {
gOamCmd._4 = 0;
gOamCmd._6 = 0;
gOamCmd._8 = 0x8600;
gOamCmd.y = gMenu.unk10.a[0];
gOamCmd.y = gGenericMenu.unk10.a[0];
for (i = 0; i < 8; ++i) {
gOamCmd.x = sOffsets[i];
#ifdef EU

View File

@ -219,7 +219,7 @@ void sub_0808EABC(Entity* this) {
}
break;
case 5:
switch (gMenu.unk10.a[this->type]) {
switch (gGenericMenu.unk10.a[this->type]) {
case 0:
var0 = 42;
var1 = 40;
@ -228,7 +228,7 @@ void sub_0808EABC(Entity* this) {
case 2:
var0 = 20;
var1 = 144;
var1 -= (gMenu.unk16 - gMenu.unk10.a[this->type]) * 32;
var1 -= (gGenericMenu.unk16 - gGenericMenu.unk10.a[this->type]) * 32;
break;
}
break;
@ -371,9 +371,9 @@ void sub_0808ECBC(Entity* this) {
void sub_0808ED64(Entity* this) {
int y = 255;
if (gUnk_02032EC0.lastState == 1 && gMenu.unk10.a[1] != 5) {
this->x.HALF.HI = gMenu.unk10.a[0] * 16 + 28;
y = gMenu.unk10.a[1] * 16 + 58;
if (gUnk_02032EC0.lastState == 1 && gGenericMenu.unk10.a[1] != 5) {
this->x.HALF.HI = gGenericMenu.unk10.a[0] * 16 + 28;
y = gGenericMenu.unk10.a[1] * 16 + 58;
}
this->y.HALF.HI = y;
}
@ -384,7 +384,7 @@ void sub_0808ED98(Entity* this) {
this->field_0x68.HWORD = 27;
y = -10;
} else {
u32 var0 = gMenu.unk10.a[3];
u32 var0 = gGenericMenu.unk10.a[3];
if (var0 > 5) {
var0 = 5;
}
@ -416,7 +416,7 @@ void sub_0808EE00(Entity* this) {
}
this->field_0x6a.HWORD = var2;
this->palette.b.b0 = gMenu.unk10.a[1] == 5 && var1 == gMenu.unk10.a[2] ? 11 : 9;
this->palette.b.b0 = gGenericMenu.unk10.a[1] == 5 && var1 == gGenericMenu.unk10.a[2] ? 11 : 9;
gUnk_02019EE0.isTransitioning |= sub_0808EF6C(this);
}

View File

@ -155,7 +155,7 @@ void sub_080A3BD0(void) {
s32 iVar2;
gMenu.column_idx = 1;
gMenu.unk2a = 0;
gGenericMenu.unk2a = 0;
sub_080A4D34();
LoadPaletteGroup(0xcb);
LoadGfxGroup(0x75);
@ -189,18 +189,18 @@ void sub_080A3BD0(void) {
NONMATCH("asm/non_matching/subtask/sub_080A3C6C.inc", void sub_080A3C6C(void)) {
s32 tmp1, tmp2, tmp3, tmp4, tmp5;
u8* ptr;
Menu* menu;
GenericMenu* menu;
if (gFadeControl.active) {
return;
}
menu = &gMenu;
menu->column_idx = 2;
menu = &gGenericMenu;
menu->base.column_idx = 2;
tmp2 = menu->unk28 * 0x10000;
tmp1 = tmp2 - menu->unk10.i;
if ((tmp1 < 0 ? -tmp1 : tmp1) <= 0x1ffdu) {
menu->unk10.i = tmp2;
} else {
menu->column_idx = 1;
menu->base.column_idx = 1;
tmp2 = sub_08000E44(tmp1);
tmp1 = tmp1 / 0x20000;
if (tmp1 < 0)
@ -231,8 +231,8 @@ NONMATCH("asm/non_matching/subtask/sub_080A3C6C.inc", void sub_080A3C6C(void)) {
break;
case 1:
if (gMenu.column_idx == 2) {
tmp3 = gMenu.unk10.i / 0x10000;
gMenu.unk2a = gSave.unk118[tmp3];
tmp3 = gGenericMenu.unk10.i / 0x10000;
gGenericMenu.unk2a = gSave.unk118[tmp3];
sub_080A7114(3);
}
break;
@ -275,16 +275,16 @@ void sub_080A3E00(void) {
}
void sub_080A3E20(void) {
gMenu.unk18 = 0;
gMenu.unk2c += 2;
if (0x45 < gMenu.unk2c) {
gMenu.unk2c = 0x46;
gGenericMenu.unk18 = 0;
gGenericMenu.unk2c += 2;
if (0x45 < gGenericMenu.unk2c) {
gGenericMenu.unk2c = 0x46;
gMenu.overlayType = 1;
}
}
void sub_080A3E48(void) {
u32 temp = gUnk_080C9CBC[gMenu.unk2a].unk5;
u32 temp = gUnk_080C9CBC[gGenericMenu.unk2a].unk5;
if (temp != gUnk_080C9CBC[gFuseInfo._3].unk5) {
SoundReq(SFX_ITEM_SHIELD_BOUNCE);
sub_080A7114(4);
@ -312,11 +312,11 @@ void sub_080A3EDC(void) {
void sub_080A3F10(void) {
gMenu.column_idx = 4;
gMenu.unk2c -= 3;
gMenu.unk18 += 0x100;
if (gMenu.unk2c < 0) {
gMenu.unk18 = 0;
gMenu.unk2c = 0;
gGenericMenu.unk2c -= 3;
gGenericMenu.unk18 += 0x100;
if (gGenericMenu.unk2c < 0) {
gGenericMenu.unk18 = 0;
gGenericMenu.unk2c = 0;
sub_080A7114(1);
SoundReq(SFX_MENU_ERROR);
}
@ -350,8 +350,8 @@ void sub_080A3FCC(void) {
void sub_080A3FF4(void) {
gMenu.transitionTimer -= 1;
if (gMenu.transitionTimer != 0) {
gMenu.unk18 += gMenu.unk1a.HWORD;
gMenu.unk1a.HWORD += 0x20;
gGenericMenu.unk18 += gGenericMenu.unk1a.HWORD;
gGenericMenu.unk1a.HWORD += 0x20;
} else {
gMenu.column_idx = 6;
gMenu.overlayType = 3;
@ -391,7 +391,7 @@ void sub_080A4080(void) {
gOamCmd._4 = 0;
gOamCmd._6 = 0;
gOamCmd.y = 0x10 - (s8)gMenu.unk2e.HALF.HI;
gOamCmd.y = 0x10 - (s8)gGenericMenu.unk2e.HALF.HI;
gOamCmd.x = 0x40;
gOamCmd._8 = 0x400;
#ifdef EU
@ -417,9 +417,9 @@ void sub_080A4080(void) {
gOamCmd._8 = 0x4e0;
iVar2 = sub_080A3B48() - 1;
if (0 < iVar2) {
iVar3 = gMenu.unk10.i;
iVar3 = gGenericMenu.unk10.i;
if (iVar3 < 0) {
iVar3 = gMenu.unk10.i + 0xffff;
iVar3 = gGenericMenu.unk10.i + 0xffff;
}
if (iVar3 >> 0x10 != iVar2) {
gOamCmd.y = temp[1] + 0x77;
@ -441,11 +441,11 @@ NONMATCH("asm/non_matching/subtask/sub_080A414C.inc", void sub_080A414C(void)) {
gOamCmd._4 = 0;
gOamCmd._6 = 0;
uVar1 = gMenu.unk10.h[0] / 0xb21;
uVar1 = gGenericMenu.unk10.h[0] / 0xb21;
for (i = -3, uVar1 = -uVar1 - 0x45; i < 4; uVar1 += 0x17, i++) {
gOamCmd.y = ((gSineTable[uVar1 & 0xff] * 0x44) / 0x100) + 0x4f;
gOamCmd.x = ((gSineTable[(uVar1 + 0x40) & 0xff] * 0x42) / 0x100) - 0x10;
iVar2 = gMenu.unk10.i / 0x10000 + i;
iVar2 = gGenericMenu.unk10.i / 0x10000 + i;
if (iVar2 >= 0) {
uVar3 = gSave.unk12B[iVar2];
if (i == 0) {
@ -471,14 +471,14 @@ void sub_080A422C(void) {
s32 t, t2;
u16 t3;
uVar2 = gMenu.unk18 / 256;
uVar2 = gGenericMenu.unk18 / 256;
uVar2 %= 27;
t3 = uVar2;
sub_0805ECEC(0, gUnk_08128120[t3] << 4, 0x100, 0);
gOamCmd._4 = 0x100;
gOamCmd._6 = 0;
gOamCmd.y = 0x4f;
t = gMenu.unk2a;
t = gGenericMenu.unk2a;
t2 = 0x180;
switch (gMenu.column_idx) {
case 5:
@ -487,9 +487,9 @@ void sub_080A422C(void) {
break;
case 3:
case 4:
gOamCmd.x = gMenu.unk2c + 0x32;
gOamCmd.x = gGenericMenu.unk2c + 0x32;
sub_080A42E0(t, 0);
t2 = 0x8a - (gMenu.unk2c * 0x12 / 0x46);
t2 = 0x8a - (gGenericMenu.unk2c * 0x12 / 0x46);
break;
case 6:
break;
@ -603,7 +603,7 @@ void sub_080A4468(void) {
gUnk_03003DF0[0].unk[2] = 0;
gUnk_03003DF0[0].unk2[3] = 0;
sub_0801E6C8(gFuseInfo._3);
sub_0801E798(gMenu.unk2a);
sub_0801E798(gGenericMenu.unk2a);
}
u32 sub_080A4494(void) {
@ -708,7 +708,7 @@ void sub_080A4608(void) {
gScreen.controls.windowOutsideControl = 0x1d;
gScreen.bg1.updated = 1;
for (iVar2 = 0; iVar2 < 0x10; iVar2++) {
gMenu.unk10.a[iVar2] = 0xee;
gGenericMenu.unk10.a[iVar2] = 0xee;
}
{
int r0, r1, r2;
@ -722,7 +722,7 @@ void sub_080A4608(void) {
if (r2 < r1) {
r1 = 1;
}
gMenu.unk1c = r1;
gGenericMenu.unk1c = r1;
}
SetFade(4, 8);
}
@ -741,7 +741,7 @@ void sub_080A46DC(void) {
void sub_080A46EC(void) {
if (gFadeControl.active == 0) {
CreateObject(0xa2, gUnk_080FC3E4[gMenu.unk1c].unk7, 0);
CreateObject(0xa2, gUnk_080FC3E4[gGenericMenu.unk1c].unk7, 0);
sub_080A7114(2);
}
}
@ -751,13 +751,13 @@ void sub_080A4720(void) {
Sound sound;
if (gMenu.field_0x0 != 0) {
gMenu.unk20 += 1;
switch (gMenu.unk20) {
gGenericMenu.unk20 += 1;
switch (gGenericMenu.unk20) {
case 0x40:
gMenu.unk21 = WriteBit(&gUnk_02002B0E, gMenu.unk1c);
gGenericMenu.unk21 = WriteBit(&gUnk_02002B0E, gGenericMenu.unk1c);
gMenu.column_idx = 1;
default:
bVar1 = gMenu.unk20 >> 2;
bVar1 = gGenericMenu.unk20 >> 2;
if (0x10 < bVar1) {
bVar1 = 0x20 - bVar1;
}
@ -771,7 +771,7 @@ void sub_080A4720(void) {
sub_080A7114(3);
sub_080A70AC((KeyButtonLayout*)&gUnk_0812813C);
gMenu.column_idx = 0x15;
if (gMenu.unk21 == 0) {
if (gGenericMenu.unk21 == 0) {
sound = SFX_109;
} else {
sound = SFX_MENU_ERROR;
@ -786,7 +786,7 @@ void sub_080A47D0(void) {
s32 uVar1;
s32 t;
uVar1 = gMenu.unk1f;
uVar1 = gGenericMenu.unk1f;
switch (gInput.unk4) {
case 2:
case 8:
@ -799,14 +799,14 @@ void sub_080A47D0(void) {
uVar1 -= 8;
break;
}
t = gMenu.unk1e;
t = gGenericMenu.unk1e;
if (uVar1 < 0) {
uVar1 = 0;
}
if (t < uVar1) {
uVar1 = t;
}
gMenu.unk1f = uVar1;
gGenericMenu.unk1f = uVar1;
gScreen.bg1.yOffset = uVar1 - 0x70;
}
@ -824,8 +824,8 @@ void sub_080A4864(void) {
if (gFadeControl.active)
return;
r5 = gMenu.unk1f;
r4 = gMenu.unk1c;
r5 = gGenericMenu.unk1f;
r4 = gGenericMenu.unk1c;
r1 = gInput.unk4;
switch (gInput.unk4) {
case 2:
@ -860,21 +860,21 @@ void sub_080A4864(void) {
if (r1 < r4) {
r4 = r1;
}
r0 = gMenu.unk1c;
r0 = gGenericMenu.unk1c;
if (r0 != r4) {
gMenu.unk1c = r4;
gGenericMenu.unk1c = r4;
SoundReq(SFX_TEXTBOX_CHOICE);
sub_080A7114(2);
r5 = 0;
}
r0 = gMenu.unk1e;
r0 = gGenericMenu.unk1e;
if (r5 < 0) {
r5 = 0;
}
if (r0 < r5) {
r5 = r0;
}
gMenu.unk1f = r5;
gGenericMenu.unk1f = r5;
gScreen.bg1.yOffset = r5 - 0x70;
}
@ -925,9 +925,9 @@ void sub_080A4978(void) {
DrawDirect(sub_080A4978_draw_constant, 0);
r2 = (gSave.unk6 == 0) ? 0x82 : 0x88;
if ((gMenu.column_idx & 2) != 0) {
if (r2 >= (gMenu.unk1c)) {
if (r2 >= (gGenericMenu.unk1c)) {
gOamCmd.x = 0xe8;
r0 = (0x5000 / r2) * (gMenu.unk1c - 1);
r0 = (0x5000 / r2) * (gGenericMenu.unk1c - 1);
if (r0 < 0) {
r0 += 0xff;
}
@ -947,14 +947,14 @@ void sub_080A4978(void) {
}
if (gMain.ticks.HWORD & 0x10) {
if (gMenu.column_idx & 0x10) {
if (gMenu.unk1e) {
if (gGenericMenu.unk1e) {
gOamCmd.y = 0x10;
if (gMenu.unk1f > 0) {
if (gGenericMenu.unk1f > 0) {
gOamCmd.x = 6;
gOamCmd.y = 0x9c;
DrawDirect(sub_080A4978_draw_constant, 6);
}
if (gMenu.unk1e > gMenu.unk1f) {
if (gGenericMenu.unk1e > gGenericMenu.unk1f) {
gOamCmd.x = 0xea;
gOamCmd.y = 0x9c;
DrawDirect(sub_080A4978_draw_constant, 7);
@ -965,7 +965,7 @@ void sub_080A4978(void) {
if (gSaveHeader->language) {
if (gMenu.column_idx & 0x4) {
gOamCmd.y = 0x10;
r4 = gMenu.unk1c;
r4 = gGenericMenu.unk1c;
for (r6 = 2; r6 >= 0; r6--) {
gOamCmd.x = 0x5d + (r6 * 7);
gOamCmd._8 = ((r4 % 10) << 1) | 0x9e0;
@ -975,16 +975,16 @@ void sub_080A4978(void) {
}
}
if (gMenu.column_idx & 1) {
if (sub_080A4948(gMenu.unk1c)) {
if (sub_080A4948(gGenericMenu.unk1c)) {
gOamCmd.x = 0x2c;
gOamCmd.y = 0x48;
gOamCmd._8 = 0xd4 << 7;
DrawDirect(sub_080A4978_draw_constant - 4, gMenu.unk1c - 1);
if (gMenu.unk1d != gMenu.unk1c) {
DrawDirect(sub_080A4978_draw_constant - 4, gGenericMenu.unk1c - 1);
if (gGenericMenu.unk1d != gGenericMenu.unk1c) {
const Figurine* fig;
u8* gfx;
gMenu.unk1d = gMenu.unk1c;
fig = &gFigurines[gMenu.unk1c];
gGenericMenu.unk1d = gGenericMenu.unk1c;
fig = &gFigurines[gGenericMenu.unk1c];
LoadPalettes(fig->pal, 0x16, 9);
gfx = fig->gfx;
if (fig->size < 0) {
@ -1000,9 +1000,9 @@ void sub_080A4978(void) {
void sub_080A4B44(void) {
u32 uVar1;
uVar1 = gMenu.unk1c;
uVar1 = gGenericMenu.unk1c;
if ((gMenu.column_idx & 0x10) != 0) {
gMenu.unk1e = sub_080A4CBC(uVar1);
gGenericMenu.unk1e = sub_080A4CBC(uVar1);
}
if ((gMenu.column_idx & 4) != 0) {
sub_080A4BA0(uVar1, 2);
@ -1022,8 +1022,8 @@ u32 sub_080A4CBC(u32 param_1) {
const u16* psVar2;
u32 uVar3;
if (gMenu.unk1a.HALF.LO != param_1) {
gMenu.unk1a.HALF.LO = param_1;
if (gGenericMenu.unk1a.HALF.LO != param_1) {
gGenericMenu.unk1a.HALF.LO = param_1;
MemClear(&gBG1Buffer, 0x800);
MemCopy(&gBG1Buffer, (void*)0x600e000, 0x800);
iVar1 = sub_080A4948(param_1);
@ -1083,8 +1083,8 @@ void sub_080A4DB8(u32 param_1) {
MemClear(&gBG1Buffer, 0x800);
MemClear(&gBG2Buffer, 0x800);
MemClear(gUnk_0200AF00.filler25 + 0xf, 0x300);
MemClear(&gMenu, sizeof(gMenu));
gMenu.unk2e.HWORD = 0xffff;
MemClear(&gGenericMenu, sizeof(gGenericMenu));
gGenericMenu.unk2e.HWORD = 0xffff;
gMenu.field_0x3 = gUnk_02034490.unk2[param_1];
ptr = &gUnk_08128AD8[gUnk_08128A38[param_1].unk0];
gScreen.lcd.displayControl = ptr->unk2 | 0x1940;
@ -1389,7 +1389,7 @@ void sub_080A5238(void) {
default:
break;
}
gMenu.unk10.a[uVar2] = uVar3;
gGenericMenu.unk10.a[uVar2] = uVar3;
sub_080A5F48(uVar3, uVar2 * 8 + 0x360);
}
}
@ -1421,9 +1421,9 @@ void sub_080A529C(void) {
break;
}
case 2:
if (gMenu.unk10.a[uVar3] != 0) {
if (gGenericMenu.unk10.a[uVar3] != 0) {
u32 t = !!(gInput.newKeys ^ 1);
ForceEquipItem(gMenu.unk10.a[uVar3], t);
ForceEquipItem(gGenericMenu.unk10.a[uVar3], t);
SoundReq(SFX_TEXTBOX_SELECT);
}
break;
@ -1448,7 +1448,7 @@ void sub_080A529C(void) {
gMenu.field_0x3 = uVar3;
SoundReq(SFX_TEXTBOX_CHOICE);
}
uVar2 = gMenu.unk10.a[uVar3];
uVar2 = gGenericMenu.unk10.a[uVar3];
switch (uVar3) {
case 0xc:
case 0xd:
@ -1488,11 +1488,11 @@ void sub_080A5384(void) {
gOamCmd._8 = 0;
for (uVar3 = 0; uVar3 < 0x11; uVar3++) {
u32 item;
if (gMenu.unk10.a[uVar3] != 0) {
if (gGenericMenu.unk10.a[uVar3] != 0) {
entry = &gItemMenuTable[uVar3];
gOamCmd.x = entry->x;
gOamCmd.y = entry->y;
item = gMenu.unk10.a[uVar3];
item = gGenericMenu.unk10.a[uVar3];
switch (item) {
case 0x1c ... 0x1f:
item = gSave.stats.bottles[item - 0x1c];
@ -1571,7 +1571,7 @@ u32 sub_080A554C(u32 arg0) {
if (arg0 != 0) {
for (i = 0; i < 17; i++) {
if (arg0 == gMenu.unk10.a[i])
if (arg0 == gGenericMenu.unk10.a[i])
return i;
}
}