summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2019-12-22 12:02:16 +0900
committer Vas Crabb <cuavas@users.noreply.github.com>2019-12-22 14:02:16 +1100
commitf9b15f8b5aa5b4f476b63ffad285c6f478a69418 (patch)
treed76ef5e510ab4ae7761d5fd20e32b4607f50ef7a
parent15dc4bcd525bc02e92688f998869bb8965106c71 (diff)
taitogn.cpp : Reduce duplicates related to zn.cpp (Taito GNET uses ZN2 motherboard, Same as capcom ZN2 based board) (#6077)
* taitogn.cpp : Move subclass into zn.h (Taito GNET uses ZN2 motherboard, Same as capcom ZN2 based board) * zn.cpp : Minor fixes * taitogn.cpp : Move state class declaration into taitogn.cpp * zn.cpp : Fix states * zn.cpp : Fix conflict
-rw-r--r--src/mame/drivers/taitogn.cpp149
-rw-r--r--src/mame/drivers/zn.cpp44
-rw-r--r--src/mame/includes/zn.h5
3 files changed, 55 insertions, 143 deletions
diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp
index daa6287a986..de9db486740 100644
--- a/src/mame/drivers/taitogn.cpp
+++ b/src/mame/drivers/taitogn.cpp
@@ -330,34 +330,21 @@ Type 3 (PCMCIA Compact Flash Adaptor + Compact Flash card, sealed together with
*/
#include "emu.h"
-#include "audio/taito_zm.h"
+#include "includes/zn.h"
-#include "cpu/psx/psx.h"
-#include "machine/at28c16.h"
#include "machine/ataflash.h"
-#include "machine/bankdev.h"
-#include "machine/cat702.h"
#include "machine/intelfsh.h"
-#include "machine/mb3773.h"
-#include "machine/ram.h"
#include "machine/rf5c296.h"
-#include "machine/znmcu.h"
-#include "sound/spu.h"
-#include "video/psx.h"
-#include "screen.h"
-#include "speaker.h"
-#include <algorithm>
+//
+// Taito GNET specific
+//
-class taitogn_state : public driver_device
+class taitogn_state : public zn_state
{
public:
taitogn_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_sio0(*this, "maincpu:sio0"),
- m_cat702(*this, "cat702_%u", 1U),
- m_znmcu(*this, "znmcu"),
- m_maincpu(*this, "maincpu"),
+ zn_state(mconfig, type, tag),
m_mn10200(*this, "taito_zoom:mn10200"),
m_pccard(*this, "pccard"),
m_flashbank(*this, "flashbank"),
@@ -366,14 +353,13 @@ public:
m_pgmflash(*this, "pgmflash"),
m_sndflash(*this, "sndflash%u", 0U),
m_jp1(*this, "JP1"),
- m_has_zoom(true),
- m_znmcu_dataout(1)
+ m_has_zoom(true)
{
- std::fill(std::begin(m_cat702_dataout), std::end(m_cat702_dataout), 1);
}
void init_coh3002t_nz();
+ void base_config(machine_config &config);
void coh3002t_t2_mp(machine_config &config);
void coh3002t(machine_config &config);
void coh3002t_t1_mp(machine_config &config);
@@ -382,9 +368,6 @@ public:
void coh3002t_t1(machine_config &config);
private:
- template<int Chip> DECLARE_WRITE_LINE_MEMBER(cat702_dataout) { m_cat702_dataout[Chip] = state; update_sio0_rxd(); }
- DECLARE_WRITE_LINE_MEMBER(znmcu_dataout) { m_znmcu_dataout = state; update_sio0_rxd(); }
- void update_sio0_rxd() { m_sio0->write_rxd(m_cat702_dataout[0] && m_cat702_dataout[1] && m_znmcu_dataout); }
DECLARE_READ8_MEMBER(control_r);
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_WRITE16_MEMBER(control2_w);
@@ -393,25 +376,18 @@ private:
DECLARE_READ16_MEMBER(gn_1fb70000_r);
DECLARE_WRITE16_MEMBER(gn_1fb70000_w);
DECLARE_READ16_MEMBER(hack1_r);
- DECLARE_READ8_MEMBER(znsecsel_r);
- DECLARE_WRITE8_MEMBER(znsecsel_w);
- DECLARE_READ8_MEMBER(boardconfig_r);
DECLARE_WRITE8_MEMBER(coin_w);
DECLARE_READ8_MEMBER(coin_r);
DECLARE_READ8_MEMBER(gnet_mahjong_panel_r);
DECLARE_READ32_MEMBER(zsg2_ext_r);
void flashbank_map(address_map &map);
- void taitogn_map(address_map &map);
- void taitogn_mp_map(address_map &map);
+ void main_map(address_map &map);
+ void main_mp_map(address_map &map);
virtual void machine_start() override;
virtual void machine_reset() override;
- required_device<psxsio0_device> m_sio0;
- required_device_array<cat702_device, 2> m_cat702;
- required_device<znmcu_device> m_znmcu;
- required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_mn10200;
required_device<pccard_slot_device> m_pccard;
required_device<address_map_bank_device> m_flashbank;
@@ -427,15 +403,9 @@ private:
uint8_t m_control3;
int m_v;
- uint8_t m_n_znsecsel;
-
uint8_t m_coin_info;
-
- int m_cat702_dataout[2];
- int m_znmcu_dataout;
};
-
// Misc. controls
READ8_MEMBER(taitogn_state::control_r)
@@ -513,7 +483,8 @@ READ16_MEMBER(taitogn_state::hack1_r)
switch (offset)
{
case 0:
- m_v = m_v ^ 8;
+ if (!machine().side_effects_disabled())
+ m_v = m_v ^ 8;
// Probably something to do with MCU
return m_v;
@@ -526,30 +497,6 @@ READ16_MEMBER(taitogn_state::hack1_r)
-// Lifted from zn.c
-
-READ8_MEMBER(taitogn_state::znsecsel_r)
-{
- return m_n_znsecsel;
-}
-
-WRITE8_MEMBER(taitogn_state::znsecsel_w)
-{
- m_cat702[0]->write_select(BIT(data, 2));
- m_cat702[1]->write_select(BIT(data, 3));
- m_znmcu->write_select((data & 0x8c) != 0x8c);
- // BIT(data,4); // read analogue controls?
-
- m_n_znsecsel = data;
-}
-
-READ8_MEMBER(taitogn_state::boardconfig_r)
-{
- // see zn.c
- return 64|32|8;
-}
-
-
WRITE8_MEMBER(taitogn_state::coin_w)
{
/* 0x01=counter
@@ -605,14 +552,12 @@ READ32_MEMBER(taitogn_state::zsg2_ext_r)
void taitogn_state::machine_start()
{
+ zn_state::machine_start();
save_item(NAME(m_control));
save_item(NAME(m_control2));
save_item(NAME(m_control3));
save_item(NAME(m_v));
- save_item(NAME(m_n_znsecsel));
save_item(NAME(m_coin_info));
- save_item(NAME(m_cat702_dataout));
- save_item(NAME(m_znmcu_dataout));
}
void taitogn_state::machine_reset()
@@ -629,22 +574,15 @@ void taitogn_state::init_coh3002t_nz()
m_has_zoom = false;
}
-void taitogn_state::taitogn_map(address_map &map)
+void taitogn_state::main_map(address_map &map)
{
+ zn_base_map(map);
+
map(0x1f000000, 0x1f7fffff).m(m_flashbank, FUNC(address_map_bank_device::amap16));
- map(0x1fa00000, 0x1fa00003).portr("P1");
- map(0x1fa00100, 0x1fa00103).portr("P2");
- map(0x1fa00200, 0x1fa00203).portr("SERVICE");
- map(0x1fa00300, 0x1fa00303).portr("SYSTEM");
- map(0x1fa10000, 0x1fa10003).portr("P3");
- map(0x1fa10100, 0x1fa10103).portr("P4");
- map(0x1fa10200, 0x1fa10200).r(FUNC(taitogn_state::boardconfig_r));
- map(0x1fa10300, 0x1fa10300).rw(FUNC(taitogn_state::znsecsel_r), FUNC(taitogn_state::znsecsel_w));
map(0x1fa20000, 0x1fa20000).rw(FUNC(taitogn_state::coin_r), FUNC(taitogn_state::coin_w));
map(0x1fa30000, 0x1fa30000).rw(FUNC(taitogn_state::control3_r), FUNC(taitogn_state::control3_w));
map(0x1fa51c00, 0x1fa51dff).nopr(); // systematic read at spu_address + 250000, result dropped, maybe other accesses
map(0x1fa60000, 0x1fa60003).r(FUNC(taitogn_state::hack1_r));
- map(0x1faf0000, 0x1faf07ff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)); /* eeprom */
map(0x1fb00000, 0x1fb0ffff).rw("rf5c296", FUNC(rf5c296_device::io_r), FUNC(rf5c296_device::io_w));
map(0x1fb40000, 0x1fb40000).rw(FUNC(taitogn_state::control_r), FUNC(taitogn_state::control_w));
map(0x1fb60000, 0x1fb60001).w(FUNC(taitogn_state::control2_w));
@@ -674,9 +612,9 @@ void taitogn_state::flashbank_map(address_map &map)
map(0x10200000, 0x103fffff).rw("biosflash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
}
-void taitogn_state::taitogn_mp_map(address_map &map)
+void taitogn_state::main_mp_map(address_map &map)
{
- taitogn_map(map);
+ main_map(map);
map(0x1fa10100, 0x1fa10100).r(FUNC(taitogn_state::gnet_mahjong_panel_r));
}
@@ -690,33 +628,12 @@ void slot_ataflash(device_slot_interface &device)
void taitogn_state::coh3002t(machine_config &config)
{
- /* basic machine hardware */
- CXD8661R(config, m_maincpu, XTAL(100'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::taitogn_map);
-
- m_maincpu->subdevice<ram_device>("ram")->set_default_size("4M");
-
- auto &sio0(*m_maincpu->subdevice<psxsio0_device>("sio0"));
- sio0.sck_handler().set(m_cat702[0], FUNC(cat702_device::write_clock));
- sio0.sck_handler().append(m_cat702[1], FUNC(cat702_device::write_clock));
- sio0.sck_handler().append(m_znmcu, FUNC(znmcu_device::write_clock));
- sio0.txd_handler().set(m_cat702[0], FUNC(cat702_device::write_datain));
- sio0.txd_handler().append(m_cat702[1], FUNC(cat702_device::write_datain));
+ zn2(config);
+ gameboard_cat702(config);
- CAT702(config, m_cat702[0], 0);
- m_cat702[0]->dataout_handler().set(FUNC(taitogn_state::cat702_dataout<0>));
-
- CAT702(config, m_cat702[1], 0);
- m_cat702[1]->dataout_handler().set(FUNC(taitogn_state::cat702_dataout<1>));
-
- ZNMCU(config, m_znmcu, 0);
- m_znmcu->dataout_handler().set(FUNC(taitogn_state::znmcu_dataout));
- m_znmcu->dsr_handler().set("maincpu:sio0", FUNC(psxsio0_device::write_dsr));
- m_znmcu->dsw_handler().set_ioport("DSW");
- m_znmcu->analog1_handler().set_ioport("ANALOG1");
- m_znmcu->analog2_handler().set_ioport("ANALOG2");
+ /* basic machine hardware */
+ m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::main_map);
- AT28C16(config, "at28c16", 0);
RF5C296(config, "rf5c296", 0).set_pccard("pccard");
PCCARD_SLOT(config, m_pccard, slot_ataflash, nullptr);
@@ -731,21 +648,9 @@ void taitogn_state::coh3002t(machine_config &config)
ADDRESS_MAP_BANK(config, "flashbank").set_map(&taitogn_state::flashbank_map).set_options(ENDIANNESS_LITTLE, 16, 32, 0x8000000);
- // 5MHz NEC uPD78081 MCU:
- // we don't have a 78K0 emulation core yet..
-
- /* video hardware */
- CXD8654Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice<psxcpu_device>("maincpu")).set_screen("screen");
-
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
- /* sound hardware */
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, subdevice<psxcpu_device>("maincpu")));
- spu.add_route(0, "lspeaker", 0.3);
- spu.add_route(1, "rspeaker", 0.3);
+ subdevice<spu_device>("spu")->reset_routes();
+ subdevice<spu_device>("spu")->add_route(0, "lspeaker", 0.3);
+ subdevice<spu_device>("spu")->add_route(1, "rspeaker", 0.3);
TAITO_ZOOM(config, m_zoom);
m_zoom->set_use_flash();
@@ -772,7 +677,7 @@ void taitogn_state::coh3002t_t1_mp(machine_config &config)
coh3002t_t1(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::taitogn_mp_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::main_mp_map);
}
void taitogn_state::coh3002t_t2_mp(machine_config &config)
@@ -780,7 +685,7 @@ void taitogn_state::coh3002t_t2_mp(machine_config &config)
coh3002t_t2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::taitogn_mp_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::main_mp_map);
}
void taitogn_state::coh3002t_cf(machine_config &config)
diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp
index dd08174846a..86576287f2e 100644
--- a/src/mame/drivers/zn.cpp
+++ b/src/mame/drivers/zn.cpp
@@ -13,8 +13,6 @@
#include "emu.h"
#include "includes/zn.h"
-#include <algorithm>
-
#define VERBOSE_LEVEL ( 0 )
inline void ATTR_PRINTF(3,4) zn_state::verboselog( int n_level, const char *s_fmt, ... )
@@ -144,19 +142,24 @@ void zn_state::zn_base_map(address_map &map)
map(0x1fa10100, 0x1fa10103).portr("P4");
map(0x1fa10200, 0x1fa10200).r(FUNC(zn_state::boardconfig_r));
map(0x1fa10300, 0x1fa10300).rw(FUNC(zn_state::znsecsel_r), FUNC(zn_state::znsecsel_w));
- map(0x1fa20000, 0x1fa20000).w(FUNC(zn_state::coin_w));
- map(0x1fa30000, 0x1fa30003).noprw(); /* ?? */
map(0x1fa40000, 0x1fa40003).nopr(); /* ?? */
- map(0x1fa60000, 0x1fa60003).nopr(); /* ?? */
map(0x1faf0000, 0x1faf07ff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)); /* EEPROM */
map(0x1fb20000, 0x1fb20007).r(FUNC(zn_state::unknown_r));
}
+void zn_state::zn_rom_base_map(address_map &map)
+{
+ zn_base_map(map);
+ map(0x1fa20000, 0x1fa20000).w(FUNC(zn_state::coin_w));
+ map(0x1fa30000, 0x1fa30003).noprw(); /* ?? */
+ map(0x1fa60000, 0x1fa60003).nopr(); /* ?? */
+}
+
void zn_state::zn_1mb_vram(machine_config &config)
{
/* basic machine hardware */
CXD8530CQ(config, m_maincpu, XTAL(67'737'600));
- m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::zn_base_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::zn_rom_base_map);
m_maincpu->subdevice<ram_device>("ram")->set_default_size("4M");
@@ -197,11 +200,12 @@ void zn_state::zn_2mb_vram(machine_config &config)
CXD8561Q(config.replace(), "gpu", XTAL(53'693'175), 0x200000, subdevice<psxcpu_device>("maincpu")).set_screen("screen");
}
-void zn2_state::zn2(machine_config &config)
+// used in Capcom ZN2, Taito GNET
+void zn_state::zn2(machine_config &config)
{
/* basic machine hardware */
CXD8661R(config, m_maincpu, XTAL(100'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &zn2_state::zn_base_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &zn_state::zn_rom_base_map);
m_maincpu->subdevice<ram_device>("ram")->set_default_size("4M");
auto &sio0(*m_maincpu->subdevice<psxsio0_device>("sio0"));
@@ -210,10 +214,10 @@ void zn2_state::zn2(machine_config &config)
sio0.txd_handler().set(m_cat702[0], FUNC(cat702_device::write_datain));
CAT702(config, m_cat702[0], 0);
- m_cat702[0]->dataout_handler().set(FUNC(zn2_state::cat702_dataout<0>));
+ m_cat702[0]->dataout_handler().set(FUNC(zn_state::cat702_dataout<0>));
ZNMCU(config, m_znmcu, 0);
- m_znmcu->dataout_handler().set(FUNC(zn2_state::znmcu_dataout));
+ m_znmcu->dataout_handler().set(FUNC(zn_state::znmcu_dataout));
m_znmcu->dsr_handler().set("maincpu:sio0", FUNC(psxsio0_device::write_dsr));
m_znmcu->dsw_handler().set_ioport("DSW");
m_znmcu->analog1_handler().set_ioport("ANALOG1");
@@ -383,7 +387,7 @@ INTERRUPT_GEN_MEMBER(capcom_zn_state::qsound_interrupt)
void capcom_zn_state::main_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f3fffff).rom().region("bankedroms", 0);
map(0x1f400000, 0x1f7fffff).bankr("rombank");
@@ -843,7 +847,7 @@ WRITE8_MEMBER(taito_fx1a_state::sound_bankswitch_w)
void taito_fx1a_state::main_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f7fffff).bankr("rombank");
map(0x1fb40000, 0x1fb40000).w(FUNC(taito_fx1a_state::bank_w));
@@ -927,7 +931,7 @@ READ8_MEMBER(taito_fx1b_state::fram_r)
void taito_fx1b_state::main_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f7fffff).bankr("rombank");
map(0x1fb00000, 0x1fb003ff).rw(FUNC(taito_fx1b_state::fram_r), FUNC(taito_fx1b_state::fram_w)).umask32(0x00ff00ff);
map(0x1fb40000, 0x1fb40000).w(FUNC(taito_fx1b_state::bank_w));
@@ -1200,7 +1204,7 @@ void primrag2_state::machine_start()
void primrag2_state::main_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f1fffff).rom().region("roms", 0);
map(0x1f000000, 0x1f000003).w("watchdog", FUNC(watchdog_timer_device::reset16_w)).umask16(0xffff); // ds1232s
map(0x1f7e8000, 0x1f7e8003).noprw();
@@ -1385,7 +1389,7 @@ WRITE8_MEMBER(raizing_zn_state::sound_irq_w)
void raizing_zn_state::main_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f7fffff).bankr("rombank");
map(0x1fa10300, 0x1fa10300).w(FUNC(raizing_zn_state::bank_w));
@@ -1572,7 +1576,7 @@ READ16_MEMBER(bam2_state::unk_r)
void bam2_state::main_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f3fffff).rom().region("bankedroms", 0);
map(0x1f400000, 0x1f7fffff).bankr("rombank");
@@ -1879,7 +1883,7 @@ WRITE8_MEMBER(nbajamex_state::backup_w)
void acclaim_zn_state::coh1000a_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1fbfff00, 0x1fbfff03).w(FUNC(acclaim_zn_state::acpsx_00_w));
map(0x1fbfff12, 0x1fbfff13).w(FUNC(acclaim_zn_state::acpsx_10_w));
}
@@ -2106,7 +2110,7 @@ WRITE8_MEMBER(atlus_zn_state::bank_w)
void atlus_zn_state::main_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f7fffff).bankr("rombank");
map(0x1fb00000, 0x1fb00001).w(m_soundlatch16, FUNC(generic_latch_16_device::write));
@@ -2171,7 +2175,7 @@ WRITE8_MEMBER(visco_zn_state::bank_w)
void visco_zn_state::main_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f27ffff).rom().region("fixedroms", 0);
map(0x1fb00000, 0x1fbfffff).bankr("rombank");
map(0x1fb00000, 0x1fb00000).w(FUNC(visco_zn_state::bank_w));
@@ -2362,7 +2366,7 @@ WRITE8_MEMBER(tecmo_zn_state::bank_w)
void tecmo_zn_state::base_map(address_map &map)
{
- zn_base_map(map);
+ zn_rom_base_map(map);
map(0x1f000000, 0x1f7fffff).bankr("rombank");
map(0x1fb00006, 0x1fb00006).w(FUNC(tecmo_zn_state::bank_w));
}
diff --git a/src/mame/includes/zn.h b/src/mame/includes/zn.h
index 82b5a384059..d312b108b33 100644
--- a/src/mame/includes/zn.h
+++ b/src/mame/includes/zn.h
@@ -38,6 +38,8 @@
#include "screen.h"
#include "speaker.h"
+#include <algorithm>
+
class zn_state : public driver_device
{
public:
@@ -57,6 +59,7 @@ public:
void zn_1mb_vram(machine_config &config);
void zn_2mb_vram(machine_config &config);
+ void zn2(machine_config &config);
void gameboard_cat702(machine_config &config);
protected:
@@ -70,6 +73,7 @@ protected:
DECLARE_WRITE8_MEMBER(coin_w);
void zn_base_map(address_map &map);
+ void zn_rom_base_map(address_map &map);
virtual void machine_start() override;
@@ -162,7 +166,6 @@ public:
{
}
- void zn2(machine_config &config);
void coh3002c(machine_config &config);
};