From 2cec58e50a75e7e85a7897e7c51902eb7934569b Mon Sep 17 00:00:00 2001 From: EkeEke Date: Wed, 22 Aug 2012 23:03:46 +0200 Subject: [PATCH 1/2] synced a few files with googlecode repository --- source/gx/images/Load_cd.png | Bin 0 -> 5193 bytes source/gx/images/Main_reset.png | Bin 7695 -> 6399 bytes source/sound/blip.c | 1 - 3 files changed, 1 deletion(-) create mode 100644 source/gx/images/Load_cd.png diff --git a/source/gx/images/Load_cd.png b/source/gx/images/Load_cd.png new file mode 100644 index 0000000000000000000000000000000000000000..d852a355af8c44c3ede0ddaf5a9070e67b8f77c8 GIT binary patch literal 5193 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 Dwr1rX literal 0 HcmV?d00001 diff --git a/source/gx/images/Main_reset.png b/source/gx/images/Main_reset.png index 0248ecdabe9517c2390da3b3b3758a001237923f..fc28747d6f99cbae223109b38c187520461ae8a7 100644 GIT binary patch literal 6399 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 From c8d4bb4f91e994f0b06e4bd2d0c48b6c49c35359 Mon Sep 17 00:00:00 2001 From: EkeEke Date: Sun, 26 Aug 2012 21:11:15 +0200 Subject: [PATCH 2/2] [SCD] improved synchronization between PCM chip & SUB-CPU (Willy Beamish) [SCD] fixed PCM waveform sign bit and output precision --- source/cd_hw/pcm.c | 73 ++++++++++++++++++++++++++++++++++++---------- source/cd_hw/pcm.h | 1 + 2 files changed, 59 insertions(+), 15 deletions(-) diff --git a/source/cd_hw/pcm.c b/source/cd_hw/pcm.c index 47c71ba..fe9cd95 100644 --- a/source/cd_hw/pcm.c +++ b/source/cd_hw/pcm.c @@ -38,7 +38,7 @@ #include "shared.h" #include "blip.h" -#define PCM_CLOCKS_PER_SAMPLE (384 * 4) +#define PCM_MCLOCKS_PER_SAMPLE (384 * 4) #define pcm scd.pcm_hw @@ -49,8 +49,8 @@ void pcm_init(double clock, double samplerate) pcm_shutdown(); /* allocate blip buffers */ - blip[0] = blip_alloc(clock, samplerate * PCM_CLOCKS_PER_SAMPLE, samplerate / 4); - blip[1] = blip_alloc(clock, samplerate * PCM_CLOCKS_PER_SAMPLE, samplerate / 4); + blip[0] = blip_alloc(clock, samplerate * PCM_MCLOCKS_PER_SAMPLE, samplerate / 4); + blip[1] = blip_alloc(clock, samplerate * PCM_MCLOCKS_PER_SAMPLE, samplerate / 4); } void pcm_shutdown(void) @@ -69,16 +69,19 @@ void pcm_reset(void) /* reset default bank */ pcm.bank = pcm.ram; + /* reset master clocks counter */ + pcm.cycles = 0; + /* clear blip delta buffers */ blip_clear(blip[0]); blip_clear(blip[1]); } -void pcm_update(short *buffer, int length) +void pcm_run(unsigned int length) { - /* get number of clocks needed */ - length = blip_clocks_needed(blip[0], length); - +#ifdef LOG_PCM + error("[%d][%d]run %d PCM samples (from %d)\n", v_counter, s68k.cycles, length, pcm.cycles); +#endif /* check if PCM chip is running */ if (pcm.enabled) { @@ -117,16 +120,21 @@ void pcm_update(short *buffer, int length) /* infinite loop should not output any data */ if (data != 0xff) { - /* output L & R subchannels */ + /* check sign bit (output centered around 0) */ if (data & 0x80) + { + /* PCM data is positive */ + data = data & 0x7f; + } + else { /* PCM data is negative */ data = -(data & 0x7f); } - /* multiply PCM data with ENV & stereo PAN data then add to outputs (13.6 fixed point) */ - l += ((data * pcm.chan[j].env * (pcm.chan[j].pan & 0x0F)) >> 6); - r += ((data * pcm.chan[j].env * (pcm.chan[j].pan >> 4)) >> 6); + /* multiply PCM data with ENV & stereo PAN data then add to L/R outputs (14.5 fixed point) */ + l += ((data * pcm.chan[j].env * (pcm.chan[j].pan & 0x0F)) >> 5); + r += ((data * pcm.chan[j].env * (pcm.chan[j].pan >> 4)) >> 5); } } } @@ -169,17 +177,43 @@ void pcm_update(short *buffer, int length) } } - /* resample to output stereo buffer */ + /* end of blib buffer frame */ blip_end_frame(blip[0], length); - blip_read_samples(blip[0], buffer, 1); blip_end_frame(blip[1], length); + + /* update PCM master clock counter */ + pcm.cycles += length * PCM_MCLOCKS_PER_SAMPLE; +} + +void pcm_update(short *buffer, int length) +{ + /* get number of internal clocks (samples) needed */ + unsigned int clocks = blip_clocks_needed(blip[0], length); + + /* run PCM chip */ + pcm_run(clocks); + + /* resample to output stereo buffer */ + blip_read_samples(blip[0], buffer, 1); blip_read_samples(blip[1], buffer + 1, 1); + + /* reset PCM master clocks counter */ + pcm.cycles = 0; } void pcm_write(unsigned int address, unsigned char data) { + /* synchronize PCM chip with SUB-CPU */ + int clocks = s68k.cycles - pcm.cycles; + if (clocks > 0) + { + /* number of internal clocks (samples) to run */ + clocks = (clocks + PCM_MCLOCKS_PER_SAMPLE - 1) / PCM_MCLOCKS_PER_SAMPLE; + pcm_run(clocks); + } + #ifdef LOG_PCM - error("[%d][%d]PCM %x write -> 0x%02x (%X)\n", v_counter, s68k.cycles, address, data, s68k.pc); + error("[%d][%d]PCM write %x -> 0x%02x (%X)\n", v_counter, s68k.cycles, address, data, s68k.pc); #endif /* external RAM is mapped to $1000-$1FFF */ @@ -293,8 +327,17 @@ void pcm_write(unsigned int address, unsigned char data) unsigned char pcm_read(unsigned int address) { + /* synchronize PCM chip with SUB-CPU */ + int clocks = s68k.cycles - pcm.cycles; + if (clocks > 0) + { + /* number of internal clocks (samples) to run */ + clocks = (clocks + PCM_MCLOCKS_PER_SAMPLE - 1) / PCM_MCLOCKS_PER_SAMPLE; + pcm_run(clocks); + } + #ifdef LOG_PCM - error("[%d][%d]PCM %x read (%X)\n", v_counter, s68k.cycles, address, s68k.pc); + error("[%d][%d]PCM read (%X)\n", v_counter, s68k.cycles, address, s68k.pc); #endif /* external RAM (TODO: verify if possible to read, some docs claim it's not !) */ diff --git a/source/cd_hw/pcm.h b/source/cd_hw/pcm.h index 0a1a08b..8f7ddd2 100644 --- a/source/cd_hw/pcm.h +++ b/source/cd_hw/pcm.h @@ -59,6 +59,7 @@ typedef struct uint8 status; /* channels ON/OFF status */ uint8 index; /* current channel index */ uint8 ram[0x10000]; /* 64k external RAM */ + uint32 cycles; } pcm_t; /* Function prototypes */