From e2be2bfcc6c927384cebe8139ddf013b8728e9eb Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Wed, 2 Jul 2025 21:22:53 -0500 Subject: [PATCH] interpreter: increase keyon delay --- Makefile | 2 +- src/interpreter.cpp | 8 ++++++-- src/scene/tracker/channel_status.cpp | 2 ++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index dc39c65..7c1915a 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: xm_player.elf -OPT = -O2 +OPT = -O1 MAKEFILE_PATH := $(patsubst %/,%,$(dir $(abspath $(firstword $(MAKEFILE_LIST))))) LIB ?= $(MAKEFILE_PATH)/dreamcast diff --git a/src/interpreter.cpp b/src/interpreter.cpp index cbaec2f..019aab6 100644 --- a/src/interpreter.cpp +++ b/src/interpreter.cpp @@ -249,7 +249,11 @@ void interrupt() break; } */ - if (state.channel[ch].keyon == 255) { + const int keyon_tick = 254; + if (state.channel[ch].keyon > keyon_tick) { + state.channel[ch].keyon -= 1; + } + else if (state.channel[ch].keyon == keyon_tick) { wait(); aica_sound.channel[ch].KYONB(1); state.channel[ch].keyon -= 1; } @@ -261,7 +265,7 @@ void interrupt() } for (int ch = 0; ch < 64; ch++) { int keyon = state.channel[ch].keyon; - if (keyon != 255 && keyon != 0) { + if (keyon != 0) { state.channel[ch].keyon -= 1; } } diff --git a/src/scene/tracker/channel_status.cpp b/src/scene/tracker/channel_status.cpp index aa11610..fe3f80f 100644 --- a/src/scene/tracker/channel_status.cpp +++ b/src/scene/tracker/channel_status.cpp @@ -64,6 +64,8 @@ void draw(ta_multiwriter& multi, int x, int y) int keyon = 128 * (state.channel[ch].keyon - 224) / 16; if (keyon < 0) keyon = 0; + if (keyon != 0) + printf("%d %d\n", state.channel[ch].keyon, keyon); uint32_t base_color = (keyon << 16) | (keyon << 8) | (keyon << 0); transfer_rectangle(multi.op, xi, y, 1.0 / 10000.0,