mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
vgmplay : Dual OKIM6295s, NMK112 banking support (#3114)
* vgmplay : Implement NMK112, Dual OKIM6295 Chip Support * oops * typo
This commit is contained in:
parent
eb9969edc0
commit
6b10d9bad7
@ -68,7 +68,8 @@ public:
|
||||
A_SN76496 = 0x000000a0,
|
||||
A_K053260 = 0x000000b0,
|
||||
A_C6280 = 0x000000e0,
|
||||
A_OKIM6295 = 0x000000f0,
|
||||
A_OKIM6295A = 0x000000f0,
|
||||
A_OKIM6295B = 0x00000110,
|
||||
A_SEGAPCM = 0x00001000,
|
||||
A_GAMEBOY = 0x00002000,
|
||||
A_NESAPU = 0x00002030,
|
||||
@ -115,9 +116,10 @@ public:
|
||||
READ8_MEMBER(multipcma_rom_r);
|
||||
READ8_MEMBER(multipcmb_rom_r);
|
||||
READ8_MEMBER(k053260_rom_r);
|
||||
READ8_MEMBER(okim6295a_rom_r);
|
||||
READ8_MEMBER(okim6295b_rom_r);
|
||||
READ8_MEMBER(k054539a_rom_r);
|
||||
READ8_MEMBER(k054539b_rom_r);
|
||||
READ8_MEMBER(okim6295_rom_r);
|
||||
READ8_MEMBER(c352_rom_r);
|
||||
READ8_MEMBER(qsound_rom_r);
|
||||
|
||||
@ -125,6 +127,16 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(multipcm_bank_hi_a_w);
|
||||
DECLARE_WRITE8_MEMBER(multipcm_bank_lo_b_w);
|
||||
DECLARE_WRITE8_MEMBER(multipcm_bank_hi_b_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_clock_a_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_pin7_a_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_nmk112_enable_a_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_bank_a_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_nmk112_bank_a_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_clock_b_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_pin7_b_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_nmk112_enable_b_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_bank_b_w);
|
||||
DECLARE_WRITE8_MEMBER(okim6295_nmk112_bank_b_w);
|
||||
|
||||
private:
|
||||
struct rom_block {
|
||||
@ -158,6 +170,16 @@ private:
|
||||
uint32_t m_multipcmb_bank_l;
|
||||
uint32_t m_multipcmb_bank_r;
|
||||
uint32_t m_multipcmb_banked;
|
||||
uint32_t m_okim6295a_clock;
|
||||
uint32_t m_okim6295a_pin7;
|
||||
uint32_t m_okim6295a_nmk112_enable;
|
||||
uint32_t m_okim6295a_bank;
|
||||
uint32_t m_okim6295a_nmk112_bank[4];
|
||||
uint32_t m_okim6295b_clock;
|
||||
uint32_t m_okim6295b_pin7;
|
||||
uint32_t m_okim6295b_nmk112_enable;
|
||||
uint32_t m_okim6295b_bank;
|
||||
uint32_t m_okim6295b_nmk112_bank[4];
|
||||
|
||||
uint8_t rom_r(int chip, uint8_t type, offs_t offset);
|
||||
uint32_t handle_data_block(uint32_t address);
|
||||
@ -204,7 +226,8 @@ private:
|
||||
required_device<pokey_device> m_pokeya;
|
||||
required_device<pokey_device> m_pokeyb;
|
||||
required_device<c352_device> m_c352;
|
||||
required_device<okim6295_device> m_okim6295;
|
||||
required_device<okim6295_device> m_okim6295a;
|
||||
required_device<okim6295_device> m_okim6295b;
|
||||
required_device<ymf271_device> m_ymf271;
|
||||
required_device<ymz280b_device> m_ymz280b;
|
||||
required_device<ym2608_device> m_ym2608;
|
||||
@ -494,9 +517,15 @@ void vgmplay_device::execute_run()
|
||||
}
|
||||
|
||||
case 0xb8:
|
||||
m_io->write_byte(A_OKIM6295 + m_file->read_byte(m_pc+1), m_file->read_byte(m_pc+2));
|
||||
{
|
||||
uint8_t offset = m_file->read_byte(m_pc+1);
|
||||
if (offset & 0x80)
|
||||
m_io->write_byte(A_OKIM6295B + (offset & 0x7f), m_file->read_byte(m_pc+2));
|
||||
else
|
||||
m_io->write_byte(A_OKIM6295A + (offset & 0x7f), m_file->read_byte(m_pc+2));
|
||||
m_pc += 3;
|
||||
break;
|
||||
}
|
||||
|
||||
case 0xb9:
|
||||
m_io->write_byte(A_C6280 + m_file->read_byte(m_pc+1), m_file->read_byte(m_pc+2));
|
||||
@ -1012,11 +1041,46 @@ READ8_MEMBER(vgmplay_device::multipcmb_rom_r)
|
||||
return rom_r(1, 0x89, offset);
|
||||
}
|
||||
|
||||
READ8_MEMBER(vgmplay_device::okim6295_rom_r)
|
||||
READ8_MEMBER(vgmplay_device::okim6295a_rom_r)
|
||||
{
|
||||
if (m_okim6295a_nmk112_enable)
|
||||
{
|
||||
if (offset < 0x400) && (m_okim6295a_nmk112_enable & 0x80)
|
||||
{
|
||||
offset = (m_okim6295a_nmk112_bank[(offset >> 8) & 0x3] << 16) | (offset & 0xff);
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = (m_okim6295a_nmk112_bank[(offset >> 16) & 0x3] << 16) | (offset & 0xffff);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = (m_okim6295a_bank * 0x40000) | offset;
|
||||
}
|
||||
return rom_r(0, 0x8b, offset);
|
||||
}
|
||||
|
||||
READ8_MEMBER(vgmplay_device::okim6295b_rom_r)
|
||||
{
|
||||
if (m_okim6295b_nmk112_enable)
|
||||
{
|
||||
if (offset < 0x400) && (m_okim6295b_nmk112_enable & 0x80)
|
||||
{
|
||||
offset = (m_okim6295b_nmk112_bank[(offset >> 8) & 0x3] << 16) | (offset & 0x3ff);
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = (m_okim6295b_nmk112_bank[(offset >> 16) & 0x3] << 16) | (offset & 0xffff);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = (m_okim6295b_bank * 0x40000) | offset;
|
||||
}
|
||||
return rom_r(1, 0x8b, offset);
|
||||
}
|
||||
|
||||
READ8_MEMBER(vgmplay_device::k054539a_rom_r)
|
||||
{
|
||||
return rom_r(0, 0x8c, offset);
|
||||
@ -1069,7 +1133,8 @@ vgmplay_state::vgmplay_state(const machine_config &mconfig, device_type type, co
|
||||
, m_pokeya(*this, "pokeya")
|
||||
, m_pokeyb(*this, "pokeyb")
|
||||
, m_c352(*this, "c352")
|
||||
, m_okim6295(*this, "okim6295")
|
||||
, m_okim6295a(*this, "okim6295a")
|
||||
, m_okim6295b(*this, "okim6295b")
|
||||
, m_ymf271(*this, "ymf271")
|
||||
, m_ymz280b(*this, "ymz280b")
|
||||
, m_ym2608(*this, "ym2608")
|
||||
@ -1276,14 +1341,21 @@ void vgmplay_state::machine_start()
|
||||
m_k054539b->init_flags(r8(0x95));
|
||||
}
|
||||
if(version >= 0x161 && r32(0x98)) {
|
||||
uint32_t clock = r32(0x98);
|
||||
uint32_t pin7 = 0;
|
||||
if (clock & 0x80000000) {
|
||||
clock &= ~0x80000000;
|
||||
pin7 = 1;
|
||||
m_okim6295a_clock = r32(0x98);
|
||||
m_okim6295a_pin7 = 0;
|
||||
if (m_okim6295a_clock & 0x80000000) {
|
||||
m_okim6295a_clock &= ~0x80000000;
|
||||
m_okim6295a_pin7 = 1;
|
||||
}
|
||||
okim6295_device::static_set_pin7(*m_okim6295a, m_okim6295a_pin7);
|
||||
m_okim6295a->set_unscaled_clock(m_okim6295a_clock & ~0xc0000000);
|
||||
if (m_okim6295a_clock & 0x40000000) {
|
||||
m_okim6295a_clock &= ~0x40000000;
|
||||
m_okim6295b_clock = m_okim6295a_clock;
|
||||
m_okim6295b_pin7 = m_okim6295a_pin7;
|
||||
okim6295_device::static_set_pin7(*m_okim6295b, m_okim6295b_pin7);
|
||||
m_okim6295b->set_unscaled_clock(m_okim6295b_clock);
|
||||
}
|
||||
okim6295_device::static_set_pin7(*m_okim6295, pin7);
|
||||
m_okim6295->set_unscaled_clock(clock);
|
||||
}
|
||||
if(version >= 0x161 && r32(0xa0)) {
|
||||
uint32_t clock = r32(0xa0);
|
||||
@ -1373,6 +1445,88 @@ WRITE8_MEMBER(vgmplay_device::multipcm_bank_lo_b_w)
|
||||
m_multipcmb_banked = 1;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_clock_a_w)
|
||||
{
|
||||
uint32_t old = m_okim6295a_clock;
|
||||
int shift = ((offset & 3) << 3);
|
||||
m_okim6295a_clock = (m_okim6295a_clock & ~(mem_mask << shift)) | ((data & mem_mask) << shift);
|
||||
if (old != m_okim6295a_clock)
|
||||
m_okim6295a->set_unscaled_clock(m_okim6295a_clock);
|
||||
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_pin7_a_w)
|
||||
{
|
||||
if ((data & mem_mask) != (m_okim6295a_pin7 & mem_mask))
|
||||
{
|
||||
COMBINE_DATA(&m_okim6295a_pin7);
|
||||
okim6295_device::static_set_pin7(*m_okim6295a, m_okim6295a_pin7);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_nmk112_enable_a_w)
|
||||
{
|
||||
COMBINE_DATA(&m_okim6295a_nmk112_enable);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_bank_a_w)
|
||||
{
|
||||
if ((data & mem_mask) != (m_okim6295a_bank & mem_mask))
|
||||
{
|
||||
COMBINE_DATA(&m_okim6295a_bank);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_nmk112_bank_a_w)
|
||||
{
|
||||
offset &= 3;
|
||||
if ((data & mem_mask) != (m_okim6295a_nmk112_bank[offset] & mem_mask))
|
||||
{
|
||||
COMBINE_DATA(&m_okim6295a_nmk112_bank[offset]);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_clock_b_w)
|
||||
{
|
||||
uint32_t old = m_okim6295b_clock;
|
||||
int shift = ((offset & 3) << 3);
|
||||
m_okim6295b_clock = (m_okim6295b_clock & ~(mem_mask << shift)) | ((data & mem_mask) << shift);
|
||||
if (old != m_okim6295b_clock)
|
||||
m_okim6295b->set_unscaled_clock(m_okim6295b_clock);
|
||||
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_pin7_b_w)
|
||||
{
|
||||
if ((data & mem_mask) != (m_okim6295b_pin7 & mem_mask))
|
||||
{
|
||||
COMBINE_DATA(&m_okim6295b_pin7);
|
||||
okim6295_device::static_set_pin7(*m_okim6295b, m_okim6295b_pin7);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_nmk112_enable_b_w)
|
||||
{
|
||||
COMBINE_DATA(&m_okim6295b_nmk112_enable);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_bank_b_w)
|
||||
{
|
||||
if ((data & mem_mask) != (m_okim6295b_bank & mem_mask))
|
||||
{
|
||||
COMBINE_DATA(&m_okim6295b_bank);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vgmplay_device::okim6295_nmk112_bank_b_w)
|
||||
{
|
||||
offset &= 3;
|
||||
if ((data & mem_mask) != (m_okim6295b_nmk112_bank[offset] & mem_mask))
|
||||
{
|
||||
COMBINE_DATA(&m_okim6295b_nmk112_bank[offset]);
|
||||
}
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( vgmplay )
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -1385,42 +1539,53 @@ static ADDRESS_MAP_START( soundchips16_map, AS_IO16, 16, vgmplay_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( soundchips_map, AS_IO, 8, vgmplay_state )
|
||||
AM_RANGE(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE+3) AM_READ(file_size_r)
|
||||
AM_RANGE(vgmplay_device::A_YM2612, vgmplay_device::A_YM2612+3) AM_DEVWRITE ("ym2612", ym2612_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2151, vgmplay_device::A_YM2151+1) AM_DEVWRITE ("ym2151", ym2151_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2413, vgmplay_device::A_YM2413+1) AM_DEVWRITE ("ym2413", ym2413_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2203A, vgmplay_device::A_YM2203A+1) AM_DEVWRITE ("ym2203a", ym2203_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2203B, vgmplay_device::A_YM2203B+1) AM_DEVWRITE ("ym2203b", ym2203_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM3526, vgmplay_device::A_YM3526+1) AM_DEVWRITE ("ym3526", ym3526_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM3812, vgmplay_device::A_YM3812+1) AM_DEVWRITE ("ym3812", ym3812_device, write)
|
||||
AM_RANGE(vgmplay_device::A_AY8910A, vgmplay_device::A_AY8910A) AM_DEVWRITE ("ay8910a", ay8910_device, data_w)
|
||||
AM_RANGE(vgmplay_device::A_AY8910A+1, vgmplay_device::A_AY8910A+1) AM_DEVWRITE ("ay8910a", ay8910_device, address_w)
|
||||
AM_RANGE(vgmplay_device::A_AY8910B, vgmplay_device::A_AY8910B) AM_DEVWRITE ("ay8910b", ay8910_device, data_w)
|
||||
AM_RANGE(vgmplay_device::A_AY8910B+1, vgmplay_device::A_AY8910B+1) AM_DEVWRITE ("ay8910b", ay8910_device, address_w)
|
||||
// AM_RANGE(vgmplay_device::A_SN76496+0, vgmplay_device::A_SN76496+0) AM_DEVWRITE ("sn76496", sn76496_device, stereo_w)
|
||||
AM_RANGE(vgmplay_device::A_SN76496+1, vgmplay_device::A_SN76496+1) AM_DEVWRITE ("sn76496", sn76496_device, write)
|
||||
AM_RANGE(vgmplay_device::A_K053260, vgmplay_device::A_K053260+0x2f) AM_DEVWRITE ("k053260", k053260_device, write)
|
||||
AM_RANGE(vgmplay_device::A_C6280, vgmplay_device::A_C6280+0xf) AM_DEVWRITE ("c6280", c6280_device, c6280_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295, vgmplay_device::A_OKIM6295) AM_DEVWRITE ("okim6295", okim6295_device, write)
|
||||
AM_RANGE(vgmplay_device::A_SEGAPCM, vgmplay_device::A_SEGAPCM+0x7ff) AM_DEVWRITE ("segapcm", segapcm_device, sega_pcm_w)
|
||||
AM_RANGE(vgmplay_device::A_GAMEBOY, vgmplay_device::A_GAMEBOY+0x16) AM_DEVWRITE ("dmg", gameboy_sound_device, sound_w)
|
||||
AM_RANGE(vgmplay_device::A_GAMEBOY+0x20, vgmplay_device::A_GAMEBOY+0x2f) AM_DEVWRITE ("dmg", gameboy_sound_device, wave_w)
|
||||
AM_RANGE(vgmplay_device::A_NESAPU, vgmplay_device::A_NESAPU+0x1f) AM_DEVWRITE ("nescpu:nesapu", nesapu_device, write)
|
||||
AM_RANGE(vgmplay_device::A_NESRAM, vgmplay_device::A_NESRAM+0xffff) AM_RAM AM_SHARE("nesapu_ram")
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMA, vgmplay_device::A_MULTIPCMA+3) AM_DEVWRITE ("multipcma", multipcm_device, write )
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMA+4, vgmplay_device::A_MULTIPCMA+7) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_hi_a_w)
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMA+8, vgmplay_device::A_MULTIPCMA+11) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_lo_a_w)
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMB, vgmplay_device::A_MULTIPCMB+3) AM_DEVWRITE ("multipcmb", multipcm_device, write )
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMB+4, vgmplay_device::A_MULTIPCMB+7) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_hi_b_w)
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMB+8, vgmplay_device::A_MULTIPCMB+11) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_lo_b_w)
|
||||
AM_RANGE(vgmplay_device::A_POKEYA, vgmplay_device::A_POKEYA+0xf) AM_DEVWRITE ("pokeya", pokey_device, write)
|
||||
AM_RANGE(vgmplay_device::A_POKEYB, vgmplay_device::A_POKEYB+0xf) AM_DEVWRITE ("pokeyb", pokey_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YMF271, vgmplay_device::A_YMF271+0xf) AM_DEVWRITE ("ymf271", ymf271_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YMZ280B, vgmplay_device::A_YMZ280B+0x1) AM_DEVWRITE ("ymz280b", ymz280b_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2608, vgmplay_device::A_YM2608+0x3) AM_DEVWRITE ("ym2608", ym2608_device, write)
|
||||
AM_RANGE(vgmplay_device::A_K054539A, vgmplay_device::A_K054539A+0x22f) AM_DEVWRITE ("k054539a", k054539_device, write)
|
||||
AM_RANGE(vgmplay_device::A_K054539B, vgmplay_device::A_K054539B+0x22f) AM_DEVWRITE ("k054539b", k054539_device, write)
|
||||
AM_RANGE(vgmplay_device::A_QSOUND, vgmplay_device::A_QSOUND+0x2) AM_DEVWRITE ("qsound", qsound_device, qsound_w)
|
||||
AM_RANGE(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE+3) AM_READ(file_size_r)
|
||||
AM_RANGE(vgmplay_device::A_YM2612, vgmplay_device::A_YM2612+3) AM_DEVWRITE ("ym2612", ym2612_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2151, vgmplay_device::A_YM2151+1) AM_DEVWRITE ("ym2151", ym2151_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2413, vgmplay_device::A_YM2413+1) AM_DEVWRITE ("ym2413", ym2413_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2203A, vgmplay_device::A_YM2203A+1) AM_DEVWRITE ("ym2203a", ym2203_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2203B, vgmplay_device::A_YM2203B+1) AM_DEVWRITE ("ym2203b", ym2203_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM3526, vgmplay_device::A_YM3526+1) AM_DEVWRITE ("ym3526", ym3526_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM3812, vgmplay_device::A_YM3812+1) AM_DEVWRITE ("ym3812", ym3812_device, write)
|
||||
AM_RANGE(vgmplay_device::A_AY8910A, vgmplay_device::A_AY8910A) AM_DEVWRITE ("ay8910a", ay8910_device, data_w)
|
||||
AM_RANGE(vgmplay_device::A_AY8910A+1, vgmplay_device::A_AY8910A+1) AM_DEVWRITE ("ay8910a", ay8910_device, address_w)
|
||||
AM_RANGE(vgmplay_device::A_AY8910B, vgmplay_device::A_AY8910B) AM_DEVWRITE ("ay8910b", ay8910_device, data_w)
|
||||
AM_RANGE(vgmplay_device::A_AY8910B+1, vgmplay_device::A_AY8910B+1) AM_DEVWRITE ("ay8910b", ay8910_device, address_w)
|
||||
// AM_RANGE(vgmplay_device::A_SN76496+0, vgmplay_device::A_SN76496+0) AM_DEVWRITE ("sn76496", sn76496_device, stereo_w)
|
||||
AM_RANGE(vgmplay_device::A_SN76496+1, vgmplay_device::A_SN76496+1) AM_DEVWRITE ("sn76496", sn76496_device, write)
|
||||
AM_RANGE(vgmplay_device::A_K053260, vgmplay_device::A_K053260+0x2f) AM_DEVWRITE ("k053260", k053260_device, write)
|
||||
AM_RANGE(vgmplay_device::A_C6280, vgmplay_device::A_C6280+0xf) AM_DEVWRITE ("c6280", c6280_device, c6280_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295A, vgmplay_device::A_OKIM6295A) AM_DEVWRITE ("okim6295a", okim6295_device, write)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295A+0x8, vgmplay_device::A_OKIM6295A+0xb) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_clock_a_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295A+0xc, vgmplay_device::A_OKIM6295A+0xc) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_pin7_a_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295A+0xe, vgmplay_device::A_OKIM6295A+0xe) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_enable_a_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295A+0xf, vgmplay_device::A_OKIM6295A+0xf) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_bank_a_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295A+0x10, vgmplay_device::A_OKIM6295A+0x13) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_bank_a_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295B, vgmplay_device::A_OKIM6295B) AM_DEVWRITE ("okim6295b", okim6295_device, write)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295B+0x8, vgmplay_device::A_OKIM6295B+0xb) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_clock_b_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295B+0xc, vgmplay_device::A_OKIM6295B+0xc) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_pin7_b_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295B+0xe, vgmplay_device::A_OKIM6295B+0xe) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_enable_b_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295B+0xf, vgmplay_device::A_OKIM6295B+0xf) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_bank_b_w)
|
||||
AM_RANGE(vgmplay_device::A_OKIM6295B+0x10, vgmplay_device::A_OKIM6295B+0x13) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_bank_b_w)
|
||||
AM_RANGE(vgmplay_device::A_SEGAPCM, vgmplay_device::A_SEGAPCM+0x7ff) AM_DEVWRITE ("segapcm", segapcm_device, sega_pcm_w)
|
||||
AM_RANGE(vgmplay_device::A_GAMEBOY, vgmplay_device::A_GAMEBOY+0x16) AM_DEVWRITE ("dmg", gameboy_sound_device, sound_w)
|
||||
AM_RANGE(vgmplay_device::A_GAMEBOY+0x20, vgmplay_device::A_GAMEBOY+0x2f) AM_DEVWRITE ("dmg", gameboy_sound_device, wave_w)
|
||||
AM_RANGE(vgmplay_device::A_NESAPU, vgmplay_device::A_NESAPU+0x1f) AM_DEVWRITE ("nescpu:nesapu", nesapu_device, write)
|
||||
AM_RANGE(vgmplay_device::A_NESRAM, vgmplay_device::A_NESRAM+0xffff) AM_RAM AM_SHARE("nesapu_ram")
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMA, vgmplay_device::A_MULTIPCMA+3) AM_DEVWRITE ("multipcma", multipcm_device, write )
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMA+4, vgmplay_device::A_MULTIPCMA+7) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_hi_a_w)
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMA+8, vgmplay_device::A_MULTIPCMA+11) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_lo_a_w)
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMB, vgmplay_device::A_MULTIPCMB+3) AM_DEVWRITE ("multipcmb", multipcm_device, write )
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMB+4, vgmplay_device::A_MULTIPCMB+7) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_hi_b_w)
|
||||
AM_RANGE(vgmplay_device::A_MULTIPCMB+8, vgmplay_device::A_MULTIPCMB+11) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_lo_b_w)
|
||||
AM_RANGE(vgmplay_device::A_POKEYA, vgmplay_device::A_POKEYA+0xf) AM_DEVWRITE ("pokeya", pokey_device, write)
|
||||
AM_RANGE(vgmplay_device::A_POKEYB, vgmplay_device::A_POKEYB+0xf) AM_DEVWRITE ("pokeyb", pokey_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YMF271, vgmplay_device::A_YMF271+0xf) AM_DEVWRITE ("ymf271", ymf271_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YMZ280B, vgmplay_device::A_YMZ280B+0x1) AM_DEVWRITE ("ymz280b", ymz280b_device, write)
|
||||
AM_RANGE(vgmplay_device::A_YM2608, vgmplay_device::A_YM2608+0x3) AM_DEVWRITE ("ym2608", ym2608_device, write)
|
||||
AM_RANGE(vgmplay_device::A_K054539A, vgmplay_device::A_K054539A+0x22f) AM_DEVWRITE ("k054539a", k054539_device, write)
|
||||
AM_RANGE(vgmplay_device::A_K054539B, vgmplay_device::A_K054539B+0x22f) AM_DEVWRITE ("k054539b", k054539_device, write)
|
||||
AM_RANGE(vgmplay_device::A_QSOUND, vgmplay_device::A_QSOUND+0x2) AM_DEVWRITE ("qsound", qsound_device, qsound_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( segapcm_map, 0, 8, vgmplay_state )
|
||||
@ -1439,6 +1604,14 @@ static ADDRESS_MAP_START( k053260_map, 0, 8, vgmplay_state )
|
||||
AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, k053260_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( okim6295a_map, 0, 8, vgmplay_state )
|
||||
AM_RANGE(0, 0x3ffff) AM_DEVREAD("vgmplay", vgmplay_device, okim6295a_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( okim6295b_map, 0, 8, vgmplay_state )
|
||||
AM_RANGE(0, 0x3ffff) AM_DEVREAD("vgmplay", vgmplay_device, okim6295b_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( k054539a_map, 0, 8, vgmplay_state )
|
||||
AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, k054539a_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
@ -1447,10 +1620,6 @@ static ADDRESS_MAP_START( k054539b_map, 0, 8, vgmplay_state )
|
||||
AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, k054539b_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( okim6295_map, 0, 8, vgmplay_state )
|
||||
AM_RANGE(0, 0x3ffff) AM_DEVREAD("vgmplay", vgmplay_device, okim6295_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( c352_map, 0, 8, vgmplay_state )
|
||||
AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, c352_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
@ -1578,9 +1747,14 @@ MACHINE_CONFIG_START(vgmplay_state::vgmplay)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, c352_map)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1)
|
||||
|
||||
MCFG_OKIM6295_ADD("okim6295a", 1000000, PIN7_HIGH)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, okim6295a_map)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
|
||||
|
||||
MCFG_OKIM6295_ADD("okim6295", 1000000, PIN7_HIGH)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, okim6295_map)
|
||||
MCFG_OKIM6295_ADD("okim6295b", 1000000, PIN7_HIGH)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, okim6295b_map)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user