52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from ..assembler import ASM
							 | 
						||
| 
								 | 
							
								from ..utils import formatText
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def updateTarin(rom):
							 | 
						||
| 
								 | 
							
								    # Do not give the shield.
							 | 
						||
| 
								 | 
							
								    rom.patch(0x05, 0x0CD0, ASM("""
							 | 
						||
| 
								 | 
							
								        ld   d, $04
							 | 
						||
| 
								 | 
							
								        call $5321
							 | 
						||
| 
								 | 
							
								        ld   a, $01
							 | 
						||
| 
								 | 
							
								        ld   [$DB44], a
							 | 
						||
| 
								 | 
							
								    """), "", fill_nop=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # Instead of showing the usual "your shield back" message, give the proper message and give the item.
							 | 
						||
| 
								 | 
							
								    rom.patch(0x05, 0x0CDE, ASM("""
							 | 
						||
| 
								 | 
							
								        ld   a, $91
							 | 
						||
| 
								 | 
							
								        call $2385
							 | 
						||
| 
								 | 
							
								    """), ASM("""
							 | 
						||
| 
								 | 
							
								        ld   a, $0B ; GiveItemAndMessageForRoom
							 | 
						||
| 
								 | 
							
								        rst  8
							 | 
						||
| 
								 | 
							
								    """), fill_nop=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rom.patch(0x05, 0x0CF0, ASM("""
							 | 
						||
| 
								 | 
							
								        xor  a
							 | 
						||
| 
								 | 
							
								        ldh  [$F1], a
							 | 
						||
| 
								 | 
							
								        ld   de, $4CC6
							 | 
						||
| 
								 | 
							
								        call $3C77
							 | 
						||
| 
								 | 
							
								    """), ASM("""
							 | 
						||
| 
								 | 
							
								        ld   a, $0C ; RenderItemForRoom
							 | 
						||
| 
								 | 
							
								        rst  8
							 | 
						||
| 
								 | 
							
								        xor  a
							 | 
						||
| 
								 | 
							
								        ldh  [$F1], a
							 | 
						||
| 
								 | 
							
								    """), fill_nop=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # Set the room status to finished. (replaces a GBC check)
							 | 
						||
| 
								 | 
							
								    rom.patch(0x05, 0x0CAB, 0x0CB0, ASM("""
							 | 
						||
| 
								 | 
							
								        ld a, $20
							 | 
						||
| 
								 | 
							
								        call $36C4
							 | 
						||
| 
								 | 
							
								    """), fill_nop=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # Instead of checking for the shield level to put you in the bed, check the room flag.
							 | 
						||
| 
								 | 
							
								    rom.patch(0x05, 0x1202, ASM("ld a, [$DB44]\nand a"), ASM("ldh a, [$F8]\nand $20"))
							 | 
						||
| 
								 | 
							
								    rom.patch(0x05, 0x0C6D, ASM("ld a, [$DB44]\nand a"), ASM("ldh a, [$F8]\nand $20"))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # If the starting item is picked up, load the right palette when entering the room
							 | 
						||
| 
								 | 
							
								    rom.patch(0x21, 0x0176, ASM("ld a, [$DB48]\ncp $01"), ASM("ld a, [$DAA3]\ncp $A1"), fill_nop=True)
							 | 
						||
| 
								 | 
							
								    rom.patch(0x05, 0x0C94, "FF473152C5280000", "FD2ED911CE100000")
							 | 
						||
| 
								 | 
							
								    rom.patch(0x05, 0x0CB0, ASM("ld hl, $DC88"), ASM("ld hl, $DC80"))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # Patch the text that Tarin uses to give your shield back.
							 | 
						||
| 
								 | 
							
								    rom.texts[0x54] = formatText("#####, it is dangerous to go alone!\nTake this!")
							 |