mirror of https://github.com/mgba-emu/mgba.git
Add l/r channel scaling
This commit is contained in:
parent
cc8eeb4353
commit
ca80e5f32b
|
@ -450,40 +450,43 @@ static int32_t _updateChannel4(struct GBAAudioChannel4* ch) {
|
||||||
static void _sample(struct GBAAudio* audio) {
|
static void _sample(struct GBAAudio* audio) {
|
||||||
int32_t sampleLeft = 0;
|
int32_t sampleLeft = 0;
|
||||||
int32_t sampleRight = 0;
|
int32_t sampleRight = 0;
|
||||||
int psgShift = 2 - audio->volume;
|
int psgShift = 1 + audio->volume;
|
||||||
|
|
||||||
if (audio->ch1Left) {
|
if (audio->ch1Left) {
|
||||||
sampleLeft += audio->ch1.sample >> psgShift;
|
sampleLeft += audio->ch1.sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audio->ch1Right) {
|
if (audio->ch1Right) {
|
||||||
sampleRight += audio->ch1.sample >> psgShift;
|
sampleRight += audio->ch1.sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audio->ch2Left) {
|
if (audio->ch2Left) {
|
||||||
sampleLeft += audio->ch2.sample >> psgShift;
|
sampleLeft += audio->ch2.sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audio->ch2Right) {
|
if (audio->ch2Right) {
|
||||||
sampleRight += audio->ch2.sample >> psgShift;
|
sampleRight += audio->ch2.sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audio->ch3Left) {
|
if (audio->ch3Left) {
|
||||||
sampleLeft += audio->ch3.sample >> psgShift;
|
sampleLeft += audio->ch3.sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audio->ch3Right) {
|
if (audio->ch3Right) {
|
||||||
sampleRight += audio->ch3.sample >> psgShift;
|
sampleRight += audio->ch3.sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audio->ch4Left) {
|
if (audio->ch4Left) {
|
||||||
sampleLeft += audio->ch4.sample >> psgShift;
|
sampleLeft += audio->ch4.sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audio->ch4Right) {
|
if (audio->ch4Right) {
|
||||||
sampleRight += audio->ch4.sample >> psgShift;
|
sampleRight += audio->ch4.sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sampleLeft = (sampleLeft * (1 + audio->volumeLeft)) >> psgShift;
|
||||||
|
sampleRight = (sampleRight * (1 + audio->volumeRight)) >> psgShift;
|
||||||
|
|
||||||
if (audio->chALeft) {
|
if (audio->chALeft) {
|
||||||
sampleLeft += (audio->chA.sample << 2) >> !audio->volumeChA;
|
sampleLeft += (audio->chA.sample << 2) >> !audio->volumeChA;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue