diff options
-rw-r--r-- | asm/code_8041AD0.s | 431 | ||||
-rw-r--r-- | src/code_8041AD0.c | 265 | ||||
-rw-r--r-- | src/code_80428A0.c | 2 |
3 files changed, 264 insertions, 434 deletions
diff --git a/asm/code_8041AD0.s b/asm/code_8041AD0.s index 6ddeb36..c7ad98b 100644 --- a/asm/code_8041AD0.s +++ b/asm/code_8041AD0.s @@ -5,437 +5,6 @@ .text - thumb_func_start sub_8041C94 -sub_8041C94: - push {lr} - ldr r1, _08041CA4 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041CA4: .4byte 0x00000171 - thumb_func_end sub_8041C94 - - thumb_func_start sub_8041CA8 -sub_8041CA8: - push {lr} - movs r1, 0x7 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041CA8 - - thumb_func_start sub_8041CB8 -sub_8041CB8: - push {lr} - ldr r1, _08041CC8 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041CC8: .4byte 0x0000018b - thumb_func_end sub_8041CB8 - - thumb_func_start sub_8041CCC -sub_8041CCC: - push {lr} - movs r1, 0xC5 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041CCC - - thumb_func_start sub_8041CDC -sub_8041CDC: - push {lr} - movs r1, 0x5 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041CDC - - thumb_func_start sub_8041CEC -sub_8041CEC: - push {lr} - ldr r1, _08041CF8 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041CF8: .4byte 0x0000019d - thumb_func_end sub_8041CEC - - thumb_func_start nullsub_74 -nullsub_74: - bx lr - thumb_func_end nullsub_74 - - thumb_func_start sub_8041D00 -sub_8041D00: - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - movs r1, 0x2F - movs r2, 0x1 - bl sub_804151C - adds r0, r4, 0 - movs r1, 0x30 - movs r2, 0x1 - bl sub_804151C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8041D00 - - thumb_func_start nullsub_75 -nullsub_75: - bx lr - thumb_func_end nullsub_75 - - thumb_func_start nullsub_76 -nullsub_76: - bx lr - thumb_func_end nullsub_76 - - thumb_func_start nullsub_77 -nullsub_77: - bx lr - thumb_func_end nullsub_77 - - thumb_func_start nullsub_78 -nullsub_78: - bx lr - thumb_func_end nullsub_78 - - thumb_func_start nullsub_79 -nullsub_79: - bx lr - thumb_func_end nullsub_79 - - thumb_func_start nullsub_80 -nullsub_80: - bx lr - thumb_func_end nullsub_80 - - thumb_func_start sub_8041D38 -sub_8041D38: - push {lr} - movs r1, 0x21 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041D38 - - thumb_func_start sub_8041D48 -sub_8041D48: - push {lr} - ldr r1, _08041D54 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041D54: .4byte 0x00000191 - thumb_func_end sub_8041D48 - - thumb_func_start nullsub_81 -nullsub_81: - bx lr - thumb_func_end nullsub_81 - - thumb_func_start sub_8041D5C -sub_8041D5C: - push {r4,lr} - adds r4, r0, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _08041D7E - ldr r0, [r4, 0x70] - movs r1, 0x89 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - movs r2, 0x1 - movs r3, 0xB - bl sub_803ED30 -_08041D7E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8041D5C - - thumb_func_start sub_8041D84 -sub_8041D84: - push {lr} - ldr r1, _08041D90 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041D90: .4byte 0x0000019f - thumb_func_end sub_8041D84 - - thumb_func_start nullsub_82 -nullsub_82: - bx lr - thumb_func_end nullsub_82 - - thumb_func_start nullsub_83 -nullsub_83: - bx lr - thumb_func_end nullsub_83 - - thumb_func_start sub_8041D9C -sub_8041D9C: - push {lr} - ldr r1, _08041DAC - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041DAC: .4byte 0x00000131 - thumb_func_end sub_8041D9C - - thumb_func_start sub_8041DB0 -sub_8041DB0: - push {lr} - movs r1, 0x30 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041DB0 - - thumb_func_start nullsub_84 -nullsub_84: - bx lr - thumb_func_end nullsub_84 - - thumb_func_start nullsub_85 -nullsub_85: - bx lr - thumb_func_end nullsub_85 - - thumb_func_start nullsub_204 -nullsub_204: - bx lr - thumb_func_end nullsub_204 - - thumb_func_start nullsub_86 -nullsub_86: - bx lr - thumb_func_end nullsub_86 - - thumb_func_start nullsub_87 -nullsub_87: - bx lr - thumb_func_end nullsub_87 - - thumb_func_start nullsub_88 -nullsub_88: - bx lr - thumb_func_end nullsub_88 - - thumb_func_start sub_8041DD8 -sub_8041DD8: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - asrs r5, r1, 16 - movs r1, 0xE - bl sub_8071858 - lsls r0, 24 - cmp r0, 0 - beq _08041DF8 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_804151C - b _08041E02 -_08041DF8: - adds r0, r4, 0 - movs r1, 0xE - movs r2, 0x1 - bl sub_804151C -_08041E02: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8041DD8 - - thumb_func_start nullsub_89 -nullsub_89: - bx lr - thumb_func_end nullsub_89 - - thumb_func_start sub_8041E0C -sub_8041E0C: - push {lr} - movs r1, 0x41 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E0C - - thumb_func_start sub_8041E1C -sub_8041E1C: - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x8F - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - movs r1, 0xCE - lsls r1, 1 - adds r0, r4, 0 - bl sub_80421C0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8041E1C - - thumb_func_start sub_8041E3C -sub_8041E3C: - push {lr} - movs r1, 0xD7 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E3C - - thumb_func_start sub_8041E4C -sub_8041E4C: - push {lr} - ldr r1, _08041E5C - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041E5C: .4byte 0x000001b1 - thumb_func_end sub_8041E4C - - thumb_func_start sub_8041E60 -sub_8041E60: - push {lr} - ldr r1, _08041E70 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041E70: .4byte 0x000001a9 - thumb_func_end sub_8041E60 - - thumb_func_start sub_8041E74 -sub_8041E74: - push {lr} - movs r1, 0xC9 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E74 - - thumb_func_start sub_8041E84 -sub_8041E84: - push {lr} - movs r1, 0xC7 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E84 - - thumb_func_start sub_8041E94 -sub_8041E94: - push {lr} - movs r1, 0xC8 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E94 - - thumb_func_start sub_8041EA4 -sub_8041EA4: - push {lr} - movs r1, 0x15 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041EA4 - - thumb_func_start sub_8041EB4 -sub_8041EB4: - push {lr} - ldr r1, _08041EC4 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041EC4: .4byte 0x00000171 - thumb_func_end sub_8041EB4 - - thumb_func_start sub_8041EC8 -sub_8041EC8: - push {lr} - ldr r1, _08041ED4 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041ED4: .4byte 0x00000197 - thumb_func_end sub_8041EC8 - - thumb_func_start sub_8041ED8 -sub_8041ED8: - push {lr} - ldr r1, _08041EE4 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041EE4: .4byte 0x00000197 - thumb_func_end sub_8041ED8 - - thumb_func_start sub_8041EE8 -sub_8041EE8: - push {lr} - movs r1, 0x15 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041EE8 - - thumb_func_start sub_8041EF8 -sub_8041EF8: - push {lr} - movs r1, 0xF - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041EF8 - thumb_func_start sub_8041F08 sub_8041F08: push {lr} diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 050f756..6cf8ae0 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -1,8 +1,18 @@ #include "global.h" -extern void sub_804151C(u32 r0, u32 r1, u32 r2); +struct unkStruct_8041D5C +{ + u8 padding[0x70]; + u8 *unk70[100]; +}; + +extern void sub_803ED30(u8, struct unkStruct_8041D5C *r0, u8, u8); +extern void sub_804151C(u32 r0, u32 r1, u8 r2); extern void sub_80421C0(u32 r0, u32 r1); -extern void sub_806CDD4(u32 r0, u8, u8); +extern u8 sub_8042768(void); +extern void sub_806CDD4(u32 r0, u8, u32); +extern u8 sub_8071858(u32, u8); + void sub_8041AD0(u32 r0) { @@ -181,3 +191,254 @@ void nullsub_72(void) void nullsub_73(void) { } + +void sub_8041C94(u32 r0) +{ + sub_804151C(r0, 0x171, 1); +} + +void sub_8041CA8(u32 r0) +{ + sub_804151C(r0, 7, 1); +} + +void sub_8041CB8(u32 r0) +{ + sub_804151C(r0, 0x18b, 1); +} + +void sub_8041CCC(u32 r0) +{ + sub_804151C(r0, 0xC5 << 1, 1); +} + +void sub_8041CDC(u32 r0) +{ + sub_804151C(r0, 5, 1); +} + +void sub_8041CEC(u32 r0) +{ + sub_80421C0(r0, 0x19d); +} + +void nullsub_74(void) +{ +} + +void sub_8041D00(u32 r0, u32 r1) +{ + sub_804151C(r1, 0x2F, 1); + sub_804151C(r0, 0x30, 1); +} + +void nullsub_75(void) +{ +} + +void nullsub_76(void) +{ +} + +void nullsub_77(void) +{ +} + +void nullsub_78(void) +{ +} + +void nullsub_79(void) +{ +} + +void nullsub_80(void) +{ +} + +void sub_8041D38(u32 r0) +{ + sub_804151C(r0, 0x21, 1); +} + +void sub_8041D48(u32 r0) +{ + sub_80421C0(r0, 0x191); +} + +void nullsub_81(void) +{ +} + +void sub_8041D5C(struct unkStruct_8041D5C *r0) +{ + u8 *temp; + if(sub_8042768() == 0) + { + return; + } + temp = *r0->unk70; + sub_803ED30(temp[0x89 << 1] , r0, 1, 0xB); +} + +void sub_8041D84(u32 r0) +{ + sub_80421C0(r0, 0x19f); +} + +void nullsub_82(void) +{ +} + +void nullsub_83(void) +{ +} + +void sub_8041D9C(u32 r0) +{ + sub_804151C(r0, 0x131, 1); +} + +void sub_8041DB0(u32 r0) +{ + sub_804151C(r0, 0x30, 1); +} + +void nullsub_84(void) +{ +} + +void nullsub_85(void) +{ +} + +void nullsub_204(void) +{ +} + +void nullsub_86(void) +{ +} + +void nullsub_87(void) +{ +} + +void nullsub_88(void) +{ +} + +#ifndef NONMATCHING +NAKED +#endif +// TODO r1 is doing an lsr instead of an asr... maybe a signed arg? +void sub_8041DD8(u32 r0, u16 r1) +{ +#ifdef NONMATCHING + if(sub_8071858(r0, 0xE) != 0) + { + sub_804151C(r0, r1, 1); + return; + } + sub_804151C(r0, 0xE, 1); +#else + asm_unified("\tpush {r4,r5,lr}\n" + "\tadds r4, r0, 0\n" + "\tlsls r1, 16\n" + "\tasrs r5, r1, 16\n" + "\tmovs r1, 0xE\n" + "\tbl sub_8071858\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08041DF8\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tmovs r2, 0x1\n" + "\tbl sub_804151C\n" + "\tb _08041E02\n" +"_08041DF8:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0xE\n" + "\tmovs r2, 0x1\n" + "\tbl sub_804151C\n" +"_08041E02:\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0"); +#endif +} + +void nullsub_89(void) +{ +} + +void sub_8041E0C(u32 r0) +{ + sub_804151C(r0, 0x41, 1); +} + +void sub_8041E1C(u32 r0) +{ + sub_804151C(r0, 0x8F << 1, 1); + sub_80421C0(r0, 0xCE << 1); +} + +void sub_8041E3C(u32 r0) +{ + sub_804151C(r0, 0xD7 << 1, 1); +} + +void sub_8041E4C(u32 r0) +{ + sub_804151C(r0, 0x1b1, 1); +} + +void sub_8041E60(u32 r0) +{ + sub_804151C(r0, 0x1a9, 1); +} + +void sub_8041E74(u32 r0) +{ + sub_804151C(r0, 0xC9 << 1, 1); +} + +void sub_8041E84(u32 r0) +{ + sub_804151C(r0, 0xC7 << 1, 1); +} + +void sub_8041E94(u32 r0) +{ + sub_804151C(r0, 0xC8 << 1, 1); +} + +void sub_8041EA4(u32 r0) +{ + sub_804151C(r0, 0x15, 1); +} + +void sub_8041EB4(u32 r0) +{ + sub_804151C(r0, 0x171, 1); +} + +void sub_8041EC8(u32 r0) +{ + sub_80421C0(r0, 0x197); +} + +void sub_8041ED8(u32 r0) +{ + sub_80421C0(r0, 0x197); +} + +void sub_8041EE8(u32 r0) +{ + sub_804151C(r0, 0x15, 1); +} + +void sub_8041EF8(u32 r0) +{ + sub_804151C(r0, 0xF, 1); +} diff --git a/src/code_80428A0.c b/src/code_80428A0.c index eab25f3..08599b7 100644 --- a/src/code_80428A0.c +++ b/src/code_80428A0.c @@ -1,6 +1,6 @@ #include "global.h" -extern void sub_804151C(u32 r0, u32 r1, u32 r2); +extern void sub_804151C(u32 r0, u32 r1, u8 r2); extern void sub_803E708(u32 r0, u32 r1); extern void sub_80416A4(u32 r0, u32 r1, u32 r2); extern void sub_80421C0(u32 r0, u32 r1); |