From 83bd973390af0625e6406e10d5a4fa25045f1020 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Tue, 17 Mar 2026 23:10:28 -0400 Subject: [PATCH] Decomped sub_0205BC30 Decomped by @slaw-22 --- .../{main_0205BC30.inc => main_0205BC94.inc} | 2 - asm/{main_0205BC30.s => main_0205BC94.s} | 33 +---------------- include/main_0205BC30.h | 6 +++ main.lsf | 3 +- src/main_0205BC30.c | 37 +++++++++++++++++++ 5 files changed, 46 insertions(+), 35 deletions(-) rename asm/include/{main_0205BC30.inc => main_0205BC94.inc} (99%) rename asm/{main_0205BC30.s => main_0205BC94.s} (99%) create mode 100644 include/main_0205BC30.h create mode 100644 src/main_0205BC30.c diff --git a/asm/include/main_0205BC30.inc b/asm/include/main_0205BC94.inc similarity index 99% rename from asm/include/main_0205BC30.inc rename to asm/include/main_0205BC94.inc index e4ad038a..5b78506f 100644 --- a/asm/include/main_0205BC30.inc +++ b/asm/include/main_0205BC94.inc @@ -371,7 +371,6 @@ .public sub_02051134 .public sub_02051620 .public sub_02051648 -.public sub_02051788 .public sub_02052C3C .public sub_02052E2C .public sub_02054F18 @@ -379,7 +378,6 @@ .public sub_02055474 .public sub_020554D8 .public sub_020555D0 -.public sub_02055F04 .public sub_020568A4 .public sub_02056914 .public sub_02056D70 diff --git a/asm/main_0205BC30.s b/asm/main_0205BC94.s similarity index 99% rename from asm/main_0205BC30.s rename to asm/main_0205BC94.s index 15a2da06..bf0b28f7 100644 --- a/asm/main_0205BC30.s +++ b/asm/main_0205BC94.s @@ -1,39 +1,8 @@ .include "asm/macros.inc" - .include "main_0205BC30.inc" + .include "main_0205BC94.inc" .text - arm_func_start sub_0205BC30 -sub_0205BC30: ; 0x0205BC30 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r0, #0 - bne _0205BC58 - ldr r0, _0205BC90 ; =_020B0A54 - mov r1, #0 - ldr r0, [r0, #8] - mov r2, #0x44 - bl MemsetSimple - ldmia sp!, {r4, pc} -_0205BC58: - ldr r2, _0205BC90 ; =_020B0A54 - mov r1, r0 - ldr r0, [r2, #8] - bl sub_02055F04 - cmp r4, #0 - ldmneia sp!, {r4, pc} - ldr r0, _0205BC90 ; =_020B0A54 - ldr r0, [r0, #8] - ldrb r0, [r0, #2] - bl sub_02051788 - ldr r1, _0205BC90 ; =_020B0A54 - ldr r1, [r1, #8] - strb r0, [r1, #2] - ldmia sp!, {r4, pc} - .align 2, 0 -_0205BC90: .word _020B0A54 - arm_func_end sub_0205BC30 - arm_func_start sub_0205BC94 sub_0205BC94: ; 0x0205BC94 ldr r1, _0205BCC0 ; =_020B0A54 diff --git a/include/main_0205BC30.h b/include/main_0205BC30.h new file mode 100644 index 00000000..a42baf1d --- /dev/null +++ b/include/main_0205BC30.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_0205BC30_H +#define PMDSKY_MAIN_0205BC30_H + +void sub_0205BC30(u32 a, u32 b); + +#endif //PMDSKY_MAIN_0205BC30_H diff --git a/main.lsf b/main.lsf index 89a71b8f..140e08f4 100644 --- a/main.lsf +++ b/main.lsf @@ -157,7 +157,8 @@ Static main Object src/main_0205B9C8.o Object asm/main_0205BA0C.o Object src/main_0205BBFC.o - Object asm/main_0205BC30.o + Object src/main_0205BC30.o + Object asm/main_0205BC94.o Object src/dungeon_init_2.o Object asm/main_0206A750.o Object src/main_0206C98C.o diff --git a/src/main_0205BC30.c b/src/main_0205BC30.c new file mode 100644 index 00000000..0a15d337 --- /dev/null +++ b/src/main_0205BC30.c @@ -0,0 +1,37 @@ +#include "main_0205BC30.h" +#include "main_0200330C.h" + +struct unkStruct_020B0A54_inner { + u8 padding[2]; + u8 val; +}; + +// Should match the struct in main_0205B690, but haven't gotten it to match yet. +// https://decomp.me/scratch/e6YZI +struct unkStruct_020B0A54 { + u8 padding[8]; + struct unkStruct_020B0A54_inner *inner; +}; + +extern void sub_02055F04(struct unkStruct_020B0A54_inner *p, u32 a); +extern u32 sub_02051788(u32 val); + +extern struct unkStruct_020B0A54 _020B0A54; + +void sub_0205BC30(u32 a, u32 b) +{ + if (a == 0) + { + MemsetSimple((u8*) _020B0A54.inner, 0, 0x44); + return; + } + + sub_02055F04(_020B0A54.inner, a); + + if (b != 0) + { + return; + } + + _020B0A54.inner->val = (u8)sub_02051788(_020B0A54.inner->val); +}