summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm7/arm7.lsf1
-rw-r--r--arm7/asm/RTC_internal.s780
-rw-r--r--arm7/asm/wram2.s776
3 files changed, 781 insertions, 776 deletions
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf
index a1911846..4c14fd1e 100644
--- a/arm7/arm7.lsf
+++ b/arm7/arm7.lsf
@@ -71,6 +71,7 @@ Autoload WRAM
Object CTRDG_sp.o
Object NVRAM.o
Object RTC_external.o
+ Object RTC_internal.o
Object wram2.o
Object wram_bss.o
}
diff --git a/arm7/asm/RTC_internal.s b/arm7/asm/RTC_internal.s
new file mode 100644
index 00000000..b310c9aa
--- /dev/null
+++ b/arm7/asm/RTC_internal.s
@@ -0,0 +1,780 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start FUN_03805A48
+FUN_03805A48: ;@ 0x03805A48
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl RTCi_GpioStart
+ mov r0, r7
+ mov r1, r6
+ bl RTCi_GpioSendCommand
+ cmp r7, #6
+ beq _03805A90
+ cmp r7, #134 ;@ 0x86
+ bne _03805A9C
+ mov r0, r5
+ mov r1, r4
+ bl RTCi_GpioReceiveData
+ b _03805A9C
+_03805A90:
+ mov r0, r5
+ mov r1, r4
+ bl RTCi_GpioSendData
+_03805A9C:
+ bl RTCi_GpioEnd
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+
+ arm_func_start FUN_03805AAC
+FUN_03805AAC: ;@ 0x03805AAC
+ ldr r2, [r0]
+ mov r1, r2, lsl #18
+ mov r3, r1, lsr #26
+ cmp r3, #35 ;@ 0x23
+ addls pc, pc, r3, lsl #2
+ b _03805BA8
+ b _03805B54
+ b _03805B54
+ b _03805B54
+ b _03805B54
+ b _03805B54
+ b _03805B54
+ b _03805B54
+ b _03805B54
+ b _03805B78
+ b _03805B78
+ b _03805BA8
+ b _03805BA8
+ b _03805BA8
+ b _03805BA8
+ b _03805BA8
+ b _03805BA8
+ b _03805B54
+ b _03805B54
+ b _03805B9C
+ b _03805B9C
+ b _03805B9C
+ b _03805B9C
+ b _03805B9C
+ b _03805B9C
+ b _03805B9C
+ b _03805B9C
+ b _03805BA8
+ b _03805BA8
+ b _03805BA8
+ b _03805BA8
+ b _03805BA8
+ b _03805BA8
+ b _03805B9C
+ b _03805B9C
+ b _03805B9C
+ b _03805B9C
+_03805B54:
+ mov r1, r2, lsl #17
+ movs r1, r1, lsr #31
+ bxeq lr
+ bic r2, r2, #16128 ;@ 0x3f00
+ add r1, r3, #18
+ and r1, r1, #63 ;@ 0x3f
+ orr r1, r2, r1, lsl #8
+ str r1, [r0]
+ bx lr
+_03805B78:
+ mov r1, r2, lsl #17
+ movs r1, r1, lsr #31
+ bxeq lr
+ bic r2, r2, #16128 ;@ 0x3f00
+ add r1, r3, #24
+ and r1, r1, #63 ;@ 0x3f
+ orr r1, r2, r1, lsl #8
+ str r1, [r0]
+ bx lr
+_03805B9C:
+ orr r1, r2, #16384 ;@ 0x4000
+ str r1, [r0]
+ bx lr
+_03805BA8:
+ ldr r1, [r0]
+ bic r1, r1, #16384 ;@ 0x4000
+ str r1, [r0]
+ ldr r1, [r0]
+ bic r1, r1, #16128 ;@ 0x3f00
+ str r1, [r0]
+ bx lr
+
+ arm_func_start FUN_03805BC4
+FUN_03805BC4: ;@ 0x03805BC4
+ ldr r1, [r0]
+ mov r2, r1, lsl #18
+ mov r2, r2, lsr #26
+ cmp r2, #35 ;@ 0x23
+ addls pc, pc, r2, lsl #2
+ b _03805CD0
+ b _03805C6C
+ b _03805C6C
+ b _03805C6C
+ b _03805C6C
+ b _03805C6C
+ b _03805C6C
+ b _03805C6C
+ b _03805C6C
+ b _03805C6C
+ b _03805C6C
+ b _03805CD0
+ b _03805CD0
+ b _03805CD0
+ b _03805CD0
+ b _03805CD0
+ b _03805CD0
+ b _03805C6C
+ b _03805C6C
+ b _03805C78
+ b _03805C78
+ b _03805C78
+ b _03805C78
+ b _03805C78
+ b _03805C78
+ b _03805C78
+ b _03805C78
+ b _03805CD0
+ b _03805CD0
+ b _03805CD0
+ b _03805CD0
+ b _03805CD0
+ b _03805CD0
+ b _03805CA4
+ b _03805CA4
+ b _03805C78
+ b _03805C78
+_03805C6C:
+ bic r1, r1, #16384 ;@ 0x4000
+ str r1, [r0]
+ bx lr
+_03805C78:
+ orr r1, r1, #16384 ;@ 0x4000
+ str r1, [r0]
+ ldr r1, [r0]
+ bic r2, r1, #16128 ;@ 0x3f00
+ mov r1, r1, lsl #18
+ mov r1, r1, lsr #26
+ sub r1, r1, #18
+ and r1, r1, #63 ;@ 0x3f
+ orr r1, r2, r1, lsl #8
+ str r1, [r0]
+ bx lr
+_03805CA4:
+ orr r1, r1, #16384 ;@ 0x4000
+ str r1, [r0]
+ ldr r1, [r0]
+ bic r2, r1, #16128 ;@ 0x3f00
+ mov r1, r1, lsl #18
+ mov r1, r1, lsr #26
+ sub r1, r1, #24
+ and r1, r1, #63 ;@ 0x3f
+ orr r1, r2, r1, lsl #8
+ str r1, [r0]
+ bx lr
+_03805CD0:
+ ldr r1, [r0]
+ bic r1, r1, #16384 ;@ 0x4000
+ str r1, [r0]
+ ldr r1, [r0]
+ bic r1, r1, #16128 ;@ 0x3f00
+ str r1, [r0]
+ bx lr
+
+ arm_func_start RTC_WriteFree
+RTC_WriteFree: ;@ 0x03805CEC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #6
+ mov r1, #112 ;@ 0x70
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadFree
+RTC_ReadFree: ;@ 0x03805D18
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #134 ;@ 0x86
+ mov r1, #112 ;@ 0x70
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_WriteAdjust
+RTC_WriteAdjust: ;@ 0x03805D44
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #6
+ mov r1, #48 ;@ 0x30
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadAdjust
+RTC_ReadAdjust: ;@ 0x03805D70
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #134 ;@ 0x86
+ mov r1, #48 ;@ 0x30
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_WriteStatus2
+RTC_WriteStatus2: ;@ 0x03805D9C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #6
+ mov r1, #64 ;@ 0x40
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadStatus2
+RTC_ReadStatus2: ;@ 0x03805DC8
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #134 ;@ 0x86
+ mov r1, #64 ;@ 0x40
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_WriteStatus1
+RTC_WriteStatus1: ;@ 0x03805DF4
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #6
+ mov r1, #0
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadStatus1
+RTC_ReadStatus1: ;@ 0x03805E20
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #134 ;@ 0x86
+ mov r1, #0
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_WriteAlarm2
+RTC_WriteAlarm2: ;@ 0x03805E4C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl RTC_ReadStatus2
+ ldrh r0, [sp]
+ mov r0, r0, lsl #25
+ movs r0, r0, lsr #31
+ moveq r0, #0
+ beq _03805E8C
+ mov r0, #6
+ mov r1, #80 ;@ 0x50
+ mov r2, r4
+ mov r3, #3
+ bl FUN_03805A48
+ mov r0, #1
+_03805E8C:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadAlarm2
+RTC_ReadAlarm2: ;@ 0x03805E98
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl RTC_ReadStatus2
+ ldrh r0, [sp]
+ mov r0, r0, lsl #25
+ movs r0, r0, lsr #31
+ moveq r0, #0
+ beq _03805ED8
+ mov r0, #134 ;@ 0x86
+ mov r1, #80 ;@ 0x50
+ mov r2, r4
+ mov r3, #3
+ bl FUN_03805A48
+ mov r0, #1
+_03805ED8:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_WriteAlarm1
+RTC_WriteAlarm1: ;@ 0x03805EE4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl RTC_ReadStatus2
+ ldrh r0, [sp]
+ mov r0, r0, lsl #28
+ mov r0, r0, lsr #28
+ cmp r0, #4
+ movne r0, #0
+ bne _03805F28
+ mov r0, #6
+ mov r1, #16
+ mov r2, r4
+ mov r3, #3
+ bl FUN_03805A48
+ mov r0, #1
+_03805F28:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadAlarm1
+RTC_ReadAlarm1: ;@ 0x03805F34
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl RTC_ReadStatus2
+ ldrh r0, [sp]
+ mov r0, r0, lsl #28
+ mov r0, r0, lsr #28
+ cmp r0, #4
+ movne r0, #0
+ bne _03805F78
+ mov r0, #134 ;@ 0x86
+ mov r1, #16
+ mov r2, r4
+ mov r3, #3
+ bl FUN_03805A48
+ mov r0, #1
+_03805F78:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_WritePulse
+RTC_WritePulse: ;@ 0x03805F84
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl RTC_ReadStatus2
+ ldrh r0, [sp]
+ mov r0, r0, lsl #28
+ mov r0, r0, lsr #28
+ and r0, r0, #11
+ cmp r0, #1
+ movne r0, #0
+ bne _03805FCC
+ mov r0, #6
+ mov r1, #16
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ mov r0, #1
+_03805FCC:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadPulse
+RTC_ReadPulse: ;@ 0x03805FD8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl RTC_ReadStatus2
+ ldrh r0, [sp]
+ mov r0, r0, lsl #28
+ mov r0, r0, lsr #28
+ and r0, r0, #11
+ cmp r0, #1
+ movne r0, #0
+ bne _03806020
+ mov r0, #134 ;@ 0x86
+ mov r1, #16
+ mov r2, r4
+ mov r3, #1
+ bl FUN_03805A48
+ mov r0, #1
+_03806020:
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_WriteTime
+RTC_WriteTime: ;@ 0x0380602C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #6
+ mov r1, #96 ;@ 0x60
+ mov r2, r4
+ mov r3, #3
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadTime
+RTC_ReadTime: ;@ 0x03806058
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #134 ;@ 0x86
+ mov r1, #96 ;@ 0x60
+ mov r2, r4
+ mov r3, #3
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadDate
+RTC_ReadDate: ;@ 0x03806084
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #134 ;@ 0x86
+ mov r1, #32
+ mov r2, r4
+ mov r3, #4
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_WriteDateTime
+RTC_WriteDateTime: ;@ 0x038060B0
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #6
+ mov r1, #32
+ mov r2, r4
+ mov r3, #7
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_ReadDateTime
+RTC_ReadDateTime: ;@ 0x038060DC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ mov r0, #134 ;@ 0x86
+ mov r1, #32
+ mov r2, r4
+ mov r3, #7
+ bl FUN_03805A48
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start RTC_SetHourFormat
+RTC_SetHourFormat: ;@ 0x03806108
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #12
+ mov r4, r0
+ and r5, r4, #1
+ mov r0, r5, lsl #16
+ mov r0, r0, lsr #16
+ cmp r0, #1
+ bne _038061FC
+ add r0, sp, #0
+ bl RTC_ReadStatus1
+ ldrh r1, [sp]
+ mov r0, r1, lsl #30
+ mov r2, r0, lsr #31
+ mov r0, r5, lsl #16
+ cmp r2, r0, lsr #16
+ beq _038061FC
+ and r4, r4, #1
+ bic r1, r1, #2
+ mov r0, r4, lsl #16
+ mov r0, r0, lsr #16
+ and r0, r0, #1
+ orr r0, r1, r0, lsl #1
+ strh r0, [sp]
+ add r0, sp, #0
+ bl RTC_WriteStatus1
+ mov r0, #134 ;@ 0x86
+ mov r1, #16
+ add r2, sp, #4
+ mov r3, #3
+ bl FUN_03805A48
+ mov r0, r4, lsl #16
+ movs r0, r0, lsr #16
+ bne _03806198
+ add r0, sp, #4
+ bl FUN_03805BC4
+ b _038061A0
+_03806198:
+ add r0, sp, #4
+ bl FUN_03805AAC
+_038061A0:
+ mov r0, #6
+ mov r1, #16
+ add r2, sp, #4
+ mov r3, #3
+ bl FUN_03805A48
+ mov r0, #134 ;@ 0x86
+ mov r1, #80 ;@ 0x50
+ add r2, sp, #4
+ mov r3, #3
+ bl FUN_03805A48
+ mov r0, r5, lsl #16
+ movs r0, r0, lsr #16
+ bne _038061E0
+ add r0, sp, #4
+ bl FUN_03805BC4
+ b _038061E8
+_038061E0:
+ add r0, sp, #4
+ bl FUN_03805AAC
+_038061E8:
+ mov r0, #6
+ mov r1, #80 ;@ 0x50
+ add r2, sp, #4
+ mov r3, #3
+ bl FUN_03805A48
+_038061FC:
+ add sp, sp, #12
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start RTC_Reset
+RTC_Reset: ;@ 0x03806208
+ stmfd sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #32768 ;@ 0x8000
+ bl EXIi_SelectRcnt
+ ldrh r0, [sp]
+ bic r0, r0, #1
+ orr r0, r0, #1
+ strh r0, [sp]
+ mov r0, #6
+ mov r1, #0
+ add r2, sp, #0
+ mov r3, #1
+ bl FUN_03805A48
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start RTCi_GpioStart
+RTCi_GpioStart: ;@ 0x03806248
+ mov ip, #67108864 ;@ 0x4000000
+ add ip, ip, #312 ;@ 0x138
+ ldrh r0, [ip]
+ bic r0, r0, #119 ;@ 0x77
+ orr r0, r0, #114 ;@ 0x72
+ strh r0, [ip]
+ mov r3, #2
+_03806264:
+ subs r3, r3, #1
+ bne _03806264
+ bic r0, r0, #4
+ orr r0, r0, #4
+ strh r0, [ip]
+ mov r3, #2
+_0380627C:
+ subs r3, r3, #1
+ bne _0380627C
+ bx lr
+
+ arm_func_start RTCi_GpioEnd
+RTCi_GpioEnd: ;@ 0x03806288
+ mov ip, #67108864 ;@ 0x4000000
+ add ip, ip, #312 ;@ 0x138
+ mov r3, #2
+_03806294:
+ subs r3, r3, #1
+ bne _03806294
+ ldrh r0, [ip]
+ bic r0, r0, #4
+ orr r0, r0, #0
+ strh r0, [ip]
+ mov r3, #2
+_038062B0:
+ subs r3, r3, #1
+ bne _038062B0
+ bx lr
+
+ arm_func_start RTCi_GpioSendCommand
+RTCi_GpioSendCommand: ;@ 0x038062BC
+ mov ip, #67108864 ;@ 0x4000000
+ add ip, ip, #312 ;@ 0x138
+ orr r1, r0, r1
+ ldrh r0, [ip]
+ bic r0, r0, #119 ;@ 0x77
+ orr r0, r0, #116 ;@ 0x74
+ mov r2, #0
+_038062D8:
+ bic r0, r0, #3
+ orr r0, r0, #0
+ mov r3, #1
+ tst r3, r1, lsr r2
+ movne r3, #1
+ moveq r3, #0
+ orr r0, r0, r3
+ strh r0, [ip]
+ mov r3, #9
+_038062FC:
+ subs r3, r3, #1
+ bne _038062FC
+ bic r0, r0, #2
+ orr r0, r0, #2
+ strh r0, [ip]
+ mov r3, #9
+_03806314:
+ subs r3, r3, #1
+ bne _03806314
+ add r2, r2, #1
+ cmp r2, #8
+ bne _038062D8
+ bx lr
+
+ arm_func_start RTCi_GpioSendData
+RTCi_GpioSendData: ;@ 0x0380632C
+ mov ip, #67108864 ;@ 0x4000000
+ add ip, ip, #312 ;@ 0x138
+_03806334:
+ stmdb sp!, {r0, r1}
+ tst r0, #1
+ ldreqh r1, [r0]
+ ldrneh r1, [r0, #-1]
+ movne r1, r1, lsr #8
+ ldrh r0, [ip]
+ bic r0, r0, #119 ;@ 0x77
+ orr r0, r0, #116 ;@ 0x74
+ mov r2, #0
+_03806358:
+ bic r0, r0, #3
+ orr r0, r0, #0
+ mov r3, #1
+ tst r3, r1, lsr r2
+ movne r3, #1
+ moveq r3, #0
+ orr r0, r0, r3
+ strh r0, [ip]
+ mov r3, #9
+_0380637C:
+ subs r3, r3, #1
+ bne _0380637C
+ bic r0, r0, #2
+ orr r0, r0, #2
+ strh r0, [ip]
+ mov r3, #9
+_03806394:
+ subs r3, r3, #1
+ bne _03806394
+ add r2, r2, #1
+ cmp r2, #8
+ bne _03806358
+ ldmia sp!, {r0, r1}
+ add r0, r0, #1
+ subs r1, r1, #1
+ bne _03806334
+ bx lr
+
+ arm_func_start RTCi_GpioReceiveData
+RTCi_GpioReceiveData: ;@ 0x038063BC
+ mov ip, #67108864 ;@ 0x4000000
+ add ip, ip, #312 ;@ 0x138
+_038063C4:
+ stmdb sp!, {r0, r1}
+ ldrh r0, [ip]
+ bic r0, r0, #119 ;@ 0x77
+ orr r0, r0, #100 ;@ 0x64
+ mov r2, #0
+ mov r1, #0
+_038063DC:
+ bic r0, r0, #3
+ orr r0, r0, #0
+ strh r0, [ip]
+ mov r3, #9
+_038063EC:
+ subs r3, r3, #1
+ bne _038063EC
+ ldrh r0, [ip]
+ and r3, r0, #1
+ cmp r3, #1
+ moveq r3, #128 ;@ 0x80
+ movne r3, #0
+ orr r2, r3, r2, lsr #1
+ bic r0, r0, #2
+ orr r0, r0, #2
+ strh r0, [ip]
+ mov r3, #9
+_0380641C:
+ subs r3, r3, #1
+ bne _0380641C
+ add r1, r1, #1
+ cmp r1, #8
+ bne _038063DC
+ ldmia sp!, {r0, r1}
+ tst r0, #1
+ beq _03806454
+ ldrh r3, [r0, #-1]
+ bic r3, r3, #65280 ;@ 0xff00
+ mov r2, r2, lsl #8
+ orr r3, r2, r3
+ strh r3, [r0, #-1]
+ b _03806464
+_03806454:
+ ldrh r3, [r0]
+ bic r3, r3, #255 ;@ 0xff
+ orr r3, r3, r2
+ strh r3, [r0]
+_03806464:
+ add r0, r0, #1
+ subs r1, r1, #1
+ bne _038063C4
+ bx lr
diff --git a/arm7/asm/wram2.s b/arm7/asm/wram2.s
index 1ad3f830..7191db9d 100644
--- a/arm7/asm/wram2.s
+++ b/arm7/asm/wram2.s
@@ -3,782 +3,6 @@
.section .text
- arm_func_start FUN_03805A48
-FUN_03805A48: ;@ 0x03805A48
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl RTCi_GpioStart
- mov r0, r7
- mov r1, r6
- bl RTCi_GpioSendCommand
- cmp r7, #6
- beq _03805A90
- cmp r7, #134 ;@ 0x86
- bne _03805A9C
- mov r0, r5
- mov r1, r4
- bl RTCi_GpioReceiveData
- b _03805A9C
-_03805A90:
- mov r0, r5
- mov r1, r4
- bl RTCi_GpioSendData
-_03805A9C:
- bl RTCi_GpioEnd
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start FUN_03805AAC
-FUN_03805AAC: ;@ 0x03805AAC
- ldr r2, [r0]
- mov r1, r2, lsl #18
- mov r3, r1, lsr #26
- cmp r3, #35 ;@ 0x23
- addls pc, pc, r3, lsl #2
- b _03805BA8
- b _03805B54
- b _03805B54
- b _03805B54
- b _03805B54
- b _03805B54
- b _03805B54
- b _03805B54
- b _03805B54
- b _03805B78
- b _03805B78
- b _03805BA8
- b _03805BA8
- b _03805BA8
- b _03805BA8
- b _03805BA8
- b _03805BA8
- b _03805B54
- b _03805B54
- b _03805B9C
- b _03805B9C
- b _03805B9C
- b _03805B9C
- b _03805B9C
- b _03805B9C
- b _03805B9C
- b _03805B9C
- b _03805BA8
- b _03805BA8
- b _03805BA8
- b _03805BA8
- b _03805BA8
- b _03805BA8
- b _03805B9C
- b _03805B9C
- b _03805B9C
- b _03805B9C
-_03805B54:
- mov r1, r2, lsl #17
- movs r1, r1, lsr #31
- bxeq lr
- bic r2, r2, #16128 ;@ 0x3f00
- add r1, r3, #18
- and r1, r1, #63 ;@ 0x3f
- orr r1, r2, r1, lsl #8
- str r1, [r0]
- bx lr
-_03805B78:
- mov r1, r2, lsl #17
- movs r1, r1, lsr #31
- bxeq lr
- bic r2, r2, #16128 ;@ 0x3f00
- add r1, r3, #24
- and r1, r1, #63 ;@ 0x3f
- orr r1, r2, r1, lsl #8
- str r1, [r0]
- bx lr
-_03805B9C:
- orr r1, r2, #16384 ;@ 0x4000
- str r1, [r0]
- bx lr
-_03805BA8:
- ldr r1, [r0]
- bic r1, r1, #16384 ;@ 0x4000
- str r1, [r0]
- ldr r1, [r0]
- bic r1, r1, #16128 ;@ 0x3f00
- str r1, [r0]
- bx lr
-
- arm_func_start FUN_03805BC4
-FUN_03805BC4: ;@ 0x03805BC4
- ldr r1, [r0]
- mov r2, r1, lsl #18
- mov r2, r2, lsr #26
- cmp r2, #35 ;@ 0x23
- addls pc, pc, r2, lsl #2
- b _03805CD0
- b _03805C6C
- b _03805C6C
- b _03805C6C
- b _03805C6C
- b _03805C6C
- b _03805C6C
- b _03805C6C
- b _03805C6C
- b _03805C6C
- b _03805C6C
- b _03805CD0
- b _03805CD0
- b _03805CD0
- b _03805CD0
- b _03805CD0
- b _03805CD0
- b _03805C6C
- b _03805C6C
- b _03805C78
- b _03805C78
- b _03805C78
- b _03805C78
- b _03805C78
- b _03805C78
- b _03805C78
- b _03805C78
- b _03805CD0
- b _03805CD0
- b _03805CD0
- b _03805CD0
- b _03805CD0
- b _03805CD0
- b _03805CA4
- b _03805CA4
- b _03805C78
- b _03805C78
-_03805C6C:
- bic r1, r1, #16384 ;@ 0x4000
- str r1, [r0]
- bx lr
-_03805C78:
- orr r1, r1, #16384 ;@ 0x4000
- str r1, [r0]
- ldr r1, [r0]
- bic r2, r1, #16128 ;@ 0x3f00
- mov r1, r1, lsl #18
- mov r1, r1, lsr #26
- sub r1, r1, #18
- and r1, r1, #63 ;@ 0x3f
- orr r1, r2, r1, lsl #8
- str r1, [r0]
- bx lr
-_03805CA4:
- orr r1, r1, #16384 ;@ 0x4000
- str r1, [r0]
- ldr r1, [r0]
- bic r2, r1, #16128 ;@ 0x3f00
- mov r1, r1, lsl #18
- mov r1, r1, lsr #26
- sub r1, r1, #24
- and r1, r1, #63 ;@ 0x3f
- orr r1, r2, r1, lsl #8
- str r1, [r0]
- bx lr
-_03805CD0:
- ldr r1, [r0]
- bic r1, r1, #16384 ;@ 0x4000
- str r1, [r0]
- ldr r1, [r0]
- bic r1, r1, #16128 ;@ 0x3f00
- str r1, [r0]
- bx lr
-
- arm_func_start RTC_WriteFree
-RTC_WriteFree: ;@ 0x03805CEC
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #6
- mov r1, #112 ;@ 0x70
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadFree
-RTC_ReadFree: ;@ 0x03805D18
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #134 ;@ 0x86
- mov r1, #112 ;@ 0x70
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_WriteAdjust
-RTC_WriteAdjust: ;@ 0x03805D44
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #6
- mov r1, #48 ;@ 0x30
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadAdjust
-RTC_ReadAdjust: ;@ 0x03805D70
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #134 ;@ 0x86
- mov r1, #48 ;@ 0x30
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_WriteStatus2
-RTC_WriteStatus2: ;@ 0x03805D9C
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #6
- mov r1, #64 ;@ 0x40
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadStatus2
-RTC_ReadStatus2: ;@ 0x03805DC8
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #134 ;@ 0x86
- mov r1, #64 ;@ 0x40
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_WriteStatus1
-RTC_WriteStatus1: ;@ 0x03805DF4
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #6
- mov r1, #0
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadStatus1
-RTC_ReadStatus1: ;@ 0x03805E20
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #134 ;@ 0x86
- mov r1, #0
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_WriteAlarm2
-RTC_WriteAlarm2: ;@ 0x03805E4C
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl RTC_ReadStatus2
- ldrh r0, [sp]
- mov r0, r0, lsl #25
- movs r0, r0, lsr #31
- moveq r0, #0
- beq _03805E8C
- mov r0, #6
- mov r1, #80 ;@ 0x50
- mov r2, r4
- mov r3, #3
- bl FUN_03805A48
- mov r0, #1
-_03805E8C:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadAlarm2
-RTC_ReadAlarm2: ;@ 0x03805E98
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl RTC_ReadStatus2
- ldrh r0, [sp]
- mov r0, r0, lsl #25
- movs r0, r0, lsr #31
- moveq r0, #0
- beq _03805ED8
- mov r0, #134 ;@ 0x86
- mov r1, #80 ;@ 0x50
- mov r2, r4
- mov r3, #3
- bl FUN_03805A48
- mov r0, #1
-_03805ED8:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_WriteAlarm1
-RTC_WriteAlarm1: ;@ 0x03805EE4
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl RTC_ReadStatus2
- ldrh r0, [sp]
- mov r0, r0, lsl #28
- mov r0, r0, lsr #28
- cmp r0, #4
- movne r0, #0
- bne _03805F28
- mov r0, #6
- mov r1, #16
- mov r2, r4
- mov r3, #3
- bl FUN_03805A48
- mov r0, #1
-_03805F28:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadAlarm1
-RTC_ReadAlarm1: ;@ 0x03805F34
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl RTC_ReadStatus2
- ldrh r0, [sp]
- mov r0, r0, lsl #28
- mov r0, r0, lsr #28
- cmp r0, #4
- movne r0, #0
- bne _03805F78
- mov r0, #134 ;@ 0x86
- mov r1, #16
- mov r2, r4
- mov r3, #3
- bl FUN_03805A48
- mov r0, #1
-_03805F78:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_WritePulse
-RTC_WritePulse: ;@ 0x03805F84
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl RTC_ReadStatus2
- ldrh r0, [sp]
- mov r0, r0, lsl #28
- mov r0, r0, lsr #28
- and r0, r0, #11
- cmp r0, #1
- movne r0, #0
- bne _03805FCC
- mov r0, #6
- mov r1, #16
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- mov r0, #1
-_03805FCC:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadPulse
-RTC_ReadPulse: ;@ 0x03805FD8
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl RTC_ReadStatus2
- ldrh r0, [sp]
- mov r0, r0, lsl #28
- mov r0, r0, lsr #28
- and r0, r0, #11
- cmp r0, #1
- movne r0, #0
- bne _03806020
- mov r0, #134 ;@ 0x86
- mov r1, #16
- mov r2, r4
- mov r3, #1
- bl FUN_03805A48
- mov r0, #1
-_03806020:
- add sp, sp, #8
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_WriteTime
-RTC_WriteTime: ;@ 0x0380602C
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #6
- mov r1, #96 ;@ 0x60
- mov r2, r4
- mov r3, #3
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadTime
-RTC_ReadTime: ;@ 0x03806058
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #134 ;@ 0x86
- mov r1, #96 ;@ 0x60
- mov r2, r4
- mov r3, #3
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadDate
-RTC_ReadDate: ;@ 0x03806084
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #134 ;@ 0x86
- mov r1, #32
- mov r2, r4
- mov r3, #4
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_WriteDateTime
-RTC_WriteDateTime: ;@ 0x038060B0
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #6
- mov r1, #32
- mov r2, r4
- mov r3, #7
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_ReadDateTime
-RTC_ReadDateTime: ;@ 0x038060DC
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- mov r0, #134 ;@ 0x86
- mov r1, #32
- mov r2, r4
- mov r3, #7
- bl FUN_03805A48
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start RTC_SetHourFormat
-RTC_SetHourFormat: ;@ 0x03806108
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #12
- mov r4, r0
- and r5, r4, #1
- mov r0, r5, lsl #16
- mov r0, r0, lsr #16
- cmp r0, #1
- bne _038061FC
- add r0, sp, #0
- bl RTC_ReadStatus1
- ldrh r1, [sp]
- mov r0, r1, lsl #30
- mov r2, r0, lsr #31
- mov r0, r5, lsl #16
- cmp r2, r0, lsr #16
- beq _038061FC
- and r4, r4, #1
- bic r1, r1, #2
- mov r0, r4, lsl #16
- mov r0, r0, lsr #16
- and r0, r0, #1
- orr r0, r1, r0, lsl #1
- strh r0, [sp]
- add r0, sp, #0
- bl RTC_WriteStatus1
- mov r0, #134 ;@ 0x86
- mov r1, #16
- add r2, sp, #4
- mov r3, #3
- bl FUN_03805A48
- mov r0, r4, lsl #16
- movs r0, r0, lsr #16
- bne _03806198
- add r0, sp, #4
- bl FUN_03805BC4
- b _038061A0
-_03806198:
- add r0, sp, #4
- bl FUN_03805AAC
-_038061A0:
- mov r0, #6
- mov r1, #16
- add r2, sp, #4
- mov r3, #3
- bl FUN_03805A48
- mov r0, #134 ;@ 0x86
- mov r1, #80 ;@ 0x50
- add r2, sp, #4
- mov r3, #3
- bl FUN_03805A48
- mov r0, r5, lsl #16
- movs r0, r0, lsr #16
- bne _038061E0
- add r0, sp, #4
- bl FUN_03805BC4
- b _038061E8
-_038061E0:
- add r0, sp, #4
- bl FUN_03805AAC
-_038061E8:
- mov r0, #6
- mov r1, #80 ;@ 0x50
- add r2, sp, #4
- mov r3, #3
- bl FUN_03805A48
-_038061FC:
- add sp, sp, #12
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start RTC_Reset
-RTC_Reset: ;@ 0x03806208
- stmfd sp!, {lr}
- sub sp, sp, #4
- mov r0, #32768 ;@ 0x8000
- bl EXIi_SelectRcnt
- ldrh r0, [sp]
- bic r0, r0, #1
- orr r0, r0, #1
- strh r0, [sp]
- mov r0, #6
- mov r1, #0
- add r2, sp, #0
- mov r3, #1
- bl FUN_03805A48
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start RTCi_GpioStart
-RTCi_GpioStart: ;@ 0x03806248
- mov ip, #67108864 ;@ 0x4000000
- add ip, ip, #312 ;@ 0x138
- ldrh r0, [ip]
- bic r0, r0, #119 ;@ 0x77
- orr r0, r0, #114 ;@ 0x72
- strh r0, [ip]
- mov r3, #2
-_03806264:
- subs r3, r3, #1
- bne _03806264
- bic r0, r0, #4
- orr r0, r0, #4
- strh r0, [ip]
- mov r3, #2
-_0380627C:
- subs r3, r3, #1
- bne _0380627C
- bx lr
-
- arm_func_start RTCi_GpioEnd
-RTCi_GpioEnd: ;@ 0x03806288
- mov ip, #67108864 ;@ 0x4000000
- add ip, ip, #312 ;@ 0x138
- mov r3, #2
-_03806294:
- subs r3, r3, #1
- bne _03806294
- ldrh r0, [ip]
- bic r0, r0, #4
- orr r0, r0, #0
- strh r0, [ip]
- mov r3, #2
-_038062B0:
- subs r3, r3, #1
- bne _038062B0
- bx lr
-
- arm_func_start RTCi_GpioSendCommand
-RTCi_GpioSendCommand: ;@ 0x038062BC
- mov ip, #67108864 ;@ 0x4000000
- add ip, ip, #312 ;@ 0x138
- orr r1, r0, r1
- ldrh r0, [ip]
- bic r0, r0, #119 ;@ 0x77
- orr r0, r0, #116 ;@ 0x74
- mov r2, #0
-_038062D8:
- bic r0, r0, #3
- orr r0, r0, #0
- mov r3, #1
- tst r3, r1, lsr r2
- movne r3, #1
- moveq r3, #0
- orr r0, r0, r3
- strh r0, [ip]
- mov r3, #9
-_038062FC:
- subs r3, r3, #1
- bne _038062FC
- bic r0, r0, #2
- orr r0, r0, #2
- strh r0, [ip]
- mov r3, #9
-_03806314:
- subs r3, r3, #1
- bne _03806314
- add r2, r2, #1
- cmp r2, #8
- bne _038062D8
- bx lr
-
- arm_func_start RTCi_GpioSendData
-RTCi_GpioSendData: ;@ 0x0380632C
- mov ip, #67108864 ;@ 0x4000000
- add ip, ip, #312 ;@ 0x138
-_03806334:
- stmdb sp!, {r0, r1}
- tst r0, #1
- ldreqh r1, [r0]
- ldrneh r1, [r0, #-1]
- movne r1, r1, lsr #8
- ldrh r0, [ip]
- bic r0, r0, #119 ;@ 0x77
- orr r0, r0, #116 ;@ 0x74
- mov r2, #0
-_03806358:
- bic r0, r0, #3
- orr r0, r0, #0
- mov r3, #1
- tst r3, r1, lsr r2
- movne r3, #1
- moveq r3, #0
- orr r0, r0, r3
- strh r0, [ip]
- mov r3, #9
-_0380637C:
- subs r3, r3, #1
- bne _0380637C
- bic r0, r0, #2
- orr r0, r0, #2
- strh r0, [ip]
- mov r3, #9
-_03806394:
- subs r3, r3, #1
- bne _03806394
- add r2, r2, #1
- cmp r2, #8
- bne _03806358
- ldmia sp!, {r0, r1}
- add r0, r0, #1
- subs r1, r1, #1
- bne _03806334
- bx lr
-
- arm_func_start RTCi_GpioReceiveData
-RTCi_GpioReceiveData: ;@ 0x038063BC
- mov ip, #67108864 ;@ 0x4000000
- add ip, ip, #312 ;@ 0x138
-_038063C4:
- stmdb sp!, {r0, r1}
- ldrh r0, [ip]
- bic r0, r0, #119 ;@ 0x77
- orr r0, r0, #100 ;@ 0x64
- mov r2, #0
- mov r1, #0
-_038063DC:
- bic r0, r0, #3
- orr r0, r0, #0
- strh r0, [ip]
- mov r3, #9
-_038063EC:
- subs r3, r3, #1
- bne _038063EC
- ldrh r0, [ip]
- and r3, r0, #1
- cmp r3, #1
- moveq r3, #128 ;@ 0x80
- movne r3, #0
- orr r2, r3, r2, lsr #1
- bic r0, r0, #2
- orr r0, r0, #2
- strh r0, [ip]
- mov r3, #9
-_0380641C:
- subs r3, r3, #1
- bne _0380641C
- add r1, r1, #1
- cmp r1, #8
- bne _038063DC
- ldmia sp!, {r0, r1}
- tst r0, #1
- beq _03806454
- ldrh r3, [r0, #-1]
- bic r3, r3, #65280 ;@ 0xff00
- mov r2, r2, lsl #8
- orr r3, r2, r3
- strh r3, [r0, #-1]
- b _03806464
-_03806454:
- ldrh r3, [r0]
- bic r3, r3, #255 ;@ 0xff
- orr r3, r3, r2
- strh r3, [r0]
-_03806464:
- add r0, r0, #1
- subs r1, r1, #1
- bne _038063C4
- bx lr
-
arm_func_start FUN_03806474
FUN_03806474: ;@ 0x03806474
stmdb sp!, {r4, r5, r6, r7, lr}