diff options
-rw-r--r-- | arm7/arm7.lsf | 3 | ||||
-rw-r--r-- | arm7/asm/NVRAM.s | 1053 | ||||
-rw-r--r-- | arm7/asm/RTC_external.s | 75 | ||||
-rw-r--r-- | arm7/asm/RTC_unk_03805064.s | 665 | ||||
-rw-r--r-- | arm7/asm/wram2.s | 1747 | ||||
-rw-r--r-- | arm7/asm/wram_bss.s | 28 | ||||
-rw-r--r-- | arm7/global.inc | 25 |
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
|