22 #ifndef FREESCAPE_DRILLER_OPL_MUSIC_H 23 #define FREESCAPE_DRILLER_OPL_MUSIC_H 25 #include "audio/fmopl.h" 26 #include "freescape/music.h" 35 void startMusic()
override;
36 void stopMusic()
override;
37 bool isPlaying()
const override;
45 enum ContinuousEffectEntry {
52 const uint8_t *trackDataPtr;
54 const uint8_t *patternDataPtr;
56 uint8_t instrumentIndex;
61 uint8_t currentNoteSlideTarget;
62 uint8_t currentControl;
68 uint8_t whatever2_vibDirToggle;
69 uint16_t portaStepRaw;
70 uint8_t something_else[3];
72 uint8_t arpTableIndex;
73 uint8_t arpSpeedHiNibble;
74 uint16_t stuff_freq_porta_vib;
75 uint16_t stuff_freq_base;
76 uint8_t stuff_arp_counter;
77 uint8_t things_vib_state;
78 uint16_t things_vib_depth;
79 uint8_t things_vib_delay_reload;
80 uint8_t things_vib_delay_ctr;
81 uint8_t glideDownTimer;
82 uint16_t baseSIDFrequency;
83 uint16_t baseFrequencyFnum;
84 uint8_t baseFrequencyBlock;
85 uint16_t frequencyFnum;
86 uint8_t frequencyBlock;
95 uint8_t _targetTuneIndex;
97 int8_t _globalTempoCounter;
99 VoiceState _voiceState[kChannelCount];
102 void setupTune(
int tuneIndex);
105 void playVoice(
int channel);
106 void applyNote(
int channel, VoiceState &voice,
const uint8_t *instA0,
const uint8_t *instA1);
107 ContinuousEffectEntry postNoteEffectSetup(VoiceState &voice,
const uint8_t *instA0,
const uint8_t *instA1);
108 void applyContinuousEffects(
int channel, VoiceState &voice,
const uint8_t *instA0,
const uint8_t *instA1,
bool startAtPortamento);
109 void applyHardRestart(
int channel, VoiceState &voice,
const uint8_t *instA1);
110 void setOPLInstrument(
int channel, VoiceState &voice);
111 void applyPulseWidth(
int channel,
const VoiceState &voice);
112 void noteOn(
int channel, VoiceState &voice, uint8_t note);
113 void noteOff(
int channel);
114 void setFrequency(
int channel, VoiceState &voice, uint16 fnum, byte block);
115 void writeFrequency(
int channel,
const VoiceState &voice, uint16 fnum, byte block);
116 void writeNoteFrequency(
int channel, VoiceState &voice, uint8_t note);
117 void writeSIDFrequency(
int channel, VoiceState &voice, uint16 sidFrequency);
118 void noteToFnumBlock(
int note, uint16 &fnum, byte &block)
const;
Definition: opl.music.h:30