diff options
Diffstat (limited to 'src/mame/drivers/wgp.cpp')
-rw-r--r-- | src/mame/drivers/wgp.cpp | 83 |
1 files changed, 43 insertions, 40 deletions
diff --git a/src/mame/drivers/wgp.cpp b/src/mame/drivers/wgp.cpp index d12739b038e..be0e4f3d272 100644 --- a/src/mame/drivers/wgp.cpp +++ b/src/mame/drivers/wgp.cpp @@ -609,54 +609,57 @@ WRITE8_MEMBER(wgp_state::sound_bankswitch_w) MEMORY STRUCTURES *****************************************************************/ -ADDRESS_MAP_START(wgp_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* main CPUA ram */ - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x200000, 0x20000f) AM_READWRITE(adinput_r, adinput_w) - AM_RANGE(0x300000, 0x30ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x400000, 0x40bfff) AM_RAM AM_SHARE("spritemap") /* sprite tilemaps */ - AM_RANGE(0x40c000, 0x40dfff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0x40fff0, 0x40fff1) AM_WRITENOP /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */ - AM_RANGE(0x500000, 0x501fff) AM_RAM /* unknown/unused */ - AM_RANGE(0x502000, 0x517fff) AM_RAM_WRITE(pivram_word_w) AM_SHARE("pivram") /* piv tilemaps */ - AM_RANGE(0x520000, 0x52001f) AM_RAM_WRITE(piv_ctrl_word_w) AM_SHARE("piv_ctrlram") - AM_RANGE(0x600000, 0x600003) AM_WRITE(rotate_port_w) /* rotation control ? */ - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(wgp_state::cpu2_map) /* LAN areas not mapped... */ - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) +void wgp_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); /* main CPUA ram */ + map(0x140000, 0x143fff).ram().share("sharedram"); + map(0x180000, 0x18000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); + map(0x1c0000, 0x1c0001).w(this, FUNC(wgp_state::cpua_ctrl_w)); + map(0x200000, 0x20000f).rw(this, FUNC(wgp_state::adinput_r), FUNC(wgp_state::adinput_w)); + map(0x300000, 0x30ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x320000, 0x32000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x400000, 0x40bfff).ram().share("spritemap"); /* sprite tilemaps */ + map(0x40c000, 0x40dfff).ram().share("spriteram"); /* sprite ram */ + map(0x40fff0, 0x40fff1).nopw(); /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */ + map(0x500000, 0x501fff).ram(); /* unknown/unused */ + map(0x502000, 0x517fff).ram().w(this, FUNC(wgp_state::pivram_word_w)).share("pivram"); /* piv tilemaps */ + map(0x520000, 0x52001f).ram().w(this, FUNC(wgp_state::piv_ctrl_word_w)).share("piv_ctrlram"); + map(0x600000, 0x600003).w(this, FUNC(wgp_state::rotate_port_w)); /* rotation control ? */ + map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + +void wgp_state::cpu2_map(address_map &map) +{ /* LAN areas not mapped... */ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x140000, 0x143fff).ram().share("sharedram"); + map(0x200001, 0x200001).w(m_tc0140syt, FUNC(tc0140syt_device::master_port_w)); + map(0x200003, 0x200003).rw(m_tc0140syt, FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); // AM_RANGE(0x380000, 0x383fff) AM_READONLY // LAN RAM // AM_RANGE(0x380000, 0x383fff) AM_WRITEONLY // LAN RAM - AM_RANGE(0x380000, 0x380001) AM_READ(lan_status_r) // ?? + map(0x380000, 0x380001).r(this, FUNC(wgp_state::lan_status_r)); // ?? // a lan input area is read somewhere above the status // (make the status return 0 and log)... -ADDRESS_MAP_END +} /***************************************************************************/ -ADDRESS_MAP_START(wgp_state::z80_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void wgp_state::z80_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(wgp_state::sound_bankswitch_w)); +} /*********************************************************** |