diff --git a/asm/code_08049CD4.s b/asm/code_08049D30.s similarity index 96% rename from asm/code_08049CD4.s rename to asm/code_08049D30.s index 7322d820..30f1b5db 100644 --- a/asm/code_08049CD4.s +++ b/asm/code_08049D30.s @@ -6,58 +6,6 @@ .text - - thumb_func_start sub_08049CD4 -sub_08049CD4: @ 0x08049CD4 - push {r4, lr} - movs r0, #1 - rsbs r0, r0, #0 - ldr r4, _08049CEC @ =gUnk_02024050 - adds r1, r4, #0 - movs r2, #0x40 - bl _DmaFill32 - ldr r0, _08049CF0 @ =gUnk_020354B0 - str r4, [r0] - pop {r4, pc} - .align 2, 0 -_08049CEC: .4byte gUnk_02024050 -_08049CF0: .4byte gUnk_020354B0 - - thumb_func_start sub_08049CF4 -sub_08049CF4: @ 0x08049CF4 - push {lr} - adds r0, #0x6c - ldrb r3, [r0] - movs r0, #0x80 - ands r0, r3 - cmp r0, #0 - beq _08049D14 - ldr r0, _08049D18 @ =gUnk_020354B0 - ldr r2, [r0] - movs r0, #0x1f - ands r3, r0 - movs r1, #1 - lsls r1, r3 - ldr r0, [r2, #4] - orrs r0, r1 - str r0, [r2, #4] -_08049D14: - pop {pc} - .align 2, 0 -_08049D18: .4byte gUnk_020354B0 - - thumb_func_start sub_08049D1C -sub_08049D1C: @ 0x08049D1C - ldr r1, _08049D2C @ =gUnk_020354B0 - ldr r1, [r1] - ldr r1, [r1, #4] - lsrs r1, r0 - movs r0, #1 - bics r0, r1 - bx lr - .align 2, 0 -_08049D2C: .4byte gUnk_020354B0 - thumb_func_start sub_08049D30 sub_08049D30: @ 0x08049D30 push {r4, r5, r6, lr} diff --git a/linker.ld b/linker.ld index 2c048d54..aec78c41 100644 --- a/linker.ld +++ b/linker.ld @@ -430,7 +430,8 @@ SECTIONS { asm/treeItem.o(.text); asm/enemy66.o(.text); /* END enemies */ - asm/code_08049CD4.o(.text); + src/code_08049CD4.o(.text); + asm/code_08049D30.o(.text); asm/sub_0804AA30.o(.text); src/createEnemy.o(.text); src/sub_0804AA84.o(.text); diff --git a/src/code_08049CD4.c b/src/code_08049CD4.c new file mode 100644 index 00000000..00ae1d8a --- /dev/null +++ b/src/code_08049CD4.c @@ -0,0 +1,25 @@ +#include "global.h" + +extern u32* gUnk_020354B0; +extern u32 gUnk_02024050; + +extern void _DmaFill32(u32, void*, u32); + +void sub_08049CD4() { + _DmaFill32(0xFFFFFFFF, &gUnk_02024050, 0x40); + gUnk_020354B0 = &gUnk_02024050; +} + +void sub_08049CF4(u8* arg0) { + u8 field_0x6c = *(arg0 + 0x6c); + if (field_0x6c & 0x80) { + *(gUnk_020354B0 + 1) |= 1 << (field_0x6c & 0x1f); + } +} + +u32 sub_08049D1C(u32 arg0) { + u32 bitmask = *(gUnk_020354B0 + 1) >> arg0; + u32 output = 1; + output &= ~bitmask; + return output; +} \ No newline at end of file