From fcc5b6e5eb80523cc15d20480f7449d2de6d5ce6 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 14 Jan 2023 11:55:40 +0900 Subject: [PATCH] Replace divider to shift --- src/engine/platform/fmshared_OPN.h | 8 +++---- src/engine/platform/ym2203.cpp | 10 ++++----- src/engine/platform/ym2608.cpp | 16 ++++++------- src/engine/platform/ym2610.cpp | 12 +++++----- src/engine/platform/ym2610b.cpp | 12 +++++----- src/engine/platform/ym2610shared.h | 4 ++-- src/gui/sysConf.cpp | 36 +++++++++++++++--------------- 7 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index 427a231c..387e7d61 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -154,8 +154,8 @@ class DivPlatformOPN: public DivPlatformFMBase { unsigned int ayDiv; unsigned char csmChan; unsigned char lfoValue; - unsigned char ssgVol; - unsigned char fmVol; + unsigned short ssgVol; + unsigned short fmVol; bool extSys, useCombo, fbAllOps; DivConfig ayFlags; @@ -174,8 +174,8 @@ class DivPlatformOPN: public DivPlatformFMBase { ayDiv(a), csmChan(cc), lfoValue(0), - ssgVol(255), - fmVol(255), + ssgVol(256), + fmVol(256), extSys(isExtSys), useCombo(false), fbAllOps(false) {} diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index d9cccae2..8f305919 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -210,12 +210,12 @@ void DivPlatformYM2203::acquire_combo(short** buf, size_t len) { ); os&=~3; - os=(os*fmVol)/255; + os=(os*fmVol)>>8; // ymfm part fm->generate(&fmout); - os+=(((fmout.data[1]+fmout.data[2]+fmout.data[3])>>1)*ssgVol)/255; + os+=(((fmout.data[1]+fmout.data[2]+fmout.data[3])>>1)*ssgVol)>>8; if (os<-32768) os=-32768; if (os>32767) os=32767; @@ -256,7 +256,7 @@ void DivPlatformYM2203::acquire_ymfm(short** buf, size_t len) { fm->generate(&fmout); - os=((fmout.data[0]*fmVol)/255)+((((fmout.data[1]+fmout.data[2]+fmout.data[3])>>1)*ssgVol)/255); + os=((fmout.data[0]*fmVol)>>8)+((((fmout.data[1]+fmout.data[2]+fmout.data[3])>>1)*ssgVol)>>8); if (os<-32768) os=-32768; if (os>32767) os=32767; @@ -1043,8 +1043,8 @@ void DivPlatformYM2203::setFlags(const DivConfig& flags) { CHECK_CUSTOM_CLOCK; noExtMacros=flags.getBool("noExtMacros",false); fbAllOps=flags.getBool("fbAllOps",false); - ssgVol=flags.getInt("ssgVol",255); - fmVol=flags.getInt("fmVol",255); + ssgVol=flags.getInt("ssgVol",256); + fmVol=flags.getInt("fmVol",256); rate=fm->sample_rate(chipClock); for (int i=0; i<6; i++) { oscBuf[i]->rate=rate; diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index f5487fe6..ed6afe46 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -374,17 +374,17 @@ void DivPlatformYM2608::acquire_combo(short** buf, size_t len) { os[0]>>=1; os[1]>>=1; - os[0]=(os[0]*fmVol)/255; - os[1]=(os[1]*fmVol)/255; + os[0]=(os[0]*fmVol)>>8; + os[1]=(os[1]*fmVol)>>8; // ymfm part fm->generate(&fmout); - os[0]+=((fmout.data[0]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[0]+=((fmout.data[0]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[0]<-32768) os[0]=-32768; if (os[0]>32767) os[0]=32767; - os[1]+=((fmout.data[1]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[1]+=((fmout.data[1]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; @@ -441,11 +441,11 @@ void DivPlatformYM2608::acquire_ymfm(short** buf, size_t len) { fm->generate(&fmout); - os[0]=((fmout.data[0]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[0]=((fmout.data[0]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[0]<-32768) os[0]=-32768; if (os[0]>32767) os[0]=32767; - os[1]=((fmout.data[1]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[1]=((fmout.data[1]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; @@ -1552,8 +1552,8 @@ void DivPlatformYM2608::setFlags(const DivConfig& flags) { CHECK_CUSTOM_CLOCK; noExtMacros=flags.getBool("noExtMacros",false); fbAllOps=flags.getBool("fbAllOps",false); - ssgVol=flags.getInt("ssgVol",255); - fmVol=flags.getInt("fmVol",255); + ssgVol=flags.getInt("ssgVol",256); + fmVol=flags.getInt("fmVol",256); rate=fm->sample_rate(chipClock); for (int i=0; i<16; i++) { oscBuf[i]->rate=rate; diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 99aa6929..938e000a 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -305,17 +305,17 @@ void DivPlatformYM2610::acquire_combo(short** buf, size_t len) { os[0]>>=1; os[1]>>=1; - os[0]=(os[0]*fmVol)/255; - os[1]=(os[1]*fmVol)/255; + os[0]=(os[0]*fmVol)>>8; + os[1]=(os[1]*fmVol)>>8; // ymfm part fm->generate(&fmout); - os[0]+=((fmout.data[0]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[0]+=((fmout.data[0]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[0]<-32768) os[0]=-32768; if (os[0]>32767) os[0]=32767; - os[1]+=((fmout.data[1]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[1]+=((fmout.data[1]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; @@ -374,11 +374,11 @@ void DivPlatformYM2610::acquire_ymfm(short** buf, size_t len) { fm->generate(&fmout); - os[0]+=((fmout.data[0]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[0]+=((fmout.data[0]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[0]<-32768) os[0]=-32768; if (os[0]>32767) os[0]=32767; - os[1]+=((fmout.data[1]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[1]+=((fmout.data[1]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index 55a1dfe5..343232e7 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -373,17 +373,17 @@ void DivPlatformYM2610B::acquire_combo(short** buf, size_t len) { os[0]>>=1; os[1]>>=1; - os[0]=(os[0]*fmVol)/255; - os[1]=(os[1]*fmVol)/255; + os[0]=(os[0]*fmVol)>>8; + os[1]=(os[1]*fmVol)>>8; // ymfm part fm->generate(&fmout); - os[0]+=((fmout.data[0]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[0]+=((fmout.data[0]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[0]<-32768) os[0]=-32768; if (os[0]>32767) os[0]=32767; - os[1]+=((fmout.data[1]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[1]+=((fmout.data[1]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; @@ -440,11 +440,11 @@ void DivPlatformYM2610B::acquire_ymfm(short** buf, size_t len) { fm->generate(&fmout); - os[0]+=((fmout.data[0]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[0]+=((fmout.data[0]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[0]<-32768) os[0]=-32768; if (os[0]>32767) os[0]=32767; - os[1]+=((fmout.data[1]*fmVol)/255)+(((fmout.data[2]>>1)*ssgVol)/255); + os[1]+=((fmout.data[1]*fmVol)>>8)+(((fmout.data[2]>>1)*ssgVol)>>8); if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; diff --git a/src/engine/platform/ym2610shared.h b/src/engine/platform/ym2610shared.h index ba1ab030..89865b0a 100644 --- a/src/engine/platform/ym2610shared.h +++ b/src/engine/platform/ym2610shared.h @@ -222,8 +222,8 @@ class DivPlatformYM2610Base: public DivPlatformOPN { CHECK_CUSTOM_CLOCK; noExtMacros=flags.getBool("noExtMacros",false); fbAllOps=flags.getBool("fbAllOps",false); - ssgVol=flags.getInt("ssgVol",255); - fmVol=flags.getInt("fmVol",255); + ssgVol=flags.getInt("ssgVol",256); + fmVol=flags.getInt("fmVol",256); rate=fm->sample_rate(chipClock); for (int i=0; i<16; i++) { oscBuf[i]->rate=rate; diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index c7e561a8..a72342de 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -472,8 +472,8 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo int clockSel=flags.getInt("clockSel",0); bool noExtMacros=flags.getBool("noExtMacros",false); bool fbAllOps=flags.getBool("fbAllOps",false); - int ssgVol=flags.getInt("ssgVol",255); - int fmVol=flags.getInt("fmVol",255); + int ssgVol=flags.getInt("ssgVol",256); + int fmVol=flags.getInt("fmVol",256); if (ImGui::RadioButton("8MHz (Neo Geo MVS)",clockSel==0)) { clockSel=0; @@ -493,15 +493,15 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo } } - if (CWSliderInt("SSG Volume",&ssgVol,0,255)) { + if (CWSliderInt("SSG Volume",&ssgVol,0,256)) { if (ssgVol<0) ssgVol=0; - if (ssgVol>255) ssgVol=255; + if (ssgVol>256) ssgVol=256; altered=true; } rightClickable - if (CWSliderInt("FM/ADPCM Volume",&fmVol,0,255)) { + if (CWSliderInt("FM/ADPCM Volume",&fmVol,0,256)) { if (fmVol<0) fmVol=0; - if (fmVol>255) fmVol=255; + if (fmVol>256) fmVol=256; altered=true; } rightClickable @@ -870,8 +870,8 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo int prescale=flags.getInt("prescale",0); bool noExtMacros=flags.getBool("noExtMacros",false); bool fbAllOps=flags.getBool("fbAllOps",false); - int ssgVol=flags.getInt("ssgVol",255); - int fmVol=flags.getInt("fmVol",255); + int ssgVol=flags.getInt("ssgVol",256); + int fmVol=flags.getInt("fmVol",256); ImGui::Text("Clock rate:"); if (ImGui::RadioButton("3.58MHz (NTSC)",clockSel==0)) { @@ -912,15 +912,15 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo altered=true; } - if (CWSliderInt("SSG Volume",&ssgVol,0,255)) { + if (CWSliderInt("SSG Volume",&ssgVol,0,256)) { if (ssgVol<0) ssgVol=0; - if (ssgVol>255) ssgVol=255; + if (ssgVol>256) ssgVol=256; altered=true; } rightClickable - if (CWSliderInt("FM Volume",&fmVol,0,255)) { + if (CWSliderInt("FM Volume",&fmVol,0,256)) { if (fmVol<0) fmVol=0; - if (fmVol>255) fmVol=255; + if (fmVol>256) fmVol=256; altered=true; } rightClickable @@ -952,8 +952,8 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo int prescale=flags.getInt("prescale",0); bool noExtMacros=flags.getBool("noExtMacros",false); bool fbAllOps=flags.getBool("fbAllOps",false); - int ssgVol=flags.getInt("ssgVol",255); - int fmVol=flags.getInt("fmVol",255); + int ssgVol=flags.getInt("ssgVol",256); + int fmVol=flags.getInt("fmVol",256); ImGui::Text("Clock rate:"); if (ImGui::RadioButton("8MHz (Arcade)",clockSel==0)) { @@ -978,15 +978,15 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo altered=true; } - if (CWSliderInt("SSG Volume",&ssgVol,0,255)) { + if (CWSliderInt("SSG Volume",&ssgVol,0,256)) { if (ssgVol<0) ssgVol=0; - if (ssgVol>255) ssgVol=255; + if (ssgVol>256) ssgVol=256; altered=true; } rightClickable - if (CWSliderInt("FM/ADPCM Volume",&fmVol,0,255)) { + if (CWSliderInt("FM/ADPCM Volume",&fmVol,0,256)) { if (fmVol<0) fmVol=0; - if (fmVol>255) fmVol=255; + if (fmVol>256) fmVol=256; altered=true; } rightClickable