From 8808e823149ba4a7a41bf8d6273fed17a89a323f Mon Sep 17 00:00:00 2001 From: Alexandre Hannema Date: Wed, 11 Feb 2026 20:06:21 +0100 Subject: [PATCH 1/3] Update Watt farmer option for non-NSO --- ...l_PokemonSwSh_DateSpam-WattFarmer copy.cpp | 121 ++++++++++++++++++ ...nal_PokemonSwSh_DateSpam-WattFarmer copy.h | 53 ++++++++ .../PokemonSwSh_DateSpam-WattFarmer.cpp | 109 ++++++++++++---- .../PokemonSwSh_DateSpam-WattFarmer.h | 2 + .../Hosting/PokemonSwSh_DenRoller.cpp | 2 +- 5 files changed, 261 insertions(+), 26 deletions(-) create mode 100644 SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.cpp create mode 100644 SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.h diff --git a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.cpp b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.cpp new file mode 100644 index 0000000000..75f60f1713 --- /dev/null +++ b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.cpp @@ -0,0 +1,121 @@ +/* Watt Farmer + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#include "Common/Cpp/PrettyPrint.h" +#include "CommonFramework/Notifications/ProgramNotifications.h" +#include "Controllers/ControllerTypes.h" +#include "NintendoSwitch/Commands/NintendoSwitch_Commands_PushButtons.h" +#include "NintendoSwitch/Commands/NintendoSwitch_Commands_Superscalar.h" +#include "Pokemon/Pokemon_Strings.h" +#include "PokemonSwSh/PokemonSwSh_Settings.h" +#include "PokemonSwSh/Commands/PokemonSwSh_Commands_DateSpam.h" +#include "PokemonSwSh_DateSpam-WattFarmer.h" + +namespace PokemonAutomation{ +namespace NintendoSwitch{ +namespace PokemonSwSh{ + +using namespace Pokemon; + + +WattFarmer_Descriptor::WattFarmer_Descriptor() + : SingleSwitchProgramDescriptor( + "PokemonSwSh:WattFarmer", + STRING_POKEMON + " SwSh", "Date Spam - Watt Farmer", + "Programs/PokemonSwSh/DateSpam-WattFarmer.html", + "Farm watts. (7.2 seconds/fetch, 1 million watts/hour with a tick-precise controller)", + ProgramControllerClass::StandardController_PerformanceClassSensitive, + FeedbackType::NONE, + AllowCommandsWhenRunning::DISABLE_COMMANDS + ) +{} + + + +WattFarmer::WattFarmer() + : GRIP_MENU_WAIT0( + "Exit Grip Menu Delay:
" + "Wait this long after leaving the grip menu to allow for the Switch to reestablish local connection.", + LockMode::LOCK_WHILE_RUNNING, + "5000 ms" + ) + , EXIT_DEN_WAIT( + "Exit Den Wait Time:
" + "Wait this long after backing out of the den before date skipping.", + LockMode::LOCK_WHILE_RUNNING, + "1720 ms" + ) + , SKIPS( + "Number of Fetch Attempts:", + LockMode::LOCK_WHILE_RUNNING, + 33334 + ) + , SAVE_ITERATIONS0( + "Save Every this Many Fetches:
(zero disables saving): ", + LockMode::LOCK_WHILE_RUNNING, + 100 + ) + , NOTIFICATIONS({ + &NOTIFICATION_PROGRAM_FINISH, + }) +{ + PA_ADD_OPTION(GRIP_MENU_WAIT0); + PA_ADD_OPTION(START_LOCATION); + PA_ADD_OPTION(EXIT_DEN_WAIT); + PA_ADD_OPTION(SKIPS); + PA_ADD_OPTION(SAVE_ITERATIONS0); + PA_ADD_OPTION(NOTIFICATIONS); +} + +void WattFarmer::program(SingleSwitchProgramEnvironment& env, ProControllerContext& context){ + if (START_LOCATION.start_in_grip_menu()){ + grip_menu_connect_go_home(context); + pbf_wait(context, GRIP_MENU_WAIT0); + }else{ + pbf_press_button(context, BUTTON_B, 40ms, 40ms); + ssf_press_button(context, BUTTON_HOME, GameSettings::instance().GAME_TO_HOME_DELAY_FAST0, 160ms); + } + + uint8_t year = MAX_YEAR; + uint16_t save_count = 0; + for (uint32_t c = 0; c < SKIPS; c++){ + env.log("Fetch Attempts: " + tostr_u_commas(c)); + + home_roll_date_enter_game_autorollback(env.console, context, year); + if (context->performance_class() == ControllerPerformanceClass::SysbotBase){ + pbf_wait(context, 720ms); + }else{ + pbf_mash_button(context, BUTTON_B, 720ms); + } + + ssf_press_button_ptv(context, BUTTON_A, 40ms); + pbf_mash_button(context, BUTTON_B, EXIT_DEN_WAIT); + + if (SAVE_ITERATIONS0 != 0){ + save_count++; + if (save_count >= SAVE_ITERATIONS0){ + save_count = 0; + pbf_mash_button(context, BUTTON_B, 2000ms); + pbf_press_button(context, BUTTON_X, 160ms, GameSettings::instance().OVERWORLD_TO_MENU_DELAY0); + pbf_press_button(context, BUTTON_R, 160ms, 2000ms); + pbf_press_button(context, BUTTON_ZL, 160ms, 3000ms); + } + } + + // Tap HOME and quickly spam B. The B spamming ensures that we don't + // accidentally update the system if the system update window pops up. + ssf_press_button(context, BUTTON_HOME, 120ms, 160ms); + pbf_mash_button(context, BUTTON_B, GameSettings::instance().GAME_TO_HOME_DELAY_FAST0.get() - 120ms); + } + + send_program_finished_notification(env, NOTIFICATION_PROGRAM_FINISH); +} + + +} +} +} + diff --git a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.h b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.h new file mode 100644 index 0000000000..6c31c6f2b4 --- /dev/null +++ b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.h @@ -0,0 +1,53 @@ +/* Watt Farmer + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#ifndef PokemonAutomation_PokemonSwSh_WattFarmer_H +#define PokemonAutomation_PokemonSwSh_WattFarmer_H + +#include "Common/Cpp/Options/SimpleIntegerOption.h" +#include "Common/Cpp/Options/TimeDurationOption.h" +#include "Common/Cpp/Options/TimeDurationOption.h" +#include "CommonFramework/Notifications/EventNotificationsTable.h" +#include "NintendoSwitch/Options/NintendoSwitch_StartInGripMenuOption.h" +#include "NintendoSwitch/NintendoSwitch_SingleSwitchProgram.h" + +namespace PokemonAutomation{ +namespace NintendoSwitch{ +namespace PokemonSwSh{ + + +class WattFarmer_Descriptor : public SingleSwitchProgramDescriptor{ +public: + WattFarmer_Descriptor(); +}; + + + +class WattFarmer : public SingleSwitchProgramInstance{ +public: + WattFarmer(); + + virtual void program(SingleSwitchProgramEnvironment& env, ProControllerContext& context) override; + +private: + StartInGripOrGameOption START_LOCATION; + MillisecondsOption GRIP_MENU_WAIT0; + MillisecondsOption EXIT_DEN_WAIT; + + SimpleIntegerOption SKIPS; + SimpleIntegerOption SAVE_ITERATIONS0; + + EventNotificationsOption NOTIFICATIONS; +}; + + +} +} +} +#endif + + + diff --git a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp index 75f60f1713..4d769b85ae 100644 --- a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp +++ b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp @@ -9,10 +9,22 @@ #include "Controllers/ControllerTypes.h" #include "NintendoSwitch/Commands/NintendoSwitch_Commands_PushButtons.h" #include "NintendoSwitch/Commands/NintendoSwitch_Commands_Superscalar.h" +#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_HomeToDateTime.h" +#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_RollDateForward1.h" +#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_RollDateBackwardN.h" +#include "NintendoSwitch/NintendoSwitch_Settings.h" +#include "NintendoSwitch/Programs/NintendoSwitch_GameEntry.h" #include "Pokemon/Pokemon_Strings.h" #include "PokemonSwSh/PokemonSwSh_Settings.h" #include "PokemonSwSh/Commands/PokemonSwSh_Commands_DateSpam.h" #include "PokemonSwSh_DateSpam-WattFarmer.h" +#include "PokemonSwSh/Programs/Hosting/PokemonSwSh_DenTools.h" +#include "PokemonSwSh/Programs/Hosting/PokemonSwSh_DenRoller.h" +#include "PokemonSwSh/Programs/PokemonSwSh_GameEntry.h" +#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_HomeToDateTime.h" +#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_RollDateForward1.h" +#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_RollDateBackwardN.h" +#include "PokemonSwSh/Options/PokemonSwSh_Catchability.h" namespace PokemonAutomation{ namespace NintendoSwitch{ @@ -58,6 +70,12 @@ WattFarmer::WattFarmer() LockMode::LOCK_WHILE_RUNNING, 100 ) + , HAVE_NSO( + "I have Nintendo Switch Online
" + "If you don't have NSO, the program won't use the Y-Comm glitch", + LockMode::LOCK_WHILE_RUNNING, + true + ) , NOTIFICATIONS({ &NOTIFICATION_PROGRAM_FINISH, }) @@ -67,9 +85,11 @@ WattFarmer::WattFarmer() PA_ADD_OPTION(EXIT_DEN_WAIT); PA_ADD_OPTION(SKIPS); PA_ADD_OPTION(SAVE_ITERATIONS0); + PA_ADD_OPTION(HAVE_NSO); PA_ADD_OPTION(NOTIFICATIONS); } + void WattFarmer::program(SingleSwitchProgramEnvironment& env, ProControllerContext& context){ if (START_LOCATION.start_in_grip_menu()){ grip_menu_connect_go_home(context); @@ -78,37 +98,76 @@ void WattFarmer::program(SingleSwitchProgramEnvironment& env, ProControllerConte pbf_press_button(context, BUTTON_B, 40ms, 40ms); ssf_press_button(context, BUTTON_HOME, GameSettings::instance().GAME_TO_HOME_DELAY_FAST0, 160ms); } - + uint8_t year = MAX_YEAR; uint16_t save_count = 0; - for (uint32_t c = 0; c < SKIPS; c++){ - env.log("Fetch Attempts: " + tostr_u_commas(c)); - - home_roll_date_enter_game_autorollback(env.console, context, year); - if (context->performance_class() == ControllerPerformanceClass::SysbotBase){ - pbf_wait(context, 720ms); - }else{ - pbf_mash_button(context, BUTTON_B, 720ms); + + if (!HAVE_NSO) { + // First subdivide the number of skips into batches of 60 because the roll_den function only goes up to 60 + + for (uint32_t c = 0; c < SKIPS; c++){ + enter_den(context, 0ms, c >= 0, false); + enter_lobby(context, 0ms, false, Catchability::ALWAYS_CATCHABLE); + + // Skip forward. + ssf_press_button(context, BUTTON_HOME, GameSettings::instance().GAME_TO_HOME_DELAY_FAST0, 80ms); + home_to_date_time(env.console, context, true); + roll_date_forward_1(env.console, context, false); + + // Enter game + pbf_press_button(context, BUTTON_HOME, 80ms, 720ms); + PokemonAutomation::NintendoSwitch::resume_game_from_home(env.console, context); + + // Exit Raid + ssf_press_button(context, BUTTON_B, 960ms, 400ms); + ssf_press_button(context, BUTTON_A, GameSettings::instance().REENTER_DEN_DELAY0, 400ms); + + // Save after X skips + if (SAVE_ITERATIONS0 != 0){ + save_count++; + if (save_count >= SAVE_ITERATIONS0){ + save_count = 0; + pbf_mash_button(context, BUTTON_B, 2000ms); + pbf_press_button(context, BUTTON_X, 160ms, GameSettings::instance().OVERWORLD_TO_MENU_DELAY0); + pbf_press_button(context, BUTTON_R, 160ms, 2000ms); + pbf_press_button(context, BUTTON_ZL, 160ms, 3000ms); + } + } } + // Take the last Watts from the Den + ssf_mash_AZs(context, GameSettings::instance().COLLECT_WATTS_OFFLINE_DELAY0); + ssf_mash1_button(context, BUTTON_B, 960ms); + + } else { + for (uint32_t c = 0; c < SKIPS; c++){ + env.log("Fetch Attempts: " + tostr_u_commas(c)); + + home_roll_date_enter_game_autorollback(env.console, context, year); + if (context->performance_class() == ControllerPerformanceClass::SysbotBase){ + pbf_wait(context, 720ms); + }else{ + pbf_mash_button(context, BUTTON_B, 720ms); + } - ssf_press_button_ptv(context, BUTTON_A, 40ms); - pbf_mash_button(context, BUTTON_B, EXIT_DEN_WAIT); - - if (SAVE_ITERATIONS0 != 0){ - save_count++; - if (save_count >= SAVE_ITERATIONS0){ - save_count = 0; - pbf_mash_button(context, BUTTON_B, 2000ms); - pbf_press_button(context, BUTTON_X, 160ms, GameSettings::instance().OVERWORLD_TO_MENU_DELAY0); - pbf_press_button(context, BUTTON_R, 160ms, 2000ms); - pbf_press_button(context, BUTTON_ZL, 160ms, 3000ms); + ssf_press_button_ptv(context, BUTTON_A, 40ms); + pbf_mash_button(context, BUTTON_B, EXIT_DEN_WAIT); + + if (SAVE_ITERATIONS0 != 0){ + save_count++; + if (save_count >= SAVE_ITERATIONS0){ + save_count = 0; + pbf_mash_button(context, BUTTON_B, 2000ms); + pbf_press_button(context, BUTTON_X, 160ms, GameSettings::instance().OVERWORLD_TO_MENU_DELAY0); + pbf_press_button(context, BUTTON_R, 160ms, 2000ms); + pbf_press_button(context, BUTTON_ZL, 160ms, 3000ms); + } } - } - // Tap HOME and quickly spam B. The B spamming ensures that we don't - // accidentally update the system if the system update window pops up. - ssf_press_button(context, BUTTON_HOME, 120ms, 160ms); - pbf_mash_button(context, BUTTON_B, GameSettings::instance().GAME_TO_HOME_DELAY_FAST0.get() - 120ms); + // Tap HOME and quickly spam B. The B spamming ensures that we don't + // accidentally update the system if the system update window pops up. + ssf_press_button(context, BUTTON_HOME, 120ms, 160ms); + pbf_mash_button(context, BUTTON_B, GameSettings::instance().GAME_TO_HOME_DELAY_FAST0.get() - 120ms); + } } send_program_finished_notification(env, NOTIFICATION_PROGRAM_FINISH); diff --git a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.h b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.h index 6c31c6f2b4..0dbc8edd7f 100644 --- a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.h +++ b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.h @@ -39,6 +39,8 @@ class WattFarmer : public SingleSwitchProgramInstance{ SimpleIntegerOption SKIPS; SimpleIntegerOption SAVE_ITERATIONS0; + + BooleanCheckBoxOption HAVE_NSO; EventNotificationsOption NOTIFICATIONS; }; diff --git a/SerialPrograms/Source/PokemonSwSh/Programs/Hosting/PokemonSwSh_DenRoller.cpp b/SerialPrograms/Source/PokemonSwSh/Programs/Hosting/PokemonSwSh_DenRoller.cpp index 5d7e129ee0..dd4dfb4a94 100644 --- a/SerialPrograms/Source/PokemonSwSh/Programs/Hosting/PokemonSwSh_DenRoller.cpp +++ b/SerialPrograms/Source/PokemonSwSh/Programs/Hosting/PokemonSwSh_DenRoller.cpp @@ -70,7 +70,7 @@ DenRoller::DenRoller() "Automatically stop when this " + STRING_POKEMON + " is rolled. Video output is required." ) , VIEW_TIME0( - "View Time:
Wait this long before restting. This wait is skipped if the desired " + + "View Time:
Wait this long before resetting. This wait is skipped if the desired " + STRING_POKEMON + " is set since the program will be watching it for you.", LockMode::LOCK_WHILE_RUNNING, "5 s" From d9eb6302b33071dfbc66acfcb04ae7da03f1b4bf Mon Sep 17 00:00:00 2001 From: Alexandre Hannema Date: Thu, 12 Feb 2026 13:02:08 +0100 Subject: [PATCH 2/3] Deleted unnecessary copies --- ...l_PokemonSwSh_DateSpam-WattFarmer copy.cpp | 121 ------------------ ...nal_PokemonSwSh_DateSpam-WattFarmer copy.h | 53 -------- 2 files changed, 174 deletions(-) delete mode 100644 SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.cpp delete mode 100644 SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.h diff --git a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.cpp b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.cpp deleted file mode 100644 index 75f60f1713..0000000000 --- a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* Watt Farmer - * - * From: https://github.com/PokemonAutomation/ - * - */ - -#include "Common/Cpp/PrettyPrint.h" -#include "CommonFramework/Notifications/ProgramNotifications.h" -#include "Controllers/ControllerTypes.h" -#include "NintendoSwitch/Commands/NintendoSwitch_Commands_PushButtons.h" -#include "NintendoSwitch/Commands/NintendoSwitch_Commands_Superscalar.h" -#include "Pokemon/Pokemon_Strings.h" -#include "PokemonSwSh/PokemonSwSh_Settings.h" -#include "PokemonSwSh/Commands/PokemonSwSh_Commands_DateSpam.h" -#include "PokemonSwSh_DateSpam-WattFarmer.h" - -namespace PokemonAutomation{ -namespace NintendoSwitch{ -namespace PokemonSwSh{ - -using namespace Pokemon; - - -WattFarmer_Descriptor::WattFarmer_Descriptor() - : SingleSwitchProgramDescriptor( - "PokemonSwSh:WattFarmer", - STRING_POKEMON + " SwSh", "Date Spam - Watt Farmer", - "Programs/PokemonSwSh/DateSpam-WattFarmer.html", - "Farm watts. (7.2 seconds/fetch, 1 million watts/hour with a tick-precise controller)", - ProgramControllerClass::StandardController_PerformanceClassSensitive, - FeedbackType::NONE, - AllowCommandsWhenRunning::DISABLE_COMMANDS - ) -{} - - - -WattFarmer::WattFarmer() - : GRIP_MENU_WAIT0( - "Exit Grip Menu Delay:
" - "Wait this long after leaving the grip menu to allow for the Switch to reestablish local connection.", - LockMode::LOCK_WHILE_RUNNING, - "5000 ms" - ) - , EXIT_DEN_WAIT( - "Exit Den Wait Time:
" - "Wait this long after backing out of the den before date skipping.", - LockMode::LOCK_WHILE_RUNNING, - "1720 ms" - ) - , SKIPS( - "Number of Fetch Attempts:", - LockMode::LOCK_WHILE_RUNNING, - 33334 - ) - , SAVE_ITERATIONS0( - "Save Every this Many Fetches:
(zero disables saving): ", - LockMode::LOCK_WHILE_RUNNING, - 100 - ) - , NOTIFICATIONS({ - &NOTIFICATION_PROGRAM_FINISH, - }) -{ - PA_ADD_OPTION(GRIP_MENU_WAIT0); - PA_ADD_OPTION(START_LOCATION); - PA_ADD_OPTION(EXIT_DEN_WAIT); - PA_ADD_OPTION(SKIPS); - PA_ADD_OPTION(SAVE_ITERATIONS0); - PA_ADD_OPTION(NOTIFICATIONS); -} - -void WattFarmer::program(SingleSwitchProgramEnvironment& env, ProControllerContext& context){ - if (START_LOCATION.start_in_grip_menu()){ - grip_menu_connect_go_home(context); - pbf_wait(context, GRIP_MENU_WAIT0); - }else{ - pbf_press_button(context, BUTTON_B, 40ms, 40ms); - ssf_press_button(context, BUTTON_HOME, GameSettings::instance().GAME_TO_HOME_DELAY_FAST0, 160ms); - } - - uint8_t year = MAX_YEAR; - uint16_t save_count = 0; - for (uint32_t c = 0; c < SKIPS; c++){ - env.log("Fetch Attempts: " + tostr_u_commas(c)); - - home_roll_date_enter_game_autorollback(env.console, context, year); - if (context->performance_class() == ControllerPerformanceClass::SysbotBase){ - pbf_wait(context, 720ms); - }else{ - pbf_mash_button(context, BUTTON_B, 720ms); - } - - ssf_press_button_ptv(context, BUTTON_A, 40ms); - pbf_mash_button(context, BUTTON_B, EXIT_DEN_WAIT); - - if (SAVE_ITERATIONS0 != 0){ - save_count++; - if (save_count >= SAVE_ITERATIONS0){ - save_count = 0; - pbf_mash_button(context, BUTTON_B, 2000ms); - pbf_press_button(context, BUTTON_X, 160ms, GameSettings::instance().OVERWORLD_TO_MENU_DELAY0); - pbf_press_button(context, BUTTON_R, 160ms, 2000ms); - pbf_press_button(context, BUTTON_ZL, 160ms, 3000ms); - } - } - - // Tap HOME and quickly spam B. The B spamming ensures that we don't - // accidentally update the system if the system update window pops up. - ssf_press_button(context, BUTTON_HOME, 120ms, 160ms); - pbf_mash_button(context, BUTTON_B, GameSettings::instance().GAME_TO_HOME_DELAY_FAST0.get() - 120ms); - } - - send_program_finished_notification(env, NOTIFICATION_PROGRAM_FINISH); -} - - -} -} -} - diff --git a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.h b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.h deleted file mode 100644 index 6c31c6f2b4..0000000000 --- a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/Original_PokemonSwSh_DateSpam-WattFarmer copy.h +++ /dev/null @@ -1,53 +0,0 @@ -/* Watt Farmer - * - * From: https://github.com/PokemonAutomation/ - * - */ - -#ifndef PokemonAutomation_PokemonSwSh_WattFarmer_H -#define PokemonAutomation_PokemonSwSh_WattFarmer_H - -#include "Common/Cpp/Options/SimpleIntegerOption.h" -#include "Common/Cpp/Options/TimeDurationOption.h" -#include "Common/Cpp/Options/TimeDurationOption.h" -#include "CommonFramework/Notifications/EventNotificationsTable.h" -#include "NintendoSwitch/Options/NintendoSwitch_StartInGripMenuOption.h" -#include "NintendoSwitch/NintendoSwitch_SingleSwitchProgram.h" - -namespace PokemonAutomation{ -namespace NintendoSwitch{ -namespace PokemonSwSh{ - - -class WattFarmer_Descriptor : public SingleSwitchProgramDescriptor{ -public: - WattFarmer_Descriptor(); -}; - - - -class WattFarmer : public SingleSwitchProgramInstance{ -public: - WattFarmer(); - - virtual void program(SingleSwitchProgramEnvironment& env, ProControllerContext& context) override; - -private: - StartInGripOrGameOption START_LOCATION; - MillisecondsOption GRIP_MENU_WAIT0; - MillisecondsOption EXIT_DEN_WAIT; - - SimpleIntegerOption SKIPS; - SimpleIntegerOption SAVE_ITERATIONS0; - - EventNotificationsOption NOTIFICATIONS; -}; - - -} -} -} -#endif - - - From 9ac1d4af819eebc736b5dafca8ad6ae029cd58c7 Mon Sep 17 00:00:00 2001 From: Boombaastical Date: Sat, 14 Feb 2026 20:37:43 +0100 Subject: [PATCH 3/3] Removed unnecessary includes --- .../DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp index 4d769b85ae..a18fbbc7ed 100644 --- a/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp +++ b/SerialPrograms/Source/PokemonSwSh/Programs/DateSpamFarmers/PokemonSwSh_DateSpam-WattFarmer.cpp @@ -21,9 +21,6 @@ #include "PokemonSwSh/Programs/Hosting/PokemonSwSh_DenTools.h" #include "PokemonSwSh/Programs/Hosting/PokemonSwSh_DenRoller.h" #include "PokemonSwSh/Programs/PokemonSwSh_GameEntry.h" -#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_HomeToDateTime.h" -#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_RollDateForward1.h" -#include "NintendoSwitch/Programs/DateSpam/NintendoSwitch_RollDateBackwardN.h" #include "PokemonSwSh/Options/PokemonSwSh_Catchability.h" namespace PokemonAutomation{