summaryrefslogtreecommitdiff
path: root/arm7/asm/OS_arena.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/asm/OS_arena.s')
-rw-r--r--arm7/asm/OS_arena.s149
1 files changed, 149 insertions, 0 deletions
diff --git a/arm7/asm/OS_arena.s b/arm7/asm/OS_arena.s
new file mode 100644
index 00000000..3b444cdd
--- /dev/null
+++ b/arm7/asm/OS_arena.s
@@ -0,0 +1,149 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start OS_SetArenaLo
+OS_SetArenaLo: ; 0x037F9BBC
+ mov r0, r0, lsl #2
+ add r0, r0, #40894464 ; 0x2700000
+ add r0, r0, #1044480 ; 0xff000
+ str r1, [r0, #3488] ; 0xda0
+ bx lr
+
+ arm_func_start OS_SetArenaHi
+OS_SetArenaHi: ; 0x037F9BD0
+ mov r0, r0, lsl #2
+ add r0, r0, #40894464 ; 0x2700000
+ add r0, r0, #1044480 ; 0xff000
+ str r1, [r0, #3524] ; 0xdc4
+ bx lr
+
+ arm_func_start OS_GetInitArenaLo
+OS_GetInitArenaLo: ; 0x037F9BE4
+ cmp r0, #1
+ beq _037F9C00
+ cmp r0, #7
+ beq _037F9C08
+ cmp r0, #8
+ beq _037F9C18
+ b _037F9C2C
+_037F9C00:
+ ldr r0, _037F9C34 ; =0x027FAFCC
+ bx lr
+_037F9C08:
+ ldr r0, _037F9C38 ; =0x0380B92C
+ cmp r0, #58720256 ; 0x03800000
+ movhi r0, #58720256 ; 0x03800000
+ bx lr
+_037F9C18:
+ mov r0, #58720256 ; 0x03800000
+ ldr r1, _037F9C38 ; =0x0380B92C
+ cmp r1, #58720256 ; 0x03800000
+ movhi r0, r1
+ bx lr
+_037F9C2C:
+ mov r0, #0
+ bx lr
+_037F9C34: .word 0x027FAFCC
+_037F9C38: .word 0x0380B92C
+
+ arm_func_start OS_GetInitArenaHi
+OS_GetInitArenaHi: ; 0x037F9C3C
+ cmp r0, #1
+ beq _037F9C58
+ cmp r0, #7
+ beq _037F9C60
+ cmp r0, #8
+ beq _037F9C68
+ b _037F9CA0
+_037F9C58:
+ ldr r0, _037F9CA8 ; =0x027FF000
+ bx lr
+_037F9C60:
+ mov r0, #58720256 ; 0x03800000
+ bx lr
+_037F9C68:
+ ldr r1, _037F9CAC ; =0x00000400
+ ldr r0, _037F9CB0 ; =0x0380FF80
+ sub r2, r0, r1
+ mov r0, #58720256 ; 0x03800000
+ ldr r1, _037F9CB4 ; =0x0380B92C
+ cmp r1, #58720256 ; 0x03800000
+ movhi r0, r1
+ ldr r1, _037F9CB8 ; =0x00000400
+ cmp r1, #0
+ bxeq lr
+ cmp r1, #0
+ sublt r0, r0, r1
+ subge r0, r2, r1
+ bx lr
+_037F9CA0:
+ mov r0, #0
+ bx lr
+_037F9CA8: .word 0x027FF000
+_037F9CAC: .word 0x00000400
+_037F9CB0: .word 0x0380FF80
+_037F9CB4: .word 0x0380B92C
+_037F9CB8: .word 0x00000400
+
+ arm_func_start OS_GetArenaLo
+OS_GetArenaLo: ; 0x037F9CBC
+ mov r0, r0, lsl #2
+ add r0, r0, #40894464 ; 0x2700000
+ add r0, r0, #1044480 ; 0xff000
+ ldr r0, [r0, #3488] ; 0xda0
+ bx lr
+
+ arm_func_start OS_GetArenaHi
+OS_GetArenaHi: ; 0x037F9CD0
+ mov r0, r0, lsl #2
+ add r0, r0, #40894464 ; 0x2700000
+ add r0, r0, #1044480 ; 0xff000
+ ldr r0, [r0, #3524] ; 0xdc4
+ bx lr
+
+ arm_func_start OS_InitArena
+OS_InitArena: ; 0x037F9CE4
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _037F9D84 ; =_038078F4
+ ldr r0, [r1]
+ cmp r0, #0
+ bne _037F9D78
+ mov r0, #1
+ str r0, [r1]
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #1
+ bl OS_SetArenaHi
+ mov r0, #1
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #1
+ bl OS_SetArenaLo
+ mov r0, #7
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #7
+ bl OS_SetArenaHi
+ mov r0, #7
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #7
+ bl OS_SetArenaLo
+ mov r0, #8
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #8
+ bl OS_SetArenaHi
+ mov r0, #8
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #8
+ bl OS_SetArenaLo
+_037F9D78:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_037F9D84: .word _038078F4