summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <cuavas@users.noreply.github.com>2022-05-13 19:35:43 +1000
committer GitHub <noreply@github.com>2022-05-13 11:35:43 +0200
commit0a6deb312c19f6cadaacc3fd327a6ec71335f326 (patch)
tree9faee4a6f599e791bf4e8e5367d4321f411a2b41
parentf1910d59387596ea5afdec34822f21a34fb72614 (diff)
slapfght.cpp: Hooked up flip screen output to MCU for alcon and slapfigh (#9748)
* slapfght.cpp: Hooked up flip screen output to MCU for alcon and slapfigh. * machine/taito68705interface.cpp: Removed some copy/pasted copyright holders. The copyright holders were copied across from the drivers that the device was factored out of. There's no content from the original drivers left.
-rw-r--r--src/mame/drivers/slapfght.cpp19
-rw-r--r--src/mame/includes/slapfght.h3
-rw-r--r--src/mame/machine/taito68705interface.cpp7
-rw-r--r--src/mame/machine/taito68705interface.h6
4 files changed, 25 insertions, 10 deletions
diff --git a/src/mame/drivers/slapfght.cpp b/src/mame/drivers/slapfght.cpp
index 9dc077f1602..30cef7c02b3 100644
--- a/src/mame/drivers/slapfght.cpp
+++ b/src/mame/drivers/slapfght.cpp
@@ -14,8 +14,6 @@
TODO:
- proper MCU emulation (mame/machine/slapfght.cpp)
- - alcon cocktail/flipscreen, it doesn't write to the flipscreen reg
-
****************************************************************************
@@ -1021,7 +1019,6 @@ void slapfght_state::slapfigh(machine_config &config)
ls259_device &mainlatch(LS259(config, "mainlatch"));
mainlatch.q_out_cb<0>().set(FUNC(slapfght_state::sound_reset_w));
- mainlatch.q_out_cb<1>().set(FUNC(slapfght_state::flipscreen_w));
mainlatch.q_out_cb<3>().set(FUNC(slapfght_state::irq_enable_w));
mainlatch.q_out_cb<4>().set_membank("bank1");
@@ -1030,6 +1027,7 @@ void slapfght_state::slapfigh(machine_config &config)
m_audiocpu->set_periodic_int(FUNC(slapfght_state::sound_nmi), attotime::from_hz(180));
TAITO68705_MCU(config, m_bmcu, 36_MHz_XTAL/12); // 3MHz
+ m_bmcu->aux_out_cb<5>().set(FUNC(slapfght_state::flipscreen_w));
m_bmcu->aux_strobe_cb().set(FUNC(slapfght_state::scroll_from_mcu_w));
config.set_perfect_quantum(m_maincpu);
@@ -1059,6 +1057,15 @@ void slapfght_state::slapfigh(machine_config &config)
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
}
+void slapfght_state::slapfigha(machine_config &config)
+{
+ slapfigh(config);
+
+ subdevice<ls259_device>("mainlatch")->q_out_cb<1>().set(FUNC(slapfght_state::flipscreen_w));
+
+ m_bmcu->aux_out_cb<5>().set_nop();
+}
+
void slapfght_state::slapfighb1(machine_config &config)
{
slapfigh(config);
@@ -2083,9 +2090,9 @@ GAME( 1985, tigerhb2, tigerh, tigerhb2, tigerh, slapfght_state, empty_i
GAME( 1985, tigerhb3, tigerh, tigerhb2, tigerh, slapfght_state, empty_init, ROT270, "bootleg", "Tiger-Heli (bootleg set 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1985, tigerhb4, tigerh, tigerhb4, tigerh, slapfght_state, empty_init, ROT270, "bootleg", "Tiger-Heli (bootleg set 4)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // MCU not hooked up
-GAME( 1986, alcon, 0, slapfigh, slapfigh, slapfght_state, init_slapfigh, ROT270, "Toaplan / Taito America Corp.", "Alcon (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
-GAME( 1986, slapfigh, alcon, slapfigh, slapfigh, slapfght_state, init_slapfigh, ROT270, "Toaplan / Taito", "Slap Fight (A77 set, 8606M PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
-GAME( 1986, slapfigha, alcon, slapfigh, slapfigh, slapfght_state, init_slapfigh, ROT270, "Toaplan / Taito", "Slap Fight (A76 set, GX-006-A PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1986, alcon, 0, slapfigh, slapfigh, slapfght_state, init_slapfigh, ROT270, "Toaplan / Taito America Corp.", "Alcon (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, slapfigh, alcon, slapfigh, slapfigh, slapfght_state, init_slapfigh, ROT270, "Toaplan / Taito", "Slap Fight (A77 set, 8606M PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, slapfigha, alcon, slapfigha, slapfigh, slapfght_state, init_slapfigh, ROT270, "Toaplan / Taito", "Slap Fight (A76 set, GX-006-A PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, slapfighb1, alcon, slapfighb1, slapfigh, slapfght_state, init_slapfigh, ROT270, "bootleg", "Slap Fight (bootleg set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1986, slapfighb2, alcon, slapfighb2, slapfigh, slapfght_state, init_slapfigh, ROT270, "bootleg", "Slap Fight (bootleg set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // England?
GAME( 1986, slapfighb3, alcon, slapfighb2, slapfigh, slapfght_state, init_slapfigh, ROT270, "bootleg", "Slap Fight (bootleg set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // PCB labeled 'slap fighter'
diff --git a/src/mame/includes/slapfght.h b/src/mame/includes/slapfght.h
index 194ef1d881c..3ecbf90dff1 100644
--- a/src/mame/includes/slapfght.h
+++ b/src/mame/includes/slapfght.h
@@ -40,11 +40,12 @@ public:
void tigerhb2(machine_config &config);
void tigerhb4(machine_config &config);
void getstarb2(machine_config &config);
- void slapfighb2(machine_config &config);
void getstarb1(machine_config &config);
void perfrman(machine_config &config);
void slapfigh(machine_config &config);
+ void slapfigha(machine_config &config);
void slapfighb1(machine_config &config);
+ void slapfighb2(machine_config &config);
void init_banks();
void init_getstarb1();
diff --git a/src/mame/machine/taito68705interface.cpp b/src/mame/machine/taito68705interface.cpp
index dc86368a954..9c76b876410 100644
--- a/src/mame/machine/taito68705interface.cpp
+++ b/src/mame/machine/taito68705interface.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Ernesto Corvi, Nicola Salmoria, David Haywood, Vas Crabb
+// copyright-holders:David Haywood, Vas Crabb
#include "emu.h"
#include "machine/taito68705interface.h"
@@ -184,6 +184,7 @@ taito68705_mcu_device::taito68705_mcu_device(const machine_config &mconfig, cons
taito68705_mcu_device::taito68705_mcu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
: taito68705_mcu_device_base(mconfig, type, tag, owner, clock)
+ , m_aux_out_cb(*this)
, m_aux_strobe_cb(*this)
, m_pb_output(0xff)
{
@@ -201,6 +202,7 @@ void taito68705_mcu_device::device_start()
{
taito68705_mcu_device_base::device_start();
+ m_aux_out_cb.resolve_all_safe();
m_aux_strobe_cb.resolve_safe();
save_item(NAME(m_pb_output));
@@ -239,6 +241,7 @@ void taito68705_mcu_device::mcu_portb_w(offs_t offset, u8 data, u8 mem_mask)
{
// some games have additional peripherals strobed on falling edge
u8 const old_pa_value(pa_value());
+ u8 const aux_changed((data ^ m_pb_output) >> 2);
u8 const aux_strobes((mem_mask & ~data & m_pb_output) >> 2);
// rising edge on PB1 clears the host semaphore flag
@@ -248,6 +251,8 @@ void taito68705_mcu_device::mcu_portb_w(offs_t offset, u8 data, u8 mem_mask)
// callbacks for other peripherals
for (unsigned i = 0; i < 6; ++i)
{
+ if (BIT(aux_changed, i))
+ m_aux_out_cb[i](BIT(data, i + 2));
if (BIT(aux_strobes, i))
m_aux_strobe_cb(i, old_pa_value, 0xff);
}
diff --git a/src/mame/machine/taito68705interface.h b/src/mame/machine/taito68705interface.h
index 8a0ecb988ee..c9df56368d8 100644
--- a/src/mame/machine/taito68705interface.h
+++ b/src/mame/machine/taito68705interface.h
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Ernesto Corvi, Nicola Salmoria, David Haywood, Vas Crabb
+// copyright-holders:David Haywood, Vas Crabb
#ifndef MAME_MACHINE_TAITO68705INTERFACE_H
#define MAME_MACHINE_TAITO68705INTERFACE_H
@@ -63,6 +63,7 @@ private:
class taito68705_mcu_device : public taito68705_mcu_device_base
{
public:
+ template <unsigned N> auto aux_out_cb() { return m_aux_out_cb[N].bind(); }
auto aux_strobe_cb() { return m_aux_strobe_cb.bind(); }
taito68705_mcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -76,7 +77,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
- devcb_write8 m_aux_strobe_cb;
+ devcb_write_line::array<6> m_aux_out_cb;
+ devcb_write8 m_aux_strobe_cb;
u8 m_pb_output;
};