22 #ifndef MADS_NEBULAR_CORE_ASOUND_H 23 #define MADS_NEBULAR_CORE_ASOUND_H 25 #include "mads/core/sound_manager.h" 76 static bool _channelsEnabled;
81 void enable(
int flag);
82 void setPtr2(byte *pData);
83 void load(byte *pData);
84 void check(byte *nullPtr);
126 _regNum = regNum; _value = value;
130 #define ADLIB_CHANNEL_COUNT 9 131 #define ADLIB_CHANNEL_MIDWAY 5 139 byte *_dataStart =
nullptr;
140 byte *_dataEnd =
nullptr;
142 _dataEnd(dataStart + size - 1) {
171 void checkChannels();
176 void pollActiveChannel();
183 void updateChannelState();
184 void updateActiveChannel();
189 void processSample();
191 void updateFNumber();
199 int _chanCommandCount;
202 virtual void channelCommand(byte *&pSrc,
bool &updateFlag) = 0;
208 byte *loadData(
int offset,
int size);
210 int getDataOffset(byte *ptr)
const {
211 return ptr - &_soundData[0];
217 void loadSample(
int sampleIndex);
222 void write(
int reg,
int val);
227 int write2(
int state,
int reg,
int val);
237 void channelOn(
int reg,
int volume);
242 void channelOff(
int reg);
254 void playSound(
int offset,
int size);
261 void playSoundData(byte *pData,
int startingChannel = ADLIB_CHANNEL_MIDWAY);
266 bool isSoundActive(byte *pData);
271 void setFrequency(
int channel,
int freq);
276 int getRandomNumber();
282 byte *getDataPtr(
int nearPtr);
284 virtual int command0();
308 int _activeChannelNumber;
313 int _channelNum1, _channelNum2;
323 int _activeChannelReg;
325 bool _amDep, _vibDep, _splitPoint;
336 int dataOffset,
int dataSize);
347 static void validate();
367 void noise()
override;
373 return _frameCounter;
379 void setVolume(
int volume)
override;
~ASound() override
Definition: asound.h:341
Definition: sound_manager.h:42
Definition: mps_installer.h:31
int getFrameCounter()
Definition: asound.h:372