diff options
Diffstat (limited to 'src/mame/drivers/sderby.cpp')
-rw-r--r-- | src/mame/drivers/sderby.cpp | 236 |
1 files changed, 121 insertions, 115 deletions
diff --git a/src/mame/drivers/sderby.cpp b/src/mame/drivers/sderby.cpp index bfe91bc9957..656af0ebc45 100644 --- a/src/mame/drivers/sderby.cpp +++ b/src/mame/drivers/sderby.cpp @@ -296,121 +296,127 @@ WRITE16_MEMBER(sderby_state::roulette_out_w) * Memory Maps * ***************************/ -ADDRESS_MAP_START(sderby_state::sderby_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */ - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby_state::sderbya_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */ - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x308000, 0x30800d) AM_READ(sderbya_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ //MOD - AM_RANGE(0xcf0000, 0xcf07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xcfc000, 0xcfffff) AM_RAM //MOD -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sderby_state::luckboom_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */ - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ - AM_RANGE(0xe00000, 0xe007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby_state::spacewin_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) /* tilemaps offset control */ - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* seems another video register. constantly used */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* seems another video register. constantly used */ - AM_RANGE(0x104010, 0x105fff) AM_WRITENOP /* unknown */ - AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ - AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITE(scmatto_out_w) /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xd00000, 0xd001ff) AM_RAM - AM_RANGE(0x800000, 0x800fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x801000, 0x80100d) AM_WRITENOP /* unknown */ - AM_RANGE(0x8f0000, 0x8f07ff) AM_RAM AM_SHARE("nvram") /* 16K Dallas DS1220Y-200 NVRAM */ - AM_RANGE(0x8fc000, 0x8fffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby_state::shinygld_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) /* tilemaps offset control */ - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* seems another video register. constantly used */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* seems another video register. constantly used */ - AM_RANGE(0x104010, 0x105fff) AM_WRITENOP /* unknown */ - AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ - AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITENOP /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x401000, 0x40100d) AM_WRITENOP /* unknown */ - AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram") /* 16K Dallas DS1220Y-200 NVRAM */ - AM_RANGE(0x7f0000, 0x7fffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby_state::roulette_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x440000, 0x440fff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x504000, 0x50400b) AM_RAM_WRITE(sderby_scroll_w) - AM_RANGE(0x50400e, 0x50400f) AM_WRITENOP - - AM_RANGE(0x708000, 0x708009) AM_READ(roulette_input_r) - AM_RANGE(0x708006, 0x708007) AM_WRITE(roulette_out_w) - AM_RANGE(0x70800a, 0x70800b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x70800c, 0x70800d) AM_WRITENOP /* watchdog?? (0x0003) */ - AM_RANGE(0x70800e, 0x70800f) AM_READWRITE(rprot_r, rprot_w) /* MCU communication */ - AM_RANGE(0x780000, 0x780fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - - AM_RANGE(0xff0000, 0xff07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void sderby_state::sderby_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); + map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */ + map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */ + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r)); + map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x500001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ + map(0xd00000, 0xd007ff).ram().share("nvram"); + map(0xffc000, 0xffffff).ram(); +} + +void sderby_state::sderbya_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); + map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */ + map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */ + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderbya_input_r)); + map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ //MOD + map(0xcf0000, 0xcf07ff).ram().share("nvram"); + map(0xcfc000, 0xcfffff).ram(); //MOD +} + + +void sderby_state::luckboom_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); + map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */ + map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */ + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r)); + map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x500001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ + map(0xe00000, 0xe007ff).ram().share("nvram"); + map(0xff0000, 0xffffff).ram(); +} + +void sderby_state::spacewin_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); /* tilemaps offset control */ + map(0x10400c, 0x10400d).nopw(); /* seems another video register. constantly used */ + map(0x10400e, 0x10400f).nopw(); /* seems another video register. constantly used */ + map(0x104010, 0x105fff).nopw(); /* unknown */ + map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r)); + map(0x308008, 0x308009).w(this, FUNC(sderby_state::scmatto_out_w)); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd00000, 0xd001ff).ram(); + map(0x800000, 0x800fff).ram().share("spriteram"); + map(0x801000, 0x80100d).nopw(); /* unknown */ + map(0x8f0000, 0x8f07ff).ram().share("nvram"); /* 16K Dallas DS1220Y-200 NVRAM */ + map(0x8fc000, 0x8fffff).ram(); +} + +void sderby_state::shinygld_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); /* tilemaps offset control */ + map(0x10400c, 0x10400d).nopw(); /* seems another video register. constantly used */ + map(0x10400e, 0x10400f).nopw(); /* seems another video register. constantly used */ + map(0x104010, 0x105fff).nopw(); /* unknown */ + map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r)); + map(0x308008, 0x308009).nopw(); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x400fff).ram().share("spriteram"); + map(0x401000, 0x40100d).nopw(); /* unknown */ + map(0x700000, 0x7007ff).ram().share("nvram"); /* 16K Dallas DS1220Y-200 NVRAM */ + map(0x7f0000, 0x7fffff).ram(); +} + +void sderby_state::roulette_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x440000, 0x440fff).writeonly().share("spriteram"); + map(0x500000, 0x500fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x501000, 0x501fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x502000, 0x503fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x504000, 0x50400b).ram().w(this, FUNC(sderby_state::sderby_scroll_w)); + map(0x50400e, 0x50400f).nopw(); + + map(0x708000, 0x708009).r(this, FUNC(sderby_state::roulette_input_r)); + map(0x708006, 0x708007).w(this, FUNC(sderby_state::roulette_out_w)); + map(0x70800b, 0x70800b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x70800c, 0x70800d).nopw(); /* watchdog?? (0x0003) */ + map(0x70800e, 0x70800f).rw(this, FUNC(sderby_state::rprot_r), FUNC(sderby_state::rprot_w)); /* MCU communication */ + map(0x780000, 0x780fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + + map(0xff0000, 0xff07ff).ram().share("nvram"); + map(0xffc000, 0xffffff).ram(); +} |