; MOVIE.EXE
;
; LBA list   = $A90-B80
; LBA length = $B80-C00
; LBA code   = $C00-Cxx


;-->
;800bdf18 : 27BDFFE8  ADDIU   801ffd90 (sp), 801ffd90 (sp), ffe8 (65512),
;800bdf1c : AFBF0010  SW      800bde48 (ra), 0010 (801ffd78 (sp)) [801ffd88]
;-->
;800bdf20 : 0C02F988  JAL     800be620, 800bde48 (ra),
;800bdf24 : 2406000C  ADDIU   00000000 (a2), 00000000 (r0), 000c (12),

org $800B8400


; OLD code (free registers)
addiu sp,sp,$ffe8
sw ra,$10(sp)

;-----------------------
;-----------------------
;-----------------------
;-----------------------

; ra
; a2
; v1
; v0

; copy movie name
lw ra,$0(a1)
nop

; replace file name 'S04.STR'
lui v0,$8013
ori v0,v0,$5490
sw ra,0(v0)



; compute movie # (BCD -> int) [$30-39]
; - [x*8 + x + x] + [y]
lbu v0,1(a1)
nop
andi v0,v0,$0f
sll ra,v0,3
addu ra,ra,v0
addu ra,ra,v0

lbu v0,2(a1)
nop
andi v0,v0,$0f
addu ra,ra,v0



; find movie length (16-bit values)
sll ra,ra,1

lui a2,$800B
ori a2,a2,$8380
addu a2,a2,ra
lh v0,0(a2)
nop

; replace movie length
lui a2,$8013
sh v0,$548E(a2)



; find movie LBA (32-bit values)
sll ra,ra,1

lui a2,$800B
ori a2,a2,$8290
addu a2,a2,ra
lw v0,0(a2)
nop

; replace movie LBA
lui a2,$8013
sw v0,$5488(a2)

;-----------------------
;-----------------------
;-----------------------
;-----------------------

j $800bdf20
nop
