Skip to content

Commit 91b2fa0

Browse files
committed
S2 home-to-datetime
1 parent 83fcc71 commit 91b2fa0

File tree

5 files changed

+107
-18
lines changed

5 files changed

+107
-18
lines changed

SerialPrograms/Source/NintendoSwitch/DevPrograms/TestProgramSwitch.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,16 +321,23 @@ void TestProgram::program(MultiSwitchProgramEnvironment& env, CancellableScope&
321321
ProControllerContext context(scope, console.pro_controller());
322322
VideoOverlaySet overlays(overlay);
323323

324+
while (true){
325+
home_to_date_time_Switch2_wired_blind(context, true);
326+
ssf_do_nothing(context, 1000ms);
327+
pbf_press_button(context, BUTTON_HOME, 200ms, 1800ms);
328+
}
329+
324330

325331

332+
#if 0
326333
HomeMenuDetector detector0;
327334
StartGameUserSelectDetector detector1;
328335
UpdatePopupDetector detector2;
329336
detector0.make_overlays(overlays);
330337
detector1.make_overlays(overlays);
331338
detector2.make_overlays(overlays);
332339
cout << detector1.detect(feed.snapshot()) << endl;
333-
340+
#endif
334341

335342

336343
#if 0

SerialPrograms/Source/NintendoSwitch/Programs/NintendoSwitch_MenuStabilityTester.cpp

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,18 @@ MenuStabilityTester::MenuStabilityTester()
4242
, VERTICAL_RANGE(
4343
"<b>Vertical Scroll Range:</b>",
4444
LockMode::LOCK_WHILE_RUNNING,
45-
60
45+
20
4646
)
4747
, HORIZONTAL_RANGE(
4848
"<b>Horizontal Scroll Range:</b>",
4949
LockMode::LOCK_WHILE_RUNNING,
5050
4
5151
)
52+
, PAUSE_BEFORE_UTURN(
53+
"<b>Pause Before Turning Around:</b>",
54+
LockMode::LOCK_WHILE_RUNNING,
55+
false
56+
)
5257
, DELAY_TO_NEXT(
5358
"<b>Delay to Next Button:</b>",
5459
LockMode::LOCK_WHILE_RUNNING,
@@ -69,6 +74,7 @@ MenuStabilityTester::MenuStabilityTester()
6974

7075
PA_ADD_OPTION(VERTICAL_RANGE);
7176
PA_ADD_OPTION(HORIZONTAL_RANGE);
77+
PA_ADD_OPTION(PAUSE_BEFORE_UTURN);
7278

7379
PA_ADD_OPTION(DELAY_TO_NEXT);
7480
PA_ADD_OPTION(HOLD_DURATION);
@@ -83,14 +89,17 @@ void MenuStabilityTester::on_config_value_changed(void* object){
8389
case TestType::Vertical:
8490
VERTICAL_RANGE.set_visibility(ConfigOptionState::ENABLED);
8591
HORIZONTAL_RANGE.set_visibility(ConfigOptionState::HIDDEN);
92+
PAUSE_BEFORE_UTURN.set_visibility(ConfigOptionState::ENABLED);
8693
break;
8794
case TestType::Horizontal:
8895
VERTICAL_RANGE.set_visibility(ConfigOptionState::HIDDEN);
8996
HORIZONTAL_RANGE.set_visibility(ConfigOptionState::ENABLED);
97+
PAUSE_BEFORE_UTURN.set_visibility(ConfigOptionState::ENABLED);
9098
break;
9199
case TestType::SimultaneousScrollA:
92100
VERTICAL_RANGE.set_visibility(ConfigOptionState::HIDDEN);
93101
HORIZONTAL_RANGE.set_visibility(ConfigOptionState::HIDDEN);
102+
PAUSE_BEFORE_UTURN.set_visibility(ConfigOptionState::HIDDEN);
94103
break;
95104
}
96105
}
@@ -105,22 +114,32 @@ void MenuStabilityTester::program(SingleSwitchProgramEnvironment& env, ProContro
105114
for (size_t c = 0; c < VERTICAL_RANGE; c++){
106115
ssf_issue_scroll(context, DPAD_DOWN, DELAY_TO_NEXT, HOLD_DURATION, COOLDOWN);
107116
}
108-
ssf_do_nothing(context, 1000ms);
117+
if (PAUSE_BEFORE_UTURN){
118+
ssf_do_nothing(context, 1000ms);
119+
}
109120
for (size_t c = 0; c < VERTICAL_RANGE; c++){
110121
ssf_issue_scroll(context, DPAD_UP, DELAY_TO_NEXT, HOLD_DURATION, COOLDOWN);
111122
}
112-
ssf_do_nothing(context, 1000ms);
123+
if (PAUSE_BEFORE_UTURN){
124+
ssf_do_nothing(context, 1000ms);
125+
}
113126
}
114127
break;
115128

116129
case TestType::Horizontal:
117-
for (size_t i = 0; i < 100; i++){
130+
while (true){
118131
for (size_t c = 0; c < HORIZONTAL_RANGE; c++){
119132
ssf_issue_scroll(context, DPAD_RIGHT, DELAY_TO_NEXT, HOLD_DURATION, COOLDOWN);
120133
}
134+
if (PAUSE_BEFORE_UTURN){
135+
ssf_do_nothing(context, 1000ms);
136+
}
121137
for (size_t c = 0; c < HORIZONTAL_RANGE; c++){
122138
ssf_issue_scroll(context, DPAD_LEFT, DELAY_TO_NEXT, HOLD_DURATION, COOLDOWN);
123139
}
140+
if (PAUSE_BEFORE_UTURN){
141+
ssf_do_nothing(context, 1000ms);
142+
}
124143
}
125144
break;
126145

SerialPrograms/Source/NintendoSwitch/Programs/NintendoSwitch_MenuStabilityTester.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#ifndef PokemonAutomation_NintendoSwitch_MenuStabilityTester_H
88
#define PokemonAutomation_NintendoSwitch_MenuStabilityTester_H
99

10+
#include "Common/Cpp/Options/BooleanCheckBoxOption.h"
1011
#include "Common/Cpp/Options/SimpleIntegerOption.h"
1112
#include "Common/Cpp/Options/EnumDropdownOption.h"
1213
#include "Common/Cpp/Options/TimeDurationOption.h"
@@ -45,6 +46,7 @@ class MenuStabilityTester : public SingleSwitchProgramInstance, private ConfigOp
4546
EnumDropdownOption<TestType> TEST_TYPE;
4647
SimpleIntegerOption<uint8_t> VERTICAL_RANGE;
4748
SimpleIntegerOption<uint8_t> HORIZONTAL_RANGE;
49+
BooleanCheckBoxOption PAUSE_BEFORE_UTURN;
4850

4951
MillisecondsOption DELAY_TO_NEXT;
5052
MillisecondsOption HOLD_DURATION;

SerialPrograms/Source/NintendoSwitch/Programs/NintendoSwitch_Navigation.cpp

Lines changed: 69 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ void home_to_date_time_Switch1_wired_with_feedback(VideoStream& stream, ProContr
138138
}
139139

140140

141-
void home_to_date_time_Switch1_wired_blind(ProControllerContext& context, bool to_date_change, bool fast){
141+
void home_to_date_time_Switch1_wired_blind(ProControllerContext& context, bool to_date_change){
142142
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 4);
143143
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 4);
144144
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 4);
@@ -200,12 +200,11 @@ void home_to_date_time_Switch1_wired_blind(ProControllerContext& context, bool t
200200
}
201201
// ssf_issue_scroll(context, SSF_SCROLL_DOWN, 0);
202202

203-
// Left scroll in case we missed landed in the language change or sleep
203+
// Left scroll in case we missed and landed in the language change or sleep
204204
// confirmation menus.
205205
ssf_issue_scroll(context, SSF_SCROLL_LEFT, 0ms);
206206
}
207-
208-
void home_to_date_time_Switch1_wireless_esp32_blind(ProControllerContext& context, bool to_date_change, bool fast){
207+
void home_to_date_time_Switch1_wireless_esp32_blind(ProControllerContext& context, bool to_date_change){
209208
Milliseconds tv = context->timing_variation();
210209
Milliseconds unit = 24ms + tv;
211210

@@ -275,8 +274,7 @@ void home_to_date_time_Switch1_wireless_esp32_blind(ProControllerContext& contex
275274
ssf_issue_scroll(context, SSF_SCROLL_LEFT, 0ms, 2*unit, unit);
276275

277276
}
278-
279-
void home_to_date_time_Switch1_sbb_blind(ProControllerContext& context, bool to_date_change, bool fast){
277+
void home_to_date_time_Switch1_sbb_blind(ProControllerContext& context, bool to_date_change){
280278
Milliseconds tv = context->timing_variation();
281279
// ssf_do_nothing(context, 1500ms);
282280

@@ -313,6 +311,67 @@ void home_to_date_time_Switch1_sbb_blind(ProControllerContext& context, bool to_
313311
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
314312
}
315313

314+
void home_to_date_time_Switch2_wired_blind(ProControllerContext& context, bool to_date_change){
315+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
316+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
317+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
318+
319+
// Down twice in case we drop one.
320+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 24ms, 48ms, 24ms);
321+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 24ms, 48ms, 24ms);
322+
323+
ssf_issue_scroll(context, SSF_SCROLL_LEFT, 24ms, 48ms, 24ms);
324+
325+
// Two A presses in case we drop the 1st one.
326+
ssf_press_button(context, BUTTON_A, 24ms, 48ms, 24ms);
327+
ssf_press_button(context, BUTTON_A, 24ms, 48ms, 24ms);
328+
329+
for (size_t c = 0; c < 40; c++){
330+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 24ms, 48ms, 24ms);
331+
}
332+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 1000ms, 1000ms, 24ms);
333+
334+
// Scroll left and press A to exit the sleep menu if we happened to
335+
// land there.
336+
ssf_issue_scroll(context, SSF_SCROLL_LEFT, 24ms, 48ms, 24ms);
337+
ssf_press_button(context, BUTTON_A, 3);
338+
339+
for (size_t c = 0; c < 2; c++){
340+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
341+
}
342+
343+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 24ms, 48ms, 24ms);
344+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 24ms, 48ms, 24ms);
345+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 192ms, 48ms, 24ms);
346+
347+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 128ms, 48ms, 24ms);
348+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 128ms, 48ms, 24ms);
349+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 128ms, 48ms, 24ms);
350+
351+
if (!to_date_change){
352+
// Triple up this A press to make sure it gets through.
353+
ssf_press_button(context, BUTTON_A, 24ms, 48ms, 24ms);
354+
ssf_press_button(context, BUTTON_A, 24ms, 48ms, 24ms);
355+
ssf_press_button(context, BUTTON_A, 360ms, 48ms, 24ms);
356+
return;
357+
}
358+
359+
// Triple up this A press to make sure it gets through.
360+
ssf_press_button(context, BUTTON_A, 24ms, 48ms, 24ms);
361+
ssf_press_button(context, BUTTON_A, 24ms, 48ms, 24ms);
362+
ssf_press_button(context, BUTTON_A, 24ms, 48ms, 24ms);
363+
364+
for (size_t c = 0; c < 5; c++){
365+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 24ms, 48ms, 24ms);
366+
}
367+
368+
// Left scroll in case we missed and landed in the language change or sleep
369+
// confirmation menus.
370+
ssf_issue_scroll(context, SSF_SCROLL_LEFT, 24ms, 48ms, 24ms);
371+
}
372+
373+
374+
316375

