aboutsummaryrefslogtreecommitdiffstats
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
parent56d69da83d1f004c79d2c3c5d27c28a5f3ec973e (diff)
downloadstepper-c9a48c8cbea8718181632c461a7ed9abae9988e3.tar.gz
stepper-c9a48c8cbea8718181632c461a7ed9abae9988e3.zip
Use a more loose time for nudging triggers
-rw-r--r--src/drawing.c5
-rw-r--r--src/gba/gba.h80
-rw-r--r--src/globals.c1
-rw-r--r--src/sequencer.c4
4 files changed, 36 insertions, 54 deletions
diff --git a/src/drawing.c b/src/drawing.c
index 1d91d86..befbdde 100644
--- a/src/drawing.c
+++ b/src/drawing.c
@@ -1055,11 +1055,14 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
1055 u8 col_env = cols[7] != COL_OFF && cols[8] != COL_OFF ? COL_ACC_2 : COL_OFF; 1055 u8 col_env = cols[7] != COL_OFF && cols[8] != COL_OFF ? COL_ACC_2 : COL_OFF;
1056 if (params->wave_attack != 0) { 1056 if (params->wave_attack != 0) {
1057 draw_line(x0, y0, x1, y1, col_env); 1057 draw_line(x0, y0, x1, y1, col_env);
1058 } else {
1059 draw_line(x0, y0, x0, y0 - 15, col_env);
1058 } 1060 }
1059 if (params->wave_decay == 0) { 1061 if (params->wave_decay == 0) {
1060 x2 = x + PARAMS_BOX_OFFSET_X * 2 - 4; 1062 x2 = x + PARAMS_BOX_OFFSET_X * 2 - 4;
1061 y2 = y; 1063 y2 = y;
1062 draw_line(x1, y1, x2, y2, col_env); 1064 draw_line(x1, y1, x2, y2, col_env);
1065 draw_line(x2, y2, x2, y2 + 15, col_env);
1063 } else { 1066 } else {
1064 draw_line(x1, y1, x2, y2, col_env); 1067 draw_line(x1, y1, x2, y2, col_env);
1065 draw_line(x2, y2, x + PARAMS_BOX_OFFSET_X * 2 - 4, y2, col_env); 1068 draw_line(x2, y2, x + PARAMS_BOX_OFFSET_X * 2 - 4, y2, col_env);
@@ -2049,7 +2052,7 @@ draw_notif_bar() {
2049 2052
2050 if (settings.help == TOGGLE_ON) { 2053 if (settings.help == TOGGLE_ON) {
2051 if (input_handler == handle_trigger_selection) { 2054 if (input_handler == handle_trigger_selection) {
2052 if (key_pressed(KEY_B) && ctrl.key_b > 10) { 2055 if (nudge) {
2053 txt_draws_small("D-PAD:NUDGE TRIGGER", x0 + 2, y0 + 1, color); 2056 txt_draws_small("D-PAD:NUDGE TRIGGER", x0 + 2, y0 + 1, color);
2054 } else if (key_pressed(KEY_SELECT)) { 2057 } else if (key_pressed(KEY_SELECT)) {
2055 txt_draws_small("SEL+B:COPY TRIG SEL+A:PASTE TRIG", x0 + 2, y0 + 1, color); 2058 txt_draws_small("SEL+B:COPY TRIG SEL+A:PASTE TRIG", x0 + 2, y0 + 1, color);
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
diff --git a/src/globals.c b/src/globals.c
index 9d0a5bb..b653eaf 100644
--- a/src/globals.c
+++ b/src/globals.c
@@ -19,6 +19,7 @@ u32 last_pattern_loc = 0;
19u32 last_right_col_loc = 0; 19u32 last_right_col_loc = 0;
20u32 last_step_counter = 0; 20u32 last_step_counter = 0;
21bool clear_screen = true; 21bool clear_screen = true;
22bool nudge = false;
22 23
23// 24//
24// Color indexes. 25// Color indexes.
diff --git a/src/sequencer.c b/src/sequencer.c
index 4b7d174..9efd506 100644
--- a/src/sequencer.c
+++ b/src/sequencer.c
@@ -951,7 +951,6 @@ handle_pattern_chain(void) {
951 switch (param_selection_loc) { 951 switch (param_selection_loc) {
952 case CHAIN_BTN_ENABLE: { 952 case CHAIN_BTN_ENABLE: {
953 chain.enabled ^= 1; 953 chain.enabled ^= 1;
954// chain.playing ^= 1;
955 } break; 954 } break;
956 case CHAIN_BTN_CLEAR: { 955 case CHAIN_BTN_CLEAR: {
957 chain.len = 0; 956 chain.len = 0;
@@ -1689,9 +1688,8 @@ void
1689handle_trigger_selection(void) { 1688handle_trigger_selection(void) {
1690 TriggerNote *trig = get_current_trig(); 1689 TriggerNote *trig = get_current_trig();
1691 1690
1692 static bool nudge = false;
1693 bool empty = patterns[pattern_selection_loc].empty; 1691 bool empty = patterns[pattern_selection_loc].empty;
1694 if (key_pressed(KEY_B) && ctrl.key_b > 10) { 1692 if (ctrl.key_b > 30) {
1695 nudge = true; 1693 nudge = true;
1696 } else if (key_released(KEY_B)) { 1694 } else if (key_released(KEY_B)) {
1697 if (nudge) { 1695 if (nudge) {