Skip to content

Commit 0eb21f0

Browse files
committed
More datespam fixes for ESP32 on Switch 2.
1 parent 20e3a13 commit 0eb21f0

File tree

5 files changed

+134
-30
lines changed

5 files changed

+134
-30
lines changed

SerialPrograms/Source/NintendoSwitch/Programs/DateSpam/NintendoSwitch_NeutralDateSkip.cpp

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,29 @@ void neutral_date_skip_switch2_wired(ProControllerContext& context){
9090
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
9191
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
9292
}
93+
void neutral_date_skip_switch2_wireless(ProControllerContext& context){
94+
Milliseconds tv = context->timing_variation();
95+
Milliseconds unit = 24ms + tv;
96+
97+
ssf_press_button(context, BUTTON_A, 216ms, 80ms);
98+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
99+
ssf_issue_scroll(context, SSF_SCROLL_UP, unit);
100+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
101+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
102+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
103+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
104+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
105+
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
106+
ssf_press_button(context, BUTTON_A, 216ms, 80ms);
107+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
108+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, unit);
109+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
110+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
111+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
112+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
113+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
114+
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
115+
}
93116

94117

95118
void neutral_date_skip(ConsoleHandle& console, ProControllerContext& context){
@@ -115,7 +138,19 @@ void neutral_date_skip(ConsoleHandle& console, ProControllerContext& context){
115138
}
116139

117140
if (is_switch2(type)){
118-
neutral_date_skip_switch2_wired(context);
141+
switch (context->performance_class()){
142+
case ControllerPerformanceClass::SerialPABotBase_Wired_125Hz:
143+
neutral_date_skip_switch2_wired(context);
144+
return;
145+
case ControllerPerformanceClass::SerialPABotBase_Wireless_ESP32:
146+
neutral_date_skip_switch2_wireless(context);
147+
return;
148+
default:
149+
throw InternalProgramError(
150+
&console.logger(), PA_CURRENT_FUNCTION,
151+
"Unsupported ControllerPerformanceClass: " + std::to_string((int)context->performance_class())
152+
);
153+
}
119154
return;
120155
}
121156

SerialPrograms/Source/NintendoSwitch/Programs/DateSpam/NintendoSwitch_RollDateBackwardN.cpp

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,33 @@ void roll_date_backward_N_Switch2_wired(ProControllerContext& context, uint8_t s
138138
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
139139
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
140140
}
141+
void roll_date_backward_N_Switch2_wireless(ProControllerContext& context, uint8_t skips){
142+
Milliseconds tv = context->timing_variation();
143+
Milliseconds unit = 24ms + tv;
144+
145+
ssf_press_button(context, BUTTON_A, 216ms, 80ms);
146+
if (skips >= 60){
147+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 4160ms, 4160ms, unit);
148+
}else{
149+
for (uint8_t c = 0; c < skips; c++){
150+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 112ms, 2*unit, unit);
151+
}
152+
}
153+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
154+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
155+
if (skips >= 60){
156+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 4160ms, 4160ms, unit);
157+
}else{
158+
for (uint8_t c = 0; c < skips; c++){
159+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 112ms, 2*unit, unit);
160+
}
161+
}
162+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
163+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
164+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
165+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
166+
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
167+
}
141168
void roll_date_backward_N(
142169
ConsoleHandle& console, ProControllerContext& context,
143170
uint8_t skips, bool fast
@@ -164,7 +191,19 @@ void roll_date_backward_N(
164191
}
165192

166193
if (is_switch2(type)){
167-
roll_date_backward_N_Switch2_wired(context, skips);
194+
switch (context->performance_class()){
195+
case ControllerPerformanceClass::SerialPABotBase_Wired_125Hz:
196+
roll_date_backward_N_Switch2_wired(context, skips);
197+
return;
198+
case ControllerPerformanceClass::SerialPABotBase_Wireless_ESP32:
199+
roll_date_backward_N_Switch2_wireless(context, skips);
200+
return;
201+
default:
202+
throw InternalProgramError(
203+
&console.logger(), PA_CURRENT_FUNCTION,
204+
"Unsupported ControllerPerformanceClass: " + std::to_string((int)context->performance_class())
205+
);
206+
}
168207
return;
169208
}
170209

SerialPrograms/Source/NintendoSwitch/Programs/DateSpam/NintendoSwitch_RollDateForward1.cpp

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,21 @@ void roll_date_forward_1_Switch2_wired(ProControllerContext& context){
8181
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
8282
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
8383
}
84+
void roll_date_forward_1_Switch2_wireless(ProControllerContext& context){
85+
Milliseconds tv = context->timing_variation();
86+
Milliseconds unit = 24ms + tv;
87+
88+
ssf_press_button(context, BUTTON_A, 216ms, 80ms);
89+
ssf_issue_scroll(context, SSF_SCROLL_UP, unit);
90+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
91+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
92+
ssf_issue_scroll(context, SSF_SCROLL_UP, unit);
93+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
94+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
95+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
96+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
97+
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
98+
}
8499
void roll_date_forward_1(
85100
ConsoleHandle& console, ProControllerContext& context,
86101
bool fast
@@ -107,7 +122,19 @@ void roll_date_forward_1(
107122
}
108123

109124
if (is_switch2(type)){
110-
roll_date_forward_1_Switch2_wired(context);
125+
switch (context->performance_class()){
126+
case ControllerPerformanceClass::SerialPABotBase_Wired_125Hz:
127+
roll_date_forward_1_Switch2_wired(context);
128+
return;
129+
case ControllerPerformanceClass::SerialPABotBase_Wireless_ESP32:
130+
roll_date_forward_1_Switch2_wireless(context);
131+
return;
132+
default:
133+
throw InternalProgramError(
134+
&console.logger(), PA_CURRENT_FUNCTION,
135+
"Unsupported ControllerPerformanceClass: " + std::to_string((int)context->performance_class())
136+
);
137+
}
111138
return;
112139
}
113140

SerialPrograms/Source/PokemonSV/Programs/PokemonSV_MenuNavigation.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,12 @@ void neutral_day_skip_switch2(ConsoleHandle& console, ProControllerContext& cont
9191
console.log("PokemonSV::neutral_day_skip_switch2()");
9292

9393
ssf_press_button(context, BUTTON_A, 216ms, 80ms);
94-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
95-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
96-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
97-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
98-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
99-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
94+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
95+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
96+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
97+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
98+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
99+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
100100
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
101101
}
102102

SerialPrograms/Source/PokemonSwSh/Commands/PokemonSwSh_Commands_DateSpam.cpp

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -119,23 +119,23 @@ void touch_date_from_home_switch2(
119119
home_to_date_time(console, context, true);
120120

121121
ssf_press_button(context, BUTTON_A, 216ms, 80ms);
122-
ssf_issue_scroll(context, SSF_SCROLL_UP, 24ms, 48ms, 24ms);
123-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
124-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
125-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
126-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
127-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
128-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
122+
ssf_issue_scroll_ptv(context, SSF_SCROLL_UP);
123+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
124+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
125+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
126+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
127+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
128+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
129129
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
130130

131131
ssf_press_button(context, BUTTON_A, 216ms, 80ms);
132-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 24ms, 48ms, 24ms);
133-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
134-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
135-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
136-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
137-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
138-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
132+
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
133+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
134+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
135+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
136+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
137+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
138+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
139139
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
140140

141141
ssf_press_button(context, BUTTON_HOME, settings_to_home_delay, 80ms);
@@ -194,16 +194,19 @@ void rollback_hours_from_home_switch2(
194194
){
195195
home_to_date_time(console, context, true);
196196

197+
Milliseconds tv = context->timing_variation();
198+
Milliseconds unit = 24ms + tv;
199+
197200
ssf_press_button(context, BUTTON_A, 216ms, 80ms);
198-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
199-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
200-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
201+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
202+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
203+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
201204
for (uint8_t c = 0; c < hours; c++){
202-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 112ms, 48ms, 24ms);
205+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 112ms + tv, 2*unit, unit);
203206
}
204-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
205-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
206-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 24ms, 48ms, 24ms);
207+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
208+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
209+
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
207210
ssf_press_button(context, BUTTON_A, 264ms, 80ms);
208211

209212
ssf_press_button(context, BUTTON_HOME, settings_to_home_delay, 80ms);

0 commit comments

Comments
 (0)