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



;800839b8 : 00651821  ADDU    00000014 (v1), 00000014 (v1), 00000003 (a1),
;800839bc : 00431021  ADDU    00000096 (v0), 00000096 (v0), 00000017 (v1),
;-->
;800839c0 : 03E00008  JR      80016dcc (ra),
;800839c4 : 2442FF6A  ADDIU   000000ad (v0), 000000ad (v0), ff6a (65386),
;-->


org $801efde0

; OLD code
addiu v0,v0,$ff6a

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

; check FILELIST [16] = CD2
ori a0,r0,$16
bne a0,v0,REMAP_LBA
nop


; 16 -> 17
beq r0,r0,EXIT
addiu v0,v0,1

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

REMAP_LBA:

; check range (0-3e1)
sltiu a0,v0,$3e2
bne a0,r0,EXIT
nop



; load CD # (1-2)
lui a0,$801e+1
lbu a1,$fd60(a0)
nop

; load from LBA table
lui a0,$801e+1
sll a1,a1,2
addu a0,a0,a1
lw v1,$fd60(a0)
nop

; move v0 to 'zero offset'
subu v0,v0,v1

; move v0 to 'fixed LBA offset'
addiu v0,v0,$3e2

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

EXIT:

jr ra
nop
