 81a239325d
			
		
	
	81a239325d
	
	
	
		
			
			Adds Link's Awakening: DX. Fully imports and forks LADXR, with permission - https://github.com/daid/LADXR
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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
 |