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
- statusreg Busy and End bits
- 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...
*/
@ -1338,12 +1340,12 @@ UINT8 ymf271_device::ymf271_read_memory(UINT32 offset)
{
if (m_ext_read_handler.isnull())
{
if (offset < m_region_size)
return m_region_base[offset];
if (offset < m_mem_size)
return m_mem_base[offset];
/* 8MB chip limit (shouldn't happen) */
else if (offset > 0x7fffff)
return m_region_base[offset & 0x7fffff];
return m_mem_base[offset & 0x7fffff];
else
return 0;
@ -1686,8 +1688,8 @@ void ymf271_device::device_start()
m_timA = timer_alloc(0);
m_timB = timer_alloc(1);
m_region_base = *region();
m_region_size = region()->bytes();
m_mem_base = *region();
m_mem_size = region()->bytes();
m_irq_handler.resolve();
m_ext_read_handler.resolve();

View File

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

View File

@ -17,6 +17,11 @@
8-bit PCM, 16-bit PCM ...... 0.172 to 88.2kHz in 512 steps
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
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 (offset < m_region_size)
return m_region_base[offset];
if (offset < m_mem_size)
return m_mem_base[offset];
/* 16MB chip limit (shouldn't happen) */
else if (offset > 0xffffff)
return m_region_base[offset & 0xffffff];
return m_mem_base[offset & 0xffffff];
else
return 0;
@ -583,8 +588,8 @@ void ymz280b_device::device_start()
/* initialize the rest of the structure */
m_master_clock = (double)clock() / 384.0;
m_region_base = *region();
m_region_size = region()->bytes();
m_mem_base = *region();
m_mem_size = region()->bytes();
m_irq_handler.resolve();
for (int i = 0; i < 8; i++)

View File

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