mirror of
https://github.com/holub/mame
synced 2025-05-20 20:58:51 +03:00
toaplan1.cpp : Updates
Cleanup duplicates, Reduce unnecessary runtime tag lookups, lines, functions, Simplify handlers, Fix namings, code styles Split demonwld, samesame specific machine state related to exclusive value, device Remove register_postload
This commit is contained in:
parent
e2f3b86caa
commit
0ecf69edcd
@ -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)
|
||||
|
||||
// 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
|
||||
|
||||
@ -1914,7 +1914,7 @@ void toaplan1_rallybik_state::rallybik(machine_config &config)
|
||||
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);
|
||||
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();
|
||||
|
||||
@ -1959,26 +1955,22 @@ void toaplan1_state::truxton(machine_config &config)
|
||||
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);
|
||||
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();
|
||||
|
||||
@ -1994,26 +1986,22 @@ void toaplan1_state::hellfire(machine_config &config)
|
||||
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);
|
||||
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();
|
||||
|
||||
@ -2029,7 +2017,7 @@ void toaplan1_state::zerowing(machine_config &config)
|
||||
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);
|
||||
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,15 +2028,13 @@ 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();
|
||||
|
||||
@ -2057,38 +2043,34 @@ void toaplan1_state::zerowing(machine_config &config)
|
||||
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);
|
||||
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));
|
||||
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();
|
||||
|
||||
@ -2097,33 +2079,31 @@ void toaplan1_state::demonwld(machine_config &config)
|
||||
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);
|
||||
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();
|
||||
|
||||
@ -2139,7 +2119,7 @@ void toaplan1_state::outzone(machine_config &config)
|
||||
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);
|
||||
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,15 +2130,13 @@ 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();
|
||||
|
||||
@ -2174,7 +2152,7 @@ void toaplan1_state::outzonecv(machine_config &config)
|
||||
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);
|
||||
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,15 +2163,13 @@ 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();
|
||||
|
||||
@ -2214,21 +2190,19 @@ void toaplan1_state::vimana(machine_config &config)
|
||||
|
||||
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();
|
||||
|
||||
@ -3127,57 +3101,42 @@ ROM_START( vimanaj )
|
||||
ROM_END
|
||||
|
||||
|
||||
void toaplan1_state::init_toaplan1()
|
||||
{
|
||||
toaplan1_driver_savestate();
|
||||
}
|
||||
GAME( 1988, rallybik, 0, rallybik, rallybik, toaplan1_rallybik_state, empty_init, ROT270, "Toaplan / Taito Corporation", "Rally Bike / Dash Yarou", 0 )
|
||||
|
||||
void toaplan1_state::init_demonwld()
|
||||
{
|
||||
toaplan1_driver_savestate();
|
||||
demonwld_driver_savestate();
|
||||
}
|
||||
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, 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, 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_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_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( 1988, rallybik, 0, rallybik, rallybik, toaplan1_rallybik_state, init_toaplan1, 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( 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, 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( 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, 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, 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 )
|
||||
|
@ -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();
|
||||
|
||||
DECLARE_MACHINE_RESET(toaplan1);
|
||||
|
||||
protected:
|
||||
required_shared_ptr<uint16_t> m_bgpaletteram;
|
||||
required_shared_ptr<uint16_t> m_fgpaletteram;
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
optional_shared_ptr<uint8_t> m_sharedram;
|
||||
required_shared_ptr<u16> m_bgpaletteram;
|
||||
required_shared_ptr<u16> m_fgpaletteram;
|
||||
|
||||
optional_shared_ptr<u8> 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<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]; // \/
|
||||
*/
|
||||
|
||||
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<u16> m_spriteram;
|
||||
std::unique_ptr<u16[]> m_buffered_spriteram;
|
||||
std::unique_ptr<u16[]> m_spritesizeram;
|
||||
std::unique_ptr<u16[]> m_buffered_spritesizeram;
|
||||
|
||||
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;
|
||||
s32 m_bcu_flipscreen; /* Tile controller flip flag */
|
||||
s32 m_fcu_flipscreen; /* Sprite controller flip flag */
|
||||
|
||||
int32_t m_bcu_flipscreen; /* Tile controller flip flag */
|
||||
int32_t m_fcu_flipscreen; /* Sprite controller flip flag */
|
||||
s32 m_pf_voffs;
|
||||
s32 m_spriteram_offs;
|
||||
|
||||
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;
|
||||
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;
|
||||
s32 m_tiles_offsetx;
|
||||
s32 m_tiles_offsety;
|
||||
|
||||
tilemap_t *m_pf1_tilemap;
|
||||
tilemap_t *m_pf2_tilemap;
|
||||
tilemap_t *m_pf3_tilemap;
|
||||
tilemap_t *m_pf4_tilemap;
|
||||
tilemap_t *m_tilemap[4];
|
||||
|
||||
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);
|
||||
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);
|
||||
|
||||
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);
|
||||
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);
|
||||
|
||||
// Fire Shark sound
|
||||
uint8_t m_to_mcu;
|
||||
uint8_t m_cmdavailable;
|
||||
u8 vimana_dswb_invert_r();
|
||||
u8 vimana_tjump_invert_r();
|
||||
|
||||
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);
|
||||
template<unsigned Layer> TILE_GET_INFO_MEMBER(get_tile_info);
|
||||
|
||||
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);
|
||||
u32 screen_update(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();
|
||||
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
|
||||
void interrupt();
|
||||
|
||||
void demonwld_restore_dsp();
|
||||
void toaplan1_create_tilemaps();
|
||||
void toaplan1_vram_alloc();
|
||||
void toaplan1_spritevram_alloc();
|
||||
void toaplan1_set_scrolls();
|
||||
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
|
||||
|
@ -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)
|
||||
{
|
||||
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)
|
||||
WRITE_LINE_MEMBER(toaplan1_state::reset_callback)
|
||||
{
|
||||
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);
|
||||
}
|
||||
reset_sound();
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(toaplan1_state::toaplan1_reset_callback)
|
||||
{
|
||||
toaplan1_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));
|
||||
}
|
||||
|
@ -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_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_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);
|
||||
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,12 +280,12 @@ 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)
|
||||
{
|
||||
@ -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,12 +344,12 @@ 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)];
|
||||
}
|
||||
|
||||
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)]);
|
||||
|
||||
@ -427,14 +364,14 @@ 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))
|
||||
@ -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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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);
|
||||
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 01: COMBINE_DATA(&m_pf1_scrolly); /* 1EBh */
|
||||
m_pf1_tilemap->set_scrolly(0, (m_pf1_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 02: COMBINE_DATA(&m_pf2_scrollx); /* 1D5h */
|
||||
m_pf2_tilemap->set_scrollx(0, (m_pf2_scrollx >> 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);
|
||||
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,34 +513,34 @@ 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))
|
||||
{
|
||||
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);
|
||||
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);
|
||||
@ -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);
|
||||
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);
|
||||
@ -659,15 +571,15 @@ void toaplan1_state::toaplan1_log_vram()
|
||||
|
||||
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);
|
||||
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,
|
||||
@ -682,25 +594,25 @@ void toaplan1_state::toaplan1_log_vram()
|
||||
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);
|
||||
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]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 */
|
||||
{
|
||||
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 */
|
||||
{
|
||||
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 */
|
||||
{
|
||||
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 */
|
||||
{
|
||||
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,15 +671,15 @@ 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)
|
||||
{
|
||||
@ -827,18 +739,16 @@ static void toaplan1_draw_sprite_custom(screen_device &screen, bitmap_ind16 &des
|
||||
|
||||
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];
|
||||
const u8 c = source[x_index >> 16];
|
||||
if (c != 0)
|
||||
{
|
||||
if (pri[x] < priority)
|
||||
@ -857,33 +767,30 @@ 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)
|
||||
{
|
||||
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;
|
||||
@ -898,17 +805,17 @@ void toaplan1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
|
||||
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,
|
||||
@ -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 */
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user