diff options
-rw-r--r-- | arm9/asm/unk_0201B8B8.s | 83 | ||||
-rw-r--r-- | arm9/src/unk_0201B8B8.c | 33 | ||||
-rw-r--r-- | include/unk_0201B8B88.h | 9 |
3 files changed, 42 insertions, 83 deletions
diff --git a/arm9/asm/unk_0201B8B8.s b/arm9/asm/unk_0201B8B8.s deleted file mode 100644 index 13107df8..00000000 --- a/arm9/asm/unk_0201B8B8.s +++ /dev/null @@ -1,83 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0201B8B8 -FUN_0201B8B8: ; 0x0201B8B8 - push {r4, lr} - add r4, r0, #0x0 - ldrh r1, [r4, #0x0] - ldr r0, _0201B8DC ; =0x0000FFFE - cmp r1, r0 - beq _0201B8C8 - bl ErrorHandling -_0201B8C8: - ldrh r1, [r4, #0x0] - ldr r0, _0201B8DC ; =0x0000FFFE - cmp r1, r0 - bne _0201B8D8 - ldrh r0, [r4, #0x4] - add r1, r4, #0x6 - lsl r0, r0, #0x1 - add r4, r1, r0 -_0201B8D8: - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 -_0201B8DC: .word 0x0000FFFE - - thumb_func_start FUN_0201B8E0 -FUN_0201B8E0: ; 0x0201B8E0 - push {r4, lr} - add r4, r0, #0x0 - ldrh r1, [r4, #0x0] - ldr r0, _0201B8F4 ; =0x0000FFFE - cmp r1, r0 - beq _0201B8F0 - bl ErrorHandling -_0201B8F0: - ldrh r0, [r4, #0x2] - pop {r4, pc} - .balign 4 -_0201B8F4: .word 0x0000FFFE - - thumb_func_start FUN_0201B8F8 -FUN_0201B8F8: ; 0x0201B8F8 - push {r3, lr} - bl FUN_0201B8E0 - mov r1, #0xff - lsl r1, r1, #0x8 - and r1, r0 - mov r0, #0x1 - lsl r0, r0, #0x8 - cmp r1, r0 - bne _0201B910 - mov r0, #0x1 - pop {r3, pc} -_0201B910: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0201B914 -FUN_0201B914: ; 0x0201B914 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldrh r1, [r5, #0x0] - ldr r0, _0201B938 ; =0x0000FFFE - cmp r1, r0 - beq _0201B926 - bl ErrorHandling -_0201B926: - ldrh r0, [r5, #0x4] - cmp r4, r0 - blo _0201B930 - bl ErrorHandling -_0201B930: - lsl r0, r4, #0x1 - add r0, r5, r0 - ldrh r0, [r0, #0x6] - pop {r3-r5, pc} - .balign 4 -_0201B938: .word 0x0000FFFE diff --git a/arm9/src/unk_0201B8B8.c b/arm9/src/unk_0201B8B8.c new file mode 100644 index 00000000..abb92067 --- /dev/null +++ b/arm9/src/unk_0201B8B8.c @@ -0,0 +1,33 @@ +#include "global.h" +#include "unk_0201B8B88.h" + +#pragma thumb on + +const u16 * FUN_0201B8B8(const u16 * r4) +{ + GF_ASSERT(*r4 == 0xFFFE); + if (*r4 == 0xFFFE) { + u16 r0 = r4[2]; + r4 += 3; + r4 += r0; + } + return r4; +} + +u16 FUN_0201B8E0(const u16 * r4) +{ + GF_ASSERT(*r4 == 0xFFFE); + return r4[1]; +} + +BOOL FUN_0201B8F8(const u16 * r4) +{ + return (FUN_0201B8E0(r4) & 0xFF00) == 0x100; +} + +u16 FUN_0201B914(const u16 * r5, u32 r4) +{ + GF_ASSERT(*r5 == 0xFFFE); + GF_ASSERT(r4 < r5[2]); + return r5[3 + r4]; +} diff --git a/include/unk_0201B8B88.h b/include/unk_0201B8B88.h new file mode 100644 index 00000000..95eab968 --- /dev/null +++ b/include/unk_0201B8B88.h @@ -0,0 +1,9 @@ +#ifndef POKEDIAMOND_UNK_0201B8B88_H +#define POKEDIAMOND_UNK_0201B8B88_H + +const u16 * FUN_0201B8B8(const u16 * r4); +u16 FUN_0201B8E0(const u16 * r4); +BOOL FUN_0201B8F8(const u16 * r4); +u16 FUN_0201B914(const u16 * r5, u32 r4); + +#endif //POKEDIAMOND_UNK_0201B8B88_H |