This commit is contained in:
Michaël Banaan Ananas 2013-06-03 21:32:25 +00:00
parent b73aab8d66
commit 7611b2728e
4 changed files with 21 additions and 14 deletions

View File

@ -17,6 +17,8 @@
- Src B and Src NOTE bits - Src B and Src NOTE bits
- statusreg Busy and End bits - statusreg Busy and End bits
- timer register 0x11 - timer register 0x11
- Is memory handling 100% correct? At the moment, seibuspi.c is the only
hardware currently emulated that uses external handlers.
- oh, and a lot more... - oh, and a lot more...
*/ */
@ -1338,12 +1340,12 @@ UINT8 ymf271_device::ymf271_read_memory(UINT32 offset)
{ {
if (m_ext_read_handler.isnull()) if (m_ext_read_handler.isnull())
{ {
if (offset < m_region_size) if (offset < m_mem_size)
return m_region_base[offset]; return m_mem_base[offset];
/* 8MB chip limit (shouldn't happen) */ /* 8MB chip limit (shouldn't happen) */
else if (offset > 0x7fffff) else if (offset > 0x7fffff)
return m_region_base[offset & 0x7fffff]; return m_mem_base[offset & 0x7fffff];
else else
return 0; return 0;
@ -1686,8 +1688,8 @@ void ymf271_device::device_start()
m_timA = timer_alloc(0); m_timA = timer_alloc(0);
m_timB = timer_alloc(1); m_timB = timer_alloc(1);
m_region_base = *region(); m_mem_base = *region();
m_region_size = region()->bytes(); m_mem_size = region()->bytes();
m_irq_handler.resolve(); m_irq_handler.resolve();
m_ext_read_handler.resolve(); m_ext_read_handler.resolve();

View File

@ -132,8 +132,8 @@ private:
UINT8 m_ext_rw; UINT8 m_ext_rw;
UINT8 m_ext_readlatch; UINT8 m_ext_readlatch;
UINT8 *m_region_base; UINT8 *m_mem_base;
UINT32 m_region_size; UINT32 m_mem_size;
UINT32 m_clock; UINT32 m_clock;
emu_timer *m_timA, *m_timB; emu_timer *m_timA, *m_timB;

View File

@ -18,6 +18,11 @@
256 steps total level and 16 steps panpot can be set 256 steps total level and 16 steps panpot can be set
Voice signal is output in stereo 16-bit 2's complement MSB-first format Voice signal is output in stereo 16-bit 2's complement MSB-first format
TODO:
- Is memory handling 100% correct? At the moment, Konami firewave.c is the only
hardware currently emulated that uses external handlers.
It also happens to be the only one using 16-bit PCM.
*/ */
@ -51,12 +56,12 @@ UINT8 ymz280b_device::ymz280b_read_memory(UINT32 offset)
{ {
if (m_ext_read_handler.isnull()) if (m_ext_read_handler.isnull())
{ {
if (offset < m_region_size) if (offset < m_mem_size)
return m_region_base[offset]; return m_mem_base[offset];
/* 16MB chip limit (shouldn't happen) */ /* 16MB chip limit (shouldn't happen) */
else if (offset > 0xffffff) else if (offset > 0xffffff)
return m_region_base[offset & 0xffffff]; return m_mem_base[offset & 0xffffff];
else else
return 0; return 0;
@ -583,8 +588,8 @@ void ymz280b_device::device_start()
/* initialize the rest of the structure */ /* initialize the rest of the structure */
m_master_clock = (double)clock() / 384.0; m_master_clock = (double)clock() / 384.0;
m_region_base = *region(); m_mem_base = *region();
m_region_size = region()->bytes(); m_mem_size = region()->bytes();
m_irq_handler.resolve(); m_irq_handler.resolve();
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)

View File

@ -115,8 +115,8 @@ private:
devcb2_write8 m_ext_write_handler;/* external RAM write handler */ devcb2_write8 m_ext_write_handler;/* external RAM write handler */
double m_master_clock; /* master clock frequency */ double m_master_clock; /* master clock frequency */
UINT8 *m_region_base; /* pointer to the base of the region */ UINT8 *m_mem_base; /* pointer to the base of external memory */
UINT32 m_region_size; UINT32 m_mem_size;
sound_stream *m_stream; /* which stream are we using */ sound_stream *m_stream; /* which stream are we using */
INT16 *m_scratch; INT16 *m_scratch;
#if MAKE_WAVS #if MAKE_WAVS