diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index 7e1a56081..ceeb0fbb6 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -29,6 +29,12 @@ #define addWrite(a,v) regWrites.push_back(DivRegWrite(a,v)); +// HOW TO ADD A NEW COMMAND: +// add it to this enum. then see playback.cpp. +// there is a const char* cmdName[] array, which contains the command +// names as strings for the commands (and other debug stuff). +// +// if you miss it, the program will crash or misbehave at some point. enum DivDispatchCmds { DIV_CMD_NOTE_ON=0, DIV_CMD_NOTE_OFF, diff --git a/src/engine/instrument.h b/src/engine/instrument.h index abee4223a..f1885225b 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -23,6 +23,9 @@ #include "dataErrors.h" #include "../ta-utils.h" +// NOTICE! +// before adding new instrument types to this struct, please ask me first. +// absolutely zero support granted to conflicting formats. enum DivInstrumentType { DIV_INS_STD=0, DIV_INS_FM=1, diff --git a/src/engine/platform/pcspkr.cpp b/src/engine/platform/pcspkr.cpp index 5f57f31ae..f485bca8a 100644 --- a/src/engine/platform/pcspkr.cpp +++ b/src/engine/platform/pcspkr.cpp @@ -122,7 +122,11 @@ void DivPlatformPCSpeaker::beepFreq(int freq) { gettimeofday(&ie.time,NULL); ie.type=EV_SND; ie.code=SND_TONE; - ie.value=freq; + if (freq>0) { + ie.value=chipClock/freq; + } else { + ie.value=0; + } if (write(beepFD,&ie,sizeof(struct input_event))<0) { perror("error while writing frequency!"); } else { diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 511e55e17..acc4e7607 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -42,6 +42,7 @@ const char* notes[12]={ "C-", "C#", "D-", "D#", "E-", "F-", "F#", "G-", "G#", "A-", "A#", "B-" }; +// update this when adding new commands. const char* cmdName[DIV_CMD_MAX]={ "NOTE_ON", "NOTE_OFF",