summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/galastrm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/galastrm.cpp')
-rw-r--r--src/mame/drivers/galastrm.cpp40
1 files changed, 27 insertions, 13 deletions
diff --git a/src/mame/drivers/galastrm.cpp b/src/mame/drivers/galastrm.cpp
index 2e4e8ce4380..f6c6357fae4 100644
--- a/src/mame/drivers/galastrm.cpp
+++ b/src/mame/drivers/galastrm.cpp
@@ -38,6 +38,7 @@ $300.b debugmode
$305.b invincibility
TODO:
+- convert to use device implementation of TC0110PCR
- device-ify TC0610? (no other known users)
*/
@@ -60,13 +61,28 @@ INTERRUPT_GEN_MEMBER(galastrm_state::interrupt)
device.execute().set_input_line(5, HOLD_LINE);
}
-template<int Chip>
-WRITE16_MEMBER(galastrm_state::tc0610_w)
+WRITE32_MEMBER(galastrm_state::palette_w)
{
- if (offset == 0)
- m_tc0610_addr[Chip] = data;
- else if (m_tc0610_addr[Chip] < 8)
- m_tc0610_ctrl_reg[Chip][m_tc0610_addr[Chip]] = data;
+ if (ACCESSING_BITS_16_31)
+ m_tc0110pcr_addr = data >> 16;
+ if ((ACCESSING_BITS_0_15) && (m_tc0110pcr_addr < 4096))
+ m_palette->set_pen_color(m_tc0110pcr_addr, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+}
+
+WRITE32_MEMBER(galastrm_state::tc0610_0_w)
+{
+ if (ACCESSING_BITS_16_31)
+ m_tc0610_0_addr = data >> 16;
+ if ((ACCESSING_BITS_0_15) && (m_tc0610_0_addr < 8))
+ m_tc0610_ctrl_reg[0][m_tc0610_0_addr] = data;
+}
+
+WRITE32_MEMBER(galastrm_state::tc0610_1_w)
+{
+ if (ACCESSING_BITS_16_31)
+ m_tc0610_1_addr = data >> 16;
+ if ((ACCESSING_BITS_0_15) && (m_tc0610_1_addr < 8))
+ m_tc0610_ctrl_reg[1][m_tc0610_1_addr] = data;
}
@@ -91,7 +107,7 @@ WRITE8_MEMBER(galastrm_state::coin_word_w)
void galastrm_state::main_map(address_map &map)
{
map(0x000000, 0x0fffff).rom();
- map(0x200000, 0x21ffff).ram(); /* main CPU ram */
+ map(0x200000, 0x21ffff).ram().share("ram"); /* main CPUA ram */
map(0x300000, 0x303fff).ram().share("spriteram");
map(0x400000, 0x400007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
map(0x40fff0, 0x40fff3).nopw();
@@ -99,9 +115,9 @@ void galastrm_state::main_map(address_map &map)
map(0x600000, 0x6007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); /* Sound shared ram */
map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w)); /* tilemaps */
map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w));
- map(0x900000, 0x900003).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* TC0110PCR */
- map(0xb00000, 0xb00003).w(FUNC(galastrm_state::tc0610_w<0>)); /* TC0610 */
- map(0xc00000, 0xc00003).w(FUNC(galastrm_state::tc0610_w<1>));
+ map(0x900000, 0x900003).w(FUNC(galastrm_state::palette_w)); /* TC0110PCR */
+ map(0xb00000, 0xb00003).w(FUNC(galastrm_state::tc0610_0_w)); /* TC0610 */
+ map(0xc00000, 0xc00003).w(FUNC(galastrm_state::tc0610_1_w));
map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* piv tilemaps */
map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w));
}
@@ -236,8 +252,6 @@ void galastrm_state::galastrm(machine_config &config)
m_tc0480scp->set_offsets(-40, -3);
m_tc0480scp->set_gfxdecode_tag(m_gfxdecode);
- TC0110PCR(config, m_tc0110pcr, 0, m_palette);
-
/* sound hardware */
TAITO_EN(config, "taito_en", 0);
}
@@ -265,7 +279,7 @@ ROM_START( galastrm )
ROM_LOAD32_BYTE( "c99-04.ic66", 0x000002, 0x100000, CRC(a681760f) SHA1(23d4fc7eb778c8a25c4bc7cee1d0c8cdd828a996) )
ROM_LOAD32_BYTE( "c99-03.ic67", 0x000003, 0x100000, CRC(a2807a27) SHA1(977e395ea2ab2fb82807d3cf5fe5f1dbbde99da0) )
- ROM_REGION16_LE( 0x80000, "sprmaprom", 0 )
+ ROM_REGION16_LE( 0x80000, "user1", 0 )
ROM_LOAD16_WORD( "c99-11.ic90", 0x00000, 0x80000, CRC(26a6926c) SHA1(918860e2829131e9ecfe983b2ae3e49e1c9ecd72) ) /* STY, spritemap */
ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00 )