summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/unk_0201B8B8.s83
-rw-r--r--arm9/src/unk_0201B8B8.c33
-rw-r--r--include/unk_0201B8B88.h9
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