Menu struct fixed for good this time

This commit is contained in:
theo3 2020-07-22 23:35:26 -07:00
parent e0cfbb15a5
commit f4320b6fcd
5 changed files with 53 additions and 72 deletions

View File

@ -6,74 +6,6 @@
.text .text
thumb_func_start sub_080A3BD0
sub_080A3BD0: @ 0x080A3BD0
push {r4, lr}
ldr r0, _080A3C54 @ =gMenu
movs r1, #0
movs r4, #1
strb r4, [r0, #1]
adds r0, #0x2a
strb r1, [r0]
bl sub_080A4D34
movs r0, #0xcb
bl LoadPalettesByPaletteGroupIndex
movs r0, #0x75
bl sub_0801D7EC
bl sub_080A4494
adds r1, r0, #7
cmp r1, #0
bge _080A3BFA
adds r1, #7
_080A3BFA:
asrs r0, r1, #3
subs r0, #6
cmp r0, #0
bge _080A3C04
movs r0, #0
_080A3C04:
cmp r0, #6
ble _080A3C0A
movs r0, #6
_080A3C0A:
adds r0, #0x76
bl sub_0801D7EC
ldr r1, _080A3C58 @ =gScreen
ldrh r2, [r1]
movs r3, #0xf0
lsls r3, r3, #5
adds r0, r3, #0
orrs r0, r2
strh r0, [r1]
ldr r0, _080A3C5C @ =0x00001C01
strh r0, [r1, #0x14]
ldr r0, _080A3C60 @ =0x00001D02
strh r0, [r1, #0x20]
ldr r0, _080A3C64 @ =0x00001E0B
strh r0, [r1, #0x2c]
strh r4, [r1, #0x1a]
strh r4, [r1, #0x26]
strh r4, [r1, #0x32]
bl sub_080A4528
bl sub_080A4398
movs r0, #0
bl sub_0801E738
ldr r0, _080A3C68 @ =gUnk_081280DC
bl sub_080A70AC
movs r0, #1
bl sub_080A7114
movs r0, #6
movs r1, #8
bl DoFade
pop {r4, pc}
.align 2, 0
_080A3C54: .4byte gMenu
_080A3C58: .4byte gScreen
_080A3C5C: .4byte 0x00001C01
_080A3C60: .4byte 0x00001D02
_080A3C64: .4byte 0x00001E0B
_080A3C68: .4byte gUnk_081280DC
thumb_func_start sub_080A3C6C thumb_func_start sub_080A3C6C
sub_080A3C6C: @ 0x080A3C6C sub_080A3C6C: @ 0x080A3C6C
push {r4, r5, lr} push {r4, r5, lr}

View File

@ -176,4 +176,11 @@ extern void sub_080A3B74(void);
extern void sub_080A4054(void); extern void sub_080A4054(void);
extern void sub_0801C1D4(void); extern void sub_0801C1D4(void);
extern void sub_0801C208(void); extern void sub_0801C208(void);
extern void sub_080A4D34(void);
extern u32 sub_080A4494(void);
extern void sub_080A4528(void);
extern void sub_080A4398(void);
extern void sub_0801E738(u32);
extern void sub_080A70AC(void*);
extern void sub_080A7114(u32);
#endif #endif

View File

@ -19,8 +19,10 @@ typedef struct {
typedef struct { typedef struct {
u8 field_0x0; u8 field_0x0;
u16 field_0x1; u8 field_0x1;
u8 field_0x2;
u8 field_0x3; u8 field_0x3;
u8 field_0x4;
u8 menuType; u8 menuType;
u8 overlayType; u8 overlayType;
u8 storyPanelIndex; u8 storyPanelIndex;

View File

@ -117,7 +117,7 @@ void sub_080AD474(void)
gMenu.menuType = 1; gMenu.menuType = 1;
gMenu.overlayType = 0; gMenu.overlayType = 0;
gMenu.transitionTimer = 0x1e; gMenu.transitionTimer = 0x1e;
gMenu.field_0x3 = 7; gMenu.field_0x4 = 7;
EraseAllEntities(); EraseAllEntities();
sub_080ADD30(sub_0801CFA8(0)); sub_080ADD30(sub_0801CFA8(0));
gUnk_02024490 = 1; gUnk_02024490 = 1;
@ -191,8 +191,8 @@ void sub_080AD474(void)
sub_080ADA14(0x1ff,0); sub_080ADA14(0x1ff,0);
} }
} }
if (gMenu.field_0x3 != ((struct_02000000*)0x2000000)->gameLanguage) { if (gMenu.field_0x4 != ((struct_02000000*)0x2000000)->gameLanguage) {
gMenu.field_0x3 = ((struct_02000000*)0x2000000)->gameLanguage; gMenu.field_0x4 = ((struct_02000000*)0x2000000)->gameLanguage;
sub_0801D7EC(3); sub_0801D7EC(3);
} }
sub_080AD89C(); sub_080AD89C();

View File

@ -2,6 +2,7 @@
#include "functions.h" #include "functions.h"
#include "menu.h" #include "menu.h"
#include "structures.h" #include "structures.h"
#include "screen.h"
extern void (*const gUnk_081280C4[])(); extern void (*const gUnk_081280C4[])();
@ -18,4 +19,43 @@ void DrawKinstoneMenu(void)
sub_080AD9B0(); sub_080AD9B0();
sub_080AD918(); sub_080AD918();
gUnk_030010A0.field_0x24[8] = 0; gUnk_030010A0.field_0x24[8] = 0;
}
extern void gUnk_081280DC;
void sub_080A3BD0(void)
{
s32 iVar1;
s32 iVar2;
gMenu.field_0x1 = 1;
gMenu.field_0x12[0x17] = 0;
sub_080A4D34();
LoadPalettesByPaletteGroupIndex(0xcb);
sub_0801D7EC(0x75);
iVar1 = sub_080A4494();
iVar2 = iVar1 + 7;
if (iVar2 < 0) {
iVar2 += 0x7;
}
iVar1 = (iVar2 >> 3) - 6;
iVar1 = max(iVar1, 0);
iVar1 = min(iVar1, 6);
sub_0801D7EC(iVar1 + 0x76);
gScreen.lcd.lcdControl2 |= 0x1e00;
gScreen.bg1.unk = 0x1c01;
gScreen.bg2.unk = 0x1d02;
gScreen.affine.unk2 = 0x1e0b;
gScreen.bg2.bg0xOffset = 1;
gScreen.affine.bg2xOffset = 1;
gScreen.affine.bg3xOffset = 1;
sub_080A4528();
sub_080A4398();
sub_0801E738(0);
sub_080A70AC(&gUnk_081280DC);
sub_080A7114(1);
DoFade(6, 8);
} }