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]
This commit is contained in:
Robbbert 2021-09-11 14:43:21 +10:00
parent 668f3fd816
commit 63e2028788
6 changed files with 642 additions and 2 deletions

View File

@ -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",

View File

@ -1045,6 +1045,7 @@ rbmk.cpp
rcorsair.cpp
re900.cpp
realbrk.cpp
recel.cpp
redalert.cpp
redclash.cpp
relief.cpp

View File

@ -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" )

519
src/mame/drivers/recel.cpp Normal file
View File

@ -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<pps4_2_device> m_maincpu;
required_region_ptr<u8> m_pm;
required_shared_ptr<u8> 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<<offset);
else
m_strobe &= ~(1<<offset);
//LOG("%s: strobe is now[%x], data was %x\n", __FUNCTION__, m_strobe, data);
}
}
void recel_state::display_w(offs_t offset, u8 data) // to be tested
{
static const uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0 }; // 7448
data ^= 0xff; // It was stored in the 10788 inverted
u8 a = patterns[BIT(data, 0, 4)];
u8 b = patterns[BIT(data, 4, 4)];
// LOG("%s: offset:%d data:%02x a:%02x b:%02x\n", __FUNCTION__, offset, data, a, b);
m_digit[offset] = a;
m_digit[offset + 16] = b;
}
u8 recel_state::nvram_r(offs_t offset) // to be tested
{
u8 data = 0x0f;
switch (offset)
{
case 0: // group A
data = m_nvram_data; // the data bit goes into i/o 0
LOG("%s: NVRAM READ @[%02x] -> %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)

102
src/mame/layout/recel.lay Normal file
View File

@ -0,0 +1,102 @@
<?xml version="1.0"?>
<!--
license:CC0
copyright-holders:Robbbert
-->
<mamelayout version="2">
<element name="digit" defstate="0">
<led7seg>
<color red="1.0" green="0.0" blue="0.0" />
</led7seg>
</element>
<element name="red_led">
<disk state="0">
<color red="1.0" green="1.0" blue="0.0" />
</disk>
</element>
<element name="P0"><text string="Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P2"><text string="Ball"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P7"><text string="1 2 3 4 5"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<group name="score">
<repeat count="6">
<param name="n" start="~s~" increment="-1" />
<param name="x" start="0" increment="44" />
<element name="digit~n~" ref="digit">
<bounds x="~x~" y="0" width="34" height="39" />
</element>
</repeat>
</group>
<view name="Default Layout">
<bounds left="0" top="20" right="274" bottom="394" />
<!-- LEDs -->
<!-- Player 1 Score -->
<param name="s" value="7" />
<group ref="score">
<bounds left="10" top="45" right="264" bottom="84" />
</group>
<!-- Player 2 Score -->
<param name="s" value="23" />
<group ref="score">
<bounds left="10" top="105" right="264" bottom="144" />
</group>
<!-- Player 3 Score -->
<param name="s" value="31" />
<group ref="score">
<bounds left="10" top="165" right="264" bottom="204" />
</group>
<!-- Player 4 Score -->
<param name="s" value="15" />
<group ref="score">
<bounds left="10" top="225" right="264" bottom="264" />
</group>
<!-- Credits and Balls -->
<element name="digit0" ref="digit">
<bounds left="10" top="345" right="44" bottom="384" />
</element>
<element name="digit1" ref="digit">
<bounds left="54" top="345" right="88" bottom="384" />
</element>
<element name="digit17" ref="digit">
<bounds left="142" top="345" right="176" bottom="384" />
</element>
<element ref="P0"><bounds left="180" right="240" top="330" bottom="342" /></element>
<element ref="P1"><bounds left="20" right="80" top="330" bottom="342" /></element>
<element ref="P2"><bounds left="110" right="168" top="270" bottom="282" /></element>
<element name="text1" ref="P3"><bounds left="100" right="180" top="30" bottom="42" /></element>
<element name="text2" ref="P4"><bounds left="100" right="180" top="90" bottom="102" /></element>
<element name="text3" ref="P5"><bounds left="100" right="180" top="150" bottom="162" /></element>
<element name="text4" ref="P6"><bounds left="100" right="180" top="210" bottom="222" /></element>
<element ref="P7"><bounds left="110" right="168" top="290" bottom="302" /></element>
<element name="led1" ref="red_led">
<bounds left="114" right="119" top="305" bottom="310" />
</element>
<element name="led2" ref="red_led">
<bounds left="124" right="129" top="305" bottom="310" />
</element>
<element name="led3" ref="red_led">
<bounds left="134" right="139" top="305" bottom="310" />
</element>
<element name="led4" ref="red_led">
<bounds left="146" right="151" top="305" bottom="310" />
</element>
<element name="led5" ref="red_led">
<bounds left="156" right="161" top="305" bottom="310" />
</element>
</view>
</mamelayout>

View File

@ -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