diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/ShinyHunting/PokemonFRLG_LegendaryRunAway.cpp b/SerialPrograms/Source/PokemonFRLG/Programs/ShinyHunting/PokemonFRLG_LegendaryRunAway.cpp
index 090d5c9fd8..55b71ea65d 100644
--- a/SerialPrograms/Source/PokemonFRLG/Programs/ShinyHunting/PokemonFRLG_LegendaryRunAway.cpp
+++ b/SerialPrograms/Source/PokemonFRLG/Programs/ShinyHunting/PokemonFRLG_LegendaryRunAway.cpp
@@ -90,15 +90,15 @@ LegendaryRunAway::LegendaryRunAway()
LockMode::LOCK_WHILE_RUNNING,
"240 ms"
)
- , LUGIA_UP_DOWN(
+ , LUGIA_UP_DOWN0(
"Lugia up/down:
Time it takes to run up to Lugia or down away to reset.",
LockMode::LOCK_WHILE_RUNNING,
- "600 ms"
+ "620 ms"
)
- , LUGIA_LEFT_RIGHT(
+ , LUGIA_LEFT_RIGHT0(
"Lugia left time:
Time it takes walk three steps left after entering Lugia's room.",
LockMode::LOCK_WHILE_RUNNING,
- "550 ms"
+ "520 ms"
)
{
PA_ADD_STATIC(SHINY_REQUIRES_AUDIO);
@@ -109,21 +109,23 @@ LegendaryRunAway::LegendaryRunAway()
PA_ADD_STATIC(m_advanced_options);
PA_ADD_OPTION(HOOH_UP_DOWN);
PA_ADD_OPTION(HOOH_LEFT_RIGHT);
- PA_ADD_OPTION(LUGIA_UP_DOWN);
- PA_ADD_OPTION(LUGIA_LEFT_RIGHT);
+ PA_ADD_OPTION(LUGIA_UP_DOWN0);
+ PA_ADD_OPTION(LUGIA_LEFT_RIGHT0);
}
void LegendaryRunAway::reset_hooh(SingleSwitchProgramEnvironment& env, ProControllerContext& context){
BlackScreenOverWatcher exit_area(COLOR_RED);
//Turn around, 10 steps down
ssf_press_button(context, BUTTON_B, 0ms, HOOH_UP_DOWN);
- pbf_press_dpad(context, DPAD_DOWN, HOOH_UP_DOWN, 160ms);
+ pbf_press_dpad(context, DPAD_DOWN, HOOH_UP_DOWN, 0ms);
+ context.wait_for_all_requests();
//Turn right, take 1 step. Wait for black screen over.
int ret = run_until(
env.console, context,
[&](ProControllerContext& context){
- pbf_press_dpad(context, DPAD_RIGHT, HOOH_LEFT_RIGHT, 160ms);
+ ssf_press_button(context, BUTTON_B, 0ms, 500ms);
+ pbf_press_dpad(context, DPAD_RIGHT, 500ms, 0ms);
pbf_wait(context, 2400ms);
},
{exit_area}
@@ -149,6 +151,9 @@ void LegendaryRunAway::reset_hooh(SingleSwitchProgramEnvironment& env, ProContro
int ret2 = run_until(
env.console, context,
[&](ProControllerContext& context){
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
+
ssf_press_button(context, BUTTON_B, 0ms, 500ms);
pbf_press_dpad(context, DPAD_LEFT, 500ms, 0ms);
context.wait_for_all_requests();
@@ -174,6 +179,9 @@ void LegendaryRunAway::reset_hooh(SingleSwitchProgramEnvironment& env, ProContro
"reset_hooh(): Entered area."
);
}
+ //Wait after loading in to zone
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
//reverse above steps, but only take 9 steps up
//doesn't really matter since we want to trigger the encounter anyway
@@ -188,8 +196,9 @@ void LegendaryRunAway::reset_hooh(SingleSwitchProgramEnvironment& env, ProContro
void LegendaryRunAway::reset_lugia(SingleSwitchProgramEnvironment& env, ProControllerContext& context){
BlackScreenOverWatcher exit_area(COLOR_RED);
//Turn around, 5 steps down
- ssf_press_button(context, BUTTON_B, 0ms, LUGIA_UP_DOWN);
- pbf_press_dpad(context, DPAD_DOWN, LUGIA_UP_DOWN, 160ms);
+ ssf_press_button(context, BUTTON_B, 0ms, LUGIA_UP_DOWN0);
+ pbf_press_dpad(context, DPAD_DOWN, LUGIA_UP_DOWN0, 0ms);
+ context.wait_for_all_requests();
//Turn right, 3 steps right. Wait for black screen over.
int ret = run_until(
@@ -222,8 +231,11 @@ void LegendaryRunAway::reset_lugia(SingleSwitchProgramEnvironment& env, ProContr
int ret2 = run_until(
env.console, context,
[](ProControllerContext& context){
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
+
ssf_press_button(context, BUTTON_B, 0ms, 500ms);
- pbf_press_dpad(context, DPAD_UP, 500ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 500ms, 0ms);
context.wait_for_all_requests();
ssf_press_button(context, BUTTON_B, 0ms, 500ms);
pbf_press_dpad(context, DPAD_DOWN, 500ms, 160ms);
@@ -246,14 +258,17 @@ void LegendaryRunAway::reset_lugia(SingleSwitchProgramEnvironment& env, ProContr
"reset_lugia(): Entered area."
);
}
+ //Wait after loading in to zone
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
//reverse above steps
- ssf_press_button(context, BUTTON_B, 0ms, LUGIA_LEFT_RIGHT);
- pbf_press_dpad(context, DPAD_LEFT, LUGIA_LEFT_RIGHT, 160ms);
+ ssf_press_button(context, BUTTON_B, 0ms, LUGIA_LEFT_RIGHT0);
+ pbf_press_dpad(context, DPAD_LEFT, LUGIA_LEFT_RIGHT0, 0ms);
context.wait_for_all_requests();
- ssf_press_button(context, BUTTON_B, 0ms, LUGIA_UP_DOWN);
- pbf_press_dpad(context, DPAD_UP, LUGIA_UP_DOWN, 160ms);
+ ssf_press_button(context, BUTTON_B, 0ms, LUGIA_UP_DOWN0);
+ pbf_press_dpad(context, DPAD_UP, LUGIA_UP_DOWN0, 160ms);
context.wait_for_all_requests();
}
diff --git a/SerialPrograms/Source/PokemonFRLG/Programs/ShinyHunting/PokemonFRLG_LegendaryRunAway.h b/SerialPrograms/Source/PokemonFRLG/Programs/ShinyHunting/PokemonFRLG_LegendaryRunAway.h
index ebd3a4f07c..035d35f87b 100644
--- a/SerialPrograms/Source/PokemonFRLG/Programs/ShinyHunting/PokemonFRLG_LegendaryRunAway.h
+++ b/SerialPrograms/Source/PokemonFRLG/Programs/ShinyHunting/PokemonFRLG_LegendaryRunAway.h
@@ -60,8 +60,8 @@ class LegendaryRunAway : public SingleSwitchProgramInstance{
SectionDividerOption m_advanced_options;
MillisecondsOption HOOH_UP_DOWN;
MillisecondsOption HOOH_LEFT_RIGHT;
- MillisecondsOption LUGIA_UP_DOWN;
- MillisecondsOption LUGIA_LEFT_RIGHT;
+ MillisecondsOption LUGIA_UP_DOWN0;
+ MillisecondsOption LUGIA_LEFT_RIGHT0;
};
}
diff --git a/SerialPrograms/Source/PokemonRSE/Programs/ShinyHunting/PokemonRSE_LegendaryHunt-Emerald.cpp b/SerialPrograms/Source/PokemonRSE/Programs/ShinyHunting/PokemonRSE_LegendaryHunt-Emerald.cpp
index 793dcca618..36981f541c 100644
--- a/SerialPrograms/Source/PokemonRSE/Programs/ShinyHunting/PokemonRSE_LegendaryHunt-Emerald.cpp
+++ b/SerialPrograms/Source/PokemonRSE/Programs/ShinyHunting/PokemonRSE_LegendaryHunt-Emerald.cpp
@@ -140,6 +140,8 @@ void LegendaryHuntEmerald::reset_regi(SingleSwitchProgramEnvironment& env, ProCo
}else{
env.log("Entered area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
//walk back up to the regi
ssf_press_button(context, BUTTON_B, 0ms, 480ms);
@@ -153,23 +155,23 @@ void LegendaryHuntEmerald::reset_groudon(SingleSwitchProgramEnvironment& env, Pr
//Turn left. Take 10 steps.
ssf_press_button(context, BUTTON_B, 0ms, 1440ms);
- pbf_press_dpad(context, DPAD_LEFT, 1440ms, 160ms);
+ pbf_press_dpad(context, DPAD_LEFT, 1440ms, 0ms);
//Turn up. Take 14 steps. (Bump into wall.)
ssf_press_button(context, BUTTON_B, 0ms, 1920ms);
- pbf_press_dpad(context, DPAD_UP, 1920ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 1920ms, 0ms);
//Turn right. Take 2 steps.
ssf_press_button(context, BUTTON_B, 0ms, 320ms);
- pbf_press_dpad(context, DPAD_RIGHT, 320ms, 160ms);
+ pbf_press_dpad(context, DPAD_RIGHT, 320ms, 0ms);
//Turn up. Take 8 steps (Bump into wall.)
ssf_press_button(context, BUTTON_B, 0ms, 1120ms);
- pbf_press_dpad(context, DPAD_UP, 1120ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 1120ms, 0ms);
//Turn left. Take 4 steps.
ssf_press_button(context, BUTTON_B, 0ms, 640ms);
- pbf_press_dpad(context, DPAD_LEFT, 640ms, 160ms);
+ pbf_press_dpad(context, DPAD_LEFT, 640ms, 0ms);
context.wait_for_all_requests();
//Turn down. Exit. Black screen over.
@@ -178,7 +180,7 @@ void LegendaryHuntEmerald::reset_groudon(SingleSwitchProgramEnvironment& env, Pr
env.console, context,
[](ProControllerContext& context){
ssf_press_button(context, BUTTON_B, 0ms, 720ms);
- pbf_press_dpad(context, DPAD_DOWN, 720ms, 160ms);
+ pbf_press_dpad(context, DPAD_DOWN, 720ms, 0ms);
pbf_wait(context, 2400ms);
},
{exit_area}
@@ -196,6 +198,8 @@ void LegendaryHuntEmerald::reset_groudon(SingleSwitchProgramEnvironment& env, Pr
}else{
env.log("Left area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
//Reverse above steps.
BlackScreenOverWatcher enter_area(COLOR_RED, {0.282, 0.064, 0.448, 0.871});
@@ -203,7 +207,7 @@ void LegendaryHuntEmerald::reset_groudon(SingleSwitchProgramEnvironment& env, Pr
env.console, context,
[](ProControllerContext& context){
ssf_press_button(context, BUTTON_B, 0ms, 720ms);
- pbf_press_dpad(context, DPAD_UP, 720ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 720ms, 0ms);
pbf_wait(context, 2400ms);
},
{enter_area}
@@ -221,6 +225,9 @@ void LegendaryHuntEmerald::reset_groudon(SingleSwitchProgramEnvironment& env, Pr
}else{
env.log("Entered area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
+
ssf_press_button(context, BUTTON_B, 0ms, 640ms);
pbf_press_dpad(context, DPAD_RIGHT, 640ms, 160ms);
@@ -244,27 +251,27 @@ void LegendaryHuntEmerald::reset_kyogre(SingleSwitchProgramEnvironment& env, Pro
//Turn down. Take 1 step.
ssf_press_button(context, BUTTON_B, 0ms, 160ms);
- pbf_press_dpad(context, DPAD_DOWN, 160ms, 160ms);
+ pbf_press_dpad(context, DPAD_DOWN, 160ms, 0ms);
//Turn right. Take 9 steps.
ssf_press_button(context, BUTTON_B, 0ms, 1280ms);
- pbf_press_dpad(context, DPAD_RIGHT, 1280ms, 160ms);
+ pbf_press_dpad(context, DPAD_RIGHT, 1280ms, 0ms);
//Turn up. 13 steps. Wall.
ssf_press_button(context, BUTTON_B, 0ms, 1760ms);
- pbf_press_dpad(context, DPAD_UP, 1760ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 1760ms, 0ms);
//Turn left. 4 steps. Wall.
ssf_press_button(context, BUTTON_B, 0ms, 640ms);
- pbf_press_dpad(context, DPAD_LEFT, 640ms, 160ms);
+ pbf_press_dpad(context, DPAD_LEFT, 640ms, 0ms);
//Turn up. 10 steps.
ssf_press_button(context, BUTTON_B, 0ms, 1440ms);
- pbf_press_dpad(context, DPAD_UP, 1440ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 1440ms, 0ms);
//Turn right. 6 steps.
ssf_press_button(context, BUTTON_B, 0ms, 880ms);
- pbf_press_dpad(context, DPAD_RIGHT, 880ms, 160ms);
+ pbf_press_dpad(context, DPAD_RIGHT, 880ms, 0ms);
//Turn down. Exit. Black screen over.
BlackScreenOverWatcher exit_area(COLOR_RED, {0.282, 0.064, 0.448, 0.871});
@@ -290,13 +297,15 @@ void LegendaryHuntEmerald::reset_kyogre(SingleSwitchProgramEnvironment& env, Pro
}else{
env.log("Left area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
BlackScreenOverWatcher enter_area(COLOR_RED, {0.282, 0.064, 0.448, 0.871});
int ret2 = run_until(
env.console, context,
[](ProControllerContext& context){
ssf_press_button(context, BUTTON_B, 0ms, 720ms);
- pbf_press_dpad(context, DPAD_UP, 720ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 720ms, 0ms);
pbf_wait(context, 2400ms);
},
{enter_area}
@@ -314,24 +323,26 @@ void LegendaryHuntEmerald::reset_kyogre(SingleSwitchProgramEnvironment& env, Pro
}else{
env.log("Entered area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
ssf_press_button(context, BUTTON_B, 0ms, 880ms);
- pbf_press_dpad(context, DPAD_LEFT, 880ms, 160ms);
+ pbf_press_dpad(context, DPAD_LEFT, 880ms, 0ms);
ssf_press_button(context, BUTTON_B, 0ms, 1440ms);
- pbf_press_dpad(context, DPAD_DOWN, 1440ms, 160ms);
+ pbf_press_dpad(context, DPAD_DOWN, 1440ms, 0ms);
ssf_press_button(context, BUTTON_B, 0ms, 640ms);
- pbf_press_dpad(context, DPAD_RIGHT, 640ms, 160ms);
+ pbf_press_dpad(context, DPAD_RIGHT, 640ms, 0ms);
ssf_press_button(context, BUTTON_B, 0ms, 1760ms);
- pbf_press_dpad(context, DPAD_DOWN, 1760ms, 160ms);
+ pbf_press_dpad(context, DPAD_DOWN, 1760ms, 0ms);
ssf_press_button(context, BUTTON_B, 0ms, 1280ms);
- pbf_press_dpad(context, DPAD_LEFT, 1280ms, 160ms);
+ pbf_press_dpad(context, DPAD_LEFT, 1280ms, 0ms);
ssf_press_button(context, BUTTON_B, 0ms, 160ms);
- pbf_press_dpad(context, DPAD_UP, 160ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 160ms, 0ms);
context.wait_for_all_requests();
}
@@ -342,14 +353,15 @@ void LegendaryHuntEmerald::reset_hooh(SingleSwitchProgramEnvironment& env, ProCo
BlackScreenOverWatcher exit_area(COLOR_RED, {0.282, 0.064, 0.448, 0.871});
//Turn around, 10 steps down
ssf_press_button(context, BUTTON_B, 0ms, 1440ms);
- pbf_press_dpad(context, DPAD_DOWN, 1440ms, 160ms);
+ pbf_press_dpad(context, DPAD_DOWN, 1440ms, 0ms);
+ context.wait_for_all_requests();
//Turn right, take 1 step. Wait for black screen over.
int ret = run_until(
env.console, context,
[](ProControllerContext& context){
ssf_press_button(context, BUTTON_B, 0ms, 240ms);
- pbf_press_dpad(context, DPAD_RIGHT, 240ms, 160ms);
+ pbf_press_dpad(context, DPAD_RIGHT, 240ms, 0ms);
pbf_wait(context, 2400ms);
},
{exit_area}
@@ -367,6 +379,8 @@ void LegendaryHuntEmerald::reset_hooh(SingleSwitchProgramEnvironment& env, ProCo
}else{
env.log("Left area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
BlackScreenOverWatcher enter_area(COLOR_RED, {0.282, 0.064, 0.448, 0.871});
//turn left, take one step. now turn back right and take a step. wait for black screen over.
@@ -374,10 +388,10 @@ void LegendaryHuntEmerald::reset_hooh(SingleSwitchProgramEnvironment& env, ProCo
env.console, context,
[](ProControllerContext& context){
ssf_press_button(context, BUTTON_B, 0ms, 320ms);
- pbf_press_dpad(context, DPAD_LEFT, 320ms, 160ms);
+ pbf_press_dpad(context, DPAD_LEFT, 320ms, 0ms);
ssf_press_button(context, BUTTON_B, 0ms, 320ms);
- pbf_press_dpad(context, DPAD_RIGHT, 320ms, 160ms);
+ pbf_press_dpad(context, DPAD_RIGHT, 320ms, 0ms);
pbf_wait(context, 2400ms);
},
{enter_area}
@@ -395,6 +409,8 @@ void LegendaryHuntEmerald::reset_hooh(SingleSwitchProgramEnvironment& env, ProCo
}else{
env.log("Entered area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
//reverse above steps, but only take 9 steps up
//doesn't really matter since we want to trigger the encounter anyway
@@ -413,14 +429,15 @@ void LegendaryHuntEmerald::reset_lugia(SingleSwitchProgramEnvironment& env, ProC
BlackScreenOverWatcher exit_area(COLOR_RED, {0.282, 0.064, 0.448, 0.871});
//Turn around, 5 steps down
ssf_press_button(context, BUTTON_B, 0ms, 720ms);
- pbf_press_dpad(context, DPAD_DOWN, 720ms, 160ms);
+ pbf_press_dpad(context, DPAD_DOWN, 720ms, 0ms);
+ context.wait_for_all_requests();
//Turn right, 3 steps right. Wait for black screen over.
int ret = run_until(
env.console, context,
[](ProControllerContext& context){
ssf_press_button(context, BUTTON_B, 0ms, 720ms);
- pbf_press_dpad(context, DPAD_RIGHT, 720ms, 160ms);
+ pbf_press_dpad(context, DPAD_RIGHT, 720ms, 0ms);
pbf_wait(context, 2400ms);
},
{exit_area}
@@ -438,6 +455,8 @@ void LegendaryHuntEmerald::reset_lugia(SingleSwitchProgramEnvironment& env, ProC
}else{
env.log("Left area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
BlackScreenOverWatcher enter_area(COLOR_RED, {0.282, 0.064, 0.448, 0.871});
//turn up, take one step. then turn back down and take a step. wait for black screen over.
@@ -445,10 +464,10 @@ void LegendaryHuntEmerald::reset_lugia(SingleSwitchProgramEnvironment& env, ProC
env.console, context,
[](ProControllerContext& context){
ssf_press_button(context, BUTTON_B, 0ms, 320ms);
- pbf_press_dpad(context, DPAD_UP, 320ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 320ms, 0ms);
ssf_press_button(context, BUTTON_B, 0ms, 320ms);
- pbf_press_dpad(context, DPAD_DOWN, 320ms, 160ms);
+ pbf_press_dpad(context, DPAD_DOWN, 320ms, 0ms);
pbf_wait(context, 2400ms);
},
{enter_area}
@@ -466,13 +485,15 @@ void LegendaryHuntEmerald::reset_lugia(SingleSwitchProgramEnvironment& env, ProC
}else{
env.log("Entered area.");
}
+ pbf_wait(context, 500ms);
+ context.wait_for_all_requests();
//reverse above steps
ssf_press_button(context, BUTTON_B, 0ms, 560ms);
- pbf_press_dpad(context, DPAD_LEFT, 560ms, 160ms);
+ pbf_press_dpad(context, DPAD_LEFT, 560ms, 0ms);
ssf_press_button(context, BUTTON_B, 0ms, 720ms);
- pbf_press_dpad(context, DPAD_UP, 720ms, 160ms);
+ pbf_press_dpad(context, DPAD_UP, 720ms, 0ms);
context.wait_for_all_requests();
}