summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2022-08-05 23:33:08 +0200
committer hap <happppp@users.noreply.github.com>2022-08-05 23:33:08 +0200
commit9399b0f4c530c4503d941dfb9c107e4a1197141c (patch)
tree8dbf8fe8cec42faf1bc844cb3f7c6eaef88155c3
parentf9725bbe954c5a02192c465eda20e1f1fa452af3 (diff)
New machines marked as NOT_WORKING
---------------------------------- Game Pachinko [hap, Sean Riddle, Rik]
-rw-r--r--src/devices/cpu/tms1000/tms2400.cpp30
-rw-r--r--src/devices/cpu/tms1000/tms2400.h5
-rw-r--r--src/mame/handheld/hh_tms1k.cpp101
-rw-r--r--src/mame/handheld/hh_tms1k.h2
-rw-r--r--src/mame/mame.lst1
5 files changed, 133 insertions, 6 deletions
diff --git a/src/devices/cpu/tms1000/tms2400.cpp b/src/devices/cpu/tms1000/tms2400.cpp
index 0db73189547..2e073b44d84 100644
--- a/src/devices/cpu/tms1000/tms2400.cpp
+++ b/src/devices/cpu/tms1000/tms2400.cpp
@@ -20,9 +20,21 @@ DEFINE_DEVICE_TYPE(TMS2600, tms2600_cpu_device, "tms2600", "Texas Instruments TM
DEFINE_DEVICE_TYPE(TMS2670, tms2670_cpu_device, "tms2670", "Texas Instruments TMS2670") // high voltage version, 1 R pin removed for Vpp
+// internal memory maps
+void tms2400_cpu_device::program_12bit_8(address_map &map)
+{
+ map(0x000, 0xfff).rom();
+}
+
+void tms2400_cpu_device::data_256x4(address_map &map)
+{
+ map(0x00, 0xff).ram();
+}
+
+
// device definitions
tms2400_cpu_device::tms2400_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms2400_cpu_device(mconfig, TMS2400, tag, owner, clock, 8 /* o pins */, 7 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 4 /* x width */, 12 /* prg width */, address_map_constructor(FUNC(tms2400_cpu_device::program_11bit_8), this), 8 /* data width */, address_map_constructor(FUNC(tms2400_cpu_device::data_128x4), this))
+ : tms2400_cpu_device(mconfig, TMS2400, tag, owner, clock, 8 /* o pins */, 7 /* r pins */, 6 /* pc bits */, 8 /* byte width */, 4 /* x width */, 12 /* prg width */, address_map_constructor(FUNC(tms2400_cpu_device::program_12bit_8), this), 8 /* data width */, address_map_constructor(FUNC(tms2400_cpu_device::data_256x4), this))
{ }
tms2400_cpu_device::tms2400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
@@ -30,11 +42,11 @@ tms2400_cpu_device::tms2400_cpu_device(const machine_config &mconfig, device_typ
{ }
tms2470_cpu_device::tms2470_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms2400_cpu_device(mconfig, TMS2470, tag, owner, clock, 8, 6, 6, 8, 4, 12, address_map_constructor(FUNC(tms2470_cpu_device::program_11bit_8), this), 8, address_map_constructor(FUNC(tms2470_cpu_device::data_128x4), this))
+ : tms2400_cpu_device(mconfig, TMS2470, tag, owner, clock, 8, 6, 6, 8, 4, 12, address_map_constructor(FUNC(tms2470_cpu_device::program_12bit_8), this), 8, address_map_constructor(FUNC(tms2470_cpu_device::data_256x4), this))
{ }
tms2600_cpu_device::tms2600_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms2600_cpu_device(mconfig, TMS2600, tag, owner, clock, 8, 15, 6, 8, 4, 12, address_map_constructor(FUNC(tms2600_cpu_device::program_11bit_8), this), 8, address_map_constructor(FUNC(tms2600_cpu_device::data_128x4), this))
+ : tms2600_cpu_device(mconfig, TMS2600, tag, owner, clock, 8, 15, 6, 8, 4, 12, address_map_constructor(FUNC(tms2600_cpu_device::program_12bit_8), this), 8, address_map_constructor(FUNC(tms2600_cpu_device::data_256x4), this))
{ }
tms2600_cpu_device::tms2600_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data)
@@ -42,7 +54,7 @@ tms2600_cpu_device::tms2600_cpu_device(const machine_config &mconfig, device_typ
{ }
tms2670_cpu_device::tms2670_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : tms2600_cpu_device(mconfig, TMS2670, tag, owner, clock, 8, 14, 6, 8, 4, 12, address_map_constructor(FUNC(tms2670_cpu_device::program_11bit_8), this), 8, address_map_constructor(FUNC(tms2670_cpu_device::data_128x4), this))
+ : tms2600_cpu_device(mconfig, TMS2670, tag, owner, clock, 8, 14, 6, 8, 4, 12, address_map_constructor(FUNC(tms2670_cpu_device::program_12bit_8), this), 8, address_map_constructor(FUNC(tms2670_cpu_device::data_256x4), this))
{ }
@@ -59,4 +71,14 @@ void tms2400_cpu_device::device_reset()
tms2100_cpu_device::device_reset();
// changed/added fixed instructions
+ m_fixed_decode[0x0b] = F_TPC;
+}
+
+
+// opcode deviations
+void tms2400_cpu_device::op_ldx()
+{
+ // LDX: value is still 3 bit even though X is 4 bit
+ tms2100_cpu_device::op_ldx();
+ m_x >>= 1;
}
diff --git a/src/devices/cpu/tms1000/tms2400.h b/src/devices/cpu/tms1000/tms2400.h
index feeddde0f18..507c80f2e93 100644
--- a/src/devices/cpu/tms1000/tms2400.h
+++ b/src/devices/cpu/tms1000/tms2400.h
@@ -22,10 +22,15 @@ public:
protected:
tms2400_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data);
+ void program_12bit_8(address_map &map);
+ void data_256x4(address_map &map);
+
// overrides
virtual void device_reset() override;
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
+
+ virtual void op_ldx() override;
};
class tms2470_cpu_device : public tms2400_cpu_device
diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp
index 116cc7d1015..df513df1f60 100644
--- a/src/mame/handheld/hh_tms1k.cpp
+++ b/src/mame/handheld/hh_tms1k.cpp
@@ -55,6 +55,7 @@ TODO:
- tithermos temperature sensor comparator (right now just the digital clock works)
- is alphie(patent) the same as the final version?
- is starwbcp the same as MP3438? (starwbc is MP3438A)
+- tgpachi is not working: incomplete MCU emulation, no SVG
============================================================================
@@ -184,7 +185,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
@MPF553 TMS1670 1980, Gakken/Entex Jackpot: Gin Rummy & Black Jack (6008) (note: assume F to be a misprint)
MP7573 TMS1670 1981, Entex Select-A-Game cartridge: Football 4 -> entex/sag.cpp
*M30026 TMS2370 1983, Yaesu FT-757 Display Unit part
- *M95041 TMS2670 1983, Tsukuda Game Pachinko (have decap, missing MCU emulation)
+ @M95041 TMS2670 1983, Tsukuda Game Pachinko
inconsistent:
@@ -311,7 +312,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
#include "xl25.lh" // clickable
#include "zodiac.lh" // clickable
-//#include "hh_tms1k_test.lh" // common test-layout - use external artwork
+#include "hh_tms1k_test.lh" // common test-layout - use external artwork
// machine_start/reset
@@ -14264,6 +14265,101 @@ ROM_END
/***************************************************************************
+ Tsukuda Game Pachinko
+ * PCB label: TOFL003
+ * TMS2670 M95041 (die label: TMS2400, M95041, 40H-01D-ND02-PHI0032-TTL O300-R300)
+ * TMS1024 I/O expander
+ * cyan/red/green VFD display NEC FIP9AM31T no. 21-84, 1-bit sound
+
+***************************************************************************/
+
+class tgpachi_state : public hh_tms1k_state
+{
+public:
+ tgpachi_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_tms1k_state(mconfig, type, tag),
+ m_expander(*this, "expander")
+ { }
+
+ void tgpachi(machine_config &config);
+
+private:
+ required_device<tms1024_device> m_expander;
+ void expander_w(offs_t offset, u8 data);
+
+ virtual void write_r(u32 data);
+ virtual void write_o(u16 data);
+};
+
+// handlers
+
+void tgpachi_state::expander_w(offs_t offset, u8 data)
+{
+}
+
+void tgpachi_state::write_r(u32 data)
+{
+}
+
+void tgpachi_state::write_o(u16 data)
+{
+}
+
+// config
+
+static INPUT_PORTS_START( tgpachi )
+ PORT_START("IN.0") // K
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) // Slot
+INPUT_PORTS_END
+
+void tgpachi_state::tgpachi(machine_config &config)
+{
+ // basic machine hardware
+ TMS2670(config, m_maincpu, 450000); // approximation - RC osc. R=47K, C=47pF
+ m_maincpu->k().set_ioport("IN.0");
+ m_maincpu->r().set(FUNC(tgpachi_state::write_r));
+ m_maincpu->o().set(FUNC(tgpachi_state::write_o));
+
+ TMS1024(config, m_expander).set_ms(1); // MS tied high
+ m_expander->write_port4_callback().set(FUNC(tgpachi_state::expander_w));
+ m_expander->write_port5_callback().set(FUNC(tgpachi_state::expander_w));
+ m_expander->write_port6_callback().set(FUNC(tgpachi_state::expander_w));
+ m_expander->write_port7_callback().set(FUNC(tgpachi_state::expander_w));
+
+ // video hardware
+ PWM_DISPLAY(config, m_display).set_size(8, 20);
+ config.set_default_layout(layout_hh_tms1k_test);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker);
+ m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( tgpachi )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m95041", 0x0000, 0x1000, CRC(18b39629) SHA1(46bbe2028717ab4a1ca92f45496f7636e1c81fcf) )
+
+ ROM_REGION( 759, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms2100_common1_micro.pla", 0, 759, CRC(4a60382f) SHA1(f66ed530ca3869367fc7afacd0b985d555781ba2) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms2100_tgpachi_output.pla", 0, 557, CRC(90849b91) SHA1(ed19444b655c48bbf2a662478d46c045d900080d) )
+
+ ROM_REGION( 100000, "screen", 0)
+ ROM_LOAD( "tgpachi.svg", 0, 100000, NO_DUMP )
+ROM_END
+
+
+
+
+
+/***************************************************************************
+
U.S. Games Super Sports-4
* TMS1100 MP1219 (no decap)
* 4 7seg LEDs, 49 other LEDs, 1-bit sound
@@ -14726,6 +14822,7 @@ CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, tbreakup_state, emp
CONS( 1980, phpball, 0, 0, phpball, phpball, phpball_state, empty_init, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1982, tdracula, 0, 0, tdracula, tdracula, tdracula_state, empty_init, "Tsukuda", "The Dracula (Tsukuda)", MACHINE_SUPPORTS_SAVE )
+CONS( 1983, tgpachi, 0, 0, tgpachi, tgpachi, tgpachi_state, empty_init, "Tsukuda", "Game Pachinko", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1980, ssports4, 0, 0, ssports4, ssports4, ssports4_state, empty_init, "U.S. Games", "Super Sports-4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
diff --git a/src/mame/handheld/hh_tms1k.h b/src/mame/handheld/hh_tms1k.h
index 607aad7aa8e..dc7f79479c5 100644
--- a/src/mame/handheld/hh_tms1k.h
+++ b/src/mame/handheld/hh_tms1k.h
@@ -15,6 +15,8 @@
#include "cpu/tms1000/tms1000c.h"
#include "cpu/tms1000/tms1100.h"
#include "cpu/tms1000/tms1400.h"
+#include "cpu/tms1000/tms2100.h"
+#include "cpu/tms1000/tms2400.h"
#include "cpu/tms1000/tms0970.h"
#include "cpu/tms1000/tms0980.h"
#include "cpu/tms1000/tms0270.h"
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index e817eaaa842..a0ec18c72e1 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -16864,6 +16864,7 @@ tc7atc // Bandai
tcfball // Tandy Corporation
tcfballa // Tandy Corporation
tdracula // Tsukuda
+tgpachi // Tsukuda
ti1000 // Texas Instruments
ti1250 // Texas Instruments
ti125076 // Texas Instruments