summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2020-10-19 00:41:33 +1100
committer Vas Crabb <vas@vastheman.com>2020-10-19 00:41:33 +1100
commit9836069924078e0cdb3671267d1cdca08baad6d6 (patch)
tree160b6cb09837f9de5b3d2f8e246cb12d7a215035
parentb67441204023eeea3564c9ea5912fbee9c2ffcb4 (diff)
gladiatr.cpp: Extracted AQ 007 microcontroller program from original PCB. [Caps0ff, Phil Bennett, Vas Crabb]
-rw-r--r--src/mame/drivers/gladiatr.cpp52
-rw-r--r--src/mame/includes/gladiatr.h23
2 files changed, 44 insertions, 31 deletions
diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp
index bf18e3e7408..02ad08679ec 100644
--- a/src/mame/drivers/gladiatr.cpp
+++ b/src/mame/drivers/gladiatr.cpp
@@ -170,6 +170,7 @@ Notes:
- gladiatr and clones start with one credit due to the way MAME initialises
memory and the dodgy code the bootleg MCUs use to synchronise with the host
CPUs. On an F3 reset they randomly start with one credit or no credits.
+- gladiatr and clones don't show player inputs in service mode.
TODO:
-----
@@ -183,7 +184,7 @@ TODO:
- YM2203 some sound effects just don't sound correct
- Audio Filter Switch not hooked up (might solve YM2203 mixing issue)
- Ports 60,61,80,81 not fully understood yet...
-- The four 8741 dumps come from an unprotected bootleg, we need dumps from
+- Three 8741 dumps come from an unprotected bootleg, we need dumps from
original boards.
***************************************************************************/
@@ -1048,7 +1049,7 @@ void gladiatr_state::gladiatr(machine_config &config)
m_ucpu->t0_in_cb().set(FUNC(gladiatr_state::tclk_r));
m_ucpu->t1_in_cb().set(FUNC(gladiatr_state::ucpu_t1_r));
- I8741A(config, m_csnd, 12_MHz_XTAL/2); /* verified on pcb */
+ I8742(config, m_csnd, 12_MHz_XTAL/2); /* verified on pcb */
m_csnd->p1_in_cb().set(FUNC(gladiatr_state::csnd_p1_r));
m_csnd->p1_out_cb().set(FUNC(gladiatr_state::csnd_p1_w));
m_csnd->p2_in_cb().set(FUNC(gladiatr_state::csnd_p2_r));
@@ -1096,6 +1097,18 @@ void gladiatr_state::gladiatr(machine_config &config)
LS259(config, "filtlatch", 0); // 9R - filters on sound output
}
+void gladiatr_state::greatgur(machine_config &config)
+{
+ gladiatr(config);
+
+ I8741A(config.replace(), m_csnd, 12_MHz_XTAL/2); /* verified on pcb */
+ m_csnd->p1_in_cb().set(FUNC(gladiatr_state::csnd_p1_r));
+ m_csnd->p1_out_cb().set(FUNC(gladiatr_state::csnd_p1_w));
+ m_csnd->p2_in_cb().set(FUNC(gladiatr_state::csnd_p2_r));
+ m_csnd->t0_in_cb().set(FUNC(gladiatr_state::tclk_r));
+ m_csnd->t1_in_cb().set(FUNC(gladiatr_state::csnd_t1_r));
+}
+
/***************************************************************************
@@ -1196,8 +1209,8 @@ ROM_START( gladiatr )
ROM_REGION( 0x0400, "ucpu", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.3a", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
- ROM_REGION( 0x0400, "csnd", 0 ) /* comms MCU */
- ROM_LOAD( "aq_006.6c", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
+ ROM_REGION( 0x0800, "csnd", 0 ) /* comms MCU */
+ ROM_LOAD( "aq_007.6c", 0x00000, 0x0800, CRC(f19af04d) SHA1(61105cb905128e5d10b2e97d6201034584eb1ada) )
ROM_END
ROM_START( ogonsiro )
@@ -1251,8 +1264,8 @@ ROM_START( ogonsiro )
ROM_REGION( 0x0400, "ucpu", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.3a", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
- ROM_REGION( 0x0400, "csnd", 0 ) /* comms MCU */
- ROM_LOAD( "aq_006.6c", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
+ ROM_REGION( 0x0800, "csnd", 0 ) /* comms MCU */
+ ROM_LOAD( "aq_007.6c", 0x00000, 0x0800, CRC(f19af04d) SHA1(61105cb905128e5d10b2e97d6201034584eb1ada) )
ROM_END
ROM_START( greatgur )
@@ -1361,20 +1374,17 @@ ROM_START( gcastle )
ROM_REGION( 0x0400, "ucpu", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.3a", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
- ROM_REGION( 0x0400, "csnd", 0 ) /* comms MCU */
- ROM_LOAD( "aq_006.6c", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
+ ROM_REGION( 0x0800, "csnd", 0 ) /* comms MCU */
+ ROM_LOAD( "aq_007.6c", 0x00000, 0x0800, CRC(f19af04d) SHA1(61105cb905128e5d10b2e97d6201034584eb1ada) )
ROM_END
-void gladiatr_state::swap_block(u8 *src1,u8 *src2,int len)
+void gladiatr_state::swap_block(u8 *src1, u8 *src2, int len)
{
- int i,t;
-
- for (i = 0;i < len;i++)
+ for (int i = 0; i < len; i++)
{
- t = src1[i];
- src1[i] = src2[i];
- src2[i] = t;
+ using std::swap;
+ swap(src1[i], src2[i]);
}
}
@@ -1465,9 +1475,9 @@ void ppking_state::init_ppking()
}
-
-GAME( 1985, ppking, 0, ppking, ppking, ppking_state, init_ppking, ROT90, "Taito America Corporation", "Ping-Pong King", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN )
-GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, init_gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, init_gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, init_gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, gcastle, gladiatr, gladiatr, gladiatr, gladiatr_state, init_gladiatr, ROT0, "Allumer / Taito Corporation", "Golden Castle (prototype?)", MACHINE_SUPPORTS_SAVE ) // incomplete dump
+// year name parent machine input class init rot company fullname flags
+GAME( 1985, ppking, 0, ppking, ppking, ppking_state, init_ppking, ROT90, "Taito America Corporation", "Ping-Pong King", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN )
+GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, init_gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, init_gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, greatgur, gladiatr, greatgur, gladiatr, gladiatr_state, init_gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, gcastle, gladiatr, gladiatr, gladiatr, gladiatr_state, init_gladiatr, ROT0, "Allumer / Taito Corporation", "Golden Castle (prototype?)", MACHINE_SUPPORTS_SAVE ) // incomplete dump
diff --git a/src/mame/includes/gladiatr.h b/src/mame/includes/gladiatr.h
index 0a8d0cb8a0d..9cef1e78daf 100644
--- a/src/mame/includes/gladiatr.h
+++ b/src/mame/includes/gladiatr.h
@@ -110,6 +110,17 @@ public:
{
}
+ DECLARE_INPUT_CHANGED_MEMBER(p1_s1);
+ DECLARE_INPUT_CHANGED_MEMBER(p1_s2);
+ DECLARE_INPUT_CHANGED_MEMBER(p2_s1);
+ DECLARE_INPUT_CHANGED_MEMBER(p2_s2);
+
+ void gladiatr(machine_config &config);
+ void greatgur(machine_config &config);
+
+ void init_gladiatr();
+
+private:
DECLARE_WRITE_LINE_MEMBER(spritebank_w);
void gladiatr_video_registers_w(offs_t offset, u8 data);
@@ -131,25 +142,17 @@ public:
void csnd_p1_w(u8 data);
u8 csnd_p2_r();
- DECLARE_INPUT_CHANGED_MEMBER(p1_s1);
- DECLARE_INPUT_CHANGED_MEMBER(p1_s2);
- DECLARE_INPUT_CHANGED_MEMBER(p2_s1);
- DECLARE_INPUT_CHANGED_MEMBER(p2_s2);
-
- void init_gladiatr();
-
DECLARE_MACHINE_RESET(gladiator);
DECLARE_VIDEO_START(gladiatr);
uint32_t screen_update_gladiatr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void swap_block(u8 *src1,u8 *src2,int len);
+ static void swap_block(u8 *src1, u8 *src2, int len);
- void gladiatr(machine_config &config);
void gladiatr_cpu1_io(address_map &map);
void gladiatr_cpu1_map(address_map &map);
void gladiatr_cpu2_io(address_map &map);
void gladiatr_cpu3_map(address_map &map);
-private:
+
required_ioport m_dsw1, m_dsw2;
required_ioport m_in0, m_in1, m_in2;
required_ioport m_coins;