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()}
|
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()}
|
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):
|
class PokemonEmeraldClient(BizHawkClient):
|
||||||
game = "Pokemon Emerald"
|
game = "Pokemon Emerald"
|
||||||
|
@ -414,13 +419,17 @@ class PokemonEmeraldClient(BizHawkClient):
|
||||||
|
|
||||||
read_result = await bizhawk.guarded_read(
|
read_result = await bizhawk.guarded_read(
|
||||||
ctx.bizhawk_ctx,
|
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
|
if read_result is None: # Save block moved
|
||||||
return
|
return
|
||||||
|
|
||||||
current_map = int.from_bytes(read_result[0], "big")
|
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:
|
if current_map != self.current_map:
|
||||||
self.current_map = current_map
|
self.current_map = current_map
|
||||||
await ctx.send_msgs([{
|
await ctx.send_msgs([{
|
||||||
|
@ -429,6 +438,7 @@ class PokemonEmeraldClient(BizHawkClient):
|
||||||
"data": {
|
"data": {
|
||||||
"type": "MapUpdate",
|
"type": "MapUpdate",
|
||||||
"mapId": current_map,
|
"mapId": current_map,
|
||||||
|
**({"tide": shoal_cave} if current_map in SHOAL_CAVE_MAPS else {}),
|
||||||
},
|
},
|
||||||
}])
|
}])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue