summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2019-03-23 08:57:16 -0400
committer GitHub <noreply@github.com>2019-03-23 08:57:16 -0400
commit4f822260d50f77a240d9b0b58541778079483aaf (patch)
tree14f0d7d1a7f18ce9e909e16b022b1f32f8193812
parentdc7c5d5edd8f018e63ad3ebe22a0d4d0d52af60b (diff)
parent0ecf69edcd937c2552809def3abfa042b2d45438 (diff)
Merge pull request #4786 from cam900/toaplan1_clean
toaplan1.cpp : Updates
-rw-r--r--src/mame/drivers/toaplan1.cpp579
-rw-r--r--src/mame/includes/toaplan1.h292
-rw-r--r--src/mame/machine/toaplan1.cpp134
-rw-r--r--src/mame/video/toaplan1.cpp687
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<u16> m_bgpaletteram;
+ required_shared_ptr<u16> m_fgpaletteram;
-protected:
- required_shared_ptr<uint16_t> m_bgpaletteram;
- required_shared_ptr<uint16_t> m_fgpaletteram;
+ optional_shared_ptr<u8> m_sharedram;
- optional_shared_ptr<uint8_t> 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<uint16_t[]> m_pf4_tilevram16; /* || Drawn in this order */
- std::unique_ptr<uint16_t[]> m_pf3_tilevram16; /* || */
- std::unique_ptr<uint16_t[]> m_pf2_tilevram16; /* \||/ */
- std::unique_ptr<uint16_t[]> m_pf1_tilevram16; /* \/ */
-
- optional_shared_ptr<uint16_t> m_spriteram;
- std::unique_ptr<uint16_t[]> m_buffered_spriteram;
- std::unique_ptr<uint16_t[]> m_spritesizeram16;
- std::unique_ptr<uint16_t[]> 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<u16[]> m_tilevram[4];
+ /*
+ std::unique_ptr<u16[]> m_tilevram[3]; // || Drawn in this order
+ std::unique_ptr<u16[]> m_tilevram[2]; // ||
+ std::unique_ptr<u16[]> m_tilevram[1]; // \||/
+ std::unique_ptr<u16[]> m_tilevram[0]; // \/
+ */
+
+ optional_shared_ptr<u16> m_spriteram;
+ std::unique_ptr<u16[]> m_buffered_spriteram;
+ std::unique_ptr<u16[]> m_spritesizeram;
+ std::unique_ptr<u16[]> 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<unsigned Layer> 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<m68000_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<ym3812_device> m_ymsnd;
- optional_device<tms32010_device> m_dsp;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_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<toaplan_scu_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<tms32010_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<unsigned Layer>
+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<uint16_t[]>(TOAPLAN1_TILEVRAM_SIZE/2);
- m_pf2_tilevram16 = make_unique_clear<uint16_t[]>(TOAPLAN1_TILEVRAM_SIZE/2);
- m_pf3_tilevram16 = make_unique_clear<uint16_t[]>(TOAPLAN1_TILEVRAM_SIZE/2);
- m_pf4_tilevram16 = make_unique_clear<uint16_t[]>(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<u16[]>(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<uint16_t[]>(TOAPLAN1_SPRITERAM_SIZE/2);
- m_spritesizeram16 = make_unique_clear<uint16_t[]>(TOAPLAN1_SPRITESIZERAM_SIZE/2);
- m_buffered_spritesizeram16 = make_unique_clear<uint16_t[]>(TOAPLAN1_SPRITESIZERAM_SIZE/2);
+ m_spriteram.allocate(TOAPLAN1_SPRITERAM_SIZE / 2);
+ m_buffered_spriteram = make_unique_clear<u16[]>(TOAPLAN1_SPRITERAM_SIZE / 2);
+ m_spritesizeram = make_unique_clear<u16[]>(TOAPLAN1_SPRITESIZERAM_SIZE / 2);
+ m_buffered_spritesizeram = make_unique_clear<u16[]>(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<uint16_t[]>(m_spriteram.bytes()/2);
- save_pointer(NAME(m_buffered_spriteram), m_spriteram.bytes()/2);
+ m_buffered_spriteram = make_unique_clear<u16[]>(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<ey; y++ )
+ for (int y = sy; y < ey; y++)
{
- const uint8_t *source = source_base + (y_index>>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<ex; x++ )
+ int x_index = x_index_base;
+ for (int x = sx; x < ex; x++)
{
- int c = source[x_index>>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 */
}
}