Skip to content

Commit c2aff05

Browse files
authored
Added GameCube Controller compatibility. (#6)
* Added GameCube Controller compatibility. * Update main.c * fixed exception dsi * removed debug * improved debugging * Update tui.c * Delete .vscode directory useless * Update main.c * Update tui.c * Update tui.c * Update debug.c * Removed unrelated stuff I changed. * changed u32 gcpressed to u16 * Added PAD_Init() * Fixed double input bug.
1 parent 336cfd2 commit c2aff05

File tree

4 files changed

+31
-19
lines changed

4 files changed

+31
-19
lines changed

source/debug.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
void debug_pause() {
77
while(1) {
88
WPAD_ScanPads();
9-
if (WPAD_ButtonsDown(0)) break;
9+
PAD_ScanPads();
10+
if (WPAD_ButtonsDown(0) || PAD_ButtonsDown(0)) break;
1011
}
1112
}
1213

source/main.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,16 @@ void logprint(int type, char *message) {
5151
}
5252

5353
void home_exit(int message) {
54-
if (message) logprint(0, "Press HOME to exit\n");
54+
if (message) logprint(0, "Press HOME (Start) to exit\n");
5555

5656
while(1) {
57+
VIDEO_WaitVSync();
58+
PAD_ScanPads();
5759
WPAD_ScanPads();
5860
u32 pressed = WPAD_ButtonsDown(0);
61+
u16 gcpressed = PAD_ButtonsDown(0);
5962

60-
if (pressed & WPAD_BUTTON_HOME) {
63+
if (pressed & WPAD_BUTTON_HOME || gcpressed & PAD_BUTTON_START) {
6164
exit(1);
6265
}
6366
}
@@ -73,6 +76,7 @@ int main(int argc, char **argv) {
7376
VIDEO_Init();
7477

7578
WPAD_Init();
79+
PAD_Init();
7680

7781
rmode = VIDEO_GetPreferredMode(NULL);
7882

source/tui.c

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,15 @@ int process_inputs(int limit, int* offset, int* index, int noscroll) {
4848

4949
int ret = 0;
5050
while(true) {
51+
52+
VIDEO_WaitVSync();
53+
PAD_ScanPads();
5154
WPAD_ScanPads();
5255

5356
u32 pressed = WPAD_ButtonsDown(0);
54-
if (pressed & WPAD_BUTTON_DOWN || (noscroll && (pressed & WPAD_BUTTON_RIGHT))) {
57+
u16 gcpressed = PAD_ButtonsDown(0);
58+
59+
if ( ((pressed & WPAD_BUTTON_DOWN) || (gcpressed & PAD_BUTTON_DOWN)) || (noscroll && ((pressed & WPAD_BUTTON_RIGHT) || (gcpressed & PAD_BUTTON_RIGHT)))) {
5560
(*index)++;
5661
if (noscroll) (*index) = endOfIndex;
5762
if (*(int*)index >= endOfIndex) {
@@ -62,7 +67,7 @@ int process_inputs(int limit, int* offset, int* index, int noscroll) {
6267
ret = 4;
6368
break;
6469
}
65-
else if (pressed & WPAD_BUTTON_UP || (noscroll && (pressed & WPAD_BUTTON_LEFT))) {
70+
else if (((pressed & WPAD_BUTTON_UP) || (gcpressed & PAD_BUTTON_UP)) || (noscroll && ((pressed & WPAD_BUTTON_LEFT) || (gcpressed & PAD_BUTTON_LEFT)))) {
6671
(*index)--;
6772
if (noscroll) (*index) = *(int*)offset - 1;
6873
if (*(int*)index < *(int*)offset) {
@@ -73,33 +78,33 @@ int process_inputs(int limit, int* offset, int* index, int noscroll) {
7378
ret = 5;
7479
break;
7580
}
76-
else if (!noscroll && pressed & WPAD_BUTTON_LEFT) {
81+
else if (!noscroll && ((pressed & WPAD_BUTTON_LEFT) || (gcpressed & PAD_BUTTON_LEFT))) {
7782
(*index) -= canDisplayAmount;
7883
(*offset) -= canDisplayAmount;
7984
if (*(int*)index < 0) (*index) = 0;
8085
if (*(int*)offset < 0) (*offset) = 0;
8186
break;
8287
}
83-
else if (!noscroll && pressed & WPAD_BUTTON_RIGHT) {
88+
else if (!noscroll && ((pressed & WPAD_BUTTON_RIGHT) || (gcpressed & PAD_BUTTON_RIGHT))) {
8489
(*index) += canDisplayAmount;
8590
(*offset) += canDisplayAmount;
8691
if (*(int*)index >= limit) (*index) = limit - 1;
8792
if (*(int*)offset > maxOffset) (*offset) = maxOffset;
8893
break;
8994
}
90-
else if (pressed & WPAD_BUTTON_HOME) {
95+
else if ((pressed & WPAD_BUTTON_HOME) || (gcpressed & PAD_BUTTON_START)) {
9196
ret = -1;
9297
break;
9398
}
94-
else if (pressed & WPAD_BUTTON_A) {
99+
else if (((pressed & WPAD_BUTTON_A) || (gcpressed & PAD_BUTTON_A))) {
95100
ret = 1;
96101
break;
97102
}
98-
else if (pressed & WPAD_BUTTON_B) {
103+
else if ((pressed & WPAD_BUTTON_B) || (gcpressed & PAD_BUTTON_B)) {
99104
ret = 2;
100105
break;
101106
}
102-
else if (pressed & WPAD_BUTTON_1) {
107+
else if ((pressed & WPAD_BUTTON_1) || (gcpressed & PAD_BUTTON_X)) {
103108
ret = 3;
104109
break;
105110
}
@@ -252,7 +257,7 @@ void download_app(const char* appname, const char* _hostname, json_t* app, char*
252257
check = opendir(name);
253258
if (!check) {
254259
if (mkdir(name, 0600) != 0) {
255-
printf("\ncreating directory %s failed - home to exit\n", name);
260+
printf("\ncreating directory %s failed - HOME (Start) to exit\n", name);
256261
home_exit(true);
257262
}
258263
}
@@ -307,8 +312,10 @@ void download_app(const char* appname, const char* _hostname, json_t* app, char*
307312
printf("\x1b[%d;%dH Press any button to continue.", 28 - OVERSCAN_Y, 43 - OVERSCAN_X);
308313

309314
while(true) {
315+
VIDEO_WaitVSync();
316+
PAD_ScanPads();
310317
WPAD_ScanPads();
311-
if (WPAD_ButtonsDown(0)) break;
318+
if (WPAD_ButtonsDown(0) || PAD_ButtonsDown(0)) break;
312319
}
313320

314321
free(title);
@@ -384,7 +391,7 @@ void app_info(json_t* config, const char* hostname, json_t* app, char* user_agen
384391
printf("%s", line);
385392
}
386393

387-
print_bottombar(lines, offset, printable - 1, "A to download, B for back, HOME to exit", 0);
394+
print_bottombar(lines, offset, printable - 1, "A to download, B for back, HOME (Start) to exit", 0);
388395

389396
int ret = process_inputs(lines, &offset, &index, 1);
390397
if (ret == 2) break;
@@ -430,7 +437,7 @@ void surf_category(json_t* config, const char* hostname, const char* name, json_
430437
printf("%s\n", json_string_value(json_object_get(app, "name")));
431438
}
432439

433-
print_bottombar(appsamount, offset, printable - 1, "A to engage, B for back, HOME to exit", 0);
440+
print_bottombar(appsamount, offset, printable - 1, "A to engage, B for back, HOME (Start) to exit", 0);
434441
int ret = process_inputs(appsamount, &offset, &index, 0);
435442
if (ret == 2) break;
436443
else if (ret == -1) {
@@ -473,7 +480,7 @@ void surf_repository(json_t* config, const char* hostname, char* user_agent) {
473480
printf("%s\n", json_string_value(json_object_get(category, "display_name")));
474481
}
475482

476-
print_bottombar(arraysize, offset, processed - 1, "A to engage, B for back, HOME to exit", 0);
483+
print_bottombar(arraysize, offset, processed - 1, "A to engage, B for back, HOME (Start) to exit", 0);
477484
int ret = process_inputs(arraysize, &offset, &index, 0);
478485
if (ret == 2) break;
479486
else if (ret == -1) {
@@ -508,7 +515,7 @@ void open_settings() {
508515
printf("%s", buf);
509516
}
510517

511-
print_bottombar(lines, offset, printable - 1, "B for back, HOME to exit", 0);
518+
print_bottombar(lines, offset, printable - 1, "B for back, HOME (Start) to exit", 0);
512519

513520
int ret = process_inputs(lines, &offset, &index, 1);
514521
if (ret == 2) break;
@@ -544,7 +551,7 @@ void start_tui(json_t* config, char* user_agent) {
544551
printf("%s: %s\n", provider, name);
545552
}
546553

547-
print_bottombar(reposamount, offset, printable - 1, "A to engage, 1 for settings, HOME to exit", 0);
554+
print_bottombar(reposamount, offset, printable - 1, "A to engage, 1 (X) for settings, HOME (Start) to exit", 0);
548555
}
549556
int ret = (i == 0 && reposamount == 1) ? 1 : process_inputs(reposamount, &offset, &index, 0);
550557

source/tui.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef TUI_H
22
#define TUI_H
33

4-
void start_tui();
4+
void start_tui(json_t* config, char* user_agent);
55
void clear_screen();
66

77
#endif

0 commit comments

Comments
 (0)