; DEBUG = 1EFD60-1EFFE0
;
; 1EFD60-1EFD70 = CD # / CD1 LBA / CD2 LBA / <unused>
; 1EFD70-1EFDxx = address -> time LBA remap



;-->
;80083844 : 3C031B4E  LUI     00000017 (v1), 1b4e (6990),
;80083848 : 346381B5  ORI     1b4e0000 (v1), 1b4e0000 (v1), 81b5 (33205),
;-->
;8008384c : 24840096  ADDIU   00000017 (a0), 00000017 (a0), 0096 (150),
;80083850 : 00830018  MULT    000000ad (a0), 1b4e81b5 (v1),


org $801efd70

; remap FILELIST (17)
ori v1,r0,$17
bne v1,a0,REMAP_LBA
nop


; check cd2 (1-2)
lui v0,$801e+1
lbu v1,$fd60(v0)
nop

addiu v1,v1,$ffff
beq v1,r0,EXIT
nop


; 17 -> 16
beq r0,r0,EXIT
addiu a0,a0,$ffff

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

REMAP_LBA:


; avoid LBA range (0-3e1)
ori v0,r0,$3e2
sltu v1,a0,v0
bne v1,r0,EXIT
nop



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

; prepare CD ptr (1-2)
lui v0,$801e+1
lbu v1,$fd60(v0)
nop

; load new starting ptr (table)
lui v0,$801e+1
sll v1,v1,2
addu v0,v0,v1
lw v1,$fd60(v0)
nop

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

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

EXIT:

; OLD code
lui v1,$1b4e

j $8008384c
ori v1,v1,$81b5
