From 026a64b70065fd3452227d0109e9515d79610e8f Mon Sep 17 00:00:00 2001 From: theAstrogoth Date: Tue, 1 Sep 2026 17:20:44 -0500 Subject: [PATCH] FRLG Roamer RNG fix for Spanish --- .../RngManipulation/PokemonFRLG_BlindNavigation.cpp | 8 ++++++-- .../RngManipulation/PokemonFRLG_BlindNavigation.h | 3 ++- .../Programs/RngManipulation/PokemonFRLG_EggRng.cpp | 2 +- .../Programs/RngManipulation/PokemonFRLG_GiftRng.cpp | 2 +- .../Programs/RngManipulation/PokemonFRLG_HardReset.cpp | 5 +++-- .../Programs/RngManipulation/PokemonFRLG_HardReset.h | 1 + .../Programs/RngManipulation/PokemonFRLG_RngHelper.cpp | 3 ++- .../RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp | 2 +- .../Programs/RngManipulation/PokemonFRLG_StarterRng.cpp | 3 ++- .../Programs/RngManipulation/PokemonFRLG_StaticRng.cpp | 2 +- .../Programs/RngManipulation/PokemonFRLG_WildRng.cpp | 2 +- 11 files changed, 21 insertions(+), 12 deletions(-) diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.cpp index 140d3167bc..8356a3fb8e 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.cpp @@ -408,7 +408,7 @@ void walk_to_safarizonewest(ProControllerContext& context){ // total duration: 52930ms } -void activate_roamer(ProControllerContext& context, const uint64_t& ingame_delay){ +void activate_roamer(ProControllerContext& context, const Language& language, const uint64_t& ingame_delay){ // a lot of dialogue while Celio inserts the Sapphire pbf_press_button(context, BUTTON_A, 200ms, 5300ms); pbf_press_button(context, BUTTON_A, 200ms, 1300ms); @@ -419,6 +419,9 @@ void activate_roamer(ProControllerContext& context, const uint64_t& ingame_delay pbf_press_button(context, BUTTON_A, 200ms, 5300ms); pbf_press_button(context, BUTTON_A, 200ms, 1300ms); pbf_press_button(context, BUTTON_A, 200ms, 1300ms); + if (language == Language::Spanish){ // "de HOENN!" gets pushed to a new line + pbf_press_button(context, BUTTON_A, 200ms, 1300ms); + } pbf_press_button(context, BUTTON_A, 200ms, 1300ms); pbf_press_button(context, BUTTON_A, 200ms, 1300ms); pbf_press_button(context, BUTTON_A, 200ms, std::chrono::milliseconds(ingame_delay - 26700)); //5500ms + 4*1500ms + 3500ms + 5500ms + 4*1500ms + 200 @@ -721,6 +724,7 @@ void check_timings( void perform_blind_sequence( ProControllerContext& context, + const Language& language, PokemonFRLG_RngTarget target, const SeedButton& seed_button, const BlackoutButton& extra_button, @@ -854,7 +858,7 @@ void perform_blind_sequence( case PokemonFRLG_RngTarget::entei: case PokemonFRLG_RngTarget::suicune: case PokemonFRLG_RngTarget::roaming: - activate_roamer(context, timings.ingame_delay); + activate_roamer(context, language, timings.ingame_delay); } } diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.h b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.h index 7383ef9e76..64819469d2 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.h +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.h @@ -100,7 +100,8 @@ namespace PokemonFRLG{ // performs the blind sequence between launching the game and arriving at the RNG manipulation target void perform_blind_sequence( - ProControllerContext& context, + ProControllerContext& context, + const Language& language, PokemonFRLG_RngTarget target, const SeedButton& seed_button, const BlackoutButton& extra_button, diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_EggRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_EggRng.cpp index c9113ca6e5..12740c8ac0 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_EggRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_EggRng.cpp @@ -379,7 +379,7 @@ bool EggRng::reset_and_check_seed( // Step 1: reset and perform blind sequence env.log("Resetting Game..."); reset_and_perform_blind_sequence( - env.console, context, target, + env.console, context, LANGUAGE, target, SEED_BUTTON, EXTRA_BUTTON, timings, launch_delay, false, PROFILE ); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_GiftRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_GiftRng.cpp index 8875fd14bc..6c6fb4e54e 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_GiftRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_GiftRng.cpp @@ -415,7 +415,7 @@ void GiftRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& env.log("Resetting Game..."); reset_and_perform_blind_sequence( - env.console, context, TARGET, + env.console, context, LANGUAGE, TARGET, SEED_BUTTON, EXTRA_BUTTON, timings, launch_delay, false, PROFILE ); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_HardReset.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_HardReset.cpp index 591dd2d743..83418a603c 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_HardReset.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_HardReset.cpp @@ -189,6 +189,7 @@ void rng_reset_and_return_home( void reset_and_perform_blind_sequence( ConsoleHandle& console, ProControllerContext& context, + const Language& language, PokemonFRLG_RngTarget target, const SeedButton& seed_button, const BlackoutButton& extra_button, @@ -218,8 +219,8 @@ void reset_and_perform_blind_sequence( context.wait_for_all_requests(); int ret = run_until( console, context, - [target, seed_button, extra_button, timings, safari_zone, console_type](ProControllerContext& context) { - perform_blind_sequence(context, target, seed_button, extra_button, timings, safari_zone, console_type); + [language, target, seed_button, extra_button, timings, safari_zone, console_type](ProControllerContext& context) { + perform_blind_sequence(context, language, target, seed_button, extra_button, timings, safari_zone, console_type); }, { update_detector, user_selection_detector }, 5000ms diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_HardReset.h b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_HardReset.h index 76a411c4ca..cf07c91e8c 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_HardReset.h +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_HardReset.h @@ -20,6 +20,7 @@ static const Milliseconds INITIAL_LAUNCH_DELAY = 950ms; void reset_and_perform_blind_sequence( ConsoleHandle& console, ProControllerContext& context, + const Language& language, PokemonFRLG_RngTarget target, const SeedButton& seed_button, const BlackoutButton& extra_button, diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngHelper.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngHelper.cpp index fbc5cf0cb8..c4503a1f5e 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngHelper.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngHelper.cpp @@ -295,7 +295,8 @@ void RngHelper::program(SingleSwitchProgramEnvironment& env, ProControllerContex // handle the blind part reset_and_perform_blind_sequence( - env.console, context, TARGET, + env.console, context, + LANGUAGE, TARGET, SEED_BUTTON, EXTRA_BUTTON, timings, launch_delay, SAFARI_ZONE, PROFILE diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp index 073cb570a7..09bb6e03d6 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp @@ -352,7 +352,7 @@ void RoamingLegendaryRng::program(SingleSwitchProgramEnvironment& env, ProContro env.log("Resetting Game..."); reset_and_perform_blind_sequence( - env.console, context, TARGET, + env.console, context, LANGUAGE, TARGET, SEED_BUTTON, EXTRA_BUTTON, timings, launch_delay, false, PROFILE ); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StarterRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StarterRng.cpp index 309daabc5c..9eaa4c1731 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StarterRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StarterRng.cpp @@ -678,7 +678,8 @@ void StarterRng::program(SingleSwitchProgramEnvironment& env, ProControllerConte env.log("Resetting Game..."); reset_and_perform_blind_sequence( - env.console, context, PokemonFRLG_RngTarget::starters, + env.console, context, + LANGUAGE, PokemonFRLG_RngTarget::starters, SEED_BUTTON, EXTRA_BUTTON, timings, launch_delay, false, PROFILE ); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StaticRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StaticRng.cpp index 2a5d3d01d3..f6c48a0fc4 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StaticRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StaticRng.cpp @@ -388,7 +388,7 @@ void StaticRng::program(SingleSwitchProgramEnvironment& env, ProControllerContex env.log("Resetting Game..."); reset_and_perform_blind_sequence( - env.console, context, TARGET, + env.console, context, LANGUAGE, TARGET, SEED_BUTTON, EXTRA_BUTTON, timings, launch_delay, false, PROFILE ); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_WildRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_WildRng.cpp index 2810c69b89..10cf5863ea 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_WildRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_WildRng.cpp @@ -460,7 +460,7 @@ void WildRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& env.log("Resetting Game..."); reset_and_perform_blind_sequence( - env.console, context, TARGET, + env.console, context, LANGUAGE, TARGET, SEED_BUTTON, EXTRA_BUTTON, timings, launch_delay, safari_zone, PROFILE );