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)
							 |