; DEBUG = 17F60-18370
;
; 17F60-17F70 = CD1 LBA / CD2 LBA / CD3 LBA / CD4 LBA
; 17F70-17F80 = <unused>
; 17F80-17Fxx = address -> time LBA remap



;-->
;8009c8b0 : 3C031B4E  LUI     00000002 (v1), 1b4e (6990),
;8009c8b4 : 346381B5  ORI     1b4e0000 (v1), 1b4e0000 (v1), 81b5 (33205),
;-->
;8009c8b8 : 24840096  ADDIU   00014349 (a0), 00014349 (a0), 0096 (150),
;8009c8bc : 00830018  MULT    000143df (a0), 1b4e81b5 (v1),



org $80017f80

; special LBA range (708) [DISKNO1]
ori v1,r0,$708
beq v1,a0,REMAP_DISKNO1
nop



; avoid LBA range (0-1D91E) [1D91F+ = MOVIES]
lui v0,$1
ori v0,v0,$d91f
sltu v1,a0,v0
bne v1,r0,EXIT
nop

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

; adjust LBA ptr (start at zero)
sub a0,a0,v0

; prepare CD ptr (1-4)
lui v0,$800a+1
lbu v1,$c87c(v0)
nop

; remap CD range (1-4 ==> 0-3)
addiu v1,v1,$ffff

; load new starting ptr (table)
lui v0,$8001
sll v1,v1,2
addu v0,v0,v1
lw v1,$7f60(v0)
nop

; remap LBA to final range
addu a0,a0,v1


beq r0,r0,EXIT
nop

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

REMAP_DISKNO1:

; A22AC (new base address)
lui a0,$a
ori a0,a0,$22ac


; load CD # (1-4)
lui v1,$800a+1
lbu v1,$c87c(v1)
nop

; remap CD range (1-4 ==> 0-3)
addiu v1,v1,$ffff

; 708 ==> 708 / 70A / 70C / 70E
addu a0,a0,v1
addu a0,a0,v1


;beq r0,r0,EXIT
;nop

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

EXIT:

; OLD code
lui v1,$1b4e
ori v1,v1,$81b5

j $8009c8b8
nop
