From d06e3a3ac401cda31f7d3ff2e35d9889fcab7fac Mon Sep 17 00:00:00 2001 From: theAstrogoth Date: Sun, 7 Jun 2026 20:59:45 -0500 Subject: [PATCH] tweaks ahead of egg program --- .../Source/Pokemon/Pokemon_AdvRng.cpp | 8 +- .../PokemonFRLG_BlindNavigation.cpp | 12 ++- .../RngManipulation/PokemonFRLG_GiftRng.cpp | 8 +- .../PokemonFRLG_RngCalibration.cpp | 80 +++++++++++-------- .../PokemonFRLG_RngCalibration.h | 26 +++--- .../PokemonFRLG_RngDisplays.cpp | 4 +- .../RngManipulation/PokemonFRLG_RngDisplays.h | 2 +- .../PokemonFRLG_RngNavigation.cpp | 12 +-- .../PokemonFRLG_RngNavigation.h | 3 +- .../PokemonFRLG_RoamingLegendaryRng.cpp | 8 +- .../RngManipulation/PokemonFRLG_SidHelper.cpp | 2 +- .../PokemonFRLG_StarterRng.cpp | 12 +-- .../RngManipulation/PokemonFRLG_StaticRng.cpp | 8 +- .../RngManipulation/PokemonFRLG_WildRng.cpp | 8 +- 14 files changed, 112 insertions(+), 81 deletions(-) diff --git a/SerialPrograms/Source/Pokemon/Pokemon_AdvRng.cpp b/SerialPrograms/Source/Pokemon/Pokemon_AdvRng.cpp index 826beb8bf7..6c2043a379 100644 --- a/SerialPrograms/Source/Pokemon/Pokemon_AdvRng.cpp +++ b/SerialPrograms/Source/Pokemon/Pokemon_AdvRng.cpp @@ -728,7 +728,7 @@ void AdvRngSearcher::search_advance_range( state.method = method; } - for (uint64_t a=min_advances; a> 16) % 0xfffe) + 1; search_pickups( diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.cpp index 5d139f0c01..8a66641d23 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_BlindNavigation.cpp @@ -211,12 +211,16 @@ void trigger_held_daycare_egg_after_delay(ProControllerContext& context, const u } void collect_daycare_egg_after_delay(ProControllerContext& context, const uint64_t& ingame_delay){ + // wait with the start menu open to avoid overworld stuff causing extra advances + pbf_press_button(context, BUTTON_PLUS, 200ms, 300ms); + pbf_wait(context, std::chrono::milliseconds(ingame_delay - 12000)); // 4000ms + 500ms + 500ms + 6000ms + 1000ms + pbf_press_button(context, BUTTON_B, 200ms, 300ms); // 5 dialog presses 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, 1300ms); - pbf_press_button(context, BUTTON_A, 200ms, std::chrono::milliseconds(ingame_delay - 10200)); // 4000ms + 6000ms + 200ms + pbf_press_button(context, BUTTON_A, 200ms, 800ms); // accept egg pbf_press_button(context, BUTTON_A, 200ms, 2800ms); // exit dialogue @@ -520,16 +524,16 @@ void check_timings( if (timings.ingame_delay < 4000) { OperationFailedException::fire( ErrorReport::NO_ERROR_REPORT, - "Togepi: the in-game delay cannot be less than 4000ms (320 advances). Check your in-game advances and calibration or pick a new target.", + "Togepi: the in-game delay cannot be less than 4000ms (350 advances). Check your in-game advances and calibration or pick a new target.", console ); } return; case PokemonFRLG_RngTarget::eggpickup: - if (timings.ingame_delay < 4000) { + if (timings.ingame_delay < 12000) { OperationFailedException::fire( ErrorReport::NO_ERROR_REPORT, - "Togepi: the in-game delay cannot be less than 10500ms (1100 advances). Check your in-game advances and calibration or pick a new target.", + "Togepi: the in-game delay cannot be less than 12000ms (1440 advances). Check your in-game advances and calibration or pick a new target.", console ); } diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_GiftRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_GiftRng.cpp index df2299d36b..4ab65e0eff 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_GiftRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_GiftRng.cpp @@ -365,7 +365,7 @@ void GiftRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& Milliseconds launch_delay = INITIAL_LAUNCH_DELAY; - RngAdvanceHistory advance_history; + RngUncertainHistory uncertain_history; RngCalibrationHistory calibration_history; uint16_t failed_searches = 0; @@ -410,7 +410,7 @@ void GiftRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& } // if previous resets had uncertain advances, slightly modify the seed delay to try to hit a different target - double seed_bump = SEED_BUMPS[advance_history.results.size() % 5]; + double seed_bump = SEED_BUMPS[uncertain_history.results.size() % 5]; calibrations.seed_offset += seed_bump; uint64_t ingame_advances = ADVANCES - CONTINUE_SCREEN_FRAMES; @@ -462,7 +462,7 @@ void GiftRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& std::vector search_hits = get_search_results(env.console, searcher, filters, SEED_VALUES, ADVANCES, advances_radius, GENDER_THRESHOLD); RNG_CALIBRATION.set_hits(search_hits); bool finished = update_history( - env.console, advance_history, calibration_history, MAX_HISTORY_LENGTH, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1 ); @@ -490,7 +490,7 @@ void GiftRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& || all_indistinguishable(search_hits, searcher, GENDER_THRESHOLD) ); finished = update_history( - env.console, advance_history, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1, 2, force_finish diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngCalibration.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngCalibration.cpp index 1d81fc73d0..1f884f1701 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngCalibration.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngCalibration.cpp @@ -364,7 +364,7 @@ double get_seed_calibration_frames( return average_offset; } -double get_advances_calibration_frames(const RngCalibrationHistory& history, const uint64_t& advance_target){ +double get_advances_calibration(const RngCalibrationHistory& history, const uint64_t& advance_target){ double sum = 0; uint16_t len = 0; for (size_t i=0; i& seed_values, const int16_t& seed_position, - const uint64_t& advances + const uint64_t& advances, + bool csf_first ){ RngCalibrations calibrations{}; if (history.results.size() > 0){ + calibrations.seed_offset = get_seed_calibration_frames(history, seed_values, seed_position); - calibrations.ingame_offset = get_advances_calibration_frames(history, advances); AdvRngState prev_hit = history.results.back(); double prev_csf_offset = history.calibrations.back().csf_offset; + double prev_ingame_offset = history.calibrations.back().ingame_offset; int64_t prev_advance_miss = int64_t(prev_hit.advance) - int64_t(advances); - if (prev_advance_miss != 0 && std::abs(prev_advance_miss) < 2){ - console.log("Attempting to correct for off-by-one miss by modifying continue screen frames."); + + if (prev_advance_miss == 0){ + // don't change anything if the advance target has been hit + calibrations.csf_offset = prev_csf_offset; + calibrations.ingame_offset = prev_ingame_offset; + }else if (std::abs(prev_advance_miss) < 2){ + // when very close, take the previous calibration and bump the CSF in the right direction if (prev_advance_miss > 0){ calibrations.csf_offset = prev_csf_offset - 0.5; }else{ calibrations.csf_offset = prev_csf_offset + 0.5; } calibrations.csf_offset = fmod(calibrations.csf_offset, 2); + calibrations.ingame_offset = prev_ingame_offset; // leave unchanged + }else if(csf_first){ + // adjust the csf, putting anything beyond +/-2 frames into the in-game calibration + double new_advances_calibration = get_advances_calibration(history, advances); + double total_diff = new_advances_calibration - prev_ingame_offset - prev_csf_offset; + calibrations.csf_offset = fmod(prev_csf_offset + total_diff, 2); double csf_diff = calibrations.csf_offset - prev_csf_offset; - calibrations.ingame_offset -= csf_diff; + calibrations.ingame_offset = prev_ingame_offset + total_diff - csf_diff; + }else{ + // only adjust the in-game offset + calibrations.ingame_offset = get_advances_calibration(history, advances); } } - console.log("Seed calibration (frames): " + std::to_string(calibrations.seed_offset)); - console.log("Continue screen adjustment (frames): " + std::to_string(calibrations.csf_offset)); - console.log("Advance calibration (frames x2): " + std::to_string(calibrations.ingame_offset)); return calibrations; } bool update_history( ConsoleHandle& console, - RngAdvanceHistory& advance_history, + RngUncertainHistory& uncertain_history, RngCalibrationHistory& calibration_history, const uint16_t& max_history_length, const RngCalibrations calibrations, @@ -448,44 +461,46 @@ bool update_history( calibration_history.calibrations.erase(calibration_history.calibrations.begin()); calibration_history.results.erase(calibration_history.results.begin()); } - advance_history.results.clear(); - advance_history.seed_calibrations.clear(); + uncertain_history.results.clear(); + uncertain_history.calibrations.clear(); return true; } - std::vector advances; + std::vector uncal_advances; std::vector hits; for(auto hit : search_hits) { - advances.emplace_back(hit.advance); + uncal_advances.emplace_back(int64_t(std::round(hit.advance - calibrations.csf_offset - calibrations.ingame_offset))); hits.emplace_back(hit); } // get unique advances - std::sort(advances.begin(), advances.end()); - std::vector::iterator iter; - iter = std::unique(advances.begin(), advances.begin() + advances.size()); - advances.resize(std::distance(advances.begin(), iter)); + std::sort(uncal_advances.begin(), uncal_advances.end()); + std::vector::iterator iter; + iter = std::unique(uncal_advances.begin(), uncal_advances.begin() + uncal_advances.size()); + uncal_advances.resize(std::distance(uncal_advances.begin(), iter)); - advance_history.seed_calibrations.emplace_back(calibrations.seed_offset); - advance_history.results.emplace_back(hits); + uncertain_history.calibrations.emplace_back(calibrations); + uncertain_history.results.emplace_back(hits); // check advance history for repeated values std::vector counts; uint64_t best = 0; - uint64_t mode = 0; + int64_t mode = 0; // sum of calibration and hit advance bool tie = false; - for (uint64_t& adv : advances){ + for (int64_t& uadv : uncal_advances){ uint64_t count = 0; - for (auto& res : advance_history.results){ + for (size_t i=0; i best){ - mode = adv; + mode = uadv; best = count; tie = false; }else if (count == best){ @@ -500,19 +515,20 @@ bool update_history( // add the closest possibility to the advances mode for each attempt to the calibration history - console.log("Inferred hits from previous " + std::to_string(advance_history.results.size()) + " attempts: "); - for (size_t i=0; i seed_calibrations; - std::vector> results; -}; - struct RngCalibrations{ double seed_offset; double csf_offset; double ingame_offset; + + bool operator==(const RngCalibrations& other) const { + return ( + seed_offset == other.seed_offset + && csf_offset == other.csf_offset + && ingame_offset == other.ingame_offset + ); + } +}; + +struct RngUncertainHistory{ + std::vector calibrations; + std::vector> results; }; struct RngCalibrationHistory{ @@ -126,7 +133,7 @@ double get_seed_calibration_frames( ); // get advances calibration based on average offset in the RNG calibration history -double get_advances_calibration_frames(const RngCalibrationHistory& calibration_history, const uint64_t& advances); +double get_advances_calibration(const RngCalibrationHistory& calibration_history, const uint64_t& advances); // get RngCalibrations from the RNG calibration history RngCalibrations get_calibrations( @@ -134,13 +141,14 @@ RngCalibrations get_calibrations( const RngCalibrationHistory& history, const std::vector& seed_values, const int16_t& seed_position, - const uint64_t& advances + const uint64_t& advances, + bool csf_first = false ); // infer hit seeds/advances, update the calibration history, and return whether or not the search is finished bool update_history( ConsoleHandle& console, - RngAdvanceHistory& advance_history, + RngUncertainHistory& advance_history, RngCalibrationHistory& calibration_history, const uint16_t& max_history_length, const RngCalibrations calibrations, diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngDisplays.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngDisplays.cpp index 7d655ec055..d6d5a170e1 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngDisplays.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngDisplays.cpp @@ -135,8 +135,8 @@ void RngFilterDisplay::reset(){ } -RngCalibrationDisplay::RngCalibrationDisplay() - : GroupOption("RNG Calibration", LockMode::READ_ONLY) +RngCalibrationDisplay::RngCalibrationDisplay(std::string label) + : GroupOption(label, LockMode::READ_ONLY) , seed_calibration("Seed Calibration (ms):", LockMode::LOCK_WHILE_RUNNING, 0) , csf_calibration("Continue Screen Frames Calibration:", LockMode::LOCK_WHILE_RUNNING, 0.0) , advances_calibration("In-Game Advances Calibration:", LockMode::LOCK_WHILE_RUNNING, 0.0) diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngDisplays.h b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngDisplays.h index 1c8383a123..5308740f8a 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngDisplays.h +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngDisplays.h @@ -83,7 +83,7 @@ class RngFilterDisplay : public GroupOption{ class RngCalibrationDisplay : public GroupOption{ public: - RngCalibrationDisplay(); + RngCalibrationDisplay(std::string label = "RNG Calibration"); void set_calibrations(const RngCalibrations& calibrations); void set_hits(const std::vector& rng_states); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngNavigation.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngNavigation.cpp index fec39e85c8..ac1d999e1a 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngNavigation.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngNavigation.cpp @@ -292,7 +292,8 @@ bool use_rare_candy( const BaseStats& base_stats, AdvRngMethod method, bool safari_zone, - bool first + bool first, + int from_last ){ // navigate to the bag (only needed for the first use) if (first){ @@ -327,8 +328,9 @@ bool use_rare_candy( // only needed on the first use if (first){ context.wait_for_all_requests(); - pbf_move_left_joystick(context, {0, +1}, 200ms, 300ms); - pbf_move_left_joystick(context, {0, +1}, 200ms, 300ms); + for (int i=0; i<(2+from_last); i++){ + pbf_move_left_joystick(context, {0, +1}, 200ms, 300ms); + } } // watch for level up stats @@ -365,8 +367,8 @@ bool use_rare_candy( // return to the bag (possibly learning a move, but trying to prevent evolution) int attempts = 0; while (true){ - if (attempts > 5){ - console.log("use_rare_candy(): failed to return to bag menu in 5 attempts."); + if (attempts > 25){ + console.log("use_rare_candy(): failed to return to bag menu."); return true; } BagWatcher bag_menu(COLOR_RED); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngNavigation.h b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngNavigation.h index 5fa014a779..2c1faee38e 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngNavigation.h +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RngNavigation.h @@ -60,7 +60,8 @@ bool use_rare_candy( const BaseStats& base_stats, AdvRngMethod method = AdvRngMethod::Method1, bool safari_zone = false, - bool first = false + bool first = false, + int from_last = 0 ); int watch_for_shiny_encounter(ConsoleHandle& console, ProControllerContext& context); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp index 300d46d2ad..a93d19b8ce 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_RoamingLegendaryRng.cpp @@ -305,7 +305,7 @@ void RoamingLegendaryRng::program(SingleSwitchProgramEnvironment& env, ProContro Milliseconds launch_delay = INITIAL_LAUNCH_DELAY; - RngAdvanceHistory advance_history; + RngUncertainHistory uncertain_history; RngCalibrationHistory calibration_history; uint16_t failed_to_encounter = 0; @@ -361,7 +361,7 @@ void RoamingLegendaryRng::program(SingleSwitchProgramEnvironment& env, ProContro } // if previous resets had uncertain advances, slightly modify the seed delay to try to hit a different target - double seed_bump = SEED_BUMPS[advance_history.results.size() % 5]; + double seed_bump = SEED_BUMPS[uncertain_history.results.size() % 5]; calibrations.seed_offset += seed_bump; uint64_t ingame_advances = ADVANCES - CONTINUE_SCREEN_FRAMES; @@ -433,7 +433,7 @@ void RoamingLegendaryRng::program(SingleSwitchProgramEnvironment& env, ProContro std::vector search_hits = get_search_results(env.console, searcher, filters, SEED_VALUES, ADVANCES, advances_radius, GENDER_THRESHOLD); RNG_CALIBRATION.set_hits(search_hits); bool finished = update_history( - env.console, advance_history, calibration_history, MAX_HISTORY_LENGTH, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1 ); finished = finished || all_indistinguishable(search_hits, searcher, GENDER_THRESHOLD); @@ -462,7 +462,7 @@ void RoamingLegendaryRng::program(SingleSwitchProgramEnvironment& env, ProContro || all_indistinguishable(search_hits, searcher, GENDER_THRESHOLD) ); finished = update_history( - env.console, advance_history, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1, 2, force_finish diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_SidHelper.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_SidHelper.cpp index ffeef8427e..819ee8899b 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_SidHelper.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_SidHelper.cpp @@ -295,7 +295,7 @@ void SidHelper::program(SingleSwitchProgramEnvironment& env, ProControllerContex FINAL_TEXT_FRAMES = 249; } - static const double FIXED_ADVANCES_OFFSET = 7; // determined empirically. Probably not console/setup dependent + static const int64_t FIXED_ADVANCES_OFFSET = 7; // determined empirically. Probably not console/setup dependent bool extra_press_at_end = ( LANGUAGE == Language::German || diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StarterRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StarterRng.cpp index 4b856a6c6a..fc0612def9 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StarterRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StarterRng.cpp @@ -636,7 +636,7 @@ void StarterRng::program(SingleSwitchProgramEnvironment& env, ProControllerConte Milliseconds launch_delay = INITIAL_LAUNCH_DELAY; - RngAdvanceHistory advance_history; + RngUncertainHistory uncertain_history; RngCalibrationHistory calibration_history; bool wildshiny_found = false; @@ -687,7 +687,7 @@ void StarterRng::program(SingleSwitchProgramEnvironment& env, ProControllerConte } // if previous resets had uncertain advances, slightly modify the seed delay to try to hit a different target - double seed_bump = SEED_BUMPS[advance_history.results.size() % 5]; + double seed_bump = SEED_BUMPS[uncertain_history.results.size() % 5]; calibrations.seed_offset += seed_bump; uint64_t ingame_advances = ADVANCES - CONTINUE_SCREEN_FRAMES; @@ -740,7 +740,7 @@ void StarterRng::program(SingleSwitchProgramEnvironment& env, ProControllerConte std::vector search_hits = get_search_results(env.console, searcher, filters, SEED_VALUES, ADVANCES, advances_radius, GENDER_THRESHOLD); RNG_CALIBRATION.set_hits(search_hits); bool finished = update_history( - env.console, advance_history, calibration_history, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1 ); if (finished){ @@ -770,7 +770,7 @@ void StarterRng::program(SingleSwitchProgramEnvironment& env, ProControllerConte RNG_CALIBRATION.set_hits(search_hits); env.log("Number of search hits: " + std::to_string(search_hits.size())); finished = update_history( - env.console, advance_history, calibration_history, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 5 ); if (finished){ @@ -797,7 +797,7 @@ void StarterRng::program(SingleSwitchProgramEnvironment& env, ProControllerConte if (num_levels > MAX_LEVELS){ env.log("RNG search not complete after 3 level-ups."); finished = update_history( - env.console, advance_history, calibration_history, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 5, 2, true ); break; @@ -838,7 +838,7 @@ void StarterRng::program(SingleSwitchProgramEnvironment& env, ProControllerConte RNG_CALIBRATION.set_hits(search_hits); env.log("Number of search hits: " + std::to_string(search_hits.size())); update_history( - env.console, advance_history, calibration_history, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 5, 2, true ); env.log("RNG search finished."); diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StaticRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StaticRng.cpp index c6547f11c4..b182a27677 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StaticRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_StaticRng.cpp @@ -347,7 +347,7 @@ void StaticRng::program(SingleSwitchProgramEnvironment& env, ProControllerContex Milliseconds launch_delay = INITIAL_LAUNCH_DELAY; - RngAdvanceHistory advance_history; + RngUncertainHistory uncertain_history; RngCalibrationHistory calibration_history; uint16_t failed_searches = 0; @@ -385,7 +385,7 @@ void StaticRng::program(SingleSwitchProgramEnvironment& env, ProControllerContex } // if previous resets had uncertain advances, slightly modify the seed delay to try to hit a different target - double seed_bump = SEED_BUMPS[advance_history.results.size() % 5]; + double seed_bump = SEED_BUMPS[uncertain_history.results.size() % 5]; calibrations.seed_offset += seed_bump; uint64_t ingame_advances = ADVANCES - CONTINUE_SCREEN_FRAMES; @@ -456,7 +456,7 @@ void StaticRng::program(SingleSwitchProgramEnvironment& env, ProControllerContex std::vector search_hits = get_search_results(env.console, searcher, filters, SEED_VALUES, ADVANCES, advances_radius, GENDER_THRESHOLD); RNG_CALIBRATION.set_hits(search_hits); bool finished = update_history( - env.console, advance_history, calibration_history, MAX_HISTORY_LENGTH, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1 ); @@ -483,7 +483,7 @@ void StaticRng::program(SingleSwitchProgramEnvironment& env, ProControllerContex || all_indistinguishable(search_hits, searcher, GENDER_THRESHOLD) ); finished = update_history( - env.console, advance_history, + env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1, 2, force_finish diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_WildRng.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_WildRng.cpp index 66ac9c4471..73c79ab431 100644 --- a/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_WildRng.cpp +++ b/SerialPrograms/Source/PokemonFRLG/Programs/RngManipulation/PokemonFRLG_WildRng.cpp @@ -404,7 +404,7 @@ void WildRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& Milliseconds launch_delay = INITIAL_LAUNCH_DELAY; - RngAdvanceHistory advance_history; + RngUncertainHistory uncertain_history; RngCalibrationHistory calibration_history; uint16_t failed_searches = 0; @@ -448,7 +448,7 @@ void WildRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& } // if previous resets had uncertain advances, slightly modify the seed delay to try to hit a different target - double seed_bump = SEED_BUMPS[advance_history.results.size() % 5]; + double seed_bump = SEED_BUMPS[uncertain_history.results.size() % 5]; calibrations.seed_offset += seed_bump; uint64_t ingame_advances = ADVANCES - CONTINUE_SCREEN_FRAMES; @@ -540,7 +540,7 @@ void WildRng::program(SingleSwitchProgramEnvironment& env, ProControllerContext& std::vector search_hits = get_wild_search_results(env.console, searcher, filters, SEED_VALUES, ADVANCES, advances_radius, gender_threshold, SUPER_ROD); RNG_CALIBRATION.set_hits(search_hits); - bool finished = update_history(env.console, advance_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1); + bool finished = update_history(env.console, uncertain_history, calibration_history, MAX_HISTORY_LENGTH, calibrations, search_hits, 1); finished = finished || all_indistinguishable(search_hits, searcher, gender_threshold, SUPER_ROD); for (uint64_t i=0; i