FM-TOWNS AUDIO: Some renaming in the euphony driver code

This commit is contained in:
athrxx 2011-05-02 02:46:22 +02:00 committed by Willem Jan Palenstijn
parent bd2c84be89
commit d9772ff88f
6 changed files with 86 additions and 79 deletions

View File

@ -27,7 +27,7 @@
TownsEuphonyDriver::TownsEuphonyDriver(Audio::Mixer *mixer) : _activeChannels(0), _sustainChannels(0),
_assignedChannels(0), _paraCount(0), _command(0), _tEnable(0), _tMode(0), _tOrdr(0), _tLevel(0),
_tTranspose(0), _musicPos(0), _musicStart(0), _playing(false), _eventBuffer(0), _bufferedEventsCount(0),
_tDetune(0), _musicPos(0), _musicStart(0), _playing(false), _eventBuffer(0), _bufferedEventsCount(0),
_tempoControlMode(0) {
_para[0] = _para[1] = 0;
_intf = new TownsAudioInterface(mixer, this);
@ -44,7 +44,7 @@ TownsEuphonyDriver::~TownsEuphonyDriver() {
delete[] _tMode;
delete[] _tOrdr;
delete[] _tLevel;
delete[] _tTranspose;
delete[] _tDetune;
}
bool TownsEuphonyDriver::init() {
@ -59,7 +59,7 @@ bool TownsEuphonyDriver::init() {
delete[] _tMode;
delete[] _tOrdr;
delete[] _tLevel;
delete[] _tTranspose;
delete[] _tDetune;
_activeChannels = new int8[16];
_sustainChannels = new int8[16];
@ -70,7 +70,7 @@ bool TownsEuphonyDriver::init() {
_tMode = new uint8[32];
_tOrdr = new uint8[32];
_tLevel = new int8[32];
_tTranspose = new int8[32];
_tDetune = new int8[32];
reset();
@ -220,21 +220,21 @@ void TownsEuphonyDriver::setOutputVolume(int mode, int volLeft, int volRight) {
_intf->callback(67, mode, volLeft, volRight);
}
int TownsEuphonyDriver::chanEnable(int tableEntry, int val) {
int TownsEuphonyDriver::configChan_enable(int tableEntry, int val) {
if (tableEntry > 31)
return 3;
_tEnable[tableEntry] = val;
return 0;
}
int TownsEuphonyDriver::chanMode(int tableEntry, int val) {
int TownsEuphonyDriver::configChan_setMode(int tableEntry, int val) {
if (tableEntry > 31)
return 3;
_tMode[tableEntry] = val;
return 0;
}
int TownsEuphonyDriver::chanOrdr(int tableEntry, int val) {
int TownsEuphonyDriver::configChan_remap(int tableEntry, int val) {
if (tableEntry > 31)
return 3;
if (val < 16)
@ -242,7 +242,7 @@ int TownsEuphonyDriver::chanOrdr(int tableEntry, int val) {
return 0;
}
int TownsEuphonyDriver::chanVolumeShift(int tableEntry, int val) {
int TownsEuphonyDriver::configChan_adjustVolume(int tableEntry, int val) {
if (tableEntry > 31)
return 3;
if (val <= 40)
@ -250,11 +250,11 @@ int TownsEuphonyDriver::chanVolumeShift(int tableEntry, int val) {
return 0;
}
int TownsEuphonyDriver::chanNoteShift(int tableEntry, int val) {
int TownsEuphonyDriver::configChan_setDetune(int tableEntry, int val) {
if (tableEntry > 31)
return 3;
if (val <= 40)
_tTranspose[tableEntry] = (int8)(val & 0xff);
_tDetune[tableEntry] = (int8)(val & 0xff);
return 0;
}
@ -325,7 +325,7 @@ void TownsEuphonyDriver::resetTables() {
for (int i = 0; i < 32; i++)
_tOrdr[i] = i & 0x0f;
memset(_tLevel, 0, 32);
memset(_tTranspose, 0, 32);
memset(_tDetune, 0, 32);
}
void TownsEuphonyDriver::resetTempo() {
@ -672,8 +672,8 @@ bool TownsEuphonyDriver::evtSetupNote() {
uint8 velo = _musicPos[5];
sendEvent(mode, evt);
sendEvent(mode, applyNoteShift(note));
sendEvent(mode, applyVolumeShift(velo));
sendEvent(mode, applyDetune(note));
sendEvent(mode, applyVolumeAdjust(velo));
jumpNextLoop();
if (_musicPos[0] == 0xfe || _musicPos[0] == 0xfd)
@ -712,7 +712,7 @@ bool TownsEuphonyDriver::evtPolyphonicAftertouch() {
uint8 mode = _tMode[_musicPos[1]];
sendEvent(mode, evt);
sendEvent(mode, applyNoteShift(_musicPos[4]));
sendEvent(mode, applyDetune(_musicPos[4]));
sendEvent(mode, _musicPos[5]);
return false;
@ -780,8 +780,8 @@ bool TownsEuphonyDriver::evtModeOrdrChange() {
return false;
}
uint8 TownsEuphonyDriver::applyNoteShift(uint8 in) {
int out = _tTranspose[_musicPos[1]];
uint8 TownsEuphonyDriver::applyDetune(uint8 in) {
int out = _tDetune[_musicPos[1]];
if (!out)
return in;
out += (in & 0x7f);
@ -795,7 +795,7 @@ uint8 TownsEuphonyDriver::applyNoteShift(uint8 in) {
return out & 0xff;
}
uint8 TownsEuphonyDriver::applyVolumeShift(uint8 in) {
uint8 TownsEuphonyDriver::applyVolumeAdjust(uint8 in) {
int out = _tLevel[_musicPos[1]];
out += (in & 0x7f);
out = CLIP(out, 1, 127);

View File

@ -55,11 +55,11 @@ public:
void setOutputVolume(int chanType, int volLeft, int volRight);
int chanEnable(int tableEntry, int val);
int chanMode(int tableEntry, int val);
int chanOrdr(int tableEntry, int val);
int chanVolumeShift(int tableEntry, int val);
int chanNoteShift(int tableEntry, int val);
int configChan_enable(int tableEntry, int val);
int configChan_setMode(int tableEntry, int val);
int configChan_remap(int tableEntry, int val);
int configChan_adjustVolume(int tableEntry, int val);
int configChan_setDetune(int tableEntry, int val);
int assignChannel(int chan, int tableEntry);
@ -111,8 +111,8 @@ private:
return false;
}
uint8 applyNoteShift(uint8 in);
uint8 applyVolumeShift(uint8 in);
uint8 applyDetune(uint8 in);
uint8 applyVolumeAdjust(uint8 in);
void sendNoteOff();
void sendNoteOn();
@ -136,7 +136,7 @@ private:
uint8 *_tMode;
uint8 *_tOrdr;
int8 *_tLevel;
int8 *_tTranspose;
int8 *_tDetune;
struct DlEvent {
uint8 evt;

View File

@ -25,38 +25,6 @@
#include "audio/softsynth/fmtowns_pc98/towns_midi.h"
#include "common/textconsole.h"
struct ChanState {
uint8 get(uint8 type) {
switch (type) {
case 0:
return unk1;
case 1:
return mulAmsFms;
case 2:
return tl;
case 3:
return attDec;
case 4:
return sus;
case 5:
return fgAlg;
case 6:
return unk2;
default:
break;
}
return 0;
}
uint8 unk1;
uint8 mulAmsFms;
uint8 tl;
uint8 attDec;
uint8 sus;
uint8 fgAlg;
uint8 unk2;
};
class TownsMidiOutputChannel {
friend class TownsMidiInputChannel;
public:
@ -119,7 +87,7 @@ private:
void keyOn();
void keyOff();
void internKeySetFreq(uint16 frq);
void keyOnSetFreq(uint16 frq);
void out(uint8 reg, uint8 val);
TownsMidiInputChannel *_midi;
@ -205,6 +173,47 @@ private:
static const uint8 _programAdjustLevel[];
};
class TownsMidiChanState {
public:
TownsMidiChanState();
~TownsMidiChanState() {}
uint8 get(uint8 type);
uint8 unk1;
uint8 mulAmsFms;
uint8 tl;
uint8 attDec;
uint8 sus;
uint8 fgAlg;
uint8 unk2;
};
TownsMidiChanState::TownsMidiChanState() {
unk1 = mulAmsFms = tl = attDec = sus = fgAlg = unk2 = 0;
}
uint8 TownsMidiChanState::get(uint8 type) {
switch (type) {
case 0:
return unk1;
case 1:
return mulAmsFms;
case 2:
return tl;
case 3:
return attDec;
case 4:
return sus;
case 5:
return fgAlg;
case 6:
return unk2;
default:
break;
}
return 0;
}
TownsMidiOutputChannel::TownsMidiOutputChannel(MidiDriver_TOWNS *driver, int chanIndex) : _driver(driver), _chan(chanIndex),
_midi(0), _prev(0), _next(0), _fld_c(0), _carrierTl(0), _note(0), _modulatorTl(0), _sustainNoteOff(0), _duration(0), _fld_13(0), _prg(0), _freq(0), _freqAdjust(0) {
_stateA = new StateA[2];
@ -221,12 +230,12 @@ TownsMidiOutputChannel::~TownsMidiOutputChannel() {
void TownsMidiOutputChannel::noteOn(uint8 msb, uint16 lsb) {
_freq = (msb << 7) + lsb;
_freqAdjust = 0;
internKeySetFreq(_freq);
keyOnSetFreq(_freq);
}
void TownsMidiOutputChannel::noteOnPitchBend(uint8 msb, uint16 lsb) {
_freq = (msb << 7) + lsb;
internKeySetFreq(_freq + _freqAdjust);
keyOnSetFreq(_freq + _freqAdjust);
}
void TownsMidiOutputChannel::setupProgram(const uint8 *data, uint8 vol1, uint8 vol2) {
@ -401,7 +410,7 @@ void TownsMidiOutputChannel::keyOff() {
out(0x28, 0);
}
void TownsMidiOutputChannel::internKeySetFreq(uint16 frq) {
void TownsMidiOutputChannel::keyOnSetFreq(uint16 frq) {
uint8 t = (frq << 1) >> 8;
frq = (_freqMSB[t] << 11) | _freqLSB[t] ;
out(0xa4, frq >> 8);
@ -556,7 +565,7 @@ void TownsMidiInputChannel::noteOn(byte note, byte velocity) {
}
void TownsMidiInputChannel::programChange(byte program) {
// Dysfunctional since this is all done inside the imuse code
// Dysfunctional since this is all done inside the imuse code
}
void TownsMidiInputChannel::pitchBend(int16 bend) {
@ -663,8 +672,7 @@ MidiDriver_TOWNS::MidiDriver_TOWNS(Audio::Mixer *mixer) : _timerBproc(0), _timer
for (int i = 0; i < 6; i++)
_out[i] = new TownsMidiOutputChannel(this, i);
_chanState = new ChanState[32];
memset(_chanState, 0, 32 * sizeof(ChanState));
_chanState = new TownsMidiChanState[32];
_chanOutputLevel = new uint8[2048];
for (int i = 0; i < 64; i++) {

View File

@ -31,7 +31,7 @@
class TownsMidiOutputChannel;
class TownsMidiInputChannel;
struct ChanState;
class TownsMidiChanState;
class MidiDriver_TOWNS : public MidiDriver, public TownsAudioInterfacePluginDriver {
friend class TownsMidiInputChannel;
@ -61,9 +61,8 @@ private:
TownsMidiOutputChannel *allocateOutputChannel(int pri);
TownsMidiInputChannel **_channels;
TownsMidiOutputChannel **_out;
ChanState *_chanState;
TownsMidiOutputChannel **_out;
TownsMidiChanState *_chanState;
Common::TimerManager::TimerProc _timerBproc;
void *_timerBpara;

View File

@ -113,7 +113,7 @@ void SoundTowns::haltTrack() {
for (int i = 0x40; i < 0x46; i++)
_driver->chanVolume(i, 0);
for (int i = 0; i < 32; i++)
_driver->chanEnable(i, 0);
_driver->configChan_enable(i, 0);
_driver->stopParser();
}
@ -330,15 +330,15 @@ void SoundTowns::playEuphonyTrack(uint32 offset, int loop) {
const uint8 *src = _musicTrackData + 852;
for (int i = 0; i < 32; i++)
_driver->chanEnable(i, *src++);
_driver->configChan_enable(i, *src++);
for (int i = 0; i < 32; i++)
_driver->chanMode(i, *src++);
_driver->configChan_setMode(i, *src++);
for (int i = 0; i < 32; i++)
_driver->chanOrdr(i, *src++);
_driver->configChan_remap(i, *src++);
for (int i = 0; i < 32; i++)
_driver->chanVolumeShift(i, *src++);
_driver->configChan_adjustVolume(i, *src++);
for (int i = 0; i < 32; i++)
_driver->chanNoteShift(i, *src++);
_driver->configChan_setDetune(i, *src++);
src = _musicTrackData + 1748;
for (int i = 0; i < 6; i++)

View File

@ -500,15 +500,15 @@ void Player_Towns_v1::playEuphonyTrack(int sound, const uint8 *data) {
const uint8 *trackData = src + 150;
for (int i = 0; i < 32; i++)
_driver->chanEnable(i, *src++);
_driver->configChan_enable(i, *src++);
for (int i = 0; i < 32; i++)
_driver->chanMode(i, 0xff);
_driver->configChan_setMode(i, 0xff);
for (int i = 0; i < 32; i++)
_driver->chanOrdr(i, *src++);
_driver->configChan_remap(i, *src++);
for (int i = 0; i < 32; i++)
_driver->chanVolumeShift(i, *src++);
_driver->configChan_adjustVolume(i, *src++);
for (int i = 0; i < 32; i++)
_driver->chanNoteShift(i, *src++);
_driver->configChan_setDetune(i, *src++);
src += 8;
for (int i = 0; i < 6; i++)