43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
from ..assembler import ASM
|
|
|
|
|
|
def fixHeartPiece(rom):
|
|
# Patch all locations where the piece of heart is rendered.
|
|
rom.patch(0x03, 0x1b52, ASM("ld de, $5A4D\ncall $3BC0"), ASM("ld a, $04\nrst 8"), fill_nop=True) # state 0
|
|
|
|
# Write custom code in the first state handler, this overwrites all state handlers
|
|
# Till state 5.
|
|
rom.patch(0x03, 0x1A74, 0x1A98, ASM("""
|
|
; Render sprite
|
|
ld a, $05
|
|
rst 8
|
|
|
|
; Handle item effect
|
|
ld a, $06 ; giveItemMultiworld
|
|
rst 8
|
|
|
|
;Show message
|
|
ld a, $0A ; showMessageMultiworld
|
|
rst 8
|
|
|
|
; Switch to state 5
|
|
ld hl, $C290; stateTable
|
|
add hl, bc
|
|
ld [hl], $05
|
|
ret
|
|
"""), fill_nop=True)
|
|
# Insert a state 5 handler
|
|
rom.patch(0x03, 0x1A98, 0x1B17, ASM("""
|
|
; Render sprite
|
|
ld a, $05
|
|
rst 8
|
|
|
|
ld a, [$C19F] ; dialog state
|
|
and a
|
|
ret nz
|
|
|
|
call $512A ; mark room as done
|
|
call $3F8D ; unload entity
|
|
ret
|
|
"""), fill_nop=True)
|