Corrected CMS/Game Blaster pitch. Patch from basic2004.
This commit is contained in:
parent
179b85d81a
commit
47c6e6e820
1 changed files with 8 additions and 6 deletions
|
|
@ -7,6 +7,8 @@
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "sound_cms.h"
|
#include "sound_cms.h"
|
||||||
|
|
||||||
|
#define MASTER_CLOCK 7159090
|
||||||
|
|
||||||
typedef struct cms_t
|
typedef struct cms_t
|
||||||
{
|
{
|
||||||
int addrs[2];
|
int addrs[2];
|
||||||
|
|
@ -37,9 +39,9 @@ void cms_update(cms_t *cms)
|
||||||
{
|
{
|
||||||
switch (cms->noisetype[c >> 1][c & 1])
|
switch (cms->noisetype[c >> 1][c & 1])
|
||||||
{
|
{
|
||||||
case 0: cms->noisefreq[c >> 1][c & 1] = 31250; break;
|
case 0: cms->noisefreq[c >> 1][c & 1] = MASTER_CLOCK/256; break;
|
||||||
case 1: cms->noisefreq[c >> 1][c & 1] = 15625; break;
|
case 1: cms->noisefreq[c >> 1][c & 1] = MASTER_CLOCK/512; break;
|
||||||
case 2: cms->noisefreq[c >> 1][c & 1] = 7812; break;
|
case 2: cms->noisefreq[c >> 1][c & 1] = MASTER_CLOCK/1024; break;
|
||||||
case 3: cms->noisefreq[c >> 1][c & 1] = cms->freq[c >> 1][(c & 1) * 3]; break;
|
case 3: cms->noisefreq[c >> 1][c & 1] = cms->freq[c >> 1][(c & 1) * 3]; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -124,14 +126,14 @@ void cms_write(uint16_t addr, uint8_t val, void *p)
|
||||||
case 0x0B: case 0x0C: case 0x0D:
|
case 0x0B: case 0x0C: case 0x0D:
|
||||||
voice = cms->addrs[chip] & 7;
|
voice = cms->addrs[chip] & 7;
|
||||||
cms->latch[chip][voice] = (cms->latch[chip][voice] & 0x700) | val;
|
cms->latch[chip][voice] = (cms->latch[chip][voice] & 0x700) | val;
|
||||||
cms->freq[chip][voice] = (15625 << (cms->latch[chip][voice] >> 8)) / (511 - (cms->latch[chip][voice] & 255));
|
cms->freq[chip][voice] = (MASTER_CLOCK/512 << (cms->latch[chip][voice] >> 8)) / (511 - (cms->latch[chip][voice] & 255));
|
||||||
break;
|
break;
|
||||||
case 0x10: case 0x11: case 0x12: /*Octave*/
|
case 0x10: case 0x11: case 0x12: /*Octave*/
|
||||||
voice = (cms->addrs[chip] & 3) << 1;
|
voice = (cms->addrs[chip] & 3) << 1;
|
||||||
cms->latch[chip][voice] = (cms->latch[chip][voice] & 0xFF) | ((val & 7) << 8);
|
cms->latch[chip][voice] = (cms->latch[chip][voice] & 0xFF) | ((val & 7) << 8);
|
||||||
cms->latch[chip][voice + 1] = (cms->latch[chip][voice + 1] & 0xFF) | ((val & 0x70) << 4);
|
cms->latch[chip][voice + 1] = (cms->latch[chip][voice + 1] & 0xFF) | ((val & 0x70) << 4);
|
||||||
cms->freq[chip][voice] = (15625 << (cms->latch[chip][voice] >> 8)) / (511 - (cms->latch[chip][voice] & 255));
|
cms->freq[chip][voice] = (MASTER_CLOCK/512 << (cms->latch[chip][voice] >> 8)) / (511 - (cms->latch[chip][voice] & 255));
|
||||||
cms->freq[chip][voice + 1] = (15625 << (cms->latch[chip][voice + 1] >> 8)) / (511 - (cms->latch[chip][voice + 1] & 255));
|
cms->freq[chip][voice + 1] = (MASTER_CLOCK/512 << (cms->latch[chip][voice + 1] >> 8)) / (511 - (cms->latch[chip][voice + 1] & 255));
|
||||||
break;
|
break;
|
||||||
case 0x16: /*Noise*/
|
case 0x16: /*Noise*/
|
||||||
cms->noisetype[chip][0] = val & 3;
|
cms->noisetype[chip][0] = val & 3;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue