diff options
-rw-r--r-- | arm7/arm7.lsf | 1 | ||||
-rw-r--r-- | arm7/asm/RTC_external.s | 673 | ||||
-rw-r--r-- | arm7/asm/RTC_unk_03805064.s | 665 | ||||
-rw-r--r-- | arm7/global.inc | 5 | ||||
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/modules/62/asm/module_62.s | 14 | ||||
-rw-r--r-- | arm9/modules/62/src/module_62_sinit.c | 13 |
7 files changed, 680 insertions, 692 deletions
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf index 7be05a3a..a1911846 100644 --- a/arm7/arm7.lsf +++ b/arm7/arm7.lsf @@ -70,7 +70,6 @@ Autoload WRAM 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/RTC_external.s b/arm7/asm/RTC_external.s index 2b45b9e3..6dc893cb 100644 --- a/arm7/asm/RTC_external.s +++ b/arm7/asm/RTC_external.s @@ -3,12 +3,671 @@ .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 + .global _0380A210 _0380A210: ;0x0380A210 .space 0x0380A3F0 - 0x0380A210 .section .text + arm_func_start RtcBCD2HEX +RtcBCD2HEX: ;@ 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 RtcGetDayOfWeek +RtcGetDayOfWeek: ;@ 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 RtcInitialize +RtcInitialize: ;@ 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 RtcBCD2HEX + mov r4, r0 + ldr r0, _03805288 ;@ =0x027FFDE8 + ldr r0, [r0] + mov r0, r0, lsl #19 + mov r0, r0, lsr #27 + bl RtcBCD2HEX + mov r5, r0 + ldr r0, _03805288 ;@ =0x027FFDE8 + ldr r0, [r0] + mov r0, r0, lsl #10 + mov r0, r0, lsr #26 + bl RtcBCD2HEX + mov r2, r0 + add r0, r4, #2000 ;@ 0x7d0 + mov r1, r5 + bl RtcGetDayOfWeek + 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 RtcAlarmIntr +RtcAlarmIntr: ;@ 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 RtcReturnResult +_03805310: + add sp, sp, #8 + ldmia sp!, {r4, lr} + bx lr + + arm_func_start RtcThread +RtcThread: ;@ 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 RtcReturnResult + 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 RtcReturnResult + b _038053D4 +_038054DC: + mov r0, r6 + bl RTC_ReadDateTime + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp] + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_038054F8: + mov r0, r6 + bl RTC_ReadDate + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #4] + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_03805514: + add r0, r6, #4 + bl RTC_ReadTime + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #8] + mov r1, r7 + bl RtcReturnResult + 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 RtcReturnResult + b _038053D4 +_03805554: + str r7, [r9, #468] ;@ 0x1d4 + mov r0, sl + mov r1, r7 + bl RtcReturnResult + 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 RtcReturnResult + b _038053D4 +_0380558C: + str r7, [r9, #468] ;@ 0x1d4 + mov r0, fp + mov r1, r7 + bl RtcReturnResult + 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 RtcReturnResult + b _038053D4 +_038055C4: + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #12] + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_038055D8: + mov r0, r6 + bl RTC_ReadStatus1 + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #16] + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_038055F4: + add r0, r6, #2 + bl RTC_ReadStatus2 + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #20] + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_03805610: + add r0, r6, #4 + bl RTC_ReadAdjust + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #24] + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_0380562C: + add r0, r6, #4 + bl RTC_ReadFree + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #28] + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_03805648: + mov r0, r6 + bl RTC_WriteDateTime + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #32] + mov r1, r7 + bl RtcReturnResult + 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 RtcReturnResult + b _038053D4 +_03805688: + add r0, r6, #4 + bl RTC_WriteTime + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #40] ;@ 0x28 + mov r1, r7 + bl RtcReturnResult + 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 RtcReturnResult + b _038053D4 +_038056C8: + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #44] ;@ 0x2c + mov r1, r7 + bl RtcReturnResult + 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 RtcReturnResult + b _038053D4 +_03805700: + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #48] ;@ 0x30 + mov r1, r7 + bl RtcReturnResult + 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 RtcReturnResult + b _038053D4 +_03805738: + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #52] ;@ 0x34 + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_0380574C: + mov r0, r6 + bl RTC_WriteStatus1 + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #56] ;@ 0x38 + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_03805768: + add r0, r6, #2 + bl RTC_WriteStatus2 + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #60] ;@ 0x3c + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_03805784: + add r0, r6, #4 + bl RTC_WriteAdjust + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #64] ;@ 0x40 + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_038057A0: + add r0, r6, #4 + bl RTC_WriteFree + str r7, [r9, #468] ;@ 0x1d4 + ldr r0, [sp, #68] ;@ 0x44 + mov r1, r7 + bl RtcReturnResult + b _038053D4 +_038057BC: + str r7, [r9, #468] ;@ 0x1d4 + mov r1, r8 + bl RtcReturnResult + b _038053D4 +_038057CC: .word 0x027FFDE8 +_038057D0: .word _0380A03C +_038057D4: .word _0380A13C + + arm_func_start RtcReturnResult +RtcReturnResult: ;@ 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 RtcPxiCallback +RtcPxiCallback: ;@ 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 RtcReturnResult + 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 RtcReturnResult + b _03805944 +_03805938: + mov r0, r4 + mov r1, #1 + bl RtcReturnResult +_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} @@ -22,13 +681,13 @@ RTC_Init: ;@ 0x03805954 strh r1, [r0] ldr r0, _03805A2C ;@ =_0380A03C str r1, [r0, #468] ;@ 0x1d4 - bl FUN_03805158 + bl RtcInitialize mov r1, #0 ldr r0, _03805A2C ;@ =_0380A03C str r1, [r0, #468] ;@ 0x1d4 bl PXI_Init mov r0, #5 - ldr r1, _03805A30 ;@ =FUN_03805818 + ldr r1, _03805A30 ;@ =RtcPxiCallback bl PXI_SetFifoRecvCallback ldr r0, _03805A2C ;@ =_0380A03C ldr r1, _03805A34 ;@ =_0380A05C @@ -38,7 +697,7 @@ RTC_Init: ;@ 0x03805954 str r0, [sp] str r4, [sp, #4] ldr r0, _03805A38 ;@ =_0380A06C - ldr r1, _03805A3C ;@ =FUN_0380531C + ldr r1, _03805A3C ;@ =RtcThread mov r2, #0 ldr r3, _03805A40 ;@ =_0380A210 bl OS_CreateThread @@ -55,7 +714,7 @@ RTC_Init: ;@ 0x03805954 bl OS_DisableInterrupts mov r4, r0 mov r0, #128 ;@ 0x80 - ldr r1, _03805A44 ;@ =FUN_0380528C + ldr r1, _03805A44 ;@ =RtcAlarmIntr bl OS_SetIrqFunction mov r0, #128 ;@ 0x80 bl OS_EnableIrqMask @@ -67,9 +726,9 @@ _03805A1C: bx lr _03805A28: .word _0380A038 _03805A2C: .word _0380A03C -_03805A30: .word FUN_03805818 +_03805A30: .word RtcPxiCallback _03805A34: .word _0380A05C _03805A38: .word _0380A06C -_03805A3C: .word FUN_0380531C +_03805A3C: .word RtcThread _03805A40: .word _0380A210 -_03805A44: .word FUN_0380528C +_03805A44: .word RtcAlarmIntr diff --git a/arm7/asm/RTC_unk_03805064.s b/arm7/asm/RTC_unk_03805064.s deleted file mode 100644 index 095d0149..00000000 --- a/arm7/asm/RTC_unk_03805064.s +++ /dev/null @@ -1,665 +0,0 @@ - .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/global.inc b/arm7/global.inc index d0593646..ada127d5 100644 --- a/arm7/global.inc +++ b/arm7/global.inc @@ -255,7 +255,6 @@ .extern NVRAM_ExecuteProcess
.extern NVRAM_Init
.extern NVRAM_ReadDataBytes
-.extern RTC_Init
.extern RTC_ReadAdjust
.extern RTC_ReadAlarm1
.extern RTC_ReadAlarm2
@@ -277,10 +276,6 @@ .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
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index e977dbf4..008ca0ad 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -933,6 +933,7 @@ Overlay MODULE_61 Overlay MODULE_62 { After MODULE_08 + Object module_62_sinit.o Object module_62.o } diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index 33e331d3..ff70fe6d 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -3,17 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD62_0222D5C0 -MOD62_0222D5C0: ; 0x0222D5C0 - ldr r3, _0222D5C8 ; =HandleLoadOverlay - ldr r0, _0222D5CC ; =SDK_OVERLAY_MODULE_08_ID - mov r1, #2 - bx r3 - .align 2, 0 -_0222D5C8: .word HandleLoadOverlay -_0222D5CC: .word SDK_OVERLAY_MODULE_08_ID - thumb_func_end MOD62_0222D5C0 - thumb_func_start MOD62_0222D5D0 MOD62_0222D5D0: ; 0x0222D5D0 add r3, r2, #0 @@ -7631,6 +7620,3 @@ MOD62_02231358: ; 0x02231358 .word 0x02, MOD62_0222F94C .word 0x03, MOD62_0222F970 .word 0x04, MOD62_0222F980 - - .section .sinit - .word MOD62_0222D5C0 diff --git a/arm9/modules/62/src/module_62_sinit.c b/arm9/modules/62/src/module_62_sinit.c new file mode 100644 index 00000000..db679e41 --- /dev/null +++ b/arm9/modules/62/src/module_62_sinit.c @@ -0,0 +1,13 @@ +#include "global.h" +#include "poke_overlay.h" +#include "FS_overlay.h" + +FS_EXTERN_OVERLAY(MODULE_08); + +THUMB_FUNC static void MOD62_0222D5C0(void) +{ + HandleLoadOverlay(FS_OVERLAY_ID(MODULE_08), 2); +} + +#define NitroStaticInit MOD62_0222D5C0 +#include "sinit.h" |