Repository navigation
Conversation
…tory-v4 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
The screen readers the story's segments 00 and 01 use, in their own files, with the upstream detectors (DialogDetector, MenuDetector, BattleMenuDetector, SelectionArrow, GameNavigation) left as they are on main: - Adapted from PokemonAutomation#1717 by Developer-Butters, kept nearly as written: TransitionWatchers, ShopDetectors and the shop item name and price readers, BattleOpponentNameReader, the BDSP move and type data, the AutoStory OverworldDetector, MenuCursorDetector and OverworldMatchers. - BattleMenuReader: the battle command and move under the cursor, from PokemonAutomation#1717's additions to BattleMenuDetector, beside it rather than in it. - NameListDetector and SystemKeyboardDetector for the new-game intro; NameListDetector finds the menu arrows itself, as SelectionArrow.cpp keeps its finder out of its header. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
…teps The AutoStory program from a new game to Floaroma: its options and segment and checkpoint lists, and segments 00 and 01 as one table of the shared story steps (StoryTable), run by the console story executor. 00.04b to 00.04d walk planned routes on the story maps; the walker (Walk, RouteWalk), the Pokemon Center and the location reads are ours. Segments 02 and later are not carried. Adapted from PokemonAutomation#1717 by Developer-Butters, kept nearly as written: AutoStoryTools (stats, checkpoint save and save_game, the Bag search, Potion use, buy_items, open_menu, dialogue waits), Segment_00_tools and Segment_01_tools (the starter, the Starly battle, trainer and wild battles, settings check, grass walks, running from wild battles), Utils Battle, Dialog and Navigation, and the recorded stick holds of 00.01 to 00.05 (tutorial parts 1 to 4, the landmark alignment, the Poketch scene) in Segment_00. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
…'s units StorySimulation runs segments 00 and 01's table from 00.00 to Floaroma against a fake game, in English and in Japanese; StoryTables checks the table's rows; Indoors and the AutoStory tests cover the walker, the location reads, the Pokemon Center and the Sandgem and Jubilife events. Registered in PokemonBDSP_Tests, without PokemonAutomation#1717's Bag and MenuDetector screenshot tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
indoors(), add_wrapped_log() and the walker's tests now come from bdsp/walk-v4, so the copies here go. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
The walker no longer runs from wild battles itself: every walk and route call takes run_from_wild_battle(), escape_wild_battle() for a standard wild battle, from Segment_01_tools. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
… stats) into bdsp/autostory-v4 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
…autostory-v4 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E # Conflicts: # SerialPrograms/Source/PokemonBDSP/PokemonBDSP_Tests.cpp # SerialPrograms/cmake/SourceFiles.cmake
…the scripted parts The program, segments 00 and 01, rewritten as FRLG's AutoStory is: one table of checkpoints (00.00 to 01.11) on the shared story steps, run by the shared engine with the start and end dropdowns and AutoStoryStats. - 00.01 to 00.04 are planned walks on the JSON maps and the five interiors, stepping onto the decomp's scene triggers; they replace the recorded stick holds and the landmark alignment (OverworldMatchers), and have not run on a console yet. - 00.04b to 00.04d keep their rows; 00.05's Jubilife beats, measured on the console, are rows of walks to walls and named events. - Segment 01's walks are events split at their old steps, unchanged. - Actions, Bag, Mart, Center, Battle, WildBattle and Settings hold what the steps use of AutoStoryTools and the segment tools, which are gone, with BDSPData, BattleOpponentNameReader, Dialog and Navigation. Tests: the table lints and every variant names an event; the simulation runs 00.00 to Floaroma in English and Japanese, each start pose chained and every route planned; the intro and screenshot tests moved by topic. Adapted in part from PokemonAutomation#1717 by Developer-Butters. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
…dsp/autostory-v4 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
The table reads points and regions with map_point() and map_region(); the places file keeps only the story worlds a walk plans on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
The clerk's 5 Potions after two missed visits to the lady needed the shop detectors and item readers from PokemonAutomation#1717; the lady is the way the console runs took (r261). Drops the Mart, ShopDetectors, ShopItemNameReader and ShopItemPriceReader. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E # Conflicts: # SerialPrograms/cmake/SourceFiles.cmake
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
…story-v4 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
…_battle Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
# Conflicts: # SerialPrograms/cmake/SourceFiles.cmake
in_pokemon_center() read only the floor's warm yellow, so Jubilife's plaza (63 %, r79: a won tag battle called lost) and Sandgem's and Oreburgh's streets (30 to 35 %) passed. It now also needs indoors(). Checked offline on 635 lab frames (failure shots, route shots, r79's video): the two together pick out exactly the Center interiors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
# Conflicts: # SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/PlayerHouse1F.json # SerialPrograms/Source/PokemonBDSP/Programs/AutoStory/Maps/Route201.json
The Starly battle is a BATTLE step, variant "starter" (fight_starly(): no talk first, no Poke Balls, and the scene goes on either way), and the walk out of the lake after it a MASH scene that ends on the Lakefront's quiet overworld, instead of Butters' fixed 60 s of B. Stays named: starter_briefcase (B until an image match of the open briefcase) and choose_starter (the briefcase's cursor from the program's starter option): menus only BDSP has. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Rowan's Pokedex is a MASH scene ending at Rowan in the lab, through the fade into it. Butters' sequence pressed B through Dawn's and Rowan's lines and the nickname question, then A for the Pokedex; the scene's B answers the question No too, and closes an item's lines as it closed Barry's parcel in 00.04 (r45). Stays named: nothing in 00.03. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Barry's Town Map is a TALK west from beside him at the School's back wall (the walk there now says it ends facing him) and a MASH scene with A to "You obtained a Town Map!". The event's second try, north to the wall again when he did not answer, is not kept: the walk north already ends on the wall. Stays named: up_the_steps. It taps a tile west and two north from 00.05's save below Jubilife's steps, and that save's tile is not known (the map has only where the taps end, "up_the_steps", column 46 or 47 a few rows up), so the row has no start pose for a LEGS step to walk from. It needs the save's tile measured on the console, as a point on JubilifeCity's map. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
01.01 starts where 00.05c ends, (58, 22) on Jubilife's street east to Route 203, and is planned on the joined Route 203 and Jubilife: a route to (4, 18) on Route 203, a step east onto Barry's coord event (column 5, rows 17 to 20, VAR_ROUTE_203_RIVAL_STATE 0, Diamond's zone event narc_0329), then his battle, which leaves us on the trigger (assumed). Dropped with jubilife_center_to_street: its start from a save at the Jubilife Center's PC (two tiles south, three west, the nurse, then stick holds to the street). A save there no longer starts 01.01; the row's save is made on the street. Dropped with east_to_barry: its walk east row by row past walls, which the plan replaces. Stays named: nothing in 01.01. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
01.02 starts on Barry's trigger, where 01.01 ends, and is planned on Route 203's, the Gate's and Oreburgh's maps with the Diamond decomp's zone events (narc_0329, narc_0250, narc_0044): - a route east along Route 203 to the Gate's warp tile (55, 9), fighting the trainers who see us, then a tap east to the Gate's banner; - a route to (6, 22), a step onto the Hiker's coord event (7, 22), and a MASH scene for his HM Rock Smash and the Hidden Moves card after it (no dialogue box; the scene's B closes it, as the event's two B did); - a route east along row 22 to (27, 22), fighting Picnicker Diana and Camper Curtis, now on the Gate's trainer list with ranges that reach the row; a tap east to Oreburgh's banner; - a route to (9, 13), a step onto the coord event of the man at the entrance (10, 12..15), and a MASH scene for his walk to the Center and Barry's lines. Where it leaves us is not known, so the row ends there. Dropped: the met_hiker flag (the walk east meeting the Hiker on its way; the step onto his trigger is explicit now), and the walk east row by row past walls. Events_Route203.cpp had only these events and is gone. Stays named: nothing in 01.02. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
From all four of Barry's trigger rows at once the planner found no way east (StorySimulation's poses chain): walk south down the trigger's column to the cliff below row 20 first, as 01.08 does at its start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
In the grid sim (bdsp/sim, merged locally), the walk east along the Gate planned one leg to the wall on row 23, where both Curtis and Diana see it: Curtis was fought under Diana's name, and her stop on the walk on to the wall went unseen, so the route ended at (24, 23). Two routes now, to (20, 22) past Curtis's column and on to (27, 22) past Diana's. They come off the trainer list again: the grid sim does not know them beaten in 01.05, and they stopped its walk back west. The walker fights them as trainers the map lacks, one per route. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
01.03 starts where Oreburgh's welcome scene leaves us (now 01.02's end too) and is planned on Oreburgh's map and the mine's coal room (Diamond's zone events narc_0044 and narc_0197): - east to the fence below the Center and north, the one known tile to plan from; two taps west below the door; Barry in it (TALK, MASH); - a route down the door's column, round the Hiker's patch, to above the mine's warp tiles (44..48, 59) and a step onto them. The generator writes those tiles as doors (WARP_DOORS), so no plan stands on them; - the entrance hall, which has no map, on 19 counted taps each way and a step onto its warp row: no hold that a wild battle could end; - in the coal room (now a room world): down the corridor to the boulder, a route to below Roark, his talk and scene, a route back to the warp; - out below the mine's sign (to the wall), a route to the Center's doorstep (46, 21), and the heal. 01.04 now starts there, outside, and its out_of_the_center event is gone. TALK waits 8 s for a line, not 3: Roark's first comes after the camera zooms in on us (r98). Dropped: the nudges round the Center's door and below Roark (they made up for stick holds; taps are whole tiles), the Roark-gone check by A after his scene (the scene rule's quiet overworld ends it), and the walks until a transition. Stays named: 01.04's gym_until_roark_beaten. After a loss it walks back from the Center keeping the battles' experience, which a reload of the row's save would take away. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
01.11 starts at 01.10's end, (11, 29) facing north, and walks as the console did (r250a, r251a): 8 taps west along row 29 (LEGS), north until the old woman stops us (to_wall, anchored below her at (3, 26)), her talk; a tap west (LEGS, anchored below the old man at (2, 26), facing north, so the talk's turn only turns), his talk. Dropped: the event's tolerance of one uncounted tap west (7 of 8); LEGS wants all 8. Events_Route204.cpp keeps only 01.09's Rock Smash. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
00.05 starts from a save at (48, 62), below Jubilife's steps (45..47, 61) against the wall east of them, where 00.04d's Dawn scene now says it leaves us: the old event went "a tile west, then up the steps" from there, two taps north (2026-10-30). That tile is the event's numbers on the map, not a measured one (#134). up_the_steps is a LEGS step of the same taps, a tile west and two north, ending on (47, 60); the route to the Center plans from that one tile, not the steps' region (46..47, 58..60). Events_Jubilife.cpp keeps only 00.05b's wandering clowns. The Events header lists what stays named and why. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
The Center's door is the decomp's (47, 20), as Sandgem's and Jubilife's doors were where the console came out of them. The map's doorstep (46, 21) only says where 01.04's 20 taps to the Gym were counted from, so out of the Center we may be on either tile. Barry's talk and the heal are now from (47, 21), a tap west of the fence, not two. The heal still lines up on the lit doorway when north finds no door. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
…ubilife Two fixes for #173's CI (the BDSP simulation tests): - 01.03's taps through the entrance hall had no world to walk on ("no world holds OreburghMineB1F"). The hall gets its map from the Diamond decomp (narc_0313, zone event narc_0196; the Hiker hidden by his flag), with its way up (11..13, 1) as doors, and a room world. Down, we land on (12, 1); up, on (11, 21). - 00.04d's Dawn scene ended on Jubilife while the stairs step before it left the pose on Route 202, so the scene waited for a fade that never comes (the grid sim's "no fade ... map mismatch"; on the console it would have failed after 120 s). The stairs step now ends below Jubilife's steps, (48, 62). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
The stairs into Jubilife were a STEP whose variant names the event jubilife_stairs. Since the last commit gave it a pose after (below Jubilife's steps, so Dawn's scene waits for no fade), a walk check that holds STEPs to their pose after expected it on Jubilife (the grid sim, which stubs events: "into_jubilife: ended on Route 202"). It is an event like the others now (event(), GAME), run the same way by its variant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
dayfine
added a commit
that referenced
this pull request
Nov 3, 2026
#128 now has seg01's planned 01.05 to 01.10 (#175) and the shared steps (#173). Their executor changes go where this branch moved the walking steps: per-world trainers, the Twins as a pair (ConsoleStoryStepIO::fight), the "to_banner" tap (StoryStepIO::tap_to_banner), and the 8 s wait for an answer to a talk (StoryWalkSteps::talk). The story sim taps to the banner too, and walks a route on the joined world it plans on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
With the story run options' verify mode on, AutoStory runs the start checkpoint as verify_checkpoint() does. BDSP rows save at their start and never at their end, so the reset from HOME between runs loads the save the first run started from. A new game's intro has no save to reload and is refused. Not verified, the game is closed as after any failure. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on #148 (base
bdsp/actions-v4); the diff shows only this PR's change.BDSP AutoStory rewritten like FRLG's: one table of story steps from 00.00 to 01.11, run by #122's shared engine with its checkpoint dropdowns and stats, written in the shared story steps (ROUTE, LEGS, STEP, TALK, MASH, BATTLE, HEAL) instead of segment functions replaying recorded stick holds.
saves_in). The start save reads the save screen's place name and, if it is not that map, backs out unsaved and stops with FatalProgramException, so a run never saves over a good checkpoint from the wrong place (r76/r77 did).indoors()); Jubilife's yellow plaza read as a Center and a won battle was called lost (r79).Testing
saves_inexactly when it saves first, each row starts where the last ends, town routes take the short way), StorySimulation (the whole story in English and Japanese, every route planned), and Walk. Offline on BDSP AutoStory: grid simulation of walks and scenes for unit tests #167's grid simulation (throwaway merges, not part of this PR), every row from 00.04d to 01.11 ends on its table tiles.🤖 Generated with Claude Code
https://claude.ai/code/session_01AKYzhrMnPK61XHWEch4a6E