diff --git a/data/games/bdsp/maps/runtime/OreburghMine.json b/data/games/bdsp/maps/runtime/OreburghMine.json index 77cb4ce..6fde67d 100644 --- a/data/games/bdsp/maps/runtime/OreburghMine.json +++ b/data/games/bdsp/maps/runtime/OreburghMine.json @@ -11,7 +11,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0197.bin", "events_sha256": "517473fcecb3bd0f0aea6d3db18d81bb5f13bbb6082d859198cca6554dffb977", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", diff --git a/data/games/bdsp/maps/runtime/OreburghMineB1F.json b/data/games/bdsp/maps/runtime/OreburghMineB1F.json index d6e458b..13df8c2 100644 --- a/data/games/bdsp/maps/runtime/OreburghMineB1F.json +++ b/data/games/bdsp/maps/runtime/OreburghMineB1F.json @@ -11,7 +11,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0196.bin", "events_sha256": "fec75b45d815d678eff659c06b6f6ec9c531a724f1f3a2d25e16c3d586248f70", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", diff --git a/data/games/bdsp/maps/runtime/RavagedPath.json b/data/games/bdsp/maps/runtime/RavagedPath.json index 25dd8e2..d332254 100644 --- a/data/games/bdsp/maps/runtime/RavagedPath.json +++ b/data/games/bdsp/maps/runtime/RavagedPath.json @@ -11,7 +11,7 @@ "events": "res/field/events/events_ravaged_path.json", "events_sha256": "0be81f9bc68472f19067a9df969b2c6d3e1a54e0779b934657daa0a0a3fbe7ff", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "platinum", "target_game": "bdsp", "target_game_relation": "remake_baseline", diff --git a/data/games/bdsp/maps/runtime/Route202.json b/data/games/bdsp/maps/runtime/Route202.json index ee1d9e3..4a8920b 100644 --- a/data/games/bdsp/maps/runtime/Route202.json +++ b/data/games/bdsp/maps/runtime/Route202.json @@ -11,7 +11,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0328.bin", "events_sha256": "17c0c1616d0cb8d4acbfd50e9ece28b7e4243ed1b527d5d1832956c508ca5c88", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", diff --git a/data/games/bdsp/maps/runtime/Route203.json b/data/games/bdsp/maps/runtime/Route203.json index 9cef3ad..bf2db15 100644 --- a/data/games/bdsp/maps/runtime/Route203.json +++ b/data/games/bdsp/maps/runtime/Route203.json @@ -11,7 +11,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0329.bin", "events_sha256": "a5538e7025f82793f546381e76af7037daadad62b3ae2aed817aecb1578389aa", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", diff --git a/data/games/bdsp/maps/runtime/Route204North.json b/data/games/bdsp/maps/runtime/Route204North.json index 06452df..a1e245c 100644 --- a/data/games/bdsp/maps/runtime/Route204North.json +++ b/data/games/bdsp/maps/runtime/Route204North.json @@ -11,7 +11,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0331.bin", "events_sha256": "dc1454d9e10692dbb38660f260eb7eedfebd43d24c3d634460cf3e2428f655e0", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", diff --git a/data/games/bdsp/maps/runtime/Route204South.json b/data/games/bdsp/maps/runtime/Route204South.json index b1bd8ac..df5240f 100644 --- a/data/games/bdsp/maps/runtime/Route204South.json +++ b/data/games/bdsp/maps/runtime/Route204South.json @@ -11,7 +11,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0330.bin", "events_sha256": "57419b5fe791d60db542d30d18f9541258ba45c32a0a8b8165881fe000a126d0", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", diff --git a/data/games/frlg/maps/runtime/LavenderTown.json b/data/games/frlg/maps/runtime/LavenderTown.json new file mode 100644 index 0000000..468050a --- /dev/null +++ b/data/games/frlg/maps/runtime/LavenderTown.json @@ -0,0 +1,49 @@ +{ + "format": "pokesim-runtime-map/2", + "name": "LavenderTown", + "source": { + "decomp_file": "data/maps/LavenderTown/map.json", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "date": "2026-10-31" + }, + "tiles": [ + "########.....###########", + "########.....###########", + "#########....###########", + "#########....###########", + "#########...S###########", + "#...SSD##....###########", + "#............#####.#####", + "#....................S##", + "#.....................##", + "........#####.........##", + "........#####.........##", + ".......S##D##..S......##", + "#.....................##", + "#.................######", + "#..##########.....######", + "#..##########.....SSD###", + "#..##D####D##.........##", + "#.....................##", + "#.....................##", + "###########..###########" + ], + "points": { + "warp_1": [6, 5] + }, + "warps": [ + {"coord": [18, 6], "enter": "cave_entrance"}, + {"coord": [6, 5], "enter": "walk_into", "to_map": "LavenderTown_PokemonCenter_1F", "to_point": "warp_1"}, + {"coord": [10, 11], "enter": "walk_into"}, + {"coord": [5, 16], "enter": "walk_into"}, + {"coord": [10, 16], "enter": "walk_into"}, + {"coord": [20, 15], "enter": "walk_into"} + ], + "flag_sets": {}, + "connections": [{"side": "north", "to_map": "Route10", "offset": 0}], + "npcs": [ + {"name": "little_girl", "coord": [19, 10], "wander": {"min": [17, 9], "max": [21, 11]}}, + {"name": "worker_m", "coord": [12, 12]}, + {"name": "boy", "coord": [10, 7]} + ] +} diff --git a/data/games/frlg/maps/runtime/LavenderTown_PokemonCenter_1F.json b/data/games/frlg/maps/runtime/LavenderTown_PokemonCenter_1F.json new file mode 100644 index 0000000..2a706e3 --- /dev/null +++ b/data/games/frlg/maps/runtime/LavenderTown_PokemonCenter_1F.json @@ -0,0 +1,52 @@ +{ + "format": "pokesim-runtime-map/2", + "name": "LavenderTown_PokemonCenter_1F", + "source": { + "decomp_file": "data/maps/LavenderTown_PokemonCenter_1F/map.json", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "date": "2026-10-31" + }, + "allow_running": false, + "tiles": [ + "#.#############", + "###############", + "....###..##....", + "....#######....", + "...............", + "...............", + "#..........##..", + "...........##..", + "...............", + "###############" + ], + "elevation": [ + "030000000000000", + "000000000000000", + "333300033003333", + "333300000003333", + "333333333333333", + "330333333333333", + "044033333330033", + "330333333330033", + "333333333333333", + "000000000000000" + ], + "points": { + "warp_1": [7, 8] + }, + "warps": [ + {"coord": [6, 8], "enter": "walk_into", "to_map": "LavenderTown", "to_point": "warp_1"}, + {"coord": [7, 8], "enter": "walk_south", "to_map": "LavenderTown", "to_point": "warp_1"}, + {"coord": [8, 8], "enter": "walk_into", "to_map": "LavenderTown", "to_point": "warp_1"}, + {"coord": [1, 6], "enter": "step_on"} + ], + "flag_sets": {}, + "connections": [], + "npcs": [ + {"name": "nurse", "coord": [7, 2]}, + {"name": "gentleman", "coord": [9, 4]}, + {"name": "lass", "coord": [5, 6], "wander": {"min": [5, 4], "max": [5, 8]}}, + {"name": "youngster", "coord": [2, 2], "wander": {"min": [1, 1], "max": [3, 3]}}, + {"name": "balding_man", "coord": [14, 6], "hide_flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"} + ] +} diff --git a/data/games/frlg/maps/runtime/RockTunnel_1F.json b/data/games/frlg/maps/runtime/RockTunnel_1F.json new file mode 100644 index 0000000..f72fef5 --- /dev/null +++ b/data/games/frlg/maps/runtime/RockTunnel_1F.json @@ -0,0 +1,83 @@ +{ + "format": "pokesim-runtime-map/2", + "name": "RockTunnel_1F", + "source": { + "decomp_file": "data/maps/RockTunnel_1F/map.json", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "date": "2026-10-31" + }, + "tiles": [ + "~~#####################~~~~~~~~~~~~~~~~~~######~", + "~~#~~~################~~~~~~~~~~~~~~~~~~~###~~#~", + "~~#~.~~#########~.~~~#~~~~~~~~~~~~~~~~~~~#~~~.#~", + "~~#~~~~~########~~~~~###################~#~~~~#~", + "~~#~~~~~########~~~~~~~~~~~~~~~~~~~~~~~#~#~~~~#~", + "###~~~~~########~~~~~~~~~~~~~~~~~~~~~~~#~#~~~~#~", + "#~~~~~~~~~~~####~~~~~~~~~~~~~~~~~~~~~~~###~~~~#~", + "#~~~~~~~~~~~####~~~~~~~~~~~~~~~~~~~~~~~###~~~~#~", + "#~~~~~~~~~~~####~~~~~~~~~~~~~~~~~~~~~~~###~~~~#~", + "#~~~~~~~~~~~############~~~~##############~~~~#~", + "#~~~~~###~~~############~~~~##############~~~~#~", + "#~~~~~###~~~~###########~~~~##############~~~~#~", + "#~~~~~###~~~~#####~~~###~~~~~~~~~~~~~~~~~~~~~~#~", + "#~~~~~####~~~###~~~~.###~~~~~~~~~~~~~~~~~~~~~~#~", + "#~~~~####~~~~###~~~~~#####~~~~~~~~~~~~~~~~~~~##~", + "#~~~~~####~~~###~~~~~#####~#~~~~~~~~~~~~~~#####~", + "#~~~~####~~~~~~~~~~~~##########################~", + "#~~~~~###~~~~~~~~~~~~##########################~", + "#~~~~~###~~~~~~~~~~~~##########################~", + "#~~~~####~~~~~~~~~~~~~~~~#####~~~#~~#####~~~###~", + "#~~~~~###~~~~~~~~~~~~~~~~####~~~~~~~####~~~~~~#~", + "#~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~~~###~~~~~~.#~", + "#~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~~~###~~~~~~~#~", + "#~~~~~~~~~~~~~~~~~~~~~~~####~~~~~~~~###~~~~~~~#~", + "#~~~~~~~~~~~~~~~~~~#########~~~~~~~~###~~~~~~~#~", + "############################~~~~~~~~###~~~~~~~#~", + "############################~~~~~~~~###~~~~~~~#~", + "############################~~~~~~~~###~~~~~~##~", + "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~~#~", + "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~~#~", + "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~~~#~", + "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~###~~~~~#~#~", + "############~~~~~~~~~~~########~~~~~~~~~~~~####~", + "############~~S~~~~~~~~########~~~~~~~~~~~~##~#~", + "############~~~~~~~#~~~##########~~~~~~~~~~~~~#~", + "############~~~~~~~~~~~########~###~~~~~~~~~~~#~", + "############~#~~~~~~#~~########################~", + "############~~~#~~.~~#~########################~", + "###############################################~", + "################################################" + ], + "points": { + "warp_0": [17, 2], + "warp_1": [45, 2], + "warp_2": [4, 2], + "warp_3": [20, 13], + "warp_4": [45, 21], + "warp_5": [18, 37] + }, + "warps": [ + {"coord": [17, 2], "enter": "step_on", "to_map": "Route10", "to_point": "warp_0"}, + {"coord": [45, 2], "enter": "step_on", "to_map": "RockTunnel_B1F", "to_point": "warp_0"}, + {"coord": [4, 2], "enter": "step_on", "to_map": "RockTunnel_B1F", "to_point": "warp_1"}, + {"coord": [20, 13], "enter": "step_on", "to_map": "RockTunnel_B1F", "to_point": "warp_2"}, + {"coord": [45, 21], "enter": "step_on", "to_map": "RockTunnel_B1F", "to_point": "warp_3"}, + {"coord": [18, 37], "enter": "walk_south", "to_map": "Route10", "to_point": "warp_1"} + ], + "flag_sets": {}, + "connections": [], + "npcs": [ + {"name": "picnicker", "coord": [26, 28], "facing": "south", "trainer": {"sight": 3}}, + {"name": "picnicker", "coord": [39, 27], "facing": "east", "trainer": {"sight": 4}}, + {"name": "picnicker", "coord": [45, 24], "facing": "west", "trainer": {"sight": 5}}, + {"name": "hiker", "coord": [20, 17], "facing": "west", "trainer": {"sight": 4}}, + {"name": "hiker", "coord": [5, 20], "facing": "south", "trainer": {"sight": 4}}, + {"name": "hiker", "coord": [7, 5], "facing": "south", "trainer": {"sight": 4}}, + {"name": "poke_maniac", "coord": [27, 10], "facing": "west", "trainer": {"sight": 3}} + ], + "items": [ + {"name": "item_ball", "coord": [37, 5], "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_REPEL"}, + {"name": "item_ball", "coord": [33, 22], "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_PEARL"}, + {"name": "item_ball", "coord": [22, 22], "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_ESCAPE_ROPE"} + ] +} diff --git a/data/games/frlg/maps/runtime/RockTunnel_B1F.json b/data/games/frlg/maps/runtime/RockTunnel_B1F.json new file mode 100644 index 0000000..5fa2933 --- /dev/null +++ b/data/games/frlg/maps/runtime/RockTunnel_B1F.json @@ -0,0 +1,95 @@ +{ + "format": "pokesim-runtime-map/2", + "name": "RockTunnel_B1F", + "source": { + "decomp_file": "data/maps/RockTunnel_B1F/map.json", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "date": "2026-10-31" + }, + "tiles": [ + "###############################################~", + "###~~###~~~~####~~~~~##~#~~#######~~~~~~~#~####~", + "#~#~~###~~~~#####~~~~~#~~~~#####~#~~~~~~~~~~#~#~", + "#~.~~###~~~~####~~~~~~~~~~~~###~~.~~~~~~~~~~~##~", + "#~~~~###~~~~###~~~~~~~~~~~~~###~~~~~~~~~~~~~~##~", + "#~~~~###~~~~###~~~~~~~~~~~~~###~~~~~~~~#~~~~~##~", + "#~~~~####~~~###~~~~~###~~~~~###~~~~~######~~~~#~", + "#~~~~###~~~####~~~~~###~~~~~###~~~~#######~~~~#~", + "#~~~~###~~~####~~~~~###########~~~~########~~~#~", + "#~~~~###~~~~###~~~~~###########~~~~########~~~#~", + "#~~~~###~~~####~~~~~###########~~~~~#######~~~#~", + "#~~~~~~~~~~~###~~~~~~~~~~~~####~~~~~~~####~~~~#~", + "#~~~~~~~~~~~###~~~~~~~~~~~~.####~~~~~~~~~~~~~~#~", + "#~~~~~~~~~~~###~~~~~~~~~~~~~#####~~~~~~~~~~~~~#~", + "#~~~~~~~~~~~###~~~~~~~~~~~~~#####~~~~~~~~~~~~~#~", + "#~~~~~~~~~~~###~~~~~~~~~~~~~########~~~~~~~~~~#~", + "#~~~~###~~~~~~~~~~~~##################~~~~~~~~#~", + "#~~~~###~~~~~~~~~~~~##################~~~~~~~~#~", + "#~~~~###~~~~~~~~~~~~##################~~~~~~~##~", + "#~~~~###~~~~~~~~~~~~###~~~~~~~~~~~~~~~~~~~~~~~#~", + "#~~~~###~~~~###~~~~~###~~~~~~~~~~~~~~~~~~~~~###~", + "#~~~~###~~~~###~~~~~###~~~~~~~~~~~~~~~~~~~#~###~", + "#~~~~####~~~###~~~~~###~~~~~~~#################~", + "##~~~#####~~###~~~~~###~~~~~~~#################~", + "########~~~~###~~~~~###~~~~~~~#################~", + "########~~~~###########~~~~~~~#####~~~~~#~#####~", + "########~~~~###########~~~~~~~####~~~#~~~~~~###~", + "########~~~~###########~~~~~~~###~~~~~#~~~~~###~", + "#~~~~~~~~~~~#####~~~~~~~~~~~~~###~~~~~.~~~~~~##~", + "#~~~~~~~~~~~#####~~~~~~~~~~~~~###~~~~~~~~~~~~##~", + "#~~~~~~~~~~~###~~~~~~~~~~~~~~~###~~~~~~~~~~~~~#~", + "#~~~~~~~~~#####~~~~~~~~~~~~~~~###~~~~~~~~~~~~~#~", + "###############~~~~##############~~~~~~~~~~~~##~", + "###############~~~###############~~~~~~~~~~~~~#~", + "###############~~~###############~~~~~~~~~~~~~#~", + "#~~~~~~##~#~~~~~~~~~#~~~~####~~##~~~~~~~~~~~#~#~", + "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#~", + "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#~", + "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##~~~~~~~~~~~~~#~", + "###############################################~" + ], + "points": { + "warp_0": [38, 28], + "warp_1": [33, 3], + "warp_2": [27, 12], + "warp_3": [2, 3] + }, + "warps": [ + {"coord": [38, 28], "enter": "step_on", "to_map": "RockTunnel_1F", "to_point": "warp_1"}, + {"coord": [33, 3], "enter": "step_on", "to_map": "RockTunnel_1F", "to_point": "warp_2"}, + {"coord": [27, 12], "enter": "step_on", "to_map": "RockTunnel_1F", "to_point": "warp_3"}, + {"coord": [2, 3], "enter": "step_on", "to_map": "RockTunnel_1F", "to_point": "warp_4"} + ], + "flag_sets": {}, + "connections": [], + "npcs": [ + {"name": "poke_maniac", "coord": [2, 6], "trainer": {"sight": 2, "looks": ["north", "east", "south", "west"]}}, + {"name": "hiker", "coord": [5, 11], "facing": "south", "trainer": {"sight": 4}}, + {"name": "picnicker", "coord": [11, 15], "facing": "south", "trainer": {"sight": 4}}, + {"name": "hiker", "coord": [36, 11], "facing": "south", "trainer": {"sight": 3}}, + {"name": "hiker", "coord": [41, 5], "facing": "east", "trainer": {"sight": 3}}, + {"name": "poke_maniac", "coord": [23, 23], "facing": "east", "trainer": {"sight": 4}}, + {"name": "picnicker", "coord": [15, 33], "facing": "east", "trainer": {"sight": 2}}, + {"name": "poke_maniac", "coord": [29, 35], "facing": "south", "trainer": {"sight": 3}}, + {"name": "youngster", "coord": [2, 29]}, + {"name": "rock_smash_rock", "coord": [1, 20], "hide_flag": "FLAG_TEMP_12"}, + {"name": "rock_smash_rock", "coord": [1, 22], "hide_flag": "FLAG_TEMP_13"}, + {"name": "rock_smash_rock", "coord": [4, 23], "hide_flag": "FLAG_TEMP_14"}, + {"name": "rock_smash_rock", "coord": [2, 23], "hide_flag": "FLAG_TEMP_15"}, + {"name": "rock_smash_rock", "coord": [39, 26], "hide_flag": "FLAG_TEMP_16"}, + {"name": "rock_smash_rock", "coord": [42, 26], "hide_flag": "FLAG_TEMP_17"}, + {"name": "rock_smash_rock", "coord": [43, 28], "hide_flag": "FLAG_TEMP_18"}, + {"name": "rock_smash_rock", "coord": [45, 30], "hide_flag": "FLAG_TEMP_19"}, + {"name": "rock_smash_rock", "coord": [45, 33], "hide_flag": "FLAG_TEMP_1A"}, + {"name": "rock_smash_rock", "coord": [25, 1], "hide_flag": "FLAG_TEMP_1B"}, + {"name": "rock_smash_rock", "coord": [27, 4], "hide_flag": "FLAG_TEMP_1C"}, + {"name": "rock_smash_rock", "coord": [23, 2], "hide_flag": "FLAG_TEMP_1D"}, + {"name": "rock_smash_rock", "coord": [26, 2], "hide_flag": "FLAG_TEMP_1E"}, + {"name": "rock_smash_rock", "coord": [24, 7], "hide_flag": "FLAG_TEMP_1F"}, + {"name": "rock_smash_rock", "coord": [27, 6], "hide_flag": "FLAG_TEMP_11"} + ], + "items": [ + {"name": "item_ball", "coord": [2, 37], "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_B1F_REVIVE"}, + {"name": "item_ball", "coord": [9, 2], "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_B1F_MAX_ETHER"} + ] +} diff --git a/data/games/frlg/maps/runtime/Route10.json b/data/games/frlg/maps/runtime/Route10.json index 56982fa..90d5d94 100644 --- a/data/games/frlg/maps/runtime/Route10.json +++ b/data/games/frlg/maps/runtime/Route10.json @@ -171,17 +171,19 @@ "000000003333300000000000" ], "points": { + "warp_0": [8, 19], + "warp_1": [8, 57], "warp_3": [13, 20] }, "warps": [ - {"coord": [8, 19], "enter": "cave_entrance"}, - {"coord": [8, 57], "enter": "cave_entrance"}, + {"coord": [8, 19], "enter": "cave_entrance", "to_map": "RockTunnel_1F", "to_point": "warp_0"}, + {"coord": [8, 57], "enter": "cave_entrance", "to_map": "RockTunnel_1F", "to_point": "warp_5"}, {"coord": [7, 40], "enter": "cave_entrance"}, {"coord": [13, 20], "enter": "walk_into", "to_map": "Route10_PokemonCenter_1F", "to_point": "warp_1"}, {"coord": [2, 37], "enter": "walk_east"} ], "flag_sets": {}, - "connections": [{"side": "west", "to_map": "Route9", "offset": 0}], + "connections": [{"side": "south", "to_map": "LavenderTown", "offset": 0}, {"side": "west", "to_map": "Route9", "offset": 0}], "npcs": [ {"name": "picnicker", "coord": [7, 60], "trainer": {"sight": 2, "looks": ["north", "east", "south", "west"]}}, {"name": "hiker", "coord": [4, 62], "trainer": {"sight": 1, "looks": ["north", "east", "south", "west"]}}, diff --git a/data/games/frlg/maps/source-candidate/MtMoon_1F.json b/data/games/frlg/maps/source-candidate/MtMoon_1F.json index 4c7bcc5..4c066e7 100644 --- a/data/games/frlg/maps/source-candidate/MtMoon_1F.json +++ b/data/games/frlg/maps/source-candidate/MtMoon_1F.json @@ -12,7 +12,7 @@ "events": "data/maps/MtMoon_1F/map.json", "events_sha256": "312b2de23d9942d3326da9fe9597b25ef7c3537bcedfcafa7922d5c8b8e8d8fc", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/MtMoon_B2F.json b/data/games/frlg/maps/source-candidate/MtMoon_B2F.json index 0bcb877..4cc0f05 100644 --- a/data/games/frlg/maps/source-candidate/MtMoon_B2F.json +++ b/data/games/frlg/maps/source-candidate/MtMoon_B2F.json @@ -12,7 +12,7 @@ "events": "data/maps/MtMoon_B2F/map.json", "events_sha256": "451a05df92c5df570c121affa75c846996d3561c12e7e5d67d91814482a37ff3", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/PalletTown_ProfessorOaksLab.json b/data/games/frlg/maps/source-candidate/PalletTown_ProfessorOaksLab.json index 81d1750..66b383d 100644 --- a/data/games/frlg/maps/source-candidate/PalletTown_ProfessorOaksLab.json +++ b/data/games/frlg/maps/source-candidate/PalletTown_ProfessorOaksLab.json @@ -12,7 +12,7 @@ "events": "data/maps/PalletTown_ProfessorOaksLab/map.json", "events_sha256": "37906ed851a344cc63b41b303b41b6da091328b97b05b6e38d2570486d104704", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/README.md b/data/games/frlg/maps/source-candidate/README.md index 60fd655..0a2d5fe 100644 --- a/data/games/frlg/maps/source-candidate/README.md +++ b/data/games/frlg/maps/source-candidate/README.md @@ -68,8 +68,8 @@ excluded destinations remain explicit boundaries. Current unresolved support: |---|---:| | Cells with unsupported non-collision behavior | 0 | | Dynamic warp destinations | 0 | -| Pickups without a pinned identity catalog entry | 84 | -| Identified fixed pickups | 22 | +| Pickups without a pinned identity catalog entry | 79 | +| Identified fixed pickups | 27 | | Known late-story geometry patch left unapplied | 1 | All metatile behaviors encountered in the 140 candidate maps are resolved into diff --git a/data/games/frlg/maps/source-candidate/RockTunnel_1F.json b/data/games/frlg/maps/source-candidate/RockTunnel_1F.json index ca3a340..7c74ab9 100644 --- a/data/games/frlg/maps/source-candidate/RockTunnel_1F.json +++ b/data/games/frlg/maps/source-candidate/RockTunnel_1F.json @@ -6,6 +6,18 @@ "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", "date": "2026-10-31", "generation_status": "unreviewed-full-catalog-candidate", + "item_identities": { + "repository": "pret/pokefirered", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "events": "data/maps/RockTunnel_1F/map.json", + "events_sha256": "bf89c9e78f7373691783428c0143b6ecaa52be67edf508859ec175c79701a468", + "catalog": "data/maps/item-identities.json", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", + "source_game": "firered", + "target_game": "frlg", + "target_game_relation": "native_decomp", + "verification": "FRLG source-derived; collection not observed" + }, "elevation_omitted": "all walkable tiles are ground level (3); non-ground levels appear only on unwalkable walls/obstacles" }, "tiles": [ @@ -133,7 +145,7 @@ "source_event": 7, "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_REPEL", "source_script": "RockTunnel_1F_EventScript_ItemRepel", - "pickup": {"status": "unresolved", "reason": "no pinned identity catalog for this map"} + "item": "repel" }, { "name": "item_ball", @@ -141,7 +153,7 @@ "source_event": 8, "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_PEARL", "source_script": "RockTunnel_1F_EventScript_ItemPearl", - "pickup": {"status": "unresolved", "reason": "no pinned identity catalog for this map"} + "item": "pearl" }, { "name": "item_ball", @@ -149,7 +161,7 @@ "source_event": 9, "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_ESCAPE_ROPE", "source_script": "RockTunnel_1F_EventScript_ItemEscapeRope", - "pickup": {"status": "unresolved", "reason": "no pinned identity catalog for this map"} + "item": "escape_rope" } ] } diff --git a/data/games/frlg/maps/source-candidate/RockTunnel_B1F.json b/data/games/frlg/maps/source-candidate/RockTunnel_B1F.json index b4b2ef3..1fabed9 100644 --- a/data/games/frlg/maps/source-candidate/RockTunnel_B1F.json +++ b/data/games/frlg/maps/source-candidate/RockTunnel_B1F.json @@ -6,6 +6,18 @@ "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", "date": "2026-10-31", "generation_status": "unreviewed-full-catalog-candidate", + "item_identities": { + "repository": "pret/pokefirered", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "events": "data/maps/RockTunnel_B1F/map.json", + "events_sha256": "668c7ede675ec83008984303faafef1d0b4d6ec5f11bcfb852e73a6280ad3cb8", + "catalog": "data/maps/item-identities.json", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", + "source_game": "firered", + "target_game": "frlg", + "target_game_relation": "native_decomp", + "verification": "FRLG source-derived; collection not observed" + }, "elevation_omitted": "all walkable tiles are ground level (3); non-ground levels appear only on unwalkable walls/obstacles" }, "tiles": [ @@ -242,7 +254,7 @@ "source_event": 9, "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_B1F_REVIVE", "source_script": "RockTunnel_B1F_EventScript_ItemRevive", - "pickup": {"status": "unresolved", "reason": "no pinned identity catalog for this map"} + "item": "revive" }, { "name": "item_ball", @@ -250,7 +262,7 @@ "source_event": 10, "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_B1F_MAX_ETHER", "source_script": "RockTunnel_B1F_EventScript_ItemMaxEther", - "pickup": {"status": "unresolved", "reason": "no pinned identity catalog for this map"} + "item": "max_ether" } ] } diff --git a/data/games/frlg/maps/source-candidate/Route2.json b/data/games/frlg/maps/source-candidate/Route2.json index 7f1d47c..f48378f 100644 --- a/data/games/frlg/maps/source-candidate/Route2.json +++ b/data/games/frlg/maps/source-candidate/Route2.json @@ -12,7 +12,7 @@ "events": "data/maps/Route2/map.json", "events_sha256": "2562e3736b600c95b8c0a4c2a1bb3fb062f5c50208bebc43cd4303328ccda7ea", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/Route24.json b/data/games/frlg/maps/source-candidate/Route24.json index 87c53be..3bf436a 100644 --- a/data/games/frlg/maps/source-candidate/Route24.json +++ b/data/games/frlg/maps/source-candidate/Route24.json @@ -12,7 +12,7 @@ "events": "data/maps/Route24/map.json", "events_sha256": "f844a16ec16a9aa725bcabf8862ec7b08be16b511f10664ef6e15f2448dd90a8", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/Route25.json b/data/games/frlg/maps/source-candidate/Route25.json index fc6a958..cfcb51c 100644 --- a/data/games/frlg/maps/source-candidate/Route25.json +++ b/data/games/frlg/maps/source-candidate/Route25.json @@ -12,7 +12,7 @@ "events": "data/maps/Route25/map.json", "events_sha256": "a4b412784121ae753cb88e5a1be6db1b5575e77946ba3c6b87aca8087b1dfcb6", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/Route4.json b/data/games/frlg/maps/source-candidate/Route4.json index 75dfb89..bf8d109 100644 --- a/data/games/frlg/maps/source-candidate/Route4.json +++ b/data/games/frlg/maps/source-candidate/Route4.json @@ -12,7 +12,7 @@ "events": "data/maps/Route4/map.json", "events_sha256": "5b0b84cb73ecc6597470d01d5933ca36d5e4410cdda53dddb72922689e5653ac", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/Route9.json b/data/games/frlg/maps/source-candidate/Route9.json index 9aa1f62..93cee61 100644 --- a/data/games/frlg/maps/source-candidate/Route9.json +++ b/data/games/frlg/maps/source-candidate/Route9.json @@ -12,7 +12,7 @@ "events": "data/maps/Route9/map.json", "events_sha256": "0a8b7cfd3028e15d59903f3f5dfc503f98712e5592d8d6a99a26cddc430d5270", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/ViridianCity.json b/data/games/frlg/maps/source-candidate/ViridianCity.json index 982f17d..7df364d 100644 --- a/data/games/frlg/maps/source-candidate/ViridianCity.json +++ b/data/games/frlg/maps/source-candidate/ViridianCity.json @@ -12,7 +12,7 @@ "events": "data/maps/ViridianCity/map.json", "events_sha256": "5ce922b65f76335556ace9a047feeb1968854b604c8469c39cbbd60985f61bc1", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/games/frlg/maps/source-candidate/ViridianForest.json b/data/games/frlg/maps/source-candidate/ViridianForest.json index 503a0a1..b87da61 100644 --- a/data/games/frlg/maps/source-candidate/ViridianForest.json +++ b/data/games/frlg/maps/source-candidate/ViridianForest.json @@ -12,7 +12,7 @@ "events": "data/maps/ViridianForest/map.json", "events_sha256": "6d6f082604d3c220eeb2c72cb6a606403330df44c58d9ed2523cd81c53fdaba2", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "firered", "target_game": "frlg", "target_game_relation": "native_decomp", diff --git a/data/maps/item-identities.json b/data/maps/item-identities.json index e415bce..e987587 100644 --- a/data/maps/item-identities.json +++ b/data/maps/item-identities.json @@ -1,6 +1,6 @@ { "format": "pokesim-item-identities/1", - "inputs_sha256": "db20fff8bb430f4fcce5f412bf1a1d3c9fb6cd2adf5a2637a75f34e638ccf8e0", + "inputs_sha256": "110fe3b33843211354252d411605477e88836115495776da7b28b4e05de5893a", "sources": { "frlg": { "repository": "pret/pokefirered", @@ -233,6 +233,57 @@ } ] }, + "RockTunnel_1F": { + "source": "frlg", + "events": "data/maps/RockTunnel_1F/map.json", + "events_sha256": "bf89c9e78f7373691783428c0143b6ecaa52be67edf508859ec175c79701a468", + "map_content_sha256": "5dc0423319af21a602127d89f19c69fb89902e405cb6eff967e9d95381c2f1ba", + "objects": [ + { + "coord": [37, 5], + "source_event": {"index": 7, "script": "RockTunnel_1F_EventScript_ItemRepel"}, + "item": "repel", + "quantity": 1, + "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_REPEL" + }, + { + "coord": [33, 22], + "source_event": {"index": 8, "script": "RockTunnel_1F_EventScript_ItemPearl"}, + "item": "pearl", + "quantity": 1, + "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_PEARL" + }, + { + "coord": [22, 22], + "source_event": {"index": 9, "script": "RockTunnel_1F_EventScript_ItemEscapeRope"}, + "item": "escape_rope", + "quantity": 1, + "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_1F_ESCAPE_ROPE" + } + ] + }, + "RockTunnel_B1F": { + "source": "frlg", + "events": "data/maps/RockTunnel_B1F/map.json", + "events_sha256": "668c7ede675ec83008984303faafef1d0b4d6ec5f11bcfb852e73a6280ad3cb8", + "map_content_sha256": "ef2463fd73d0fd4c6d35f2663f5e01f454944c9e5764512e798e7503aa481eee", + "objects": [ + { + "coord": [2, 37], + "source_event": {"index": 9, "script": "RockTunnel_B1F_EventScript_ItemRevive"}, + "item": "revive", + "quantity": 1, + "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_B1F_REVIVE" + }, + { + "coord": [9, 2], + "source_event": {"index": 10, "script": "RockTunnel_B1F_EventScript_ItemMaxEther"}, + "item": "max_ether", + "quantity": 1, + "hide_flag": "FLAG_HIDE_ROCK_TUNNEL_B1F_MAX_ETHER" + } + ] + }, "Route2": { "source": "frlg", "events": "data/maps/Route2/map.json", diff --git a/data/maps/item-source-inputs.json b/data/maps/item-source-inputs.json index c571b99..529e44e 100644 --- a/data/maps/item-source-inputs.json +++ b/data/maps/item-source-inputs.json @@ -42,6 +42,14 @@ "sha256": "ed6e02fdd179af05159f27288ef9b5226ce7917c03ae54e8fb8d83c853fc311d", "git_blob": "90adf867df540efc42b5ef98307a882b8aa97987" }, + "data/maps/RockTunnel_1F/map.json": { + "sha256": "bf89c9e78f7373691783428c0143b6ecaa52be67edf508859ec175c79701a468", + "git_blob": "02fa844fb6799bf2fb84afc1ecdad944918e64e3" + }, + "data/maps/RockTunnel_B1F/map.json": { + "sha256": "668c7ede675ec83008984303faafef1d0b4d6ec5f11bcfb852e73a6280ad3cb8", + "git_blob": "7aafaf7c3acf639833c485b62025de2a573295b1" + }, "data/maps/Route2/map.json": { "sha256": "2562e3736b600c95b8c0a4c2a1bb3fb062f5c50208bebc43cd4303328ccda7ea", "git_blob": "3f232d8d16b4a96ec74b41a28a0ec401c38a2ba8" @@ -201,6 +209,20 @@ "scripts": "data/maps/PalletTown_ProfessorOaksLab/scripts.inc", "map_content_sha256": "c4b210832ce2667e372a9c319b5df8fac83c384954dc4b463e4b7bbec31717b3" }, + "RockTunnel_1F": { + "source": "frlg", + "events": "data/maps/RockTunnel_1F/map.json", + "origin": [0, 0], + "locations": [{"coord": [37, 5]}, {"coord": [33, 22]}, {"coord": [22, 22]}], + "map_content_sha256": "5dc0423319af21a602127d89f19c69fb89902e405cb6eff967e9d95381c2f1ba" + }, + "RockTunnel_B1F": { + "source": "frlg", + "events": "data/maps/RockTunnel_B1F/map.json", + "origin": [0, 0], + "locations": [{"coord": [2, 37]}, {"coord": [9, 2]}], + "map_content_sha256": "ef2463fd73d0fd4c6d35f2663f5e01f454944c9e5764512e798e7503aa481eee" + }, "Route2": { "source": "frlg", "events": "data/maps/Route2/map.json", diff --git a/data/maps/runtime-manifest.json b/data/maps/runtime-manifest.json index 6fd08f0..7e1660b 100644 --- a/data/maps/runtime-manifest.json +++ b/data/maps/runtime-manifest.json @@ -276,6 +276,66 @@ }, "preconditions": [] }, + { + "name": "LavenderTown", + "file": "data/games/frlg/maps/runtime/LavenderTown.json", + "sha256": "bdbce59fea59953b524c51a0a7791efb0e2a70339a911ef737e1753241e94d1a", + "upstream_path": "SerialPrograms/Source/VideoGames/PokemonFRLG/Overworld/Maps/LavenderTown.json", + "source": { + "decomp_file": "data/maps/LavenderTown/map.json", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "date": "2026-10-31" + }, + "target_game": "frlg", + "source_game": "firered", + "source_revision_resolved": true, + "verification": "decomp-only", + "coordinate_frame": { + "kind": "local tiles", + "origin": [ + 0, + 0 + ], + "width": 24, + "height": 20, + "origin_space": "map layout" + }, + "terrain_corrections": [], + "generation_overrides": { + "opened_tiles": [] + }, + "preconditions": [] + }, + { + "name": "LavenderTown_PokemonCenter_1F", + "file": "data/games/frlg/maps/runtime/LavenderTown_PokemonCenter_1F.json", + "sha256": "e8309c90cf3eae37a2a9ae3a5ea1a8a056939bde9118ad7061bd616d52a0e814", + "upstream_path": "SerialPrograms/Source/VideoGames/PokemonFRLG/Overworld/Maps/LavenderTown_PokemonCenter_1F.json", + "source": { + "decomp_file": "data/maps/LavenderTown_PokemonCenter_1F/map.json", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "date": "2026-10-31" + }, + "target_game": "frlg", + "source_game": "firered", + "source_revision_resolved": true, + "verification": "decomp-only", + "coordinate_frame": { + "kind": "local tiles", + "origin": [ + 0, + 0 + ], + "width": 15, + "height": 10, + "origin_space": "map layout" + }, + "terrain_corrections": [], + "generation_overrides": { + "opened_tiles": [] + }, + "preconditions": [] + }, { "name": "MtMoon_1F", "file": "data/games/frlg/maps/runtime/MtMoon_1F.json", @@ -666,6 +726,66 @@ }, "preconditions": [] }, + { + "name": "RockTunnel_1F", + "file": "data/games/frlg/maps/runtime/RockTunnel_1F.json", + "sha256": "2e8f70c287a3486552cf28f1c328a47b2ce8b0ca7e2e000a58a46bef73358bd0", + "upstream_path": "SerialPrograms/Source/VideoGames/PokemonFRLG/Overworld/Maps/RockTunnel_1F.json", + "source": { + "decomp_file": "data/maps/RockTunnel_1F/map.json", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "date": "2026-10-31" + }, + "target_game": "frlg", + "source_game": "firered", + "source_revision_resolved": true, + "verification": "decomp-only", + "coordinate_frame": { + "kind": "local tiles", + "origin": [ + 0, + 0 + ], + "width": 48, + "height": 40, + "origin_space": "map layout" + }, + "terrain_corrections": [], + "generation_overrides": { + "opened_tiles": [] + }, + "preconditions": [] + }, + { + "name": "RockTunnel_B1F", + "file": "data/games/frlg/maps/runtime/RockTunnel_B1F.json", + "sha256": "8a5fee4e817d4b7e03667e44896547e8dcc70e536c18857af23adba071ed5b10", + "upstream_path": "SerialPrograms/Source/VideoGames/PokemonFRLG/Overworld/Maps/RockTunnel_B1F.json", + "source": { + "decomp_file": "data/maps/RockTunnel_B1F/map.json", + "revision": "ce6406d8c2eaf46d543c8a2606de0c3cb1951982", + "date": "2026-10-31" + }, + "target_game": "frlg", + "source_game": "firered", + "source_revision_resolved": true, + "verification": "decomp-only", + "coordinate_frame": { + "kind": "local tiles", + "origin": [ + 0, + 0 + ], + "width": 48, + "height": 40, + "origin_space": "map layout" + }, + "terrain_corrections": [], + "generation_overrides": { + "opened_tiles": [] + }, + "preconditions": [] + }, { "name": "Route1", "file": "data/games/frlg/maps/runtime/Route1.json", @@ -699,7 +819,7 @@ { "name": "Route10", "file": "data/games/frlg/maps/runtime/Route10.json", - "sha256": "b5bad3c6b83ec7c14e0541fef756516aba27059baee42901a2988f3ac12002d8", + "sha256": "8acf0083caf04fe1b0078e8bb400a5221b4fcbc76bf28422aca2f49cf54b3ba1", "upstream_path": "SerialPrograms/Source/VideoGames/PokemonFRLG/Overworld/Maps/Route10.json", "source": { "decomp_file": "data/maps/Route10/map.json", @@ -1958,7 +2078,7 @@ { "name": "OreburghMine", "file": "data/games/bdsp/maps/runtime/OreburghMine.json", - "sha256": "21319ba1d8507ae7a91fe2ad2d59f99df162dfb19f5ca9bcd4c30afc27f08560", + "sha256": "7e663fa1f5d4b43e663dfe957ed2ef07fb96724ac34701841cba6596cc850f66", "upstream_path": "SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/OreburghMine.json", "source": { "decomp_file": "pret/pokediamond: files/fielddata/land_data/land_data_release/narc_0314.bin; zone_event narc_0197", @@ -1970,7 +2090,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0197.bin", "events_sha256": "517473fcecb3bd0f0aea6d3db18d81bb5f13bbb6082d859198cca6554dffb977", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", @@ -2019,7 +2139,7 @@ { "name": "OreburghMineB1F", "file": "data/games/bdsp/maps/runtime/OreburghMineB1F.json", - "sha256": "f136c91897bc100e3cfc2098f53ab1c44544a4cdd93114f1d1a08832fe21060b", + "sha256": "6092e5b318d85437e16b51d91cc5ed497eea4867d0d9868e25a30c60eff092d6", "upstream_path": "SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/OreburghMineB1F.json", "source": { "decomp_file": "pret/pokediamond: files/fielddata/land_data/land_data_release/narc_0313.bin; zone_event narc_0196", @@ -2031,7 +2151,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0196.bin", "events_sha256": "fec75b45d815d678eff659c06b6f6ec9c531a724f1f3a2d25e16c3d586248f70", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", @@ -2189,7 +2309,7 @@ { "name": "RavagedPath", "file": "data/games/bdsp/maps/runtime/RavagedPath.json", - "sha256": "363def1d70a2e8448f0c284cb5354b91e2f1d1ad923769499520ab5f26f60a72", + "sha256": "318fa667c7993012a8150294059d9f9dd6b65eb9fa1a993c4b70731d6ca71a64", "upstream_path": "SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/RavagedPath.json", "source": { "decomp_file": "pret/pokeplatinum: res/field/maps/data/map_data_435.bin, res/field/maps/data/map_data_436.bin; events_ravaged_path.json", @@ -2201,7 +2321,7 @@ "events": "res/field/events/events_ravaged_path.json", "events_sha256": "0be81f9bc68472f19067a9df969b2c6d3e1a54e0779b934657daa0a0a3fbe7ff", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "platinum", "target_game": "bdsp", "target_game_relation": "remake_baseline", @@ -2405,7 +2525,7 @@ { "name": "Route202", "file": "data/games/bdsp/maps/runtime/Route202.json", - "sha256": "28341c7d8066f0906e6999cdfc9e3cb35898df9ea163268127e75d7753651903", + "sha256": "7b525532ca65e30a573d05fbeed0c70ca12507b00180d4569464f363562ab4c8", "upstream_path": "SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/Route202.json", "source": { "decomp_file": "pret/pokediamond: files/fielddata/land_data/land_data_release/narc_0014.bin, files/fielddata/land_data/land_data_release/narc_0173.bin; zone_event narc_0328", @@ -2417,7 +2537,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0328.bin", "events_sha256": "17c0c1616d0cb8d4acbfd50e9ece28b7e4243ed1b527d5d1832956c508ca5c88", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", @@ -2532,7 +2652,7 @@ { "name": "Route203", "file": "data/games/bdsp/maps/runtime/Route203.json", - "sha256": "a1c025a367daeb5f9ed4a728eb039ad5cc0f76ea5a90ed8289af93c32ce3fa54", + "sha256": "a8dc1954695475a9ee4b6b98da0541ab7fc0ce52dca1ffba278b59e12af517ad", "upstream_path": "SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/Route203.json", "source": { "decomp_file": "pret/pokediamond: files/fielddata/land_data/land_data_release/narc_0016.bin, files/fielddata/land_data/land_data_release/narc_0019.bin, files/fielddata/land_data/land_data_release/narc_0020.bin; zone_event narc_0329", @@ -2544,7 +2664,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0329.bin", "events_sha256": "a5538e7025f82793f546381e76af7037daadad62b3ae2aed817aecb1578389aa", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", @@ -2590,7 +2710,7 @@ { "name": "Route204North", "file": "data/games/bdsp/maps/runtime/Route204North.json", - "sha256": "0100bf6779a875b2ba89830492fe6755a90179f7c8ec780bacaa164fb5fc2d51", + "sha256": "b0d25e8378b9e226f55ce4d55212a138789eb9f29b4e41f0a612c5cadb413b56", "upstream_path": "SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/Route204North.json", "source": { "decomp_file": "pret/pokediamond: files/fielddata/land_data/land_data_release/narc_0031.bin; zone_event narc_0331", @@ -2602,7 +2722,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0331.bin", "events_sha256": "dc1454d9e10692dbb38660f260eb7eedfebd43d24c3d634460cf3e2428f655e0", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", @@ -2652,7 +2772,7 @@ { "name": "Route204South", "file": "data/games/bdsp/maps/runtime/Route204South.json", - "sha256": "4760126039a763ad61953da2a551c66534383b221103f2a3534646100089e180", + "sha256": "efcce47dd6f4a3400709419a210cd18f48466d5a98b650f179264a29813a804d", "upstream_path": "SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/Route204South.json", "source": { "decomp_file": "pret/pokediamond: files/fielddata/land_data/land_data_release/narc_0021.bin; zone_event narc_0330", @@ -2664,7 +2784,7 @@ "events": "files/fielddata/eventdata/zone_event_release/narc_0330.bin", "events_sha256": "57419b5fe791d60db542d30d18f9541258ba45c32a0a8b8165881fe000a126d0", "catalog": "data/maps/item-identities.json", - "catalog_sha256": "97b4ec9c9cc4fc999274e583d97be7dc3ef310887726208c92c51eda417b07be", + "catalog_sha256": "1d94d0ca7cc3ec2aa17274c9c279afbacf1d9cab3e2d25f5cad638cf3d4c09b8", "source_game": "diamond", "target_game": "bdsp", "target_game_relation": "remake_baseline", diff --git a/data/maps/v2-value-baseline.json b/data/maps/v2-value-baseline.json index 1e1d146..db2d380 100644 --- a/data/maps/v2-value-baseline.json +++ b/data/maps/v2-value-baseline.json @@ -13,6 +13,8 @@ "CeruleanCity_House2": "b817996b4c83f33c498fc20fdda16f8e16c0765b1cc6fdb83e5db63ab35f13f1", "CeruleanCity_Mart": "a9ea1338506f84152b5242af188ac3307e1c07d672ecc86f1e009c84e1052ecf", "CeruleanCity_PokemonCenter_1F": "a8539c772ac3775f17bf2489eb62b1dc7f7b38f13ed2615c3a1ab25ec7ba755c", + "LavenderTown": "3e2e5d68b1f62018527120035496aefec0b5ac71a20c8628248994dde08812de", + "LavenderTown_PokemonCenter_1F": "a56b9769c97ae3eef60d1cc6a9335b1635dd2ce073a5765a634d7f31f66a695e", "MtMoon_1F": "874a6c1c69ac67827d4f3462c9b46cc755950707bef157182510cca5476a54bd", "MtMoon_B1F": "e1628993d1b17d45462cfa6792108ba3de057899db2f7e84fe7be628140c5b8d", "MtMoon_B2F": "80c5dc46f3bc7ce2ea399f99f8a2f1f198621caae00fb7a4b206b7a77c663ca9", @@ -26,6 +28,8 @@ "PewterCity_Mart": "6560b554345a7d153e0b64258a3520ecd25fcd88364c150f4d4e19096ed220fd", "PewterCity_Museum_1F": "912fafffb405a2f2dc26be847290da492ae6620c695c80e9ef995cc857e41066", "PewterCity_PokemonCenter_1F": "7c92472c99e5f5d15f57bc599ba034a0a5ebd1aa6e853f1c70112370d8c30af5", + "RockTunnel_1F": "5dc0423319af21a602127d89f19c69fb89902e405cb6eff967e9d95381c2f1ba", + "RockTunnel_B1F": "ef2463fd73d0fd4c6d35f2663f5e01f454944c9e5764512e798e7503aa481eee", "Route1": "ecd75903beb2cb631dab5adf70218414f46ea5b9c2fb0a47a86d1eeec398799b", "Route10": "218c2d6b948c4d6166064225510696365195e7a69362a6e8a917287079caa4ba", "Route10_PokemonCenter_1F": "111b88ecd551efdb06accb5c97c2729da22c0a846e964df845ecfc4fd818210e", diff --git a/src/pokesim/maps/goldens/bdsp-route202-story.json b/src/pokesim/maps/goldens/bdsp-route202-story.json index f818047..41e0fde 100644 --- a/src/pokesim/maps/goldens/bdsp-route202-story.json +++ b/src/pokesim/maps/goldens/bdsp-route202-story.json @@ -2,7 +2,7 @@ "format": "pokesim-route-golden/1", "game": "bdsp", "map": "Route202", - "map_sha256": "28341c7d8066f0906e6999cdfc9e3cb35898df9ea163268127e75d7753651903", + "map_sha256": "7b525532ca65e30a573d05fbeed0c70ca12507b00180d4569464f363562ab4c8", "coordinate_frame": { "kind": "local tiles", "origin": [ diff --git a/src/pokesim/maps/test_frlg_import_audit.py b/src/pokesim/maps/test_frlg_import_audit.py index 62d10b2..66e7ae3 100644 --- a/src/pokesim/maps/test_frlg_import_audit.py +++ b/src/pokesim/maps/test_frlg_import_audit.py @@ -25,7 +25,7 @@ def test_checked_full_catalog_has_fixed_links_and_visible_gaps(self): self.assertEqual(report['totals']['scope_boundary_warps'], 103) self.assertEqual(report['totals']['scope_boundary_connections'], 2) self.assertEqual(report['totals']['unknown_tiles'], 0) - self.assertEqual(report['totals']['unresolved_pickups'], 84) + self.assertEqual(report['totals']['unresolved_pickups'], 79) self.assertEqual(report['totals']['unapplied_story_patches'], 1) self.assertEqual(report['elevation_grids_retained'], 14) self.assertEqual(report['elevation_grids_omitted'], 126) diff --git a/src/pokesim/maps/test_item_identity.py b/src/pokesim/maps/test_item_identity.py index 394cff6..74db63b 100644 --- a/src/pokesim/maps/test_item_identity.py +++ b/src/pokesim/maps/test_item_identity.py @@ -40,7 +40,7 @@ def test_catalog_pin_digest_and_all_existing_item_ball_records(self): if record['kind'] == 'item': self.assertIs(type(record['source_event']), int) self.assertIn('hide_flag', record) - self.assertEqual(counts, {'frlg': [30, 3], 'bdsp': [15, 0]}) + self.assertEqual(counts, {'frlg': [35, 3], 'bdsp': [15, 0]}) def test_mine_escape_rope_and_potion_have_real_identities_and_collection_flags(self): data = identity.enrich_map(load(ROOT / 'data/games/bdsp/maps/runtime/OreburghMine.json'), 'bdsp') diff --git a/src/pokesim/maps/test_runtime_map_pack.py b/src/pokesim/maps/test_runtime_map_pack.py index 7166a1a..b6a0dfb 100644 --- a/src/pokesim/maps/test_runtime_map_pack.py +++ b/src/pokesim/maps/test_runtime_map_pack.py @@ -15,7 +15,7 @@ class PackTest(unittest.TestCase): def test_inventory_checksums_geometry_and_graph(self): manifest = pack.audit() self.assertEqual({game: len(data['maps']) for game, data in manifest['games'].items()}, - {'frlg': 53, 'bdsp': 22}) + {'frlg': 57, 'bdsp': 22}) for game, data in manifest['games'].items(): for entry in data['maps']: raw = pack.load(pack.ROOT / entry['file']) diff --git a/src/pokesim/maps/test_runtime_map_publication.py b/src/pokesim/maps/test_runtime_map_publication.py index f6d99a2..93e5e13 100644 --- a/src/pokesim/maps/test_runtime_map_publication.py +++ b/src/pokesim/maps/test_runtime_map_publication.py @@ -33,6 +33,28 @@ def undo_corrections(game, data): npc['x'], npc['y'] = before +# Links to maps published after the v1 baseline, as {(game, map): (points, +# warp destinations by tile, connections)}. The v1 pack left these out because +# their destinations weren't in it; the generator writes them once they are. +# They are removed before digesting so every other value still matches v1. +# Route 10's Rock Tunnel entrances and its south edge to Lavender Town. +ADDED_LINKS = { + ('frlg', 'Route10'): (['warp_0', 'warp_1'], [(8, 19), (8, 57)], ['LavenderTown']), +} + + +def undo_added_links(game, data): + if (game, data['name']) not in ADDED_LINKS: + return + points, warps, connections = ADDED_LINKS[(game, data['name'])] + for name in points: + del data['points'][name] + for warp in data['warps']: + if (warp['x'], warp['y']) in warps: + del warp['to_map'], warp['to_point'] + data['connections'] = [c for c in data['connections'] if c['to_map'] not in connections] + + def current_world(game, names, context): return RuntimeWorld([LocalMap(json.loads((ROOT / 'data/games' / game / 'maps/runtime' / (name + '.json')).read_text()), game, @@ -65,11 +87,12 @@ def test_all_published_values_match_reviewed_v1_baseline_and_stable_formatter(se for field in ('item', 'quantity', 'source_event', 'hide_flag'): item.pop(field, None) undo_corrections(game, baseline_data) + undo_added_links(game, baseline_data) digest = hashlib.sha256(json.dumps(compact_map(baseline_data), sort_keys=True).encode()).hexdigest() self.assertEqual(digest, baseline['games'][game][entry['name']]) self.assertEqual(raw, map_text(data)) count += 1 - self.assertEqual(count, 75) + self.assertEqual(count, 79) def test_current_pack_matches_shared_transition_expectations(self): for case in read_pack()['cases']: