interpreter: increase keyon delay

This commit is contained in:
Zack Buhman 2025-07-02 21:22:53 -05:00
parent 7afce9e5b9
commit e2be2bfcc6
3 changed files with 9 additions and 3 deletions

View File

@ -1,6 +1,6 @@
all: xm_player.elf
OPT = -O2
OPT = -O1
MAKEFILE_PATH := $(patsubst %/,%,$(dir $(abspath $(firstword $(MAKEFILE_LIST)))))
LIB ?= $(MAKEFILE_PATH)/dreamcast

View File

@ -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;
}
}

View File

@ -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,