mirror of
https://github.com/holub/mame
synced 2025-07-01 00:09:18 +03:00
New working clones
------------------ Adders and Ladders (v2.1d) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood] Strike it Lucky (v0.5, Datapak) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood] Strike it Lucky (v0.53, Datapak) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood] The Mating Game (v0.4, Datapak) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood] Barquest (v2.6d) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood] Prize Space Invaders (BWB INV1, 50p/30p Play, Version 1.2) (Datapak) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood, Angelo Salese] Blox (SJM BLOX, 50p/20p Play, Version 2.0) (Datapak) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood, Angelo Salese] Prize Tetris (BWB) (Datapak) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood, Angelo Salese] Prize Tetris (BWB) (Showcase) (Datapak) (MPU4 Video) [Ryan Holtz, James Wallace, David Haywood, Angelo Salese] Monopoly (JPM) (Version 4H, Protocol) [Philip Bennett, James Wallace, David Haywood] Monopoly (JPM) (Version 4) [Philip Bennett, James Wallace, David Haywood] Monopoly (JPM) (Version 3) [Philip Bennett, James Wallace, David Haywood] Monopoly Classic (JPM) (Version 5, Protocol) [Philip Bennett, James Wallace, David Haywood] Monopoly Deluxe (JPM) (Version 6, Protocol) [Philip Bennett, James Wallace, David Haywood] new not working clones --------------------------------------------- Monopoly Deluxe (JPM) (Version 1) [Philip Bennett, James Wallace, David Haywood] BACTA datalogger: Rewrote to improve logging and internal data handling.
This commit is contained in:
parent
a051abd2cc
commit
e02478a492
@ -28,6 +28,7 @@
|
||||
|
||||
Notes:
|
||||
* Toggle both 'Back door' and 'Key switch' to enter test mode
|
||||
* Opening the back door will disable coinup
|
||||
* Video hardware seems to match JPM System 5
|
||||
* IRQ 1 inits the PPIs, IRQ 2 does nothing
|
||||
|
||||
@ -135,6 +136,7 @@ void guab_state::guab_map(address_map &map)
|
||||
map(0x0c00e0, 0x0c00e7).rw(m_fdc, FUNC(wd1773_device::read), FUNC(wd1773_device::write)).umask16(0x00ff);
|
||||
map(0x080000, 0x080fff).ram();
|
||||
map(0x100001, 0x100001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w));
|
||||
map(0x100002, 0x100003).nopr(); // uses a clr instruction on address which generates a dummy read
|
||||
map(0x100003, 0x100003).w("ef9369", FUNC(ef9369_device::address_w));
|
||||
map(0x800000, 0xb0ffff).rw(FUNC(guab_state::tms34061_r), FUNC(guab_state::tms34061_w));
|
||||
map(0xb10000, 0xb1ffff).ram();
|
||||
@ -510,7 +512,7 @@ void guab_state::guab(machine_config &config)
|
||||
|
||||
bacta.rxd_handler().set("acia6850_1", FUNC(acia6850_device::write_rxd));
|
||||
|
||||
clock_device &acia_clock(CLOCK(config, "acia_clock", 153600)); // source? the ptm doesn't seem to output any common baud values
|
||||
clock_device &acia_clock(CLOCK(config, "acia_clock", 19200)); // source? the ptm doesn't seem to output any common baud values
|
||||
acia_clock.signal_handler().set("acia6850_1", FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append("acia6850_1", FUNC(acia6850_device::write_rxc));
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
The byte at 0x81 of the EVEN 68k rom appears to be some kind of
|
||||
control byte, probably region, or coin / machine type setting.
|
||||
Many sets differ only by this byte.
|
||||
Now we have BACTA protocol emulation, see if this is related.
|
||||
|
||||
Many sets are probably missing sound roms, however due to the
|
||||
varying motherboard configurations (SAA vs. YM, with added UPD)
|
||||
@ -34,6 +35,8 @@
|
||||
#include "emu.h"
|
||||
#include "includes/jpmsys5.h"
|
||||
|
||||
#include "machine/bacta_datalogger.h"
|
||||
|
||||
#include "machine/clock.h"
|
||||
#include "machine/input_merger.h"
|
||||
#include "sound/saa1099.h"
|
||||
@ -446,7 +449,7 @@ static INPUT_PORTS_START( monopoly )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("50p")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("100p")
|
||||
PORT_BIT( 0xc3, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
|
||||
PORT_START("TOUCH_PUSH")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, jpmsys5v_state,touchscreen_press, 0)
|
||||
|
||||
@ -590,10 +593,14 @@ void jpmsys5v_state::jpmsys5v(machine_config &config)
|
||||
|
||||
INPUT_MERGER_ANY_HIGH(config, "acia_irq").output_handler().set_inputline(m_maincpu, INT_6850ACIA);
|
||||
|
||||
bacta_datalogger_device &bacta(BACTA_DATALOGGER(config, "bacta", 0));
|
||||
|
||||
ACIA6850(config, m_acia6850[0], 0);
|
||||
m_acia6850[0]->txd_handler().set(FUNC(jpmsys5v_state::a0_tx_w));
|
||||
m_acia6850[0]->txd_handler().set("bacta", FUNC(bacta_datalogger_device::write_txd));
|
||||
m_acia6850[0]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<0>));
|
||||
|
||||
bacta.rxd_handler().set(m_acia6850[0], FUNC(acia6850_device::write_rxd));
|
||||
|
||||
ACIA6850(config, m_acia6850[1], 0);
|
||||
m_acia6850[1]->txd_handler().set(FUNC(jpmsys5v_state::a1_tx_w));
|
||||
m_acia6850[1]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<1>));
|
||||
@ -602,9 +609,11 @@ void jpmsys5v_state::jpmsys5v(machine_config &config)
|
||||
m_acia6850[2]->txd_handler().set(FUNC(jpmsys5v_state::a2_tx_w));
|
||||
m_acia6850[2]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<2>));
|
||||
|
||||
clock_device &bacta_clock(CLOCK(config, "bacta_clock", 19200)); // Gives 1200 baud, but real timer is programmable (location?)
|
||||
bacta_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
|
||||
bacta_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
|
||||
|
||||
clock_device &acia_clock(CLOCK(config, "acia_clock", 10000)); // What are the correct ACIA clocks ?
|
||||
acia_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
|
||||
acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_rxc));
|
||||
acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_txc));
|
||||
@ -810,21 +819,27 @@ void jpmsys5_state::jpmsys5_ym(machine_config &config)
|
||||
|
||||
INPUT_MERGER_ANY_HIGH(config, "acia_irq").output_handler().set_inputline(m_maincpu, INT_6850ACIA);
|
||||
|
||||
bacta_datalogger_device &bacta(BACTA_DATALOGGER(config, "bacta", 0));
|
||||
|
||||
ACIA6850(config, m_acia6850[0], 0);
|
||||
m_acia6850[0]->txd_handler().set(FUNC(jpmsys5_state::a0_tx_w));
|
||||
m_acia6850[0]->txd_handler().set("bacta", FUNC(bacta_datalogger_device::write_txd));
|
||||
m_acia6850[0]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<0>));
|
||||
|
||||
bacta.rxd_handler().set(m_acia6850[0], FUNC(acia6850_device::write_rxd));
|
||||
|
||||
ACIA6850(config, m_acia6850[1], 0);
|
||||
m_acia6850[1]->txd_handler().set(FUNC(jpmsys5_state::a1_tx_w));
|
||||
m_acia6850[1]->txd_handler().set(FUNC(jpmsys5v_state::a1_tx_w));
|
||||
m_acia6850[1]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<1>));
|
||||
|
||||
ACIA6850(config, m_acia6850[2], 0);
|
||||
m_acia6850[2]->txd_handler().set(FUNC(jpmsys5_state::a2_tx_w));
|
||||
m_acia6850[2]->txd_handler().set(FUNC(jpmsys5v_state::a2_tx_w));
|
||||
m_acia6850[2]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<2>));
|
||||
|
||||
clock_device &bacta_clock(CLOCK(config, "bacta_clock", 19200)); // Gives 1200 baud, but real timer is programmable (location?)
|
||||
bacta_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
|
||||
bacta_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
|
||||
|
||||
clock_device &acia_clock(CLOCK(config, "acia_clock", 10000)); // What are the correct ACIA clocks ?
|
||||
acia_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
|
||||
acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_rxc));
|
||||
acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_txc));
|
||||
@ -868,21 +883,27 @@ void jpmsys5_state::jpmsys5(machine_config &config)
|
||||
|
||||
INPUT_MERGER_ANY_HIGH(config, "acia_irq").output_handler().set_inputline(m_maincpu, INT_6850ACIA);
|
||||
|
||||
bacta_datalogger_device &bacta(BACTA_DATALOGGER(config, "bacta", 0));
|
||||
|
||||
ACIA6850(config, m_acia6850[0], 0);
|
||||
m_acia6850[0]->txd_handler().set(FUNC(jpmsys5_state::a0_tx_w));
|
||||
m_acia6850[0]->txd_handler().set("bacta", FUNC(bacta_datalogger_device::write_txd));
|
||||
m_acia6850[0]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<0>));
|
||||
|
||||
bacta.rxd_handler().set(m_acia6850[0], FUNC(acia6850_device::write_rxd));
|
||||
|
||||
ACIA6850(config, m_acia6850[1], 0);
|
||||
m_acia6850[1]->txd_handler().set(FUNC(jpmsys5_state::a1_tx_w));
|
||||
m_acia6850[1]->txd_handler().set(FUNC(jpmsys5v_state::a1_tx_w));
|
||||
m_acia6850[1]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<1>));
|
||||
|
||||
ACIA6850(config, m_acia6850[2], 0);
|
||||
m_acia6850[2]->txd_handler().set(FUNC(jpmsys5_state::a2_tx_w));
|
||||
m_acia6850[2]->txd_handler().set(FUNC(jpmsys5v_state::a2_tx_w));
|
||||
m_acia6850[2]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<2>));
|
||||
|
||||
clock_device &bacta_clock(CLOCK(config, "bacta_clock", 19200)); // Gives 1200 baud, but real timer is programmable (location?)
|
||||
bacta_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
|
||||
bacta_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
|
||||
|
||||
clock_device &acia_clock(CLOCK(config, "acia_clock", 10000)); // What are the correct ACIA clocks ?
|
||||
acia_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
|
||||
acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_txc));
|
||||
acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_rxc));
|
||||
acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_txc));
|
||||
@ -922,6 +943,7 @@ void jpmsys5_state::jpmsys5(machine_config &config)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
|
||||
ROM_START( monopoly )
|
||||
ROM_REGION( 0x300000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "7398.bin", 0x000000, 0x80000, CRC(62c80f20) SHA1(322514f920d6cb48887b624786b52af34bdb8e5f) )
|
||||
@ -931,26 +953,15 @@ ROM_START( monopoly )
|
||||
ROM_LOAD16_BYTE( "6670.bin", 0x200000, 0x80000, CRC(66e2a5e1) SHA1(04d4b55d6ad121cdc3592d33e9d953affa24f01a) )
|
||||
ROM_LOAD16_BYTE( "6671.bin", 0x200001, 0x80000, CRC(b2a3cedd) SHA1(e3a5dd028b0769e08a796a96665b31491c3b18ca) )
|
||||
|
||||
|
||||
|
||||
ROM_REGION( 0x300000, "altrevs", 0 )
|
||||
ROM_LOAD16_BYTE( "7400.bin", 0x00001, 0x080000, CRC(d6f1f98c) SHA1(f20c788a31a8fe339aed701866180a3eb16fafb9) )
|
||||
|
||||
// this version doesn't work too well, missing other roms, or just bad?
|
||||
ROM_LOAD16_BYTE( "monov3p1", 0x00000, 0x080000, CRC(a66fc610) SHA1(fddd3b37a6aebf5c402942d26a2fa1fa130326dd) )
|
||||
ROM_LOAD16_BYTE( "monov3p2", 0x00001, 0x080000, CRC(2d629723) SHA1(c5584113e50dc5f636dbcf80e4689d2bbfe98e71) )
|
||||
// mismastched?
|
||||
ROM_LOAD16_BYTE( "monov4p2", 0x00001, 0x080000, CRC(3c2dd9b7) SHA1(01c87584b3599763a0c37040199014c2902dc6f3) )
|
||||
|
||||
|
||||
ROM_REGION( 0x80000, "upd7759", 0 )
|
||||
ROM_LOAD( "6538.bin", 0x00000, 0x40000, CRC(ccdd4ce3) SHA1(dbb24682cea8081a447ca2c53395964fc46e7f56) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( monopolya )
|
||||
|
||||
ROM_START( monopolyd )
|
||||
ROM_REGION( 0x300000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "mono4e1", 0x000000, 0x80000, CRC(0338b165) SHA1(fdc0fcf0fddcf88d593a22885779e8224484e7e4) )
|
||||
ROM_LOAD16_BYTE( "mono4e2", 0x000001, 0x80000, CRC(c8aa21d8) SHA1(257ecf85e1d41b15bb2bbe2157e9d3f72b7e0317) )
|
||||
ROM_LOAD16_BYTE( "7398.bin", 0x000000, 0x80000, CRC(62c80f20) SHA1(322514f920d6cb48887b624786b52af34bdb8e5f) )
|
||||
ROM_LOAD16_BYTE( "7400.bin", 0x000001, 0x80000, CRC(d6f1f98c) SHA1(f20c788a31a8fe339aed701866180a3eb16fafb9) )
|
||||
ROM_LOAD16_BYTE( "6668.bin", 0x100000, 0x80000, CRC(30bf082a) SHA1(29ba67a86e82f0eb4feb816a2031d62028eb11b0) )
|
||||
ROM_LOAD16_BYTE( "6669.bin", 0x100001, 0x80000, CRC(85d38c2d) SHA1(2f1a394df243e5fbbad31507b9074c997c473106) )
|
||||
ROM_LOAD16_BYTE( "6670.bin", 0x200000, 0x80000, CRC(66e2a5e1) SHA1(04d4b55d6ad121cdc3592d33e9d953affa24f01a) )
|
||||
@ -960,6 +971,36 @@ ROM_START( monopolya )
|
||||
ROM_LOAD( "6538.bin", 0x00000, 0x40000, CRC(ccdd4ce3) SHA1(dbb24682cea8081a447ca2c53395964fc46e7f56) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( monopoly4 )
|
||||
ROM_REGION( 0x300000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "mono4e1", 0x000000, 0x80000, CRC(0338b165) SHA1(fdc0fcf0fddcf88d593a22885779e8224484e7e4) )
|
||||
ROM_LOAD16_BYTE( "mono4e2", 0x000001, 0x80000, CRC(c8aa21d8) SHA1(257ecf85e1d41b15bb2bbe2157e9d3f72b7e0317) )
|
||||
ROM_LOAD16_BYTE( "6668.bin", 0x100000, 0x80000, CRC(30bf082a) SHA1(29ba67a86e82f0eb4feb816a2031d62028eb11b0) )
|
||||
ROM_LOAD16_BYTE( "6669.bin", 0x100001, 0x80000, CRC(85d38c2d) SHA1(2f1a394df243e5fbbad31507b9074c997c473106) )
|
||||
ROM_LOAD16_BYTE( "6670.bin", 0x200000, 0x80000, CRC(66e2a5e1) SHA1(04d4b55d6ad121cdc3592d33e9d953affa24f01a) )
|
||||
ROM_LOAD16_BYTE( "6671.bin", 0x200001, 0x80000, CRC(b2a3cedd) SHA1(e3a5dd028b0769e08a796a96665b31491c3b18ca) )
|
||||
|
||||
ROM_REGION( 0x300000, "altrevs", 0 )
|
||||
ROM_LOAD16_BYTE( "monov4p2", 0x000001, 0x80000, CRC(3c2dd9b7) SHA1(01c87584b3599763a0c37040199014c2902dc6f3) ) // mismatched?
|
||||
|
||||
ROM_REGION( 0x80000, "upd7759", 0 )
|
||||
ROM_LOAD( "6538.bin", 0x00000, 0x40000, CRC(ccdd4ce3) SHA1(dbb24682cea8081a447ca2c53395964fc46e7f56) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( monopoly3 )
|
||||
ROM_REGION( 0x300000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "monov3p1", 0x000000, 0x80000, CRC(a66fc610) SHA1(fddd3b37a6aebf5c402942d26a2fa1fa130326dd) )
|
||||
ROM_LOAD16_BYTE( "monov3p2", 0x000001, 0x80000, CRC(2d629723) SHA1(c5584113e50dc5f636dbcf80e4689d2bbfe98e71) )
|
||||
ROM_LOAD16_BYTE( "6668.bin", 0x100000, 0x80000, CRC(30bf082a) SHA1(29ba67a86e82f0eb4feb816a2031d62028eb11b0) )
|
||||
ROM_LOAD16_BYTE( "6669.bin", 0x100001, 0x80000, CRC(85d38c2d) SHA1(2f1a394df243e5fbbad31507b9074c997c473106) )
|
||||
ROM_LOAD16_BYTE( "6670.bin", 0x200000, 0x80000, CRC(66e2a5e1) SHA1(04d4b55d6ad121cdc3592d33e9d953affa24f01a) )
|
||||
ROM_LOAD16_BYTE( "6671.bin", 0x200001, 0x80000, CRC(b2a3cedd) SHA1(e3a5dd028b0769e08a796a96665b31491c3b18ca) )
|
||||
|
||||
ROM_REGION( 0x80000, "upd7759", 0 )
|
||||
ROM_LOAD( "6538.bin", 0x00000, 0x40000, CRC(ccdd4ce3) SHA1(dbb24682cea8081a447ca2c53395964fc46e7f56) )
|
||||
ROM_END
|
||||
|
||||
//Monopoly Classic is a non-payout quiz game, where the goal is to earn points from collecting properties.
|
||||
|
||||
ROM_START( monoplcl )
|
||||
ROM_REGION( 0x300000, "maincpu", 0 )
|
||||
@ -970,13 +1011,18 @@ ROM_START( monoplcl )
|
||||
ROM_LOAD16_BYTE( "6670.bin", 0x200000, 0x80000, CRC(66e2a5e1) SHA1(04d4b55d6ad121cdc3592d33e9d953affa24f01a) )
|
||||
ROM_LOAD16_BYTE( "6671.bin", 0x200001, 0x80000, CRC(b2a3cedd) SHA1(e3a5dd028b0769e08a796a96665b31491c3b18ca) )
|
||||
|
||||
ROM_REGION( 0x300000, "altrevs", 0 )
|
||||
ROM_LOAD16_BYTE( "7403.bin", 0x000001, 0x080000, CRC(95dbacb6) SHA1(bd551ccad95440a669a547092ab126178b0d0bf9) )
|
||||
ROM_REGION( 0x80000, "upd7759", 0 )
|
||||
ROM_LOAD( "6538.bin", 0x00000, 0x40000, CRC(ccdd4ce3) SHA1(dbb24682cea8081a447ca2c53395964fc46e7f56) )
|
||||
ROM_END
|
||||
|
||||
ROM_LOAD( "mdlxv1p1", 0x0000, 0x080000, CRC(48ab1691) SHA1(6df2aad02548d5239e3974a11228bc9aad8c9170) )
|
||||
ROM_LOAD( "mdlxv1p2", 0x0000, 0x080000, CRC(107c3e65) SHA1(e298b3a2826f92ba6119348a36bc4735e1799797) )
|
||||
/* p3 missing? */
|
||||
ROM_LOAD( "mdlxv1p4", 0x0000, 0x080000, CRC(e3fd1a27) SHA1(6bba70ff27a6d068febcbdfa1b1f8ff2ef86ef03) )
|
||||
ROM_START( monoplcld )
|
||||
ROM_REGION( 0x300000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "7401.bin", 0x000000, 0x80000, CRC(eec11426) SHA1(b732a5a64d3fba676134942768b823d088792a1f) )
|
||||
ROM_LOAD16_BYTE( "7403.bin", 0x000001, 0x80000, CRC(95dbacb6) SHA1(bd551ccad95440a669a547092ab126178b0d0bf9) )
|
||||
ROM_LOAD16_BYTE( "6668.bin", 0x100000, 0x80000, CRC(30bf082a) SHA1(29ba67a86e82f0eb4feb816a2031d62028eb11b0) )
|
||||
ROM_LOAD16_BYTE( "6669.bin", 0x100001, 0x80000, CRC(85d38c2d) SHA1(2f1a394df243e5fbbad31507b9074c997c473106) )
|
||||
ROM_LOAD16_BYTE( "6670.bin", 0x200000, 0x80000, CRC(66e2a5e1) SHA1(04d4b55d6ad121cdc3592d33e9d953affa24f01a) )
|
||||
ROM_LOAD16_BYTE( "6671.bin", 0x200001, 0x80000, CRC(b2a3cedd) SHA1(e3a5dd028b0769e08a796a96665b31491c3b18ca) )
|
||||
|
||||
|
||||
ROM_REGION( 0x80000, "upd7759", 0 )
|
||||
@ -992,10 +1038,37 @@ ROM_START( monopldx )
|
||||
ROM_LOAD16_BYTE( "6881.bin", 0x200000, 0x80000, CRC(8418ee17) SHA1(5666b90db00d9e88a37655bb9a714f076e2689d6) )
|
||||
ROM_LOAD16_BYTE( "6882.bin", 0x200001, 0x80000, CRC(400f5fb4) SHA1(80b1d3902fc9f6db24f49055b07bc31c0c74a993) )
|
||||
|
||||
ROM_REGION( 0x300000, "altrevs", 0 )
|
||||
ROM_LOAD16_BYTE( "8441.bin", 0x000001, 0x080000, CRC(d0825af4) SHA1(a7291806893c42a115763e404337976b8c30e9e0) ) // 1 byte change from 8440 (doesn't boot, but might want additional hw)
|
||||
ROM_REGION( 0x80000, "upd7759", 0 )
|
||||
ROM_LOAD( "modl-snd.bin", 0x000000, 0x80000, CRC(f761da41) SHA1(a07d1b4cb7ce7a24b6fb84843543b95c3aec470f) )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( monopldxd )
|
||||
ROM_REGION( 0x300000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "8439.bin", 0x000000, 0x80000, CRC(fbd6caa4) SHA1(73e787ae41a0ce44d48a46dd623d5e1351335e3e) )
|
||||
ROM_LOAD16_BYTE( "8441.bin", 0x000001, 0x80000, CRC(d0825af4) SHA1(a7291806893c42a115763e404337976b8c30e9e0) ) // 1 byte change from 8440
|
||||
ROM_LOAD16_BYTE( "6879.bin", 0x100000, 0x80000, CRC(4fbd1222) SHA1(9a9c9e4768c18a6a3e717605d3c88179676b6ad1) )
|
||||
ROM_LOAD16_BYTE( "6880.bin", 0x100001, 0x80000, CRC(0370bf5f) SHA1(a0ed1dbc6aeab02e8229f23f8ba4ff880d31e7a1) )
|
||||
ROM_LOAD16_BYTE( "6881.bin", 0x200000, 0x80000, CRC(8418ee17) SHA1(5666b90db00d9e88a37655bb9a714f076e2689d6) )
|
||||
ROM_LOAD16_BYTE( "6882.bin", 0x200001, 0x80000, CRC(400f5fb4) SHA1(80b1d3902fc9f6db24f49055b07bc31c0c74a993) )
|
||||
|
||||
ROM_REGION( 0x80000, "upd7759", 0 )
|
||||
ROM_LOAD( "modl-snd.bin", 0x000000, 0x80000, CRC(f761da41) SHA1(a07d1b4cb7ce7a24b6fb84843543b95c3aec470f) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( monopldx1 )
|
||||
ROM_REGION( 0x300000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "mdlxv1p1", 0x000000, 0x80000, CRC(48ab1691) SHA1(6df2aad02548d5239e3974a11228bc9aad8c9170) )
|
||||
ROM_LOAD16_BYTE( "mdlxv1p2", 0x000001, 0x80000, CRC(107c3e65) SHA1(e298b3a2826f92ba6119348a36bc4735e1799797) )
|
||||
ROM_LOAD16_BYTE( "6879.bin", 0x100000, 0x80000, CRC(4fbd1222) SHA1(9a9c9e4768c18a6a3e717605d3c88179676b6ad1) )
|
||||
ROM_LOAD16_BYTE( "6880.bin", 0x100001, 0x80000, CRC(0370bf5f) SHA1(a0ed1dbc6aeab02e8229f23f8ba4ff880d31e7a1) )
|
||||
ROM_LOAD16_BYTE( "6881.bin", 0x200000, 0x80000, CRC(8418ee17) SHA1(5666b90db00d9e88a37655bb9a714f076e2689d6) )
|
||||
ROM_LOAD16_BYTE( "6882.bin", 0x200001, 0x80000, CRC(400f5fb4) SHA1(80b1d3902fc9f6db24f49055b07bc31c0c74a993) )
|
||||
|
||||
ROM_REGION( 0x300000, "altrevs", 0 )
|
||||
/* p3 missing? */
|
||||
ROM_LOAD16_BYTE( "mdlxv1p4", 0x100001, 0x80000, CRC(e3fd1a27) SHA1(6bba70ff27a6d068febcbdfa1b1f8ff2ef86ef03) ) //Doesn't match set?
|
||||
|
||||
ROM_REGION( 0x80000, "upd7759", 0 )
|
||||
ROM_LOAD( "modl-snd.bin", 0x000000, 0x80000, CRC(f761da41) SHA1(a07d1b4cb7ce7a24b6fb84843543b95c3aec470f) )
|
||||
ROM_END
|
||||
@ -1010,13 +1083,14 @@ ROM_START( cashcade )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Video based titles */
|
||||
GAME( 1994, monopoly, 0, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly (JPM) (SYSTEM5 VIDEO, set 1)", 0 )
|
||||
GAME( 1994, monopolya, monopoly, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly (JPM) (SYSTEM5 VIDEO, set 2)", 0 )
|
||||
GAME( 1995, monoplcl, monopoly, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly Classic (JPM) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1995, monopldx, 0, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly Deluxe (JPM) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 199?, cashcade, 0, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Cashcade (JPM) (SYSTEM5 VIDEO)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) // shows a loading error.. is the set incomplete?
|
||||
GAME( 1994, monopoly, 0, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly (JPM) (Version 4H) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1994, monopolyd, monopoly, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly (JPM) (Version 4H, Protocol) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1994, monopoly4, monopoly, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly (JPM) (Version 4) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1994, monopoly3, monopoly, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly (JPM) (Version 3) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1995, monoplcl, monopoly, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly Classic (JPM) (Version 5) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1995, monoplcld, monopoly, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly Classic (JPM) (Version 5, Protocol) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1995, monopldx, 0, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly Deluxe (JPM) (Version 6) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1995, monopldxd, monopldx, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly Deluxe (JPM) (Version 6, Protocol) (SYSTEM5 VIDEO)", 0 )
|
||||
GAME( 1995, monopldx1, monopldx, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Monopoly Deluxe (JPM) (Version 1) (SYSTEM5 VIDEO)", MACHINE_NOT_WORKING ) // no questions?
|
||||
GAME( 199?, cashcade, 0, jpmsys5v, monopoly, jpmsys5v_state, empty_init, ROT0, "JPM", "Cashcade (JPM) (SYSTEM5 VIDEO)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) // shows a loading error.. is the set incomplete?
|
||||
|
@ -9000,21 +9000,21 @@ GAMEL( 1994, v4cmaze3_amld, v4cmaze3, crmaze, crmaze, mpu4vid_state, init
|
||||
|
||||
//Year is a guess, based on the use of the 'Coin Man' logo
|
||||
GAME( 1996?,v4mate, v4bios, mating, mating, mpu4vid_state, init_mating, ROT0, "Barcrest","The Mating Game (v0.4) (MPU4 Video)",GAME_FLAGS_OK )//SWP 0.2
|
||||
GAME( 1996?,v4mated, v4mate, mating, mating, mpu4vid_state, init_mating, ROT0, "Barcrest","The Mating Game (v0.4, Datapak) (MPU4 Video)",GAME_FLAGS )//SWP 0.2D
|
||||
GAME( 1996?,v4mated, v4mate, mating, mating, mpu4vid_state, init_mating, ROT0, "Barcrest","The Mating Game (v0.4, Datapak) (MPU4 Video)",GAME_FLAGS_OK )//SWP 0.2D
|
||||
|
||||
/* Quiz games - Questions decoded */
|
||||
|
||||
GAMEL( 1989, v4addlad, v4bios, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.1) (MPU4 Video)",GAME_FLAGS_OK,layout_v4addlad )
|
||||
GAMEL( 1989, v4addladd, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.1d) (MPU4 Video)",GAME_FLAGS,layout_v4addlad )
|
||||
GAMEL( 1989, v4addladd, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.1d) (MPU4 Video)",GAME_FLAGS_OK,layout_v4addlad )
|
||||
GAMEL( 1989, v4addlad20, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.0) (MPU4 Video)",GAME_FLAGS_OK,layout_v4addlad )
|
||||
|
||||
GAMEL( 199?, v4strike, v4bios, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5) (MPU4 Video)",GAME_FLAGS_OK,layout_v4strike )
|
||||
GAMEL( 199?, v4striked, v4strike, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5, Datapak) (MPU4 Video)",GAME_FLAGS,layout_v4strike )
|
||||
GAMEL( 199?, v4striked, v4strike, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5, Datapak) (MPU4 Video)",GAME_FLAGS_OK,layout_v4strike )
|
||||
GAMEL( 199?, v4strike2, v4strike, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.53) (MPU4 Video)",GAME_FLAGS_OK,layout_v4strike ) // The '3' is likely a machine type, not a 'version', 68k Pair ROM doesn't change
|
||||
GAMEL( 199?, v4strike2d, v4strike, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.53, Datapak) (MPU4 Video)",GAME_FLAGS,layout_v4strike )
|
||||
GAMEL( 199?, v4strike2d, v4strike, mpu4_vid_strike, strike, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.53, Datapak) (MPU4 Video)",GAME_FLAGS_OK,layout_v4strike )
|
||||
|
||||
GAMEL( 199?, v4barqst, v4bios, mpu4_vid_strike, barquest, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Barquest (v2.6) (MPU4 Video)",GAME_FLAGS_OK,layout_v4barqst )
|
||||
GAMEL( 199?, v4barqstd, v4barqst, mpu4_vid_strike, barquest, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Barquest (v2.6d) (MPU4 Video)",GAME_FLAGS,layout_v4barqst )
|
||||
GAMEL( 199?, v4barqstd, v4barqst, mpu4_vid_strike, barquest, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Barquest (v2.6d) (MPU4 Video)",GAME_FLAGS_OK,layout_v4barqst )
|
||||
|
||||
/* Quiz games - Questions not decoded properly on games below (no complete characteriser table) */
|
||||
|
||||
@ -9072,7 +9072,7 @@ GAMEL( 1991, v4psi14, v4psi, bwbvid, v4psi, mpu4vid_state, init_p
|
||||
GAMEL( 1991, v4psi14a, v4psi, bwbvid, v4psi, mpu4vid_state, init_prizeinv, ROT0, "BWB", u8"Prize Space Invaders (BWB IN2, £20, 50p/30p Play, 14\" Version 1.1, set 2) (MPU4 Video)",GAME_FLAGS,layout_v4psi )
|
||||
// these show BWB and Barcrest (older game release 'INV1' but higher version of it)
|
||||
GAMEL( 1991, v4psibc, v4psi, bwbvid, v4psi, mpu4vid_state, init_prizeinv, ROT0, "BWB / Barcrest","Prize Space Invaders (BWB INV1, 50p/30p Play, Version 1.2) (MPU4 Video)",GAME_FLAGS_OK,layout_v4psi )
|
||||
GAMEL( 1991, v4psibcd, v4psi, bwbvid, v4psi, mpu4vid_state, init_prizeinv, ROT0, "BWB / Barcrest","Prize Space Invaders (BWB INV1, 50p/30p Play, Version 1.2) (Datapak) (MPU4 Video)",GAME_FLAGS,layout_v4psi )
|
||||
GAMEL( 1991, v4psibcd, v4psi, bwbvid, v4psi, mpu4vid_state, init_prizeinv, ROT0, "BWB / Barcrest","Prize Space Invaders (BWB INV1, 50p/30p Play, Version 1.2) (Datapak) (MPU4 Video)",GAME_FLAGS_OK,layout_v4psi )
|
||||
|
||||
|
||||
// Tetris games, these were all sold as different machines so are not set as clones
|
||||
@ -9080,10 +9080,10 @@ GAME( 1989, v4tetrs, 0, bwbvid, v4tetris, mpu4vid_state, init_b
|
||||
GAME( 1989, v4tetrs1, v4tetrs, bwbvid, v4tetris, mpu4vid_state, init_bwbhack, ROT0, "BWB / Barcrest","Tetris Payout (BWB TET1 Version 2.2, set 2) (MPU4 Video)",GAME_FLAGS_OK )
|
||||
// Blox is an later version of Payout Tetris, without Tetris license? (SJM = Stuart McArthur?)
|
||||
GAME( 1990, v4blox, 0, bwbvid, v4tetris, mpu4vid_state, init_bwbhack, ROT0, "BWB / Barcrest","Blox (SJM BLOX, 50p/20p Play, Version 2.0) (MPU4 Video)",GAME_FLAGS_OK )
|
||||
GAME( 1990, v4bloxd, v4blox, bwbvid, v4tetris, mpu4vid_state, init_bwbhack, ROT0, "BWB / Barcrest","Blox (SJM BLOX, 50p/20p Play, Version 2.0) (Datapak) (MPU4 Video)",GAME_FLAGS )
|
||||
GAME( 1990, v4bloxd, v4blox, bwbvid, v4tetris, mpu4vid_state, init_bwbhack, ROT0, "BWB / Barcrest","Blox (SJM BLOX, 50p/20p Play, Version 2.0) (Datapak) (MPU4 Video)",GAME_FLAGS_OK )
|
||||
// Prize Tetris / Bullion Blox have quite different attract presentation to the above
|
||||
GAME( 1994, v4pztet, 0, bwbvid, v4pztet, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Prize Tetris (BWB) (MPU4 Video)",GAME_FLAGS_OK )
|
||||
GAME( 1994, v4pzteta, v4pztet, bwbvid, v4pztet, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Prize Tetris (BWB) (Datapak) (MPU4 Video)",GAME_FLAGS )
|
||||
GAME( 1994, v4pzteta, v4pztet, bwbvid, v4pztet, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Prize Tetris (BWB) (Datapak) (MPU4 Video)",GAME_FLAGS_OK )
|
||||
GAME( 1994, v4pztetb, v4pztet, bwbvid, v4pztet, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Prize Tetris (BWB) (Showcase) (MPU4 Video)",GAME_FLAGS_OK ) // screen telling you to exchange tickets for prizes in the 'showcase' during attract
|
||||
GAME( 1994, v4pztetc, v4pztet, bwbvid, v4pztet, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Prize Tetris (BWB) (Showcase) (Datapak) (MPU4 Video)",GAME_FLAGS )
|
||||
// this appears to be a version of Prize Tetris without the Tetris license. These don't have proper alarms, eg coin1 stuck is 'undefined'
|
||||
|
@ -3,17 +3,23 @@
|
||||
#include "emu.h"
|
||||
#include "bacta_datalogger.h"
|
||||
|
||||
#define LOG_DATA 1
|
||||
#define LOG_DATA (1U << 1)
|
||||
|
||||
#define VERBOSE (LOG_DATA)
|
||||
//#define LOG_OUTPUT_STREAM std::cout
|
||||
|
||||
#include "logmacro.h"
|
||||
|
||||
#define LOGDATA(...) LOGMASKED(LOG_DATA, __VA_ARGS__)
|
||||
|
||||
/***********************************************************************************************************
|
||||
BACTA Datalogger emulation
|
||||
The British Amusement and Catering Trade Association created a standard for the tracking of statistics
|
||||
and other features on British AWPs across hardware manufacturers.
|
||||
The specification is very simple, a 1200 baud null modem via RS232, with the logger sending an ACK
|
||||
command (0x06) on receipt of a valid character.
|
||||
As this is RS232, the logger itself can be of any design provided the acknowledgment is made where demanded
|
||||
(by, for example, Protocol game ROMS).
|
||||
In this emulation, the simplest functioning device is simulated here, derived from the rs232 null_modem.
|
||||
We only handle the feedback for acknowledgment, not any other feature.
|
||||
The specification is very simple, a 1200 baud null modem connection via RS232, with the logger sending an
|
||||
ACK command (0x06) on receipt of a valid character, and NAK (0x15) on error.
|
||||
In this emulation, the simplest possible device is simulated here, derived from the RS232 null_modem.
|
||||
We only handle the feedback for acknowledgment, and limited logging.
|
||||
************************************************************************************************************/
|
||||
|
||||
// device type definition
|
||||
@ -32,25 +38,22 @@ bacta_datalogger_device::bacta_datalogger_device(const machine_config &mconfig,
|
||||
: device_t(mconfig, BACTA_DATALOGGER, tag, owner, clock),
|
||||
device_serial_interface(mconfig, *this),
|
||||
m_rxd_handler(*this),
|
||||
m_output_char(0),
|
||||
m_timer_poll(nullptr)
|
||||
m_last_input(0),
|
||||
m_output_char(0)
|
||||
{
|
||||
}
|
||||
|
||||
void bacta_datalogger_device::device_start()
|
||||
{
|
||||
m_rxd_handler.resolve_safe();
|
||||
|
||||
m_timer_poll = timer_alloc(TIMER_POLL);
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(bacta_datalogger_device::update_serial)
|
||||
void bacta_datalogger_device::device_reset()
|
||||
{
|
||||
int startbits = 1;
|
||||
int databits = 8;
|
||||
parity_t parity = device_serial_interface::PARITY_ODD;
|
||||
stop_bits_t stopbits = device_serial_interface::STOP_BITS_1; // 1 stop bit
|
||||
stop_bits_t stopbits = device_serial_interface::STOP_BITS_1;
|
||||
|
||||
set_data_frame(startbits, databits, parity, stopbits);
|
||||
|
||||
@ -58,39 +61,17 @@ WRITE_LINE_MEMBER(bacta_datalogger_device::update_serial)
|
||||
|
||||
set_rcv_rate(1200);
|
||||
|
||||
// output_rxd(1);
|
||||
output_rxd(1);
|
||||
}
|
||||
|
||||
void bacta_datalogger_device::device_reset()
|
||||
void bacta_datalogger_device::tx_queue()
|
||||
{
|
||||
update_serial(0);
|
||||
queue();
|
||||
}
|
||||
|
||||
void bacta_datalogger_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
switch (id)
|
||||
if (is_transmit_register_empty())
|
||||
{
|
||||
case TIMER_POLL:
|
||||
queue();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void bacta_datalogger_device::queue()
|
||||
{
|
||||
if (m_output_char != 0)
|
||||
{
|
||||
if (is_transmit_register_empty())
|
||||
if (m_output_char != 0)
|
||||
{
|
||||
transmit_register_setup(m_output_char);
|
||||
m_timer_poll->adjust(attotime::never);
|
||||
return;
|
||||
|
||||
m_timer_poll->adjust(attotime::from_hz(1200));
|
||||
m_output_char = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -102,7 +83,7 @@ void bacta_datalogger_device::tra_callback()
|
||||
|
||||
void bacta_datalogger_device::tra_complete()
|
||||
{
|
||||
queue();
|
||||
tx_queue();
|
||||
}
|
||||
|
||||
void bacta_datalogger_device::rcv_complete()
|
||||
@ -112,110 +93,125 @@ void bacta_datalogger_device::rcv_complete()
|
||||
receive_register_extract();
|
||||
|
||||
data = get_received_char();
|
||||
if (!is_receive_parity_error())
|
||||
if (data > 0x7f)
|
||||
{
|
||||
if (data != 0x00)
|
||||
data &= ~0x80;
|
||||
LOGDATA("Retransmission of %x\n",data);
|
||||
if ( data == m_last_input)
|
||||
{
|
||||
if (LOG_DATA)
|
||||
{
|
||||
switch (data)
|
||||
{
|
||||
case 0x01:
|
||||
logerror("(%c) Prize 1 vend or 0x01\n",data);
|
||||
break;
|
||||
case 0x02:
|
||||
logerror("(%c) Prize 2 vend or 0x02\n",data);
|
||||
break;
|
||||
case 0x03:
|
||||
logerror("(%c) Prize 3 vend or 0x03\n",data);
|
||||
break;
|
||||
case 0x04:
|
||||
logerror("(%c) Prize 4 vend or 0x04\n",data);
|
||||
break;
|
||||
case 0x05:
|
||||
logerror("(%c) Remote Credit or 0x05\n",data);
|
||||
break;
|
||||
case 0x07:
|
||||
logerror("(%c) Idle or 0x07\n",data);
|
||||
break;
|
||||
case 0x08:
|
||||
logerror("(%c) Change or 0x08\n",data);
|
||||
break;
|
||||
case 0x09:
|
||||
case 0x0a:
|
||||
case 0x0b:
|
||||
case 0x0c:
|
||||
case 0x0d:
|
||||
case 0x0e:
|
||||
case 0x0f:
|
||||
logerror("(%c) User defined message or 0x%x\n",data,data);
|
||||
break;
|
||||
case 0x2b:
|
||||
logerror("(%c) Cashbox door open 0x2b\n",data);
|
||||
case 0x2c:
|
||||
logerror("(%c) Cashbox door closed 0x2c\n",data);
|
||||
case 0x2d:
|
||||
logerror("(%c) Service door open 0x2d\n",data);
|
||||
case 0x2e:
|
||||
logerror("(%c) Service door closed 0x2e\n",data);
|
||||
case 0x61:
|
||||
logerror("(%c) Coin Tube / Hopper Levels 0x61 \n",data);
|
||||
break;
|
||||
case 0x62:
|
||||
logerror("(%c) Secondary message (0x%x), next byte is message length\n",data,data);
|
||||
break;
|
||||
case 0x63:
|
||||
logerror("(%c) Critical Fault 0x63\n",data);
|
||||
break;
|
||||
case 0x64:
|
||||
logerror("(%c) Non Critical Fault 0x64\n",data);
|
||||
break;
|
||||
case 0x65:
|
||||
logerror("(%c) Manufacturer Message Header 0x65, next byte is message length\n",data);
|
||||
break;
|
||||
case 0x66:
|
||||
logerror("(%c) Potential Parameter Data request 0x66, not currently supported\n",data);
|
||||
break;
|
||||
case 0x67:
|
||||
logerror("(%c) Potential Parameter Report request 0x67, not currently supported\n",data);
|
||||
break;
|
||||
case 0x68:
|
||||
logerror("(%c) Multi-Stake Multi-Game message 0x68\n",data);
|
||||
break;
|
||||
case 0x69:
|
||||
logerror("(%c) Cashless source 0x69\n",data);
|
||||
break;
|
||||
case 0x70:
|
||||
case 0x71:
|
||||
case 0x72:
|
||||
case 0x73:
|
||||
case 0x74:
|
||||
case 0x75:
|
||||
case 0x76:
|
||||
case 0x77:
|
||||
case 0x78:
|
||||
case 0x79:
|
||||
case 0x7a:
|
||||
case 0x7b:
|
||||
case 0x7c:
|
||||
case 0x7d:
|
||||
case 0x7e:
|
||||
case 0x7f:
|
||||
logerror("(%c) User defined message (0x%x), next byte is message length\n",data,data);
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror("(%c) Received: %02x\n",data, data);
|
||||
break;
|
||||
}
|
||||
m_output_char = 0x06;//ACK
|
||||
queue();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (data != 0x00)
|
||||
{
|
||||
m_last_input = data;
|
||||
switch (data)
|
||||
{
|
||||
case 0x01:
|
||||
LOGDATA("(%c) Prize 1 vend or 0x01\n",data);
|
||||
break;
|
||||
case 0x02:
|
||||
LOGDATA("(%c) Prize 2 vend or 0x02\n",data);
|
||||
break;
|
||||
case 0x03:
|
||||
LOGDATA("(%c) Prize 3 vend or 0x03\n",data);
|
||||
break;
|
||||
case 0x04:
|
||||
LOGDATA("(%c) Prize 4 vend or 0x04\n",data);
|
||||
break;
|
||||
case 0x05:
|
||||
LOGDATA("(%c) Remote Credit or 0x05\n",data);
|
||||
break;
|
||||
case 0x07:
|
||||
LOGDATA("(%c) Idle or 0x07\n",data);
|
||||
break;
|
||||
case 0x08:
|
||||
LOGDATA("(%c) Change or 0x08\n",data);
|
||||
break;
|
||||
case 0x09:
|
||||
case 0x0a:
|
||||
case 0x0b:
|
||||
case 0x0c:
|
||||
case 0x0d:
|
||||
case 0x0e:
|
||||
case 0x0f:
|
||||
LOGDATA("(%c) User defined message or 0x0%x\n",data,data);
|
||||
break;
|
||||
case 0x2b:
|
||||
LOGDATA("(%c) Cashbox door open 0x2b\n",data);
|
||||
break;
|
||||
case 0x2c:
|
||||
LOGDATA("(%c) Cashbox door closed 0x2c\n",data);
|
||||
break;
|
||||
case 0x2d:
|
||||
LOGDATA("(%c) Service door open 0x2d\n",data);
|
||||
break;
|
||||
case 0x2e:
|
||||
LOGDATA("(%c) Service door closed 0x2e\n",data);
|
||||
break;
|
||||
case 0x60:
|
||||
LOGDATA("(%c) Primary message (0x%x), next byte is message length\n",data,data);
|
||||
break;
|
||||
case 0x61:
|
||||
LOGDATA("(%c) Coin Tube / Hopper Levels 0x61 \n",data);
|
||||
break;
|
||||
case 0x62:
|
||||
LOGDATA("(%c) Secondary message (0x%x), next byte is message length\n",data,data);
|
||||
break;
|
||||
case 0x63:
|
||||
LOGDATA("(%c) Critical Fault 0x63\n",data);
|
||||
break;
|
||||
case 0x64:
|
||||
LOGDATA("(%c) Non Critical Fault 0x64\n",data);
|
||||
break;
|
||||
case 0x65:
|
||||
LOGDATA("(%c) Manufacturer Message Header 0x65, next byte is message length\n",data);
|
||||
break;
|
||||
case 0x66:
|
||||
LOGDATA("(%c) Potential Parameter Data request 0x66, not currently supported\n",data);
|
||||
break;
|
||||
case 0x67:
|
||||
LOGDATA("(%c) Potential Parameter Report request 0x67, not currently supported\n",data);
|
||||
break;
|
||||
case 0x68:
|
||||
LOGDATA("(%c) Multi-Stake Multi-Game message 0x68\n",data);
|
||||
break;
|
||||
case 0x69:
|
||||
LOGDATA("(%c) Cashless source 0x69\n",data);
|
||||
break;
|
||||
case 0x70:
|
||||
case 0x71:
|
||||
case 0x72:
|
||||
case 0x73:
|
||||
case 0x74:
|
||||
case 0x75:
|
||||
case 0x76:
|
||||
case 0x77:
|
||||
case 0x78:
|
||||
case 0x79:
|
||||
case 0x7a:
|
||||
case 0x7b:
|
||||
case 0x7c:
|
||||
case 0x7d:
|
||||
case 0x7e:
|
||||
case 0x7f:
|
||||
LOGDATA("(%c) User defined message (0x%x), next byte is message length\n",data,data);
|
||||
break;
|
||||
|
||||
default:
|
||||
LOGDATA("(%c) Received: %02x\n",data, data);
|
||||
break;
|
||||
}
|
||||
m_output_char = 0x06;//ACK
|
||||
tx_queue();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_output_char = 0x15;//NAK
|
||||
queue();
|
||||
{
|
||||
if (data != 0x00)
|
||||
{
|
||||
m_output_char = 0x15;//NAK
|
||||
tx_queue();
|
||||
}
|
||||
}
|
||||
}
|
@ -11,32 +11,27 @@ class bacta_datalogger_device : public device_t,
|
||||
public:
|
||||
bacta_datalogger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
virtual WRITE_LINE_MEMBER( write_txd ) { device_serial_interface::rx_w(state); }
|
||||
virtual WRITE_LINE_MEMBER( write_txd ) {device_serial_interface::rx_w(state); }
|
||||
auto rxd_handler() { return m_rxd_handler.bind(); }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( output_rxd ) { m_rxd_handler(state); }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(update_serial);
|
||||
|
||||
protected:
|
||||
bacta_datalogger_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
virtual void tra_callback() override;
|
||||
virtual void tra_complete() override;
|
||||
virtual void rcv_complete() override;
|
||||
|
||||
private:
|
||||
static constexpr int TIMER_POLL = 1;
|
||||
|
||||
void queue();
|
||||
void tx_queue();
|
||||
|
||||
devcb_write_line m_rxd_handler;
|
||||
uint8_t m_last_input;
|
||||
uint8_t m_output_char;
|
||||
emu_timer *m_timer_poll;
|
||||
};
|
||||
|
||||
DECLARE_DEVICE_TYPE(BACTA_DATALOGGER, bacta_datalogger_device)
|
||||
|
@ -18410,9 +18410,14 @@ j_unk //
|
||||
@source:jpmsys5.cpp
|
||||
cashcade // Cashcade (JPM)
|
||||
monoplcl // Monopoly Classic (JPM)
|
||||
monoplcld //
|
||||
monopldx // Monopoly Deluxe (JPM)
|
||||
monopldx1 // Monopoly Deluxe (JPM)
|
||||
monopldxd //
|
||||
monopoly // Monopoly (JPM)
|
||||
monopolya // Monopoly (JPM)
|
||||
monopolyd // Monopoly (JPM)
|
||||
monopoly4 // Monopoly (JPM)
|
||||
monopoly3 // Monopoly (JPM)
|
||||
|
||||
@source:jpmsys5sw.cpp
|
||||
j5ar80 // Around The World In Eighty Days (JPM)
|
||||
|
Loading…
Reference in New Issue
Block a user