From 63e202878820a0d6ae84aafa5fb25b0b359aa1a1 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sat, 11 Sep 2021 14:43:21 +1000 Subject: New machines marked as NOT_WORKING ---------------------------------- Recel Bios Alaska Hot & Cold Screech Mr Evil Torneo Crazy Race Fair Fight Poker Plus Mr Doom Cavalier Swashbuckler Don Quijote The Flipper Game Black Magic 4 [Robbbert] --- scripts/target/mame/arcade.lua | 1 + src/mame/arcade.flt | 1 + src/mame/drivers/peyper.cpp | 4 +- src/mame/drivers/recel.cpp | 519 +++++++++++++++++++++++++++++++++++++++++ src/mame/layout/recel.lay | 102 ++++++++ src/mame/mame.lst | 17 ++ 6 files changed, 642 insertions(+), 2 deletions(-) create mode 100644 src/mame/drivers/recel.cpp create mode 100644 src/mame/layout/recel.lay diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 09284ac9036..54265399994 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -4700,6 +4700,7 @@ files { MAME_DIR .. "src/mame/drivers/play_1.cpp", MAME_DIR .. "src/mame/drivers/play_2.cpp", MAME_DIR .. "src/mame/drivers/play_3.cpp", + MAME_DIR .. "src/mame/drivers/recel.cpp", MAME_DIR .. "src/mame/drivers/rowamet.cpp", MAME_DIR .. "src/mame/drivers/s11.cpp", MAME_DIR .. "src/mame/includes/s11.h", diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index dc8033dea1b..2445e28e1d5 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -1045,6 +1045,7 @@ rbmk.cpp rcorsair.cpp re900.cpp realbrk.cpp +recel.cpp redalert.cpp redclash.cpp relief.cpp diff --git a/src/mame/drivers/peyper.cpp b/src/mame/drivers/peyper.cpp index 81321008e57..b6007e3385b 100644 --- a/src/mame/drivers/peyper.cpp +++ b/src/mame/drivers/peyper.cpp @@ -239,7 +239,7 @@ static INPUT_PORTS_START( pbsonic_generic ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT ) // Tilt PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) // Start game - Might also display next screen in "Test Mode" PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // Small coin (25 pesetas) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) // Medium coin (50 pesetas but 100 pesetas in 'sonstwar') - never mentionned in the manuals + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) // Medium coin (50 pesetas but 100 pesetas in 'sonstwar') - never mentioned in the manuals PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) // Big coin (100 pesetas) /* DSW0 : port 0x20 - DSW0-1 is bit 7 ... DSW0-8 is bit 0 */ @@ -259,7 +259,7 @@ static INPUT_PORTS_START( pbsonic_generic ) PORT_DIPNAME( 0x04, 0x00, "Balls" ) // Bolas/Partida PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x04, "5" ) - PORT_DIPNAME( 0x03, 0x00, "Replay at / High-score" ) // Puntos/Premios - high-score not mentionned in some manuals - values are game specific + PORT_DIPNAME( 0x03, 0x00, "Replay at / High-score" ) // Puntos/Premios - high-score not mentioned in some manuals - values are game specific PORT_DIPSETTING( 0x00, "0k 0k and 0k / 0k" ) PORT_DIPSETTING( 0x01, "0k 0k and 0k / 0k" ) PORT_DIPSETTING( 0x02, "0k 0k and 0k / 0k" ) diff --git a/src/mame/drivers/recel.cpp b/src/mame/drivers/recel.cpp new file mode 100644 index 00000000000..a522d19a98b --- /dev/null +++ b/src/mame/drivers/recel.cpp @@ -0,0 +1,519 @@ +// license:BSD-3-Clause +// copyright-holders:Robbbert +/**************************************************************************************************** + +PINBALL +Recel/Petaco System III + +This is similar - but not the same - as Gottlieb System 1. Used by various Spanish +pinball manufacturers. Recel is the name used for export Petaco machines. + +Known machines: +Alaska, Black Magic, Black Magic 4, Cavalier, Conquistador, Crazy Race, Don Quijote, Fair Fight, +Hot & Cold, Mr Doom, Mr Evil, Poker Plus, Screech, Space Game, Swashbuckler, Torneo. + +Suspected machines: +Bingo Space, Black Aritipe, Criterium 75, Formula 1, Lucky Roll, Pin Ball, The Flipper Game. + +Chips used: +B1 A2362-13 Early RIOT-type device: Custom 1kx8 ROM, 128x4 RAM, 16x1 I/O +B2 A2361-13 Early RIOT-type device: Custom 1kx8 ROM, 128x4 RAM, 16x1 I/O +B3 11696 General Purpose I/O expander (no datasheet found, assuming it's similar to 10696) +B4 11660 Rockwell Parallel Processing System 4-bit CPU (PPS/4-2) +B5 10788 Display driver +C2 HM6508 1x 1024-bit static RAM, battery-backed. +C5 1702A Personality PROM (can be replaced by 2716 with adaptor) +C4 10738 Bus Interface Circuit } +C6 10738 Bus Interface Circuit } These 2 interface the C5 eprom to the CPU + + +ToDo: +- Everything (the code below is mostly a carry-over from gts1 and is incomplete or guesswork) +- Need dumps of bios roms from B1/B2 +- There's lots of manuals, with lots of info, but not what we need. For example, no proper schematics. +- No info on the sound (all it says is 4 TTL chips controlled by 6 bits of the IO expander) +- A plug-in printer is used to view and alter settings. We have no info about it. +- Default layout + +*****************************************************************************************************/ + + +#include "emu.h" +#include "machine/genpin.h" +#include "machine/ra17xx.h" +#include "machine/r10696.h" +#include "machine/r10788.h" +#include "cpu/pps4/pps4.h" +#include "recel.lh" + +#define VERBOSE 1 +#include "logmacro.h" + + +class recel_state : public genpin_class +{ +public: + recel_state(const machine_config &mconfig, device_type type, const char *tag) + : genpin_class(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_pm(*this, "module") // personality module + , m_nvram(*this, "nvram") + , m_switches(*this, "X%u", 0U) + , m_digit(*this, "digit%u", 0U) + { } + + void recel(machine_config &config); + +private: + u8 solenoids_r(offs_t offset); + void solenoids_w(offs_t offset, u8 data); + u8 switches_r(offs_t offset); + void switches_w(offs_t offset, u8 data); + void display_w(offs_t offset, u8 data); + u8 lamps_r(offs_t offset); + void lamps_w(offs_t offset, u8 data); + u8 nvram_r(offs_t offset); + void nvram_w(offs_t offset, u8 data); + u8 bic_r(offs_t offset); + void bic_w(offs_t offset, u8 data); + + virtual void machine_start() override; + virtual void machine_reset() override; + + void recel_map(address_map &map); + void recel_data(address_map &map); + void recel_io(address_map &map); + + required_device m_maincpu; + required_region_ptr m_pm; + required_shared_ptr m_nvram; + required_ioport_array<6> m_switches; + output_finder<32> m_digit; + + u8 m_strobe = 0; + u16 m_nvram_addr = 0; + u8 m_nvram_data = 0; + bool m_nvram_prev_clk = 0; + u8 m_prom_addr = 0; +}; + +void recel_state::recel_map(address_map &map) // need address ranges +{ + map(0x0000, 0x07ff).rom(); // ROM inside B1/B2 chips + // map(0x0800, 0x08ff).w(FUNC(recel_state::bic_w)); // set address to BIC C4 +} + +void recel_state::recel_data(address_map &map) // should be ok +{ + map(0x0000, 0x00ff).ram(); // RAM inside B1/B2 chips + map(0x0100, 0x04ff).ram().share("nvram"); // Battery-backed HM6508, stored as individual bits +} + +void recel_state::recel_io(address_map &map) // to be done +{ + //map(0x10, 0x1f).rw("b1", FUNC(ra17xx_device::io_r), FUNC(ra17xx_device::io_w)); + //map(0x20, 0x2f).rw("b2", FUNC(ra17xx_device::io_r), FUNC(ra17xx_device::io_w)); + //map(0x30, 0x3f).rw("b3", FUNC(r10696_device::io_r), FUNC(r10696_device::io_w)); + //map(0x50, 0x5f).rw("b5", FUNC(r10788_device::io_r), FUNC(r10788_device::io_w)); + // map(0x??, 0x?f).r(FUNC(recel_state::bic_r)); // get module data via BIC C6 +} + +static INPUT_PORTS_START( recel ) + PORT_START("X0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("Play/Test") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("SW.10") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("SW.20") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("SW.30") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("SW.40") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("SW.50") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("SW.60") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("SW.70") + + PORT_START("X1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("SW.11") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("SW.21") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("SW.31") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("SW.41") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("SW.51") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("SW.61") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("SW.71") + + PORT_START("X2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("SW.12") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("SW.22") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("SW.32") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("SW.42") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("SW.52") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("SW.62") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("SW.72") + + PORT_START("X3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("SW.13") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("SW.23") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("SW.33") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("SW.43") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("SW.53") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("SW.63") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("SW.73") + + PORT_START("X4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Tilt") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("SW.14") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("SW.24") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("SW.34") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("SW.44") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("SW.54") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("SW.64") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("SW.74") + + PORT_START("X5") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Reset") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Slam Tilt") +INPUT_PORTS_END + +void recel_state::machine_start() +{ + genpin_class::machine_start(); + + m_digit.resolve(); + + save_item(NAME(m_strobe)); + save_item(NAME(m_nvram_addr)); + save_item(NAME(m_nvram_data)); + save_item(NAME(m_prom_addr)); +} + +void recel_state::machine_reset() +{ + genpin_class::machine_reset(); + + m_strobe = 0; + m_nvram_addr = 0xff; + m_nvram_data = 0; + m_nvram_prev_clk = 0; + m_prom_addr = 0xff; + +} + +u8 recel_state::solenoids_r(offs_t offset) // anything to be done? +{ + u8 data = 0; + //LOG("%s: solenoid[%02x] -> %x\n", __FUNCTION__, offset, data); + return data; +} + +void recel_state::solenoids_w(offs_t offset, u8 data) // to be tested +{ + //LOG("%s: solenoid #[%02X] gets data=%X\n", __FUNCTION__, offset, data); + switch (offset) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + // sound command + break; + case 6: // knocker + if (data) + m_samples->start(0, 6); + break; + case 7: // outhole + if (data) + m_samples->start(5, 5); + break; + default: + break; + } +} + +u8 recel_state::switches_r(offs_t offset) // to be done +{ + u8 data = 0; + if (offset > 7) + for (u8 i = 0; i < 5; i++) + if (BIT(m_strobe, i)) + { + data |= BIT(m_switches[i]->read(), offset & 7); + //LOG("%s: switches[bit %X of %X, using offset of %X] got %x\n", __FUNCTION__, i, m_strobe, offset&7, data); + } + return data ? 0 : 1; // FIXME: inverted or normal? +} + +void recel_state::switches_w(offs_t offset, u8 data) // to be done +{ + // outputs O-0 to O-4 are the 5 strobe lines + if (offset < 5) + { + if (data) + m_strobe |= (1< %x\n", __FUNCTION__, m_nvram_addr, data); + break; + case 1: // group B + // read from the printer into i/o 7 + case 2: // group C + break; + } + return ~data & 1; // polarity? +} + +void recel_state::nvram_w(offs_t offset, u8 data) // to be tested +{ + m_nvram_addr &= 0x3ff; + switch (offset) + { + case 0: + // i/o 1 - data bit to nvram + // i/o 2 - enable nvram + // i/o 3 - r/w to nvram + if ((data & 12)==12) + m_nvram[m_nvram_addr] = BIT(data, 1); + else + if ((data & 12)==4) + m_nvram_data = m_nvram[m_nvram_addr]; + break; + case 1: + // i/o 4 - clock 4040 + // i/o 5 - /reset 4040 + // i/o 6 - write to printer + if (!BIT(data, 1)) + m_nvram_addr = 0; + else + if ((BIT(data, 0)==0) && m_nvram_prev_clk) // increment count on hi->lo + m_nvram_addr++; + m_nvram_prev_clk = BIT(data, 0); + break; + case 2: + break; + } +} + +u8 recel_state::lamps_r(offs_t offset) // anything to be done? +{ + u8 data = 0x0f; + //LOG("%s: offs=%d\n", __FUNCTION__, offset); + return data; +} + +void recel_state::lamps_w(offs_t offset, u8 data) // to be done +{ + //LOG("%s: offs=%d, data=%d\n", __FUNCTION__, offset, data); +} + +u8 recel_state::bic_r(offs_t offset) // to be tested +{ + // return nybble from personality module ROM + u8 data = m_pm[m_prom_addr]; + LOG("%s: PROM READ @[%03x]:%02x\n", __FUNCTION__, m_prom_addr, data); + // All 8 data lines are returned to the BIC. Perhaps it can return the high or low nybble on command? + return ~data & 15; // Todo: Inverted or normal? +} + +void recel_state::bic_w(offs_t offset, u8 data) // to be tested +{ + m_prom_addr = offset ^ 0xff; // inverted or normal? + LOG("%s: PROM addr:%02x\n", __FUNCTION__, m_prom_addr); +} + + +void recel_state::recel(machine_config & config) +{ + /* basic machine hardware */ + PPS4_2(config, m_maincpu, XTAL(3'579'545)); // divided by 18 in the CPU + m_maincpu->set_addrmap(AS_PROGRAM, &recel_state::recel_map); + m_maincpu->set_addrmap(AS_DATA, &recel_state::recel_data); + m_maincpu->set_addrmap(AS_IO, &recel_state::recel_io); + m_maincpu->dia_cb().set(FUNC(recel_state::switches_r)); + m_maincpu->do_cb().set(FUNC(recel_state::switches_w)); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + + ra17xx_device &u5(RA17XX(config, "b2", 0)); + u5.iord_cb().set(FUNC(recel_state::nvram_r)); + u5.iowr_cb().set(FUNC(recel_state::nvram_w)); // control nvram, printer + u5.set_cpu_tag(m_maincpu); + + ra17xx_device &u4(RA17XX(config, "b1", 0)); + u4.iord_cb().set(FUNC(recel_state::lamps_r)); + u4.iowr_cb().set(FUNC(recel_state::lamps_w)); // control lamps + u4.set_cpu_tag(m_maincpu); + + r10696_device &u3(R10696(config, "b3", 0)); + u3.iord_cb().set(FUNC(recel_state::solenoids_r)); + u3.iowr_cb().set(FUNC(recel_state::solenoids_w)); // to sound,solenoids,lamps + + r10788_device &u6(R10788(config, "b5", XTAL(3'579'545) / 18 )); // divided in the circuit + u6.update_cb().set(FUNC(recel_state::display_w)); + + /* Video */ + config.set_default_layout(layout_recel); + + /* Sound */ + genpin_audio(config); +} + +// Is this the correct order? +#define RECEL_BIOS \ + ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASEFF ) \ + ROM_LOAD("a2362.b2", 0x0000, 0x0400, NO_DUMP ) \ + ROM_LOAD("a2361.b1", 0x0400, 0x0400, NO_DUMP ) + + +ROM_START( recel ) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) +ROM_END + +ROM_START(r_alaska) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("al.c5", 0x0000, 0x0100, CRC(905ef624) SHA1(ab0bb2e7262650b670524ce9f88bd1f14ffd749a) ) +ROM_END + +ROM_START(r_hotcold) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("hc.c5", 0x0000, 0x0100, CRC(f58d0c05) SHA1(54ecf9f67ce3a5264bfd9c063353705f9202d524) ) +ROM_END + +ROM_START(r_screech) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("sc.c5", 0x0000, 0x0800, CRC(ddf2beac) SHA1(2ce67e2679bf7d545434a90209c462ad53c50e01) ) +ROM_END + +ROM_START(r_mrevil) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("me.c5", 0x0000, 0x0100, CRC(58cb2c60) SHA1(f6da41c54ed6f1eba10de05d87c7d956bc510b4e) ) + //ROM_LOAD( "me2.c5", 0x0000, 0x0800, CRC(5241090f) SHA1(2a3f1a0c2c313266eb39c20b8c99fc22079a52af) ) + //ROM_LOAD( "me3.c5", 0x0000, 0x0100, CRC(53ce24a0) SHA1(42d376e3e7a4e94a09db2f974af8d4869579d0f5) ) + //ROM_LOAD( "me4.c5", 0x0000, 0x0800, CRC(3abb3c80) SHA1(e691c7c10f353e2fe3e887ce86f3ca1ab1bcc288) ) +ROM_END + +ROM_START(r_torneo) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("to.c5", 0x0000, 0x0100, CRC(06518bca) SHA1(6e8d4dba3cc5713208794aafc40cad6aca558aa6) ) +ROM_END + +ROM_START(r_crzyrace) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("cr.c5", 0x0000, 0x0800, CRC(60088804) SHA1(a73a7f8a0583a79588f9823a5e65ed28edad96a3) ) +ROM_END + +ROM_START(r_fairfght) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("fa.c5", 0x0000, 0x0100, CRC(5d3694da) SHA1(4d0a8033acb6ef2e2af107f76540fd19b4a39b12) ) +ROM_END + +ROM_START(r_pokrplus) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("po.c5", 0x0000, 0x0100, CRC(60a199a8) SHA1(045d61f56ea03a694722da810d465ab65d85cbfd) ) + //ROM_LOAD( "po2.c5", 0x0000, 0x0100, CRC(571ee27b) SHA1(482a3ba18eff05bce4cab073b1f13fc2f145bb2b) ) + //ROM_LOAD( "po3.c5", 0x0000, 0x0800, CRC(fadd715a) SHA1(6c5b6e8fcf77be2b0b7076dc1139760f7e4d5688) ) +ROM_END + +ROM_START(r_mrdoom) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("md.c5", 0x0000, 0x0100, CRC(ca679a69) SHA1(f08f0cfe646f08882473dcd5d23889fffe4a03c8) ) +ROM_END + +ROM_START(r_cavalier) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("ca.c5", 0x0000, 0x0100, CRC(dc2e865f) SHA1(3f15f90dafa9d5e42381605044b6c9b529afd3af) ) + //ROM_LOAD( "ca2.c5", 0x0000, 0x0100, CRC(dc2e865f) SHA1(3f15f90dafa9d5e42381605044b6c9b529afd3af) ) + //ROM_LOAD( "ca3.c5", 0x0000, 0x0800, CRC(fddd2373) SHA1(d0c79aefd2806066455c721a1361d11d6dab7d5f) ) +ROM_END + +ROM_START(r_swash) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("sw.c5", 0x0000, 0x0100, CRC(69326f5f) SHA1(f0bb4251f579ccf97c1cabb63254ba466ccd141e) ) +ROM_END + +ROM_START(r_quijote) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("qu.c5", 0x0000, 0x0100, CRC(1fd535d0) SHA1(a9c9a72881d195a0de751f10fa54fb181523a33f) ) + //ROM_LOAD( "qu2.c5", 0x0000, 0x0100, CRC(a88224ee) SHA1(cb85edcacc6001a9d865ef7e22711d6f62f1fdc1) ) + //ROM_LOAD( "qu3.c5", 0x0000, 0x0800, CRC(6eb5a08d) SHA1(3bfec2c0fdd1d8e1b03a5c189d2f37e1a52d065b) ) +ROM_END + +ROM_START(r_flipper) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("fl.c5", 0x0000, 0x0800, CRC(76ee0370) SHA1(f2a835a0b76f7258d5e65390c239f5456e30e87a) ) +ROM_END + +ROM_START(r_blackm4) + RECEL_BIOS + + ROM_REGION( 0x0800, "module", ROMREGION_ERASEFF ) + ROM_LOAD("b4.c5", 0x0000, 0x0800, CRC(cd383f5b) SHA1(c38acaae46e5fd2660efbd0e2d35e295892e60a5) ) +ROM_END + +GAME(1977, recel, 0, recel, recel, recel_state, empty_init, ROT0, "Recel", "Recel Bios", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING) + +GAME(1978, r_alaska, recel, recel, recel, recel_state, empty_init, ROT0, "Interflip", "Alaska", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, r_hotcold, recel, recel, recel, recel_state, empty_init, ROT0, "Inder", "Hot & Cold", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, r_screech, recel, recel, recel, recel_state, empty_init, ROT0, "Inder", "Screech", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, r_mrevil, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Mr Evil", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, r_torneo, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Torneo", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, r_crzyrace, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Crazy Race", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, r_fairfght, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Fair Fight", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, r_pokrplus, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Poker Plus", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1979, r_mrdoom, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Mr Doom", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1979, r_cavalier, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Cavalier", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1979, r_swash, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Swashbuckler", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1979, r_quijote, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Don Quijote", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, r_flipper, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "The Flipper Game", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, r_blackm4, recel, recel, recel, recel_state, empty_init, ROT0, "Recel", "Black Magic 4", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/layout/recel.lay b/src/mame/layout/recel.lay new file mode 100644 index 00000000000..774896a44bd --- /dev/null +++ b/src/mame/layout/recel.lay @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 60892757b98..704e3bec33d 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -36035,6 +36035,23 @@ realbrkj // "523" Billiard Academy Real Break 1998 (Japan realbrkk // "600" Billiard Academy Real Break 1998 (Korea) realbrko // "600" Billiard Academy Real Break 1998 (Europe) +@source:recel.cpp +recel // +r_alaska // +r_blackm4 // +r_cavalier // +r_crzyrace // +r_fairfght // +r_flipper // +r_hotcold // +r_mrdoom // +r_mrevil // +r_pokrplus // +r_quijote // +r_screech // +r_swash // +r_torneo // + @source:redalert.cpp demoneye // M27 (c) 1981 panther // M27 no copyright notice -- cgit v1.2.3