mirror of
https://github.com/LNH-team/pico-loader.git
synced 2026-06-02 17:26:48 +02:00
- Supercard CF (SUPERCARDCF) - GBA Media Player CF (MPCF) - M3 Adapter CF (M3CF) - Max Media Dock CF (MMCF)
93 lines
1.6 KiB
ArmAsm
93 lines
1.6 KiB
ArmAsm
.cpu arm7tdmi
|
|
.syntax unified
|
|
.thumb
|
|
|
|
.section "m3cf_lock_unlock", "ax"
|
|
|
|
.equ M3_MODE_ROM, 8
|
|
.equ M3_MODE_MEDIA, 6
|
|
|
|
.global m3cf_lockUnlockCard
|
|
.type m3cf_lockUnlockCard, %function
|
|
m3cf_lockUnlockCard:
|
|
cmp r0, #1
|
|
bne unlock
|
|
movs r0, #0x08
|
|
M3_changeMode:
|
|
push {r1-r7, lr}
|
|
@ READ_REG #0x08e00002
|
|
ldr r1, =#0x08e00002
|
|
ldrh r1, [r1]
|
|
|
|
adr r1, M3_regs
|
|
@ r2 has #0x08801ffc
|
|
@ r3 has #0x0800104a
|
|
@ r4 has #0x08800612
|
|
@ r5 has #0x08801b66
|
|
@ r6 has #0x0800080e
|
|
@ r7 has #0x09000000
|
|
ldm r1!, {r2-r7}
|
|
|
|
@ load 0x08000000
|
|
movs r1, #1
|
|
lsls r1, #27
|
|
|
|
@ READ_REG #0x0800000e
|
|
ldrh r1, [r1, #0x0E]
|
|
|
|
@ READ_REG #0x08801ffc
|
|
ldrh r1, [r2]
|
|
@ READ_REG #0x0800104a
|
|
ldrh r1, [r3]
|
|
@ READ_REG #0x08800612
|
|
ldrh r1, [r4]
|
|
|
|
@ READ_REG #0x08000000
|
|
@ load 0x08000000
|
|
movs r2, #1
|
|
lsls r2, #27
|
|
ldrh r1, [r2]
|
|
|
|
@ READ_REG #0x08801b66
|
|
ldrh r1, [r5]
|
|
|
|
@ READ_REG #0x08800000 + r0
|
|
@ ldr r1, =#0x08800000
|
|
movs r1, 0x88
|
|
lsls r1, #20
|
|
ldrh r1, [r1, r0]
|
|
|
|
@ READ_REG #0x0800080e
|
|
ldrh r1, [r6]
|
|
|
|
@ READ_REG #0x08000000
|
|
ldrh r1, [r2]
|
|
|
|
cmp r0, M3_MODE_ROM
|
|
beq lastRomRead
|
|
@ READ_REG #0x09000000
|
|
ldrh r1, [r7]
|
|
pop {r1-r7, pc}
|
|
|
|
lastRomRead:
|
|
@ READ_REG #0x080001e4
|
|
ldr r1, =#0x080001e4
|
|
ldrh r3, [r1]
|
|
ldrh r3, [r1]
|
|
@ READ_REG #0x08000188
|
|
subs r1, #0x5C
|
|
ldrh r3, [r1]
|
|
ldrh r3, [r1]
|
|
pop {r1-r7, pc}
|
|
unlock:
|
|
movs r0, #0x06
|
|
b M3_changeMode
|
|
.pool
|
|
M3_regs:
|
|
.word 0x08801ffc
|
|
.word 0x0800104a
|
|
.word 0x08800612
|
|
.word 0x08801b66
|
|
.word 0x0800080e
|
|
.word 0x09000000
|