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); +}