summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTal Hayon <talhayon1@gmail.com>2022-04-05 23:40:57 +0300
committerTal Hayon <talhayon1@gmail.com>2022-04-05 23:40:57 +0300
commit4a7f862bcb8f3a5ae864a4b02b251bb048e9ee02 (patch)
tree3f8aaf5ff818c96ff60d40e2c700a5801dac001d
parent9c9dd6d9ddd126b5077b5a3eb3c36dcd9148d22a (diff)
Match sub_080A7040
-rw-r--r--asm/non_matching/subtask2/sub_080A7040.inc47
-rw-r--r--src/subtask2.c31
2 files changed, 28 insertions, 50 deletions
diff --git a/asm/non_matching/subtask2/sub_080A7040.inc b/asm/non_matching/subtask2/sub_080A7040.inc
deleted file mode 100644
index d580cb08..00000000
--- a/asm/non_matching/subtask2/sub_080A7040.inc
+++ /dev/null
@@ -1,47 +0,0 @@
- .syntax unified
- push {r4, r5, lr}
- adds r5, r0, #0
- ldr r1, _080A7090 @ =gMenu
- ldrh r0, [r1, #0x2e]
- cmp r0, r5
- beq _080A708C
- strh r5, [r1, #0x2e]
- ldr r4, _080A7094 @ =gUnk_02022130
- movs r1, #0xc0
- lsls r1, r1, #2
- adds r0, r4, #0
- bl MemClear
- ldr r0, _080A7098 @ =0xFFFFFE00
- adds r4, r4, r0
- ldr r1, _080A709C @ =0x0600E000
- movs r2, #0x80
- lsls r2, r2, #4
- adds r0, r4, #0
- bl MemCopy
- ldr r1, _080A70A0 @ =gUnk_08128D70
- lsls r0, r5, #3
- adds r4, r0, r1
- ldrb r0, [r4]
- bl GetInventoryValue
- cmp r0, #0
- beq _080A7082
- ldrh r0, [r4, #6]
- ldr r1, _080A70A4 @ =gUnk_08129004
- bl sub_0805F46C
-_080A7082:
- ldr r0, _080A70A8 @ =gScreen
- movs r1, #3
- strh r1, [r0, #0x18]
- movs r1, #1
- strh r1, [r0, #0x1a]
-_080A708C:
- pop {r4, r5, pc}
- .align 2, 0
-_080A7090: .4byte gMenu
-_080A7094: .4byte gUnk_02022130
-_080A7098: .4byte 0xFFFFFE00
-_080A709C: .4byte 0x0600E000
-_080A70A0: .4byte gUnk_08128D70
-_080A70A4: .4byte gUnk_08129004
-_080A70A8: .4byte gScreen
- .syntax divided
diff --git a/src/subtask2.c b/src/subtask2.c
index 0fd102bc..995d1683 100644
--- a/src/subtask2.c
+++ b/src/subtask2.c
@@ -99,6 +99,18 @@ typedef struct {
} gUnk_08128DE8_struct;
extern gUnk_08128DE8_struct gUnk_08128DE8[];
+typedef struct {
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ s8 unk5;
+ u16 unk6;
+} struct_gUnk_08128D70;
+
+extern const struct_gUnk_08128D70 gUnk_08128D70[];
+
ASM_FUNC("asm/non_matching/subtask2/sub_080A5594.inc", void sub_080A5594())
ASM_FUNC("asm/non_matching/subtask2/sub_080A56A0.inc", void sub_080A56A0())
@@ -776,7 +788,20 @@ void sub_080A6F6C(u32 param_1) {
ASM_FUNC("asm/non_matching/subtask2/sub_080A6FB4.inc", void sub_080A6FB4(u32 a, u32 b))
-ASM_FUNC("asm/non_matching/subtask2/sub_080A7040.inc", void sub_080A7040(u32 a))
+void sub_080A7040(u32 param_1) {
+ extern Font gUnk_08129004;
+ extern u8 gUnk_02022130[];
+ if (gGenericMenu.unk2e.HWORD != param_1) {
+ gGenericMenu.unk2e.HWORD = param_1;
+ MemClear(gUnk_02022130, 0x300);
+ MemCopy(gUnk_02022130 - 0x200, (void*)0x600e000, 0x800);
+ if (GetInventoryValue(gUnk_08128D70[param_1].unk0) != 0) {
+ sub_0805F46C(gUnk_08128D70[param_1].unk6, &gUnk_08129004);
+ }
+ gScreen.bg1.yOffset = 3;
+ gScreen.bg1.updated = 1;
+ }
+}
ASM_FUNC("asm/non_matching/subtask2/sub_080A70AC.inc", void sub_080A70AC(const KeyButtonLayout* layout))
@@ -787,12 +812,12 @@ void SetMenuType(u32 menuType) {
}
void ResetUI(void) {
- MemClear(&gUI, 0x3b4);
+ MemClear(&gUI, sizeof(gUI));
}
void MenuFadeIn(u32 param_1, u32 param_2) {
if (gUI.nextToLoad == 0) {
- MemClear(&gUI, 0x3b4);
+ MemClear(&gUI, sizeof(gUI));
gUI.lastState = param_1;
gUI.field_0x3 = param_2;
gUI.pauseFadeIn = gMain.substate;