diff options
Diffstat (limited to 'src/mame/drivers/kaneko16.cpp')
-rw-r--r-- | src/mame/drivers/kaneko16.cpp | 514 |
1 files changed, 264 insertions, 250 deletions
diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp index 1868a2f575e..089498871f4 100644 --- a/src/mame/drivers/kaneko16.cpp +++ b/src/mame/drivers/kaneko16.cpp @@ -296,28 +296,29 @@ WRITE16_MEMBER(kaneko16_berlwall_state::berlwall_spriteregs_w) m_kaneko_spr->kaneko16_sprites_regs_w(space, offset, data, mem_mask); } -ADDRESS_MAP_START(kaneko16_berlwall_state::berlwall) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM - AM_RANGE(0x30e000, 0x30ffff) AM_READWRITE(berlwall_spriteram_r, berlwall_spriteram_w) AM_SHARE("spriteram") // Sprites (scrambled RAM) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x480000, 0x480001) AM_RAM AM_SHARE("bg15_scroll") // High Color Background - AM_RANGE(0x500000, 0x500001) AM_READWRITE(kaneko16_bg15_bright_r, kaneko16_bg15_bright_w) AM_SHARE("bg15_bright") // "" - AM_RANGE(0x580000, 0x580001) AM_READWRITE(kaneko16_bg15_select_r, kaneko16_bg15_select_w) AM_SHARE("bg15_select") // "" - AM_RANGE(0x600000, 0x60003f) AM_READWRITE(berlwall_spriteregs_r, berlwall_spriteregs_w) // Sprite Regs (scrambled RAM) - AM_RANGE(0x680000, 0x680001) AM_READ_PORT("P1") - AM_RANGE(0x680002, 0x680003) AM_READ_PORT("P2") - AM_RANGE(0x680004, 0x680005) AM_READ_PORT("SYSTEM") +void kaneko16_berlwall_state::berlwall(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // Work RAM + map(0x30e000, 0x30ffff).rw(this, FUNC(kaneko16_berlwall_state::berlwall_spriteram_r), FUNC(kaneko16_berlwall_state::berlwall_spriteram_w)).share("spriteram"); // Sprites (scrambled RAM) + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x480000, 0x480001).ram().share("bg15_scroll"); // High Color Background + map(0x500000, 0x500001).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_bg15_bright_r), FUNC(kaneko16_berlwall_state::kaneko16_bg15_bright_w)).share("bg15_bright"); // "" + map(0x580000, 0x580001).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_bg15_select_r), FUNC(kaneko16_berlwall_state::kaneko16_bg15_select_w)).share("bg15_select"); // "" + map(0x600000, 0x60003f).rw(this, FUNC(kaneko16_berlwall_state::berlwall_spriteregs_r), FUNC(kaneko16_berlwall_state::berlwall_spriteregs_w)); // Sprite Regs (scrambled RAM) + map(0x680000, 0x680001).portr("P1"); + map(0x680002, 0x680003).portr("P2"); + map(0x680004, 0x680005).portr("SYSTEM"); // AM_RANGE(0x680006, 0x680007) AM_READ_PORT("UNK") - AM_RANGE(0x700000, 0x700001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout - AM_RANGE(0x780000, 0x780001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x800000, 0x80001f) AM_READWRITE(kaneko16_ay_YM2149_r<0>, kaneko16_ay_YM2149_w<0>) // Sound - AM_RANGE(0x800200, 0x80021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>, kaneko16_ay_YM2149_w<1>) - AM_RANGE(0x8003fe, 0x8003ff) AM_NOP // for OKI when accessed as .l - AM_RANGE(0x800400, 0x800401) AM_READWRITE( berlwall_oki_r, berlwall_oki_w ) - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) -ADDRESS_MAP_END + map(0x700000, 0x700001).w(this, FUNC(kaneko16_berlwall_state::kaneko16_coin_lockout_w)); // Coin Lockout + map(0x780000, 0x780001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x800000, 0x80001f).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_r<0>), FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_w<0>)); // Sound + map(0x800200, 0x80021f).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_w<1>)); + map(0x8003fe, 0x8003ff).noprw(); // for OKI when accessed as .l + map(0x800400, 0x800401).rw(this, FUNC(kaneko16_berlwall_state::berlwall_oki_r), FUNC(kaneko16_berlwall_state::berlwall_oki_w)); + map(0xc00000, 0xc03fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0xd00000, 0xd0001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); +} /*************************************************************************** @@ -328,54 +329,56 @@ ADDRESS_MAP_END /* The two YM2149 chips are only used when entering high score initials, and */ /* when the game is fully completed. Overkill??? */ -ADDRESS_MAP_START(kaneko16_state::bakubrkr) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x400000, 0x40001f) AM_READ(kaneko16_ay_YM2149_r<0>) // Sound - AM_RANGE(0x400000, 0x40001d) AM_WRITE(kaneko16_ay_YM2149_w<0>) - AM_RANGE(0x40001e, 0x40001f) AM_WRITE8(oki_bank0_w<7>, 0x00ff) // OKI bank Switch - AM_RANGE(0x400200, 0x40021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>,kaneko16_ay_YM2149_w<1>) // Sound - AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x601fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x700000, 0x700fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0xa80000, 0xa80001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0xb00000, 0xb0001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_eeprom_w) // EEPROM - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("P1") - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("P2") - AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("UNK") -ADDRESS_MAP_END +void kaneko16_state::bakubrkr(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x400000, 0x40001f).r(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<0>)); // Sound + map(0x400000, 0x40001d).w(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_w<0>)); + map(0x40001f, 0x40001f).w(this, FUNC(kaneko16_state::oki_bank0_w<7>)); // OKI bank Switch + map(0x400200, 0x40021f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<1>)); // Sound + map(0x400401, 0x400401).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x601fff).ram().share("spriteram"); // Sprites + map(0x700000, 0x700fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0xa80000, 0xa80001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0xb00000, 0xb0001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_eeprom_w)); // EEPROM + map(0xe00000, 0xe00001).portr("P1"); + map(0xe00002, 0xe00003).portr("P2"); + map(0xe00004, 0xe00005).portr("SYSTEM"); + map(0xe00006, 0xe00007).portr("UNK"); +} /*************************************************************************** Blaze On ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::blazeon) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM - AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0x980000, 0x98001f) AM_RAM // Sprites Regs #2 - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW2_P1") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("DSW1_P2") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("UNK") - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout - AM_RANGE(0xe00000, 0xe00001) AM_READNOP // Read = IRQ Ack ? - AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0xe40000, 0xe40001) AM_READNOP // IRQ Ack ? +void kaneko16_state::blazeon(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x300000, 0x30ffff).ram(); // Work RAM + map(0x500000, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x700000, 0x700fff).ram().share("spriteram"); // Sprites + map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0x980000, 0x98001f).ram(); // Sprites Regs #2 + map(0xc00000, 0xc00001).portr("DSW2_P1"); + map(0xc00002, 0xc00003).portr("DSW1_P2"); + map(0xc00004, 0xc00005).portr("UNK"); + map(0xc00006, 0xc00007).portr("SYSTEM"); + map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_coin_lockout_w)); // Coin Lockout + map(0xe00000, 0xe00001).nopr(); // Read = IRQ Ack ? + map(0xe00000, 0xe00000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xe40000, 0xe40001).nopr(); // IRQ Ack ? // AM_RANGE(0xe80000, 0xe80001) AM_READNOP // IRQ Ack ? - AM_RANGE(0xec0000, 0xec0001) AM_READNOP // Lev 4 IRQ Ack ? -ADDRESS_MAP_END + map(0xec0000, 0xec0001).nopr(); // Lev 4 IRQ Ack ? +} /*************************************************************************** @@ -393,70 +396,72 @@ WRITE16_MEMBER(kaneko16_gtmr_state::bloodwar_coin_lockout_w) } } -ADDRESS_MAP_START(kaneko16_gtmr_state::bloodwar) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) - AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x60001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA") - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) - AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) - AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x3>, 0x00ff) -ADDRESS_MAP_END +void kaneko16_gtmr_state::bloodwar(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); + map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ? + map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); + map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x60001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0xb00000, 0xb00001).portr("P1"); + map(0xb00002, 0xb00003).portr("P2"); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("EXTRA"); + map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::bloodwar_coin_lockout_w)); // Coin Lockout + map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); + map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); + map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); + map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x3>)); +} /*************************************************************************** Bonk's Adventure ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_gtmr_state::bonkadv) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) - AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x60001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x900000, 0x900015) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK") - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) - AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) - AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0xf>, 0x00ff) -ADDRESS_MAP_END +void kaneko16_gtmr_state::bonkadv(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU + map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ? + map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); + map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x60001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x900000, 0x900015).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog + map(0xb00000, 0xb00001).portr("P1"); + map(0xb00002, 0xb00003).portr("P2"); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("UNK"); + map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::bloodwar_coin_lockout_w)); // Coin Lockout + map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); + map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); + map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); + map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0xf>)); +} /*************************************************************************** @@ -478,48 +483,49 @@ READ16_MEMBER(kaneko16_gtmr_state::gtmr_wheel_r) } } -ADDRESS_MAP_START(kaneko16_gtmr_state::gtmr_map) - AM_RANGE(0x000000, 0x0ffffd) AM_ROM // ROM - AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr_wheel_r) // Wheel Value +void kaneko16_gtmr_state::gtmr_map(address_map &map) +{ + map(0x000000, 0x0ffffd).rom(); // ROM + map(0x0ffffe, 0x0fffff).r(this, FUNC(kaneko16_gtmr_state::gtmr_wheel_r)); // Wheel Value - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) + map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ? + map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); - AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x310000, 0x327fff) AM_RAM // - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites + map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x310000, 0x327fff).ram(); // + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); - AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) + map(0x600000, 0x60000f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) + map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples - AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples + map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) // only used for random number - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) + map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); // only used for random number + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK") - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that + map(0xb00000, 0xb00001).portr("P1"); + map(0xb00002, 0xb00003).portr("P2"); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("UNK"); + map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_coin_lockout_w)); // Coin Lockout + map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); // might do more than that - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) + map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); - AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) // Samples Bankswitching - AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x1>, 0x00ff) -ADDRESS_MAP_END + map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); // Samples Bankswitching + map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x1>)); +} /*************************************************************************** Great 1000 Miles Rally 2 @@ -547,71 +553,73 @@ READ16_MEMBER(kaneko16_gtmr_state::gtmr2_IN1_r) return (ioport("P2")->read() & (ioport("FAKE")->read() | ~0x7100)); } -ADDRESS_MAP_START(kaneko16_gtmr_state::gtmr2_map) - AM_RANGE(0x000000, 0x0ffffd) AM_ROM // ROM - AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr2_wheel_r) // Wheel Value +void kaneko16_gtmr_state::gtmr2_map(address_map &map) +{ + map(0x000000, 0x0ffffd).rom(); // ROM + map(0x0ffffe, 0x0fffff).r(this, FUNC(kaneko16_gtmr_state::gtmr2_wheel_r)); // Wheel Value - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) + map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ? + map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); - AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x310000, 0x327fff) AM_RAM // - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites + map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x310000, 0x327fff).ram(); // + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x60000f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples - AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) + map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples + map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) // only used for random number - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog + map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); // only used for random number + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") + map(0xb00000, 0xb00001).portr("P1"); // AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00002, 0xb00003) AM_READ(gtmr2_IN1_r) - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA") - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that + map(0xb00002, 0xb00003).r(this, FUNC(kaneko16_gtmr_state::gtmr2_IN1_r)); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("EXTRA"); + map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_coin_lockout_w)); // Coin Lockout + map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); // might do more than that - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) + map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); - AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) // Samples Bankswitching - AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x1>, 0x00ff) -ADDRESS_MAP_END + map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); // Samples Bankswitching + map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x1>)); +} /*************************************************************************** Magical Crystal ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::mgcrystl) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM - AM_RANGE(0x400000, 0x40001f) AM_READWRITE(kaneko16_ay_YM2149_r<0>, kaneko16_ay_YM2149_w<0>) // Sound - AM_RANGE(0x400200, 0x40021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>, kaneko16_ay_YM2149_w<1>) - AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x680000, 0x683fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0xb00000, 0xb0001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW_P1") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P2") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_eeprom_w) // EEPROM -ADDRESS_MAP_END +void kaneko16_state::mgcrystl(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x300000, 0x30ffff).ram(); // Work RAM + map(0x400000, 0x40001f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<0>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<0>)); // Sound + map(0x400200, 0x40021f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<1>)); + map(0x400401, 0x400401).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x500000, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x680000, 0x683fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x700000, 0x701fff).ram().share("spriteram"); // Sprites + map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0xb00000, 0xb0001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0xa00000, 0xa00001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog + map(0xc00000, 0xc00001).portr("DSW_P1"); + map(0xc00002, 0xc00003).portr("P2"); + map(0xc00004, 0xc00005).portr("SYSTEM"); + map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_eeprom_w)); // EEPROM +} @@ -628,31 +636,32 @@ WRITE16_MEMBER(kaneko16_shogwarr_state::shogwarr_oki_bank_w) } } -ADDRESS_MAP_START(kaneko16_shogwarr_state::shogwarr) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("mainram") // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") - AM_RANGE(0x280000, 0x280001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com0_w) - AM_RANGE(0x290000, 0x290001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com1_w) - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com2_w) +void kaneko16_shogwarr_state::shogwarr(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram().share("mainram"); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); + map(0x280000, 0x280001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com0_w)); + map(0x290000, 0x290001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com1_w)); + map(0x2b0000, 0x2b0001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com2_w)); //AM_RANGE(0x2c0000, 0x2c0001) // run calc 3? or irq ack? - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com3_w) - AM_RANGE(0x380000, 0x380fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples - AM_RANGE(0x480000, 0x480001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x580000, 0x581fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0xa00000, 0xa0007f) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) - AM_RANGE(0xa80000, 0xa80001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0xb80000, 0xb80001) AM_READ_PORT("P1") - AM_RANGE(0xb80002, 0xb80003) AM_READ_PORT("P2") - AM_RANGE(0xb80004, 0xb80005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb80006, 0xb80007) AM_READ_PORT("UNK") - AM_RANGE(0xd00000, 0xd00001) AM_NOP // ? (bit 0) - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(shogwarr_oki_bank_w) // Samples Bankswitching -ADDRESS_MAP_END + map(0x2d0000, 0x2d0001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com3_w)); + map(0x380000, 0x380fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x400001, 0x400001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples + map(0x480001, 0x480001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x580000, 0x581fff).ram().share("spriteram"); // Sprites + map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0xa00000, 0xa0007f).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); + map(0xa80000, 0xa80001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0xb80000, 0xb80001).portr("P1"); + map(0xb80002, 0xb80003).portr("P2"); + map(0xb80004, 0xb80005).portr("SYSTEM"); + map(0xb80006, 0xb80007).portr("UNK"); + map(0xd00000, 0xd00001).noprw(); // ? (bit 0) + map(0xe00000, 0xe00001).w(this, FUNC(kaneko16_shogwarr_state::shogwarr_oki_bank_w)); // Samples Bankswitching +} /*************************************************************************** @@ -666,30 +675,33 @@ ADDRESS_MAP_END Blaze On ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::blazeon_soundmem) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROM // ROM (supposed to be banked?) - AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM -ADDRESS_MAP_END +void kaneko16_state::blazeon_soundmem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).rom(); // ROM (supposed to be banked?) + map(0xc000, 0xdfff).ram(); // RAM +} -ADDRESS_MAP_START(kaneko16_state::blazeon_soundport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void kaneko16_state::blazeon_soundport(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /*************************************************************************** Wing Force ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::wingforc_soundport) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void kaneko16_state::wingforc_soundport(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x00, 0x00) // 02 written at boot - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x0a, 0x0a) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_WRITE(oki_bank0_w<0x3>) -ADDRESS_MAP_END + map(0x02, 0x03).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x0a, 0x0a).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0c, 0x0c).w(this, FUNC(kaneko16_state::oki_bank0_w<0x3>)); +} /*************************************************************************** @@ -1821,10 +1833,11 @@ MACHINE_CONFIG_END Bakuretsu Breaker ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::bakubrkr_oki1_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank1") -ADDRESS_MAP_END +void kaneko16_state::bakubrkr_oki1_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank1"); +} MACHINE_CONFIG_START(kaneko16_state::bakubrkr) @@ -2355,10 +2368,11 @@ static const uint16_t brapboys_default_eeprom[64] = { }; // sample banking is different on brap boys for the music, why? GALs / PALs ? -ADDRESS_MAP_START(kaneko16_shogwarr_state::brapboys_oki2_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank2") -ADDRESS_MAP_END +void kaneko16_shogwarr_state::brapboys_oki2_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank2"); +} MACHINE_CONFIG_START(kaneko16_shogwarr_state::brapboys) shogwarr(config); |