From a9073df4e9050cc4914802ac322635cd4a5810d3 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Thu, 17 Jul 2025 21:59:24 -0400 Subject: [PATCH] Decomped ov31_02383768 Decomped by anonymous user (https://decomp.me/scratch/Y1TTR) --- asm/include/overlay_31_0238367C.inc | 3 --- asm/overlay_31_0238367C.s | 30 ----------------------------- include/overlay_31_02383880.h | 1 + src/overlay_31_02383880.c | 23 +++++++++++++++++++++- 4 files changed, 23 insertions(+), 34 deletions(-) diff --git a/asm/include/overlay_31_0238367C.inc b/asm/include/overlay_31_0238367C.inc index 5add71cc..aefe5c7b 100644 --- a/asm/include/overlay_31_0238367C.inc +++ b/asm/include/overlay_31_0238367C.inc @@ -1,6 +1,5 @@ #pragma once .public AdvanceFrame -.public CloseInventoryMenu .public CloseScrollBox .public CreateScrollBoxSingle .public DUNGEON_WINDOW_PARAMS_8 @@ -9,5 +8,3 @@ .public IsScrollBoxActive .public OVERLAY31_UNKNOWN_POINTER__NA_238A26C .public PositionHasItem -.public ov10_022BCD10 -.public sub_020282F4 diff --git a/asm/overlay_31_0238367C.s b/asm/overlay_31_0238367C.s index 2b7fc540..75b0b2e8 100644 --- a/asm/overlay_31_0238367C.s +++ b/asm/overlay_31_0238367C.s @@ -85,33 +85,3 @@ _0238375C: .align 2, 0 _02383764: .word OVERLAY31_UNKNOWN_POINTER__NA_238A26C arm_func_end ov31_0238372C - - arm_func_start ov31_02383768 -ov31_02383768: ; 0x02383768 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldrsb r0, [r7] - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl ov10_022BCD10 - cmp r0, #0 - beq _023837B4 - mvn r4, #3 - sub r5, r4, #1 - mov r6, #0x62 -_02383798: - mov r0, r6 - bl AdvanceFrame - ldrsb r0, [r7] - bl sub_020282F4 - cmp r0, r5 - cmpne r0, r4 - bne _02383798 -_023837B4: - ldrsb r0, [r7] - bl CloseInventoryMenu - mvn r0, #1 - strb r0, [r7] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov31_02383768 diff --git a/include/overlay_31_02383880.h b/include/overlay_31_02383880.h index ba29d847..42397e33 100644 --- a/include/overlay_31_02383880.h +++ b/include/overlay_31_02383880.h @@ -5,6 +5,7 @@ struct window { }; +void ov31_02383768(s8* arg1); // Cleans up and frees OVERLAY31_UNKNOWN_POINTER__NA_238A26C void ov31_023837C8(void); void ov31_02383854(struct window* w); diff --git a/src/overlay_31_02383880.c b/src/overlay_31_02383880.c index 6c5b7de8..f51736c2 100644 --- a/src/overlay_31_02383880.c +++ b/src/overlay_31_02383880.c @@ -6,12 +6,33 @@ extern struct dungeon* DUNGEON_PTR[]; extern struct loc_struct* OVERLAY31_UNKNOWN_POINTER__NA_238A26C; +extern bool8 ov10_022BCD10(s8); +extern void AdvanceFrame(u8); +extern s32 sub_020282F4(s8); +extern void CloseInventoryMenu(s8); extern void ov29_0234E988(u8*); extern void CloseTextBox2(); -extern void ov31_02383768(u8*); extern void MemFree(void*); extern void DrawTextInWindow(struct window*, u32, u32, u8*); +void ov31_02383768(s8* arg1) +{ + s32 x; + + if (arg1[0] == -2) { + return; + } + + if (ov10_022BCD10(arg1[0])) { + do { + AdvanceFrame(0x62); + x = sub_020282F4(arg1[0]); + } while (-5 != x && -4 != x); + } + CloseInventoryMenu(arg1[0]); + arg1[0] = -2; +} + void ov31_023837C8(void) { ov29_0234E988(&(OVERLAY31_UNKNOWN_POINTER__NA_238A26C->field_0x1192));