From 45ad578200d91a1e21ea2b5661efa0e11f99ebca Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Sat, 9 Sep 2023 12:46:48 +0200 Subject: Fix some minor bugs and try to improve consistency. --- Makefile | 2 +- src/drawing.c | 19 ++++++++++++++----- src/main.c | 6 ++++++ src/sequencer.c | 4 ++-- src/settings.c | 2 ++ 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 0bc4bb5..6bf8ba7 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ INC_FLAGS := $(addprefix -I,$(INC_DIRS)) INC_FLAGS += -I$(LIBGBA_SRC) # Output library names and executables. -TARGET := STEPPER-v1.7-rc1 +TARGET := STEPPER-v1.7-rc3 ELF := $(BUILD_DIR)/$(TARGET).elf BIN := $(BUILD_DIR)/$(TARGET).gba diff --git a/src/drawing.c b/src/drawing.c index 274fe66..97435ad 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -1251,11 +1251,20 @@ draw_parameters(void) { input_handler == handle_param_selection_sq2 || input_handler == handle_param_selection_wave || input_handler == handle_param_selection_noise) { - switch (channel_selection_loc) { - case 0: { draw_parameters_square(&pat->ch1.params[trig_selection_loc], true, false); } break; - case 1: { draw_parameters_square(&pat->ch2.params[trig_selection_loc], false, false); } break; - case 2: { draw_parameters_wave(&pat->ch3.params[trig_selection_loc], false); } break; - case 3: { draw_parameters_noise(&pat->ch4.params[trig_selection_loc], false); } break; + if (!pat->empty) { + switch (channel_selection_loc) { + case 0: { draw_parameters_square(&pat->ch1.params[trig_selection_loc], true, false); } break; + case 1: { draw_parameters_square(&pat->ch2.params[trig_selection_loc], false, false); } break; + case 2: { draw_parameters_wave(&pat->ch3.params[trig_selection_loc], false); } break; + case 3: { draw_parameters_noise(&pat->ch4.params[trig_selection_loc], false); } break; + } + } else { + switch (channel_selection_loc) { + case 0: { draw_parameters_square(&default_ch1.params, true, false); } break; + case 1: { draw_parameters_square(&default_ch2.params, false, false); } break; + case 2: { draw_parameters_wave(&default_ch3.params, true); } break; + case 3: { draw_parameters_noise(&default_ch4.params, true); } break; + } } return; } diff --git a/src/main.c b/src/main.c index e9d1baf..1970e8e 100644 --- a/src/main.c +++ b/src/main.c @@ -81,6 +81,10 @@ WITH REGARD TO THIS SOFTWARE. // + Cursor on bank can wrap around (up/down) but the same can't be done on // patterns. // + Add help for pattern chain +// + Make sure when switching to global bpm, the currently selected tempo is +// used. +// + Make sure parameters show the default ones on empty/cleared patterns and +// you can't modify non active trig params or params on empty patterns. // - Add CREDITS to the documentation for now, should probably be a menu item // later. // - Make sure sync works with the same cable for in/out. @@ -89,6 +93,8 @@ WITH REGARD TO THIS SOFTWARE. #include "renderer_m0.c" #include "globals.c" +#include "assets.c" +#include "patterns.c" #include "settings.c" #include "dsound.c" #include "scale.c" diff --git a/src/sequencer.c b/src/sequencer.c index 3bd214f..27874f5 100644 --- a/src/sequencer.c +++ b/src/sequencer.c @@ -1,7 +1,5 @@ #include "rng.c" #include "text.h" -#include "assets.c" -#include "patterns.c" #include "save.c" #include "drawing.c" #include "clipboard.c" @@ -1459,6 +1457,7 @@ handle_trigger_selection(void) { redraw_channels = true; redraw_pattern_buttons = true; } else { + if (trig->active && !patterns[pattern_selection_loc].empty) { // Switch to parameter selection. switch (channel_selection_loc) { case 0: { input_handler = handle_param_selection_sq1; } break; @@ -1466,6 +1465,7 @@ handle_trigger_selection(void) { case 2: { input_handler = handle_param_selection_wave; } break; case 3: { input_handler = handle_param_selection_noise; } break; } + } redraw_params = true; } } diff --git a/src/settings.c b/src/settings.c index 31b3dd3..374618c 100644 --- a/src/settings.c +++ b/src/settings.c @@ -104,6 +104,7 @@ handle_settings_input(void) { settings.global_bpm++; } redraw_bpm = true; + settings.bpm = patterns[pattern_selection_loc].bpm; if (play_status) { update_bpm = true; } @@ -158,6 +159,7 @@ handle_settings_input(void) { settings.global_bpm--; } redraw_bpm = true; + settings.bpm = patterns[pattern_selection_loc].bpm; if (play_status) { update_bpm = true; } -- cgit v1.2.1