summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2020-07-22 23:35:26 -0700
committertheo3 <arisstephenson2@gmail.com>2020-07-22 23:35:26 -0700
commitf4320b6fcd6b95fe96fabc29b2e7e1d4cf7f2fd4 (patch)
tree98dcf067167a43da2283665daa314948d667e593
parente0cfbb15a5cfc7c4287cc9242abc3b5492dd4895 (diff)
Menu struct fixed for good this time
-rw-r--r--asm/code_080A3BD0.s68
-rw-r--r--include/functions.h7
-rw-r--r--include/menu.h4
-rw-r--r--src/introSetTransition.c6
-rw-r--r--src/sub_080A3B84.c40
5 files changed, 53 insertions, 72 deletions
diff --git a/asm/code_080A3BD0.s b/asm/code_080A3BD0.s
index 20ecf8e0..3cd69ca3 100644
--- a/asm/code_080A3BD0.s
+++ b/asm/code_080A3BD0.s
@@ -6,74 +6,6 @@
.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
sub_080A3C6C: @ 0x080A3C6C
push {r4, r5, lr}
diff --git a/include/functions.h b/include/functions.h
index 2ba8c186..1c316dea 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -176,4 +176,11 @@ extern void sub_080A3B74(void);
extern void sub_080A4054(void);
extern void sub_0801C1D4(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
diff --git a/include/menu.h b/include/menu.h
index 13564462..7da2a591 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -19,8 +19,10 @@ typedef struct {
typedef struct {
u8 field_0x0;
- u16 field_0x1;
+ u8 field_0x1;
+ u8 field_0x2;
u8 field_0x3;
+ u8 field_0x4;
u8 menuType;
u8 overlayType;
u8 storyPanelIndex;
diff --git a/src/introSetTransition.c b/src/introSetTransition.c
index 638bf4c6..32bb02c3 100644
--- a/src/introSetTransition.c
+++ b/src/introSetTransition.c
@@ -117,7 +117,7 @@ void sub_080AD474(void)
gMenu.menuType = 1;
gMenu.overlayType = 0;
gMenu.transitionTimer = 0x1e;
- gMenu.field_0x3 = 7;
+ gMenu.field_0x4 = 7;
EraseAllEntities();
sub_080ADD30(sub_0801CFA8(0));
gUnk_02024490 = 1;
@@ -191,8 +191,8 @@ void sub_080AD474(void)
sub_080ADA14(0x1ff,0);
}
}
- if (gMenu.field_0x3 != ((struct_02000000*)0x2000000)->gameLanguage) {
- gMenu.field_0x3 = ((struct_02000000*)0x2000000)->gameLanguage;
+ if (gMenu.field_0x4 != ((struct_02000000*)0x2000000)->gameLanguage) {
+ gMenu.field_0x4 = ((struct_02000000*)0x2000000)->gameLanguage;
sub_0801D7EC(3);
}
sub_080AD89C();
diff --git a/src/sub_080A3B84.c b/src/sub_080A3B84.c
index 1a605c2a..80eff685 100644
--- a/src/sub_080A3B84.c
+++ b/src/sub_080A3B84.c
@@ -2,6 +2,7 @@
#include "functions.h"
#include "menu.h"
#include "structures.h"
+#include "screen.h"
extern void (*const gUnk_081280C4[])();
@@ -18,4 +19,43 @@ void DrawKinstoneMenu(void)
sub_080AD9B0();
sub_080AD918();
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);
} \ No newline at end of file