2023-03-21 01:26:03 +09:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								from  . . assembler  import  ASM  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  fixGoldenLeaf ( rom ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Patch the golden leaf code so it jumps to the dropped key handling in bank 3E 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 3 ,  0x2007 ,  ASM ( """ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ld    de ,  $ 5 FFB 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        call  $ 3 C77  ;  RenderActiveEntitySprite 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    """ ), ASM( """ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ld    a ,  $ 04 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rst   8 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    """ ), fill_nop=True) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 3 ,  0x2018 ,  None ,  ASM ( """ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ld    a ,  $ 06  ;  giveItemMultiworld 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rst   8 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        jp    $ 602 F 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    """ )) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 3 ,  0x2037 ,  None ,  ASM ( """ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ld    a ,  $ 0 a  ;  showMessageMultiworld 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rst   8 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        jp    $ 604 B 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    """ )) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Patch all over the place to move the golden leafs to a different memory location. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # We use $DB6D (dungeon 9 status), but we could also use $DB7A (which is only used by the ghost) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 0x00 ,  0x2D17 ,  ASM ( " ld a, [$DB15] " ) ,  ASM ( " ld a, $06 " ) ,  fill_nop = True )   # Always load the slime tiles 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 0x02 ,  0x3005 ,  ASM ( " cp $06 " ) ,  ASM ( " cp $01 " ) ,  fill_nop = True )   # Instead of checking for 6 leaves a the keyhole, just check for the key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 0x20 ,  0x1AD1 ,  ASM ( " ld a, [$DB15] " ) ,  ASM ( " ld a, [wGoldenLeaves] " ) )   # For the status screen, load the number of leafs from the proper memory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 0x03 ,  0x0980 ,  ASM ( " ld a, [$DB15] " ) ,  ASM ( " ld a, [wGoldenLeaves] " ) )   # If leaves >= 6 move richard 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 0x06 ,  0x0059 ,  ASM ( " ld a, [$DB15] " ) ,  ASM ( " ld a, [wGoldenLeaves] " ) )   # If leaves >= 6 move richard 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 0x06 ,  0x007D ,  ASM ( " ld a, [$DB15] " ) ,  ASM ( " ld a, [wGoldenLeaves] " ) )   # Richard message if no leaves 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-20 10:18:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rom . patch ( 0x06 ,  0x00B6 ,  ASM ( " ld a, $FF " ) ,  ASM ( " ld a, $06 " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rom . patch ( 0x06 ,  0x00B8 ,  ASM ( " ld [$DB15], a " ) ,  ASM ( " ld [wGoldenLeaves], a " ) )   # Stores 6 in the leaf counter if we opened the path (instead of FF, so that nothing breaks if we get more for some reason) 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-21 01:26:03 +09:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    # 6:40EE uses leaves == 6 to check if we have collected the key, but only to change the message. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # rom.patch(0x06, 0x2AEF, ASM("ld a, [$DB15]"), ASM("ld a, [wGoldenLeaves]"))  # Telephone message handler