Skip to content

Commit 45452fc

Browse files
committed
fix home_to_date_time for single joycon, remove unneeded datespam
1 parent 731c61b commit 45452fc

File tree

5 files changed

+97
-244
lines changed

5 files changed

+97
-244
lines changed

SerialPrograms/Source/NintendoSwitch/Programs/NintendoSwitch_Navigation.cpp

Lines changed: 47 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -165,101 +165,62 @@ void home_to_date_time(ProControllerContext& context, bool to_date_change, bool
165165

166166

167167

168-
void home_to_date_time(JoyconContext& context, bool to_date_change, bool fast){
169-
// If (fast == true) this will run faster, but slightly less accurately.
170-
171-
Milliseconds ticksize = context->ticksize();
168+
void home_to_date_time(JoyconContext& context, bool to_date_change){
172169
Milliseconds tv = context->timing_variation();
173-
Milliseconds unit = round_up_to_ticksize(ticksize, 17ms);
174-
if (tv == 0ms){
175-
// Fast version for tick-precise.
170+
Milliseconds unit = 50ms + tv;
176171

177-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 4);
178-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 4);
172+
//From ControllerPerformanceClass::SerialPABotBase_Wireless_ESP32
173+
//as Joycon will only have that controller type
179174

180-
// Down twice in case we drop one.
181-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 3);
182-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 4);
175+
pbf_move_joystick(context, 255, 128, 2*unit, unit);
176+
pbf_move_joystick(context, 255, 128, 2*unit, unit);
183177

184-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 0);
178+
// Down twice in case we drop one.
179+
pbf_move_joystick(context, 128, 255, 2*unit, unit);
180+
pbf_move_joystick(context, 128, 255, 2*unit, unit);
185181

186-
// Two A presses in case we drop the 1st one.
187-
pbf_press_button(context, BUTTON_A, 3ms, 0ms);
188-
pbf_press_button(context, BUTTON_A, 3ms, 0ms);
182+
pbf_move_joystick(context, 255, 128, 2*unit, unit);
189183

190-
// Just button mash it. lol
191-
{
192-
auto iterations = Milliseconds(1200) / unit + 1;
193-
do{
194-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, unit);
195-
}while (--iterations);
196-
}
197-
{
198-
auto iterations = Milliseconds(336) / unit + 1;
199-
do{
200-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, unit);
201-
}while (--iterations);
202-
}
184+
// Press A multiple times to make sure one goes through.
185+
pbf_press_button(context, BUTTON_A, 2*unit, unit);
186+
pbf_press_button(context, BUTTON_A, 2*unit, unit);
187+
pbf_press_button(context, BUTTON_A, 2*unit, unit);
203188

204-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 3);
205-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 3);
206-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 10);
207-
ssf_press_dpad(context, DPAD_DOWN, 45, 40);
208-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 3);
209-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 3);
210-
211-
if (!to_date_change){
212-
ssf_press_button(context, BUTTON_A, 45);
213-
return;
214-
}
215-
216-
ssf_press_button(context, BUTTON_A, 3);
217-
{
218-
auto iterations = Milliseconds(216) / unit + 1;
219-
do{
220-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, unit);
221-
}while (--iterations);
222-
}
223-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 0);
224-
225-
// // Insert this to move the cursor away from sleep if we messed up.
226-
// ssf_issue_scroll1(SSF_SCROLL_LEFT, 0);
227-
}else{
228-
// Slow version for tick-imprecise controllers.
229-
230-
// ssf_do_nothing(context, 1500ms);
231-
232-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
233-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
234-
235-
// Down twice in case we drop one.
236-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
237-
// ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
238-
239-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
240-
241-
// Two A presses in case we drop the 1st one.
242-
ssf_mash1_button(context, BUTTON_A, 200ms);
243-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN, 2500ms, 2500ms);
244-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT, 500ms, 500ms);
245-
246-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
247-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
248-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 500ms, tv, tv);
249-
ssf_press_right_joystick(context, 128, 224, 1000ms, 300ms, tv);
250-
// ssf_issue_scroll(context, SSF_SCROLL_DOWN, 1000ms, 250ms, tv); // Scroll down
251-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
252-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
253-
254-
if (!to_date_change){
255-
ssf_press_button_ptv(context, BUTTON_A);
256-
return;
257-
}
189+
190+
// Just button mash it. lol
191+
{
192+
auto iterations = Milliseconds(1100) / unit + 1;
193+
do{
194+
pbf_move_joystick(context, 128, 255, 2*unit, unit);
195+
}while (--iterations);
196+
}
197+
{
198+
auto iterations = Milliseconds(336) / unit + 1;
199+
do{
200+
pbf_move_joystick(context, 255, 128, 2*unit, unit);
201+
}while (--iterations);
202+
}
203+
204+
pbf_move_joystick(context, 128, 255, 2*unit, unit);
205+
pbf_move_joystick(context, 128, 255, 2*unit, unit);
206+
pbf_move_joystick(context, 128, 255, 4*unit, unit);
207+
pbf_move_joystick(context, 128, 255, 360ms, 304ms);
208+
pbf_move_joystick(context, 128, 255, 2*unit, unit);
209+
//pbf_move_joystick(context, 128, 255, 2*unit, unit);
210+
211+
if (!to_date_change){
212+
ssf_press_button(context, BUTTON_A, 360ms, 2*unit, unit);
213+
return;
214+
}
258215

259-
ssf_press_button_ptv(context, BUTTON_A, 1000ms);
260-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
261-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
216+
ssf_press_button(context, BUTTON_A, unit);
217+
{
218+
auto iterations = Milliseconds(216) / unit + 1;
219+
do{
220+
pbf_move_joystick(context, 128, 255, 2*unit, unit);
221+
}while (--iterations);
262222
}
223+
pbf_move_joystick(context, 128, 255, 2*unit, 0ms);
263224
}
264225

265226

SerialPrograms/Source/NintendoSwitch/Programs/NintendoSwitch_Navigation.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ namespace NintendoSwitch{
1717

1818
void home_to_date_time(ProControllerContext& context, bool to_date_change, bool fast);
1919

20-
void home_to_date_time(JoyconContext& context, bool to_date_change, bool fast);
20+
//Joycon must not be sideways
21+
void home_to_date_time(JoyconContext& context, bool to_date_change);
2122

2223

2324

SerialPrograms/Source/PokemonLGPE/Commands/PokemonLGPE_DateSpam.cpp

Lines changed: 41 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -15,171 +15,60 @@ namespace PokemonAutomation{
1515
namespace NintendoSwitch{
1616
namespace PokemonLGPE{
1717

18-
void neutral_date_skip(JoyconContext& context){
19-
Milliseconds tv = context->timing_variation();
20-
if (tv == 0ms){
21-
pbf_press_button(context, BUTTON_A, 16ms, 8ms);
22-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 3);
23-
ssf_issue_scroll(context, SSF_SCROLL_UP, 0);
24-
pbf_press_button(context, BUTTON_A, 1ms, 0ms);
25-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 3);
26-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 3);
27-
// ssf_press_button(context, BUTTON_A, 2);
28-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 3);
29-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 0);
30-
pbf_press_button(context, BUTTON_A, 16ms, 8ms);
31-
pbf_press_button(context, BUTTON_A, 16ms, 8ms);
32-
for (uint8_t c = 0; c < 6; c++){
33-
ssf_issue_scroll(context, SSF_SCROLL_LEFT, 3);
34-
}
35-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 3);
36-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 0);
37-
}else{
38-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
39-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
40-
ssf_issue_scroll_ptv(context, SSF_SCROLL_UP);
41-
ssf_press_button_ptv(context, BUTTON_A);
42-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
43-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
44-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
45-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
46-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
47-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
48-
for (uint8_t c = 0; c < 6; c++){
49-
ssf_issue_scroll_ptv(context, SSF_SCROLL_LEFT);
50-
}
51-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
52-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
53-
}
18+
void roll_date_forward_1(JoyconContext& context){
19+
/*
20+
uint8_t scroll_delay = fast ? 3 : 4;
21+
uint8_t up_delay = fast ? 2 : 3;
22+
23+
pbf_press_button(context, BUTTON_A, 20, 10);
24+
ssf_issue_scroll(context, SSF_SCROLL_UP, 0);
25+
pbf_press_button(context, BUTTON_A, up_delay);
26+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
27+
ssf_issue_scroll(context, SSF_SCROLL_UP, up_delay);
28+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
29+
pbf_press_button(context, BUTTON_A, 0);
30+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
31+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
32+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 0);
33+
pbf_press_button(context, BUTTON_A, 20, 10);
34+
*/
5435
}
55-
void roll_date_forward_1(JoyconContext& context, bool fast){
56-
// If (fast == true) this will run faster, but slightly less reliably.
57-
58-
Milliseconds tv = context->timing_variation();
59-
if (tv == 0ms){
60-
uint8_t scroll_delay = fast ? 3 : 4;
61-
uint8_t up_delay = fast ? 2 : 3;
62-
63-
ssf_press_button(context, BUTTON_A, 20, 10);
64-
ssf_issue_scroll(context, SSF_SCROLL_UP, 0);
65-
ssf_press_button(context, BUTTON_A, up_delay);
66-
// ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
67-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
68-
ssf_issue_scroll(context, SSF_SCROLL_UP, up_delay);
69-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
70-
ssf_press_button(context, BUTTON_A, 0);
71-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
72-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
73-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 0);
74-
ssf_press_button(context, BUTTON_A, 20, 10);
75-
}else{
76-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
77-
ssf_issue_scroll_ptv(context, SSF_SCROLL_UP);
78-
ssf_press_button_ptv(context, BUTTON_A);
79-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
80-
ssf_issue_scroll_ptv(context, SSF_SCROLL_UP);
81-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
82-
ssf_press_button_ptv(context, BUTTON_A);
83-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
84-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
85-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
86-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
87-
}
88-
89-
}
90-
void roll_date_backward_N(JoyconContext& context, uint8_t skips, bool fast){
36+
void roll_date_backward_N(JoyconContext& context, uint8_t skips){
37+
/*
9138
// If (fast == true) this will run faster, but slightly less reliably.
9239
9340
if (skips == 0){
9441
return;
9542
}
9643
9744
Milliseconds tv = context->timing_variation();
98-
if (tv == 0ms){
99-
uint8_t scroll_delay = fast ? 3 : 4;
100-
uint8_t up_delay = 3;
101-
102-
ssf_press_button(context, BUTTON_A, 20, 10);
103-
for (uint8_t c = 0; c < skips - 1; c++){
104-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, up_delay);
105-
}
106-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 0);
107-
ssf_press_button(context, BUTTON_A, up_delay);
108-
// ssf_issue_scroll(context, SSF_SCROLL_RIGHT, delay);
109-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
110-
for (uint8_t c = 0; c < skips - 1; c++){
111-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, up_delay);
112-
}
113-
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 0);
114-
ssf_press_button(context, BUTTON_A, up_delay);
115-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
116-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
117-
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 0);
118-
// if (!fast){
119-
// // Add an extra one in case one is dropped.
120-
// ssf_issue_scroll(context, SSF_SCROLL_RIGHT, delay);
121-
// }
122-
ssf_press_button(context, BUTTON_A, 20, 10);
123-
}else{
124-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
125-
if (skips >= 60){
126-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN, 6000ms, 6000ms);
127-
}else{
128-
for (uint8_t c = 0; c < skips; c++){
129-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
130-
}
131-
}
132-
ssf_press_button_ptv(context, BUTTON_A);
133-
// ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
134-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
135-
if (skips >= 60){
136-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN, 6000ms, 6000ms);
137-
}else{
138-
for (uint8_t c = 0; c < skips; c++){
139-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN);
140-
}
141-
}
142-
ssf_press_button_ptv(context, BUTTON_A);
143-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
144-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
145-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
146-
// if (!fast){
147-
// // Add an extra one in case one is dropped.
148-
// ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
149-
// }
150-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
151-
}
152-
153-
154-
}
155-
void touch_date_from_home(JoyconContext& context, Milliseconds settings_to_home_delay){
156-
// Touch the date without changing it. This prevents unintentional rollovers.
157-
158-
home_to_date_time(context, true, true);
159-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
45+
uint8_t scroll_delay = fast ? 3 : 4;
46+
uint8_t up_delay = 3;
16047
161-
ssf_press_button_ptv(context, BUTTON_A, 0ms);
162-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
163-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
164-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
165-
ssf_press_button_ptv(context, BUTTON_A, 0ms);
166-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
167-
168-
ssf_issue_scroll_ptv(context, SSF_SCROLL_LEFT);
169-
ssf_issue_scroll_ptv(context, SSF_SCROLL_UP, 16ms);
170-
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT, 0ms);
171-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
172-
173-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
174-
ssf_issue_scroll_ptv(context, SSF_SCROLL_LEFT);
175-
ssf_issue_scroll_ptv(context, SSF_SCROLL_DOWN, 16ms);
176-
ssf_press_button(context, BUTTON_HOME, settings_to_home_delay, 80ms);
48+
pbf_press_button(context, BUTTON_A, 20, 10);
49+
for (uint8_t c = 0; c < skips - 1; c++){
50+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, up_delay);
51+
}
52+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 0);
53+
pbf_press_button(context, BUTTON_A, up_delay);
54+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
55+
for (uint8_t c = 0; c < skips - 1; c++){
56+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, up_delay);
57+
}
58+
ssf_issue_scroll(context, SSF_SCROLL_DOWN, 0);
59+
pbf_press_button(context, BUTTON_A, up_delay);
60+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
61+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, scroll_delay);
62+
ssf_issue_scroll(context, SSF_SCROLL_RIGHT, 0);
63+
pbf_press_button(context, BUTTON_A, 20, 10);
64+
*/
17765
}
17866
void rollback_hours_from_home(
17967
JoyconContext& context,
18068
uint8_t hours,
18169
Milliseconds settings_to_home_delay
18270
){
71+
/*
18372
home_to_date_time(context, true, false);
18473
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
18574
@@ -193,8 +82,9 @@ void rollback_hours_from_home(
19382
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
19483
ssf_issue_scroll_ptv(context, SSF_SCROLL_RIGHT);
19584
196-
ssf_press_button_ptv(context, BUTTON_A, 160ms, 80ms);
85+
pbf_press_button(context, BUTTON_A, 160ms, 80ms);
19786
ssf_press_button(context, BUTTON_HOME, settings_to_home_delay, 80ms);
87+
*/
19888
}
19989

20090

SerialPrograms/Source/PokemonLGPE/Commands/PokemonLGPE_DateSpam.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@ constexpr uint8_t MAX_YEAR = 60;
1919

2020
namespace PokemonLGPE{
2121

22-
void neutral_date_skip (JoyconContext& context);
2322
void roll_date_forward_1 (JoyconContext& context, bool fast);
2423
void roll_date_backward_N (JoyconContext& context, uint8_t skips, bool fast);
25-
void touch_date_from_home (JoyconContext& context, Milliseconds settings_to_home_delay);
2624
void rollback_hours_from_home(
2725
JoyconContext& context,
2826
uint8_t hours,

0 commit comments

Comments
 (0)