mirror of
https://github.com/holub/mame
synced 2025-07-06 10:29:38 +03:00
gp9001.cpp : Cleanup/Fix naming, Reduce unnecessary handler (#3921)
* gp9001.cpp : Cleanup/Fix naming, Reduce unnecessary handler toaplan2.cpp : Fix batrider gfx, Cleanup naming * toaplan2.cpp : Remove unused, register_postload, Cleanup naming
This commit is contained in:
parent
0aa7079c94
commit
bfcceb26ee
@ -846,7 +846,7 @@ void toaplan2_state::tekipaki_68k_mem(address_map &map)
|
||||
map(0x020000, 0x03ffff).rom(); // extra for Whoopee
|
||||
map(0x080000, 0x082fff).ram();
|
||||
map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x180000, 0x180001).portr("DSWA");
|
||||
map(0x180010, 0x180011).portr("DSWB");
|
||||
map(0x180020, 0x180021).portr("SYS");
|
||||
@ -866,7 +866,7 @@ void toaplan2_state::ghox_68k_mem(address_map &map)
|
||||
map(0x080000, 0x083fff).ram();
|
||||
map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x100000, 0x100001).r(FUNC(toaplan2_state::ghox_p1_h_analog_r));
|
||||
map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x180000, 0x180fff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
|
||||
map(0x181000, 0x181001).w(FUNC(toaplan2_state::toaplan2_coin_word_w));
|
||||
map(0x18100c, 0x18100d).portr("JMPR");
|
||||
@ -882,9 +882,9 @@ void toaplan2_state::dogyuun_68k_mem(address_map &map)
|
||||
map(0x200018, 0x200019).portr("SYS");
|
||||
map(0x20001c, 0x20001d).w(FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line
|
||||
map(0x210000, 0x21ffff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x500000, 0x50000d).rw(m_vdp[1], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x500000, 0x50000d).rw(m_vdp[1], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r)); // test bit 8
|
||||
}
|
||||
|
||||
@ -898,7 +898,7 @@ void toaplan2_state::kbash_68k_mem(address_map &map)
|
||||
map(0x208014, 0x208015).portr("IN2");
|
||||
map(0x208018, 0x208019).portr("SYS");
|
||||
map(0x20801c, 0x20801d).w(FUNC(toaplan2_state::toaplan2_coin_word_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r)); // test bit 8
|
||||
}
|
||||
@ -921,7 +921,7 @@ void toaplan2_state::kbash2_68k_mem(address_map &map)
|
||||
map(0x200025, 0x200025).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x200029, 0x200029).w(FUNC(toaplan2_state::oki_bankswitch_w<0>));
|
||||
map(0x20002c, 0x20002d).r(FUNC(toaplan2_state::video_count_r));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
}
|
||||
|
||||
@ -930,13 +930,13 @@ void toaplan2_state::truxton2_68k_mem(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x07ffff).rom();
|
||||
map(0x100000, 0x10ffff).ram();
|
||||
map(0x200000, 0x20000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x200000, 0x20000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x300000, 0x300fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x400000, 0x401fff).ram().w(FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
|
||||
map(0x400000, 0x401fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
|
||||
map(0x402000, 0x402fff).ram().share("tx_lineselect");
|
||||
map(0x403000, 0x4031ff).ram().w(FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x403000, 0x4031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x403200, 0x403fff).ram();
|
||||
map(0x500000, 0x50ffff).ram().w(FUNC(toaplan2_state::toaplan2_tx_gfxram16_w)).share("tx_gfxram16");
|
||||
map(0x500000, 0x50ffff).ram().w(FUNC(toaplan2_state::tx_gfxram_w)).share("tx_gfxram");
|
||||
map(0x600000, 0x600001).r(FUNC(toaplan2_state::video_count_r));
|
||||
map(0x700000, 0x700001).portr("DSWA");
|
||||
map(0x700002, 0x700003).portr("DSWB");
|
||||
@ -955,7 +955,7 @@ void toaplan2_state::pipibibs_68k_mem(address_map &map)
|
||||
map(0x000000, 0x03ffff).rom();
|
||||
map(0x080000, 0x082fff).ram();
|
||||
map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x190000, 0x190fff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
|
||||
map(0x19c01c, 0x19c01d).w(FUNC(toaplan2_state::toaplan2_coin_word_w));
|
||||
map(0x19c020, 0x19c021).portr("DSWA");
|
||||
@ -1000,12 +1000,12 @@ void toaplan2_state::fixeight_68k_mem(address_map &map)
|
||||
map(0x200010, 0x200011).portr("SYS");
|
||||
map(0x20001c, 0x20001d).w(FUNC(toaplan2_state::toaplan2_coin_word_w));
|
||||
map(0x280000, 0x28ffff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
|
||||
map(0x502000, 0x5021ff).ram().share("tx_lineselect");
|
||||
map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x600000, 0x60ffff).ram().w(FUNC(toaplan2_state::toaplan2_tx_gfxram16_w)).share("tx_gfxram16");
|
||||
map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x600000, 0x60ffff).ram().w(FUNC(toaplan2_state::tx_gfxram_w)).share("tx_gfxram");
|
||||
map(0x700000, 0x700001).w(FUNC(toaplan2_state::fixeight_subcpu_ctrl_w));
|
||||
map(0x800000, 0x800001).r(FUNC(toaplan2_state::video_count_r));
|
||||
}
|
||||
@ -1023,9 +1023,9 @@ void toaplan2_state::fixeightbl_68k_mem(address_map &map)
|
||||
map(0x200015, 0x200015).w(FUNC(toaplan2_state::fixeightbl_oki_bankswitch_w)); // Sound banking. Code at $4084c, $5070
|
||||
map(0x200019, 0x200019).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0x20001c, 0x20001d).portr("DSWA");
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
|
||||
map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
|
||||
map(0x800000, 0x87ffff).rom().region("maincpu", 0x80000);
|
||||
}
|
||||
@ -1041,7 +1041,7 @@ void toaplan2_state::vfive_68k_mem(address_map &map)
|
||||
map(0x200018, 0x200019).portr("SYS");
|
||||
map(0x20001c, 0x20001d).w(FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line
|
||||
map(0x210000, 0x21ffff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
|
||||
}
|
||||
@ -1056,9 +1056,9 @@ void toaplan2_state::batsugun_68k_mem(address_map &map)
|
||||
map(0x200018, 0x200019).portr("SYS");
|
||||
map(0x20001c, 0x20001d).w(FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line
|
||||
map(0x210000, 0x21ffff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x500000, 0x50000d).rw(m_vdp[1], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x500000, 0x50000d).rw(m_vdp[1], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
|
||||
}
|
||||
|
||||
@ -1069,7 +1069,7 @@ void toaplan2_state::pwrkick_68k_mem(address_map &map)
|
||||
map(0x104000, 0x10ffff).ram();
|
||||
|
||||
map(0x200000, 0x20000f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff);
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x600001, 0x600001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
|
||||
@ -1092,7 +1092,7 @@ void toaplan2_state::othldrby_68k_mem(address_map &map)
|
||||
map(0x104000, 0x10ffff).ram();
|
||||
|
||||
map(0x200000, 0x20000f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff);
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x600001, 0x600001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
|
||||
@ -1127,7 +1127,7 @@ void toaplan2_state::enmadaio_68k_mem(address_map &map)
|
||||
map(0x100000, 0x103fff).ram(); // AM_SHARE("nvram")
|
||||
map(0x104000, 0x10ffff).ram();
|
||||
|
||||
map(0x200000, 0x20000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x200000, 0x20000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x300000, 0x300fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x400000, 0x400003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
|
||||
map(0x500001, 0x500001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
@ -1152,7 +1152,7 @@ void toaplan2_state::snowbro2_68k_mem(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x07ffff).rom();
|
||||
map(0x100000, 0x10ffff).ram();
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x500000, 0x500003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
|
||||
map(0x600001, 0x600001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
@ -1182,12 +1182,12 @@ void toaplan2_state::mahoudai_68k_mem(address_map &map)
|
||||
map(0x21c030, 0x21c031).portr("DSWB");
|
||||
map(0x21c034, 0x21c035).portr("JMPR");
|
||||
map(0x21c03c, 0x21c03d).r(FUNC(toaplan2_state::video_count_r));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x401000, 0x4017ff).ram(); // Unused palette RAM
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
|
||||
map(0x502000, 0x502fff).ram().share("tx_lineselect");
|
||||
map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x503200, 0x503fff).ram();
|
||||
}
|
||||
|
||||
@ -1206,12 +1206,12 @@ void toaplan2_state::shippumd_68k_mem(address_map &map)
|
||||
map(0x21c030, 0x21c031).portr("DSWB");
|
||||
map(0x21c034, 0x21c035).portr("JMPR");
|
||||
map(0x21c03c, 0x21c03d).r(FUNC(toaplan2_state::video_count_r));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x401000, 0x4017ff).ram(); // Unused palette RAM
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
|
||||
map(0x502000, 0x502fff).ram().share("tx_lineselect");
|
||||
map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x503200, 0x503fff).ram();
|
||||
}
|
||||
|
||||
@ -1229,11 +1229,11 @@ void toaplan2_state::bgaregga_68k_mem(address_map &map)
|
||||
map(0x21c030, 0x21c031).portr("DSWB");
|
||||
map(0x21c034, 0x21c035).portr("JMPR");
|
||||
map(0x21c03c, 0x21c03d).r(FUNC(toaplan2_state::video_count_r));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w));
|
||||
map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
|
||||
map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
|
||||
map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
|
||||
map(0x502000, 0x502fff).ram().share("tx_lineselect");
|
||||
map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x503200, 0x503fff).ram();
|
||||
map(0x600001, 0x600001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
||||
}
|
||||
@ -1241,12 +1241,12 @@ void toaplan2_state::bgaregga_68k_mem(address_map &map)
|
||||
|
||||
void toaplan2_state::batrider_dma_mem(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x1fff).ram().w(FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram");
|
||||
map(0x0000, 0x1fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
|
||||
map(0x2000, 0x2fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x3000, 0x31ff).ram().share("tx_lineselect");
|
||||
map(0x3200, 0x33ff).ram().w(FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x3200, 0x33ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
|
||||
map(0x3400, 0x7fff).ram();
|
||||
map(0x8000, 0xffff).ram().w(FUNC(toaplan2_state::toaplan2_tx_gfxram16_w)).share("tx_gfxram16");
|
||||
map(0x8000, 0xffff).ram().w(FUNC(toaplan2_state::batrider_tx_gfxram_w)).share("tx_gfxram");
|
||||
}
|
||||
|
||||
|
||||
@ -1254,10 +1254,12 @@ void toaplan2_state::batrider_68k_mem(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x1fffff).rom();
|
||||
// actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA
|
||||
map(0x200000, 0x207fff).ram().share("mainram16");
|
||||
map(0x200000, 0x207fff).ram().share("mainram");
|
||||
map(0x208000, 0x20ffff).ram();
|
||||
map(0x300000, 0x37ffff).r(FUNC(toaplan2_state::batrider_z80rom_r));
|
||||
map(0x400000, 0x40000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_alt_r), FUNC(gp9001vdp_device::gp9001_vdp_alt_w));
|
||||
map(0x400000, 0x40000d).lrw16("gp9001_invert_rw",
|
||||
[this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); },
|
||||
[this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); });
|
||||
map(0x500000, 0x500001).portr("IN");
|
||||
map(0x500002, 0x500003).portr("SYS-DSW");
|
||||
map(0x500004, 0x500005).portr("DSW");
|
||||
@ -1281,10 +1283,12 @@ void toaplan2_state::bbakraid_68k_mem(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x1fffff).rom();
|
||||
// actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA
|
||||
map(0x200000, 0x207fff).ram().share("mainram16");
|
||||
map(0x200000, 0x207fff).ram().share("mainram");
|
||||
map(0x208000, 0x20ffff).ram();
|
||||
map(0x300000, 0x33ffff).r(FUNC(toaplan2_state::batrider_z80rom_r));
|
||||
map(0x400000, 0x40000d).rw(m_vdp[0], FUNC(gp9001vdp_device::gp9001_vdp_alt_r), FUNC(gp9001vdp_device::gp9001_vdp_alt_w));
|
||||
map(0x400000, 0x40000d).lrw16("gp9001_invert_rw",
|
||||
[this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); },
|
||||
[this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); });
|
||||
map(0x500000, 0x500001).portr("IN");
|
||||
map(0x500002, 0x500003).portr("SYS-DSW");
|
||||
map(0x500004, 0x500005).portr("DSW");
|
||||
@ -3219,7 +3223,7 @@ MACHINE_CONFIG_START(toaplan2_state::tekipaki)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3262,7 +3266,7 @@ MACHINE_CONFIG_START(toaplan2_state::ghox)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3349,7 +3353,7 @@ MACHINE_CONFIG_START(toaplan2_state::dogyuun)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_dogyuun));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3397,7 +3401,7 @@ MACHINE_CONFIG_START(toaplan2_state::kbash)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3433,7 +3437,7 @@ MACHINE_CONFIG_START(toaplan2_state::kbash2)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3467,7 +3471,7 @@ MACHINE_CONFIG_START(toaplan2_state::truxton2)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_truxton2)
|
||||
@ -3522,7 +3526,7 @@ MACHINE_CONFIG_START(toaplan2_state::pipibibs)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3562,7 +3566,7 @@ MACHINE_CONFIG_START(toaplan2_state::pipibibsbl)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(28.322_MHz_XTAL / 4, 450, 0, 320, 262, 0, 240); // guess, but this is within NTSC parameters
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3640,7 +3644,7 @@ MACHINE_CONFIG_START(toaplan2_state::fixeight)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240); // verified on PCB
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_truxton2)
|
||||
@ -3678,7 +3682,7 @@ MACHINE_CONFIG_START(toaplan2_state::fixeightbl)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_bootleg));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_textrom)
|
||||
@ -3719,7 +3723,7 @@ MACHINE_CONFIG_START(toaplan2_state::vfive)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240); // verified on PCB
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3759,7 +3763,7 @@ MACHINE_CONFIG_START(toaplan2_state::batsugun)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_batsugun));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3800,7 +3804,7 @@ MACHINE_CONFIG_START(toaplan2_state::pwrkick)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3833,7 +3837,7 @@ MACHINE_CONFIG_START(toaplan2_state::othldrby)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3863,7 +3867,7 @@ MACHINE_CONFIG_START(toaplan2_state::enmadaio)
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3899,7 +3903,7 @@ MACHINE_CONFIG_START(toaplan2_state::snowbro2)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
|
||||
@ -3942,7 +3946,7 @@ MACHINE_CONFIG_START(toaplan2_state::mahoudai)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_textrom)
|
||||
@ -3986,7 +3990,7 @@ MACHINE_CONFIG_START(toaplan2_state::shippumd)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_textrom)
|
||||
@ -4029,7 +4033,7 @@ MACHINE_CONFIG_START(toaplan2_state::bgaregga)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_textrom)
|
||||
@ -4095,7 +4099,7 @@ MACHINE_CONFIG_START(toaplan2_state::batrider)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_batrider)
|
||||
@ -4163,7 +4167,7 @@ MACHINE_CONFIG_START(toaplan2_state::bbakraid)
|
||||
//m_screen->set_size(432, 262);
|
||||
//m_screen->set_visarea(0, 319, 0, 239);
|
||||
m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank_toaplan2));
|
||||
m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_batrider)
|
||||
|
@ -29,12 +29,11 @@ public:
|
||||
toaplan2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_shared_ram(*this, "shared_ram")
|
||||
, m_paletteram(*this, "palette")
|
||||
, m_tx_videoram(*this, "tx_videoram")
|
||||
, m_tx_lineselect(*this, "tx_lineselect")
|
||||
, m_tx_linescroll(*this, "tx_linescroll")
|
||||
, m_tx_gfxram16(*this, "tx_gfxram16")
|
||||
, m_mainram16(*this, "mainram16")
|
||||
, m_tx_gfxram(*this, "tx_gfxram")
|
||||
, m_mainram(*this, "mainram")
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_vdp(*this, "gp9001_%u", 0U)
|
||||
@ -89,14 +88,16 @@ public:
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(c2map_r);
|
||||
|
||||
protected:
|
||||
virtual void device_post_load() override;
|
||||
|
||||
private:
|
||||
optional_shared_ptr<uint8_t> m_shared_ram; // 8 bit RAM shared between 68K and sound CPU
|
||||
optional_shared_ptr<uint16_t> m_paletteram;
|
||||
optional_shared_ptr<uint16_t> m_tx_videoram;
|
||||
optional_shared_ptr<uint16_t> m_tx_lineselect;
|
||||
optional_shared_ptr<uint16_t> m_tx_linescroll;
|
||||
optional_shared_ptr<uint16_t> m_tx_gfxram16;
|
||||
optional_shared_ptr<uint16_t> m_mainram16;
|
||||
optional_shared_ptr<uint16_t> m_tx_gfxram;
|
||||
optional_shared_ptr<uint16_t> m_mainram;
|
||||
|
||||
required_device<m68000_base_device> m_maincpu;
|
||||
optional_device<cpu_device> m_audiocpu;
|
||||
@ -153,9 +154,10 @@ private:
|
||||
DECLARE_WRITE8_MEMBER(batrider_clear_nmi_w);
|
||||
DECLARE_READ16_MEMBER(bbakraid_eeprom_r);
|
||||
DECLARE_WRITE16_MEMBER(bbakraid_eeprom_w);
|
||||
DECLARE_WRITE16_MEMBER(toaplan2_tx_videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(toaplan2_tx_linescroll_w);
|
||||
DECLARE_WRITE16_MEMBER(toaplan2_tx_gfxram16_w);
|
||||
DECLARE_WRITE16_MEMBER(tx_videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(tx_linescroll_w);
|
||||
DECLARE_WRITE16_MEMBER(tx_gfxram_w);
|
||||
DECLARE_WRITE16_MEMBER(batrider_tx_gfxram_w);
|
||||
DECLARE_WRITE16_MEMBER(batrider_textdata_dma_w);
|
||||
DECLARE_WRITE16_MEMBER(batrider_pal_text_dma_w);
|
||||
DECLARE_WRITE8_MEMBER(batrider_objectbank_w);
|
||||
@ -182,11 +184,10 @@ private:
|
||||
uint32_t screen_update_batsugun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_truxton2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_bootleg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
DECLARE_WRITE_LINE_MEMBER(screen_vblank_toaplan2);
|
||||
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
|
||||
IRQ_CALLBACK_MEMBER(fixeightbl_irq_ack);
|
||||
IRQ_CALLBACK_MEMBER(pipibibsbl_irq_ack);
|
||||
INTERRUPT_GEN_MEMBER(bbakraid_snd_interrupt);
|
||||
void truxton2_postload();
|
||||
void create_tx_tilemap(int dx = 0, int dx_flipped = 0);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(pwrkick_coin_w);
|
||||
|
@ -161,7 +161,7 @@ template<int Layer>
|
||||
WRITE16_MEMBER(gp9001vdp_device::tmap_w)
|
||||
{
|
||||
COMBINE_DATA(&m_vram[Layer][offset]);
|
||||
tm[Layer].tmap->mark_tile_dirty(offset/2);
|
||||
m_tm[Layer].tmap->mark_tile_dirty(offset>>1);
|
||||
}
|
||||
|
||||
|
||||
@ -243,19 +243,19 @@ TILE_GET_INFO_MEMBER(gp9001vdp_device::get_tile_info)
|
||||
|
||||
void gp9001vdp_device::create_tilemaps()
|
||||
{
|
||||
tm[2].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<2>),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
tm[1].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
tm[0].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_tm[2].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<2>),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_tm[1].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_tm[0].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
|
||||
tm[2].tmap->set_transparent_pen(0);
|
||||
tm[1].tmap->set_transparent_pen(0);
|
||||
tm[0].tmap->set_transparent_pen(0);
|
||||
m_tm[2].tmap->set_transparent_pen(0);
|
||||
m_tm[1].tmap->set_transparent_pen(0);
|
||||
m_tm[0].tmap->set_transparent_pen(0);
|
||||
}
|
||||
|
||||
|
||||
void gp9001vdp_device::device_start()
|
||||
{
|
||||
sp.vram16_buffer = make_unique_clear<uint16_t[]>(SPRITERAM_SIZE/2);
|
||||
m_sp.vram16_buffer = make_unique_clear<uint16_t[]>(SPRITERAM_SIZE/2);
|
||||
|
||||
create_tilemaps();
|
||||
|
||||
@ -263,61 +263,61 @@ void gp9001vdp_device::device_start()
|
||||
|
||||
m_raise_irq_timer = timer_alloc(TIMER_RAISE_IRQ);
|
||||
|
||||
save_pointer(NAME(sp.vram16_buffer), SPRITERAM_SIZE/2);
|
||||
save_pointer(NAME(m_sp.vram16_buffer), SPRITERAM_SIZE/2);
|
||||
|
||||
save_item(NAME(gp9001_scroll_reg));
|
||||
save_item(NAME(gp9001_voffs));
|
||||
save_item(NAME(m_scroll_reg));
|
||||
save_item(NAME(m_voffs));
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
save_item(NAME(tm[i].scrollx), i);
|
||||
save_item(NAME(tm[i].scrolly), i);
|
||||
save_item(NAME(tm[i].flip), i);
|
||||
save_item(NAME(m_tm[i].scrollx), i);
|
||||
save_item(NAME(m_tm[i].scrolly), i);
|
||||
save_item(NAME(m_tm[i].flip), i);
|
||||
}
|
||||
save_item(NAME(sp.scrollx));
|
||||
save_item(NAME(sp.scrolly));
|
||||
save_item(NAME(sp.flip));
|
||||
save_item(NAME(m_sp.scrollx));
|
||||
save_item(NAME(m_sp.scrolly));
|
||||
save_item(NAME(m_sp.flip));
|
||||
|
||||
gfxrom_is_banked = false;
|
||||
gfxrom_bank_dirty = false;
|
||||
save_item(NAME(gfxrom_bank));
|
||||
m_gfxrom_is_banked = false;
|
||||
m_gfxrom_bank_dirty = false;
|
||||
save_item(NAME(m_gfxrom_bank));
|
||||
|
||||
// default layer offsets used by all original games
|
||||
tm[0].extra_xoffset.normal = -0x1d6;
|
||||
tm[0].extra_xoffset.flipped = -0x229;
|
||||
tm[0].extra_yoffset.normal = -0x1ef;
|
||||
tm[0].extra_yoffset.flipped = -0x210;
|
||||
m_tm[0].extra_xoffset.normal = -0x1d6;
|
||||
m_tm[0].extra_xoffset.flipped = -0x229;
|
||||
m_tm[0].extra_yoffset.normal = -0x1ef;
|
||||
m_tm[0].extra_yoffset.flipped = -0x210;
|
||||
|
||||
tm[1].extra_xoffset.normal = -0x1d8;
|
||||
tm[1].extra_xoffset.flipped = -0x227;
|
||||
tm[1].extra_yoffset.normal = -0x1ef;
|
||||
tm[1].extra_yoffset.flipped = -0x210;
|
||||
m_tm[1].extra_xoffset.normal = -0x1d8;
|
||||
m_tm[1].extra_xoffset.flipped = -0x227;
|
||||
m_tm[1].extra_yoffset.normal = -0x1ef;
|
||||
m_tm[1].extra_yoffset.flipped = -0x210;
|
||||
|
||||
tm[2].extra_xoffset.normal = -0x1da;
|
||||
tm[2].extra_xoffset.flipped= -0x225;
|
||||
tm[2].extra_yoffset.normal = -0x1ef;
|
||||
tm[2].extra_yoffset.flipped= -0x210;
|
||||
m_tm[2].extra_xoffset.normal = -0x1da;
|
||||
m_tm[2].extra_xoffset.flipped= -0x225;
|
||||
m_tm[2].extra_yoffset.normal = -0x1ef;
|
||||
m_tm[2].extra_yoffset.flipped= -0x210;
|
||||
|
||||
sp.extra_xoffset.normal = -0x1cc;
|
||||
sp.extra_xoffset.flipped = -0x17b;
|
||||
sp.extra_yoffset.normal = -0x1ef;
|
||||
sp.extra_yoffset.flipped = -0x108;
|
||||
m_sp.extra_xoffset.normal = -0x1cc;
|
||||
m_sp.extra_xoffset.flipped = -0x17b;
|
||||
m_sp.extra_yoffset.normal = -0x1ef;
|
||||
m_sp.extra_yoffset.flipped = -0x108;
|
||||
|
||||
sp.use_sprite_buffer = 1;
|
||||
m_sp.use_sprite_buffer = 1;
|
||||
}
|
||||
|
||||
void gp9001vdp_device::device_reset()
|
||||
{
|
||||
gp9001_voffs = 0;
|
||||
gp9001_scroll_reg = 0;
|
||||
tm[0].scrollx = tm[0].scrolly = 0;
|
||||
tm[1].scrollx = tm[1].scrolly = 0;
|
||||
tm[2].scrollx = tm[2].scrolly = 0;
|
||||
sp.scrollx = sp.scrolly = 0;
|
||||
m_voffs = 0;
|
||||
m_scroll_reg = 0;
|
||||
m_tm[0].scrollx = m_tm[0].scrolly = 0;
|
||||
m_tm[1].scrollx = m_tm[1].scrolly = 0;
|
||||
m_tm[2].scrollx = m_tm[2].scrolly = 0;
|
||||
m_sp.scrollx = m_sp.scrolly = 0;
|
||||
|
||||
tm[0].flip = 0;
|
||||
tm[1].flip = 0;
|
||||
tm[2].flip = 0;
|
||||
sp.flip = 0;
|
||||
m_tm[0].flip = 0;
|
||||
m_tm[1].flip = 0;
|
||||
m_tm[2].flip = 0;
|
||||
m_sp.flip = 0;
|
||||
|
||||
init_scroll_regs();
|
||||
|
||||
@ -327,43 +327,43 @@ void gp9001vdp_device::device_reset()
|
||||
}
|
||||
|
||||
|
||||
void gp9001vdp_device::gp9001_voffs_w(uint16_t data, uint16_t mem_mask)
|
||||
void gp9001vdp_device::voffs_w(uint16_t data, uint16_t mem_mask)
|
||||
{
|
||||
COMBINE_DATA(&gp9001_voffs);
|
||||
COMBINE_DATA(&m_voffs);
|
||||
}
|
||||
|
||||
int gp9001vdp_device::gp9001_videoram16_r()
|
||||
int gp9001vdp_device::videoram16_r()
|
||||
{
|
||||
int offs = gp9001_voffs;
|
||||
gp9001_voffs++;
|
||||
int offs = m_voffs;
|
||||
m_voffs++;
|
||||
return space().read_word(offs*2);
|
||||
}
|
||||
|
||||
|
||||
void gp9001vdp_device::gp9001_videoram16_w(uint16_t data, uint16_t mem_mask)
|
||||
void gp9001vdp_device::videoram16_w(uint16_t data, uint16_t mem_mask)
|
||||
{
|
||||
int offs = gp9001_voffs;
|
||||
gp9001_voffs++;
|
||||
int offs = m_voffs;
|
||||
m_voffs++;
|
||||
space().write_word(offs*2, data, mem_mask);
|
||||
}
|
||||
|
||||
|
||||
uint16_t gp9001vdp_device::gp9001_vdpstatus_r()
|
||||
uint16_t gp9001vdp_device::vdpstatus_r()
|
||||
{
|
||||
return ((screen().vpos() + 15) % 262) >= 245;
|
||||
}
|
||||
|
||||
void gp9001vdp_device::gp9001_scroll_reg_select_w(uint16_t data, uint16_t mem_mask)
|
||||
void gp9001vdp_device::scroll_reg_select_w(uint16_t data, uint16_t mem_mask)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
gp9001_scroll_reg = data & 0x8f;
|
||||
m_scroll_reg = data & 0x8f;
|
||||
if (data & 0x70)
|
||||
logerror("Hmmm, selecting unknown LSB video control register (%04x)\n",gp9001_scroll_reg);
|
||||
logerror("Hmmm, selecting unknown LSB video control register (%04x)\n",m_scroll_reg);
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror("Hmmm, selecting unknown MSB video control register (%04x)\n",gp9001_scroll_reg);
|
||||
logerror("Hmmm, selecting unknown MSB video control register (%04x)\n",m_scroll_reg);
|
||||
}
|
||||
}
|
||||
|
||||
@ -444,28 +444,28 @@ void gp9001vdp_device::spritelayer::set_scrolly_and_flip_reg(uint16_t data, uint
|
||||
}
|
||||
}
|
||||
|
||||
void gp9001vdp_device::gp9001_scroll_reg_data_w(uint16_t data, uint16_t mem_mask)
|
||||
void gp9001vdp_device::scroll_reg_data_w(uint16_t data, uint16_t mem_mask)
|
||||
{
|
||||
/************************************************************************/
|
||||
/***** layer X and Y flips can be set independently, so emulate it ******/
|
||||
/************************************************************************/
|
||||
|
||||
// writes with 8x set turn on flip for the specified layer / axis
|
||||
int flip = gp9001_scroll_reg & 0x80;
|
||||
int flip = m_scroll_reg & 0x80;
|
||||
|
||||
switch (gp9001_scroll_reg&0x7f)
|
||||
switch (m_scroll_reg&0x7f)
|
||||
{
|
||||
case 0x00: tm[0].set_scrollx_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x01: tm[0].set_scrolly_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x00: m_tm[0].set_scrollx_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x01: m_tm[0].set_scrolly_and_flip_reg(data, mem_mask, flip); break;
|
||||
|
||||
case 0x02: tm[1].set_scrollx_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x03: tm[1].set_scrolly_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x02: m_tm[1].set_scrollx_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x03: m_tm[1].set_scrolly_and_flip_reg(data, mem_mask, flip); break;
|
||||
|
||||
case 0x04: tm[2].set_scrollx_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x05: tm[2].set_scrolly_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x04: m_tm[2].set_scrollx_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x05: m_tm[2].set_scrolly_and_flip_reg(data, mem_mask, flip); break;
|
||||
|
||||
case 0x06: sp.set_scrollx_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x07: sp.set_scrolly_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x06: m_sp.set_scrollx_and_flip_reg(data, mem_mask, flip); break;
|
||||
case 0x07: m_sp.set_scrolly_and_flip_reg(data, mem_mask, flip); break;
|
||||
|
||||
|
||||
case 0x0e: /******* Initialise video controller register ? *******/
|
||||
@ -473,105 +473,64 @@ void gp9001vdp_device::gp9001_scroll_reg_data_w(uint16_t data, uint16_t mem_mask
|
||||
case 0x0f: if (!m_vint_out_cb.isnull()) m_vint_out_cb(0); break;
|
||||
|
||||
|
||||
default: logerror("Hmmm, writing %08x to unknown video control register (%08x) !!!\n",data,gp9001_scroll_reg);
|
||||
default: logerror("Hmmm, writing %08x to unknown video control register (%08x) !!!\n",data,m_scroll_reg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void gp9001vdp_device::init_scroll_regs()
|
||||
{
|
||||
tm[0].set_scrollx_and_flip_reg(0, 0xffff, 0);
|
||||
tm[0].set_scrolly_and_flip_reg(0, 0xffff, 0);
|
||||
tm[1].set_scrollx_and_flip_reg(0, 0xffff, 0);
|
||||
tm[1].set_scrolly_and_flip_reg(0, 0xffff, 0);
|
||||
tm[2].set_scrollx_and_flip_reg(0, 0xffff, 0);
|
||||
tm[2].set_scrolly_and_flip_reg(0, 0xffff, 0);
|
||||
sp.set_scrollx_and_flip_reg(0, 0xffff, 0);
|
||||
sp.set_scrolly_and_flip_reg(0, 0xffff, 0);
|
||||
m_tm[0].set_scrollx_and_flip_reg(0, 0xffff, 0);
|
||||
m_tm[0].set_scrolly_and_flip_reg(0, 0xffff, 0);
|
||||
m_tm[1].set_scrollx_and_flip_reg(0, 0xffff, 0);
|
||||
m_tm[1].set_scrolly_and_flip_reg(0, 0xffff, 0);
|
||||
m_tm[2].set_scrollx_and_flip_reg(0, 0xffff, 0);
|
||||
m_tm[2].set_scrolly_and_flip_reg(0, 0xffff, 0);
|
||||
m_sp.set_scrollx_and_flip_reg(0, 0xffff, 0);
|
||||
m_sp.set_scrolly_and_flip_reg(0, 0xffff, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
READ16_MEMBER(gp9001vdp_device::gp9001_vdp_r)
|
||||
uint16_t gp9001vdp_device::read(offs_t offset, u16 mem_mask)
|
||||
{
|
||||
switch (offset & (0xc/2))
|
||||
{
|
||||
case 0x04/2:
|
||||
return gp9001_videoram16_r();
|
||||
return videoram16_r();
|
||||
|
||||
case 0x0c/2:
|
||||
return gp9001_vdpstatus_r();
|
||||
return vdpstatus_r();
|
||||
|
||||
default:
|
||||
logerror("gp9001_vdp_r: read from unhandled offset %04x\n",offset*2);
|
||||
logerror("read: read from unhandled offset %04x\n",offset*2);
|
||||
}
|
||||
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(gp9001vdp_device::gp9001_vdp_w)
|
||||
void gp9001vdp_device::write(offs_t offset, u16 data, u16 mem_mask)
|
||||
{
|
||||
switch (offset & (0xc/2))
|
||||
{
|
||||
case 0x00/2:
|
||||
gp9001_voffs_w(data, mem_mask);
|
||||
voffs_w(data, mem_mask);
|
||||
break;
|
||||
|
||||
case 0x04/2:
|
||||
gp9001_videoram16_w(data, mem_mask);
|
||||
videoram16_w(data, mem_mask);
|
||||
break;
|
||||
|
||||
case 0x08/2:
|
||||
gp9001_scroll_reg_select_w(data, mem_mask);
|
||||
scroll_reg_select_w(data, mem_mask);
|
||||
break;
|
||||
|
||||
case 0x0c/2:
|
||||
gp9001_scroll_reg_data_w(data, mem_mask);
|
||||
scroll_reg_data_w(data, mem_mask);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* batrider and bbakraid invert the register select lines */
|
||||
READ16_MEMBER(gp9001vdp_device::gp9001_vdp_alt_r)
|
||||
{
|
||||
switch (offset & (0xc/2))
|
||||
{
|
||||
case 0x0/2:
|
||||
return gp9001_vdpstatus_r();
|
||||
|
||||
case 0x8/2:
|
||||
return gp9001_videoram16_r();
|
||||
|
||||
default:
|
||||
logerror("gp9001_vdp_alt_r: read from unhandled offset %04x\n",offset*2);
|
||||
}
|
||||
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(gp9001vdp_device::gp9001_vdp_alt_w)
|
||||
{
|
||||
switch (offset & (0xc/2))
|
||||
{
|
||||
case 0x0/2:
|
||||
gp9001_scroll_reg_data_w(data, mem_mask);
|
||||
break;
|
||||
|
||||
case 0x4/2:
|
||||
gp9001_scroll_reg_select_w(data, mem_mask);
|
||||
break;
|
||||
|
||||
case 0x8/2:
|
||||
gp9001_videoram16_w(data, mem_mask);
|
||||
break;
|
||||
|
||||
case 0xc/2:
|
||||
gp9001_voffs_w(data, mem_mask);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/**************** PIPIBIBI bootleg interface into this video driver ********/
|
||||
@ -593,33 +552,33 @@ WRITE16_MEMBER(gp9001vdp_device::pipibibi_bootleg_scroll_w)
|
||||
default: logerror("PIPIBIBI writing %04x to unknown scroll register %04x",data, offset);
|
||||
}
|
||||
|
||||
gp9001_scroll_reg = offset;
|
||||
gp9001_scroll_reg_data_w(data, mem_mask);
|
||||
m_scroll_reg = offset;
|
||||
scroll_reg_data_w(data, mem_mask);
|
||||
}
|
||||
}
|
||||
|
||||
READ16_MEMBER(gp9001vdp_device::pipibibi_bootleg_videoram16_r)
|
||||
{
|
||||
gp9001_voffs_w(offset, 0xffff);
|
||||
return gp9001_videoram16_r();
|
||||
voffs_w(offset, 0xffff);
|
||||
return videoram16_r();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(gp9001vdp_device::pipibibi_bootleg_videoram16_w)
|
||||
{
|
||||
gp9001_voffs_w(offset, 0xffff);
|
||||
gp9001_videoram16_w(data, mem_mask);
|
||||
voffs_w(offset, 0xffff);
|
||||
videoram16_w(data, mem_mask);
|
||||
}
|
||||
|
||||
READ16_MEMBER(gp9001vdp_device::pipibibi_bootleg_spriteram16_r)
|
||||
{
|
||||
gp9001_voffs_w((0x1800 + offset), 0);
|
||||
return gp9001_videoram16_r();
|
||||
voffs_w((0x1800 + offset), 0);
|
||||
return videoram16_r();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(gp9001vdp_device::pipibibi_bootleg_spriteram16_w)
|
||||
{
|
||||
gp9001_voffs_w((0x1800 + offset), mem_mask);
|
||||
gp9001_videoram16_w(data, mem_mask);
|
||||
voffs_w((0x1800 + offset), mem_mask);
|
||||
videoram16_w(data, mem_mask);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
@ -656,13 +615,13 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
|
||||
{
|
||||
uint16_t *source;
|
||||
|
||||
if (sp.use_sprite_buffer) source = sp.vram16_buffer.get();
|
||||
if (m_sp.use_sprite_buffer) source = m_sp.vram16_buffer.get();
|
||||
else source = &m_spriteram[0];
|
||||
int total_elements = gfx(1)->elements();
|
||||
int total_colors = gfx(1)->colors();
|
||||
|
||||
int old_x = (-(sp.scrollx)) & 0x1ff;
|
||||
int old_y = (-(sp.scrolly)) & 0x1ff;
|
||||
int old_x = (-(m_sp.scrollx)) & 0x1ff;
|
||||
int old_y = (-(m_sp.scrolly)) & 0x1ff;
|
||||
|
||||
for (int offs = 0; offs < (MAX_SPRITES * 4); offs += 4)
|
||||
{
|
||||
@ -675,7 +634,7 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
|
||||
|
||||
if ((attrib & 0x8000))
|
||||
{
|
||||
if (!gfxrom_is_banked) /* No Sprite select bank switching needed */
|
||||
if (!m_gfxrom_is_banked) /* No Sprite select bank switching needed */
|
||||
{
|
||||
sprite = ((attrib & 3) << 16) | source[offs + 1]; /* 18 bit */
|
||||
}
|
||||
@ -683,7 +642,7 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
|
||||
{
|
||||
sprite_num = source[offs + 1] & 0x7fff;
|
||||
bank = ((attrib & 3) << 1) | (source[offs + 1] >> 15);
|
||||
sprite = (gfxrom_bank[bank] << 15 ) | sprite_num;
|
||||
sprite = (m_gfxrom_bank[bank] << 15 ) | sprite_num;
|
||||
}
|
||||
color = (attrib >> 2) & 0x3f;
|
||||
|
||||
@ -694,8 +653,8 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
|
||||
/***** find position to display sprite *****/
|
||||
if (!(attrib & 0x4000))
|
||||
{
|
||||
sx_base = ((source[offs + 2] >> 7) - (sp.scrollx)) & 0x1ff;
|
||||
sy_base = ((source[offs + 3] >> 7) - (sp.scrolly)) & 0x1ff;
|
||||
sx_base = ((source[offs + 2] >> 7) - (m_sp.scrollx)) & 0x1ff;
|
||||
sy_base = ((source[offs + 3] >> 7) - (m_sp.scrolly)) & 0x1ff;
|
||||
|
||||
} else {
|
||||
sx_base = (old_x + (source[offs + 2] >> 7)) & 0x1ff;
|
||||
@ -730,17 +689,17 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
|
||||
}
|
||||
|
||||
/***** Flip the sprite layer in any active X or Y flip *****/
|
||||
if (sp.flip)
|
||||
if (m_sp.flip)
|
||||
{
|
||||
if (sp.flip & SPRITE_FLIPX)
|
||||
if (m_sp.flip & SPRITE_FLIPX)
|
||||
sx_base = 320 - sx_base;
|
||||
if (sp.flip & SPRITE_FLIPY)
|
||||
if (m_sp.flip & SPRITE_FLIPY)
|
||||
sy_base = 240 - sy_base;
|
||||
}
|
||||
|
||||
/***** Cancel flip, if it, and sprite layer flip are active *****/
|
||||
flipx = (flipx ^ (sp.flip & SPRITE_FLIPX));
|
||||
flipy = (flipy ^ (sp.flip & SPRITE_FLIPY));
|
||||
flipx = (flipx ^ (m_sp.flip & SPRITE_FLIPX));
|
||||
flipy = (flipy ^ (m_sp.flip & SPRITE_FLIPY));
|
||||
|
||||
/***** Draw the complete sprites using the dimension info *****/
|
||||
for (dim_y = 0; dim_y < sprite_sizey; dim_y += 8)
|
||||
@ -798,7 +757,6 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
|
||||
{
|
||||
int drawyy = yy+sy;
|
||||
|
||||
|
||||
for (xx=xstart;xx!=xend;xx+=xinc)
|
||||
{
|
||||
int drawxx = xx+sx;
|
||||
@ -820,15 +778,13 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
sprite++ ;
|
||||
sprite++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -840,9 +796,9 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
|
||||
Draw the game screen in the given bitmap_ind16.
|
||||
***************************************************************************/
|
||||
|
||||
void gp9001vdp_device::gp9001_draw_custom_tilemap( bitmap_ind16 &bitmap, int layer, const uint8_t* priremap, const uint8_t* pri_enable )
|
||||
void gp9001vdp_device::draw_custom_tilemap( bitmap_ind16 &bitmap, int layer, const uint8_t* priremap, const uint8_t* pri_enable )
|
||||
{
|
||||
tilemap_t* tilemap = tm[layer].tmap;
|
||||
tilemap_t* tilemap = m_tm[layer].tmap;
|
||||
int width = screen().width();
|
||||
int height = screen().height();
|
||||
int y,x;
|
||||
@ -894,27 +850,27 @@ static const uint8_t gp9001_sprprimap1[16] = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x
|
||||
|
||||
static const uint8_t batsugun_prienable0[16]={ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||
|
||||
void gp9001vdp_device::gp9001_render_vdp(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
void gp9001vdp_device::render_vdp(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
if (gfxrom_is_banked && gfxrom_bank_dirty)
|
||||
if (m_gfxrom_is_banked && m_gfxrom_bank_dirty)
|
||||
{
|
||||
for (int i = 0; i < 3; i++)
|
||||
tm[i].tmap->mark_all_dirty();
|
||||
m_tm[i].tmap->mark_all_dirty();
|
||||
|
||||
gfxrom_bank_dirty = false;
|
||||
m_gfxrom_bank_dirty = false;
|
||||
}
|
||||
|
||||
gp9001_draw_custom_tilemap(bitmap, 0, gp9001_primap1, batsugun_prienable0);
|
||||
gp9001_draw_custom_tilemap(bitmap, 1, gp9001_primap1, batsugun_prienable0);
|
||||
gp9001_draw_custom_tilemap(bitmap, 2, gp9001_primap1, batsugun_prienable0);
|
||||
draw_custom_tilemap(bitmap, 0, gp9001_primap1, batsugun_prienable0);
|
||||
draw_custom_tilemap(bitmap, 1, gp9001_primap1, batsugun_prienable0);
|
||||
draw_custom_tilemap(bitmap, 2, gp9001_primap1, batsugun_prienable0);
|
||||
draw_sprites(bitmap,cliprect, gp9001_sprprimap1);
|
||||
}
|
||||
|
||||
|
||||
void gp9001vdp_device::gp9001_screen_eof(void)
|
||||
void gp9001vdp_device::screen_eof(void)
|
||||
{
|
||||
/** Shift sprite RAM buffers *** Used to fix sprite lag **/
|
||||
if (sp.use_sprite_buffer) memcpy(sp.vram16_buffer.get(),m_spriteram,SPRITERAM_SIZE);
|
||||
if (m_sp.use_sprite_buffer) memcpy(m_sp.vram16_buffer.get(),m_spriteram,SPRITERAM_SIZE);
|
||||
|
||||
// the IRQ appears to fire at line 0xe6
|
||||
if (!m_vint_out_cb.isnull())
|
||||
|
@ -22,9 +22,9 @@ public:
|
||||
auto vint_out_cb() { return m_vint_out_cb.bind(); }
|
||||
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, const uint8_t* primap);
|
||||
void gp9001_draw_custom_tilemap(bitmap_ind16 &bitmap, int layer, const uint8_t* priremap, const uint8_t* pri_enable);
|
||||
void gp9001_render_vdp(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void gp9001_screen_eof();
|
||||
void draw_custom_tilemap(bitmap_ind16 &bitmap, int layer, const uint8_t* priremap, const uint8_t* pri_enable);
|
||||
void render_vdp(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void screen_eof();
|
||||
void create_tilemaps();
|
||||
void init_scroll_regs();
|
||||
|
||||
@ -33,26 +33,24 @@ public:
|
||||
void map(address_map &map);
|
||||
|
||||
// game-specific hack stuff
|
||||
void disable_sprite_buffer() { sp.use_sprite_buffer = 0; }
|
||||
void set_tm_extra_offsets(int layer, int xn, int yn, int xf, int yf) { tm[layer].set_extra_offsets(xn, yn, xf, yf); }
|
||||
void set_sp_extra_offsets(int xn, int yn, int xf, int yf) { sp.set_extra_offsets(xn, yn, xf, yf); }
|
||||
void disable_sprite_buffer() { m_sp.use_sprite_buffer = 0; }
|
||||
void set_tm_extra_offsets(int layer, int xn, int yn, int xf, int yf) { m_tm[layer].set_extra_offsets(xn, yn, xf, yf); }
|
||||
void set_sp_extra_offsets(int xn, int yn, int xf, int yf) { m_sp.set_extra_offsets(xn, yn, xf, yf); }
|
||||
|
||||
// ROM banking control
|
||||
void set_gfxrom_banked() { gfxrom_is_banked = true; }
|
||||
void set_gfxrom_banked() { m_gfxrom_is_banked = true; }
|
||||
void set_gfxrom_bank(unsigned index, uint16_t value)
|
||||
{
|
||||
if (gfxrom_bank[index] != value)
|
||||
if (m_gfxrom_bank[index] != value)
|
||||
{
|
||||
gfxrom_bank[index] = value;
|
||||
gfxrom_bank_dirty = true;
|
||||
m_gfxrom_bank[index] = value;
|
||||
m_gfxrom_bank_dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
// access to VDP
|
||||
DECLARE_READ16_MEMBER(gp9001_vdp_r);
|
||||
DECLARE_WRITE16_MEMBER(gp9001_vdp_w);
|
||||
DECLARE_READ16_MEMBER(gp9001_vdp_alt_r);
|
||||
DECLARE_WRITE16_MEMBER(gp9001_vdp_alt_w);
|
||||
uint16_t read(offs_t offset, u16 mem_mask);
|
||||
void write(offs_t offset, u16 data, u16 mem_mask);
|
||||
|
||||
DECLARE_READ_LINE_MEMBER(hsync_r);
|
||||
DECLARE_READ_LINE_MEMBER(vsync_r);
|
||||
@ -131,8 +129,8 @@ private:
|
||||
int get_tile_number(int layer, int index)
|
||||
{
|
||||
uint16_t const value = m_vram[layer][(index << 1) | 1];
|
||||
if (gfxrom_is_banked)
|
||||
return (gfxrom_bank[(value >> 13) & 7] << 13) | (value & 0x1fff);
|
||||
if (m_gfxrom_is_banked)
|
||||
return (m_gfxrom_bank[(value >> 13) & 7] << 13) | (value & 0x1fff);
|
||||
else
|
||||
return value;
|
||||
}
|
||||
@ -140,25 +138,25 @@ private:
|
||||
static const gfx_layout tilelayout, spritelayout;
|
||||
DECLARE_GFXDECODE_MEMBER(gfxinfo);
|
||||
|
||||
void gp9001_voffs_w(uint16_t data, uint16_t mem_mask);
|
||||
int gp9001_videoram16_r(void);
|
||||
void gp9001_videoram16_w(uint16_t data, uint16_t mem_mask);
|
||||
uint16_t gp9001_vdpstatus_r(void);
|
||||
void gp9001_scroll_reg_select_w(uint16_t data, uint16_t mem_mask);
|
||||
void gp9001_scroll_reg_data_w(uint16_t data, uint16_t mem_mask);
|
||||
void voffs_w(uint16_t data, uint16_t mem_mask);
|
||||
int videoram16_r(void);
|
||||
void videoram16_w(uint16_t data, uint16_t mem_mask);
|
||||
uint16_t vdpstatus_r(void);
|
||||
void scroll_reg_select_w(uint16_t data, uint16_t mem_mask);
|
||||
void scroll_reg_data_w(uint16_t data, uint16_t mem_mask);
|
||||
|
||||
uint16_t gp9001_voffs;
|
||||
uint16_t gp9001_scroll_reg;
|
||||
uint16_t m_voffs;
|
||||
uint16_t m_scroll_reg;
|
||||
|
||||
tilemaplayer tm[3];
|
||||
spritelayer sp;
|
||||
tilemaplayer m_tm[3];
|
||||
spritelayer m_sp;
|
||||
|
||||
// technically this is just rom banking, allowing the chip to see more graphic ROM, however it's easier to handle it
|
||||
// in the chip implementation than externally for now (which would require dynamic decoding of the entire charsets every
|
||||
// time the bank was changed)
|
||||
bool gfxrom_is_banked;
|
||||
bool gfxrom_bank_dirty; /* dirty flag of object bank (for Batrider) */
|
||||
uint16_t gfxrom_bank[8]; /* Batrider object bank */
|
||||
bool m_gfxrom_is_banked;
|
||||
bool m_gfxrom_bank_dirty; /* dirty flag of object bank (for Batrider) */
|
||||
uint16_t m_gfxrom_bank[8]; /* Batrider object bank */
|
||||
|
||||
required_shared_ptr_array<uint16_t, 3> m_vram;
|
||||
required_shared_ptr<uint16_t> m_spriteram;
|
||||
|
@ -63,9 +63,10 @@ void toaplan2_state::create_tx_tilemap(int dx, int dx_flipped)
|
||||
m_tx_tilemap->set_transparent_pen(0);
|
||||
}
|
||||
|
||||
void toaplan2_state::truxton2_postload()
|
||||
void toaplan2_state::device_post_load()
|
||||
{
|
||||
m_gfxdecode->gfx(0)->mark_all_dirty();
|
||||
if (m_tx_gfxram != nullptr)
|
||||
m_gfxdecode->gfx(0)->mark_all_dirty();
|
||||
}
|
||||
|
||||
VIDEO_START_MEMBER(toaplan2_state,toaplan2)
|
||||
@ -91,8 +92,7 @@ VIDEO_START_MEMBER(toaplan2_state,truxton2)
|
||||
VIDEO_START_CALL_MEMBER( toaplan2 );
|
||||
|
||||
/* Create the Text tilemap for this game */
|
||||
m_gfxdecode->gfx(0)->set_source(reinterpret_cast<uint8_t *>(m_tx_gfxram16.target()));
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(toaplan2_state::truxton2_postload), this));
|
||||
m_gfxdecode->gfx(0)->set_source(reinterpret_cast<uint8_t *>(m_tx_gfxram.target()));
|
||||
|
||||
create_tx_tilemap(0x1d5, 0x16a);
|
||||
}
|
||||
@ -136,8 +136,7 @@ VIDEO_START_MEMBER(toaplan2_state,batrider)
|
||||
m_vdp[0]->disable_sprite_buffer(); // disable buffering on this game
|
||||
|
||||
/* Create the Text tilemap for this game */
|
||||
m_gfxdecode->gfx(0)->set_source(reinterpret_cast<uint8_t *>(m_tx_gfxram16.target()));
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(toaplan2_state::truxton2_postload), this));
|
||||
m_gfxdecode->gfx(0)->set_source(reinterpret_cast<uint8_t *>(m_tx_gfxram.target()));
|
||||
|
||||
create_tx_tilemap(0x1d4, 0x16b);
|
||||
|
||||
@ -145,14 +144,14 @@ VIDEO_START_MEMBER(toaplan2_state,batrider)
|
||||
m_vdp[0]->set_gfxrom_banked();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(toaplan2_state::toaplan2_tx_videoram_w)
|
||||
WRITE16_MEMBER(toaplan2_state::tx_videoram_w)
|
||||
{
|
||||
COMBINE_DATA(&m_tx_videoram[offset]);
|
||||
if (offset < 64*32)
|
||||
m_tx_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(toaplan2_state::toaplan2_tx_linescroll_w)
|
||||
WRITE16_MEMBER(toaplan2_state::tx_linescroll_w)
|
||||
{
|
||||
/*** Line-Scroll RAM for Text Layer ***/
|
||||
COMBINE_DATA(&m_tx_linescroll[offset]);
|
||||
@ -160,19 +159,32 @@ WRITE16_MEMBER(toaplan2_state::toaplan2_tx_linescroll_w)
|
||||
m_tx_tilemap->set_scrollx(offset, m_tx_linescroll[offset]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(toaplan2_state::toaplan2_tx_gfxram16_w)
|
||||
WRITE16_MEMBER(toaplan2_state::tx_gfxram_w)
|
||||
{
|
||||
/*** Dynamic GFX decoding for Truxton 2 / FixEight ***/
|
||||
|
||||
uint16_t oldword = m_tx_gfxram16[offset];
|
||||
uint16_t oldword = m_tx_gfxram[offset];
|
||||
|
||||
if (oldword != data)
|
||||
{
|
||||
COMBINE_DATA(&m_tx_gfxram16[offset]);
|
||||
COMBINE_DATA(&m_tx_gfxram[offset]);
|
||||
m_gfxdecode->gfx(0)->mark_dirty(offset/32);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(toaplan2_state::batrider_tx_gfxram_w)
|
||||
{
|
||||
/*** Dynamic GFX decoding for Batrider / Battle Bakraid ***/
|
||||
|
||||
uint16_t oldword = m_tx_gfxram[offset];
|
||||
|
||||
if (oldword != data)
|
||||
{
|
||||
COMBINE_DATA(&m_tx_gfxram[offset]);
|
||||
m_gfxdecode->gfx(0)->mark_dirty(offset/16);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(toaplan2_state::batrider_textdata_dma_w)
|
||||
{
|
||||
/*** Dynamic Text GFX decoding for Batrider ***/
|
||||
@ -180,7 +192,7 @@ WRITE16_MEMBER(toaplan2_state::batrider_textdata_dma_w)
|
||||
m_dma_space->set_bank(1);
|
||||
for (int i = 0; i < (0x8000 >> 1); i++)
|
||||
{
|
||||
m_dma_space->write16(space, i, m_mainram16[i]);
|
||||
m_dma_space->write16(space, i, m_mainram[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -192,7 +204,7 @@ WRITE16_MEMBER(toaplan2_state::batrider_pal_text_dma_w)
|
||||
m_dma_space->set_bank(0);
|
||||
for (int i = 0; i < (0x3400 >> 1); i++)
|
||||
{
|
||||
m_dma_space->write16(space, i, m_mainram16[i]);
|
||||
m_dma_space->write16(space, i, m_mainram[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -209,12 +221,12 @@ uint32_t toaplan2_state::screen_update_dogyuun(screen_device &screen, bitmap_ind
|
||||
if (m_vdp[1])
|
||||
{
|
||||
m_custom_priority_bitmap.fill(0, cliprect);
|
||||
m_vdp[1]->gp9001_render_vdp(bitmap, cliprect);
|
||||
m_vdp[1]->render_vdp(bitmap, cliprect);
|
||||
}
|
||||
if (m_vdp[0])
|
||||
{
|
||||
m_custom_priority_bitmap.fill(0, cliprect);
|
||||
m_vdp[0]->gp9001_render_vdp(bitmap, cliprect);
|
||||
m_vdp[0]->render_vdp(bitmap, cliprect);
|
||||
}
|
||||
|
||||
|
||||
@ -232,13 +244,13 @@ uint32_t toaplan2_state::screen_update_batsugun(screen_device &screen, bitmap_in
|
||||
{
|
||||
bitmap.fill(0, cliprect);
|
||||
m_custom_priority_bitmap.fill(0, cliprect);
|
||||
m_vdp[0]->gp9001_render_vdp(bitmap, cliprect);
|
||||
m_vdp[0]->render_vdp(bitmap, cliprect);
|
||||
}
|
||||
if (m_vdp[1])
|
||||
{
|
||||
m_secondary_render_bitmap.fill(0, cliprect);
|
||||
m_custom_priority_bitmap.fill(0, cliprect);
|
||||
m_vdp[1]->gp9001_render_vdp(m_secondary_render_bitmap, cliprect);
|
||||
m_vdp[1]->render_vdp(m_secondary_render_bitmap, cliprect);
|
||||
}
|
||||
|
||||
|
||||
@ -323,7 +335,7 @@ uint32_t toaplan2_state::screen_update_toaplan2(screen_device &screen, bitmap_in
|
||||
{
|
||||
bitmap.fill(0, cliprect);
|
||||
m_custom_priority_bitmap.fill(0, cliprect);
|
||||
m_vdp[0]->gp9001_render_vdp(bitmap, cliprect);
|
||||
m_vdp[0]->render_vdp(bitmap, cliprect);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -361,12 +373,12 @@ uint32_t toaplan2_state::screen_update_truxton2(screen_device &screen, bitmap_in
|
||||
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(toaplan2_state::screen_vblank_toaplan2)
|
||||
WRITE_LINE_MEMBER(toaplan2_state::screen_vblank)
|
||||
{
|
||||
// rising edge
|
||||
if (state)
|
||||
{
|
||||
if (m_vdp[0]) m_vdp[0]->gp9001_screen_eof();
|
||||
if (m_vdp[1]) m_vdp[1]->gp9001_screen_eof();
|
||||
if (m_vdp[0]) m_vdp[0]->screen_eof();
|
||||
if (m_vdp[1]) m_vdp[1]->screen_eof();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user