arcade: even more work

PCM tonight
This commit is contained in:
tildearrow 2021-12-08 18:29:50 -05:00
parent 6dcc3416ee
commit 7ac225e839
4 changed files with 15 additions and 17 deletions

View File

@ -20,6 +20,7 @@ enum DivDispatchCmds {
DIV_CMD_PRE_NOTE, // used in C64
DIV_CMD_SAMPLE_MODE,
DIV_CMD_SAMPLE_FREQ,
DIV_CMD_FM_LFO,
DIV_CMD_FM_TL,

View File

@ -120,9 +120,9 @@ int DivPlatformArcade::dispatch(DivCommand c) {
}
if (chan[c.chan].insChanged) {
rWrite(baseAddr+0x40,(op.mult&15)|(dtTable[op.dt&7]<<4));
rWrite(baseAddr+0x80,(op.ar&31));
rWrite(baseAddr+0x80,(op.ar&31)|(op.rs<<6));
rWrite(baseAddr+0xa0,(op.dr&31)|(op.am<<7));
rWrite(baseAddr+0xc0,op.d2r&31);
rWrite(baseAddr+0xc0,(op.d2r&31)|(op.dt2<<6));
rWrite(baseAddr+0xe0,(op.rr&15)|(op.sl<<4));
}
}
@ -167,19 +167,7 @@ int DivPlatformArcade::dispatch(DivCommand c) {
chan[c.chan].ins=c.value;
break;
case DIV_CMD_PANNING: {
switch (c.value) {
case 0x01:
chan[c.chan].pan=1;
break;
case 0x10:
chan[c.chan].pan=2;
break;
default:
chan[c.chan].pan=3;
break;
}
DivInstrument* ins=parent->getIns(chan[c.chan].ins);
//rWrite(chanOffs[c.chan]+0xb4,(chan[c.chan].pan<<6)|(ins->fm.fms&7)|((ins->fm.ams&3)<<4));
// TODO
break;
}
case DIV_CMD_PITCH: {

View File

@ -13,8 +13,16 @@ class DivPlatformArcade: public DivDispatch {
signed char konCycles;
bool active, insChanged, freqChanged, keyOn, keyOff, portaPause;
int vol;
unsigned char pan;
Channel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), portaPause(false), vol(0), pan(3) {}
unsigned char chVolL, chVolR;
struct PCMChannel {
int sample;
unsigned int pos; // <<8
unsigned short len;
unsigned char freq;
PCMChannel(): sample(-1), pos(0), len(0), freq(0) {}
} pcm;
Channel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), portaPause(false), vol(0), chVolL(8), chVolR(8) {}
};
Channel chan[13];
struct QueuedWrite {

View File

@ -30,6 +30,7 @@ const char* cmdName[DIV_CMD_MAX]={
"PRE_NOTE",
"SAMPLE_MODE",
"SAMPLE_FREQ",
"FM_LFO",
"FM_TL",