diff options
author | 2022-08-05 23:33:08 +0200 | |
---|---|---|
committer | 2022-08-05 23:33:08 +0200 | |
commit | 9399b0f4c530c4503d941dfb9c107e4a1197141c (patch) | |
tree | 8dbf8fe8cec42faf1bc844cb3f7c6eaef88155c3 | |
parent | f9725bbe954c5a02192c465eda20e1f1fa452af3 (diff) |
New machines marked as NOT_WORKING
----------------------------------
Game Pachinko [hap, Sean Riddle, Rik]
-rw-r--r-- | src/devices/cpu/tms1000/tms2400.cpp | 30 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms2400.h | 5 | ||||
-rw-r--r-- | src/mame/handheld/hh_tms1k.cpp | 101 | ||||
-rw-r--r-- | src/mame/handheld/hh_tms1k.h | 2 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
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 |