summaryrefslogtreecommitdiff
path: root/arm7
diff options
context:
space:
mode:
Diffstat (limited to 'arm7')
-rw-r--r--arm7/arm7.lsf3
-rw-r--r--arm7/asm/NVRAM.s1053
-rw-r--r--arm7/asm/RTC_external.s75
-rw-r--r--arm7/asm/RTC_unk_03805064.s665
-rw-r--r--arm7/asm/wram2.s1747
-rw-r--r--arm7/asm/wram_bss.s28
-rw-r--r--arm7/global.inc25
7 files changed, 1821 insertions, 1775 deletions
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf
index cbffa45a..7be05a3a 100644
--- a/arm7/arm7.lsf
+++ b/arm7/arm7.lsf
@@ -69,6 +69,9 @@ Autoload WRAM
Object SPI_mic.o
Object CTRDG.o
Object CTRDG_sp.o
+ Object NVRAM.o
+ Object RTC_unk_03805064.o
+ Object RTC_external.o
Object wram2.o
Object wram_bss.o
}
diff --git a/arm7/asm/NVRAM.s b/arm7/asm/NVRAM.s
new file mode 100644
index 00000000..3257e7b4
--- /dev/null
+++ b/arm7/asm/NVRAM.s
@@ -0,0 +1,1053 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _0380A018
+_0380A018: ;0x0380A018
+ .space 0x0380A038 - 0x0380A018
+
+ .section .text
+
+ arm_func_start FUN_0380428C
+FUN_0380428C: ;@ 0x0380428C
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ add r0, sp, #0
+ bl NVRAM_ReadStatusRegister
+ ldrh r1, [sp]
+ ands r0, r1, #1
+ movne r0, #0
+ bne _038042B8
+ ands r0, r1, #2
+ movne r0, #1
+ moveq r0, #0
+_038042B8:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FUN_038042C4
+FUN_038042C4: ;@ 0x038042C4
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ add r0, sp, #0
+ bl NVRAM_ReadStatusRegister
+ ldrh r0, [sp]
+ ands r0, r0, #1
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start NVRAM_ExecuteProcess
+NVRAM_ExecuteProcess: ;@ 0x038042F0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r5, r0
+ mov r0, #1
+ bl SPIi_CheckException
+ cmp r0, #0
+ bne _03804334
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #4
+ bl SPIi_ReturnResult
+ b _038045C0
+_03804334:
+ mov r0, #1
+ bl SPIi_GetException
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldr r0, [r4, #4]
+ sub r0, r0, #32
+ cmp r0, #13
+ addls pc, pc, r0, lsl #2
+ b _03804584
+ b _03804390
+ b _03804398
+ b _038043A0
+ b _038043AC
+ b _038043EC
+ b _0380442C
+ b _03804474
+ b _038044BC
+ b _038044F4
+ b _0380452C
+ b _03804534
+ b _0380453C
+ b _03804570
+ b _0380457C
+_03804390:
+ bl NVRAM_WriteEnable
+ b _038045A4
+_03804398:
+ bl NVRAM_WriteDisable
+ b _038045A4
+_038043A0:
+ ldr r0, [r4, #16]
+ bl NVRAM_ReadStatusRegister
+ b _038045A4
+_038043AC:
+ bl FUN_038042C4
+ cmp r0, #0
+ bne _038043D8
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #3
+ bl SPIi_ReturnResult
+ mov r0, #1
+ bl SPIi_ReleaseException
+ b _038045C0
+_038043D8:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #12]
+ ldr r2, [r4, #16]
+ bl NVRAM_ReadDataBytes
+ b _038045A4
+_038043EC:
+ bl FUN_038042C4
+ cmp r0, #0
+ bne _03804418
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #3
+ bl SPIi_ReturnResult
+ mov r0, #1
+ bl SPIi_ReleaseException
+ b _038045C0
+_03804418:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #12]
+ ldr r2, [r4, #16]
+ bl NVRAM_ReadDataBytesAtHigherSpeed
+ b _038045A4
+_0380442C:
+ bl FUN_0380428C
+ cmp r0, #0
+ bne _03804458
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #3
+ bl SPIi_ReturnResult
+ mov r0, #1
+ bl SPIi_ReleaseException
+ b _038045C0
+_03804458:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #12]
+ mov r1, r1, lsl #16
+ mov r1, r1, lsr #16
+ ldr r2, [r4, #16]
+ bl NVRAM_PageWrite
+ b _038045A4
+_03804474:
+ bl FUN_0380428C
+ cmp r0, #0
+ bne _038044A0
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #3
+ bl SPIi_ReturnResult
+ mov r0, #1
+ bl SPIi_ReleaseException
+ b _038045C0
+_038044A0:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #12]
+ mov r1, r1, lsl #16
+ mov r1, r1, lsr #16
+ ldr r2, [r4, #16]
+ bl NVRAM_PageProgram
+ b _038045A4
+_038044BC:
+ bl FUN_0380428C
+ cmp r0, #0
+ bne _038044E8
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #3
+ bl SPIi_ReturnResult
+ mov r0, #1
+ bl SPIi_ReleaseException
+ b _038045C0
+_038044E8:
+ ldr r0, [r4, #8]
+ bl NVRAM_PageErase
+ b _038045A4
+_038044F4:
+ bl FUN_0380428C
+ cmp r0, #0
+ bne _03804520
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #3
+ bl SPIi_ReturnResult
+ mov r0, #1
+ bl SPIi_ReleaseException
+ b _038045C0
+_03804520:
+ ldr r0, [r4, #8]
+ bl NVRAM_SectorErase
+ b _038045A4
+_0380452C:
+ bl NVRAM_DeepPowerDown
+ b _038045A4
+_03804534:
+ bl NVRAM_ReleaseFromDeepPowerDown
+ b _038045A4
+_0380453C:
+ bl FUN_0380428C
+ cmp r0, #0
+ bne _03804568
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #3
+ bl SPIi_ReturnResult
+ mov r0, #1
+ bl SPIi_ReleaseException
+ b _038045C0
+_03804568:
+ bl NVRAM_ChipErase
+ b _038045A4
+_03804570:
+ ldr r0, [r4, #16]
+ bl NVRAM_ReadSiliconId
+ b _038045A4
+_0380457C:
+ bl NVRAM_SoftwareReset
+ b _038045A4
+_03804584:
+ mov r0, #1
+ bl SPIi_ReleaseException
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #1
+ bl SPIi_ReturnResult
+ b _038045C0
+_038045A4:
+ ldr r0, [r4, #4]
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ mov r1, #0
+ bl SPIi_ReturnResult
+ mov r0, #1
+ bl SPIi_ReleaseException
+_038045C0:
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start NVRAM_AnalyzeCommand
+NVRAM_AnalyzeCommand: ;@ 0x038045CC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #12
+ ands r1, r0, #33554432 ;@ 0x2000000
+ beq _038045FC
+ mov r5, #0
+ mov lr, r5
+ ldr r1, _0380476C ;@ =_0380A018
+_038045E8:
+ mov r4, r5, lsl #1
+ strh lr, [r1, r4]
+ add r5, r5, #1
+ cmp r5, #16
+ blt _038045E8
+_038045FC:
+ and r1, r0, #983040 ;@ 0xf0000
+ mov r1, r1, lsr #16
+ mov r4, r1, lsl #1
+ ldr r1, _0380476C ;@ =_0380A018
+ strh r0, [r1, r4]
+ ands r0, r0, #16777216 ;@ 0x1000000
+ beq _03804760
+ ldrh r0, [r1]
+ and r4, r0, #65280 ;@ 0xff00
+ mov r4, r4, lsl #8
+ mov r4, r4, lsr #16
+ sub lr, r4, #34 ;@ 0x22
+ cmp lr, #10
+ addls pc, pc, lr, lsl #2
+ b _03804734
+ b _03804664
+ b _038046A0
+ b _038046A0
+ b _038046E8
+ b _038046E8
+ b _03804728
+ b _03804728
+ b _03804734
+ b _03804734
+ b _03804734
+ b _03804664
+_03804664:
+ ldrh ip, [r1, #4]
+ and lr, ip, #65280 ;@ 0xff00
+ and r0, r0, #255 ;@ 0xff
+ mov ip, r0, lsl #24
+ ldrh r0, [r1, #2]
+ orr r0, ip, r0, lsl #8
+ orr ip, r0, lr, lsr #8
+ cmp ip, #33554432 ;@ 0x2000000
+ bcc _03804690
+ cmp ip, #41943040 ;@ 0x2800000
+ bcc _03804734
+_03804690:
+ mov r0, r4
+ mov r1, #2
+ bl SPIi_ReturnResult
+ b _03804760
+_038046A0:
+ ldrh r3, [r1, #8]
+ ldrh r2, [r1, #10]
+ orr ip, r2, r3, lsl #16
+ cmp ip, #33554432 ;@ 0x2000000
+ bcc _038046BC
+ cmp ip, #41943040 ;@ 0x2800000
+ bcc _038046CC
+_038046BC:
+ mov r0, r4
+ mov r1, #2
+ bl SPIi_ReturnResult
+ b _03804760
+_038046CC:
+ and r2, r0, #255 ;@ 0xff
+ ldrh r0, [r1, #2]
+ orr r3, r0, r2, lsl #16
+ ldrh r2, [r1, #4]
+ ldrh r0, [r1, #6]
+ orr r2, r0, r2, lsl #16
+ b _03804734
+_038046E8:
+ ldrh r3, [r1, #6]
+ ldrh r2, [r1, #8]
+ orr ip, r2, r3, lsl #16
+ cmp ip, #33554432 ;@ 0x2000000
+ bcc _03804704
+ cmp ip, #41943040 ;@ 0x2800000
+ bcc _03804714
+_03804704:
+ mov r0, r4
+ mov r1, #2
+ bl SPIi_ReturnResult
+ b _03804760
+_03804714:
+ and r2, r0, #255 ;@ 0xff
+ ldrh r0, [r1, #2]
+ orr r3, r0, r2, lsl #16
+ ldrh r2, [r1, #4]
+ b _03804734
+_03804728:
+ and r3, r0, #255 ;@ 0xff
+ ldrh r0, [r1, #2]
+ orr r3, r0, r3, lsl #16
+_03804734:
+ str r2, [sp]
+ str ip, [sp, #4]
+ mov r0, #1
+ mov r1, r4
+ mov r2, #3
+ bl SPIi_SetEntry
+ cmp r0, #0
+ bne _03804760
+ mov r0, r4
+ mov r1, #4
+ bl SPIi_ReturnResult
+_03804760:
+ add sp, sp, #12
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_0380476C: .word _0380A018
+
+ arm_func_start NVRAM_Init
+NVRAM_Init: ;@ 0x03804770
+ mov r3, #0
+ mov r2, r3
+ ldr r0, _03804794 ;@ =_0380A018
+_0380477C:
+ mov r1, r3, lsl #1
+ strh r2, [r0, r1]
+ add r3, r3, #1
+ cmp r3, #16
+ blt _0380477C
+ bx lr
+_03804794: .word _0380A018
+
+ arm_func_start NVRAM_SoftwareReset
+NVRAM_SoftwareReset: ;@ 0x03804798
+ ldr r1, _038047D0 ;@ =0x040001C0
+_0380479C:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _0380479C
+ mov r0, #33024 ;@ 0x8100
+ strh r0, [r1]
+ mov r1, #255 ;@ 0xff
+ ldr r0, _038047D4 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _038047D0 ;@ =0x040001C0
+_038047C0:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _038047C0
+ bx lr
+_038047D0: .word 0x040001C0
+_038047D4: .word 0x040001C2
+
+ arm_func_start NVRAM_ReadSiliconId
+NVRAM_ReadSiliconId: ;@ 0x038047D8
+ ldr r2, _0380486C ;@ =0x040001C0
+_038047DC:
+ ldrh r1, [r2]
+ ands r1, r1, #128 ;@ 0x80
+ bne _038047DC
+ mov r1, #35072 ;@ 0x8900
+ strh r1, [r2]
+ mov r2, #159 ;@ 0x9f
+ ldr r1, _03804870 ;@ =0x040001C2
+ strh r2, [r1]
+ ldr r2, _0380486C ;@ =0x040001C0
+_03804800:
+ ldrh r1, [r2]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804800
+ mov r2, #0
+ ldr r1, _03804870 ;@ =0x040001C2
+ strh r2, [r1]
+ ldr r3, _0380486C ;@ =0x040001C0
+_0380481C:
+ ldrh r1, [r3]
+ ands r1, r1, #128 ;@ 0x80
+ bne _0380481C
+ ldr r2, _03804870 ;@ =0x040001C2
+ ldrh r1, [r2]
+ and r1, r1, #255 ;@ 0xff
+ strb r1, [r0]
+ mov r1, #33024 ;@ 0x8100
+ strh r1, [r3]
+ mov r1, #0
+ strh r1, [r2]
+ ldr r2, _0380486C ;@ =0x040001C0
+_0380484C:
+ ldrh r1, [r2]
+ ands r1, r1, #128 ;@ 0x80
+ bne _0380484C
+ ldr r1, _03804870 ;@ =0x040001C2
+ ldrh r1, [r1]
+ and r1, r1, #255 ;@ 0xff
+ strb r1, [r0, #1]
+ bx lr
+_0380486C: .word 0x040001C0
+_03804870: .word 0x040001C2
+
+ arm_func_start NVRAM_ChipErase
+NVRAM_ChipErase: ;@ 0x03804874
+ ldr r1, _038048AC ;@ =0x040001C0
+_03804878:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804878
+ mov r0, #33024 ;@ 0x8100
+ strh r0, [r1]
+ mov r1, #199 ;@ 0xc7
+ ldr r0, _038048B0 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _038048AC ;@ =0x040001C0
+_0380489C:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _0380489C
+ bx lr
+_038048AC: .word 0x040001C0
+_038048B0: .word 0x040001C2
+
+ arm_func_start NVRAM_ReleaseFromDeepPowerDown
+NVRAM_ReleaseFromDeepPowerDown: ;@ 0x038048B4
+ ldr r1, _038048EC ;@ =0x040001C0
+_038048B8:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _038048B8
+ mov r0, #33024 ;@ 0x8100
+ strh r0, [r1]
+ mov r1, #171 ;@ 0xab
+ ldr r0, _038048F0 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _038048EC ;@ =0x040001C0
+_038048DC:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _038048DC
+ bx lr
+_038048EC: .word 0x040001C0
+_038048F0: .word 0x040001C2
+
+ arm_func_start NVRAM_DeepPowerDown
+NVRAM_DeepPowerDown: ;@ 0x038048F4
+ ldr r1, _0380492C ;@ =0x040001C0
+_038048F8:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _038048F8
+ mov r0, #33024 ;@ 0x8100
+ strh r0, [r1]
+ mov r1, #185 ;@ 0xb9
+ ldr r0, _03804930 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _0380492C ;@ =0x040001C0
+_0380491C:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _0380491C
+ bx lr
+_0380492C: .word 0x040001C0
+_03804930: .word 0x040001C2
+
+ arm_func_start NVRAM_SectorErase
+NVRAM_SectorErase: ;@ 0x03804934
+ and r1, r0, #16711680 ;@ 0xff0000
+ mov r1, r1, lsr #16
+ mov r1, r1, lsl #16
+ mov r2, r1, lsr #16
+ and r1, r0, #65280 ;@ 0xff00
+ mov r1, r1, lsl #8
+ mov r1, r1, lsr #16
+ and r0, r0, #255 ;@ 0xff
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ ldr ip, _038049F0 ;@ =0x040001C0
+_03804960:
+ ldrh r3, [ip]
+ ands r3, r3, #128 ;@ 0x80
+ bne _03804960
+ mov r3, #35072 ;@ 0x8900
+ strh r3, [ip]
+ mov ip, #216 ;@ 0xd8
+ ldr r3, _038049F4 ;@ =0x040001C2
+ strh ip, [r3]
+ ldr ip, _038049F0 ;@ =0x040001C0
+_03804984:
+ ldrh r3, [ip]
+ ands r3, r3, #128 ;@ 0x80
+ bne _03804984
+ and r3, r2, #255 ;@ 0xff
+ ldr r2, _038049F4 ;@ =0x040001C2
+ strh r3, [r2]
+ ldr r3, _038049F0 ;@ =0x040001C0
+_038049A0:
+ ldrh r2, [r3]
+ ands r2, r2, #128 ;@ 0x80
+ bne _038049A0
+ and r2, r1, #255 ;@ 0xff
+ ldr r1, _038049F4 ;@ =0x040001C2
+ strh r2, [r1]
+ ldr r2, _038049F0 ;@ =0x040001C0
+_038049BC:
+ ldrh r1, [r2]
+ ands r1, r1, #128 ;@ 0x80
+ bne _038049BC
+ mov r1, #33024 ;@ 0x8100
+ strh r1, [r2]
+ and r1, r0, #255 ;@ 0xff
+ ldr r0, _038049F4 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _038049F0 ;@ =0x040001C0
+_038049E0:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _038049E0
+ bx lr
+_038049F0: .word 0x040001C0
+_038049F4: .word 0x040001C2
+
+ arm_func_start NVRAM_PageErase
+NVRAM_PageErase: ;@ 0x038049F8
+ and r1, r0, #16711680 ;@ 0xff0000
+ mov r1, r1, lsr #16
+ mov r1, r1, lsl #16
+ mov r2, r1, lsr #16
+ and r1, r0, #65280 ;@ 0xff00
+ mov r1, r1, lsl #8
+ mov r1, r1, lsr #16
+ and r0, r0, #255 ;@ 0xff
+ mov r0, r0, lsl #16
+ mov r0, r0, lsr #16
+ ldr ip, _03804AB4 ;@ =0x040001C0
+_03804A24:
+ ldrh r3, [ip]
+ ands r3, r3, #128 ;@ 0x80
+ bne _03804A24
+ mov r3, #35072 ;@ 0x8900
+ strh r3, [ip]
+ mov ip, #219 ;@ 0xdb
+ ldr r3, _03804AB8 ;@ =0x040001C2
+ strh ip, [r3]
+ ldr ip, _03804AB4 ;@ =0x040001C0
+_03804A48:
+ ldrh r3, [ip]
+ ands r3, r3, #128 ;@ 0x80
+ bne _03804A48
+ and r3, r2, #255 ;@ 0xff
+ ldr r2, _03804AB8 ;@ =0x040001C2
+ strh r3, [r2]
+ ldr r3, _03804AB4 ;@ =0x040001C0
+_03804A64:
+ ldrh r2, [r3]
+ ands r2, r2, #128 ;@ 0x80
+ bne _03804A64
+ and r2, r1, #255 ;@ 0xff
+ ldr r1, _03804AB8 ;@ =0x040001C2
+ strh r2, [r1]
+ ldr r2, _03804AB4 ;@ =0x040001C0
+_03804A80:
+ ldrh r1, [r2]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804A80
+ mov r1, #33024 ;@ 0x8100
+ strh r1, [r2]
+ and r1, r0, #255 ;@ 0xff
+ ldr r0, _03804AB8 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _03804AB4 ;@ =0x040001C0
+_03804AA4:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804AA4
+ bx lr
+_03804AB4: .word 0x040001C0
+_03804AB8: .word 0x040001C2
+
+ arm_func_start NVRAM_PageProgram
+NVRAM_PageProgram: ;@ 0x03804ABC
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ cmp r1, #1
+ bcc _03804BD4
+ add r3, r0, r1
+ sub r3, r3, #1
+ mov r3, r3, lsr #8
+ cmp r3, r0, lsr #8
+ andhi r1, r0, #255 ;@ 0xff
+ rsbhi r1, r1, #256 ;@ 0x100
+ movhi r1, r1, lsl #16
+ movhi r1, r1, lsr #16
+ and r3, r0, #16711680 ;@ 0xff0000
+ mov r3, r3, lsr #16
+ strh r3, [sp]
+ and r3, r0, #65280 ;@ 0xff00
+ mov r3, r3, lsr #8
+ strh r3, [sp, #2]
+ and r0, r0, #255 ;@ 0xff
+ strh r0, [sp, #4]
+ ldr r3, _03804BE0 ;@ =0x040001C0
+_03804B10:
+ ldrh r0, [r3]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804B10
+ mov r0, #35072 ;@ 0x8900
+ strh r0, [r3]
+ mov r0, #2
+ ldr lr, _03804BE4 ;@ =0x040001C2
+ strh r0, [lr]
+ mov r4, #0
+ add r3, sp, #0
+ ldr ip, _03804BE0 ;@ =0x040001C0
+_03804B3C:
+ ldrh r0, [ip]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804B3C
+ mov r0, r4, lsl #1
+ ldrh r0, [r3, r0]
+ and r0, r0, #255 ;@ 0xff
+ strh r0, [lr]
+ add r4, r4, #1
+ cmp r4, #3
+ blt _03804B3C
+ mov ip, #0
+ sub lr, r1, #1
+ ldr r3, _03804BE0 ;@ =0x040001C0
+ ldr r0, _03804BE4 ;@ =0x040001C2
+ b _03804B94
+_03804B78:
+ ldrh r1, [r3]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804B78
+ ldrb r1, [r2, ip]
+ and r1, r1, #255 ;@ 0xff
+ strh r1, [r0]
+ add ip, ip, #1
+_03804B94:
+ cmp ip, lr
+ blt _03804B78
+ ldr r1, _03804BE0 ;@ =0x040001C0
+_03804BA0:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804BA0
+ mov r0, #33024 ;@ 0x8100
+ strh r0, [r1]
+ ldrb r0, [r2, ip]
+ and r1, r0, #255 ;@ 0xff
+ ldr r0, _03804BE4 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _03804BE0 ;@ =0x040001C0
+_03804BC8:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804BC8
+_03804BD4:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+_03804BE0: .word 0x040001C0
+_03804BE4: .word 0x040001C2
+
+ arm_func_start NVRAM_PageWrite
+NVRAM_PageWrite: ;@ 0x03804BE8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ cmp r1, #1
+ bcc _03804D00
+ add r3, r0, r1
+ sub r3, r3, #1
+ mov r3, r3, lsr #8
+ cmp r3, r0, lsr #8
+ andhi r1, r0, #255 ;@ 0xff
+ rsbhi r1, r1, #256 ;@ 0x100
+ movhi r1, r1, lsl #16
+ movhi r1, r1, lsr #16
+ and r3, r0, #16711680 ;@ 0xff0000
+ mov r3, r3, lsr #16
+ strh r3, [sp]
+ and r3, r0, #65280 ;@ 0xff00
+ mov r3, r3, lsr #8
+ strh r3, [sp, #2]
+ and r0, r0, #255 ;@ 0xff
+ strh r0, [sp, #4]
+ ldr r3, _03804D0C ;@ =0x040001C0
+_03804C3C:
+ ldrh r0, [r3]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804C3C
+ mov r0, #35072 ;@ 0x8900
+ strh r0, [r3]
+ mov r0, #10
+ ldr lr, _03804D10 ;@ =0x040001C2
+ strh r0, [lr]
+ mov r4, #0
+ add r3, sp, #0
+ ldr ip, _03804D0C ;@ =0x040001C0
+_03804C68:
+ ldrh r0, [ip]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804C68
+ mov r0, r4, lsl #1
+ ldrh r0, [r3, r0]
+ and r0, r0, #255 ;@ 0xff
+ strh r0, [lr]
+ add r4, r4, #1
+ cmp r4, #3
+ blt _03804C68
+ mov ip, #0
+ sub lr, r1, #1
+ ldr r3, _03804D0C ;@ =0x040001C0
+ ldr r0, _03804D10 ;@ =0x040001C2
+ b _03804CC0
+_03804CA4:
+ ldrh r1, [r3]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804CA4
+ ldrb r1, [r2, ip]
+ and r1, r1, #255 ;@ 0xff
+ strh r1, [r0]
+ add ip, ip, #1
+_03804CC0:
+ cmp ip, lr
+ blt _03804CA4
+ ldr r1, _03804D0C ;@ =0x040001C0
+_03804CCC:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804CCC
+ mov r0, #33024 ;@ 0x8100
+ strh r0, [r1]
+ ldrb r0, [r2, ip]
+ and r1, r0, #255 ;@ 0xff
+ ldr r0, _03804D10 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _03804D0C ;@ =0x040001C0
+_03804CF4:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804CF4
+_03804D00:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+_03804D0C: .word 0x040001C0
+_03804D10: .word 0x040001C2
+
+ arm_func_start NVRAM_ReadDataBytesAtHigherSpeed
+NVRAM_ReadDataBytesAtHigherSpeed: ;@ 0x03804D14
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ cmp r1, #1
+ bcc _03804E3C
+ and r3, r0, #16711680 ;@ 0xff0000
+ mov r3, r3, lsr #16
+ strh r3, [sp]
+ and r3, r0, #65280 ;@ 0xff00
+ mov r3, r3, lsr #8
+ strh r3, [sp, #2]
+ and r0, r0, #255 ;@ 0xff
+ strh r0, [sp, #4]
+ ldr r3, _03804E48 ;@ =0x040001C0
+_03804D48:
+ ldrh r0, [r3]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804D48
+ mov r0, #35072 ;@ 0x8900
+ strh r0, [r3]
+ mov r0, #11
+ ldr ip, _03804E4C ;@ =0x040001C2
+ strh r0, [ip]
+ mov lr, #0
+ add r3, sp, #0
+ ldr r4, _03804E48 ;@ =0x040001C0
+_03804D74:
+ ldrh r0, [r4]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804D74
+ mov r0, lr, lsl #1
+ ldrh r0, [r3, r0]
+ and r0, r0, #255 ;@ 0xff
+ strh r0, [ip]
+ add lr, lr, #1
+ cmp lr, #3
+ blt _03804D74
+ ldr r3, _03804E48 ;@ =0x040001C0
+_03804DA0:
+ ldrh r0, [r3]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804DA0
+ mov r3, #0
+ ldr r0, _03804E4C ;@ =0x040001C2
+ strh r3, [r0]
+ ldr r3, _03804E48 ;@ =0x040001C0
+_03804DBC:
+ ldrh r0, [r3]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804DBC
+ mov r0, #0
+ ldr ip, _03804E48 ;@ =0x040001C0
+ mov r4, r0
+ ldr lr, _03804E4C ;@ =0x040001C2
+ sub r1, r1, #1
+ b _03804E00
+_03804DE0:
+ strh r4, [lr]
+_03804DE4:
+ ldrh r3, [ip]
+ ands r3, r3, #128 ;@ 0x80
+ bne _03804DE4
+ ldrh r3, [lr]
+ and r3, r3, #255 ;@ 0xff
+ strb r3, [r2, r0]
+ add r0, r0, #1
+_03804E00:
+ cmp r0, r1
+ bcc _03804DE0
+ mov r1, #33024 ;@ 0x8100
+ ldr ip, _03804E48 ;@ =0x040001C0
+ strh r1, [ip]
+ mov r3, #0
+ ldr r1, _03804E4C ;@ =0x040001C2
+ strh r3, [r1]
+_03804E20:
+ ldrh r1, [ip]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804E20
+ ldr r1, _03804E4C ;@ =0x040001C2
+ ldrh r1, [r1]
+ and r1, r1, #255 ;@ 0xff
+ strb r1, [r2, r0]
+_03804E3C:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+_03804E48: .word 0x040001C0
+_03804E4C: .word 0x040001C2
+
+ arm_func_start NVRAM_ReadDataBytes
+NVRAM_ReadDataBytes: ;@ 0x03804E50
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ cmp r1, #1
+ bcc _03804F5C
+ and r3, r0, #16711680 ;@ 0xff0000
+ mov r3, r3, lsr #16
+ strh r3, [sp]
+ and r3, r0, #65280 ;@ 0xff00
+ mov r3, r3, lsr #8
+ strh r3, [sp, #2]
+ and r0, r0, #255 ;@ 0xff
+ strh r0, [sp, #4]
+ ldr r3, _03804F68 ;@ =0x040001C0
+_03804E84:
+ ldrh r0, [r3]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804E84
+ mov r0, #35072 ;@ 0x8900
+ strh r0, [r3]
+ mov r0, #3
+ ldr ip, _03804F6C ;@ =0x040001C2
+ strh r0, [ip]
+ mov lr, #0
+ add r3, sp, #0
+ ldr r4, _03804F68 ;@ =0x040001C0
+_03804EB0:
+ ldrh r0, [r4]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804EB0
+ mov r0, lr, lsl #1
+ ldrh r0, [r3, r0]
+ and r0, r0, #255 ;@ 0xff
+ strh r0, [ip]
+ add lr, lr, #1
+ cmp lr, #3
+ blt _03804EB0
+ ldr r3, _03804F68 ;@ =0x040001C0
+_03804EDC:
+ ldrh r0, [r3]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804EDC
+ mov r0, #0
+ ldr ip, _03804F68 ;@ =0x040001C0
+ mov r4, r0
+ ldr lr, _03804F6C ;@ =0x040001C2
+ sub r1, r1, #1
+ b _03804F20
+_03804F00:
+ strh r4, [lr]
+_03804F04:
+ ldrh r3, [ip]
+ ands r3, r3, #128 ;@ 0x80
+ bne _03804F04
+ ldrh r3, [lr]
+ and r3, r3, #255 ;@ 0xff
+ strb r3, [r2, r0]
+ add r0, r0, #1
+_03804F20:
+ cmp r0, r1
+ bcc _03804F00
+ mov r1, #33024 ;@ 0x8100
+ ldr ip, _03804F68 ;@ =0x040001C0
+ strh r1, [ip]
+ mov r3, #0
+ ldr r1, _03804F6C ;@ =0x040001C2
+ strh r3, [r1]
+_03804F40:
+ ldrh r1, [ip]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804F40
+ ldr r1, _03804F6C ;@ =0x040001C2
+ ldrh r1, [r1]
+ and r1, r1, #255 ;@ 0xff
+ strb r1, [r2, r0]
+_03804F5C:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+_03804F68: .word 0x040001C0
+_03804F6C: .word 0x040001C2
+
+ arm_func_start NVRAM_ReadStatusRegister
+NVRAM_ReadStatusRegister: ;@ 0x03804F70
+ ldr r2, _03804FDC ;@ =0x040001C0
+_03804F74:
+ ldrh r1, [r2]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804F74
+ mov r1, #35072 ;@ 0x8900
+ strh r1, [r2]
+ mov r2, #5
+ ldr r1, _03804FE0 ;@ =0x040001C2
+ strh r2, [r1]
+ ldr r2, _03804FDC ;@ =0x040001C0
+_03804F98:
+ ldrh r1, [r2]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804F98
+ mov r1, #33024 ;@ 0x8100
+ strh r1, [r2]
+ mov r2, #0
+ ldr r1, _03804FE0 ;@ =0x040001C2
+ strh r2, [r1]
+ ldr r2, _03804FDC ;@ =0x040001C0
+_03804FBC:
+ ldrh r1, [r2]
+ ands r1, r1, #128 ;@ 0x80
+ bne _03804FBC
+ ldr r1, _03804FE0 ;@ =0x040001C2
+ ldrh r1, [r1]
+ and r1, r1, #255 ;@ 0xff
+ strb r1, [r0]
+ bx lr
+_03804FDC: .word 0x040001C0
+_03804FE0: .word 0x040001C2
+
+ arm_func_start NVRAM_WriteDisable
+NVRAM_WriteDisable: ;@ 0x03804FE4
+ ldr r1, _0380501C ;@ =0x040001C0
+_03804FE8:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03804FE8
+ mov r0, #33024 ;@ 0x8100
+ strh r0, [r1]
+ mov r1, #4
+ ldr r0, _03805020 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _0380501C ;@ =0x040001C0
+_0380500C:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _0380500C
+ bx lr
+_0380501C: .word 0x040001C0
+_03805020: .word 0x040001C2
+
+ arm_func_start NVRAM_WriteEnable
+NVRAM_WriteEnable: ;@ 0x03805024
+ ldr r1, _0380505C ;@ =0x040001C0
+_03805028:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _03805028
+ mov r0, #33024 ;@ 0x8100
+ strh r0, [r1]
+ mov r1, #6
+ ldr r0, _03805060 ;@ =0x040001C2
+ strh r1, [r0]
+ ldr r1, _0380505C ;@ =0x040001C0
+_0380504C:
+ ldrh r0, [r1]
+ ands r0, r0, #128 ;@ 0x80
+ bne _0380504C
+ bx lr
+_0380505C: .word 0x040001C0
+_03805060: .word 0x040001C2
diff --git a/arm7/asm/RTC_external.s b/arm7/asm/RTC_external.s
new file mode 100644
index 00000000..2b45b9e3
--- /dev/null
+++ b/arm7/asm/RTC_external.s
@@ -0,0 +1,75 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _0380A210
+_0380A210: ;0x0380A210
+ .space 0x0380A3F0 - 0x0380A210
+
+ .section .text
+
+ arm_func_start RTC_Init
+RTC_Init: ;@ 0x03805954
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ ldr r0, _03805A28 ;@ =_0380A038
+ ldrh r1, [r0]
+ cmp r1, #0
+ bne _03805A1C
+ mov r1, #1
+ strh r1, [r0]
+ ldr r0, _03805A2C ;@ =_0380A03C
+ str r1, [r0, #468] ;@ 0x1d4
+ bl FUN_03805158
+ mov r1, #0
+ ldr r0, _03805A2C ;@ =_0380A03C
+ str r1, [r0, #468] ;@ 0x1d4
+ bl PXI_Init
+ mov r0, #5
+ ldr r1, _03805A30 ;@ =FUN_03805818
+ bl PXI_SetFifoRecvCallback
+ ldr r0, _03805A2C ;@ =_0380A03C
+ ldr r1, _03805A34 ;@ =_0380A05C
+ mov r2, #4
+ bl OS_InitMessageQueue
+ mov r0, #256 ;@ 0x100
+ str r0, [sp]
+ str r4, [sp, #4]
+ ldr r0, _03805A38 ;@ =_0380A06C
+ ldr r1, _03805A3C ;@ =FUN_0380531C
+ mov r2, #0
+ ldr r3, _03805A40 ;@ =_0380A210
+ bl OS_CreateThread
+ ldr r0, _03805A38 ;@ =_0380A06C
+ bl OS_WakeupThreadDirect
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #64 ;@ 0x40
+ mov r1, #0
+ bl EXIi_SetBitRcnt0L
+ mov r0, #256 ;@ 0x100
+ mov r1, r0
+ bl EXIi_SetBitRcnt0L
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, #128 ;@ 0x80
+ ldr r1, _03805A44 ;@ =FUN_0380528C
+ bl OS_SetIrqFunction
+ mov r0, #128 ;@ 0x80
+ bl OS_EnableIrqMask
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_03805A1C:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+_03805A28: .word _0380A038
+_03805A2C: .word _0380A03C
+_03805A30: .word FUN_03805818
+_03805A34: .word _0380A05C
+_03805A38: .word _0380A06C
+_03805A3C: .word FUN_0380531C
+_03805A40: .word _0380A210
+_03805A44: .word FUN_0380528C
diff --git a/arm7/asm/RTC_unk_03805064.s b/arm7/asm/RTC_unk_03805064.s
new file mode 100644
index 00000000..095d0149
--- /dev/null
+++ b/arm7/asm/RTC_unk_03805064.s
@@ -0,0 +1,665 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global _0380A038
+_0380A038: ;0x0380A038
+ .space 0x0380A03C - 0x0380A038
+
+ .global _0380A03C
+_0380A03C: ;0x0380A03C
+ .space 0x0380A05C - 0x0380A03C
+
+ .global _0380A05C
+_0380A05C: ;0x0380A05C
+ .space 0x0380A06C - 0x0380A05C
+
+ .global _0380A06C
+_0380A06C: ;0x0380A06C
+ .space 0x0380A13C - 0x0380A06C
+
+ .global _0380A13C
+_0380A13C: ;0x0380A13C
+ .space 0x0380A210 - 0x0380A13C
+
+ .section .text
+
+ arm_func_start FUN_03805064
+FUN_03805064: ;@ 0x03805064
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ mov lr, #0
+ mov r2, lr
+ b _03805094
+_03805078:
+ mov r1, r2, lsl #2
+ mov r1, r0, lsr r1
+ and r1, r1, #15
+ cmp r1, #10
+ movcs r0, #0
+ bcs _038050D0
+ add r2, r2, #1
+_03805094:
+ cmp r2, #8
+ blt _03805078
+ mov r3, #0
+ mov ip, #1
+ mov r2, #10
+_038050A8:
+ mov r1, r3, lsl #2
+ mov r1, r0, lsr r1
+ and r1, r1, #15
+ mla lr, ip, r1, lr
+ add r3, r3, #1
+ mul r1, ip, r2
+ mov ip, r1
+ cmp r3, #8
+ blt _038050A8
+ mov r0, lr
+_038050D0:
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FUN_038050DC
+FUN_038050DC: ;@ 0x038050DC
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ sub r0, r7, #1
+ cmp r0, #1
+ subls r8, r8, #1
+ addls r7, r7, #12
+ mov r0, r8
+ mov r1, #400 ;@ 0x190
+ bl _u32_div_f
+ mov r5, r0
+ mov r0, r8
+ mov r1, #100 ;@ 0x64
+ bl _u32_div_f
+ mov r4, r0
+ mov r0, #13
+ mul r0, r7, r0
+ add r0, r0, #8
+ mov r1, #5
+ bl _u32_div_f
+ add r1, r8, r8, lsr #2
+ sub r1, r1, r4
+ add r1, r5, r1
+ add r0, r1, r0
+ add r0, r6, r0
+ mov r1, #7
+ bl _u32_div_f
+ mov r0, r1
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+
+ arm_func_start FUN_03805158
+FUN_03805158: ;@ 0x03805158
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ add r0, sp, #0
+ bl RTC_ReadStatus1
+ add r0, sp, #2
+ bl RTC_ReadStatus2
+ ldrh r0, [sp]
+ mov r1, r0, lsl #24
+ movs r1, r1, lsr #31
+ bne _0380519C
+ mov r0, r0, lsl #25
+ movs r0, r0, lsr #31
+ bne _0380519C
+ ldrh r0, [sp, #2]
+ mov r0, r0, lsl #24
+ movs r0, r0, lsr #31
+ beq _038051B4
+_0380519C:
+ ldrh r0, [sp]
+ bic r0, r0, #1
+ orr r0, r0, #1
+ strh r0, [sp]
+ add r0, sp, #0
+ bl RTC_WriteStatus1
+_038051B4:
+ ldrh r0, [sp]
+ mov r1, r0, lsl #27
+ movs r1, r1, lsr #31
+ bne _038051D0
+ mov r0, r0, lsl #26
+ movs r0, r0, lsr #31
+ beq _038051F0
+_038051D0:
+ ldrh r0, [sp, #2]
+ bic r0, r0, #15
+ strh r0, [sp, #2]
+ ldrh r0, [sp, #2]
+ bic r0, r0, #64 ;@ 0x40
+ strh r0, [sp, #2]
+ add r0, sp, #2
+ bl RTC_WriteStatus2
+_038051F0:
+ ldr r0, _03805288 ;@ =0x027FFDE8
+ bl RTC_ReadDateTime
+ ldr r0, _03805288 ;@ =0x027FFDE8
+ ldrb r0, [r0]
+ bl FUN_03805064
+ mov r4, r0
+ ldr r0, _03805288 ;@ =0x027FFDE8
+ ldr r0, [r0]
+ mov r0, r0, lsl #19
+ mov r0, r0, lsr #27
+ bl FUN_03805064
+ mov r5, r0
+ ldr r0, _03805288 ;@ =0x027FFDE8
+ ldr r0, [r0]
+ mov r0, r0, lsl #10
+ mov r0, r0, lsr #26
+ bl FUN_03805064
+ mov r2, r0
+ add r0, r4, #2000 ;@ 0x7d0
+ mov r1, r5
+ bl FUN_038050DC
+ ldr r2, _03805288 ;@ =0x027FFDE8
+ ldr r1, [r2]
+ mov r3, r1, lsl #5
+ mov r3, r3, lsr #29
+ cmp r3, r0
+ beq _03805274
+ bic r1, r1, #117440512 ;@ 0x7000000
+ and r0, r0, #7
+ orr r0, r1, r0, lsl #24
+ str r0, [r2]
+ mov r0, r2
+ bl RTC_WriteDateTime
+_03805274:
+ mov r0, #1
+ bl RTC_SetHourFormat
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_03805288: .word 0x027FFDE8
+
+ arm_func_start FUN_0380528C
+FUN_0380528C: ;@ 0x0380528C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ add r0, sp, #0
+ bl RTC_ReadStatus1
+ ldrh r0, [sp]
+ mov r1, r0, lsl #27
+ movs r1, r1, lsr #31
+ bne _038052B8
+ mov r0, r0, lsl #26
+ movs r0, r0, lsr #31
+ beq _03805310
+_038052B8:
+ add r0, sp, #2
+ bl RTC_ReadStatus2
+ mov r4, #0
+ ldrh r0, [sp]
+ mov r0, r0, lsl #27
+ movs r0, r0, lsr #31
+ orrne r4, r4, #1
+ ldrneh r0, [sp, #2]
+ bicne r0, r0, #15
+ strneh r0, [sp, #2]
+ ldrh r0, [sp]
+ mov r0, r0, lsl #26
+ movs r0, r0, lsr #31
+ orrne r4, r4, #2
+ ldrneh r0, [sp, #2]
+ bicne r0, r0, #64 ;@ 0x40
+ strneh r0, [sp, #2]
+ add r0, sp, #2
+ bl RTC_WriteStatus2
+ mov r0, #48 ;@ 0x30
+ mov r1, r4
+ bl FUN_038057D8
+_03805310:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start FUN_0380531C
+FUN_0380531C: ;@ 0x0380531C
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #76 ;@ 0x4c
+ ldr r6, _038057CC ;@ =0x027FFDE8
+ add r5, r6, #4
+ mov r7, #0
+ ldr r9, _038057D0 ;@ =_0380A03C
+ mov r8, #1
+ mov r0, #16
+ str r0, [sp]
+ mov r0, #17
+ str r0, [sp, #4]
+ mov r0, #18
+ str r0, [sp, #8]
+ mov sl, #19
+ mov r4, #2
+ mov fp, #20
+ mov r0, #21
+ str r0, [sp, #12]
+ mov r0, #22
+ str r0, [sp, #16]
+ mov r0, #23
+ str r0, [sp, #20]
+ mov r0, #24
+ str r0, [sp, #24]
+ mov r0, #25
+ str r0, [sp, #28]
+ mov r0, #32
+ str r0, [sp, #32]
+ mov r0, #33 ;@ 0x21
+ str r0, [sp, #36] ;@ 0x24
+ mov r0, #34 ;@ 0x22
+ str r0, [sp, #40] ;@ 0x28
+ mov r0, #35 ;@ 0x23
+ str r0, [sp, #44] ;@ 0x2c
+ mov r0, #36 ;@ 0x24
+ str r0, [sp, #48] ;@ 0x30
+ mov r0, #37 ;@ 0x25
+ str r0, [sp, #52] ;@ 0x34
+ mov r0, #38 ;@ 0x26
+ str r0, [sp, #56] ;@ 0x38
+ mov r0, #39 ;@ 0x27
+ str r0, [sp, #60] ;@ 0x3c
+ mov r0, #40 ;@ 0x28
+ str r0, [sp, #64] ;@ 0x40
+ mov r0, #41 ;@ 0x29
+ str r0, [sp, #68] ;@ 0x44
+_038053D4:
+ mov r0, r9
+ add r1, sp, #72 ;@ 0x48
+ mov r2, r8
+ bl OS_ReceiveMessage
+ ldr r0, _038057D4 ;@ =_0380A13C
+ ldrh r0, [r0, #216] ;@ 0xd8
+ cmp r0, #41 ;@ 0x29
+ addls pc, pc, r0, lsl #2
+ b _038057BC
+ b _038054A0
+ b _038054B8
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038054DC
+ b _038054F8
+ b _03805514
+ b _03805530
+ b _03805568
+ b _038055A0
+ b _038055D8
+ b _038055F4
+ b _03805610
+ b _0380562C
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _038057BC
+ b _03805648
+ b _03805664
+ b _03805688
+ b _038056A4
+ b _038056DC
+ b _03805714
+ b _0380574C
+ b _03805768
+ b _03805784
+ b _038057A0
+_038054A0:
+ bl RTC_Reset
+ str r7, [r9, #468] ;@ 0x1d4
+ mov r0, r7
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038054B8:
+ ldrh r0, [r6]
+ mov r0, r0, lsl #30
+ mov r0, r0, lsr #31
+ bl RTC_SetHourFormat
+ str r7, [r9, #468] ;@ 0x1d4
+ mov r0, r8
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038054DC:
+ mov r0, r6
+ bl RTC_ReadDateTime
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038054F8:
+ mov r0, r6
+ bl RTC_ReadDate
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #4]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805514:
+ add r0, r6, #4
+ bl RTC_ReadTime
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #8]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805530:
+ mov r0, r5
+ bl RTC_ReadPulse
+ cmp r0, #0
+ bne _03805554
+ str r7, [r9, #468] ;@ 0x1d4
+ mov r0, sl
+ mov r1, r4
+ bl FUN_038057D8
+ b _038053D4
+_03805554:
+ str r7, [r9, #468] ;@ 0x1d4
+ mov r0, sl
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805568:
+ mov r0, r5
+ bl RTC_ReadAlarm1
+ cmp r0, #0
+ bne _0380558C
+ str r7, [r9, #468] ;@ 0x1d4
+ mov r0, fp
+ mov r1, r4
+ bl FUN_038057D8
+ b _038053D4
+_0380558C:
+ str r7, [r9, #468] ;@ 0x1d4
+ mov r0, fp
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038055A0:
+ mov r0, r5
+ bl RTC_ReadAlarm2
+ cmp r0, #0
+ bne _038055C4
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #12]
+ mov r1, r4
+ bl FUN_038057D8
+ b _038053D4
+_038055C4:
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #12]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038055D8:
+ mov r0, r6
+ bl RTC_ReadStatus1
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #16]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038055F4:
+ add r0, r6, #2
+ bl RTC_ReadStatus2
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #20]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805610:
+ add r0, r6, #4
+ bl RTC_ReadAdjust
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #24]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_0380562C:
+ add r0, r6, #4
+ bl RTC_ReadFree
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #28]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805648:
+ mov r0, r6
+ bl RTC_WriteDateTime
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #32]
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805664:
+ add r0, r6, #4
+ bl RTC_ReadTime
+ mov r0, r6
+ bl RTC_WriteDateTime
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #36] ;@ 0x24
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805688:
+ add r0, r6, #4
+ bl RTC_WriteTime
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #40] ;@ 0x28
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038056A4:
+ mov r0, r5
+ bl RTC_WritePulse
+ cmp r0, #0
+ bne _038056C8
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #44] ;@ 0x2c
+ mov r1, r4
+ bl FUN_038057D8
+ b _038053D4
+_038056C8:
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #44] ;@ 0x2c
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038056DC:
+ mov r0, r5
+ bl RTC_WriteAlarm1
+ cmp r0, #0
+ bne _03805700
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #48] ;@ 0x30
+ mov r1, r4
+ bl FUN_038057D8
+ b _038053D4
+_03805700:
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #48] ;@ 0x30
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805714:
+ mov r0, r5
+ bl RTC_WriteAlarm2
+ cmp r0, #0
+ bne _03805738
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #52] ;@ 0x34
+ mov r1, r4
+ bl FUN_038057D8
+ b _038053D4
+_03805738:
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #52] ;@ 0x34
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_0380574C:
+ mov r0, r6
+ bl RTC_WriteStatus1
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #56] ;@ 0x38
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805768:
+ add r0, r6, #2
+ bl RTC_WriteStatus2
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #60] ;@ 0x3c
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_03805784:
+ add r0, r6, #4
+ bl RTC_WriteAdjust
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #64] ;@ 0x40
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038057A0:
+ add r0, r6, #4
+ bl RTC_WriteFree
+ str r7, [r9, #468] ;@ 0x1d4
+ ldr r0, [sp, #68] ;@ 0x44
+ mov r1, r7
+ bl FUN_038057D8
+ b _038053D4
+_038057BC:
+ str r7, [r9, #468] ;@ 0x1d4
+ mov r1, r8
+ bl FUN_038057D8
+ b _038053D4
+_038057CC: .word 0x027FFDE8
+_038057D0: .word _0380A03C
+_038057D4: .word _0380A13C
+
+ arm_func_start FUN_038057D8
+FUN_038057D8: ;@ 0x038057D8
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r0, r0, lsl #8
+ and r0, r0, #32512 ;@ 0x7f00
+ orr r2, r0, #32768 ;@ 0x8000
+ and r0, r1, #255 ;@ 0xff
+ orr r6, r2, r0
+ mov r5, #5
+ mov r4, #0
+_038057F8:
+ mov r0, r5
+ mov r1, r6
+ mov r2, r4
+ bl PXI_SendWordByFifo
+ cmp r0, #0
+ blt _038057F8
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start FUN_03805818
+FUN_03805818: ;@ 0x03805818
+ stmdb sp!, {r4, lr}
+ cmp r2, #0
+ bne _03805944
+ and r0, r1, #32512 ;@ 0x7f00
+ mov r0, r0, lsl #8
+ mov r4, r0, lsr #16
+ cmp r4, #41 ;@ 0x29
+ addls pc, pc, r4, lsl #2
+ b _03805938
+ b _038058E4
+ b _038058E4
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _03805938
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+ b _038058E4
+_038058E4:
+ ldr r0, _0380594C ;@ =_0380A03C
+ ldr r1, [r0, #468] ;@ 0x1d4
+ cmp r1, #0
+ beq _03805904
+ mov r0, r4
+ mov r1, #3
+ bl FUN_038057D8
+ b _03805944
+_03805904:
+ mov r1, #1
+ str r1, [r0, #468] ;@ 0x1d4
+ ldr r1, _03805950 ;@ =_0380A13C
+ strh r4, [r1, #216] ;@ 0xd8
+ mov r1, #0
+ mov r2, r1
+ bl OS_SendMessage
+ cmp r0, #0
+ bne _03805944
+ mov r0, r4
+ mov r1, #4
+ bl FUN_038057D8
+ b _03805944
+_03805938:
+ mov r0, r4
+ mov r1, #1
+ bl FUN_038057D8
+_03805944:
+ ldmia sp!, {r4, lr}
+ bx lr
+_0380594C: .word _0380A03C
+_03805950: .word _0380A13C
diff --git a/arm7/asm/wram2.s b/arm7/asm/wram2.s
index 68b31543..1ad3f830 100644
--- a/arm7/asm/wram2.s
+++ b/arm7/asm/wram2.s
@@ -3,1753 +3,6 @@
.section .text
- arm_func_start FUN_0380428C
-FUN_0380428C: ;@ 0x0380428C
- stmfd sp!, {lr}
- sub sp, sp, #4
- add r0, sp, #0
- bl NVRAM_ReadStatusRegister
- ldrh r1, [sp]
- ands r0, r1, #1
- movne r0, #0
- bne _038042B8
- ands r0, r1, #2
- movne r0, #1
- moveq r0, #0
-_038042B8:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FUN_038042C4
-FUN_038042C4: ;@ 0x038042C4
- stmfd sp!, {lr}
- sub sp, sp, #4
- add r0, sp, #0
- bl NVRAM_ReadStatusRegister
- ldrh r0, [sp]
- ands r0, r0, #1
- moveq r0, #1
- movne r0, #0
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start NVRAM_ExecuteProcess
-NVRAM_ExecuteProcess: ;@ 0x038042F0
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0
- bl OS_DisableInterrupts
- mov r5, r0
- mov r0, #1
- bl SPIi_CheckException
- cmp r0, #0
- bne _03804334
- mov r0, r5
- bl OS_RestoreInterrupts
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #4
- bl SPIi_ReturnResult
- b _038045C0
-_03804334:
- mov r0, #1
- bl SPIi_GetException
- mov r0, r5
- bl OS_RestoreInterrupts
- ldr r0, [r4, #4]
- sub r0, r0, #32
- cmp r0, #13
- addls pc, pc, r0, lsl #2
- b _03804584
- b _03804390
- b _03804398
- b _038043A0
- b _038043AC
- b _038043EC
- b _0380442C
- b _03804474
- b _038044BC
- b _038044F4
- b _0380452C
- b _03804534
- b _0380453C
- b _03804570
- b _0380457C
-_03804390:
- bl NVRAM_WriteEnable
- b _038045A4
-_03804398:
- bl NVRAM_WriteDisable
- b _038045A4
-_038043A0:
- ldr r0, [r4, #16]
- bl NVRAM_ReadStatusRegister
- b _038045A4
-_038043AC:
- bl FUN_038042C4
- cmp r0, #0
- bne _038043D8
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #3
- bl SPIi_ReturnResult
- mov r0, #1
- bl SPIi_ReleaseException
- b _038045C0
-_038043D8:
- ldr r0, [r4, #8]
- ldr r1, [r4, #12]
- ldr r2, [r4, #16]
- bl NVRAM_ReadDataBytes
- b _038045A4
-_038043EC:
- bl FUN_038042C4
- cmp r0, #0
- bne _03804418
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #3
- bl SPIi_ReturnResult
- mov r0, #1
- bl SPIi_ReleaseException
- b _038045C0
-_03804418:
- ldr r0, [r4, #8]
- ldr r1, [r4, #12]
- ldr r2, [r4, #16]
- bl NVRAM_ReadDataBytesAtHigherSpeed
- b _038045A4
-_0380442C:
- bl FUN_0380428C
- cmp r0, #0
- bne _03804458
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #3
- bl SPIi_ReturnResult
- mov r0, #1
- bl SPIi_ReleaseException
- b _038045C0
-_03804458:
- ldr r0, [r4, #8]
- ldr r1, [r4, #12]
- mov r1, r1, lsl #16
- mov r1, r1, lsr #16
- ldr r2, [r4, #16]
- bl NVRAM_PageWrite
- b _038045A4
-_03804474:
- bl FUN_0380428C
- cmp r0, #0
- bne _038044A0
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #3
- bl SPIi_ReturnResult
- mov r0, #1
- bl SPIi_ReleaseException
- b _038045C0
-_038044A0:
- ldr r0, [r4, #8]
- ldr r1, [r4, #12]
- mov r1, r1, lsl #16
- mov r1, r1, lsr #16
- ldr r2, [r4, #16]
- bl NVRAM_PageProgram
- b _038045A4
-_038044BC:
- bl FUN_0380428C
- cmp r0, #0
- bne _038044E8
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #3
- bl SPIi_ReturnResult
- mov r0, #1
- bl SPIi_ReleaseException
- b _038045C0
-_038044E8:
- ldr r0, [r4, #8]
- bl NVRAM_PageErase
- b _038045A4
-_038044F4:
- bl FUN_0380428C
- cmp r0, #0
- bne _03804520
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #3
- bl SPIi_ReturnResult
- mov r0, #1
- bl SPIi_ReleaseException
- b _038045C0
-_03804520:
- ldr r0, [r4, #8]
- bl NVRAM_SectorErase
- b _038045A4
-_0380452C:
- bl NVRAM_DeepPowerDown
- b _038045A4
-_03804534:
- bl NVRAM_ReleaseFromDeepPowerDown
- b _038045A4
-_0380453C:
- bl FUN_0380428C
- cmp r0, #0
- bne _03804568
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #3
- bl SPIi_ReturnResult
- mov r0, #1
- bl SPIi_ReleaseException
- b _038045C0
-_03804568:
- bl NVRAM_ChipErase
- b _038045A4
-_03804570:
- ldr r0, [r4, #16]
- bl NVRAM_ReadSiliconId
- b _038045A4
-_0380457C:
- bl NVRAM_SoftwareReset
- b _038045A4
-_03804584:
- mov r0, #1
- bl SPIi_ReleaseException
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #1
- bl SPIi_ReturnResult
- b _038045C0
-_038045A4:
- ldr r0, [r4, #4]
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- mov r1, #0
- bl SPIi_ReturnResult
- mov r0, #1
- bl SPIi_ReleaseException
-_038045C0:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start NVRAM_AnalyzeCommand
-NVRAM_AnalyzeCommand: ;@ 0x038045CC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #12
- ands r1, r0, #33554432 ;@ 0x2000000
- beq _038045FC
- mov r5, #0
- mov lr, r5
- ldr r1, _0380476C ;@ =_0380A018
-_038045E8:
- mov r4, r5, lsl #1
- strh lr, [r1, r4]
- add r5, r5, #1
- cmp r5, #16
- blt _038045E8
-_038045FC:
- and r1, r0, #983040 ;@ 0xf0000
- mov r1, r1, lsr #16
- mov r4, r1, lsl #1
- ldr r1, _0380476C ;@ =_0380A018
- strh r0, [r1, r4]
- ands r0, r0, #16777216 ;@ 0x1000000
- beq _03804760
- ldrh r0, [r1]
- and r4, r0, #65280 ;@ 0xff00
- mov r4, r4, lsl #8
- mov r4, r4, lsr #16
- sub lr, r4, #34 ;@ 0x22
- cmp lr, #10
- addls pc, pc, lr, lsl #2
- b _03804734
- b _03804664
- b _038046A0
- b _038046A0
- b _038046E8
- b _038046E8
- b _03804728
- b _03804728
- b _03804734
- b _03804734
- b _03804734
- b _03804664
-_03804664:
- ldrh ip, [r1, #4]
- and lr, ip, #65280 ;@ 0xff00
- and r0, r0, #255 ;@ 0xff
- mov ip, r0, lsl #24
- ldrh r0, [r1, #2]
- orr r0, ip, r0, lsl #8
- orr ip, r0, lr, lsr #8
- cmp ip, #33554432 ;@ 0x2000000
- bcc _03804690
- cmp ip, #41943040 ;@ 0x2800000
- bcc _03804734
-_03804690:
- mov r0, r4
- mov r1, #2
- bl SPIi_ReturnResult
- b _03804760
-_038046A0:
- ldrh r3, [r1, #8]
- ldrh r2, [r1, #10]
- orr ip, r2, r3, lsl #16
- cmp ip, #33554432 ;@ 0x2000000
- bcc _038046BC
- cmp ip, #41943040 ;@ 0x2800000
- bcc _038046CC
-_038046BC:
- mov r0, r4
- mov r1, #2
- bl SPIi_ReturnResult
- b _03804760
-_038046CC:
- and r2, r0, #255 ;@ 0xff
- ldrh r0, [r1, #2]
- orr r3, r0, r2, lsl #16
- ldrh r2, [r1, #4]
- ldrh r0, [r1, #6]
- orr r2, r0, r2, lsl #16
- b _03804734
-_038046E8:
- ldrh r3, [r1, #6]
- ldrh r2, [r1, #8]
- orr ip, r2, r3, lsl #16
- cmp ip, #33554432 ;@ 0x2000000
- bcc _03804704
- cmp ip, #41943040 ;@ 0x2800000
- bcc _03804714
-_03804704:
- mov r0, r4
- mov r1, #2
- bl SPIi_ReturnResult
- b _03804760
-_03804714:
- and r2, r0, #255 ;@ 0xff
- ldrh r0, [r1, #2]
- orr r3, r0, r2, lsl #16
- ldrh r2, [r1, #4]
- b _03804734
-_03804728:
- and r3, r0, #255 ;@ 0xff
- ldrh r0, [r1, #2]
- orr r3, r0, r3, lsl #16
-_03804734:
- str r2, [sp]
- str ip, [sp, #4]
- mov r0, #1
- mov r1, r4
- mov r2, #3
- bl SPIi_SetEntry
- cmp r0, #0
- bne _03804760
- mov r0, r4
- mov r1, #4
- bl SPIi_ReturnResult
-_03804760:
- add sp, sp, #12
- ldmia sp!, {r4, r5, lr}
- bx lr
-_0380476C: .word _0380A018
-
- arm_func_start NVRAM_Init
-NVRAM_Init: ;@ 0x03804770
- mov r3, #0
- mov r2, r3
- ldr r0, _03804794 ;@ =_0380A018
-_0380477C:
- mov r1, r3, lsl #1
- strh r2, [r0, r1]
- add r3, r3, #1
- cmp r3, #16
- blt _0380477C
- bx lr
-_03804794: .word _0380A018
-
- arm_func_start NVRAM_SoftwareReset
-NVRAM_SoftwareReset: ;@ 0x03804798
- ldr r1, _038047D0 ;@ =0x040001C0
-_0380479C:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _0380479C
- mov r0, #33024 ;@ 0x8100
- strh r0, [r1]
- mov r1, #255 ;@ 0xff
- ldr r0, _038047D4 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _038047D0 ;@ =0x040001C0
-_038047C0:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _038047C0
- bx lr
-_038047D0: .word 0x040001C0
-_038047D4: .word 0x040001C2
-
- arm_func_start NVRAM_ReadSiliconId
-NVRAM_ReadSiliconId: ;@ 0x038047D8
- ldr r2, _0380486C ;@ =0x040001C0
-_038047DC:
- ldrh r1, [r2]
- ands r1, r1, #128 ;@ 0x80
- bne _038047DC
- mov r1, #35072 ;@ 0x8900
- strh r1, [r2]
- mov r2, #159 ;@ 0x9f
- ldr r1, _03804870 ;@ =0x040001C2
- strh r2, [r1]
- ldr r2, _0380486C ;@ =0x040001C0
-_03804800:
- ldrh r1, [r2]
- ands r1, r1, #128 ;@ 0x80
- bne _03804800
- mov r2, #0
- ldr r1, _03804870 ;@ =0x040001C2
- strh r2, [r1]
- ldr r3, _0380486C ;@ =0x040001C0
-_0380481C:
- ldrh r1, [r3]
- ands r1, r1, #128 ;@ 0x80
- bne _0380481C
- ldr r2, _03804870 ;@ =0x040001C2
- ldrh r1, [r2]
- and r1, r1, #255 ;@ 0xff
- strb r1, [r0]
- mov r1, #33024 ;@ 0x8100
- strh r1, [r3]
- mov r1, #0
- strh r1, [r2]
- ldr r2, _0380486C ;@ =0x040001C0
-_0380484C:
- ldrh r1, [r2]
- ands r1, r1, #128 ;@ 0x80
- bne _0380484C
- ldr r1, _03804870 ;@ =0x040001C2
- ldrh r1, [r1]
- and r1, r1, #255 ;@ 0xff
- strb r1, [r0, #1]
- bx lr
-_0380486C: .word 0x040001C0
-_03804870: .word 0x040001C2
-
- arm_func_start NVRAM_ChipErase
-NVRAM_ChipErase: ;@ 0x03804874
- ldr r1, _038048AC ;@ =0x040001C0
-_03804878:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _03804878
- mov r0, #33024 ;@ 0x8100
- strh r0, [r1]
- mov r1, #199 ;@ 0xc7
- ldr r0, _038048B0 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _038048AC ;@ =0x040001C0
-_0380489C:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _0380489C
- bx lr
-_038048AC: .word 0x040001C0
-_038048B0: .word 0x040001C2
-
- arm_func_start NVRAM_ReleaseFromDeepPowerDown
-NVRAM_ReleaseFromDeepPowerDown: ;@ 0x038048B4
- ldr r1, _038048EC ;@ =0x040001C0
-_038048B8:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _038048B8
- mov r0, #33024 ;@ 0x8100
- strh r0, [r1]
- mov r1, #171 ;@ 0xab
- ldr r0, _038048F0 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _038048EC ;@ =0x040001C0
-_038048DC:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _038048DC
- bx lr
-_038048EC: .word 0x040001C0
-_038048F0: .word 0x040001C2
-
- arm_func_start NVRAM_DeepPowerDown
-NVRAM_DeepPowerDown: ;@ 0x038048F4
- ldr r1, _0380492C ;@ =0x040001C0
-_038048F8:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _038048F8
- mov r0, #33024 ;@ 0x8100
- strh r0, [r1]
- mov r1, #185 ;@ 0xb9
- ldr r0, _03804930 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _0380492C ;@ =0x040001C0
-_0380491C:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _0380491C
- bx lr
-_0380492C: .word 0x040001C0
-_03804930: .word 0x040001C2
-
- arm_func_start NVRAM_SectorErase
-NVRAM_SectorErase: ;@ 0x03804934
- and r1, r0, #16711680 ;@ 0xff0000
- mov r1, r1, lsr #16
- mov r1, r1, lsl #16
- mov r2, r1, lsr #16
- and r1, r0, #65280 ;@ 0xff00
- mov r1, r1, lsl #8
- mov r1, r1, lsr #16
- and r0, r0, #255 ;@ 0xff
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- ldr ip, _038049F0 ;@ =0x040001C0
-_03804960:
- ldrh r3, [ip]
- ands r3, r3, #128 ;@ 0x80
- bne _03804960
- mov r3, #35072 ;@ 0x8900
- strh r3, [ip]
- mov ip, #216 ;@ 0xd8
- ldr r3, _038049F4 ;@ =0x040001C2
- strh ip, [r3]
- ldr ip, _038049F0 ;@ =0x040001C0
-_03804984:
- ldrh r3, [ip]
- ands r3, r3, #128 ;@ 0x80
- bne _03804984
- and r3, r2, #255 ;@ 0xff
- ldr r2, _038049F4 ;@ =0x040001C2
- strh r3, [r2]
- ldr r3, _038049F0 ;@ =0x040001C0
-_038049A0:
- ldrh r2, [r3]
- ands r2, r2, #128 ;@ 0x80
- bne _038049A0
- and r2, r1, #255 ;@ 0xff
- ldr r1, _038049F4 ;@ =0x040001C2
- strh r2, [r1]
- ldr r2, _038049F0 ;@ =0x040001C0
-_038049BC:
- ldrh r1, [r2]
- ands r1, r1, #128 ;@ 0x80
- bne _038049BC
- mov r1, #33024 ;@ 0x8100
- strh r1, [r2]
- and r1, r0, #255 ;@ 0xff
- ldr r0, _038049F4 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _038049F0 ;@ =0x040001C0
-_038049E0:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _038049E0
- bx lr
-_038049F0: .word 0x040001C0
-_038049F4: .word 0x040001C2
-
- arm_func_start NVRAM_PageErase
-NVRAM_PageErase: ;@ 0x038049F8
- and r1, r0, #16711680 ;@ 0xff0000
- mov r1, r1, lsr #16
- mov r1, r1, lsl #16
- mov r2, r1, lsr #16
- and r1, r0, #65280 ;@ 0xff00
- mov r1, r1, lsl #8
- mov r1, r1, lsr #16
- and r0, r0, #255 ;@ 0xff
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- ldr ip, _03804AB4 ;@ =0x040001C0
-_03804A24:
- ldrh r3, [ip]
- ands r3, r3, #128 ;@ 0x80
- bne _03804A24
- mov r3, #35072 ;@ 0x8900
- strh r3, [ip]
- mov ip, #219 ;@ 0xdb
- ldr r3, _03804AB8 ;@ =0x040001C2
- strh ip, [r3]
- ldr ip, _03804AB4 ;@ =0x040001C0
-_03804A48:
- ldrh r3, [ip]
- ands r3, r3, #128 ;@ 0x80
- bne _03804A48
- and r3, r2, #255 ;@ 0xff
- ldr r2, _03804AB8 ;@ =0x040001C2
- strh r3, [r2]
- ldr r3, _03804AB4 ;@ =0x040001C0
-_03804A64:
- ldrh r2, [r3]
- ands r2, r2, #128 ;@ 0x80
- bne _03804A64
- and r2, r1, #255 ;@ 0xff
- ldr r1, _03804AB8 ;@ =0x040001C2
- strh r2, [r1]
- ldr r2, _03804AB4 ;@ =0x040001C0
-_03804A80:
- ldrh r1, [r2]
- ands r1, r1, #128 ;@ 0x80
- bne _03804A80
- mov r1, #33024 ;@ 0x8100
- strh r1, [r2]
- and r1, r0, #255 ;@ 0xff
- ldr r0, _03804AB8 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _03804AB4 ;@ =0x040001C0
-_03804AA4:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _03804AA4
- bx lr
-_03804AB4: .word 0x040001C0
-_03804AB8: .word 0x040001C2
-
- arm_func_start NVRAM_PageProgram
-NVRAM_PageProgram: ;@ 0x03804ABC
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- cmp r1, #1
- bcc _03804BD4
- add r3, r0, r1
- sub r3, r3, #1
- mov r3, r3, lsr #8
- cmp r3, r0, lsr #8
- andhi r1, r0, #255 ;@ 0xff
- rsbhi r1, r1, #256 ;@ 0x100
- movhi r1, r1, lsl #16
- movhi r1, r1, lsr #16
- and r3, r0, #16711680 ;@ 0xff0000
- mov r3, r3, lsr #16
- strh r3, [sp]
- and r3, r0, #65280 ;@ 0xff00
- mov r3, r3, lsr #8
- strh r3, [sp, #2]
- and r0, r0, #255 ;@ 0xff
- strh r0, [sp, #4]
- ldr r3, _03804BE0 ;@ =0x040001C0
-_03804B10:
- ldrh r0, [r3]
- ands r0, r0, #128 ;@ 0x80
- bne _03804B10
- mov r0, #35072 ;@ 0x8900
- strh r0, [r3]
- mov r0, #2
- ldr lr, _03804BE4 ;@ =0x040001C2
- strh r0, [lr]
- mov r4, #0
- add r3, sp, #0
- ldr ip, _03804BE0 ;@ =0x040001C0
-_03804B3C:
- ldrh r0, [ip]
- ands r0, r0, #128 ;@ 0x80
- bne _03804B3C
- mov r0, r4, lsl #1
- ldrh r0, [r3, r0]
- and r0, r0, #255 ;@ 0xff
- strh r0, [lr]
- add r4, r4, #1
- cmp r4, #3
- blt _03804B3C
- mov ip, #0
- sub lr, r1, #1
- ldr r3, _03804BE0 ;@ =0x040001C0
- ldr r0, _03804BE4 ;@ =0x040001C2
- b _03804B94
-_03804B78:
- ldrh r1, [r3]
- ands r1, r1, #128 ;@ 0x80
- bne _03804B78
- ldrb r1, [r2, ip]
- and r1, r1, #255 ;@ 0xff
- strh r1, [r0]
- add ip, ip, #1
-_03804B94:
- cmp ip, lr
- blt _03804B78
- ldr r1, _03804BE0 ;@ =0x040001C0
-_03804BA0:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _03804BA0
- mov r0, #33024 ;@ 0x8100
- strh r0, [r1]
- ldrb r0, [r2, ip]
- and r1, r0, #255 ;@ 0xff
- ldr r0, _03804BE4 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _03804BE0 ;@ =0x040001C0
-_03804BC8:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _03804BC8
-_03804BD4:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-_03804BE0: .word 0x040001C0
-_03804BE4: .word 0x040001C2
-
- arm_func_start NVRAM_PageWrite
-NVRAM_PageWrite: ;@ 0x03804BE8
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- cmp r1, #1
- bcc _03804D00
- add r3, r0, r1
- sub r3, r3, #1
- mov r3, r3, lsr #8
- cmp r3, r0, lsr #8
- andhi r1, r0, #255 ;@ 0xff
- rsbhi r1, r1, #256 ;@ 0x100
- movhi r1, r1, lsl #16
- movhi r1, r1, lsr #16
- and r3, r0, #16711680 ;@ 0xff0000
- mov r3, r3, lsr #16
- strh r3, [sp]
- and r3, r0, #65280 ;@ 0xff00
- mov r3, r3, lsr #8
- strh r3, [sp, #2]
- and r0, r0, #255 ;@ 0xff
- strh r0, [sp, #4]
- ldr r3, _03804D0C ;@ =0x040001C0
-_03804C3C:
- ldrh r0, [r3]
- ands r0, r0, #128 ;@ 0x80
- bne _03804C3C
- mov r0, #35072 ;@ 0x8900
- strh r0, [r3]
- mov r0, #10
- ldr lr, _03804D10 ;@ =0x040001C2
- strh r0, [lr]
- mov r4, #0
- add r3, sp, #0
- ldr ip, _03804D0C ;@ =0x040001C0
-_03804C68:
- ldrh r0, [ip]
- ands r0, r0, #128 ;@ 0x80
- bne _03804C68
- mov r0, r4, lsl #1
- ldrh r0, [r3, r0]
- and r0, r0, #255 ;@ 0xff
- strh r0, [lr]
- add r4, r4, #1
- cmp r4, #3
- blt _03804C68
- mov ip, #0
- sub lr, r1, #1
- ldr r3, _03804D0C ;@ =0x040001C0
- ldr r0, _03804D10 ;@ =0x040001C2
- b _03804CC0
-_03804CA4:
- ldrh r1, [r3]
- ands r1, r1, #128 ;@ 0x80
- bne _03804CA4
- ldrb r1, [r2, ip]
- and r1, r1, #255 ;@ 0xff
- strh r1, [r0]
- add ip, ip, #1
-_03804CC0:
- cmp ip, lr
- blt _03804CA4
- ldr r1, _03804D0C ;@ =0x040001C0
-_03804CCC:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _03804CCC
- mov r0, #33024 ;@ 0x8100
- strh r0, [r1]
- ldrb r0, [r2, ip]
- and r1, r0, #255 ;@ 0xff
- ldr r0, _03804D10 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _03804D0C ;@ =0x040001C0
-_03804CF4:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _03804CF4
-_03804D00:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-_03804D0C: .word 0x040001C0
-_03804D10: .word 0x040001C2
-
- arm_func_start NVRAM_ReadDataBytesAtHigherSpeed
-NVRAM_ReadDataBytesAtHigherSpeed: ;@ 0x03804D14
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- cmp r1, #1
- bcc _03804E3C
- and r3, r0, #16711680 ;@ 0xff0000
- mov r3, r3, lsr #16
- strh r3, [sp]
- and r3, r0, #65280 ;@ 0xff00
- mov r3, r3, lsr #8
- strh r3, [sp, #2]
- and r0, r0, #255 ;@ 0xff
- strh r0, [sp, #4]
- ldr r3, _03804E48 ;@ =0x040001C0
-_03804D48:
- ldrh r0, [r3]
- ands r0, r0, #128 ;@ 0x80
- bne _03804D48
- mov r0, #35072 ;@ 0x8900
- strh r0, [r3]
- mov r0, #11
- ldr ip, _03804E4C ;@ =0x040001C2
- strh r0, [ip]
- mov lr, #0
- add r3, sp, #0
- ldr r4, _03804E48 ;@ =0x040001C0
-_03804D74:
- ldrh r0, [r4]
- ands r0, r0, #128 ;@ 0x80
- bne _03804D74
- mov r0, lr, lsl #1
- ldrh r0, [r3, r0]
- and r0, r0, #255 ;@ 0xff
- strh r0, [ip]
- add lr, lr, #1
- cmp lr, #3
- blt _03804D74
- ldr r3, _03804E48 ;@ =0x040001C0
-_03804DA0:
- ldrh r0, [r3]
- ands r0, r0, #128 ;@ 0x80
- bne _03804DA0
- mov r3, #0
- ldr r0, _03804E4C ;@ =0x040001C2
- strh r3, [r0]
- ldr r3, _03804E48 ;@ =0x040001C0
-_03804DBC:
- ldrh r0, [r3]
- ands r0, r0, #128 ;@ 0x80
- bne _03804DBC
- mov r0, #0
- ldr ip, _03804E48 ;@ =0x040001C0
- mov r4, r0
- ldr lr, _03804E4C ;@ =0x040001C2
- sub r1, r1, #1
- b _03804E00
-_03804DE0:
- strh r4, [lr]
-_03804DE4:
- ldrh r3, [ip]
- ands r3, r3, #128 ;@ 0x80
- bne _03804DE4
- ldrh r3, [lr]
- and r3, r3, #255 ;@ 0xff
- strb r3, [r2, r0]
- add r0, r0, #1
-_03804E00:
- cmp r0, r1
- bcc _03804DE0
- mov r1, #33024 ;@ 0x8100
- ldr ip, _03804E48 ;@ =0x040001C0
- strh r1, [ip]
- mov r3, #0
- ldr r1, _03804E4C ;@ =0x040001C2
- strh r3, [r1]
-_03804E20:
- ldrh r1, [ip]
- ands r1, r1, #128 ;@ 0x80
- bne _03804E20
- ldr r1, _03804E4C ;@ =0x040001C2
- ldrh r1, [r1]
- and r1, r1, #255 ;@ 0xff
- strb r1, [r2, r0]
-_03804E3C:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-_03804E48: .word 0x040001C0
-_03804E4C: .word 0x040001C2
-
- arm_func_start NVRAM_ReadDataBytes
-NVRAM_ReadDataBytes: ;@ 0x03804E50
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- cmp r1, #1
- bcc _03804F5C
- and r3, r0, #16711680 ;@ 0xff0000
- mov r3, r3, lsr #16
- strh r3, [sp]
- and r3, r0, #65280 ;@ 0xff00
- mov r3, r3, lsr #8
- strh r3, [sp, #2]
- and r0, r0, #255 ;@ 0xff
- strh r0, [sp, #4]
- ldr r3, _03804F68 ;@ =0x040001C0
-_03804E84:
- ldrh r0, [r3]
- ands r0, r0, #128 ;@ 0x80
- bne _03804E84
- mov r0, #35072 ;@ 0x8900
- strh r0, [r3]
- mov r0, #3
- ldr ip, _03804F6C ;@ =0x040001C2
- strh r0, [ip]
- mov lr, #0
- add r3, sp, #0
- ldr r4, _03804F68 ;@ =0x040001C0
-_03804EB0:
- ldrh r0, [r4]
- ands r0, r0, #128 ;@ 0x80
- bne _03804EB0
- mov r0, lr, lsl #1
- ldrh r0, [r3, r0]
- and r0, r0, #255 ;@ 0xff
- strh r0, [ip]
- add lr, lr, #1
- cmp lr, #3
- blt _03804EB0
- ldr r3, _03804F68 ;@ =0x040001C0
-_03804EDC:
- ldrh r0, [r3]
- ands r0, r0, #128 ;@ 0x80
- bne _03804EDC
- mov r0, #0
- ldr ip, _03804F68 ;@ =0x040001C0
- mov r4, r0
- ldr lr, _03804F6C ;@ =0x040001C2
- sub r1, r1, #1
- b _03804F20
-_03804F00:
- strh r4, [lr]
-_03804F04:
- ldrh r3, [ip]
- ands r3, r3, #128 ;@ 0x80
- bne _03804F04
- ldrh r3, [lr]
- and r3, r3, #255 ;@ 0xff
- strb r3, [r2, r0]
- add r0, r0, #1
-_03804F20:
- cmp r0, r1
- bcc _03804F00
- mov r1, #33024 ;@ 0x8100
- ldr ip, _03804F68 ;@ =0x040001C0
- strh r1, [ip]
- mov r3, #0
- ldr r1, _03804F6C ;@ =0x040001C2
- strh r3, [r1]
-_03804F40:
- ldrh r1, [ip]
- ands r1, r1, #128 ;@ 0x80
- bne _03804F40
- ldr r1, _03804F6C ;@ =0x040001C2
- ldrh r1, [r1]
- and r1, r1, #255 ;@ 0xff
- strb r1, [r2, r0]
-_03804F5C:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-_03804F68: .word 0x040001C0
-_03804F6C: .word 0x040001C2
-
- arm_func_start NVRAM_ReadStatusRegister
-NVRAM_ReadStatusRegister: ;@ 0x03804F70
- ldr r2, _03804FDC ;@ =0x040001C0
-_03804F74:
- ldrh r1, [r2]
- ands r1, r1, #128 ;@ 0x80
- bne _03804F74
- mov r1, #35072 ;@ 0x8900
- strh r1, [r2]
- mov r2, #5
- ldr r1, _03804FE0 ;@ =0x040001C2
- strh r2, [r1]
- ldr r2, _03804FDC ;@ =0x040001C0
-_03804F98:
- ldrh r1, [r2]
- ands r1, r1, #128 ;@ 0x80
- bne _03804F98
- mov r1, #33024 ;@ 0x8100
- strh r1, [r2]
- mov r2, #0
- ldr r1, _03804FE0 ;@ =0x040001C2
- strh r2, [r1]
- ldr r2, _03804FDC ;@ =0x040001C0
-_03804FBC:
- ldrh r1, [r2]
- ands r1, r1, #128 ;@ 0x80
- bne _03804FBC
- ldr r1, _03804FE0 ;@ =0x040001C2
- ldrh r1, [r1]
- and r1, r1, #255 ;@ 0xff
- strb r1, [r0]
- bx lr
-_03804FDC: .word 0x040001C0
-_03804FE0: .word 0x040001C2
-
- arm_func_start NVRAM_WriteDisable
-NVRAM_WriteDisable: ;@ 0x03804FE4
- ldr r1, _0380501C ;@ =0x040001C0
-_03804FE8:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _03804FE8
- mov r0, #33024 ;@ 0x8100
- strh r0, [r1]
- mov r1, #4
- ldr r0, _03805020 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _0380501C ;@ =0x040001C0
-_0380500C:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _0380500C
- bx lr
-_0380501C: .word 0x040001C0
-_03805020: .word 0x040001C2
-
- arm_func_start NVRAM_WriteEnable
-NVRAM_WriteEnable: ;@ 0x03805024
- ldr r1, _0380505C ;@ =0x040001C0
-_03805028:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _03805028
- mov r0, #33024 ;@ 0x8100
- strh r0, [r1]
- mov r1, #6
- ldr r0, _03805060 ;@ =0x040001C2
- strh r1, [r0]
- ldr r1, _0380505C ;@ =0x040001C0
-_0380504C:
- ldrh r0, [r1]
- ands r0, r0, #128 ;@ 0x80
- bne _0380504C
- bx lr
-_0380505C: .word 0x040001C0
-_03805060: .word 0x040001C2
-
- arm_func_start FUN_03805064
-FUN_03805064: ;@ 0x03805064
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov lr, #0
- mov r2, lr
- b _03805094
-_03805078:
- mov r1, r2, lsl #2
- mov r1, r0, lsr r1
- and r1, r1, #15
- cmp r1, #10
- movcs r0, #0
- bcs _038050D0
- add r2, r2, #1
-_03805094:
- cmp r2, #8
- blt _03805078
- mov r3, #0
- mov ip, #1
- mov r2, #10
-_038050A8:
- mov r1, r3, lsl #2
- mov r1, r0, lsr r1
- and r1, r1, #15
- mla lr, ip, r1, lr
- add r3, r3, #1
- mul r1, ip, r2
- mov ip, r1
- cmp r3, #8
- blt _038050A8
- mov r0, lr
-_038050D0:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FUN_038050DC
-FUN_038050DC: ;@ 0x038050DC
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r0
- mov r7, r1
- mov r6, r2
- sub r0, r7, #1
- cmp r0, #1
- subls r8, r8, #1
- addls r7, r7, #12
- mov r0, r8
- mov r1, #400 ;@ 0x190
- bl _u32_div_f
- mov r5, r0
- mov r0, r8
- mov r1, #100 ;@ 0x64
- bl _u32_div_f
- mov r4, r0
- mov r0, #13
- mul r0, r7, r0
- add r0, r0, #8
- mov r1, #5
- bl _u32_div_f
- add r1, r8, r8, lsr #2
- sub r1, r1, r4
- add r1, r5, r1
- add r0, r1, r0
- add r0, r6, r0
- mov r1, #7
- bl _u32_div_f
- mov r0, r1
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-
- arm_func_start FUN_03805158
-FUN_03805158: ;@ 0x03805158
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- add r0, sp, #0
- bl RTC_ReadStatus1
- add r0, sp, #2
- bl RTC_ReadStatus2
- ldrh r0, [sp]
- mov r1, r0, lsl #24
- movs r1, r1, lsr #31
- bne _0380519C
- mov r0, r0, lsl #25
- movs r0, r0, lsr #31
- bne _0380519C
- ldrh r0, [sp, #2]
- mov r0, r0, lsl #24
- movs r0, r0, lsr #31
- beq _038051B4
-_0380519C:
- ldrh r0, [sp]
- bic r0, r0, #1
- orr r0, r0, #1
- strh r0, [sp]
- add r0, sp, #0
- bl RTC_WriteStatus1
-_038051B4:
- ldrh r0, [sp]
- mov r1, r0, lsl #27
- movs r1, r1, lsr #31
- bne _038051D0
- mov r0, r0, lsl #26
- movs r0, r0, lsr #31
- beq _038051F0
-_038051D0:
- ldrh r0, [sp, #2]
- bic r0, r0, #15
- strh r0, [sp, #2]
- ldrh r0, [sp, #2]
- bic r0, r0, #64 ;@ 0x40
- strh r0, [sp, #2]
- add r0, sp, #2
- bl RTC_WriteStatus2
-_038051F0:
- ldr r0, _03805288 ;@ =0x027FFDE8
- bl RTC_ReadDateTime
- ldr r0, _03805288 ;@ =0x027FFDE8
- ldrb r0, [r0]
- bl FUN_03805064
- mov r4, r0
- ldr r0, _03805288 ;@ =0x027FFDE8
- ldr r0, [r0]
- mov r0, r0, lsl #19
- mov r0, r0, lsr #27
- bl FUN_03805064
- mov r5, r0
- ldr r0, _03805288 ;@ =0x027FFDE8
- ldr r0, [r0]
- mov r0, r0, lsl #10
- mov r0, r0, lsr #26
- bl FUN_03805064
- mov r2, r0
- add r0, r4, #2000 ;@ 0x7d0
- mov r1, r5
- bl FUN_038050DC
- ldr r2, _03805288 ;@ =0x027FFDE8
- ldr r1, [r2]
- mov r3, r1, lsl #5
- mov r3, r3, lsr #29
- cmp r3, r0
- beq _03805274
- bic r1, r1, #117440512 ;@ 0x7000000
- and r0, r0, #7
- orr r0, r1, r0, lsl #24
- str r0, [r2]
- mov r0, r2
- bl RTC_WriteDateTime
-_03805274:
- mov r0, #1
- bl RTC_SetHourFormat
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_03805288: .word 0x027FFDE8
-
- arm_func_start FUN_0380528C
-FUN_0380528C: ;@ 0x0380528C
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- add r0, sp, #0
- bl RTC_ReadStatus1
- ldrh r0, [sp]
- mov r1, r0, lsl #27
- movs r1, r1, lsr #31
- bne _038052B8
- mov r0, r0, lsl #26
- movs r0, r0, lsr #31
- beq _03805310
-_038052B8:
- add r0, sp, #2
- bl RTC_ReadStatus2
- mov r4, #0
- ldrh r0, [sp]
- mov r0, r0, lsl #27
- movs r0, r0, lsr #31
- orrne r4, r4, #1
- ldrneh r0, [sp, #2]
- bicne r0, r0, #15
- strneh r0, [sp, #2]
- ldrh r0, [sp]
- mov r0, r0, lsl #26
- movs r0, r0, lsr #31
- orrne r4, r4, #2
- ldrneh r0, [sp, #2]
- bicne r0, r0, #64 ;@ 0x40
- strneh r0, [sp, #2]
- add r0, sp, #2
- bl RTC_WriteStatus2
- mov r0, #48 ;@ 0x30
- mov r1, r4
- bl FUN_038057D8
-_03805310:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start FUN_0380531C
-FUN_0380531C: ;@ 0x0380531C
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #76 ;@ 0x4c
- ldr r6, _038057CC ;@ =0x027FFDE8
- add r5, r6, #4
- mov r7, #0
- ldr r9, _038057D0 ;@ =_0380A03C
- mov r8, #1
- mov r0, #16
- str r0, [sp]
- mov r0, #17
- str r0, [sp, #4]
- mov r0, #18
- str r0, [sp, #8]
- mov sl, #19
- mov r4, #2
- mov fp, #20
- mov r0, #21
- str r0, [sp, #12]
- mov r0, #22
- str r0, [sp, #16]
- mov r0, #23
- str r0, [sp, #20]
- mov r0, #24
- str r0, [sp, #24]
- mov r0, #25
- str r0, [sp, #28]
- mov r0, #32
- str r0, [sp, #32]
- mov r0, #33 ;@ 0x21
- str r0, [sp, #36] ;@ 0x24
- mov r0, #34 ;@ 0x22
- str r0, [sp, #40] ;@ 0x28
- mov r0, #35 ;@ 0x23
- str r0, [sp, #44] ;@ 0x2c
- mov r0, #36 ;@ 0x24
- str r0, [sp, #48] ;@ 0x30
- mov r0, #37 ;@ 0x25
- str r0, [sp, #52] ;@ 0x34
- mov r0, #38 ;@ 0x26
- str r0, [sp, #56] ;@ 0x38
- mov r0, #39 ;@ 0x27
- str r0, [sp, #60] ;@ 0x3c
- mov r0, #40 ;@ 0x28
- str r0, [sp, #64] ;@ 0x40
- mov r0, #41 ;@ 0x29
- str r0, [sp, #68] ;@ 0x44
-_038053D4:
- mov r0, r9
- add r1, sp, #72 ;@ 0x48
- mov r2, r8
- bl OS_ReceiveMessage
- ldr r0, _038057D4 ;@ =_0380A13C
- ldrh r0, [r0, #216] ;@ 0xd8
- cmp r0, #41 ;@ 0x29
- addls pc, pc, r0, lsl #2
- b _038057BC
- b _038054A0
- b _038054B8
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038054DC
- b _038054F8
- b _03805514
- b _03805530
- b _03805568
- b _038055A0
- b _038055D8
- b _038055F4
- b _03805610
- b _0380562C
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _038057BC
- b _03805648
- b _03805664
- b _03805688
- b _038056A4
- b _038056DC
- b _03805714
- b _0380574C
- b _03805768
- b _03805784
- b _038057A0
-_038054A0:
- bl RTC_Reset
- str r7, [r9, #468] ;@ 0x1d4
- mov r0, r7
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038054B8:
- ldrh r0, [r6]
- mov r0, r0, lsl #30
- mov r0, r0, lsr #31
- bl RTC_SetHourFormat
- str r7, [r9, #468] ;@ 0x1d4
- mov r0, r8
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038054DC:
- mov r0, r6
- bl RTC_ReadDateTime
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038054F8:
- mov r0, r6
- bl RTC_ReadDate
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #4]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805514:
- add r0, r6, #4
- bl RTC_ReadTime
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #8]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805530:
- mov r0, r5
- bl RTC_ReadPulse
- cmp r0, #0
- bne _03805554
- str r7, [r9, #468] ;@ 0x1d4
- mov r0, sl
- mov r1, r4
- bl FUN_038057D8
- b _038053D4
-_03805554:
- str r7, [r9, #468] ;@ 0x1d4
- mov r0, sl
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805568:
- mov r0, r5
- bl RTC_ReadAlarm1
- cmp r0, #0
- bne _0380558C
- str r7, [r9, #468] ;@ 0x1d4
- mov r0, fp
- mov r1, r4
- bl FUN_038057D8
- b _038053D4
-_0380558C:
- str r7, [r9, #468] ;@ 0x1d4
- mov r0, fp
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038055A0:
- mov r0, r5
- bl RTC_ReadAlarm2
- cmp r0, #0
- bne _038055C4
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #12]
- mov r1, r4
- bl FUN_038057D8
- b _038053D4
-_038055C4:
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #12]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038055D8:
- mov r0, r6
- bl RTC_ReadStatus1
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #16]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038055F4:
- add r0, r6, #2
- bl RTC_ReadStatus2
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #20]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805610:
- add r0, r6, #4
- bl RTC_ReadAdjust
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #24]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_0380562C:
- add r0, r6, #4
- bl RTC_ReadFree
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #28]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805648:
- mov r0, r6
- bl RTC_WriteDateTime
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #32]
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805664:
- add r0, r6, #4
- bl RTC_ReadTime
- mov r0, r6
- bl RTC_WriteDateTime
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #36] ;@ 0x24
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805688:
- add r0, r6, #4
- bl RTC_WriteTime
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #40] ;@ 0x28
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038056A4:
- mov r0, r5
- bl RTC_WritePulse
- cmp r0, #0
- bne _038056C8
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #44] ;@ 0x2c
- mov r1, r4
- bl FUN_038057D8
- b _038053D4
-_038056C8:
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #44] ;@ 0x2c
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038056DC:
- mov r0, r5
- bl RTC_WriteAlarm1
- cmp r0, #0
- bne _03805700
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #48] ;@ 0x30
- mov r1, r4
- bl FUN_038057D8
- b _038053D4
-_03805700:
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #48] ;@ 0x30
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805714:
- mov r0, r5
- bl RTC_WriteAlarm2
- cmp r0, #0
- bne _03805738
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #52] ;@ 0x34
- mov r1, r4
- bl FUN_038057D8
- b _038053D4
-_03805738:
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #52] ;@ 0x34
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_0380574C:
- mov r0, r6
- bl RTC_WriteStatus1
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #56] ;@ 0x38
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805768:
- add r0, r6, #2
- bl RTC_WriteStatus2
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #60] ;@ 0x3c
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_03805784:
- add r0, r6, #4
- bl RTC_WriteAdjust
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #64] ;@ 0x40
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038057A0:
- add r0, r6, #4
- bl RTC_WriteFree
- str r7, [r9, #468] ;@ 0x1d4
- ldr r0, [sp, #68] ;@ 0x44
- mov r1, r7
- bl FUN_038057D8
- b _038053D4
-_038057BC:
- str r7, [r9, #468] ;@ 0x1d4
- mov r1, r8
- bl FUN_038057D8
- b _038053D4
-_038057CC: .word 0x027FFDE8
-_038057D0: .word _0380A03C
-_038057D4: .word _0380A13C
-
- arm_func_start FUN_038057D8
-FUN_038057D8: ;@ 0x038057D8
- stmdb sp!, {r4, r5, r6, lr}
- mov r0, r0, lsl #8
- and r0, r0, #32512 ;@ 0x7f00
- orr r2, r0, #32768 ;@ 0x8000
- and r0, r1, #255 ;@ 0xff
- orr r6, r2, r0
- mov r5, #5
- mov r4, #0
-_038057F8:
- mov r0, r5
- mov r1, r6
- mov r2, r4
- bl PXI_SendWordByFifo
- cmp r0, #0
- blt _038057F8
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start FUN_03805818
-FUN_03805818: ;@ 0x03805818
- stmdb sp!, {r4, lr}
- cmp r2, #0
- bne _03805944
- and r0, r1, #32512 ;@ 0x7f00
- mov r0, r0, lsl #8
- mov r4, r0, lsr #16
- cmp r4, #41 ;@ 0x29
- addls pc, pc, r4, lsl #2
- b _03805938
- b _038058E4
- b _038058E4
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _03805938
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
- b _038058E4
-_038058E4:
- ldr r0, _0380594C ;@ =_0380A03C
- ldr r1, [r0, #468] ;@ 0x1d4
- cmp r1, #0
- beq _03805904
- mov r0, r4
- mov r1, #3
- bl FUN_038057D8
- b _03805944
-_03805904:
- mov r1, #1
- str r1, [r0, #468] ;@ 0x1d4
- ldr r1, _03805950 ;@ =_0380A13C
- strh r4, [r1, #216] ;@ 0xd8
- mov r1, #0
- mov r2, r1
- bl OS_SendMessage
- cmp r0, #0
- bne _03805944
- mov r0, r4
- mov r1, #4
- bl FUN_038057D8
- b _03805944
-_03805938:
- mov r0, r4
- mov r1, #1
- bl FUN_038057D8
-_03805944:
- ldmia sp!, {r4, lr}
- bx lr
-_0380594C: .word _0380A03C
-_03805950: .word _0380A13C
-
- arm_func_start RTC_Init
-RTC_Init: ;@ 0x03805954
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- ldr r0, _03805A28 ;@ =_0380A038
- ldrh r1, [r0]
- cmp r1, #0
- bne _03805A1C
- mov r1, #1
- strh r1, [r0]
- ldr r0, _03805A2C ;@ =_0380A03C
- str r1, [r0, #468] ;@ 0x1d4
- bl FUN_03805158
- mov r1, #0
- ldr r0, _03805A2C ;@ =_0380A03C
- str r1, [r0, #468] ;@ 0x1d4
- bl PXI_Init
- mov r0, #5
- ldr r1, _03805A30 ;@ =FUN_03805818
- bl PXI_SetFifoRecvCallback
- ldr r0, _03805A2C ;@ =_0380A03C
- ldr r1, _03805A34 ;@ =_0380A05C
- mov r2, #4
- bl OS_InitMessageQueue
- mov r0, #256 ;@ 0x100
- str r0, [sp]
- str r4, [sp, #4]
- ldr r0, _03805A38 ;@ =_0380A06C
- ldr r1, _03805A3C ;@ =FUN_0380531C
- mov r2, #0
- ldr r3, _03805A40 ;@ =_0380A210
- bl OS_CreateThread
- ldr r0, _03805A38 ;@ =_0380A06C
- bl OS_WakeupThreadDirect
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #64 ;@ 0x40
- mov r1, #0
- bl EXIi_SetBitRcnt0L
- mov r0, #256 ;@ 0x100
- mov r1, r0
- bl EXIi_SetBitRcnt0L
- bl OS_DisableInterrupts
- mov r4, r0
- mov r0, #128 ;@ 0x80
- ldr r1, _03805A44 ;@ =FUN_0380528C
- bl OS_SetIrqFunction
- mov r0, #128 ;@ 0x80
- bl OS_EnableIrqMask
- mov r0, r4
- bl OS_RestoreInterrupts
-_03805A1C:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-_03805A28: .word _0380A038
-_03805A2C: .word _0380A03C
-_03805A30: .word FUN_03805818
-_03805A34: .word _0380A05C
-_03805A38: .word _0380A06C
-_03805A3C: .word FUN_0380531C
-_03805A40: .word _0380A210
-_03805A44: .word FUN_0380528C
-
arm_func_start FUN_03805A48
FUN_03805A48: ;@ 0x03805A48
stmdb sp!, {r4, r5, r6, r7, lr}
diff --git a/arm7/asm/wram_bss.s b/arm7/asm/wram_bss.s
index b8123702..af742ee8 100644
--- a/arm7/asm/wram_bss.s
+++ b/arm7/asm/wram_bss.s
@@ -2,34 +2,6 @@
.include "global.inc"
.section .bss
- .global _0380A018
-_0380A018: ;0x0380A018
- .space 0x0380A038 - 0x0380A018
-
- .global _0380A038
-_0380A038: ;0x0380A038
- .space 0x0380A03C - 0x0380A038
-
- .global _0380A03C
-_0380A03C: ;0x0380A03C
- .space 0x0380A05C - 0x0380A03C
-
- .global _0380A05C
-_0380A05C: ;0x0380A05C
- .space 0x0380A06C - 0x0380A05C
-
- .global _0380A06C
-_0380A06C: ;0x0380A06C
- .space 0x0380A13C - 0x0380A06C
-
- .global _0380A13C
-_0380A13C: ;0x0380A13C
- .space 0x0380A210 - 0x0380A13C
-
- .global _0380A210
-_0380A210: ;0x0380A210
- .space 0x0380A3F0 - 0x0380A210
-
.global _0380A3F0
_0380A3F0: ;0x0380A3F0
.space 0x0380A3F4 - 0x0380A3F0
diff --git a/arm7/global.inc b/arm7/global.inc
index 11f0b8e2..d0593646 100644
--- a/arm7/global.inc
+++ b/arm7/global.inc
@@ -256,6 +256,31 @@
.extern NVRAM_Init
.extern NVRAM_ReadDataBytes
.extern RTC_Init
+.extern RTC_ReadAdjust
+.extern RTC_ReadAlarm1
+.extern RTC_ReadAlarm2
+.extern RTC_ReadDate
+.extern RTC_ReadDateTime
+.extern RTC_ReadFree
+.extern RTC_ReadPulse
+.extern RTC_ReadStatus1
+.extern RTC_ReadStatus2
+.extern RTC_ReadTime
+.extern RTC_Reset
+.extern RTC_SetHourFormat
+.extern RTC_WriteAdjust
+.extern RTC_WriteAlarm1
+.extern RTC_WriteAlarm2
+.extern RTC_WriteDateTime
+.extern RTC_WriteFree
+.extern RTC_WritePulse
+.extern RTC_WriteStatus1
+.extern RTC_WriteStatus2
+.extern RTC_WriteTime
+.extern FUN_03805158
+.extern FUN_0380528C
+.extern FUN_0380531C
+.extern FUN_03805818
.extern WVR_Shutdown
.extern WVR_Init
.extern FUN_038073EC