summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/asm/unk_0205EC84_s.s (renamed from arm9/asm/unk_0205EC84.s)380
-rw-r--r--arm9/src/unk_0205EC84.c201
3 files changed, 206 insertions, 376 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 8dd9759c..f179bf81 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -229,6 +229,7 @@ Static arm9
Object unk_0205E4EC.o
Object unk_0205EB38.o
Object unk_0205EC84.o
+ Object unk_0205EC84_s.o
Object unk_0205F314.o
Object unk_0205F7A0.o
Object unk_0205FA2C.o
diff --git a/arm9/asm/unk_0205EC84.s b/arm9/asm/unk_0205EC84_s.s
index d247c1f8..90fa69b4 100644
--- a/arm9/asm/unk_0205EC84.s
+++ b/arm9/asm/unk_0205EC84_s.s
@@ -1,384 +1,12 @@
.include "asm/macros.inc"
.include "global.inc"
+ .extern FUN_0205EC84
+ .extern FUN_0205EC8C
+ .extern FUN_0205EC94
+ .extern FUN_0205EC9C
.text
- thumb_func_start FUN_0205EC84
-FUN_0205EC84: ; 0x0205EC84
- ldr r3, _0205EC88 ; =SetFlagInArray
- bx r3
- .balign 4
-_0205EC88: .word SetFlagInArray
-
- thumb_func_start FUN_0205EC8C
-FUN_0205EC8C: ; 0x0205EC8C
- ldr r3, _0205EC90 ; =ClearFlagInArray
- bx r3
- .balign 4
-_0205EC90: .word ClearFlagInArray
-
- thumb_func_start FUN_0205EC94
-FUN_0205EC94: ; 0x0205EC94
- ldr r3, _0205EC98 ; =CheckFlagInArray
- bx r3
- .balign 4
-_0205EC98: .word CheckFlagInArray
-
- thumb_func_start FUN_0205EC9C
-FUN_0205EC9C: ; 0x0205EC9C
- push {r3, lr}
- cmp r1, #0x0
- beq _0205ECB6
- cmp r1, #0x1
- beq _0205ECAC
- cmp r1, #0x2
- beq _0205ECC0
- b _0205ECCA
-_0205ECAC:
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- bl FUN_0205EC84
- b _0205ECCE
-_0205ECB6:
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- bl FUN_0205EC8C
- b _0205ECCE
-_0205ECC0:
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- bl FUN_0205EC94
- pop {r3, pc}
-_0205ECCA:
- bl GF_AssertFail
-_0205ECCE:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0205ECD4
-FUN_0205ECD4: ; 0x0205ECD4
- ldr r3, _0205ECDC ; =FUN_0205EC84
- mov r1, #0x96
- lsl r1, r1, #0x4
- bx r3
- .balign 4
-_0205ECDC: .word FUN_0205EC84
-
- thumb_func_start FUN_0205ECE0
-FUN_0205ECE0: ; 0x0205ECE0
- ldr r3, _0205ECE8 ; =FUN_0205EC94
- mov r1, #0x96
- lsl r1, r1, #0x4
- bx r3
- .balign 4
-_0205ECE8: .word FUN_0205EC94
-
- thumb_func_start FUN_0205ECEC
-FUN_0205ECEC: ; 0x0205ECEC
- ldr r3, _0205ECF4 ; =FUN_0205EC94
- ldr r1, _0205ECF8 ; =0x0000098D
- bx r3
- nop
-_0205ECF4: .word FUN_0205EC94
-_0205ECF8: .word 0x0000098D
-
- thumb_func_start FUN_0205ECFC
-FUN_0205ECFC: ; 0x0205ECFC
- ldr r3, _0205ED04 ; =FUN_0205EC84
- ldr r1, _0205ED08 ; =0x00000964
- bx r3
- nop
-_0205ED04: .word FUN_0205EC84
-_0205ED08: .word 0x00000964
-
- thumb_func_start FUN_0205ED0C
-FUN_0205ED0C: ; 0x0205ED0C
- ldr r3, _0205ED14 ; =FUN_0205EC94
- ldr r1, _0205ED18 ; =0x00000964
- bx r3
- nop
-_0205ED14: .word FUN_0205EC94
-_0205ED18: .word 0x00000964
-
- thumb_func_start FUN_0205ED1C
-FUN_0205ED1C: ; 0x0205ED1C
- ldr r3, _0205ED24 ; =FUN_0205EC84
- ldr r1, _0205ED28 ; =0x00000961
- bx r3
- nop
-_0205ED24: .word FUN_0205EC84
-_0205ED28: .word 0x00000961
-
- thumb_func_start FUN_0205ED2C
-FUN_0205ED2C: ; 0x0205ED2C
- ldr r3, _0205ED34 ; =FUN_0205EC8C
- ldr r1, _0205ED38 ; =0x00000961
- bx r3
- nop
-_0205ED34: .word FUN_0205EC8C
-_0205ED38: .word 0x00000961
-
- thumb_func_start FUN_0205ED3C
-FUN_0205ED3C: ; 0x0205ED3C
- ldr r3, _0205ED44 ; =FUN_0205EC94
- ldr r1, _0205ED48 ; =0x00000961
- bx r3
- nop
-_0205ED44: .word FUN_0205EC94
-_0205ED48: .word 0x00000961
-
- thumb_func_start FUN_0205ED4C
-FUN_0205ED4C: ; 0x0205ED4C
- ldr r3, _0205ED54 ; =FUN_0205EC84
- ldr r1, _0205ED58 ; =0x00000965
- bx r3
- nop
-_0205ED54: .word FUN_0205EC84
-_0205ED58: .word 0x00000965
-
- thumb_func_start FUN_0205ED5C
-FUN_0205ED5C: ; 0x0205ED5C
- ldr r3, _0205ED64 ; =FUN_0205EC8C
- ldr r1, _0205ED68 ; =0x00000965
- bx r3
- nop
-_0205ED64: .word FUN_0205EC8C
-_0205ED68: .word 0x00000965
-
- thumb_func_start FUN_0205ED6C
-FUN_0205ED6C: ; 0x0205ED6C
- ldr r3, _0205ED74 ; =FUN_0205EC94
- ldr r1, _0205ED78 ; =0x00000965
- bx r3
- nop
-_0205ED74: .word FUN_0205EC94
-_0205ED78: .word 0x00000965
-
- thumb_func_start FUN_0205ED7C
-FUN_0205ED7C: ; 0x0205ED7C
- ldr r3, _0205ED84 ; =FUN_0205EC84
- ldr r1, _0205ED88 ; =0x0000096D
- bx r3
- nop
-_0205ED84: .word FUN_0205EC84
-_0205ED88: .word 0x0000096D
-
- thumb_func_start FUN_0205ED8C
-FUN_0205ED8C: ; 0x0205ED8C
- ldr r3, _0205ED94 ; =FUN_0205EC8C
- ldr r1, _0205ED98 ; =0x0000096D
- bx r3
- nop
-_0205ED94: .word FUN_0205EC8C
-_0205ED98: .word 0x0000096D
-
- thumb_func_start FUN_0205ED9C
-FUN_0205ED9C: ; 0x0205ED9C
- ldr r3, _0205EDA4 ; =FUN_0205EC94
- ldr r1, _0205EDA8 ; =0x0000096D
- bx r3
- nop
-_0205EDA4: .word FUN_0205EC94
-_0205EDA8: .word 0x0000096D
-
- thumb_func_start FUN_0205EDAC
-FUN_0205EDAC: ; 0x0205EDAC
- ldr r3, _0205EDB4 ; =FUN_0205EC84
- ldr r1, _0205EDB8 ; =0x0000096E
- bx r3
- nop
-_0205EDB4: .word FUN_0205EC84
-_0205EDB8: .word 0x0000096E
-
- thumb_func_start FUN_0205EDBC
-FUN_0205EDBC: ; 0x0205EDBC
- ldr r3, _0205EDC4 ; =FUN_0205EC84
- ldr r1, _0205EDC8 ; =0x0000096F
- bx r3
- nop
-_0205EDC4: .word FUN_0205EC84
-_0205EDC8: .word 0x0000096F
-
- thumb_func_start FUN_0205EDCC
-FUN_0205EDCC: ; 0x0205EDCC
- ldr r3, _0205EDD4 ; =FUN_0205EC84
- mov r1, #0x97
- lsl r1, r1, #0x4
- bx r3
- .balign 4
-_0205EDD4: .word FUN_0205EC84
-
- thumb_func_start FUN_0205EDD8
-FUN_0205EDD8: ; 0x0205EDD8
- ldr r3, _0205EDE0 ; =FUN_0205EC84
- ldr r1, _0205EDE4 ; =0x00000971
- bx r3
- nop
-_0205EDE0: .word FUN_0205EC84
-_0205EDE4: .word 0x00000971
-
- thumb_func_start FUN_0205EDE8
-FUN_0205EDE8: ; 0x0205EDE8
- ldr r3, _0205EDF0 ; =FUN_0205EC84
- ldr r1, _0205EDF4 ; =0x00000972
- bx r3
- nop
-_0205EDF0: .word FUN_0205EC84
-_0205EDF4: .word 0x00000972
-
- thumb_func_start FUN_0205EDF8
-FUN_0205EDF8: ; 0x0205EDF8
- ldr r3, _0205EE00 ; =FUN_0205EC84
- ldr r1, _0205EE04 ; =0x00000973
- bx r3
- nop
-_0205EE00: .word FUN_0205EC84
-_0205EE04: .word 0x00000973
-
- thumb_func_start FUN_0205EE08
-FUN_0205EE08: ; 0x0205EE08
- push {r3, lr}
- cmp r1, #0x4
- bhi _0205EE4A
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0205EE1A: ; jump table (using 16-bit offset)
- .short _0205EE24 - _0205EE1A - 2; case 0
- .short _0205EE2C - _0205EE1A - 2; case 1
- .short _0205EE34 - _0205EE1A - 2; case 2
- .short _0205EE3C - _0205EE1A - 2; case 3
- .short _0205EE44 - _0205EE1A - 2; case 4
-_0205EE24:
- ldr r1, _0205EE4C ; =0x00000968
- bl FUN_0205EC84
- pop {r3, pc}
-_0205EE2C:
- ldr r1, _0205EE50 ; =0x00000969
- bl FUN_0205EC84
- pop {r3, pc}
-_0205EE34:
- ldr r1, _0205EE54 ; =0x0000096A
- bl FUN_0205EC84
- pop {r3, pc}
-_0205EE3C:
- ldr r1, _0205EE58 ; =0x0000096B
- bl FUN_0205EC84
- pop {r3, pc}
-_0205EE44:
- ldr r1, _0205EE5C ; =0x0000096C
- bl FUN_0205EC84
-_0205EE4A:
- pop {r3, pc}
- .balign 4
-_0205EE4C: .word 0x00000968
-_0205EE50: .word 0x00000969
-_0205EE54: .word 0x0000096A
-_0205EE58: .word 0x0000096B
-_0205EE5C: .word 0x0000096C
-
- thumb_func_start FUN_0205EE60
-FUN_0205EE60: ; 0x0205EE60
- push {r3, lr}
- cmp r1, #0x4
- bhi _0205EEA2
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0205EE72: ; jump table (using 16-bit offset)
- .short _0205EE7C - _0205EE72 - 2; case 0
- .short _0205EE84 - _0205EE72 - 2; case 1
- .short _0205EE8C - _0205EE72 - 2; case 2
- .short _0205EE94 - _0205EE72 - 2; case 3
- .short _0205EE9C - _0205EE72 - 2; case 4
-_0205EE7C:
- ldr r1, _0205EEA4 ; =0x00000968
- bl FUN_0205EC94
- pop {r3, pc}
-_0205EE84:
- ldr r1, _0205EEA8 ; =0x00000969
- bl FUN_0205EC94
- pop {r3, pc}
-_0205EE8C:
- ldr r1, _0205EEAC ; =0x0000096A
- bl FUN_0205EC94
- pop {r3, pc}
-_0205EE94:
- ldr r1, _0205EEB0 ; =0x0000096B
- bl FUN_0205EC94
- pop {r3, pc}
-_0205EE9C:
- ldr r1, _0205EEB4 ; =0x0000096C
- bl FUN_0205EC94
-_0205EEA2:
- pop {r3, pc}
- .balign 4
-_0205EEA4: .word 0x00000968
-_0205EEA8: .word 0x00000969
-_0205EEAC: .word 0x0000096A
-_0205EEB0: .word 0x0000096B
-_0205EEB4: .word 0x0000096C
-
- thumb_func_start FUN_0205EEB8
-FUN_0205EEB8: ; 0x0205EEB8
- push {r3, lr}
- mov r2, #0x0
- cmp r1, #0x5
- bhi _0205EF0A
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0205EECC: ; jump table (using 16-bit offset)
- .short _0205EF0A - _0205EECC - 2; case 0
- .short _0205EED8 - _0205EECC - 2; case 1
- .short _0205EEE2 - _0205EECC - 2; case 2
- .short _0205EEEE - _0205EECC - 2; case 3
- .short _0205EEF8 - _0205EECC - 2; case 4
- .short _0205EF02 - _0205EECC - 2; case 5
-_0205EED8:
- ldr r1, _0205EF10 ; =0x0000097F
- bl FUN_0205EC94
- add r2, r0, #0x0
- b _0205EF0A
-_0205EEE2:
- mov r1, #0x26
- lsl r1, r1, #0x6
- bl FUN_0205EC94
- add r2, r0, #0x0
- b _0205EF0A
-_0205EEEE:
- ldr r1, _0205EF14 ; =0x00000981
- bl FUN_0205EC94
- add r2, r0, #0x0
- b _0205EF0A
-_0205EEF8:
- ldr r1, _0205EF18 ; =0x00000982
- bl FUN_0205EC94
- add r2, r0, #0x0
- b _0205EF0A
-_0205EF02:
- ldr r1, _0205EF1C ; =0x00000983
- bl FUN_0205EC94
- add r2, r0, #0x0
-_0205EF0A:
- add r0, r2, #0x0
- pop {r3, pc}
- nop
-_0205EF10: .word 0x0000097F
-_0205EF14: .word 0x00000981
-_0205EF18: .word 0x00000982
-_0205EF1C: .word 0x00000983
-
thumb_func_start FUN_0205EF20
FUN_0205EF20: ; 0x0205EF20
push {r4-r6, lr}
diff --git a/arm9/src/unk_0205EC84.c b/arm9/src/unk_0205EC84.c
new file mode 100644
index 00000000..94795ee7
--- /dev/null
+++ b/arm9/src/unk_0205EC84.c
@@ -0,0 +1,201 @@
+#include "global.h"
+#include "event_data.h"
+
+THUMB_FUNC void FUN_0205EC84(struct ScriptState * state, u16 flag_id)
+{
+ SetFlagInArray(state, flag_id);
+}
+
+THUMB_FUNC void FUN_0205EC8C(struct ScriptState * state, u16 flag_id)
+{
+ ClearFlagInArray(state, flag_id);
+}
+
+THUMB_FUNC BOOL FUN_0205EC94(struct ScriptState * state, u16 flag_id)
+{
+ return CheckFlagInArray(state, flag_id);
+}
+
+THUMB_FUNC BOOL FUN_0205EC9C(struct ScriptState * state, u32 op, u32 flag_id)
+{
+ switch (op)
+ {
+ case 1:
+ FUN_0205EC84(state, (u16)flag_id);
+ break;
+ case 0:
+ FUN_0205EC8C(state, (u16)flag_id);
+ break;
+ case 2:
+ return FUN_0205EC94(state, (u16)flag_id);
+ default:
+ GF_ASSERT(0);
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0205ECD4(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x960);
+}
+
+THUMB_FUNC BOOL FUN_0205ECE0(struct ScriptState * state)
+{
+ return FUN_0205EC94(state, 0x960);
+}
+
+THUMB_FUNC BOOL FUN_0205ECEC(struct ScriptState * state)
+{
+ return FUN_0205EC94(state, 0x98D);
+}
+
+THUMB_FUNC void FUN_0205ECFC(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x964);
+}
+
+THUMB_FUNC BOOL FUN_0205ED0C(struct ScriptState * state)
+{
+ return FUN_0205EC94(state, 0x964);
+}
+
+THUMB_FUNC void FUN_0205ED1C(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x961);
+}
+
+THUMB_FUNC void FUN_0205ED2C(struct ScriptState * state)
+{
+ FUN_0205EC8C(state, 0x961);
+}
+
+THUMB_FUNC BOOL FUN_0205ED3C(struct ScriptState * state)
+{
+ return FUN_0205EC94(state, 0x961);
+}
+
+THUMB_FUNC void FUN_0205ED4C(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x965);
+}
+
+THUMB_FUNC void FUN_0205ED5C(struct ScriptState * state)
+{
+ FUN_0205EC8C(state, 0x965);
+}
+
+THUMB_FUNC BOOL FUN_0205ED6C(struct ScriptState * state)
+{
+ return FUN_0205EC94(state, 0x965);
+}
+
+THUMB_FUNC void FUN_0205ED7C(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x96D);
+}
+
+THUMB_FUNC void FUN_0205ED8C(struct ScriptState * state)
+{
+ FUN_0205EC8C(state, 0x96D);
+}
+
+THUMB_FUNC BOOL FUN_0205ED9C(struct ScriptState * state)
+{
+ return FUN_0205EC94(state, 0x96D);
+}
+
+THUMB_FUNC void FUN_0205EDAC(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x96E);
+}
+
+THUMB_FUNC void FUN_0205EDBC(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x96F);
+}
+
+THUMB_FUNC void FUN_0205EDCC(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x970);
+}
+
+THUMB_FUNC void FUN_0205EDD8(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x971);
+}
+
+THUMB_FUNC void FUN_0205EDE8(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x972);
+}
+
+THUMB_FUNC void FUN_0205EDF8(struct ScriptState * state)
+{
+ FUN_0205EC84(state, 0x973);
+}
+
+THUMB_FUNC void FUN_0205EE08(struct ScriptState * state, u32 a1)
+{
+ switch (a1)
+ {
+ case 0:
+ FUN_0205EC84(state, 0x968);
+ break;
+ case 1:
+ FUN_0205EC84(state, 0x969);
+ break;
+ case 2:
+ FUN_0205EC84(state, 0x96A);
+ break;
+ case 3:
+ FUN_0205EC84(state, 0x96B);
+ break;
+ case 4:
+ FUN_0205EC84(state, 0x96C);
+ break;
+ }
+}
+
+THUMB_FUNC BOOL FUN_0205EE60(struct ScriptState * state, u32 a1)
+{
+ switch (a1)
+ {
+ case 0:
+ return FUN_0205EC94(state, 0x968);
+ case 1:
+ return FUN_0205EC94(state, 0x969);
+ case 2:
+ return FUN_0205EC94(state, 0x96A);
+ case 3:
+ return FUN_0205EC94(state, 0x96B);
+ case 4:
+ return FUN_0205EC94(state, 0x96C);
+ }
+ // UB: No return value
+}
+
+THUMB_FUNC BOOL FUN_0205EEB8(struct ScriptState * state, u32 a1)
+{
+ BOOL ret = FALSE;
+ switch (a1)
+ {
+ case 0:
+ break;
+ case 1:
+ ret = FUN_0205EC94(state, 0x97F);
+ break;
+ case 2:
+ ret = FUN_0205EC94(state, 0x980);
+ break;
+ case 3:
+ ret = FUN_0205EC94(state, 0x981);
+ break;
+ case 4:
+ ret = FUN_0205EC94(state, 0x982);
+ break;
+ case 5:
+ ret = FUN_0205EC94(state, 0x983);
+ break;
+ }
+ return ret;
+}