diff --git a/extern/Nuked-PSG/ympsg.c b/extern/Nuked-PSG/ympsg.c index 4aaeac2df..3df4f8e39 100644 --- a/extern/Nuked-PSG/ympsg.c +++ b/extern/Nuked-PSG/ympsg.c @@ -266,7 +266,7 @@ void YMPSG_Init(ympsg_t *chip, uint8_t real_sn) chip->noise_size = real_sn ? 16383 : 32767; for (i = 0; i < 17; i++) { - chip->vol_table[i]=real_sn?tipsg_vol[i]:ympsg_vol[i]; + chip->vol_table[i]=(real_sn?tipsg_vol[i]:ympsg_vol[i]) * 8192.0f; } for (i = 0; i < 16; i++) { @@ -315,15 +315,15 @@ void YMPSG_Clock(ympsg_t *chip) } } -float YMPSG_GetOutput(ympsg_t *chip) +int YMPSG_GetOutput(ympsg_t *chip) { - float sample = 0.f; + int sample = 0; uint32_t i; YMPSG_UpdateSample(chip); if (chip->test & 1) { sample += chip->vol_table[chip->volume_out[chip->test >> 1]]; - sample += chip->vol_table[16] * 3.f; + sample += chip->vol_table[16] * 3; } else if (!chip->mute) { diff --git a/extern/Nuked-PSG/ympsg.h b/extern/Nuked-PSG/ympsg.h index 2465f5c33..c00b3d720 100644 --- a/extern/Nuked-PSG/ympsg.h +++ b/extern/Nuked-PSG/ympsg.h @@ -59,7 +59,7 @@ typedef struct { ympsg_writebuf writebuf[YMPSG_WRITEBUF_SIZE]; // - float vol_table[17]; + short vol_table[17]; uint8_t mute; @@ -71,7 +71,7 @@ uint16_t YMPSG_Read(ympsg_t *chip); void YMPSG_Init(ympsg_t *chip, uint8_t real_sn); void YMPSG_SetIC(ympsg_t *chip, uint32_t ic); void YMPSG_Clock(ympsg_t *chip); -float YMPSG_GetOutput(ympsg_t *chip); +int YMPSG_GetOutput(ympsg_t *chip); void YMPSG_Test(ympsg_t *chip, uint16_t test); diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 57e868bd4..7dd5c65d7 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -65,7 +65,7 @@ void DivPlatformSMS::acquire_nuked(short* bufL, short* bufR, size_t start, size_ YMPSG_Clock(&sn_nuked); YMPSG_Clock(&sn_nuked); YMPSG_Clock(&sn_nuked); - o=YMPSG_GetOutput(&sn_nuked)*8192.0; + o=YMPSG_GetOutput(&sn_nuked); if (o<-32768) o=-32768; if (o>32767) o=32767; bufL[h]=o;