add more chips to VGM export
missing: - Sega PCM - Neo Geo ADPCM
This commit is contained in:
parent
0ab0ebdddb
commit
a3a2e3ff47
|
@ -1934,6 +1934,7 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write
|
||||||
switch (sys) {
|
switch (sys) {
|
||||||
case DIV_SYSTEM_GENESIS:
|
case DIV_SYSTEM_GENESIS:
|
||||||
case DIV_SYSTEM_GENESIS_EXT:
|
case DIV_SYSTEM_GENESIS_EXT:
|
||||||
|
case DIV_SYSTEM_YM2612:
|
||||||
switch (write.addr>>8) {
|
switch (write.addr>>8) {
|
||||||
case 0: // port 0
|
case 0: // port 0
|
||||||
w->writeC(0x52);
|
w->writeC(0x52);
|
||||||
|
@ -1951,6 +1952,56 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DIV_SYSTEM_SMS:
|
||||||
|
w->writeC(0x50);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_GB:
|
||||||
|
w->writeC(0xb3);
|
||||||
|
w->writeC((write.addr-16)&0xff);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_PCE:
|
||||||
|
w->writeC(0xb9);
|
||||||
|
w->writeC(write.addr&0xff);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_NES:
|
||||||
|
w->writeC(0xb4);
|
||||||
|
w->writeC(write.addr&0xff);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_ARCADE:
|
||||||
|
case DIV_SYSTEM_YM2151:
|
||||||
|
w->writeC(0x54);
|
||||||
|
w->writeC(write.addr&0xff);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_YM2610:
|
||||||
|
switch (write.addr>>8) {
|
||||||
|
case 0: // port 0
|
||||||
|
w->writeC(0x58);
|
||||||
|
w->writeC(write.addr&0xff);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
|
case 1: // port 1
|
||||||
|
w->writeC(0x59);
|
||||||
|
w->writeC(write.addr&0xff);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_AY8910:
|
||||||
|
case DIV_SYSTEM_AY8930:
|
||||||
|
w->writeC(0xa0);
|
||||||
|
w->writeC(write.addr&0xff);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_SAA1099:
|
||||||
|
w->writeC(0xbd);
|
||||||
|
w->writeC(write.addr&0xff);
|
||||||
|
w->writeC(write.val);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
logW("write not handled!\n");
|
logW("write not handled!\n");
|
||||||
break;
|
break;
|
||||||
|
@ -1962,7 +2013,6 @@ SafeWriter* DivEngine::saveVGM() {
|
||||||
setOrder(0);
|
setOrder(0);
|
||||||
isBusy.lock();
|
isBusy.lock();
|
||||||
// play the song ourselves
|
// play the song ourselves
|
||||||
playSub(false);
|
|
||||||
bool done=false;
|
bool done=false;
|
||||||
|
|
||||||
int hasSN=0;
|
int hasSN=0;
|
||||||
|
@ -2232,12 +2282,13 @@ SafeWriter* DivEngine::saveVGM() {
|
||||||
streamID++;
|
streamID++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
logE("what? trying to play sample on unsupported system\n");
|
logW("what? trying to play sample on unsupported system\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// write song data
|
// write song data
|
||||||
|
playSub(false);
|
||||||
size_t tickCount=0;
|
size_t tickCount=0;
|
||||||
while (!done) {
|
while (!done) {
|
||||||
if (nextTick()) done=true;
|
if (nextTick()) done=true;
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#define rWrite(a,v) if (!skipRegisterWrites) {GB_apu_write(gb,a,v); if (dumpWrites) {addWrite(a,v);} }
|
#define rWrite(a,v) if (!skipRegisterWrites) {GB_apu_write(gb,a,v); if (dumpWrites) {addWrite(a,v);} }
|
||||||
|
#define immWrite(a,v) {GB_apu_write(gb,a,v); if (dumpWrites) {addWrite(a,v);} }
|
||||||
|
|
||||||
#define FREQ_BASE 8015.85f
|
#define FREQ_BASE 8015.85f
|
||||||
|
|
||||||
|
@ -296,7 +297,7 @@ void DivPlatformGB::forceIns() {
|
||||||
for (int i=0; i<4; i++) {
|
for (int i=0; i<4; i++) {
|
||||||
chan[i].insChanged=true;
|
chan[i].insChanged=true;
|
||||||
}
|
}
|
||||||
GB_apu_write(gb,0x25,procMute());
|
immWrite(0x25,procMute());
|
||||||
updateWave();
|
updateWave();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,9 +310,11 @@ void DivPlatformGB::reset() {
|
||||||
GB_apu_init(gb);
|
GB_apu_init(gb);
|
||||||
GB_set_sample_rate(gb,rate);
|
GB_set_sample_rate(gb,rate);
|
||||||
// enable all channels
|
// enable all channels
|
||||||
GB_apu_write(gb,0x26,0x80);
|
immWrite(0x10,0);
|
||||||
|
immWrite(0x26,0x8f);
|
||||||
lastPan=0xff;
|
lastPan=0xff;
|
||||||
GB_apu_write(gb,0x25,procMute());
|
immWrite(0x25,procMute());
|
||||||
|
immWrite(0x24,0x77);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DivPlatformGB::isStereo() {
|
bool DivPlatformGB::isStereo() {
|
||||||
|
|
Loading…
Reference in New Issue