317376
void home_to_date_time(VideoStream& stream, ProControllerContext& context, bool to_date_change){
318377
switch (context->performance_class()){
@@ -322,24 +381,24 @@ void home_to_date_time(VideoStream& stream, ProControllerContext& context, bool
322381
}
323382
default:{
324383
// Slow version for tick-imprecise controllers. Blind.
325-
home_to_date_time_Switch1_sbb_blind(context, to_date_change, false);
384+
home_to_date_time_Switch1_sbb_blind(context, to_date_change);
326385
}
327386
}
328387
}
329388

330389
void home_to_date_time(ProControllerContext& context, bool to_date_change, bool fast){
331390
switch (context->performance_class()){
332391
case ControllerPerformanceClass::SerialPABotBase_Wired_125Hz:{
333-
home_to_date_time_Switch1_wired_blind(context, to_date_change, fast);
392+
home_to_date_time_Switch1_wired_blind(context, to_date_change);
334393
break;
335394
}
336395
case ControllerPerformanceClass::SerialPABotBase_Wireless_ESP32:{
337-
home_to_date_time_Switch1_wireless_esp32_blind(context, to_date_change, fast);
396+
home_to_date_time_Switch1_wireless_esp32_blind(context, to_date_change);
338397
break;
339398
}
340399
default:{
341400
// Slow version for tick-imprecise controllers.
342-
home_to_date_time_Switch1_sbb_blind(context, to_date_change, fast);
401+
home_to_date_time_Switch1_sbb_blind(context, to_date_change);
343402
}
344403
}
345404

SerialPrograms/Source/NintendoSwitch/Programs/NintendoSwitch_Navigation.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ namespace NintendoSwitch{
1717

1818
void home_to_date_time_Switch1_wired_with_feedback(VideoStream& stream, ProControllerContext& context, bool to_date_change);
1919

20-
void home_to_date_time_Switch1_wired_blind(ProControllerContext& context, bool to_date_change, bool fast);
21-
void home_to_date_time_Switch1_wireless_esp32_blind(ProControllerContext& context, bool to_date_change, bool fast);
22-
void home_to_date_time_Switch1_sbb_blind(ProControllerContext& context, bool to_date_change, bool fast);
20+
void home_to_date_time_Switch1_wired_blind(ProControllerContext& context, bool to_date_change);
21+
void home_to_date_time_Switch1_wireless_esp32_blind(ProControllerContext& context, bool to_date_change);
22+
void home_to_date_time_Switch1_sbb_blind(ProControllerContext& context, bool to_date_change);
23+
24+
void home_to_date_time_Switch2_wired_blind(ProControllerContext& context, bool to_date_change);
2325

2426
// Navigates from Home screen to the Date and Time screen. Using visual inference.
2527
void home_to_date_time(VideoStream& stream, ProControllerContext& context, bool to_date_change);

0 commit comments

Comments
 (0)