Updated nes pcm dma to read data through the cpu address map.

This commit is contained in:
Wilbert Pol 2008-10-24 21:15:49 +00:00
parent a4059f19ad
commit d64bda5e94
3 changed files with 6 additions and 4 deletions

View File

@ -377,7 +377,7 @@ static int8 apu_dpcm(struct nesapu_info *info, dpcm_t *chan)
bit_pos = 7 - (chan->bits_left & 7); bit_pos = 7 - (chan->bits_left & 7);
if (7 == bit_pos) if (7 == bit_pos)
{ {
chan->cur_byte = chan->cpu_mem[chan->address]; chan->cur_byte = program_read_byte(chan->address);
chan->address++; chan->address++;
chan->length--; chan->length--;
} }
@ -600,6 +600,7 @@ INLINE void apu_update(struct nesapu_info *info, stream_sample_t *buffer16, int
{ {
int accum; int accum;
cpuintrf_push_context( info->APU.dpcm.cpu_num );
while (samples--) while (samples--)
{ {
accum = apu_square(info, &info->APU.squ[0]); accum = apu_square(info, &info->APU.squ[0]);
@ -616,6 +617,7 @@ INLINE void apu_update(struct nesapu_info *info, stream_sample_t *buffer16, int
*(buffer16++)=accum<<8; *(buffer16++)=accum<<8;
} }
cpuintrf_pop_context();
} }
/* READ VALUES FROM REGISTERS */ /* READ VALUES FROM REGISTERS */
@ -691,7 +693,7 @@ static void *nesapu_start(const char *tag, int sndindex, int clock, const void *
info->buffer_size+=info->samps_per_sync; info->buffer_size+=info->samps_per_sync;
/* Initialize individual chips */ /* Initialize individual chips */
(info->APU.dpcm).cpu_mem=memory_region(Machine, intf->region); (info->APU.dpcm).cpu_num= mame_find_cpu_index(Machine, intf->cpu_tag);
info->stream = stream_create(0, 1, rate, info, nes_psg_update_sound); info->stream = stream_create(0, 1, rate, info, nes_psg_update_sound);

View File

@ -39,7 +39,7 @@
typedef struct _nes_interface nes_interface; typedef struct _nes_interface nes_interface;
struct _nes_interface struct _nes_interface
{ {
const char *region; /* DMC regions */ const char *cpu_tag; /* CPU tag */
}; };
READ8_HANDLER( nes_psg_0_r ); READ8_HANDLER( nes_psg_0_r );

View File

@ -137,7 +137,7 @@ typedef struct dpcm_s
uint8 cur_byte; uint8 cur_byte;
boolean enabled; boolean enabled;
boolean irq_occurred; boolean irq_occurred;
uint8 *cpu_mem; int cpu_num;
signed char vol; signed char vol;
} dpcm_t; } dpcm_t;