dev137 - new mixing volumes
YM2612 is now twice as loud SN76489 and OPLL are 1.5x loud X1-010 is four times louder
This commit is contained in:
parent
0383b0c50f
commit
1d446bd56b
|
@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1).
|
||||||
|
|
||||||
the format versions are:
|
the format versions are:
|
||||||
|
|
||||||
|
- 137: Furnace dev137
|
||||||
- 136: Furnace dev136
|
- 136: Furnace dev136
|
||||||
- 135: Furnace dev135
|
- 135: Furnace dev135
|
||||||
- 134: Furnace dev134
|
- 134: Furnace dev134
|
||||||
|
|
|
@ -47,8 +47,8 @@
|
||||||
#define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock();
|
#define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock();
|
||||||
#define BUSY_END isBusy.unlock(); softLocked=false;
|
#define BUSY_END isBusy.unlock(); softLocked=false;
|
||||||
|
|
||||||
#define DIV_VERSION "dev136"
|
#define DIV_VERSION "dev137"
|
||||||
#define DIV_ENGINE_VERSION 136
|
#define DIV_ENGINE_VERSION 137
|
||||||
// for imports
|
// for imports
|
||||||
#define DIV_VERSION_MOD 0xff01
|
#define DIV_VERSION_MOD 0xff01
|
||||||
#define DIV_VERSION_FC 0xff02
|
#define DIV_VERSION_FC 0xff02
|
||||||
|
|
|
@ -2574,6 +2574,32 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// new YM2612/SN/X1-010 volumes
|
||||||
|
if (ds.version<137) {
|
||||||
|
for (int i=0; i<ds.systemLen; i++) {
|
||||||
|
switch (ds.system[i]) {
|
||||||
|
case DIV_SYSTEM_YM2612:
|
||||||
|
case DIV_SYSTEM_YM2612_EXT:
|
||||||
|
case DIV_SYSTEM_YM2612_DUALPCM:
|
||||||
|
case DIV_SYSTEM_YM2612_DUALPCM_EXT:
|
||||||
|
case DIV_SYSTEM_YM2612_CSM:
|
||||||
|
ds.systemVol[i]/=2.0;
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_SMS:
|
||||||
|
case DIV_SYSTEM_T6W28:
|
||||||
|
case DIV_SYSTEM_OPLL:
|
||||||
|
case DIV_SYSTEM_OPLL_DRUMS:
|
||||||
|
ds.systemVol[i]/=1.5;
|
||||||
|
break;
|
||||||
|
case DIV_SYSTEM_X1_010:
|
||||||
|
ds.systemVol[i]/=4.0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (active) quitDispatch();
|
if (active) quitDispatch();
|
||||||
BUSY_BEGIN_SOFT;
|
BUSY_BEGIN_SOFT;
|
||||||
saveLock.lock();
|
saveLock.lock();
|
||||||
|
|
|
@ -1170,6 +1170,10 @@ int DivPlatformGenesis::getRegisterPoolSize() {
|
||||||
return 512;
|
return 512;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float DivPlatformGenesis::getPostAmp() {
|
||||||
|
return 2.0f;
|
||||||
|
}
|
||||||
|
|
||||||
void DivPlatformGenesis::reset() {
|
void DivPlatformGenesis::reset() {
|
||||||
while (!writes.empty()) writes.pop_front();
|
while (!writes.empty()) writes.pop_front();
|
||||||
memset(regPool,0,512);
|
memset(regPool,0,512);
|
||||||
|
|
|
@ -114,6 +114,7 @@ class DivPlatformGenesis: public DivPlatformOPN {
|
||||||
void setYMFM(bool use);
|
void setYMFM(bool use);
|
||||||
bool keyOffAffectsArp(int ch);
|
bool keyOffAffectsArp(int ch);
|
||||||
bool keyOffAffectsPorta(int ch);
|
bool keyOffAffectsPorta(int ch);
|
||||||
|
float getPostAmp();
|
||||||
void toggleRegisterDump(bool enable);
|
void toggleRegisterDump(bool enable);
|
||||||
void setFlags(const DivConfig& flags);
|
void setFlags(const DivConfig& flags);
|
||||||
void notifyInsChange(int ins);
|
void notifyInsChange(int ins);
|
||||||
|
|
|
@ -958,6 +958,10 @@ void DivPlatformOPLL::setYMFM(bool use) {
|
||||||
useYMFM=use;
|
useYMFM=use;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float DivPlatformOPLL::getPostAmp() {
|
||||||
|
return 1.5f;
|
||||||
|
}
|
||||||
|
|
||||||
void DivPlatformOPLL::setFlags(const DivConfig& flags) {
|
void DivPlatformOPLL::setFlags(const DivConfig& flags) {
|
||||||
int clockSel=flags.getInt("clockSel",0);
|
int clockSel=flags.getInt("clockSel",0);
|
||||||
if (clockSel==3) {
|
if (clockSel==3) {
|
||||||
|
|
|
@ -95,6 +95,7 @@ class DivPlatformOPLL: public DivDispatch {
|
||||||
void setYMFM(bool use);
|
void setYMFM(bool use);
|
||||||
bool keyOffAffectsArp(int ch);
|
bool keyOffAffectsArp(int ch);
|
||||||
bool keyOffAffectsPorta(int ch);
|
bool keyOffAffectsPorta(int ch);
|
||||||
|
float getPostAmp();
|
||||||
void toggleRegisterDump(bool enable);
|
void toggleRegisterDump(bool enable);
|
||||||
void setVRC7(bool vrc);
|
void setVRC7(bool vrc);
|
||||||
void setProperDrums(bool pd);
|
void setProperDrums(bool pd);
|
||||||
|
|
|
@ -39,6 +39,10 @@ const char** DivPlatformSMS::getRegisterSheet() {
|
||||||
return stereo?regCheatSheetGG:regCheatSheetSN;
|
return stereo?regCheatSheetGG:regCheatSheetSN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float DivPlatformSMS::getPostAmp() {
|
||||||
|
return 1.5f;
|
||||||
|
}
|
||||||
|
|
||||||
void DivPlatformSMS::acquire_nuked(short** buf, size_t len) {
|
void DivPlatformSMS::acquire_nuked(short** buf, size_t len) {
|
||||||
int oL=0;
|
int oL=0;
|
||||||
int oR=0;
|
int oR=0;
|
||||||
|
|
|
@ -81,6 +81,7 @@ class DivPlatformSMS: public DivDispatch {
|
||||||
int getOutputCount();
|
int getOutputCount();
|
||||||
bool keyOffAffectsArp(int ch);
|
bool keyOffAffectsArp(int ch);
|
||||||
bool keyOffAffectsPorta(int ch);
|
bool keyOffAffectsPorta(int ch);
|
||||||
|
float getPostAmp();
|
||||||
int getPortaFloor(int ch);
|
int getPortaFloor(int ch);
|
||||||
void setFlags(const DivConfig& flags);
|
void setFlags(const DivConfig& flags);
|
||||||
void notifyInsDeletion(void* ins);
|
void notifyInsDeletion(void* ins);
|
||||||
|
|
|
@ -903,6 +903,10 @@ bool DivPlatformX1_010::keyOffAffectsArp(int ch) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float DivPlatformX1_010::getPostAmp() {
|
||||||
|
return 4.0f;
|
||||||
|
}
|
||||||
|
|
||||||
void DivPlatformX1_010::notifyWaveChange(int wave) {
|
void DivPlatformX1_010::notifyWaveChange(int wave) {
|
||||||
for (int i=0; i<16; i++) {
|
for (int i=0; i<16; i++) {
|
||||||
if (chan[i].wave==wave) {
|
if (chan[i].wave==wave) {
|
||||||
|
|
|
@ -140,6 +140,7 @@ class DivPlatformX1_010: public DivDispatch, public vgsound_emu_mem_intf {
|
||||||
void muteChannel(int ch, bool mute);
|
void muteChannel(int ch, bool mute);
|
||||||
int getOutputCount();
|
int getOutputCount();
|
||||||
bool keyOffAffectsArp(int ch);
|
bool keyOffAffectsArp(int ch);
|
||||||
|
float getPostAmp();
|
||||||
void setFlags(const DivConfig& flags);
|
void setFlags(const DivConfig& flags);
|
||||||
void notifyWaveChange(int wave);
|
void notifyWaveChange(int wave);
|
||||||
void notifyInsDeletion(void* ins);
|
void notifyInsDeletion(void* ins);
|
||||||
|
|
|
@ -1046,7 +1046,7 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p
|
||||||
case DIV_SYSTEM_SMS:
|
case DIV_SYSTEM_SMS:
|
||||||
if (!hasSN) {
|
if (!hasSN) {
|
||||||
hasSN=disCont[i].dispatch->chipClock;
|
hasSN=disCont[i].dispatch->chipClock;
|
||||||
CHIP_VOL(0,2.0);
|
CHIP_VOL(0,4.0);
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
switch (song.systemFlags[i].getInt("chipType",0)) {
|
switch (song.systemFlags[i].getInt("chipType",0)) {
|
||||||
case 1: // real SN
|
case 1: // real SN
|
||||||
|
@ -1065,7 +1065,7 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p
|
||||||
} else if (!(hasSN&0x40000000)) {
|
} else if (!(hasSN&0x40000000)) {
|
||||||
isSecond[i]=true;
|
isSecond[i]=true;
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
CHIP_VOL_SECOND(0,2.0);
|
CHIP_VOL_SECOND(0,4.0);
|
||||||
hasSN|=0x40000000;
|
hasSN|=0x40000000;
|
||||||
howManyChips++;
|
howManyChips++;
|
||||||
}
|
}
|
||||||
|
@ -1130,12 +1130,12 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p
|
||||||
case DIV_SYSTEM_X1_010:
|
case DIV_SYSTEM_X1_010:
|
||||||
if (!hasX1) {
|
if (!hasX1) {
|
||||||
hasX1=disCont[i].dispatch->chipClock;
|
hasX1=disCont[i].dispatch->chipClock;
|
||||||
CHIP_VOL(38,0.5);
|
CHIP_VOL(38,2.0);
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
writeX1010[0]=disCont[i].dispatch;
|
writeX1010[0]=disCont[i].dispatch;
|
||||||
} else if (!(hasX1&0x40000000)) {
|
} else if (!(hasX1&0x40000000)) {
|
||||||
isSecond[i]=true;
|
isSecond[i]=true;
|
||||||
CHIP_VOL_SECOND(38,0.5);
|
CHIP_VOL_SECOND(38,2.0);
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
writeX1010[1]=disCont[i].dispatch;
|
writeX1010[1]=disCont[i].dispatch;
|
||||||
hasX1|=0x40000000;
|
hasX1|=0x40000000;
|
||||||
|
@ -1232,12 +1232,12 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p
|
||||||
case DIV_SYSTEM_YM2612_DUALPCM_EXT:
|
case DIV_SYSTEM_YM2612_DUALPCM_EXT:
|
||||||
if (!hasOPN2) {
|
if (!hasOPN2) {
|
||||||
hasOPN2=disCont[i].dispatch->chipClock;
|
hasOPN2=disCont[i].dispatch->chipClock;
|
||||||
CHIP_VOL(2,0.8);
|
CHIP_VOL(2,1.6);
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
writeDACSamples=true;
|
writeDACSamples=true;
|
||||||
} else if (!(hasOPN2&0x40000000)) {
|
} else if (!(hasOPN2&0x40000000)) {
|
||||||
isSecond[i]=true;
|
isSecond[i]=true;
|
||||||
CHIP_VOL_SECOND(2,0.8);
|
CHIP_VOL_SECOND(2,1.6);
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
hasOPN2|=0x40000000;
|
hasOPN2|=0x40000000;
|
||||||
howManyChips++;
|
howManyChips++;
|
||||||
|
@ -1296,11 +1296,11 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p
|
||||||
case DIV_SYSTEM_VRC7:
|
case DIV_SYSTEM_VRC7:
|
||||||
if (!hasOPLL) {
|
if (!hasOPLL) {
|
||||||
hasOPLL=disCont[i].dispatch->chipClock;
|
hasOPLL=disCont[i].dispatch->chipClock;
|
||||||
CHIP_VOL(1,1.6);
|
CHIP_VOL(1,3.2);
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
} else if (!(hasOPLL&0x40000000)) {
|
} else if (!(hasOPLL&0x40000000)) {
|
||||||
isSecond[i]=true;
|
isSecond[i]=true;
|
||||||
CHIP_VOL_SECOND(1,1.6);
|
CHIP_VOL_SECOND(1,3.2);
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
hasOPLL|=0x40000000;
|
hasOPLL|=0x40000000;
|
||||||
howManyChips++;
|
howManyChips++;
|
||||||
|
|
Loading…
Reference in a new issue