22 #include "audio/sid.h" 23 #include "common/debug.h" 24 #include "freescape/music.h" 33 const uint8_t *trackDataPtr;
35 const uint8_t *patternDataPtr;
37 uint8_t instrumentIndex;
46 uint8_t portaTargetNote;
57 uint8_t sustainRelease;
61 uint8_t arpeggioIndex;
62 uint8_t arpeggioSpeed;
63 uint8_t arpeggioCounter;
64 uint8_t arpeggioNoteOffsetIndex;
69 uint8_t vibratoDirection;
70 int16_t vibratoCurrentOffset;
75 uint8_t hardRestartValue;
76 uint8_t hardRestartDelay;
77 uint8_t hardRestartCounter;
78 bool hardRestartActive;
89 uint8_t whatever2_vibDirToggle;
92 uint16_t portaStepRaw;
96 uint8_t something_else[3];
102 uint8_t arpTableIndex;
103 uint8_t arpSpeedHiNibble;
108 uint16_t stuff_freq_porta_vib;
109 uint16_t stuff_freq_base;
110 uint16_t stuff_freq_hard_restart;
111 uint8_t stuff_arp_counter;
112 uint8_t stuff_arp_note_index;
115 uint8_t things_vib_state;
116 uint16_t things_vib_depth;
117 uint8_t things_vib_delay_reload;
118 uint8_t things_vib_delay_ctr;
120 uint8_t currentNoteSlideTarget;
123 uint8_t glideDownTimer;
132 uint8_t pwLo()
const {
return something_else[0]; }
133 uint8_t pwHi()
const {
return something_else[2]; }
134 void setPwLo(uint8_t val) { something_else[0] = val; }
135 void setPwHi(uint8_t val) { something_else[2] = val; }
138 trackDataPtr =
nullptr;
140 patternDataPtr =
nullptr;
158 arpeggioNoteOffsetIndex = 0;
162 vibratoDirection = 0;
163 vibratoCurrentOffset = 0;
165 hardRestartValue = 0;
166 hardRestartDelay = 0;
167 hardRestartCounter = 0;
168 hardRestartActive =
false;
180 whatever2_vibDirToggle = 0;
182 memset(something_else, 0,
sizeof(something_else));
185 arpSpeedHiNibble = 0;
186 stuff_freq_porta_vib = 0;
188 stuff_freq_hard_restart = 0;
189 stuff_arp_counter = 0;
190 stuff_arp_note_index = 0;
191 things_vib_state = 0;
192 things_vib_depth = 0;
193 things_vib_delay_reload = 0;
194 things_vib_delay_ctr = 0;
195 currentNoteSlideTarget = 0;
204 enum PlayState { STOPPED,
207 enum ContinuousEffectEntry {
212 PlayState _playState;
213 uint8_t _targetTuneIndex;
216 uint8_t _globalTempo;
217 int8_t _globalTempoCounter;
220 VoiceState _voiceState[3];
227 void startMusic()
override;
228 void stopMusic()
override;
229 bool isPlaying()
const override;
234 void SID_Write(
int reg, uint8_t data);
236 void handleChangeTune(
int tuneIndex);
237 void handleResetVoices();
238 void playVoice(
int voiceIndex);
239 void applyNote(VoiceState &v,
int sidOffset,
const uint8_t *instA0);
240 ContinuousEffectEntry postNoteEffectSetup(VoiceState &v,
const uint8_t *instA0,
const uint8_t *instA1);
241 void applyContinuousEffects(VoiceState &v,
int sidOffset,
const uint8_t *instA0,
const uint8_t *instA1,
bool startAtPortamento);
242 void applyHardRestart(VoiceState &v,
int sidOffset,
const uint8_t *instA1);
Definition: c64.music.h:28