; DEBUG = 2AD00-2AFC0
;
; 2AD00-2AD10 = CD # / CD1 LBA / CD2 LBA / <unused>
; 2AD10-2AD40 = address -> time LBA remap
; 2AD40-2AD80 = time -> address LBA remap
; 2AD80-2ADB0 = address -> time LBA remap (#2)
; 2ADB0-2ADE0 = swap CD #s
; 2ADE0-2AExx = detect / replace swap routine


;-->
;8001fda0 : 3C028003  LUI     00000002 (v0), 8003 (32771),
;8001fda4 : 8C42BF5C  LW      80030000 (v0), bf5c (80030000 (v0)) [8002bf5c]
;8001fda8 : 3C058003  LUI     e1000200 (a1), 8003 (32771),
;8001fdac : 8CA5BF60  LW      80030000 (a1), bf60 (80030000 (a1)) [8002bf60]
;-->
;8001fdb0 : 27BDFFD8  ADDIU   801fff20 (sp), 801fff20 (sp), ffd8 (65496),
;8001fdb4 : AFBF0020  SW      8002ae14 (ra), 0020 (801ffef8 (sp)) [801fff18]
;8001fdb8 : AFB1001C  SW      ff000000 (s1), 001c (801ffef8 (sp)) [801fff14]
;8001fdbc : AFB00018  SW      800f272c (s0), 0018 (801ffef8 (sp)) [801fff10] 

; free = (v0),v1,(a1)




org $8002ade0


; check #1 = splash nag
lw v0,8(ra)
;nop

lui v1,$0c00
ori v1,v1,$8504

bne v0,v1,EXIT
;nop



; ra + $ffac = JAL $80011f3c (disc swap)
addiu a1,ra,$ffac


; check #2 = disc swap code
lw v0,0(a1)
;nop

lui v1,$0c00
ori v1,v1,$47cf

bne v0,v1,EXIT
;nop


; check #3 = load disc ID
lw v0,$10(a1)
;nop

lui v1,$0c00
ori v1,v1,$47f3

bne v0,v1,EXIT
;nop

; #####################
; #####################
; #####################
; #####################

; (GPU) turn off screen - avoid disc swap nag
lui v0,$0300
ori v0,v0,$0001

lui v1,$1f80
sw v0,$1814(v1)



; patch CD swapper
; - insert j $8002adb0
lui v0,$0c00
ori v0,v0,$ab6c

sw v0,$0(a1)
sw r0,$18(a1)
sw r0,$34(a1)

; =====================
; =====================
; =====================
; =====================

; old code
lui v0,$8003
lw a1,$bf60(v0)
lw v0,$bf5c(v0)
nop


EXIT:
j $8001fdb0
nop
