mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Links Awakening: Implement New Game (#1334)
Adds Link's Awakening: DX. Fully imports and forks LADXR, with permission - https://github.com/daid/LADXR
This commit is contained in:
58
worlds/ladx/LADXR/patches/witch.py
Normal file
58
worlds/ladx/LADXR/patches/witch.py
Normal file
@@ -0,0 +1,58 @@
|
||||
from ..assembler import ASM
|
||||
from ..roomEditor import RoomEditor
|
||||
|
||||
|
||||
def updateWitch(rom):
|
||||
# Add a heartpiece at the toadstool, the item patches turn this into a 1 time toadstool item
|
||||
# Or depending on flags, in something else.
|
||||
re = RoomEditor(rom, 0x050)
|
||||
re.addEntity(2, 3, 0x35)
|
||||
re.store(rom)
|
||||
|
||||
# Change what happens when you trade the toadstool with the witch
|
||||
# Note that the 2nd byte of this code gets patched with the item to give from the witch.
|
||||
rom.patch(0x05, 0x08D4, 0x08F0, ASM("""
|
||||
; Get the room flags and mark the witch as done.
|
||||
ld hl, $DAA2
|
||||
ld a, [hl]
|
||||
and $30
|
||||
set 4, [hl]
|
||||
set 5, [hl]
|
||||
jr z, item
|
||||
powder:
|
||||
ld e, $09 ; give powder every time after the first time.
|
||||
ld a, e
|
||||
ldh [$F1], a
|
||||
ld a, $11
|
||||
rst 8
|
||||
jp $48F0
|
||||
item:
|
||||
ld a, $0E
|
||||
rst 8
|
||||
"""), fill_nop=True)
|
||||
|
||||
# Patch the toadstool to unload when you haven't delivered something to the witch yet.
|
||||
rom.patch(0x03, 0x1D4B, ASM("""
|
||||
ld hl, $DB4B
|
||||
ld a, [$DB4C]
|
||||
or [hl]
|
||||
jp nz, $3F8D
|
||||
"""), ASM("""
|
||||
ld a, [$DAA2]
|
||||
and $20
|
||||
jp z, $3F8D
|
||||
"""), fill_nop=True)
|
||||
|
||||
# Patch what happens when we pickup the toadstool, call our chest code to give a toadstool.
|
||||
rom.patch(0x03, 0x1D6F, 0x1D7D, ASM("""
|
||||
ld a, $50
|
||||
ldh [$F1], a
|
||||
ld a, $02 ; give item
|
||||
rst 8
|
||||
|
||||
ld hl, $DAA2
|
||||
res 5, [hl]
|
||||
"""), fill_nop=True)
|
||||
|
||||
def witchIsPatched(rom):
|
||||
return sum(rom.banks[0x05][0x08D4:0x08F0]) != 0x0DC2
|
||||
Reference in New Issue
Block a user