From 0ecf69edcd937c2552809def3abfa042b2d45438 Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 21 Mar 2019 01:58:45 +0900 Subject: toaplan1.cpp : Updates Cleanup duplicates, Reduce unnecessary runtime tag lookups, lines, functions, Simplify handlers, Fix namings, code styles Split demonwld, samesame specific machine state related to exclusive value, device Remove register_postload --- src/mame/drivers/toaplan1.cpp | 579 +++++++++++++++++------------------ src/mame/includes/toaplan1.h | 292 +++++++++--------- src/mame/machine/toaplan1.cpp | 134 ++++---- src/mame/video/toaplan1.cpp | 687 ++++++++++++++++++------------------------ 4 files changed, 778 insertions(+), 914 deletions(-) diff --git a/src/mame/drivers/toaplan1.cpp b/src/mame/drivers/toaplan1.cpp index 525d8674285..bbba1483fd8 100644 --- a/src/mame/drivers/toaplan1.cpp +++ b/src/mame/drivers/toaplan1.cpp @@ -623,43 +623,43 @@ void toaplan1_rallybik_state::rallybik_main_map(address_map &map) map(0x040000, 0x07ffff).rom(); map(0x080000, 0x083fff).ram(); map(0x0c0000, 0x0c0fff).ram().share("spriteram"); - map(0x100000, 0x100001).w(FUNC(toaplan1_rallybik_state::toaplan1_bcu_flipscreen_w)); - map(0x100002, 0x100003).rw(FUNC(toaplan1_rallybik_state::toaplan1_tileram_offs_r), FUNC(toaplan1_rallybik_state::toaplan1_tileram_offs_w)); - map(0x100004, 0x100007).rw(FUNC(toaplan1_rallybik_state::rallybik_tileram16_r), FUNC(toaplan1_rallybik_state::toaplan1_tileram16_w)); - map(0x100010, 0x10001f).rw(FUNC(toaplan1_rallybik_state::toaplan1_scroll_regs_r), FUNC(toaplan1_rallybik_state::toaplan1_scroll_regs_w)); + map(0x100001, 0x100001).w(FUNC(toaplan1_rallybik_state::bcu_flipscreen_w)); + map(0x100002, 0x100003).rw(FUNC(toaplan1_rallybik_state::tileram_offs_r), FUNC(toaplan1_rallybik_state::tileram_offs_w)); + map(0x100004, 0x100007).rw(FUNC(toaplan1_rallybik_state::tileram_r), FUNC(toaplan1_rallybik_state::tileram_w)); + map(0x100010, 0x10001f).rw(FUNC(toaplan1_rallybik_state::scroll_regs_r), FUNC(toaplan1_rallybik_state::scroll_regs_w)); map(0x140000, 0x140001).portr("VBLANK"); -// AM_RANGE(0x140000, 0x140001) AM_WRITE(?? video frame related ??) - map(0x140002, 0x140003).w(FUNC(toaplan1_rallybik_state::toaplan1_intenable_w)); - map(0x140008, 0x14000f).w(FUNC(toaplan1_rallybik_state::toaplan1_bcu_control_w)); - map(0x144000, 0x1447ff).ram().w(FUNC(toaplan1_rallybik_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x146000, 0x1467ff).ram().w(FUNC(toaplan1_rallybik_state::toaplan1_fgpalette_w)).share("fgpalette"); - map(0x180000, 0x180fff).rw(FUNC(toaplan1_rallybik_state::toaplan1_shared_r), FUNC(toaplan1_rallybik_state::toaplan1_shared_w)); - map(0x1c0000, 0x1c0003).w(FUNC(toaplan1_rallybik_state::toaplan1_tile_offsets_w)); - map(0x1c8000, 0x1c8001).w(FUNC(toaplan1_rallybik_state::toaplan1_reset_sound_w)); +// map(0x140000, 0x140001).w(?? video frame related ??) + map(0x140003, 0x140003).w(FUNC(toaplan1_rallybik_state::intenable_w)); + map(0x140008, 0x14000f).w(FUNC(toaplan1_rallybik_state::bcu_control_w)); + map(0x144000, 0x1447ff).ram().w(FUNC(toaplan1_rallybik_state::bgpalette_w)).share("bgpalette"); + map(0x146000, 0x1467ff).ram().w(FUNC(toaplan1_rallybik_state::fgpalette_w)).share("fgpalette"); + map(0x180000, 0x180fff).rw(FUNC(toaplan1_rallybik_state::shared_r), FUNC(toaplan1_rallybik_state::shared_w)).umask16(0x00ff); + map(0x1c0000, 0x1c0003).w(FUNC(toaplan1_rallybik_state::tile_offsets_w)); + map(0x1c8001, 0x1c8001).w(FUNC(toaplan1_rallybik_state::reset_sound_w)); } void toaplan1_state::truxton_main_map(address_map &map) { map(0x000000, 0x03ffff).rom(); map(0x080000, 0x083fff).ram(); - map(0x0c0000, 0x0c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r)); - map(0x0c0002, 0x0c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); - map(0x0c0004, 0x0c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); - map(0x0c0006, 0x0c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); - map(0x100000, 0x100001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); - map(0x100002, 0x100003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); - map(0x100004, 0x100007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); - map(0x100010, 0x10001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x0c0000, 0x0c0001).r(FUNC(toaplan1_state::frame_done_r)); + map(0x0c0002, 0x0c0003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w)); + map(0x0c0004, 0x0c0005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w)); + map(0x0c0006, 0x0c0007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w)); + map(0x100001, 0x100001).w(FUNC(toaplan1_state::bcu_flipscreen_w)); + map(0x100002, 0x100003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w)); + map(0x100004, 0x100007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w)); + map(0x100010, 0x10001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w)); map(0x140000, 0x140001).portr("VBLANK"); -// AM_RANGE(0x140000, 0x140001) AM_WRITE(?? video frame related ??) - map(0x140002, 0x140003).w(FUNC(toaplan1_state::toaplan1_intenable_w)); - map(0x140008, 0x14000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w)); - map(0x144000, 0x1447ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x146000, 0x1467ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); - map(0x180000, 0x180fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); - map(0x1c0000, 0x1c0003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w)); - map(0x1c0006, 0x1c0007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); - map(0x1d0000, 0x1d0001).w(FUNC(toaplan1_state::toaplan1_reset_sound_w)); +// map(0x140000, 0x140001).w(?? video frame related ??) + map(0x140003, 0x140003).w(FUNC(toaplan1_state::intenable_w)); + map(0x140008, 0x14000f).w(FUNC(toaplan1_state::bcu_control_w)); + map(0x144000, 0x1447ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette"); + map(0x146000, 0x1467ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette"); + map(0x180000, 0x180fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff); + map(0x1c0000, 0x1c0003).w(FUNC(toaplan1_state::tile_offsets_w)); + map(0x1c0006, 0x1c0006).w(FUNC(toaplan1_state::fcu_flipscreen_w)); + map(0x1d0001, 0x1d0001).w(FUNC(toaplan1_state::reset_sound_w)); } void toaplan1_state::hellfire_main_map(address_map &map) @@ -667,23 +667,23 @@ void toaplan1_state::hellfire_main_map(address_map &map) map(0x000000, 0x03ffff).rom(); map(0x040000, 0x047fff).ram(); map(0x080000, 0x080001).portr("VBLANK"); -// AM_RANGE(0x080000, 0x080001) AM_WRITE(?? video frame related ??) - map(0x080002, 0x080003).w(FUNC(toaplan1_state::toaplan1_intenable_w)); - map(0x080008, 0x08000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w)); - map(0x084000, 0x0847ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x086000, 0x0867ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); - map(0x0c0000, 0x0c0fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); - map(0x100000, 0x100001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); - map(0x100002, 0x100003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); - map(0x100004, 0x100007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); - map(0x100010, 0x10001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); - map(0x140000, 0x140001).r(FUNC(toaplan1_state::toaplan1_frame_done_r)); - map(0x140002, 0x140003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); - map(0x140004, 0x140005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); - map(0x140006, 0x140007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); - map(0x180000, 0x180003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w)); - map(0x180006, 0x180007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); - map(0x180008, 0x180009).w(FUNC(toaplan1_state::toaplan1_reset_sound_w)); +// map(0x080000, 0x080001).w(?? video frame related ??) + map(0x080003, 0x080003).w(FUNC(toaplan1_state::intenable_w)); + map(0x080008, 0x08000f).w(FUNC(toaplan1_state::bcu_control_w)); + map(0x084000, 0x0847ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette"); + map(0x086000, 0x0867ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette"); + map(0x0c0000, 0x0c0fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff); + map(0x100001, 0x100001).w(FUNC(toaplan1_state::bcu_flipscreen_w)); + map(0x100002, 0x100003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w)); + map(0x100004, 0x100007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w)); + map(0x100010, 0x10001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w)); + map(0x140000, 0x140001).r(FUNC(toaplan1_state::frame_done_r)); + map(0x140002, 0x140003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w)); + map(0x140004, 0x140005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w)); + map(0x140006, 0x140007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w)); + map(0x180000, 0x180003).w(FUNC(toaplan1_state::tile_offsets_w)); + map(0x180006, 0x180006).w(FUNC(toaplan1_state::fcu_flipscreen_w)); + map(0x180009, 0x180009).w(FUNC(toaplan1_state::reset_sound_w)); } void toaplan1_state::zerowing_main_map(address_map &map) @@ -691,156 +691,156 @@ void toaplan1_state::zerowing_main_map(address_map &map) map(0x000000, 0x00ffff).rom(); map(0x040000, 0x07ffff).rom(); map(0x080000, 0x087fff).ram(); - map(0x0c0000, 0x0c0003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w)); - map(0x0c0006, 0x0c0007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x0c0000, 0x0c0003).w(FUNC(toaplan1_state::tile_offsets_w)); + map(0x0c0006, 0x0c0006).w(FUNC(toaplan1_state::fcu_flipscreen_w)); map(0x400000, 0x400001).portr("VBLANK"); -// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??) - map(0x400002, 0x400003).w(FUNC(toaplan1_state::toaplan1_intenable_w)); - map(0x400008, 0x40000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w)); - map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); - map(0x440000, 0x440fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); - map(0x480000, 0x480001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); - map(0x480002, 0x480003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); - map(0x480004, 0x480007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); - map(0x480010, 0x48001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); - map(0x4c0000, 0x4c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r)); - map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); - map(0x4c0004, 0x4c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); - map(0x4c0006, 0x4c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); +// map(0x400000, 0x400001).w(?? video frame related ??) + map(0x400003, 0x400003).w(FUNC(toaplan1_state::intenable_w)); + map(0x400008, 0x40000f).w(FUNC(toaplan1_state::bcu_control_w)); + map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette"); + map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette"); + map(0x440000, 0x440fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff); + map(0x480001, 0x480001).w(FUNC(toaplan1_state::bcu_flipscreen_w)); + map(0x480002, 0x480003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w)); + map(0x480004, 0x480007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w)); + map(0x480010, 0x48001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w)); + map(0x4c0000, 0x4c0001).r(FUNC(toaplan1_state::frame_done_r)); + map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w)); + map(0x4c0004, 0x4c0005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w)); + map(0x4c0006, 0x4c0007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w)); } -void toaplan1_state::demonwld_main_map(address_map &map) +void toaplan1_demonwld_state::main_map(address_map &map) { map(0x000000, 0x03ffff).rom(); map(0x400000, 0x400001).portr("VBLANK"); -// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??) - map(0x400002, 0x400003).w(FUNC(toaplan1_state::toaplan1_intenable_w)); - map(0x400008, 0x40000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w)); - map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); - map(0x600000, 0x600fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); - map(0x800000, 0x800001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); - map(0x800002, 0x800003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); - map(0x800004, 0x800007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); - map(0x800010, 0x80001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); - map(0xa00000, 0xa00001).r(FUNC(toaplan1_state::toaplan1_frame_done_r)); - map(0xa00002, 0xa00003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); - map(0xa00004, 0xa00005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); - map(0xa00006, 0xa00007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); +// map(0x400000, 0x400001).w(?? video frame related ??) + map(0x400003, 0x400003).w(FUNC(toaplan1_demonwld_state::intenable_w)); + map(0x400008, 0x40000f).w(FUNC(toaplan1_demonwld_state::bcu_control_w)); + map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_demonwld_state::bgpalette_w)).share("bgpalette"); + map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_demonwld_state::fgpalette_w)).share("fgpalette"); + map(0x600000, 0x600fff).rw(FUNC(toaplan1_demonwld_state::shared_r), FUNC(toaplan1_demonwld_state::shared_w)).umask16(0x00ff); + map(0x800001, 0x800001).w(FUNC(toaplan1_demonwld_state::bcu_flipscreen_w)); + map(0x800002, 0x800003).rw(FUNC(toaplan1_demonwld_state::tileram_offs_r), FUNC(toaplan1_demonwld_state::tileram_offs_w)); + map(0x800004, 0x800007).rw(FUNC(toaplan1_demonwld_state::tileram_r), FUNC(toaplan1_demonwld_state::tileram_w)); + map(0x800010, 0x80001f).rw(FUNC(toaplan1_demonwld_state::scroll_regs_r), FUNC(toaplan1_demonwld_state::scroll_regs_w)); + map(0xa00000, 0xa00001).r(FUNC(toaplan1_demonwld_state::frame_done_r)); + map(0xa00002, 0xa00003).rw(FUNC(toaplan1_demonwld_state::spriteram_offs_r), FUNC(toaplan1_demonwld_state::spriteram_offs_w)); + map(0xa00004, 0xa00005).rw(FUNC(toaplan1_demonwld_state::spriteram_r), FUNC(toaplan1_demonwld_state::spriteram_w)); + map(0xa00006, 0xa00007).rw(FUNC(toaplan1_demonwld_state::spritesizeram_r), FUNC(toaplan1_demonwld_state::spritesizeram_w)); map(0xc00000, 0xc03fff).ram(); - map(0xe00000, 0xe00003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w)); - map(0xe00006, 0xe00007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); - map(0xe00008, 0xe00009).w(FUNC(toaplan1_state::toaplan1_reset_sound_w)); - map(0xe0000a, 0xe0000b).w(FUNC(toaplan1_state::demonwld_dsp_ctrl_w)); /* DSP Comms control */ + map(0xe00000, 0xe00003).w(FUNC(toaplan1_demonwld_state::tile_offsets_w)); + map(0xe00006, 0xe00006).w(FUNC(toaplan1_demonwld_state::fcu_flipscreen_w)); + map(0xe00009, 0xe00009).w(FUNC(toaplan1_demonwld_state::reset_sound_w)); + map(0xe0000b, 0xe0000b).w(FUNC(toaplan1_demonwld_state::dsp_ctrl_w)); /* DSP Comms control */ } -void toaplan1_state::samesame_main_map(address_map &map) +void toaplan1_samesame_state::main_map(address_map &map) { map(0x000000, 0x00ffff).rom(); map(0x040000, 0x07ffff).rom(); - map(0x080000, 0x080003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w)); - map(0x080006, 0x080007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x080000, 0x080003).w(FUNC(toaplan1_samesame_state::tile_offsets_w)); + map(0x080006, 0x080006).w(FUNC(toaplan1_samesame_state::fcu_flipscreen_w)); map(0x0c0000, 0x0c3fff).ram(); /* Frame done at $c1ada */ map(0x100000, 0x100001).portr("VBLANK"); -// AM_RANGE(0x100000, 0x100001) AM_WRITE(?? video frame related ??) - map(0x100002, 0x100003).w(FUNC(toaplan1_state::toaplan1_intenable_w)); - map(0x100008, 0x10000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w)); - map(0x104000, 0x1047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x106000, 0x1067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); +// map(0x100000, 0x100001).w(?? video frame related ??) + map(0x100003, 0x100003).w(FUNC(toaplan1_samesame_state::intenable_w)); + map(0x100008, 0x10000f).w(FUNC(toaplan1_samesame_state::bcu_control_w)); + map(0x104000, 0x1047ff).ram().w(FUNC(toaplan1_samesame_state::bgpalette_w)).share("bgpalette"); + map(0x106000, 0x1067ff).ram().w(FUNC(toaplan1_samesame_state::fgpalette_w)).share("fgpalette"); map(0x140000, 0x140001).portr("P1"); map(0x140002, 0x140003).portr("P2"); map(0x140004, 0x140005).portr("DSWA"); map(0x140006, 0x140007).portr("DSWB"); map(0x140008, 0x140009).portr("SYSTEM"); - map(0x14000a, 0x14000b).r(FUNC(toaplan1_state::samesame_port_6_word_r)); /* Territory, and MCU ready */ - map(0x14000c, 0x14000d).w(FUNC(toaplan1_state::samesame_coin_w)); /* Coin counter/lockout */ - map(0x14000e, 0x14000f).w(FUNC(toaplan1_state::samesame_mcu_w)); /* Commands sent to HD647180 */ - map(0x180000, 0x180001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); - map(0x180002, 0x180003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); - map(0x180004, 0x180007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); - map(0x180010, 0x18001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); - map(0x1c0000, 0x1c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r)); -// AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(?? disable sprite refresh ??) - map(0x1c0002, 0x1c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); - map(0x1c0004, 0x1c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); - map(0x1c0006, 0x1c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); + map(0x14000b, 0x14000b).r(FUNC(toaplan1_samesame_state::port_6_word_r)); /* Territory, and MCU ready */ + map(0x14000d, 0x14000d).w(FUNC(toaplan1_samesame_state::coin_w)); /* Coin counter/lockout */ + map(0x14000f, 0x14000f).w(FUNC(toaplan1_samesame_state::mcu_w)); /* Commands sent to HD647180 */ + map(0x180001, 0x180001).w(FUNC(toaplan1_samesame_state::bcu_flipscreen_w)); + map(0x180002, 0x180003).rw(FUNC(toaplan1_samesame_state::tileram_offs_r), FUNC(toaplan1_samesame_state::tileram_offs_w)); + map(0x180004, 0x180007).rw(FUNC(toaplan1_samesame_state::tileram_r), FUNC(toaplan1_samesame_state::tileram_w)); + map(0x180010, 0x18001f).rw(FUNC(toaplan1_samesame_state::scroll_regs_r), FUNC(toaplan1_samesame_state::scroll_regs_w)); + map(0x1c0000, 0x1c0001).r(FUNC(toaplan1_samesame_state::frame_done_r)); +// map(0x1c0000, 0x1c0001).w(?? disable sprite refresh ??) + map(0x1c0002, 0x1c0003).rw(FUNC(toaplan1_samesame_state::spriteram_offs_r), FUNC(toaplan1_samesame_state::spriteram_offs_w)); + map(0x1c0004, 0x1c0005).rw(FUNC(toaplan1_samesame_state::spriteram_r), FUNC(toaplan1_samesame_state::spriteram_w)); + map(0x1c0006, 0x1c0007).rw(FUNC(toaplan1_samesame_state::spritesizeram_r), FUNC(toaplan1_samesame_state::spritesizeram_w)); } void toaplan1_state::outzone_main_map(address_map &map) { map(0x000000, 0x03ffff).rom(); - map(0x100000, 0x100001).r(FUNC(toaplan1_state::toaplan1_frame_done_r)); - map(0x100002, 0x100003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); - map(0x100004, 0x100005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); - map(0x100006, 0x100007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); - map(0x140000, 0x140fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); - map(0x200000, 0x200001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); - map(0x200002, 0x200003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); - map(0x200004, 0x200007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); - map(0x200010, 0x20001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x100000, 0x100001).r(FUNC(toaplan1_state::frame_done_r)); + map(0x100002, 0x100003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w)); + map(0x100004, 0x100005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w)); + map(0x100006, 0x100007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w)); + map(0x140000, 0x140fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff); + map(0x200001, 0x200001).w(FUNC(toaplan1_state::bcu_flipscreen_w)); + map(0x200002, 0x200003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w)); + map(0x200004, 0x200007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w)); + map(0x200010, 0x20001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w)); map(0x240000, 0x243fff).ram(); map(0x300000, 0x300001).portr("VBLANK"); -// AM_RANGE(0x300000, 0x300001) AM_WRITE(?? video frame related ??) - map(0x300002, 0x300003).w(FUNC(toaplan1_state::toaplan1_intenable_w)); - map(0x300008, 0x30000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w)); - map(0x304000, 0x3047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x306000, 0x3067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); - map(0x340000, 0x340003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w)); - map(0x340006, 0x340007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); +// map(0x300000, 0x300001).w(?? video frame related ??) + map(0x300003, 0x300003).w(FUNC(toaplan1_state::intenable_w)); + map(0x300008, 0x30000f).w(FUNC(toaplan1_state::bcu_control_w)); + map(0x304000, 0x3047ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette"); + map(0x306000, 0x3067ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette"); + map(0x340000, 0x340003).w(FUNC(toaplan1_state::tile_offsets_w)); + map(0x340006, 0x340006).w(FUNC(toaplan1_state::fcu_flipscreen_w)); } void toaplan1_state::outzonecv_main_map(address_map &map) { map(0x000000, 0x03ffff).rom(); -// AM_RANGE(0x040000, 0x07ffff) AM_ROM +// map(0x040000, 0x07ffff).rom(); map(0x080000, 0x087fff).ram(); - map(0x0c0000, 0x0c0003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w)); - map(0x0c0006, 0x0c0007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x0c0000, 0x0c0003).w(FUNC(toaplan1_state::tile_offsets_w)); + map(0x0c0006, 0x0c0006).w(FUNC(toaplan1_state::fcu_flipscreen_w)); map(0x400000, 0x400001).portr("VBLANK"); -// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??) - map(0x400002, 0x400003).w(FUNC(toaplan1_state::toaplan1_intenable_w)); - map(0x400008, 0x40000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w)); - map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); - map(0x440000, 0x440fff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); - map(0x480000, 0x480001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); - map(0x480002, 0x480003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); - map(0x480004, 0x480007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); - map(0x480010, 0x48001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); - map(0x4c0000, 0x4c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r)); - map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); - map(0x4c0004, 0x4c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); - map(0x4c0006, 0x4c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); +// map(0x400000, 0x400001).w(?? video frame related ??) + map(0x400003, 0x400003).w(FUNC(toaplan1_state::intenable_w)); + map(0x400008, 0x40000f).w(FUNC(toaplan1_state::bcu_control_w)); + map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette"); + map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette"); + map(0x440000, 0x440fff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff); + map(0x480001, 0x480001).w(FUNC(toaplan1_state::bcu_flipscreen_w)); + map(0x480002, 0x480003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w)); + map(0x480004, 0x480007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w)); + map(0x480010, 0x48001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w)); + map(0x4c0000, 0x4c0001).r(FUNC(toaplan1_state::frame_done_r)); + map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w)); + map(0x4c0004, 0x4c0005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w)); + map(0x4c0006, 0x4c0007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w)); } void toaplan1_state::vimana_main_map(address_map &map) { map(0x000000, 0x03ffff).rom(); - map(0x080000, 0x080003).w(FUNC(toaplan1_state::toaplan1_tile_offsets_w)); - map(0x080006, 0x080007).w(FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); - map(0x0c0000, 0x0c0001).r(FUNC(toaplan1_state::toaplan1_frame_done_r)); - map(0x0c0002, 0x0c0003).rw(FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); - map(0x0c0004, 0x0c0005).rw(FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); - map(0x0c0006, 0x0c0007).rw(FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); + map(0x080000, 0x080003).w(FUNC(toaplan1_state::tile_offsets_w)); + map(0x080006, 0x080006).w(FUNC(toaplan1_state::fcu_flipscreen_w)); + map(0x0c0000, 0x0c0001).r(FUNC(toaplan1_state::frame_done_r)); + map(0x0c0002, 0x0c0003).rw(FUNC(toaplan1_state::spriteram_offs_r), FUNC(toaplan1_state::spriteram_offs_w)); + map(0x0c0004, 0x0c0005).rw(FUNC(toaplan1_state::spriteram_r), FUNC(toaplan1_state::spriteram_w)); + map(0x0c0006, 0x0c0007).rw(FUNC(toaplan1_state::spritesizeram_r), FUNC(toaplan1_state::spritesizeram_w)); map(0x400000, 0x400001).portr("VBLANK"); -// AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??) - map(0x400002, 0x400003).w(FUNC(toaplan1_state::toaplan1_intenable_w)); - map(0x400008, 0x40000f).w(FUNC(toaplan1_state::toaplan1_bcu_control_w)); - map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); - map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); - map(0x440000, 0x4407ff).rw(FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); /* inputs, coins and sound handled by 647180 MCU via this space */ +// map(0x400000, 0x400001).w(?? video frame related ??) + map(0x400003, 0x400003).w(FUNC(toaplan1_state::intenable_w)); + map(0x400008, 0x40000f).w(FUNC(toaplan1_state::bcu_control_w)); + map(0x404000, 0x4047ff).ram().w(FUNC(toaplan1_state::bgpalette_w)).share("bgpalette"); + map(0x406000, 0x4067ff).ram().w(FUNC(toaplan1_state::fgpalette_w)).share("fgpalette"); + map(0x440000, 0x4407ff).rw(FUNC(toaplan1_state::shared_r), FUNC(toaplan1_state::shared_w)).umask16(0x00ff); /* inputs, coins and sound handled by 647180 MCU via this space */ map(0x480000, 0x487fff).ram(); - map(0x4c0000, 0x4c0001).w(FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); - map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); - map(0x4c0004, 0x4c0007).rw(FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); - map(0x4c0010, 0x4c001f).rw(FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x4c0001, 0x4c0001).w(FUNC(toaplan1_state::bcu_flipscreen_w)); + map(0x4c0002, 0x4c0003).rw(FUNC(toaplan1_state::tileram_offs_r), FUNC(toaplan1_state::tileram_offs_w)); + map(0x4c0004, 0x4c0007).rw(FUNC(toaplan1_state::tileram_r), FUNC(toaplan1_state::tileram_w)); + map(0x4c0010, 0x4c001f).rw(FUNC(toaplan1_state::scroll_regs_r), FUNC(toaplan1_state::scroll_regs_w)); } /***************************** Z80 Memory Map *******************************/ -void toaplan1_state::toaplan1_sound_map(address_map &map) +void toaplan1_state::sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0x87ff).ram().share("sharedram"); @@ -864,7 +864,7 @@ void toaplan1_state::truxton_sound_io_map(address_map &map) map(0x00, 0x00).portr("P1"); map(0x10, 0x10).portr("P2"); map(0x20, 0x20).portr("SYSTEM"); - map(0x30, 0x30).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0x30, 0x30).w(FUNC(toaplan1_state::coin_w)); /* Coin counter/lockout */ map(0x40, 0x40).portr("DSWA"); map(0x50, 0x50).portr("DSWB"); map(0x60, 0x61).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); @@ -877,7 +877,7 @@ void toaplan1_state::hellfire_sound_io_map(address_map &map) map(0x00, 0x00).portr("DSWA"); map(0x10, 0x10).portr("DSWB"); map(0x20, 0x20).portr("TJUMP"); - map(0x30, 0x30).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0x30, 0x30).w(FUNC(toaplan1_state::coin_w)); /* Coin counter/lockout */ map(0x40, 0x40).portr("P1"); map(0x50, 0x50).portr("P2"); map(0x60, 0x60).portr("SYSTEM"); @@ -893,16 +893,16 @@ void toaplan1_state::zerowing_sound_io_map(address_map &map) map(0x28, 0x28).portr("DSWB"); map(0x80, 0x80).portr("SYSTEM"); map(0x88, 0x88).portr("TJUMP"); - map(0xa0, 0xa0).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0xa0, 0xa0).w(FUNC(toaplan1_state::coin_w)); /* Coin counter/lockout */ map(0xa8, 0xa9).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); } -void toaplan1_state::demonwld_sound_io_map(address_map &map) +void toaplan1_demonwld_state::sound_io_map(address_map &map) { map.global_mask(0xff); map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); map(0x20, 0x20).portr("TJUMP"); - map(0x40, 0x40).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0x40, 0x40).w(FUNC(toaplan1_demonwld_state::coin_w)); /* Coin counter/lockout */ map(0x60, 0x60).portr("SYSTEM"); map(0x80, 0x80).portr("P1"); map(0xa0, 0xa0).portr("DSWB"); @@ -914,7 +914,7 @@ void toaplan1_state::outzone_sound_io_map(address_map &map) { map.global_mask(0xff); map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); - map(0x04, 0x04).w(FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0x04, 0x04).w(FUNC(toaplan1_state::coin_w)); /* Coin counter/lockout */ map(0x08, 0x08).portr("DSWA"); map(0x0c, 0x0c).portr("DSWB"); map(0x10, 0x10).portr("SYSTEM"); @@ -926,18 +926,18 @@ void toaplan1_state::outzone_sound_io_map(address_map &map) /***************************** TMS32010 Memory Map **************************/ -void toaplan1_state::dsp_program_map(address_map &map) +void toaplan1_demonwld_state::dsp_program_map(address_map &map) { map(0x000, 0x7ff).rom(); } /* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */ -void toaplan1_state::dsp_io_map(address_map &map) +void toaplan1_demonwld_state::dsp_io_map(address_map &map) { - map(0, 0).w(FUNC(toaplan1_state::demonwld_dsp_addrsel_w)); - map(1, 1).rw(FUNC(toaplan1_state::demonwld_dsp_r), FUNC(toaplan1_state::demonwld_dsp_w)); - map(3, 3).w(FUNC(toaplan1_state::demonwld_dsp_bio_w)); + map(0, 0).w(FUNC(toaplan1_demonwld_state::dsp_addrsel_w)); + map(1, 1).rw(FUNC(toaplan1_demonwld_state::dsp_r), FUNC(toaplan1_demonwld_state::dsp_w)); + map(3, 3).w(FUNC(toaplan1_demonwld_state::dsp_bio_w)); } @@ -976,57 +976,57 @@ void toaplan1_state::vimana_hd647180_io_map(address_map &map) map(0x81, 0x81).portr("P2"); map(0x82, 0x82).portr("DSWA"); map(0x83, 0x83).portr("SYSTEM"); - map(0x84, 0x84).w(FUNC(toaplan1_state::toaplan1_coin_w)); // Coin counter/lockout // needs verify + map(0x84, 0x84).w(FUNC(toaplan1_state::coin_w)); // Coin counter/lockout // needs verify map(0x87, 0x87).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); map(0x8f, 0x8f).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w)); } -READ8_MEMBER(toaplan1_state::vimana_dswb_invert_r) +u8 toaplan1_state::vimana_dswb_invert_r() { - return ioport("DSWB")->read() ^ 0xFF; + return m_dswb_io->read() ^ 0xFF; } -READ8_MEMBER(toaplan1_state::vimana_tjump_invert_r) +u8 toaplan1_state::vimana_tjump_invert_r() { - return (ioport("TJUMP")->read() ^ 0xFF)|0xC0; // high 2 bits of port G always read as 1 + return (m_tjump_io->read() ^ 0xFF)|0xC0; // high 2 bits of port G always read as 1 } -WRITE16_MEMBER(toaplan1_state::samesame_mcu_w) +void toaplan1_samesame_state::mcu_w(u8 data) { m_to_mcu = data; m_cmdavailable = 1; }; -READ8_MEMBER(toaplan1_state::samesame_soundlatch_r) +u8 toaplan1_samesame_state::soundlatch_r() { return m_to_mcu; }; -WRITE8_MEMBER(toaplan1_state::samesame_sound_done_w) +void toaplan1_samesame_state::sound_done_w(u8 data) { m_to_mcu = data; m_cmdavailable = 0; } -READ8_MEMBER(toaplan1_state::samesame_cmdavailable_r) +u8 toaplan1_samesame_state::cmdavailable_r() { if (m_cmdavailable) return 0xff; else return 0x00; }; -void toaplan1_state::samesame_hd647180_mem_map(address_map &map) +void toaplan1_samesame_state::hd647180_mem_map(address_map &map) { map(0x00000, 0x03fff).rom(); /* Internal 16k byte ROM */ map(0x0fe00, 0x0ffff).ram(); /* Internal 512 byte RAM */ } -void toaplan1_state::samesame_hd647180_io_map(address_map &map) +void toaplan1_samesame_state::hd647180_io_map(address_map &map) { map.global_mask(0xff); - map(0x63, 0x63).r(FUNC(toaplan1_state::samesame_cmdavailable_r)); - map(0xa0, 0xa0).r(FUNC(toaplan1_state::samesame_soundlatch_r)); - map(0xb0, 0xb0).w(FUNC(toaplan1_state::samesame_sound_done_w)); + map(0x63, 0x63).r(FUNC(toaplan1_samesame_state::cmdavailable_r)); + map(0xa0, 0xa0).r(FUNC(toaplan1_samesame_state::soundlatch_r)); + map(0xb0, 0xb0).w(FUNC(toaplan1_samesame_state::sound_done_w)); map(0x80, 0x80).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); map(0x81, 0x81).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w)); @@ -1875,25 +1875,25 @@ static const gfx_layout tilelayout = RGN_FRAC(1,2), /* 16384/32768 tiles */ 4, /* 4 bits per pixel */ { RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, + { STEP8(0,1) }, + { STEP8(0,8*2) }, 16*8 /* every tile takes 16 consecutive bytes */ }; static GFXDECODE_START( gfx_toaplan1 ) - GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 64 ) - GFXDECODE_ENTRY( "gfx2", 0x00000, tilelayout, 64*16, 64 ) + GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 64 ) + GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 64*16, 64 ) GFXDECODE_END static GFXDECODE_START( gfx_rallybik ) - GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 64 ) + GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 64 ) GFXDECODE_END -#define PIXEL_CLOCK (XTAL(28'000'000)/4) +#define PIXEL_CLOCK (XTAL(28'000'000) / 4) -// HTOTAL and VTOTAL taken from CRTC registers (toaplan1_bcu_control_w) +// HTOTAL and VTOTAL taken from CRTC registers (bcu_control_w) // rallybik, demonwld and outzone program a larger VTOTAL than the other // games, giving them a lower frame rate @@ -1913,8 +1913,8 @@ void toaplan1_rallybik_state::rallybik(machine_config &config) M68000(config, m_maincpu, XTAL(10'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_rallybik_state::rallybik_main_map); - Z80(config, m_audiocpu, XTAL(28'000'000)/8); - m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_rallybik_state::toaplan1_sound_map); + Z80(config, m_audiocpu, XTAL(28'000'000) / 8); + m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_rallybik_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &toaplan1_rallybik_state::rallybik_sound_io_map); config.m_minimum_quantum = attotime::from_hz(600); @@ -1925,14 +1925,12 @@ void toaplan1_rallybik_state::rallybik(machine_config &config) coinlatch.q_out_cb<6>().set(FUNC(toaplan1_rallybik_state::coin_lockout_1_w)); coinlatch.q_out_cb<7>().set(FUNC(toaplan1_rallybik_state::coin_lockout_2_w)); - MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,toaplan1) - /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(toaplan1_rallybik_state::screen_update_rallybik)); - m_screen->screen_vblank().set(FUNC(toaplan1_rallybik_state::screen_vblank_rallybik)); + m_screen->set_screen_update(FUNC(toaplan1_rallybik_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_rallybik_state::screen_vblank)); m_screen->set_palette(m_palette); TOAPLAN_SCU(config, m_spritegen, 0); @@ -1942,8 +1940,6 @@ void toaplan1_rallybik_state::rallybik(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_rallybik); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_rallybik_state,rallybik) - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1958,31 +1954,27 @@ void toaplan1_state::truxton(machine_config &config) M68000(config, m_maincpu, XTAL(10'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::truxton_main_map); - Z80(config, m_audiocpu, XTAL(28'000'000)/8); - m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map); + Z80(config, m_audiocpu, XTAL(28'000'000) / 8); + m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::truxton_sound_io_map); config.m_minimum_quantum = attotime::from_hz(600); - MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,toaplan1) - /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1)); - m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1)); + m_screen->set_screen_update(FUNC(toaplan1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM3812(config, m_ymsnd, XTAL(28'000'000)/8); + YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0); m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -1993,31 +1985,27 @@ void toaplan1_state::hellfire(machine_config &config) M68000(config, m_maincpu, XTAL(10'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::hellfire_main_map); - Z80(config, m_audiocpu, XTAL(28'000'000)/8); - m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map); + Z80(config, m_audiocpu, XTAL(28'000'000) / 8); + m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::hellfire_sound_io_map); config.m_minimum_quantum = attotime::from_hz(600); - MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,toaplan1) - /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16); - m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1)); - m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1)); + m_screen->set_screen_update(FUNC(toaplan1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM3812(config, m_ymsnd, XTAL(28'000'000)/8); + YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0); m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -2028,8 +2016,8 @@ void toaplan1_state::zerowing(machine_config &config) M68000(config, m_maincpu, XTAL(10'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::zerowing_main_map); - Z80(config, m_audiocpu, XTAL(28'000'000)/8); - m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map); + Z80(config, m_audiocpu, XTAL(28'000'000) / 8); + m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::zerowing_sound_io_map); config.m_minimum_quantum = attotime::from_hz(600); @@ -2040,94 +2028,86 @@ void toaplan1_state::zerowing(machine_config &config) SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16); - m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1)); - m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1)); + m_screen->set_screen_update(FUNC(toaplan1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM3812(config, m_ymsnd, XTAL(28'000'000)/8); + YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0); m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0); } -void toaplan1_state::demonwld(machine_config &config) +void toaplan1_demonwld_state::demonwld(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(10'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::demonwld_main_map); + m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_demonwld_state::main_map); - Z80(config, m_audiocpu, XTAL(28'000'000)/8); - m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map); - m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::demonwld_sound_io_map); + Z80(config, m_audiocpu, XTAL(28'000'000) / 8); + m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_demonwld_state::sound_map); + m_audiocpu->set_addrmap(AS_IO, &toaplan1_demonwld_state::sound_io_map); - TMS32010(config, m_dsp, XTAL(28'000'000)/2); - m_dsp->set_addrmap(AS_PROGRAM, &toaplan1_state::dsp_program_map); - m_dsp->set_addrmap(AS_IO, &toaplan1_state::dsp_io_map); - m_dsp->bio().set(FUNC(toaplan1_state::demonwld_bio_r)); + TMS32010(config, m_dsp, XTAL(28'000'000) / 2); + m_dsp->set_addrmap(AS_PROGRAM, &toaplan1_demonwld_state::dsp_program_map); + m_dsp->set_addrmap(AS_IO, &toaplan1_demonwld_state::dsp_io_map); + m_dsp->bio().set(FUNC(toaplan1_demonwld_state::bio_r)); config.m_minimum_quantum = attotime::from_hz(600); - MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,demonwld) - /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND+16, VBSTART+16); - m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1)); - m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1)); + m_screen->set_screen_update(FUNC(toaplan1_demonwld_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_demonwld_state::screen_vblank)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM3812(config, m_ymsnd, XTAL(28'000'000)/8); + YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0); m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0); } -void toaplan1_state::samesame(machine_config &config) +void toaplan1_samesame_state::samesame(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(10'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::samesame_main_map); + m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_samesame_state::main_map); - Z180(config, m_audiocpu, XTAL(28'000'000)/8); /* HD647180XOFS6 CPU */ - m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::samesame_hd647180_mem_map); - m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::samesame_hd647180_io_map); + Z180(config, m_audiocpu, XTAL(28'000'000) / 8); /* HD647180XOFS6 CPU */ + m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_samesame_state::hd647180_mem_map); + m_audiocpu->set_addrmap(AS_IO, &toaplan1_samesame_state::hd647180_io_map); config.m_perfect_cpu_quantum = subtag("maincpu"); - MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,zerowing) + MCFG_MACHINE_RESET_OVERRIDE(toaplan1_samesame_state,zerowing) /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1)); - m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_samesame)); + m_screen->set_screen_update(FUNC(toaplan1_samesame_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_samesame_state::screen_vblank)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM3812(config, m_ymsnd, XTAL(28'000'000)/8); + YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0); m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -2138,8 +2118,8 @@ void toaplan1_state::outzone(machine_config &config) M68000(config, m_maincpu, XTAL(10'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::outzone_main_map); - Z80(config, m_audiocpu, XTAL(28'000'000)/8); - m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map); + Z80(config, m_audiocpu, XTAL(28'000'000) / 8); + m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::outzone_sound_io_map); config.m_minimum_quantum = attotime::from_hz(600); @@ -2150,19 +2130,17 @@ void toaplan1_state::outzone(machine_config &config) SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1)); - m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1)); + m_screen->set_screen_update(FUNC(toaplan1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM3812(config, m_ymsnd, XTAL(28'000'000)/8); + YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0); m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -2173,8 +2151,8 @@ void toaplan1_state::outzonecv(machine_config &config) M68000(config, m_maincpu, XTAL(10'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::outzonecv_main_map); - Z80(config, m_audiocpu, XTAL(28'000'000)/8); - m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::toaplan1_sound_map); + Z80(config, m_audiocpu, XTAL(28'000'000) / 8); + m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::zerowing_sound_io_map); config.m_minimum_quantum = attotime::from_hz(600); @@ -2185,19 +2163,17 @@ void toaplan1_state::outzonecv(machine_config &config) SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1)); - m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1)); + m_screen->set_screen_update(FUNC(toaplan1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM3812(config, m_ymsnd, XTAL(28'000'000)/8); + YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0); m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -2208,31 +2184,29 @@ void toaplan1_state::vimana(machine_config &config) M68000(config, m_maincpu, XTAL(10'000'000)); /* verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &toaplan1_state::vimana_main_map); - Z180(config, m_audiocpu, XTAL(28'000'000)/8); /* HD647180XOFS6 CPU */ + Z180(config, m_audiocpu, XTAL(28'000'000) / 8); /* HD647180XOFS6 CPU */ m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan1_state::vimana_hd647180_mem_map); m_audiocpu->set_addrmap(AS_IO, &toaplan1_state::vimana_hd647180_io_map); config.m_minimum_quantum = attotime::from_hz(600); - MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,vimana) + MCFG_MACHINE_RESET_OVERRIDE(toaplan1_state,zerowing) /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(toaplan1_state::screen_update_toaplan1)); - m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank_toaplan1)); + m_screen->set_screen_update(FUNC(toaplan1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(toaplan1_state::screen_vblank)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toaplan1); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, (64*16)+(64*16)); - MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM3812(config, m_ymsnd, XTAL(28'000'000)/8); /* verified on pcb */ + YM3812(config, m_ymsnd, XTAL(28'000'000) / 8); /* verified on pcb */ m_ymsnd->irq_handler().set_inputline(m_audiocpu, 0); m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -3127,57 +3101,42 @@ ROM_START( vimanaj ) ROM_END -void toaplan1_state::init_toaplan1() -{ - toaplan1_driver_savestate(); -} - -void toaplan1_state::init_demonwld() -{ - toaplan1_driver_savestate(); - demonwld_driver_savestate(); -} - - - - - -GAME( 1988, rallybik, 0, rallybik, rallybik, toaplan1_rallybik_state, init_toaplan1, ROT270, "Toaplan / Taito Corporation", "Rally Bike / Dash Yarou", 0 ) +GAME( 1988, rallybik, 0, rallybik, rallybik, toaplan1_rallybik_state, empty_init, ROT270, "Toaplan / Taito Corporation", "Rally Bike / Dash Yarou", 0 ) -GAME( 1988, truxton, 0, truxton, truxton, toaplan1_state, init_toaplan1, ROT270, "Toaplan / Taito Corporation", "Truxton / Tatsujin", 0 ) +GAME( 1988, truxton, 0, truxton, truxton, toaplan1_state, empty_init, ROT270, "Toaplan / Taito Corporation", "Truxton / Tatsujin", 0 ) -GAME( 1989, hellfire, 0, hellfire, hellfire, toaplan1_state, init_toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (2P set)", 0 ) -GAME( 1989, hellfire1, hellfire, hellfire, hellfire1, toaplan1_state, init_toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (1P set)", 0 ) -GAME( 1989, hellfire2a, hellfire, hellfire, hellfire2a,toaplan1_state, init_toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (2P set, older)", 0 ) -GAME( 1989, hellfire1a, hellfire, hellfire, hellfire1a,toaplan1_state, init_toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (1P set, older)", 0 ) +GAME( 1989, hellfire, 0, hellfire, hellfire, toaplan1_state, empty_init, ROT0, "Toaplan (Taito license)", "Hellfire (2P set)", 0 ) +GAME( 1989, hellfire1, hellfire, hellfire, hellfire1, toaplan1_state, empty_init, ROT0, "Toaplan (Taito license)", "Hellfire (1P set)", 0 ) +GAME( 1989, hellfire2a, hellfire, hellfire, hellfire2a,toaplan1_state, empty_init, ROT0, "Toaplan (Taito license)", "Hellfire (2P set, older)", 0 ) +GAME( 1989, hellfire1a, hellfire, hellfire, hellfire1a,toaplan1_state, empty_init, ROT0, "Toaplan (Taito license)", "Hellfire (1P set, older)", 0 ) -GAME( 1989, zerowing, 0, zerowing, zerowing2, toaplan1_state, init_toaplan1, ROT0, "Toaplan", "Zero Wing (2P set)", 0 ) -GAME( 1989, zerowing1, zerowing, zerowing, zerowing, toaplan1_state, init_toaplan1, ROT0, "Toaplan", "Zero Wing (1P set)", 0 ) -GAME( 1989, zerowingw, zerowing, zerowing, zerowing2, toaplan1_state, init_toaplan1, ROT0, "Toaplan (Williams license)", "Zero Wing (2P set, Williams license)", 0 ) +GAME( 1989, zerowing, 0, zerowing, zerowing2, toaplan1_state, empty_init, ROT0, "Toaplan", "Zero Wing (2P set)", 0 ) +GAME( 1989, zerowing1, zerowing, zerowing, zerowing, toaplan1_state, empty_init, ROT0, "Toaplan", "Zero Wing (1P set)", 0 ) +GAME( 1989, zerowingw, zerowing, zerowing, zerowing2, toaplan1_state, empty_init, ROT0, "Toaplan (Williams license)", "Zero Wing (2P set, Williams license)", 0 ) -GAME( 1990, demonwld, 0, demonwld, demonwld, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 1)", 0 ) -GAME( 1989, demonwld1, demonwld, demonwld, demonwld, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 2)", 0 ) -GAME( 1989, demonwld2, demonwld, demonwld, demonwld1, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 3)", 0 ) -GAME( 1989, demonwld3, demonwld, demonwld, demonwld1, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 4)", 0 ) -GAME( 1989, demonwld4, demonwld, demonwld, demonwld1, toaplan1_state, init_demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 5)", 0 ) +GAME( 1990, demonwld, 0, demonwld, demonwld, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 1)", 0 ) +GAME( 1989, demonwld1, demonwld, demonwld, demonwld, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 2)", 0 ) +GAME( 1989, demonwld2, demonwld, demonwld, demonwld1, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 3)", 0 ) +GAME( 1989, demonwld3, demonwld, demonwld, demonwld1, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 4)", 0 ) +GAME( 1989, demonwld4, demonwld, demonwld, demonwld1, toaplan1_demonwld_state, empty_init, ROT0, "Toaplan", "Demon's World / Horror Story (set 5)", 0 ) -GAME( 1990, fireshrk, 0, samesame, fireshrk, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Fire Shark", 0 ) -GAME( 1989, fireshrka, fireshrk, samesame, fireshrka, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Fire Shark (earlier)", 0 ) -GAME( 1990, fireshrkd, fireshrk, samesame, samesame2, toaplan1_state, init_toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 1, easier)", 0 ) -GAME( 1990, fireshrkdh, fireshrk, samesame, samesame2, toaplan1_state, init_toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 2, harder)", 0 ) -GAME( 1989, samesame, fireshrk, samesame, samesame, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Same! Same! Same! (1P set)", 0 ) -GAME( 1989, samesame2, fireshrk, samesame, samesame2, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Same! Same! Same! (2P set)", 0 ) -GAME( 1990, samesamecn, fireshrk, samesame, samesame2, toaplan1_state, init_toaplan1, ROT270, "Toaplan (Hong Kong Honest Trading license)", "Jiao! Jiao! Jiao! (China, 2P set)", 0 ) -GAME( 2015, samesamenh, fireshrk, samesame, samesame, toaplan1_state, init_toaplan1, ROT270, "hack (trap15)", "Same! Same! Same! (1P set, NEW VER! hack)", 0 ) +GAME( 1990, fireshrk, 0, samesame, fireshrk, toaplan1_samesame_state, empty_init, ROT270, "Toaplan", "Fire Shark", 0 ) +GAME( 1989, fireshrka, fireshrk, samesame, fireshrka, toaplan1_samesame_state, empty_init, ROT270, "Toaplan", "Fire Shark (earlier)", 0 ) +GAME( 1990, fireshrkd, fireshrk, samesame, samesame2, toaplan1_samesame_state, empty_init, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 1, easier)", 0 ) +GAME( 1990, fireshrkdh, fireshrk, samesame, samesame2, toaplan1_samesame_state, empty_init, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 2, harder)", 0 ) +GAME( 1989, samesame, fireshrk, samesame, samesame, toaplan1_samesame_state, empty_init, ROT270, "Toaplan", "Same! Same! Same! (1P set)", 0 ) +GAME( 1989, samesame2, fireshrk, samesame, samesame2, toaplan1_samesame_state, empty_init, ROT270, "Toaplan", "Same! Same! Same! (2P set)", 0 ) +GAME( 1990, samesamecn, fireshrk, samesame, samesame2, toaplan1_samesame_state, empty_init, ROT270, "Toaplan (Hong Kong Honest Trading license)", "Jiao! Jiao! Jiao! (China, 2P set)", 0 ) +GAME( 2015, samesamenh, fireshrk, samesame, samesame, toaplan1_samesame_state, empty_init, ROT270, "hack (trap15)", "Same! Same! Same! (1P set, NEW VER! hack)", 0 ) -GAME( 1990, outzone, 0, outzone, outzone, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone", 0 ) -GAME( 1990, outzoneh, outzone, outzone, outzone, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (harder)", 0 ) -GAME( 1990, outzonea, outzone, outzone, outzonea, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (old set)", 0 ) -GAME( 1990, outzoneb, outzone, outzone, outzonea, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (older set)", 0 ) -GAME( 1990, outzonec, outzone, outzone, outzonec, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (oldest set)", MACHINE_IMPERFECT_SOUND ) // prototype? -GAME( 1990, outzonecv, outzone, outzonecv,outzone, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Out Zone (Zero Wing TP-015 PCB conversion)", 0 ) +GAME( 1990, outzone, 0, outzone, outzone, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone", 0 ) +GAME( 1990, outzoneh, outzone, outzone, outzone, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (harder)", 0 ) +GAME( 1990, outzonea, outzone, outzone, outzonea, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (old set)", 0 ) +GAME( 1990, outzoneb, outzone, outzone, outzonea, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (older set)", 0 ) +GAME( 1990, outzonec, outzone, outzone, outzonec, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (oldest set)", MACHINE_IMPERFECT_SOUND ) // prototype? +GAME( 1990, outzonecv, outzone, outzonecv,outzone, toaplan1_state, empty_init, ROT270, "Toaplan", "Out Zone (Zero Wing TP-015 PCB conversion)", 0 ) // has various licenses / regions depending on jumpers, including Tecmo -GAME( 1991, vimana, 0, vimana, vimana, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Vimana (World, set 1)", 0 ) -GAME( 1991, vimanan, vimana, vimana, vimanan, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Vimana (World, set 2)", 0 ) -GAME( 1991, vimanaj, vimana, vimana, vimanaj, toaplan1_state, init_toaplan1, ROT270, "Toaplan", "Vimana (Japan)", 0 ) +GAME( 1991, vimana, 0, vimana, vimana, toaplan1_state, empty_init, ROT270, "Toaplan", "Vimana (World, set 1)", 0 ) +GAME( 1991, vimanan, vimana, vimana, vimanan, toaplan1_state, empty_init, ROT270, "Toaplan", "Vimana (World, set 2)", 0 ) +GAME( 1991, vimanaj, vimana, vimana, vimanaj, toaplan1_state, empty_init, ROT270, "Toaplan", "Vimana (Japan)", 0 ) diff --git a/src/mame/includes/toaplan1.h b/src/mame/includes/toaplan1.h index b687bd71173..2668792cf25 100644 --- a/src/mame/includes/toaplan1.h +++ b/src/mame/includes/toaplan1.h @@ -24,18 +24,17 @@ public: m_bgpaletteram(*this, "bgpalette"), m_fgpaletteram(*this, "fgpalette"), m_sharedram(*this, "sharedram"), + m_dswb_io(*this, "DSWB"), + m_tjump_io(*this, "TJUMP"), m_spriteram(*this, "spriteram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_ymsnd(*this, "ymsnd"), - m_dsp(*this, "dsp"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette") { } - void demonwld(machine_config &config); - void samesame(machine_config &config); void truxton(machine_config &config); void outzone(machine_config &config); void vimana(machine_config &config); @@ -43,161 +42,112 @@ public: void hellfire(machine_config &config); void zerowing(machine_config &config); - void init_toaplan1(); - void init_demonwld(); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; - DECLARE_MACHINE_RESET(toaplan1); + required_shared_ptr m_bgpaletteram; + required_shared_ptr m_fgpaletteram; -protected: - required_shared_ptr m_bgpaletteram; - required_shared_ptr m_fgpaletteram; + optional_shared_ptr m_sharedram; - optional_shared_ptr m_sharedram; + optional_ioport m_dswb_io; + optional_ioport m_tjump_io; int m_intenable; - /* Demon world */ - int m_dsp_on; - int m_dsp_bio; - int m_dsp_execute; - uint32_t m_dsp_addr_w; - uint32_t m_main_ram_seg; - - std::unique_ptr m_pf4_tilevram16; /* || Drawn in this order */ - std::unique_ptr m_pf3_tilevram16; /* || */ - std::unique_ptr m_pf2_tilevram16; /* \||/ */ - std::unique_ptr m_pf1_tilevram16; /* \/ */ - - optional_shared_ptr m_spriteram; - std::unique_ptr m_buffered_spriteram; - std::unique_ptr m_spritesizeram16; - std::unique_ptr m_buffered_spritesizeram16; - - int32_t m_bcu_flipscreen; /* Tile controller flip flag */ - int32_t m_fcu_flipscreen; /* Sprite controller flip flag */ - - int32_t m_pf_voffs; - int32_t m_spriteram_offs; - - int32_t m_pf1_scrollx; - int32_t m_pf1_scrolly; - int32_t m_pf2_scrollx; - int32_t m_pf2_scrolly; - int32_t m_pf3_scrollx; - int32_t m_pf3_scrolly; - int32_t m_pf4_scrollx; - int32_t m_pf4_scrolly; + std::unique_ptr m_tilevram[4]; + /* + std::unique_ptr m_tilevram[3]; // || Drawn in this order + std::unique_ptr m_tilevram[2]; // || + std::unique_ptr m_tilevram[1]; // \||/ + std::unique_ptr m_tilevram[0]; // \/ + */ + + optional_shared_ptr m_spriteram; + std::unique_ptr m_buffered_spriteram; + std::unique_ptr m_spritesizeram; + std::unique_ptr m_buffered_spritesizeram; + + s32 m_bcu_flipscreen; /* Tile controller flip flag */ + s32 m_fcu_flipscreen; /* Sprite controller flip flag */ + + s32 m_pf_voffs; + s32 m_spriteram_offs; + + s32 m_scrollx[4]; + s32 m_scrolly[4]; #ifdef MAME_DEBUG - int m_display_pf1; - int m_display_pf2; - int m_display_pf3; - int m_display_pf4; + int m_display_pf[4]; int m_displog; #endif - int32_t m_tiles_offsetx; - int32_t m_tiles_offsety; - - tilemap_t *m_pf1_tilemap; - tilemap_t *m_pf2_tilemap; - tilemap_t *m_pf3_tilemap; - tilemap_t *m_pf4_tilemap; - - DECLARE_WRITE16_MEMBER(toaplan1_intenable_w); - DECLARE_WRITE16_MEMBER(demonwld_dsp_addrsel_w); - DECLARE_READ16_MEMBER(demonwld_dsp_r); - DECLARE_WRITE16_MEMBER(demonwld_dsp_w); - DECLARE_WRITE16_MEMBER(demonwld_dsp_bio_w); - DECLARE_READ_LINE_MEMBER(demonwld_bio_r); - DECLARE_WRITE16_MEMBER(demonwld_dsp_ctrl_w); - DECLARE_READ16_MEMBER(samesame_port_6_word_r); - DECLARE_READ16_MEMBER(toaplan1_shared_r); - DECLARE_WRITE16_MEMBER(toaplan1_shared_w); - DECLARE_WRITE16_MEMBER(toaplan1_reset_sound_w); - DECLARE_WRITE8_MEMBER(toaplan1_coin_w); - DECLARE_WRITE16_MEMBER(samesame_coin_w); - - DECLARE_READ16_MEMBER(toaplan1_frame_done_r); - DECLARE_WRITE16_MEMBER(toaplan1_tile_offsets_w); - DECLARE_WRITE16_MEMBER(toaplan1_bcu_flipscreen_w); - DECLARE_WRITE16_MEMBER(toaplan1_fcu_flipscreen_w); - DECLARE_READ16_MEMBER(toaplan1_spriteram_offs_r); - DECLARE_WRITE16_MEMBER(toaplan1_spriteram_offs_w); - DECLARE_WRITE16_MEMBER(toaplan1_bgpalette_w); - DECLARE_WRITE16_MEMBER(toaplan1_fgpalette_w); - DECLARE_READ16_MEMBER(toaplan1_spriteram16_r); - DECLARE_WRITE16_MEMBER(toaplan1_spriteram16_w); - DECLARE_READ16_MEMBER(toaplan1_spritesizeram16_r); - DECLARE_WRITE16_MEMBER(toaplan1_spritesizeram16_w); - DECLARE_WRITE16_MEMBER(toaplan1_bcu_control_w); - DECLARE_READ16_MEMBER(toaplan1_tileram_offs_r); - DECLARE_WRITE16_MEMBER(toaplan1_tileram_offs_w); - DECLARE_READ16_MEMBER(toaplan1_tileram16_r); - DECLARE_WRITE16_MEMBER(toaplan1_tileram16_w); - DECLARE_READ16_MEMBER(toaplan1_scroll_regs_r); - DECLARE_WRITE16_MEMBER(toaplan1_scroll_regs_w); + s32 m_tiles_offsetx; + s32 m_tiles_offsety; + + tilemap_t *m_tilemap[4]; + + void intenable_w(u8 data); + u8 shared_r(offs_t offset); + void shared_w(offs_t offset, u8 data); + void reset_sound_w(u8 data); + void coin_w(u8 data); + + u16 frame_done_r(); + DECLARE_WRITE16_MEMBER(tile_offsets_w); + void bcu_flipscreen_w(u8 data); + void fcu_flipscreen_w(u8 data); + u16 spriteram_offs_r(); + void spriteram_offs_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void bgpalette_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void fgpalette_w(offs_t offset, u16 data, u16 mem_mask = ~0); + u16 spriteram_r(); + void spriteram_w(offs_t offset, u16 data, u16 mem_mask = ~0); + u16 spritesizeram_r(); + void spritesizeram_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void bcu_control_w(offs_t offset, u16 data); + u16 tileram_offs_r(); + void tileram_offs_w(offs_t offset, u16 data, u16 mem_mask = ~0); + u16 tileram_r(offs_t offset); + void tileram_w(offs_t offset, u16 data, u16 mem_mask = ~0); + u16 scroll_regs_r(offs_t offset); + void scroll_regs_w(offs_t offset, u16 data, u16 mem_mask = ~0); + + u8 vimana_dswb_invert_r(); + u8 vimana_tjump_invert_r(); + + template TILE_GET_INFO_MEMBER(get_tile_info); - // Fire Shark sound - uint8_t m_to_mcu; - uint8_t m_cmdavailable; - - DECLARE_READ8_MEMBER(vimana_dswb_invert_r); - DECLARE_READ8_MEMBER(vimana_tjump_invert_r); - DECLARE_WRITE16_MEMBER(samesame_mcu_w); - DECLARE_READ8_MEMBER(samesame_soundlatch_r); - DECLARE_WRITE8_MEMBER(samesame_sound_done_w); - DECLARE_READ8_MEMBER(samesame_cmdavailable_r); - - TILE_GET_INFO_MEMBER(get_pf1_tile_info); - TILE_GET_INFO_MEMBER(get_pf2_tile_info); - TILE_GET_INFO_MEMBER(get_pf3_tile_info); - TILE_GET_INFO_MEMBER(get_pf4_tile_info); - - DECLARE_VIDEO_START(toaplan1); DECLARE_MACHINE_RESET(zerowing); - DECLARE_MACHINE_RESET(demonwld); - DECLARE_MACHINE_RESET(vimana); - uint32_t screen_update_toaplan1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - DECLARE_WRITE_LINE_MEMBER(screen_vblank_toaplan1); - DECLARE_WRITE_LINE_MEMBER(screen_vblank_samesame); - void toaplan1_interrupt(); - - void demonwld_restore_dsp(); - void toaplan1_create_tilemaps(); - void toaplan1_vram_alloc(); - void toaplan1_spritevram_alloc(); - void toaplan1_set_scrolls(); + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + DECLARE_WRITE_LINE_MEMBER(screen_vblank); + void interrupt(); + + void create_tilemaps(); + void vram_alloc(); + void spritevram_alloc(); + void set_scrolls(); void register_common(); - void toaplan1_log_vram(); + void log_vram(); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ); - void demonwld_dsp(int enable); - void toaplan1_reset_sound(); - void toaplan1_driver_savestate(); - void demonwld_driver_savestate(); - DECLARE_WRITE_LINE_MEMBER(toaplan1_reset_callback); + void reset_sound(); + DECLARE_WRITE_LINE_MEMBER(reset_callback); required_device m_maincpu; required_device m_audiocpu; required_device m_ymsnd; - optional_device m_dsp; required_device m_gfxdecode; required_device m_screen; required_device m_palette; - void dsp_io_map(address_map &map); - void dsp_program_map(address_map &map); - void demonwld_main_map(address_map &map); - void demonwld_sound_io_map(address_map &map); void hellfire_main_map(address_map &map); void hellfire_sound_io_map(address_map &map); void outzone_main_map(address_map &map); void outzone_sound_io_map(address_map &map); void outzonecv_main_map(address_map &map); - void samesame_hd647180_io_map(address_map &map); - void samesame_hd647180_mem_map(address_map &map); - void samesame_main_map(address_map &map); - void toaplan1_sound_map(address_map &map); + void sound_map(address_map &map); void truxton_main_map(address_map &map); void truxton_sound_io_map(address_map &map); void vimana_hd647180_io_map(address_map &map); @@ -218,19 +168,91 @@ public: void rallybik(machine_config &config); +protected: + virtual void video_start() override; + private: DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w); DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w); DECLARE_WRITE_LINE_MEMBER(coin_lockout_1_w); DECLARE_WRITE_LINE_MEMBER(coin_lockout_2_w); - DECLARE_READ16_MEMBER(rallybik_tileram16_r); - DECLARE_VIDEO_START(rallybik); - uint32_t screen_update_rallybik(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE_LINE_MEMBER(screen_vblank_rallybik); + u16 tileram_r(offs_t offset); + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); required_device m_spritegen; void rallybik_main_map(address_map &map); void rallybik_sound_io_map(address_map &map); }; +class toaplan1_demonwld_state : public toaplan1_state +{ +public: + toaplan1_demonwld_state(const machine_config &mconfig, device_type type, const char *tag) : + toaplan1_state(mconfig, type, tag), + m_dsp(*this, "dsp") + { + } + + void demonwld(machine_config &config); + +protected: + virtual void device_post_load() override; + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + /* Demon world */ + int m_dsp_on; + int m_dsp_bio; + int m_dsp_execute; + u32 m_dsp_addr_w; + u32 m_main_ram_seg; + + void dsp_addrsel_w(u16 data); + u16 dsp_r(); + void dsp_w(u16 data); + void dsp_bio_w(u16 data); + DECLARE_READ_LINE_MEMBER(bio_r); + void dsp_ctrl_w(u8 data); + void dsp_int_w(int enable); + + required_device m_dsp; + void dsp_io_map(address_map &map); + void dsp_program_map(address_map &map); + void main_map(address_map &map); + void sound_io_map(address_map &map); +}; + +class toaplan1_samesame_state : public toaplan1_state +{ +public: + toaplan1_samesame_state(const machine_config &mconfig, device_type type, const char *tag) : + toaplan1_state(mconfig, type, tag) + { + } + + void samesame(machine_config &config); + +protected: + virtual void machine_start() override; + +private: + // Fire Shark sound + u8 m_to_mcu; + u8 m_cmdavailable; + + void mcu_w(u8 data); + u8 soundlatch_r(); + void sound_done_w(u8 data); + u8 cmdavailable_r(); + u8 port_6_word_r(); + + DECLARE_WRITE_LINE_MEMBER(screen_vblank); + + void hd647180_io_map(address_map &map); + void hd647180_mem_map(address_map &map); + void main_map(address_map &map); +}; + #endif // MAME_INCLUDES_TOAPLAN1_H diff --git a/src/mame/machine/toaplan1.cpp b/src/mame/machine/toaplan1.cpp index 7f0df70d4b3..3e10d414f97 100644 --- a/src/mame/machine/toaplan1.cpp +++ b/src/mame/machine/toaplan1.cpp @@ -12,22 +12,19 @@ #include "includes/toaplan1.h" -void toaplan1_state::toaplan1_interrupt() +void toaplan1_state::interrupt() { if (m_intenable) m_maincpu->set_input_line(4, HOLD_LINE); } -WRITE16_MEMBER(toaplan1_state::toaplan1_intenable_w) +void toaplan1_state::intenable_w(u8 data) { - if (ACCESSING_BITS_0_7) - { - m_intenable = data & 0xff; - } + m_intenable = data; } -WRITE16_MEMBER(toaplan1_state::demonwld_dsp_addrsel_w) +void toaplan1_demonwld_state::dsp_addrsel_w(u16 data) { /* This sets the main CPU RAM address the DSP should */ /* read/write, via the DSP IO port 0 */ @@ -42,13 +39,14 @@ WRITE16_MEMBER(toaplan1_state::demonwld_dsp_addrsel_w) logerror("DSP PC:%04x IO write %04x (%08x) at port 0\n", m_dsp->pcbase(), data, m_main_ram_seg + m_dsp_addr_w); } -READ16_MEMBER(toaplan1_state::demonwld_dsp_r) +u16 toaplan1_demonwld_state::dsp_r() { /* DSP can read data from main CPU RAM via DSP IO port 1 */ - uint16_t input_data = 0; + u16 input_data = 0; - switch (m_main_ram_seg) { + switch (m_main_ram_seg) + { case 0xc00000: {address_space &mainspace = m_maincpu->space(AS_PROGRAM); input_data = mainspace.read_word(m_main_ram_seg + m_dsp_addr_w); break;} @@ -58,11 +56,12 @@ READ16_MEMBER(toaplan1_state::demonwld_dsp_r) return input_data; } -WRITE16_MEMBER(toaplan1_state::demonwld_dsp_w) +void toaplan1_demonwld_state::dsp_w(u16 data) { /* Data written to main CPU RAM via DSP IO port 1 */ m_dsp_execute = 0; - switch (m_main_ram_seg) { + switch (m_main_ram_seg) + { case 0xc00000: {if ((m_dsp_addr_w < 3) && (data == 0)) m_dsp_execute = 1; address_space &mainspace = m_maincpu->space(AS_PROGRAM); mainspace.write_word(m_main_ram_seg + m_dsp_addr_w, data); @@ -72,7 +71,7 @@ WRITE16_MEMBER(toaplan1_state::demonwld_dsp_w) logerror("DSP PC:%04x IO write %04x at %08x (port 1)\n", m_dsp->pcbase(), data, m_main_ram_seg + m_dsp_addr_w); } -WRITE16_MEMBER(toaplan1_state::demonwld_dsp_bio_w) +void toaplan1_demonwld_state::dsp_bio_w(u16 data) { /* data 0xffff means inhibit BIO line to DSP and enable */ /* communication to main processor */ @@ -82,11 +81,13 @@ WRITE16_MEMBER(toaplan1_state::demonwld_dsp_bio_w) logerror("DSP PC:%04x IO write %04x at port 3\n", m_dsp->pcbase(), data); - if (data & 0x8000) { + if (data & 0x8000) m_dsp_bio = CLEAR_LINE; - } - if (data == 0) { - if (m_dsp_execute) { + + if (data == 0) + { + if (m_dsp_execute) + { logerror("Turning 68000 on\n"); m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); m_dsp_execute = 0; @@ -95,13 +96,13 @@ WRITE16_MEMBER(toaplan1_state::demonwld_dsp_bio_w) } } -READ_LINE_MEMBER(toaplan1_state::demonwld_bio_r) +READ_LINE_MEMBER(toaplan1_demonwld_state::bio_r) { return m_dsp_bio; } -void toaplan1_state::demonwld_dsp(int enable) +void toaplan1_demonwld_state::dsp_int_w(int enable) { m_dsp_on = enable; if (enable) @@ -119,55 +120,45 @@ void toaplan1_state::demonwld_dsp(int enable) } } -void toaplan1_state::demonwld_restore_dsp() +void toaplan1_demonwld_state::device_post_load() { - demonwld_dsp(m_dsp_on); + dsp_int_w(m_dsp_on); } -WRITE16_MEMBER(toaplan1_state::demonwld_dsp_ctrl_w) +void toaplan1_demonwld_state::dsp_ctrl_w(u8 data) { #if 0 - logerror("68000:%08x Writing %08x to %08x.\n",m_maincpu->pc() ,data ,0xe0000a + offset); + logerror("68000:%08x Writing %02x to $e0000b.\n",m_maincpu->pc() ,data); #endif - if (ACCESSING_BITS_0_7) + switch (data) { - switch (data) - { - case 0x00: demonwld_dsp(1); break; /* Enable the INT line to the DSP */ - case 0x01: demonwld_dsp(0); break; /* Inhibit the INT line to the DSP */ - default: logerror("68000:%04x Writing unknown command %08x to %08x\n",m_maincpu->pcbase() ,data ,0xe0000a + offset); break; - } - } - else - { - logerror("68000:%04x Writing unknown command %08x to %08x\n",m_maincpu->pcbase() ,data ,0xe0000a + offset); + case 0x00: dsp_int_w(1); break; /* Enable the INT line to the DSP */ + case 0x01: dsp_int_w(0); break; /* Inhibit the INT line to the DSP */ + default: logerror("68000:%08x Writing unknown command %02x to $e0000b\n",m_maincpu->pcbase() ,data); break; } } -READ16_MEMBER(toaplan1_state::samesame_port_6_word_r) +u8 toaplan1_samesame_state::port_6_word_r() { /* Bit 0x80 is secondary CPU (HD647180) ready signal */ - logerror("PC:%04x Warning !!! IO reading from $14000a\n",m_maincpu->pcbase()); - return (0x80 | ioport("TJUMP")->read()) & 0xff; + logerror("PC:%08x Warning !!! IO reading from $14000b\n",m_maincpu->pcbase()); + return (0x80 | m_tjump_io->read()) & 0xff; } -READ16_MEMBER(toaplan1_state::toaplan1_shared_r) +u8 toaplan1_state::shared_r(offs_t offset) { - return m_sharedram[offset] & 0xff; + return m_sharedram[offset]; } -WRITE16_MEMBER(toaplan1_state::toaplan1_shared_w) +void toaplan1_state::shared_w(offs_t offset, u8 data) { - if (ACCESSING_BITS_0_7) - { - m_sharedram[offset] = data & 0xff; - } + m_sharedram[offset] = data; } -void toaplan1_state::toaplan1_reset_sound() +void toaplan1_state::reset_sound() { /* Reset the secondary CPU and sound chip */ /* rallybik, truxton, hellfire, demonwld write to a port to cause a reset */ @@ -176,9 +167,9 @@ void toaplan1_state::toaplan1_reset_sound() m_audiocpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero); } -WRITE16_MEMBER(toaplan1_state::toaplan1_reset_sound_w) +void toaplan1_state::reset_sound_w(u8 data) { - if (ACCESSING_BITS_0_7 && (data == 0)) toaplan1_reset_sound(); + if (data == 0) reset_sound(); } @@ -203,14 +194,15 @@ WRITE_LINE_MEMBER(toaplan1_rallybik_state::coin_lockout_2_w) } -WRITE8_MEMBER(toaplan1_state::toaplan1_coin_w) +void toaplan1_state::coin_w(u8 data) { logerror("Z80 writing %02x to coin control\n",data); /* This still isnt too clear yet. */ /* Coin C has no coin lock ? */ /* Are some outputs for lights ? (no space on JAMMA for it though) */ - switch (data) { + switch (data) + { case 0xee: machine().bookkeeping().coin_counter_w(1,1); machine().bookkeeping().coin_counter_w(1,0); break; /* Count slot B */ case 0xed: machine().bookkeeping().coin_counter_w(0,1); machine().bookkeeping().coin_counter_w(0,0); break; /* Count slot A */ /* The following are coin counts after coin-lock active (faulty coin-lock ?) */ @@ -233,24 +225,12 @@ WRITE8_MEMBER(toaplan1_state::toaplan1_coin_w) } } -WRITE16_MEMBER(toaplan1_state::samesame_coin_w) -{ - if (ACCESSING_BITS_0_7) - { - toaplan1_coin_w(space, offset, data & 0xff); - } - if (ACCESSING_BITS_8_15 && (data&0xff00)) - { - logerror("PC:%04x Writing unknown MSB data (%04x) to coin count/lockout port\n",m_maincpu->pcbase(),data); - } -} - -WRITE_LINE_MEMBER(toaplan1_state::toaplan1_reset_callback) +WRITE_LINE_MEMBER(toaplan1_state::reset_callback) { - toaplan1_reset_sound(); + reset_sound(); } -MACHINE_RESET_MEMBER(toaplan1_state,toaplan1) +void toaplan1_state::machine_reset() { m_intenable = 0; machine().bookkeeping().coin_lockout_global_w(0); @@ -259,37 +239,37 @@ MACHINE_RESET_MEMBER(toaplan1_state,toaplan1) /* zerowing, fireshrk, outzone */ MACHINE_RESET_MEMBER(toaplan1_state,zerowing) { - MACHINE_RESET_CALL_MEMBER(toaplan1); - m_maincpu->set_reset_callback(write_line_delegate(FUNC(toaplan1_state::toaplan1_reset_callback),this)); + machine_reset(); + m_maincpu->set_reset_callback(write_line_delegate(FUNC(toaplan1_state::reset_callback),this)); } -MACHINE_RESET_MEMBER(toaplan1_state,demonwld) +void toaplan1_demonwld_state::machine_reset() { - MACHINE_RESET_CALL_MEMBER(toaplan1); + toaplan1_state::machine_reset(); m_dsp_addr_w = 0; m_main_ram_seg = 0; m_dsp_execute = 0; } -MACHINE_RESET_MEMBER(toaplan1_state,vimana) -{ - MACHINE_RESET_CALL_MEMBER(toaplan1); - m_maincpu->set_reset_callback(write_line_delegate(FUNC(toaplan1_state::toaplan1_reset_callback),this)); -} - -void toaplan1_state::toaplan1_driver_savestate() +void toaplan1_state::machine_start() { save_item(NAME(m_intenable)); } -void toaplan1_state::demonwld_driver_savestate() +void toaplan1_demonwld_state::machine_start() { + toaplan1_state::machine_start(); save_item(NAME(m_dsp_on)); save_item(NAME(m_dsp_addr_w)); save_item(NAME(m_main_ram_seg)); save_item(NAME(m_dsp_bio)); save_item(NAME(m_dsp_execute)); - machine().save().register_postload(save_prepost_delegate(FUNC(toaplan1_state::demonwld_restore_dsp), this)); } +void toaplan1_samesame_state::machine_start() +{ + toaplan1_state::machine_start(); + save_item(NAME(m_to_mcu)); + save_item(NAME(m_cmdavailable)); +} diff --git a/src/mame/video/toaplan1.cpp b/src/mame/video/toaplan1.cpp index 4ef0d39aed4..7a1e58c029d 100644 --- a/src/mame/video/toaplan1.cpp +++ b/src/mame/video/toaplan1.cpp @@ -137,67 +137,20 @@ Abnormalities: ***************************************************************************/ -TILE_GET_INFO_MEMBER(toaplan1_state::get_pf1_tile_info) +template +TILE_GET_INFO_MEMBER(toaplan1_state::get_tile_info) { int color, tile_number, attrib; - tile_number = m_pf1_tilevram16[2*tile_index+1] & 0x7fff; - attrib = m_pf1_tilevram16[2*tile_index]; + tile_number = m_tilevram[Layer][2 * tile_index + 1] & 0x7fff; + attrib = m_tilevram[Layer][2 * tile_index]; color = attrib & 0x3f; SET_TILE_INFO_MEMBER(0, tile_number, color, 0); // "disabled" tiles are behind everything else - if (m_pf1_tilevram16[2*tile_index+1] & 0x8000) tileinfo.category = 16; - else tileinfo.category = (attrib & 0xf000) >> 12; -} - -TILE_GET_INFO_MEMBER(toaplan1_state::get_pf2_tile_info) -{ - int color, tile_number, attrib; - - tile_number = m_pf2_tilevram16[2*tile_index+1] & 0x7fff; - attrib = m_pf2_tilevram16[2*tile_index]; - color = attrib & 0x3f; - SET_TILE_INFO_MEMBER(0, - tile_number, - color, - 0); - // "disabled" tiles are behind everything else - if (m_pf2_tilevram16[2*tile_index+1] & 0x8000) tileinfo.category = 16; - else tileinfo.category = (attrib & 0xf000) >> 12; -} - -TILE_GET_INFO_MEMBER(toaplan1_state::get_pf3_tile_info) -{ - int color, tile_number, attrib; - - tile_number = m_pf3_tilevram16[2*tile_index+1] & 0x7fff; - attrib = m_pf3_tilevram16[2*tile_index]; - color = attrib & 0x3f; - SET_TILE_INFO_MEMBER(0, - tile_number, - color, - 0); - // "disabled" tiles are behind everything else - if (m_pf3_tilevram16[2*tile_index+1] & 0x8000) tileinfo.category = 16; - else tileinfo.category = (attrib & 0xf000) >> 12; -} - -TILE_GET_INFO_MEMBER(toaplan1_state::get_pf4_tile_info) -{ - int color, tile_number, attrib; - - tile_number = m_pf4_tilevram16[2*tile_index+1] & 0x7fff; - attrib = m_pf4_tilevram16[2*tile_index]; - color = attrib & 0x3f; - SET_TILE_INFO_MEMBER(0, - tile_number, - color, - 0); - // "disabled" tiles are behind everything else - if (m_pf4_tilevram16[2*tile_index+1] & 0x8000) tileinfo.category = 16; + if (m_tilevram[Layer][2 * tile_index + 1] & 0x8000) tileinfo.category = 16; else tileinfo.category = (attrib & 0xf000) >> 12; } @@ -207,62 +160,55 @@ TILE_GET_INFO_MEMBER(toaplan1_state::get_pf4_tile_info) ***************************************************************************/ -void toaplan1_state::toaplan1_create_tilemaps() +void toaplan1_state::create_tilemaps() { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_pf1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_pf2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_pf3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_pf3_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_pf4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_pf4_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_tile_info<2>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_tile_info<3>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_pf1_tilemap->set_transparent_pen(0); - m_pf2_tilemap->set_transparent_pen(0); - m_pf3_tilemap->set_transparent_pen(0); - m_pf4_tilemap->set_transparent_pen(0); + m_tilemap[0]->set_transparent_pen(0); + m_tilemap[1]->set_transparent_pen(0); + m_tilemap[2]->set_transparent_pen(0); + m_tilemap[3]->set_transparent_pen(0); } -void toaplan1_state::toaplan1_vram_alloc() +void toaplan1_state::vram_alloc() { - m_pf1_tilevram16 = make_unique_clear(TOAPLAN1_TILEVRAM_SIZE/2); - m_pf2_tilevram16 = make_unique_clear(TOAPLAN1_TILEVRAM_SIZE/2); - m_pf3_tilevram16 = make_unique_clear(TOAPLAN1_TILEVRAM_SIZE/2); - m_pf4_tilevram16 = make_unique_clear(TOAPLAN1_TILEVRAM_SIZE/2); - - save_pointer(NAME(m_pf1_tilevram16), TOAPLAN1_TILEVRAM_SIZE/2); - save_pointer(NAME(m_pf2_tilevram16), TOAPLAN1_TILEVRAM_SIZE/2); - save_pointer(NAME(m_pf3_tilevram16), TOAPLAN1_TILEVRAM_SIZE/2); - save_pointer(NAME(m_pf4_tilevram16), TOAPLAN1_TILEVRAM_SIZE/2); + for (int i = 0; i < 4; i++) + { + m_tilevram[i] = make_unique_clear(TOAPLAN1_TILEVRAM_SIZE / 2); + save_pointer(NAME(m_tilevram[i]), TOAPLAN1_TILEVRAM_SIZE / 2, i); + } #ifdef MAME_DEBUG - m_display_pf1 = 1; - m_display_pf2 = 1; - m_display_pf3 = 1; - m_display_pf4 = 1; + m_display_pf[0] = 1; + m_display_pf[1] = 1; + m_display_pf[2] = 1; + m_display_pf[3] = 1; m_displog = 0; #endif } -void toaplan1_state::toaplan1_spritevram_alloc() +void toaplan1_state::spritevram_alloc() { - m_spriteram.allocate(TOAPLAN1_SPRITERAM_SIZE/2); - m_buffered_spriteram = make_unique_clear(TOAPLAN1_SPRITERAM_SIZE/2); - m_spritesizeram16 = make_unique_clear(TOAPLAN1_SPRITESIZERAM_SIZE/2); - m_buffered_spritesizeram16 = make_unique_clear(TOAPLAN1_SPRITESIZERAM_SIZE/2); + m_spriteram.allocate(TOAPLAN1_SPRITERAM_SIZE / 2); + m_buffered_spriteram = make_unique_clear(TOAPLAN1_SPRITERAM_SIZE / 2); + m_spritesizeram = make_unique_clear(TOAPLAN1_SPRITESIZERAM_SIZE / 2); + m_buffered_spritesizeram = make_unique_clear(TOAPLAN1_SPRITESIZERAM_SIZE / 2); - save_pointer(NAME(m_buffered_spriteram), TOAPLAN1_SPRITERAM_SIZE/2); - save_pointer(NAME(m_spritesizeram16), TOAPLAN1_SPRITESIZERAM_SIZE/2); - save_pointer(NAME(m_buffered_spritesizeram16), TOAPLAN1_SPRITESIZERAM_SIZE/2); + save_pointer(NAME(m_buffered_spriteram), TOAPLAN1_SPRITERAM_SIZE / 2); + save_pointer(NAME(m_spritesizeram), TOAPLAN1_SPRITESIZERAM_SIZE / 2); + save_pointer(NAME(m_buffered_spritesizeram), TOAPLAN1_SPRITESIZERAM_SIZE / 2); } -void toaplan1_state::toaplan1_set_scrolls() +void toaplan1_state::set_scrolls() { - m_pf1_tilemap->set_scrollx(0, (m_pf1_scrollx >> 7) - m_tiles_offsetx); - m_pf2_tilemap->set_scrollx(0, (m_pf2_scrollx >> 7) - m_tiles_offsetx); - m_pf3_tilemap->set_scrollx(0, (m_pf3_scrollx >> 7) - m_tiles_offsetx); - m_pf4_tilemap->set_scrollx(0, (m_pf4_scrollx >> 7) - m_tiles_offsetx); - m_pf1_tilemap->set_scrolly(0, (m_pf1_scrolly >> 7) - m_tiles_offsety); - m_pf2_tilemap->set_scrolly(0, (m_pf2_scrolly >> 7) - m_tiles_offsety); - m_pf3_tilemap->set_scrolly(0, (m_pf3_scrolly >> 7) - m_tiles_offsety); - m_pf4_tilemap->set_scrolly(0, (m_pf4_scrolly >> 7) - m_tiles_offsety); + for (int i = 0; i < 4; i++) + { + m_tilemap[i]->set_scrollx(0, (m_scrollx[i] >> 7) - m_tiles_offsetx); + m_tilemap[i]->set_scrolly(0, (m_scrolly[i] >> 7) - m_tiles_offsety); + } } void toaplan1_state::register_common() @@ -270,14 +216,8 @@ void toaplan1_state::register_common() save_item(NAME(m_bcu_flipscreen)); save_item(NAME(m_fcu_flipscreen)); - save_item(NAME(m_pf1_scrollx)); - save_item(NAME(m_pf1_scrolly)); - save_item(NAME(m_pf2_scrollx)); - save_item(NAME(m_pf2_scrolly)); - save_item(NAME(m_pf3_scrollx)); - save_item(NAME(m_pf3_scrolly)); - save_item(NAME(m_pf4_scrollx)); - save_item(NAME(m_pf4_scrolly)); + save_item(NAME(m_scrollx)); + save_item(NAME(m_scrolly)); save_item(NAME(m_tiles_offsetx)); save_item(NAME(m_tiles_offsety)); @@ -286,25 +226,25 @@ void toaplan1_state::register_common() } -VIDEO_START_MEMBER(toaplan1_rallybik_state,rallybik) +void toaplan1_rallybik_state::video_start() { m_spritegen->alloc_sprite_bitmap(*m_screen); m_spritegen->gfx(0)->set_colorbase(64*16); - toaplan1_create_tilemaps(); - toaplan1_vram_alloc(); + create_tilemaps(); + vram_alloc(); - m_buffered_spriteram = make_unique_clear(m_spriteram.bytes()/2); - save_pointer(NAME(m_buffered_spriteram), m_spriteram.bytes()/2); + m_buffered_spriteram = make_unique_clear(m_spriteram.bytes() / 2); + save_pointer(NAME(m_buffered_spriteram), m_spriteram.bytes() / 2); - m_pf1_tilemap->set_scrolldx(-0x00d-6, -0x80+6); - m_pf2_tilemap->set_scrolldx(-0x00d-4, -0x80+4); - m_pf3_tilemap->set_scrolldx(-0x00d-2, -0x80+2); - m_pf4_tilemap->set_scrolldx(-0x00d-0, -0x80+0); - m_pf1_tilemap->set_scrolldy(-0x111, 0x8); - m_pf2_tilemap->set_scrolldy(-0x111, 0x8); - m_pf3_tilemap->set_scrolldy(-0x111, 0x8); - m_pf4_tilemap->set_scrolldy(-0x111, 0x8); + m_tilemap[0]->set_scrolldx(-0x00d - 6, -0x80 + 6); + m_tilemap[1]->set_scrolldx(-0x00d - 4, -0x80 + 4); + m_tilemap[2]->set_scrolldx(-0x00d - 2, -0x80 + 2); + m_tilemap[3]->set_scrolldx(-0x00d - 0, -0x80 + 0); + m_tilemap[0]->set_scrolldy(-0x111, 0x8); + m_tilemap[1]->set_scrolldy(-0x111, 0x8); + m_tilemap[2]->set_scrolldy(-0x111, 0x8); + m_tilemap[3]->set_scrolldy(-0x111, 0x8); m_bcu_flipscreen = -1; m_fcu_flipscreen = 0; @@ -312,20 +252,20 @@ VIDEO_START_MEMBER(toaplan1_rallybik_state,rallybik) register_common(); } -VIDEO_START_MEMBER(toaplan1_state,toaplan1) +void toaplan1_state::video_start() { - toaplan1_create_tilemaps(); - toaplan1_vram_alloc(); - toaplan1_spritevram_alloc(); + create_tilemaps(); + vram_alloc(); + spritevram_alloc(); - m_pf1_tilemap->set_scrolldx(-0x1ef-6, -0x11+6); - m_pf2_tilemap->set_scrolldx(-0x1ef-4, -0x11+4); - m_pf3_tilemap->set_scrolldx(-0x1ef-2, -0x11+2); - m_pf4_tilemap->set_scrolldx(-0x1ef-0, -0x11+0); - m_pf1_tilemap->set_scrolldy(-0x101, -0xff); - m_pf2_tilemap->set_scrolldy(-0x101, -0xff); - m_pf3_tilemap->set_scrolldy(-0x101, -0xff); - m_pf4_tilemap->set_scrolldy(-0x101, -0xff); + m_tilemap[0]->set_scrolldx(-0x1ef - 6, -0x11 + 6); + m_tilemap[1]->set_scrolldx(-0x1ef - 4, -0x11 + 4); + m_tilemap[2]->set_scrolldx(-0x1ef - 2, -0x11 + 2); + m_tilemap[3]->set_scrolldx(-0x1ef - 0, -0x11 + 0); + m_tilemap[0]->set_scrolldy(-0x101, -0xff); + m_tilemap[1]->set_scrolldy(-0x101, -0xff); + m_tilemap[2]->set_scrolldy(-0x101, -0xff); + m_tilemap[3]->set_scrolldy(-0x101, -0xff); m_bcu_flipscreen = -1; m_fcu_flipscreen = 0; @@ -340,14 +280,14 @@ VIDEO_START_MEMBER(toaplan1_state,toaplan1) ***************************************************************************/ -READ16_MEMBER(toaplan1_state::toaplan1_frame_done_r) +u16 toaplan1_state::frame_done_r() { return m_screen->vblank(); } -WRITE16_MEMBER(toaplan1_state::toaplan1_tile_offsets_w) +WRITE16_MEMBER(toaplan1_state::tile_offsets_w) { - if ( offset == 0 ) + if (offset == 0) { COMBINE_DATA(&m_tiles_offsetx); logerror("Tiles_offsetx now = %08x\n", m_tiles_offsetx); @@ -357,49 +297,46 @@ WRITE16_MEMBER(toaplan1_state::toaplan1_tile_offsets_w) COMBINE_DATA(&m_tiles_offsety); logerror("Tiles_offsety now = %08x\n", m_tiles_offsety); } - toaplan1_set_scrolls(); + set_scrolls(); } -WRITE16_MEMBER(toaplan1_state::toaplan1_bcu_flipscreen_w) +void toaplan1_state::bcu_flipscreen_w(u8 data) { - if (ACCESSING_BITS_0_7 && (data != m_bcu_flipscreen)) + if (data != m_bcu_flipscreen) { - logerror("Setting BCU controller flipscreen port to %04x\n",data); + logerror("Setting BCU controller flipscreen port to %02x\n",data); m_bcu_flipscreen = data & 0x01; /* 0x0001 = flip, 0x0000 = no flip */ machine().tilemap().set_flip_all((data ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0)); - toaplan1_set_scrolls(); + set_scrolls(); } } -WRITE16_MEMBER(toaplan1_state::toaplan1_fcu_flipscreen_w) +void toaplan1_state::fcu_flipscreen_w(u8 data) { - if (ACCESSING_BITS_8_15) - { - logerror("Setting FCU controller flipscreen port to %04x\n",data); - m_fcu_flipscreen = data & 0x8000; /* 0x8000 = flip, 0x0000 = no flip */ - } + logerror("Setting FCU controller flipscreen port to %02x\n",data); + m_fcu_flipscreen = data & 0x80; /* 0x80 = flip, 0x00 = no flip */ } -READ16_MEMBER(toaplan1_state::toaplan1_spriteram_offs_r)/// this aint really needed ? +u16 toaplan1_state::spriteram_offs_r() // this aint really needed ? { return m_spriteram_offs; } -WRITE16_MEMBER(toaplan1_state::toaplan1_spriteram_offs_w) +void toaplan1_state::spriteram_offs_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_spriteram_offs); } -WRITE16_MEMBER(toaplan1_state::toaplan1_bgpalette_w) +void toaplan1_state::bgpalette_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_bgpaletteram[offset]); data = m_bgpaletteram[offset]; m_palette->set_pen_color(offset, pal5bit(data>>0), pal5bit(data>>5), pal5bit(data>>10)); } -WRITE16_MEMBER(toaplan1_state::toaplan1_fgpalette_w) +void toaplan1_state::fgpalette_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_fgpaletteram[offset]); data = m_fgpaletteram[offset]; @@ -407,17 +344,17 @@ WRITE16_MEMBER(toaplan1_state::toaplan1_fgpalette_w) } -READ16_MEMBER(toaplan1_state::toaplan1_spriteram16_r) +u16 toaplan1_state::spriteram_r() { - return m_spriteram[m_spriteram_offs & ((TOAPLAN1_SPRITERAM_SIZE/2)-1)]; + return m_spriteram[m_spriteram_offs & ((TOAPLAN1_SPRITERAM_SIZE / 2)-1)]; } -WRITE16_MEMBER(toaplan1_state::toaplan1_spriteram16_w) +void toaplan1_state::spriteram_w(offs_t offset, u16 data, u16 mem_mask) { - COMBINE_DATA(&m_spriteram[m_spriteram_offs & ((TOAPLAN1_SPRITERAM_SIZE/2)-1)]); + COMBINE_DATA(&m_spriteram[m_spriteram_offs & ((TOAPLAN1_SPRITERAM_SIZE / 2)-1)]); #ifdef MAME_DEBUG - if (m_spriteram_offs >= (TOAPLAN1_SPRITERAM_SIZE/2)) + if (m_spriteram_offs >= (TOAPLAN1_SPRITERAM_SIZE / 2)) { logerror("Sprite_RAM_word_w, %08x out of range !\n", m_spriteram_offs); return; @@ -427,17 +364,17 @@ WRITE16_MEMBER(toaplan1_state::toaplan1_spriteram16_w) m_spriteram_offs++; } -READ16_MEMBER(toaplan1_state::toaplan1_spritesizeram16_r) +u16 toaplan1_state::spritesizeram_r() { - return m_spritesizeram16[m_spriteram_offs & ((TOAPLAN1_SPRITESIZERAM_SIZE/2)-1)]; + return m_spritesizeram[m_spriteram_offs & ((TOAPLAN1_SPRITESIZERAM_SIZE / 2)-1)]; } -WRITE16_MEMBER(toaplan1_state::toaplan1_spritesizeram16_w) +void toaplan1_state::spritesizeram_w(offs_t offset, u16 data, u16 mem_mask) { - COMBINE_DATA(&m_spritesizeram16[m_spriteram_offs & ((TOAPLAN1_SPRITESIZERAM_SIZE/2)-1)]); + COMBINE_DATA(&m_spritesizeram[m_spriteram_offs & ((TOAPLAN1_SPRITESIZERAM_SIZE / 2)-1)]); #ifdef MAME_DEBUG - if (m_spriteram_offs >= (TOAPLAN1_SPRITESIZERAM_SIZE/2)) + if (m_spriteram_offs >= (TOAPLAN1_SPRITESIZERAM_SIZE / 2)) { logerror("Sprite_Size_RAM_word_w, %08x out of range !\n", m_spriteram_offs); return; @@ -449,17 +386,17 @@ WRITE16_MEMBER(toaplan1_state::toaplan1_spritesizeram16_w) -WRITE16_MEMBER(toaplan1_state::toaplan1_bcu_control_w) +void toaplan1_state::bcu_control_w(offs_t offset, u16 data) { logerror("BCU tile controller register:%02x now = %04x\n",offset,data); } -READ16_MEMBER(toaplan1_state::toaplan1_tileram_offs_r) +u16 toaplan1_state::tileram_offs_r() { return m_pf_voffs; } -WRITE16_MEMBER(toaplan1_state::toaplan1_tileram_offs_w) +void toaplan1_state::tileram_offs_w(offs_t offset, u16 data, u16 mem_mask) { if (data >= 0x4000) logerror("Hmmm, unknown video layer being selected (%08x)\n",data); @@ -467,28 +404,21 @@ WRITE16_MEMBER(toaplan1_state::toaplan1_tileram_offs_w) } -READ16_MEMBER(toaplan1_state::toaplan1_tileram16_r) +u16 toaplan1_state::tileram_r(offs_t offset) { + const int layer = m_pf_voffs >> 12; + const int offs = m_pf_voffs & 0xfff; offs_t vram_offset; - uint16_t video_data = 0; + u16 video_data = 0; - switch (m_pf_voffs & 0xf000) /* Locate Layer (PlayField) */ + switch (layer) /* Locate Layer (PlayField) */ { - case 0x0000: - vram_offset = ((m_pf_voffs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE/2)-1); - video_data = m_pf1_tilevram16[vram_offset]; - break; - case 0x1000: - vram_offset = ((m_pf_voffs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE/2)-1); - video_data = m_pf2_tilevram16[vram_offset]; - break; - case 0x2000: - vram_offset = ((m_pf_voffs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE/2)-1); - video_data = m_pf3_tilevram16[vram_offset]; - break; - case 0x3000: - vram_offset = ((m_pf_voffs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE/2)-1); - video_data = m_pf4_tilevram16[vram_offset]; + case 0x0: + case 0x1: + case 0x2: + case 0x3: + vram_offset = ((offs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE / 2)-1); + video_data = m_tilevram[layer][vram_offset]; break; default: logerror("Hmmm, reading %04x from unknown playfield layer address %06x Offset:%01x !!!\n", video_data, m_pf_voffs, offset); @@ -498,9 +428,9 @@ READ16_MEMBER(toaplan1_state::toaplan1_tileram16_r) return video_data; } -READ16_MEMBER(toaplan1_rallybik_state::rallybik_tileram16_r) +u16 toaplan1_rallybik_state::tileram_r(offs_t offset) { - uint16_t data = toaplan1_tileram16_r(space, offset, mem_mask); + u16 data = toaplan1_state::tileram_r(offset); if (offset == 0) /* some bit lines may be stuck to others */ { @@ -510,31 +440,21 @@ READ16_MEMBER(toaplan1_rallybik_state::rallybik_tileram16_r) return data; } -WRITE16_MEMBER(toaplan1_state::toaplan1_tileram16_w) +void toaplan1_state::tileram_w(offs_t offset, u16 data, u16 mem_mask) { + const int layer = m_pf_voffs >> 12; + const int offs = m_pf_voffs & 0xfff; offs_t vram_offset; - switch (m_pf_voffs & 0xf000) /* Locate Layer (PlayField) */ + switch (layer) /* Locate Layer (PlayField) */ { - case 0x0000: - vram_offset = ((m_pf_voffs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE/2)-1); - COMBINE_DATA(&m_pf1_tilevram16[vram_offset]); - m_pf1_tilemap->mark_tile_dirty(vram_offset/2); - break; - case 0x1000: - vram_offset = ((m_pf_voffs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE/2)-1); - COMBINE_DATA(&m_pf2_tilevram16[vram_offset]); - m_pf2_tilemap->mark_tile_dirty(vram_offset/2); - break; - case 0x2000: - vram_offset = ((m_pf_voffs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE/2)-1); - COMBINE_DATA(&m_pf3_tilevram16[vram_offset]); - m_pf3_tilemap->mark_tile_dirty(vram_offset/2); - break; - case 0x3000: - vram_offset = ((m_pf_voffs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE/2)-1); - COMBINE_DATA(&m_pf4_tilevram16[vram_offset]); - m_pf4_tilemap->mark_tile_dirty(vram_offset/2); + case 0x0: + case 0x1: + case 0x2: + case 0x3: + vram_offset = ((offs * 2) + offset) & ((TOAPLAN1_TILEVRAM_SIZE / 2)-1); + COMBINE_DATA(&m_tilevram[layer][vram_offset]); + m_tilemap[layer]->mark_tile_dirty(vram_offset / 2); break; default: logerror("Hmmm, writing %04x to unknown playfield layer address %06x Offset:%01x\n", data, m_pf_voffs, offset); @@ -544,56 +464,48 @@ WRITE16_MEMBER(toaplan1_state::toaplan1_tileram16_w) -READ16_MEMBER(toaplan1_state::toaplan1_scroll_regs_r) +u16 toaplan1_state::scroll_regs_r(offs_t offset) { - uint16_t scroll = 0; + const int layer = (offset >> 1); + u16 scroll = 0; - switch(offset) + switch (offset) { - case 00: scroll = m_pf1_scrollx; break; - case 01: scroll = m_pf1_scrolly; break; - case 02: scroll = m_pf2_scrollx; break; - case 03: scroll = m_pf2_scrolly; break; - case 04: scroll = m_pf3_scrollx; break; - case 05: scroll = m_pf3_scrolly; break; - case 06: scroll = m_pf4_scrollx; break; - case 07: scroll = m_pf4_scrolly; break; - default: logerror("Hmmm, reading unknown video scroll register (%08x) !!!\n",offset); + case 00: + case 02: + case 04: + case 06: scroll = m_scrollx[layer]; break; + case 01: + case 03: + case 05: + case 07: scroll = m_scrolly[layer]; break; + default: logerror("Hmmm, reading unknown video scroll register (%02x) !!!\n",offset); break; } return scroll; } -WRITE16_MEMBER(toaplan1_state::toaplan1_scroll_regs_w) +void toaplan1_state::scroll_regs_w(offs_t offset, u16 data, u16 mem_mask) { - switch(offset) + const int layer = (offset >> 1); + switch (offset) { - case 00: COMBINE_DATA(&m_pf1_scrollx); /* 1D3h */ - m_pf1_tilemap->set_scrollx(0, (m_pf1_scrollx >> 7) - m_tiles_offsetx); - break; - case 01: COMBINE_DATA(&m_pf1_scrolly); /* 1EBh */ - m_pf1_tilemap->set_scrolly(0, (m_pf1_scrolly >> 7) - m_tiles_offsety); - break; - case 02: COMBINE_DATA(&m_pf2_scrollx); /* 1D5h */ - m_pf2_tilemap->set_scrollx(0, (m_pf2_scrollx >> 7) - m_tiles_offsetx); + case 00: /* 1D3h */ + case 02: /* 1D5h */ + case 04: /* 1D7h */ + case 06: /* 1D9h */ + COMBINE_DATA(&m_scrollx[layer]); + m_tilemap[layer]->set_scrollx(0, (m_scrollx[layer] >> 7) - m_tiles_offsetx); break; - case 03: COMBINE_DATA(&m_pf2_scrolly); /* 1EBh */ - m_pf2_tilemap->set_scrolly(0, (m_pf2_scrolly >> 7) - m_tiles_offsety); + case 01: /* 1EBh */ + case 03: /* 1EBh */ + case 05: /* 1EBh */ + case 07: /* 1EBh */ + COMBINE_DATA(&m_scrolly[layer]); + m_tilemap[layer]->set_scrolly(0, (m_scrolly[layer] >> 7) - m_tiles_offsety); break; - case 04: COMBINE_DATA(&m_pf3_scrollx); /* 1D7h */ - m_pf3_tilemap->set_scrollx(0, (m_pf3_scrollx >> 7) - m_tiles_offsetx); - break; - case 05: COMBINE_DATA(&m_pf3_scrolly); /* 1EBh */ - m_pf3_tilemap->set_scrolly(0, (m_pf3_scrolly >> 7) - m_tiles_offsety); - break; - case 06: COMBINE_DATA(&m_pf4_scrollx); /* 1D9h */ - m_pf4_tilemap->set_scrollx(0, (m_pf4_scrollx >> 7) - m_tiles_offsetx); - break; - case 07: COMBINE_DATA(&m_pf4_scrolly); /* 1EBh */ - m_pf4_tilemap->set_scrolly(0, (m_pf4_scrolly >> 7) - m_tiles_offsety); - break; - default: logerror("Hmmm, writing %08x to unknown video scroll register (%08x) !!!\n",data ,offset); + default: logerror("Hmmm, writing %04x to unknown video scroll register (%02x) !!!\n",data ,offset); break; } } @@ -601,37 +513,37 @@ WRITE16_MEMBER(toaplan1_state::toaplan1_scroll_regs_w) -void toaplan1_state::toaplan1_log_vram() +void toaplan1_state::log_vram() { #ifdef MAME_DEBUG - if ( machine().input().code_pressed(KEYCODE_M) ) + if (machine().input().code_pressed(KEYCODE_M)) { - uint16_t *spriteram16 = m_spriteram; - uint16_t *buffered_spriteram16 = m_buffered_spriteram.get(); + u16 *spriteram = m_spriteram; + u16 *buffered_spriteram = m_buffered_spriteram.get(); offs_t sprite_voffs; while (machine().input().code_pressed(KEYCODE_M)) ; - if (m_spritesizeram16) /* FCU controller */ + if (m_spritesizeram) /* FCU controller */ { int schar,sattr,sxpos,sypos,bschar,bsattr,bsxpos,bsypos; - uint16_t *size = (uint16_t *)(m_spritesizeram16.get()); - uint16_t *bsize = (uint16_t *)(m_buffered_spritesizeram16.get()); + u16 *size = (u16 *)(m_spritesizeram.get()); + u16 *bsize = (u16 *)(m_buffered_spritesizeram.get()); logerror("Scrolls PF1-X PF1-Y PF2-X PF2-Y PF3-X PF3-Y PF4-X PF4-Y\n"); logerror("------> #%04x #%04x #%04x #%04x #%04x #%04x #%04x #%04x\n", - m_pf1_scrollx, m_pf1_scrolly, m_pf2_scrollx, m_pf2_scrolly, m_pf3_scrollx, m_pf3_scrolly, m_pf4_scrollx, m_pf4_scrolly); - for ( sprite_voffs = 0; sprite_voffs < m_spriteram.bytes()/2; sprite_voffs += 4 ) + m_scrollx[0], m_scrolly[0], m_scrollx[1], m_scrolly[1], m_scrollx[2], m_scrolly[2], m_scrollx[3], m_scrolly[3]); + for (sprite_voffs = 0; sprite_voffs < m_spriteram.bytes() / 2; sprite_voffs += 4) { - bschar = buffered_spriteram16[sprite_voffs]; - bsattr = buffered_spriteram16[sprite_voffs + 1]; - bsxpos = buffered_spriteram16[sprite_voffs + 2]; - bsypos = buffered_spriteram16[sprite_voffs + 3]; - schar = spriteram16[sprite_voffs]; - sattr = spriteram16[sprite_voffs + 1]; - sxpos = spriteram16[sprite_voffs + 2]; - sypos = spriteram16[sprite_voffs + 3]; + bschar = buffered_spriteram[sprite_voffs]; + bsattr = buffered_spriteram[sprite_voffs + 1]; + bsxpos = buffered_spriteram[sprite_voffs + 2]; + bsypos = buffered_spriteram[sprite_voffs + 3]; + schar = spriteram[sprite_voffs]; + sattr = spriteram[sprite_voffs + 1]; + sxpos = spriteram[sprite_voffs + 2]; + sypos = spriteram[sprite_voffs + 3]; logerror("$(%04x) Tile-Attr-Xpos-Ypos Now:%04x %04x %04x.%01x %04x.%01x nxt:%04x %04x %04x.%01x %04x.%01x\n", sprite_voffs, - schar, sattr, sxpos, size[( sattr>>6)&0x3f]&0xf, sypos,( size[( sattr>>6)&0x3f]>>4)&0xf, - bschar,bsattr,bsxpos,bsize[(bsattr>>6)&0x3f]&0xf,bsypos,(bsize[(bsattr>>6)&0x3f]>>4)&0xf); + schar, sattr, sxpos, size[( sattr >> 6) & 0x3f] & 0xf, sypos,( size[( sattr >> 6) & 0x3f] >> 4) & 0xf, + bschar,bsattr,bsxpos,bsize[(bsattr >> 6) & 0x3f] & 0xf,bsypos,(bsize[(bsattr >> 6) & 0x3f] >> 4) & 0xf); } } else /* SCU controller */ @@ -639,17 +551,17 @@ void toaplan1_state::toaplan1_log_vram() int schar,sattr,sxpos,sypos,bschar,bsattr,bsxpos,bsypos; logerror("Scrolls PF1-X PF1-Y PF2-X PF2-Y PF3-X PF3-Y PF4-X PF4-Y\n"); logerror("------> #%04x #%04x #%04x #%04x #%04x #%04x #%04x #%04x\n", - m_pf1_scrollx, m_pf1_scrolly, m_pf2_scrollx, m_pf2_scrolly, m_pf3_scrollx, m_pf3_scrolly, m_pf4_scrollx, m_pf4_scrolly); - for ( sprite_voffs = 0; sprite_voffs < m_spriteram.bytes()/2; sprite_voffs += 4 ) + m_scrollx[0], m_scrolly[0], m_scrollx[1], m_scrolly[1], m_scrollx[2], m_scrolly[2], m_scrollx[3], m_scrolly[3]); + for (sprite_voffs = 0; sprite_voffs < m_spriteram.bytes() / 2; sprite_voffs += 4) { - bschar = buffered_spriteram16[sprite_voffs]; - bsattr = buffered_spriteram16[sprite_voffs + 1]; - bsypos = buffered_spriteram16[sprite_voffs + 2]; - bsxpos = buffered_spriteram16[sprite_voffs + 3]; - schar = spriteram16[sprite_voffs]; - sattr = spriteram16[sprite_voffs + 1]; - sypos = spriteram16[sprite_voffs + 2]; - sxpos = spriteram16[sprite_voffs + 3]; + bschar = buffered_spriteram[sprite_voffs]; + bsattr = buffered_spriteram[sprite_voffs + 1]; + bsypos = buffered_spriteram[sprite_voffs + 2]; + bsxpos = buffered_spriteram[sprite_voffs + 3]; + schar = spriteram[sprite_voffs]; + sattr = spriteram[sprite_voffs + 1]; + sypos = spriteram[sprite_voffs + 2]; + sxpos = spriteram[sprite_voffs + 3]; logerror("$(%04x) Tile-Attr-Xpos-Ypos Now:%04x %04x %04x %04x nxt:%04x %04x %04x %04x\n", sprite_voffs, schar, sattr, sxpos, sypos, bschar,bsattr,bsxpos, bsypos); @@ -657,59 +569,59 @@ void toaplan1_state::toaplan1_log_vram() } } - if ( machine().input().code_pressed(KEYCODE_SLASH) ) + if (machine().input().code_pressed(KEYCODE_SLASH)) { - uint16_t *size = (uint16_t *)(m_spritesizeram16.get()); - uint16_t *bsize = (uint16_t *)(m_buffered_spritesizeram16.get()); + u16 *size = (u16 *)(m_spritesizeram.get()); + u16 *bsize = (u16 *)(m_buffered_spritesizeram.get()); offs_t offs; while (machine().input().code_pressed(KEYCODE_SLASH)) ; - if (m_spritesizeram16) /* FCU controller */ + if (m_spritesizeram) /* FCU controller */ { logerror("Scrolls PF1-X PF1-Y PF2-X PF2-Y PF3-X PF3-Y PF4-X PF4-Y\n"); logerror("------> #%04x #%04x #%04x #%04x #%04x #%04x #%04x #%04x\n", - m_pf1_scrollx, m_pf1_scrolly, m_pf2_scrollx, m_pf2_scrolly, m_pf3_scrollx, m_pf3_scrolly, m_pf4_scrollx, m_pf4_scrolly); - for ( offs = 0; offs < (TOAPLAN1_SPRITESIZERAM_SIZE/2); offs +=4 ) + m_scrollx[0], m_scrolly[0], m_scrollx[1], m_scrolly[1], m_scrollx[2], m_scrolly[2], m_scrollx[3], m_scrolly[3]); + for (offs = 0; offs < (TOAPLAN1_SPRITESIZERAM_SIZE / 2); offs += 4) { logerror("SizeOffs:%04x now:%04x %04x %04x %04x next: %04x %04x %04x %04x\n", offs, - bsize[offs+0], bsize[offs+1], - bsize[offs+2], bsize[offs+3], - size[offs+0], size[offs+1], - size[offs+2], size[offs+3]); + bsize[offs + 0], bsize[offs + 1], + bsize[offs + 2], bsize[offs + 3], + size[offs + 0], size[offs + 1], + size[offs + 2], size[offs + 3]); } } } - if ( machine().input().code_pressed(KEYCODE_N) ) + if (machine().input().code_pressed(KEYCODE_N)) { offs_t tile_voffs; - int tchar[5], tattr[5]; + int tchar[4], tattr[4]; while (machine().input().code_pressed(KEYCODE_N)) ; /* BCU controller */ logerror("Scrolls PF1-X PF1-Y PF2-X PF2-Y PF3-X PF3-Y PF4-X PF4-Y\n"); logerror("------> #%04x #%04x #%04x #%04x #%04x #%04x #%04x #%04x\n", - m_pf1_scrollx, m_pf1_scrolly, m_pf2_scrollx, m_pf2_scrolly, m_pf3_scrollx, m_pf3_scrolly, m_pf4_scrollx, m_pf4_scrolly); - for ( tile_voffs = 0; tile_voffs < (TOAPLAN1_TILEVRAM_SIZE/2); tile_voffs += 2 ) + m_scrollx[0], m_scrolly[0], m_scrollx[1], m_scrolly[1], m_scrollx[2], m_scrolly[2], m_scrollx[3], m_scrolly[3]); + for (tile_voffs = 0; tile_voffs < (TOAPLAN1_TILEVRAM_SIZE / 2); tile_voffs += 2) { - tchar[1] = m_pf1_tilevram16[tile_voffs + 1]; - tattr[1] = m_pf1_tilevram16[tile_voffs]; - tchar[2] = m_pf2_tilevram16[tile_voffs + 1]; - tattr[2] = m_pf2_tilevram16[tile_voffs]; - tchar[3] = m_pf3_tilevram16[tile_voffs + 1]; - tattr[3] = m_pf3_tilevram16[tile_voffs]; - tchar[4] = m_pf4_tilevram16[tile_voffs + 1]; - tattr[4] = m_pf4_tilevram16[tile_voffs]; + tchar[0] = m_tilevram[0][tile_voffs + 1]; + tattr[0] = m_tilevram[0][tile_voffs]; + tchar[1] = m_tilevram[1][tile_voffs + 1]; + tattr[1] = m_tilevram[1][tile_voffs]; + tchar[2] = m_tilevram[2][tile_voffs + 1]; + tattr[2] = m_tilevram[2][tile_voffs]; + tchar[3] = m_tilevram[3][tile_voffs + 1]; + tattr[3] = m_tilevram[3][tile_voffs]; // logerror("PF3 offs:%04x Tile:%04x Attr:%04x\n", tile_voffs, tchar, tattr); logerror("$(%04x) Attr-Tile PF1:%04x-%04x PF2:%04x-%04x PF3:%04x-%04x PF4:%04x-%04x\n", tile_voffs, - tattr[1], tchar[1], tattr[2], tchar[2], - tattr[3], tchar[3], tattr[4], tchar[4]); + tattr[0], tchar[0], tattr[1], tchar[1], + tattr[2], tchar[2], tattr[3], tchar[3]); } } - if ( machine().input().code_pressed(KEYCODE_W) ) + if (machine().input().code_pressed(KEYCODE_W)) { while (machine().input().code_pressed(KEYCODE_W)) ; logerror("Mark here\n"); } - if ( machine().input().code_pressed(KEYCODE_E) ) + if (machine().input().code_pressed(KEYCODE_E)) { while (machine().input().code_pressed(KEYCODE_E)) ; m_displog += 1; @@ -719,35 +631,35 @@ void toaplan1_state::toaplan1_log_vram() { logerror("Scrolls PF1-X PF1-Y PF2-X PF2-Y PF3-X PF3-Y PF4-X PF4-Y\n"); logerror("------> #%04x #%04x #%04x #%04x #%04x #%04x #%04x #%04x\n", - m_pf1_scrollx, m_pf1_scrolly, m_pf2_scrollx, m_pf2_scrolly, m_pf3_scrollx, m_pf3_scrolly, m_pf4_scrollx, m_pf4_scrolly); + m_scrollx[0], m_scrolly[0], m_scrollx[1], m_scrolly[1], m_scrollx[2], m_scrolly[2], m_scrollx[3], m_scrolly[3]); } - if ( machine().input().code_pressed(KEYCODE_L) ) /* Turn Playfield 4 on/off */ + if (machine().input().code_pressed(KEYCODE_L)) /* Turn Playfield 4 on/off */ { while (machine().input().code_pressed(KEYCODE_L)) ; - m_display_pf4 += 1; - m_display_pf4 &= 1; - m_pf4_tilemap->enable(m_display_pf4); + m_display_pf[3] += 1; + m_display_pf[3] &= 1; + m_tilemap[3]->enable(m_display_pf[3]); } - if ( machine().input().code_pressed(KEYCODE_K) ) /* Turn Playfield 3 on/off */ + if (machine().input().code_pressed(KEYCODE_K)) /* Turn Playfield 3 on/off */ { while (machine().input().code_pressed(KEYCODE_K)) ; - m_display_pf3 += 1; - m_display_pf3 &= 1; - m_pf3_tilemap->enable(m_display_pf3); + m_display_pf[2] += 1; + m_display_pf[2] &= 1; + m_tilemap[2]->enable(m_display_pf[2]); } - if ( machine().input().code_pressed(KEYCODE_J) ) /* Turn Playfield 2 on/off */ + if (machine().input().code_pressed(KEYCODE_J)) /* Turn Playfield 2 on/off */ { while (machine().input().code_pressed(KEYCODE_J)) ; - m_display_pf2 += 1; - m_display_pf2 &= 1; - m_pf2_tilemap->enable(m_display_pf2); + m_display_pf[1] += 1; + m_display_pf[1] &= 1; + m_tilemap[1]->enable(m_display_pf[1]); } - if ( machine().input().code_pressed(KEYCODE_H) ) /* Turn Playfield 1 on/off */ + if (machine().input().code_pressed(KEYCODE_H)) /* Turn Playfield 1 on/off */ { while (machine().input().code_pressed(KEYCODE_H)) ; - m_display_pf1 += 1; - m_display_pf1 &= 1; - m_pf1_tilemap->enable(m_display_pf1); + m_display_pf[0] += 1; + m_display_pf[0] &= 1; + m_tilemap[0]->enable(m_display_pf[0]); } #endif } @@ -759,31 +671,31 @@ void toaplan1_state::toaplan1_log_vram() ***************************************************************************/ // custom function to draw a single sprite. needed to keep correct sprites - sprites and sprites - tilemaps priorities -static void toaplan1_draw_sprite_custom(screen_device &screen, bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx, - uint32_t code,uint32_t color,int flipx,int flipy,int sx,int sy, +static void draw_sprite_custom(screen_device &screen, bitmap_ind16 &dest_bmp, const rectangle &clip, gfx_element *gfx, + u32 code, u32 color, int flipx, int flipy, int sx, int sy, int priority) { - int pal_base = gfx->colorbase() + gfx->granularity() * (color % gfx->colors()); - const uint8_t *source_base = gfx->get_data(code % gfx->elements()); + const u32 pal_base = gfx->colorbase() + gfx->granularity() * (color % gfx->colors()); + const u8 *source_base = gfx->get_data(code % gfx->elements()); bitmap_ind8 &priority_bitmap = screen.priority(); - int sprite_screen_height = ((1<<16)*gfx->height()+0x8000)>>16; - int sprite_screen_width = ((1<<16)*gfx->width()+0x8000)>>16; + const int sprite_screen_height = ((1 << 16) * gfx->height() + 0x8000) >> 16; + const int sprite_screen_width = ((1 << 16) * gfx->width() + 0x8000) >> 16; if (sprite_screen_width && sprite_screen_height) { /* compute sprite increment per screen pixel */ - int dx = (gfx->width()<<16)/sprite_screen_width; - int dy = (gfx->height()<<16)/sprite_screen_height; + int dx = (gfx->width() << 16) / sprite_screen_width; + int dy = (gfx->height() << 16) / sprite_screen_height; - int ex = sx+sprite_screen_width; - int ey = sy+sprite_screen_height; + int ex = sx + sprite_screen_width; + int ey = sy + sprite_screen_height; int x_index_base; int y_index; - if( flipx ) + if (flipx) { - x_index_base = (sprite_screen_width-1)*dx; + x_index_base = (sprite_screen_width - 1) * dx; dx = -dx; } else @@ -791,9 +703,9 @@ static void toaplan1_draw_sprite_custom(screen_device &screen, bitmap_ind16 &des x_index_base = 0; } - if( flipy ) + if (flipy) { - y_index = (sprite_screen_height-1)*dy; + y_index = (sprite_screen_height - 1) * dy; dy = -dy; } else @@ -801,48 +713,46 @@ static void toaplan1_draw_sprite_custom(screen_device &screen, bitmap_ind16 &des y_index = 0; } - if( sx < clip.min_x) + if (sx < clip.min_x) { /* clip left */ - int pixels = clip.min_x-sx; + int pixels = clip.min_x - sx; sx += pixels; - x_index_base += pixels*dx; + x_index_base += pixels * dx; } - if( sy < clip.min_y ) + if (sy < clip.min_y) { /* clip top */ - int pixels = clip.min_y-sy; + int pixels = clip.min_y - sy; sy += pixels; - y_index += pixels*dy; + y_index += pixels * dy; } /* NS 980211 - fixed incorrect clipping */ - if( ex > clip.max_x+1 ) + if (ex > clip.max_x + 1) { /* clip right */ - int pixels = ex-clip.max_x-1; + int pixels = ex-clip.max_x - 1; ex -= pixels; } - if( ey > clip.max_y+1 ) + if (ey > clip.max_y + 1) { /* clip bottom */ - int pixels = ey-clip.max_y-1; + int pixels = ey-clip.max_y - 1; ey -= pixels; } - if( ex>sx ) + if (ex > sx) { /* skip if inner loop doesn't draw anything */ - int y; - - for( y=sy; y>16) * gfx->rowbytes(); - uint16_t *dest = &dest_bmp.pix16(y); - uint8_t *pri = &priority_bitmap.pix8(y); + const u8 *source = source_base + (y_index >> 16) * gfx->rowbytes(); + u16 *dest = &dest_bmp.pix16(y); + u8 *pri = &priority_bitmap.pix8(y); - int x, x_index = x_index_base; - for( x=sx; x>16]; - if( c != 0 ) + const u8 c = source[x_index >> 16]; + if (c != 0) { if (pri[x] < priority) - dest[x] = pal_base+c; + dest[x] = pal_base + c; pri[x] = 0xff; // mark it "already drawn" } x_index += dx; @@ -855,35 +765,32 @@ static void toaplan1_draw_sprite_custom(screen_device &screen, bitmap_ind16 &des } -void toaplan1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ) +void toaplan1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - uint16_t *source = (uint16_t *)m_buffered_spriteram.get(); - uint16_t *size = (uint16_t *)m_buffered_spritesizeram16.get(); + u16 *source = (u16 *)m_buffered_spriteram.get(); + u16 *size = (u16 *)m_buffered_spritesizeram.get(); int fcu_flipscreen = m_fcu_flipscreen; - int offs; - for (offs = m_spriteram.bytes()/2 - 4; offs >= 0; offs -= 4) + for (int offs = m_spriteram.bytes() / 2 - 4; offs >= 0; offs -= 4) { if (!(source[offs] & 0x8000)) { - int attrib, sprite, color, priority, sx, sy; - int sprite_sizex, sprite_sizey, dim_x, dim_y, sx_base, sy_base; - int sizeram_ptr; + int sx, sy; - attrib = source[offs+1]; - priority = (attrib & 0xf000) >> 12; + const u16 attrib = source[offs + 1]; + const u8 priority = (attrib & 0xf000) >> 12; - sprite = source[offs] & 0x7fff; - color = attrib & 0x3f; + u32 sprite = source[offs] & 0x7fff; + u32 color = attrib & 0x3f; /****** find sprite dimension ******/ - sizeram_ptr = (attrib >> 6) & 0x3f; - sprite_sizex = ( size[sizeram_ptr] & 0x0f) * 8; - sprite_sizey = ((size[sizeram_ptr] >> 4) & 0x0f) * 8; + const u32 sizeram_ptr = (attrib >> 6) & 0x3f; + const u32 sprite_sizex = ( size[sizeram_ptr] & 0x0f) * 8; + const u32 sprite_sizey = ((size[sizeram_ptr] >> 4) & 0x0f) * 8; /****** find position to display sprite ******/ - sx_base = (source[offs + 2] >> 7) & 0x1ff; - sy_base = (source[offs + 3] >> 7) & 0x1ff; + int sx_base = (source[offs + 2] >> 7) & 0x1ff; + int sy_base = (source[offs + 3] >> 7) & 0x1ff; if (sx_base >= 0x180) sx_base -= 0x200; if (sy_base >= 0x180) sy_base -= 0x200; @@ -895,26 +802,26 @@ void toaplan1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c sx_base = visarea.width() - (sx_base + 8); /* visarea.x = 320 */ sy_base = visarea.height() - (sy_base + 8); /* visarea.y = 240 */ - sy_base += ((visarea.max_y + 1) - visarea.height()) * 2; /* Horizontal games are offset so adjust by +0x20 */ + sy_base += ((visarea.max_y + 1) - visarea.height()) * 2; /* Horizontal games are offset so adjust by + 0x20 */ } - for (dim_y = 0; dim_y < sprite_sizey; dim_y += 8) + for (int dim_y = 0; dim_y < sprite_sizey; dim_y += 8) { if (fcu_flipscreen) sy = sy_base - dim_y; else sy = sy_base + dim_y; - for (dim_x = 0; dim_x < sprite_sizex; dim_x += 8) + for (int dim_x = 0; dim_x < sprite_sizex; dim_x += 8) { if (fcu_flipscreen) sx = sx_base - dim_x; else sx = sx_base + dim_x; - toaplan1_draw_sprite_custom(screen,bitmap,cliprect,m_gfxdecode->gfx(1), + draw_sprite_custom(screen,bitmap,cliprect,m_gfxdecode->gfx(1), sprite,color, fcu_flipscreen,fcu_flipscreen, sx,sy, priority); - sprite++ ; + sprite++; } } } @@ -928,24 +835,22 @@ void toaplan1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c Draw the game screen in the given bitmap_ind16. ***************************************************************************/ -uint32_t toaplan1_rallybik_state::screen_update_rallybik(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 toaplan1_rallybik_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int priority; - - toaplan1_log_vram(); + log_vram(); m_spritegen->draw_sprites_to_tempbitmap(cliprect, m_buffered_spriteram.get(), m_spriteram.bytes()); // first draw everything, including "disabled" tiles and priority 0 - m_pf1_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0); + m_tilemap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0); // then draw the higher priority layers in order - for (priority = 1; priority < 16; priority++) + for (int priority = 1; priority < 16; priority++) { - m_pf4_tilemap->draw(screen, bitmap, cliprect, priority, 0); - m_pf3_tilemap->draw(screen, bitmap, cliprect, priority, 0); - m_pf2_tilemap->draw(screen, bitmap, cliprect, priority, 0); - m_pf1_tilemap->draw(screen, bitmap, cliprect, priority, 0); + m_tilemap[3]->draw(screen, bitmap, cliprect, priority, 0); + m_tilemap[2]->draw(screen, bitmap, cliprect, priority, 0); + m_tilemap[1]->draw(screen, bitmap, cliprect, priority, 0); + m_tilemap[0]->draw(screen, bitmap, cliprect, priority, 0); //if (pririoty==0x00) m_spritegen->copy_sprites_from_tempbitmap(bitmap,cliprect,0); if (priority==0x04) m_spritegen->copy_sprites_from_tempbitmap(bitmap,cliprect,1); @@ -957,24 +862,22 @@ uint32_t toaplan1_rallybik_state::screen_update_rallybik(screen_device &screen, return 0; } -uint32_t toaplan1_state::screen_update_toaplan1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 toaplan1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int priority; - - toaplan1_log_vram(); + log_vram(); screen.priority().fill(0, cliprect); // first draw everything, including "disabled" tiles and priority 0 - m_pf1_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0); + m_tilemap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0); // then draw the higher priority layers in order - for (priority = 1; priority < 16; priority++) + for (int priority = 1; priority < 16; priority++) { - m_pf4_tilemap->draw(screen, bitmap, cliprect, priority, priority, 0); - m_pf3_tilemap->draw(screen, bitmap, cliprect, priority, priority, 0); - m_pf2_tilemap->draw(screen, bitmap, cliprect, priority, priority, 0); - m_pf1_tilemap->draw(screen, bitmap, cliprect, priority, priority, 0); + m_tilemap[3]->draw(screen, bitmap, cliprect, priority, priority, 0); + m_tilemap[2]->draw(screen, bitmap, cliprect, priority, priority, 0); + m_tilemap[1]->draw(screen, bitmap, cliprect, priority, priority, 0); + m_tilemap[0]->draw(screen, bitmap, cliprect, priority, priority, 0); } draw_sprites(screen, bitmap, cliprect); @@ -987,35 +890,35 @@ uint32_t toaplan1_state::screen_update_toaplan1(screen_device &screen, bitmap_in assume it happens automatically every frame, at the end of vblank ****************************************************************************/ -WRITE_LINE_MEMBER(toaplan1_rallybik_state::screen_vblank_rallybik) +WRITE_LINE_MEMBER(toaplan1_rallybik_state::screen_vblank) { // rising edge if (state) { memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes()); - toaplan1_interrupt(); + interrupt(); } } -WRITE_LINE_MEMBER(toaplan1_state::screen_vblank_toaplan1) +WRITE_LINE_MEMBER(toaplan1_state::screen_vblank) { // rising edge if (state) { memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes()); - memcpy(m_buffered_spritesizeram16.get(), m_spritesizeram16.get(), TOAPLAN1_SPRITESIZERAM_SIZE); - toaplan1_interrupt(); + memcpy(m_buffered_spritesizeram.get(), m_spritesizeram.get(), TOAPLAN1_SPRITESIZERAM_SIZE); + interrupt(); } } -WRITE_LINE_MEMBER(toaplan1_state::screen_vblank_samesame) +WRITE_LINE_MEMBER(toaplan1_samesame_state::screen_vblank) { // rising edge if (state) { memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes()); - memcpy(m_buffered_spritesizeram16.get(), m_spritesizeram16.get(), TOAPLAN1_SPRITESIZERAM_SIZE); - toaplan1_interrupt(); + memcpy(m_buffered_spritesizeram.get(), m_spritesizeram.get(), TOAPLAN1_SPRITESIZERAM_SIZE); + interrupt(); m_maincpu->set_input_line(M68K_IRQ_2, HOLD_LINE); /* Frame done */ } } -- cgit v1.2.3