Pokemon Emerald: Add flag for shoal cave to bounces (#4021)
* Pokemon Emerald: Add shoal cave state to map updates * Pokemon Emerald: Fix shoal cave flag wrong byte, delay bounce to end of map transition
This commit is contained in:
		
							parent
							
								
									ff297f2951
								
							
						
					
					
						commit
						63d471514f
					
				| 
						 | 
				
			
			@ -117,6 +117,11 @@ LEGENDARY_NAMES = {k.lower(): v for k, v in {
 | 
			
		|||
DEFEATED_LEGENDARY_FLAG_MAP = {data.constants[f"FLAG_DEFEATED_{name}"]: name for name in LEGENDARY_NAMES.values()}
 | 
			
		||||
CAUGHT_LEGENDARY_FLAG_MAP = {data.constants[f"FLAG_CAUGHT_{name}"]: name for name in LEGENDARY_NAMES.values()}
 | 
			
		||||
 | 
			
		||||
SHOAL_CAVE_MAPS = tuple(data.constants[map_name] for map_name in [
 | 
			
		||||
    "MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM",
 | 
			
		||||
    "MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM",
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PokemonEmeraldClient(BizHawkClient):
 | 
			
		||||
    game = "Pokemon Emerald"
 | 
			
		||||
| 
						 | 
				
			
			@ -414,13 +419,17 @@ class PokemonEmeraldClient(BizHawkClient):
 | 
			
		|||
 | 
			
		||||
        read_result = await bizhawk.guarded_read(
 | 
			
		||||
            ctx.bizhawk_ctx,
 | 
			
		||||
            [(sb1_address + 0x4, 2, "System Bus")],
 | 
			
		||||
            [guards["SAVE BLOCK 1"]]
 | 
			
		||||
            [
 | 
			
		||||
                (sb1_address + 0x4, 2, "System Bus"),  # Current map
 | 
			
		||||
                (sb1_address + 0x1450 + (data.constants["FLAG_SYS_SHOAL_TIDE"] // 8), 1, "System Bus"),
 | 
			
		||||
            ],
 | 
			
		||||
            [guards["IN OVERWORLD"], guards["SAVE BLOCK 1"]]
 | 
			
		||||
        )
 | 
			
		||||
        if read_result is None:  # Save block moved
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        current_map = int.from_bytes(read_result[0], "big")
 | 
			
		||||
        shoal_cave = int(read_result[1][0] & (1 << (data.constants["FLAG_SYS_SHOAL_TIDE"] % 8)) > 0)
 | 
			
		||||
        if current_map != self.current_map:
 | 
			
		||||
            self.current_map = current_map
 | 
			
		||||
            await ctx.send_msgs([{
 | 
			
		||||
| 
						 | 
				
			
			@ -429,6 +438,7 @@ class PokemonEmeraldClient(BizHawkClient):
 | 
			
		|||
                "data": {
 | 
			
		||||
                    "type": "MapUpdate",
 | 
			
		||||
                    "mapId": current_map,
 | 
			
		||||
                    **({"tide": shoal_cave} if current_map in SHOAL_CAVE_MAPS else {}),
 | 
			
		||||
                },
 | 
			
		||||
            }])
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue