aboutsummaryrefslogtreecommitdiffstats
path: root/src/gba
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2024-02-09 16:07:42 +0100
committerBad Diode <bd@badd10de.dev>2024-02-09 16:07:42 +0100
commitc9a48c8cbea8718181632c461a7ed9abae9988e3 (patch)
tree0f2a5b59ae5a77b4950baae81a205d2d4f684d2d /src/gba
parent56d69da83d1f004c79d2c3c5d27c28a5f3ec973e (diff)
downloadstepper-c9a48c8cbea8718181632c461a7ed9abae9988e3.tar.gz
stepper-c9a48c8cbea8718181632c461a7ed9abae9988e3.zip
Use a more loose time for nudging triggers
Diffstat (limited to 'src/gba')
-rw-r--r--src/gba/gba.h80
1 files changed, 30 insertions, 50 deletions
diff --git a/src/gba/gba.h b/src/gba/gba.h
index 2cc167f..3f629fd 100644
--- a/src/gba/gba.h
+++ b/src/gba/gba.h
@@ -347,64 +347,44 @@ _key_retrig(int key, int offset, int frames) {
347 } 347 }
348 switch (key) { 348 switch (key) {
349 case KEY_L: { 349 case KEY_L: {
350 if (key_hold(key)) { 350 if (ctrl.key_l < offset) { return false; }
351 if (ctrl.key_l < offset) { return false; } 351 if (ctrl.key_l % frames == 0) { return true; }
352 if (ctrl.key_l % frames == 0) { return true; }
353 }
354 } break; 352 } break;
355 case KEY_R: { 353 case KEY_R: {
356 if (key_hold(key)) { 354 if (ctrl.key_r < offset) { return false; }
357 if (ctrl.key_r < offset) { return false; } 355 if (ctrl.key_r % frames == 0) { return true; }
358 if (ctrl.key_r % frames == 0) { return true; }
359 }
360 } break; 356 } break;
361 case KEY_A: { 357 case KEY_A: {
362 if (key_hold(key)) { 358 if (ctrl.key_a < offset) { return false; }
363 if (ctrl.key_a < offset) { return false; } 359 if (ctrl.key_a % frames == 0) { return true; }
364 if (ctrl.key_a % frames == 0) { return true; }
365 }
366 } break; 360 } break;
367 case KEY_B: { 361 case KEY_B: {
368 if (key_hold(key)) { 362 if (ctrl.key_b < offset) { return false; }
369 if (ctrl.key_b < offset) { return false; } 363 if (ctrl.key_b % frames == 0) { return true; }
370 if (ctrl.key_b % frames == 0) { return true; }
371 }
372 } break; 364 } break;
373 case KEY_SELECT: { 365 case KEY_SELECT: {
374 if (key_hold(key)) { 366 if (ctrl.key_select < offset) { return false; }
375 if (ctrl.key_select < offset) { return false; } 367 if (ctrl.key_select % frames == 0) { return true; }
376 if (ctrl.key_select % frames == 0) { return true; }
377 }
378 } break; 368 } break;
379 case KEY_START: { 369 case KEY_START: {
380 if (key_hold(key)) { 370 if (ctrl.key_start < offset) { return false; }
381 if (ctrl.key_start < offset) { return false; } 371 if (ctrl.key_start % frames == 0) { return true; }
382 if (ctrl.key_start % frames == 0) { return true; }
383 }
384 } break; 372 } break;
385 case KEY_UP: { 373 case KEY_UP: {
386 if (key_hold(key)) { 374 if (ctrl.key_up < offset) { return false; }
387 if (ctrl.key_up < offset) { return false; } 375 if (ctrl.key_up % frames == 0) { return true; }
388 if (ctrl.key_up % frames == 0) { return true; }
389 }
390 } break; 376 } break;
391 case KEY_DOWN: { 377 case KEY_DOWN: {
392 if (key_hold(key)) { 378 if (ctrl.key_down < offset) { return false; }
393 if (ctrl.key_down < offset) { return false; } 379 if (ctrl.key_down % frames == 0) { return true; }
394 if (ctrl.key_down % frames == 0) { return true; }
395 }
396 } break; 380 } break;
397 case KEY_LEFT: { 381 case KEY_LEFT: {
398 if (key_hold(key)) { 382 if (ctrl.key_left < offset) { return false; }
399 if (ctrl.key_left < offset) { return false; } 383 if (ctrl.key_left % frames == 0) { return true; }
400 if (ctrl.key_left % frames == 0) { return true; }
401 }
402 } break; 384 } break;
403 case KEY_RIGHT: { 385 case KEY_RIGHT: {
404 if (key_hold(key)) { 386 if (ctrl.key_right < offset) { return false; }
405 if (ctrl.key_right < offset) { return false; } 387 if (ctrl.key_right % frames == 0) { return true; }
406 if (ctrl.key_right % frames == 0) { return true; }
407 }
408 } break; 388 } break;
409 } 389 }
410 return false; 390 return false;
@@ -419,16 +399,16 @@ key_retrig(int key) {
419static inline 399static inline
420void 400void
421update_controller(void) { 401update_controller(void) {
422 if (key_pressed(KEY_UP)) { ctrl.key_up++; } else if (key_released(KEY_UP)) { ctrl.key_up = 0; } 402 if (key_pressed(KEY_UP)) { ctrl.key_up++; } else { ctrl.key_up = 0; }
423 if (key_pressed(KEY_DOWN)) { ctrl.key_down++; } else if (key_released(KEY_DOWN)) { ctrl.key_down = 0; } 403 if (key_pressed(KEY_DOWN)) { ctrl.key_down++; } else { ctrl.key_down = 0; }
424 if (key_pressed(KEY_LEFT)) { ctrl.key_left++; } else if (key_released(KEY_LEFT)) { ctrl.key_left = 0; } 404 if (key_pressed(KEY_LEFT)) { ctrl.key_left++; } else { ctrl.key_left = 0; }
425 if (key_pressed(KEY_RIGHT)) { ctrl.key_right++; } else if (key_released(KEY_RIGHT)) { ctrl.key_right = 0; } 405 if (key_pressed(KEY_RIGHT)) { ctrl.key_right++; } else { ctrl.key_right = 0; }
426 if (key_pressed(KEY_L)) { ctrl.key_l++; } else if (key_released(KEY_L)) { ctrl.key_l = 0; } 406 if (key_pressed(KEY_L)) { ctrl.key_l++; } else { ctrl.key_l = 0; }
427 if (key_pressed(KEY_R)) { ctrl.key_r++; } else if (key_released(KEY_R)) { ctrl.key_r = 0; } 407 if (key_pressed(KEY_R)) { ctrl.key_r++; } else { ctrl.key_r = 0; }
428 if (key_pressed(KEY_A)) { ctrl.key_a++; } else if (key_released(KEY_A)) { ctrl.key_a = 0; } 408 if (key_pressed(KEY_A)) { ctrl.key_a++; } else { ctrl.key_a = 0; }
429 if (key_pressed(KEY_B)) { ctrl.key_b++; } else if (key_released(KEY_B)) { ctrl.key_b = 0; } 409 if (key_pressed(KEY_B)) { ctrl.key_b++; } else { ctrl.key_b = 0; }
430 if (key_pressed(KEY_SELECT)) { ctrl.key_select++; } else if (key_released(KEY_SELECT)) { ctrl.key_select = 0; } 410 if (key_pressed(KEY_SELECT)) { ctrl.key_select++; } else { ctrl.key_select = 0; }
431 if (key_pressed(KEY_START)) { ctrl.key_start++; } else if (key_released(KEY_START)) { ctrl.key_start = 0; } 411 if (key_pressed(KEY_START)) { ctrl.key_start++; } else { ctrl.key_start = 0; }
432} 412}
433 413
434static inline 414static inline