summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/global.inc5
-rw-r--r--arm9/modules/04/asm/arm_04.s226
-rw-r--r--arm9/modules/04/asm/mod04_021DE89C.s236
4 files changed, 242 insertions, 226 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index ba722fd1..ed1a7956 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -671,6 +671,7 @@ Overlay MODULE_04
Object mod04_021DD984.o
Object mod04_021DDF40.o
Object mod04_021DE2D0.o
+ Object mod04_021DE89C.o
Object arm_04.o
}
diff --git a/arm9/global.inc b/arm9/global.inc
index c7772ac0..e4276c87 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6180,6 +6180,11 @@
.extern MOD04_021DE3D0
.extern MOD04_021DE404
.extern MOD04_021DE45C
+.extern MOD04_021DE89C
+.extern MOD04_021DE8C8
+.extern MOD04_021DE9F4
+.extern MOD04_021DEB0C
+.extern MOD04_021DEB54
.extern MOD04_021DF95C
.extern MOD04_021DF978
.extern MOD04_021DFA40
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 28b7edca..ec23a828 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -3,224 +3,6 @@
.section .text
.balign 4, 0
- arm_func_start MOD04_021DE89C
-MOD04_021DE89C: ; 0x021DE89C
- ldrh r1, [r0]
- mov r2, #0
- cmp r1, #0
- beq _021DE8C0
-_021DE8AC:
- add r2, r2, #1
- mov r1, r2, lsl #1
- ldrh r1, [r0, r1]
- cmp r1, #0
- bne _021DE8AC
-_021DE8C0:
- mov r0, r2
- bx lr
- arm_func_end MOD04_021DE89C
-
- arm_func_start MOD04_021DE8C8
-MOD04_021DE8C8: ; 0x021DE8C8
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r2, _021DE9E4 ; =UNK04_02210524
- mov r1, #0
- ldr r3, [r2, #4]
- ldr ip, [r2]
- cmp r3, r1
- mov r4, r0
- cmpeq ip, r1
- bne _021DE98C
- ldr r0, [r2, #0xc]
- ldr r3, [r2, #8]
- cmp r0, r1
- cmpeq r3, r1
- bne _021DE98C
- ldr r0, [r2, #0x14]
- ldr r2, [r2, #0x10]
- cmp r0, r1
- cmpeq r2, r1
- bne _021DE98C
- add r0, sp, #0
- bl OS_GetMacAddress
- bl OS_GetTick
- ldr r2, [sp]
- ldr r3, [sp, #4]
- mov lr, r2, lsr #0x18
- mov r2, r1, lsl #0x18
- orr lr, lr, r3, lsl #8
- mvn r1, #0xff000000
- mov ip, r3, lsr #0x18
- and r1, lr, r1
- orr r3, r1, r0, lsl #24
- and r1, ip, #0
- orr r2, r2, r0, lsr #8
- orr r1, r1, r2
- str r1, [sp, #4]
- ldr ip, _021DE9E4 ; =UNK04_02210524
- add r0, sp, #0
- str r3, [sp]
- ldmia r0, {r2, r3}
- stmia ip, {r2, r3}
- ldr r3, _021DE9E8 ; =0x6C078965
- ldr r2, _021DE9EC ; =0x5D588B65
- ldr r1, _021DE9F0 ; =0x00269EC3
- mov r0, #0
- str r3, [ip, #8]
- str r2, [ip, #0xc]
- str r1, [ip, #0x10]
- str r0, [ip, #0x14]
-_021DE98C:
- ldr r1, _021DE9E4 ; =UNK04_02210524
- ldr r3, [r1, #8]
- ldr r2, [r1]
- ldr r0, [r1, #4]
- umull lr, ip, r3, r2
- mla ip, r3, r0, ip
- ldr r0, [r1, #0xc]
- ldr r3, [r1, #0x10]
- mla ip, r0, r2, ip
- adds r2, r3, lr
- ldr r0, [r1, #0x14]
- str r2, [r1]
- adc r0, r0, ip
- cmp r4, #0
- str r0, [r1, #4]
- movne r3, #0
- umullne r2, r1, r0, r4
- mlane r1, r0, r3, r1
- mlane r1, r3, r4, r1
- movne r0, r1
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DE9E4: .word UNK04_02210524
-_021DE9E8: .word 0x6C078965
-_021DE9EC: .word 0x5D588B65
-_021DE9F0: .word 0x00269EC3
- arm_func_end MOD04_021DE8C8
-
- arm_func_start MOD04_021DE9F4
-MOD04_021DE9F4: ; 0x021DE9F4
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- movs r4, r1
- mov r7, r0
- mov r6, r3
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r0, r2
- mov r1, r6
- bl strchr
- movs r5, r0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
-_021DEA30:
- mov r0, r7
- bl strlen
- mov r2, r0
- mov r1, r7
- add r0, r5, #1
- bl strncmp
- cmp r0, #0
- bne _021DEA68
- mov r0, r7
- bl strlen
- add r0, r0, r5
- ldrsb r0, [r0, #1]
- cmp r6, r0
- beq _021DEAA4
-_021DEA68:
- mov r1, r6
- add r0, r5, #1
- bl strchr
- cmp r0, #0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r1, r6
- add r0, r0, #1
- bl strchr
- movs r5, r0
- bne _021DEA30
- add sp, sp, #4
- mvn r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DEAA4:
- mov r1, r6
- add r0, r5, #1
- bl strchr
- movs r5, r0
- addeq sp, sp, #4
- mvneq r0, #0
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- mov r1, r6
- add r0, r5, #1
- bl strchr
- cmp r0, #0
- addne r1, r5, #1
- subne r6, r0, r1
- bne _021DEAE8
- add r0, r5, #1
- bl strlen
- mov r6, r0
-_021DEAE8:
- mov r0, r4
- mov r2, r6
- add r1, r5, #1
- bl strncpy
- mov r1, #0
- mov r0, r6
- strb r1, [r4, r6]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_end MOD04_021DE9F4
-
- arm_func_start MOD04_021DEB0C
-MOD04_021DEB0C: ; 0x021DEB0C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r5, r2
- mov r7, r0
- mov r6, r1
- mov r4, r3
- mov r0, r5
- mov r1, #0
- bl strchr
- mov r2, r0
- mov r0, r7
- mov r1, r6
- mov r3, r4
- bl MOD04_021DEB54
- mov r0, r5
- bl strlen
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_end MOD04_021DEB0C
-
- arm_func_start MOD04_021DEB54
-MOD04_021DEB54: ; 0x021DEB54
- stmdb sp!, {r4, lr}
- sub sp, sp, #0x10
- str r0, [sp]
- mov r4, r2
- str r3, [sp, #4]
- str r1, [sp, #8]
- ldr r2, _021DEB8C ; =UNK04_0220D328
- mov r0, r4
- mov r1, #0x1000
- bl OS_SNPrintf
- mov r0, r4
- bl strlen
- add sp, sp, #0x10
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DEB8C: .word UNK04_0220D328
- arm_func_end MOD04_021DEB54
-
arm_func_start MOD04_021DEB90
MOD04_021DEB90: ; 0x021DEB90
stmdb sp!, {lr}
@@ -53528,10 +53310,6 @@ UNK04_0220BE70: ; 0x0220BE70
.section .data
- .global UNK_0220D328
-UNK04_0220D328: ; 0x0220D328
- .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00
-
.global UNK_0220D334
UNK04_0220D334: ; 0x0220D334
.byte 0x00, 0x00, 0x00, 0x00
@@ -56190,10 +55968,6 @@ UNK04_0220FBA4: ; 0x0220FBA4
.section .bss
- .global UNK04_02210524
-UNK04_02210524: ; 0x02210524
- .space 0x18
-
.global UNK04_0221053C
UNK04_0221053C: ; 0x0221053C
.space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DE89C.s b/arm9/modules/04/asm/mod04_021DE89C.s
new file mode 100644
index 00000000..f4ff2977
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DE89C.s
@@ -0,0 +1,236 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DE89C
+MOD04_021DE89C: ; 0x021DE89C
+ ldrh r1, [r0]
+ mov r2, #0
+ cmp r1, #0
+ beq _021DE8C0
+_021DE8AC:
+ add r2, r2, #1
+ mov r1, r2, lsl #1
+ ldrh r1, [r0, r1]
+ cmp r1, #0
+ bne _021DE8AC
+_021DE8C0:
+ mov r0, r2
+ bx lr
+ arm_func_end MOD04_021DE89C
+
+ arm_func_start MOD04_021DE8C8
+MOD04_021DE8C8: ; 0x021DE8C8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r2, _021DE9E4 ; =UNK04_02210524
+ mov r1, #0
+ ldr r3, [r2, #4]
+ ldr ip, [r2]
+ cmp r3, r1
+ mov r4, r0
+ cmpeq ip, r1
+ bne _021DE98C
+ ldr r0, [r2, #0xc]
+ ldr r3, [r2, #8]
+ cmp r0, r1
+ cmpeq r3, r1
+ bne _021DE98C
+ ldr r0, [r2, #0x14]
+ ldr r2, [r2, #0x10]
+ cmp r0, r1
+ cmpeq r2, r1
+ bne _021DE98C
+ add r0, sp, #0
+ bl OS_GetMacAddress
+ bl OS_GetTick
+ ldr r2, [sp]
+ ldr r3, [sp, #4]
+ mov lr, r2, lsr #0x18
+ mov r2, r1, lsl #0x18
+ orr lr, lr, r3, lsl #8
+ mvn r1, #0xff000000
+ mov ip, r3, lsr #0x18
+ and r1, lr, r1
+ orr r3, r1, r0, lsl #24
+ and r1, ip, #0
+ orr r2, r2, r0, lsr #8
+ orr r1, r1, r2
+ str r1, [sp, #4]
+ ldr ip, _021DE9E4 ; =UNK04_02210524
+ add r0, sp, #0
+ str r3, [sp]
+ ldmia r0, {r2, r3}
+ stmia ip, {r2, r3}
+ ldr r3, _021DE9E8 ; =0x6C078965
+ ldr r2, _021DE9EC ; =0x5D588B65
+ ldr r1, _021DE9F0 ; =0x00269EC3
+ mov r0, #0
+ str r3, [ip, #8]
+ str r2, [ip, #0xc]
+ str r1, [ip, #0x10]
+ str r0, [ip, #0x14]
+_021DE98C:
+ ldr r1, _021DE9E4 ; =UNK04_02210524
+ ldr r3, [r1, #8]
+ ldr r2, [r1]
+ ldr r0, [r1, #4]
+ umull lr, ip, r3, r2
+ mla ip, r3, r0, ip
+ ldr r0, [r1, #0xc]
+ ldr r3, [r1, #0x10]
+ mla ip, r0, r2, ip
+ adds r2, r3, lr
+ ldr r0, [r1, #0x14]
+ str r2, [r1]
+ adc r0, r0, ip
+ cmp r4, #0
+ str r0, [r1, #4]
+ movne r3, #0
+ umullne r2, r1, r0, r4
+ mlane r1, r0, r3, r1
+ mlane r1, r3, r4, r1
+ movne r0, r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DE9E4: .word UNK04_02210524
+_021DE9E8: .word 0x6C078965
+_021DE9EC: .word 0x5D588B65
+_021DE9F0: .word 0x00269EC3
+ arm_func_end MOD04_021DE8C8
+
+ arm_func_start MOD04_021DE9F4
+MOD04_021DE9F4: ; 0x021DE9F4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ movs r4, r1
+ mov r7, r0
+ mov r6, r3
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r0, r2
+ mov r1, r6
+ bl strchr
+ movs r5, r0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+_021DEA30:
+ mov r0, r7
+ bl strlen
+ mov r2, r0
+ mov r1, r7
+ add r0, r5, #1
+ bl strncmp
+ cmp r0, #0
+ bne _021DEA68
+ mov r0, r7
+ bl strlen
+ add r0, r0, r5
+ ldrsb r0, [r0, #1]
+ cmp r6, r0
+ beq _021DEAA4
+_021DEA68:
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ cmp r0, #0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r1, r6
+ add r0, r0, #1
+ bl strchr
+ movs r5, r0
+ bne _021DEA30
+ add sp, sp, #4
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DEAA4:
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ movs r5, r0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r1, r6
+ add r0, r5, #1
+ bl strchr
+ cmp r0, #0
+ addne r1, r5, #1
+ subne r6, r0, r1
+ bne _021DEAE8
+ add r0, r5, #1
+ bl strlen
+ mov r6, r0
+_021DEAE8:
+ mov r0, r4
+ mov r2, r6
+ add r1, r5, #1
+ bl strncpy
+ mov r1, #0
+ mov r0, r6
+ strb r1, [r4, r6]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ arm_func_end MOD04_021DE9F4
+
+ arm_func_start MOD04_021DEB0C
+MOD04_021DEB0C: ; 0x021DEB0C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, r2
+ mov r7, r0
+ mov r6, r1
+ mov r4, r3
+ mov r0, r5
+ mov r1, #0
+ bl strchr
+ mov r2, r0
+ mov r0, r7
+ mov r1, r6
+ mov r3, r4
+ bl MOD04_021DEB54
+ mov r0, r5
+ bl strlen
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ arm_func_end MOD04_021DEB0C
+
+ arm_func_start MOD04_021DEB54
+MOD04_021DEB54: ; 0x021DEB54
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x10
+ str r0, [sp]
+ mov r4, r2
+ str r3, [sp, #4]
+ str r1, [sp, #8]
+ ldr r2, _021DEB8C ; =UNK04_0220D328
+ mov r0, r4
+ mov r1, #0x1000
+ bl OS_SNPrintf
+ mov r0, r4
+ bl strlen
+ add sp, sp, #0x10
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DEB8C: .word UNK04_0220D328
+ arm_func_end MOD04_021DEB54
+
+ .section .data
+
+ .global UNK04_0220D328
+UNK04_0220D328: ; 0x0220D328
+ .asciz "%c%s%c%s"
+
+ .balign 4, 0
+
+ .section .bss
+
+ .global UNK04_02210524
+UNK04_02210524: ; 0x02210524
+ .space 0x18