summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/4roses.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/4roses.cpp')
-rw-r--r--src/mame/drivers/4roses.cpp591
1 files changed, 0 insertions, 591 deletions
diff --git a/src/mame/drivers/4roses.cpp b/src/mame/drivers/4roses.cpp
deleted file mode 100644
index 391cf24948f..00000000000
--- a/src/mame/drivers/4roses.cpp
+++ /dev/null
@@ -1,591 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Roberto Fresca
-/**********************************************************************************
-
- FOUR ROSES.
-
- Driver by Roberto Fresca.
-
-
-***********************************************************************************
-
-
- The hardware is composed by:
-
- CPU: 1x R65C02P2 (main) at 2MHz.
- 1x EP87C750EBPN (8-bit microcontroller family 1K/64 OTP ROM, low pin count)
-
- Sound: 1x WF19054 (AY-3-8910 compatible) at 2MHz.
- 1x TDA2003 (audio amp).
-
- Video: 1x HD46505 (CRT controller)
- I/O: Custom logic.
-
- RAM: 1x Elite MT LP62256E-70LL (32Kx8 SRAM, 70ns)
- NVRAM: 1x Elite MT LP6264D-70LL (8Kx8 SRAM, 70ns)
- ROMs: 1x TMS27C512 (10).
- 1x TMS27C256 (20).
- 1x M27C4001 (30).
- 1x M27C512 (4.10).
-
- PLDs: 1x PALCE22V10H (read protected)
-
- Clock: 1x 16MHz Crystal.
-
- Other: 1x JAMMA edge connector.
- 1x trimmer (volume).
- 1x 8 DIP switches bank (SW1).
- 1x 4 DIP switches bank (SW2).
- 3x pushbutton (SW3-statistic, SW4-management, SW5-ricarica).
- 1x battery.
-
-
- GENERAL NOTES:
-
- - The game is based on Funworld/Tab/CMC games, but the hardware is completely different.
- It has more complex improvements (encryption, MCU, banks, etc...)
- - The program ROM is encrypted.
- - The color palettes are stored in a normal ROM.
-
-
-***********************************************************************************
-
-
- Memory Map
- ----------
-
- $0000 - $7FFF Still unknown...
- $8000 - $FFFF ROM Space.
-
-
-***********************************************************************************
-
-
- Connectors, DIPs and instructions,
- from original datasheet...
-
- ---------------------|--|-----------------
- Components | | solder
- ---------------------|--|-----------------
- GND |01| GND
- GND |02| GND
- Ricarica |03| +12V. Lamp.
- Remote |04| +5V. Lamp.
- Cancel / Play Take |05| Lamp Cancel (Play Take)
- Start |06| Lamp Start
- Hold 5 / Half Take |07| Lamp Hold 5 / Half Take
- Hold 1 |08| Lamp Hold 1
- Hold 2 / Small |09| Lamp Hold 2 / Small
- Hold 4 / Big |10| Lamp Hold 4 / Big
- Hold 3 |11| Lamp Hold 3
- Ticket sensor |12| Ticket drive
- Coin 1 A |13| Coin 2 B
- Management |14| (n/c)
- GND |15| Statistic
- Blue |16| Sync
- Red |17| Green
- Hopper sensor |18| GND
- Speaker (+) |19| Speaker (-)
- Hopper drive |20| Charge Counter
- Factory Counter |21| Discharge Counter
- +5V. Counter |22| +12V. Counter
- +12V. |23| +12V.
- (n/c) |24| (n/c)
- +5V. |25| +5V.
- +5V. |26| +5V.
- GND |27| GND
- GND |28| GND
-
-
- ------------------------------------------------------------
- DIP SW.#1 1 2 3 4 5 6 7 8
- ------------------------------------------------------------
- Remote 10 OFF
- Remote 100 ON
- Hopper OFF OFF
- Ticket ON OFF
- Ticket + hopper OFF ON
- Ticket + hopper ON ON
- CoinA: 1 coin 1 credit OFF OFF
- CoinA: 1 coin 5 credits OFF ON
- CoinA: 1 coin 2 credits ON OFF
- CoinA: 1 coin 10 credits ON ON
- CoinB: A x1 OFF
- CoinB: A x10 ON
- Skills without consuming 1 coin OFF
- Skills consuming 1 coin ON
- Select with cards OFF
- Select without cards ON
- ------------------------------------------------------------
-
- --------------------------------------------
- DIP SW.#2 1 2 3 4
- --------------------------------------------
- Game with cards OFF OFF
- Game with balls ON OFF
- Game with roses OFF ON
- Game allow choose ON ON
- View YES OFF
- View NO ON
- Normal Points Table OFF
- Points Table in Super Game ON
- --------------------------------------------
-
-
- Instructions:
- =============
-
- Turn on the machine getting STATISTIC & MANAGEMENT buttons pressed.
-
- STATISTICS = Show credits in/out.
- To cancel statistics press CANCEL for some seconds.
-
- MANAGEMENT = Settings.
- The following menu will show up:
-
- HOLD3 = Verify In/Out, even when the stats were cleared.
- HOLD2 + HOLD4 = Modify maximum bet, pressing HOLD1.
- Modify minimum bet, pressing HOLD2.
- Modify percentage (1, 2, 3, 4), pressing HOLD3.
-
- Press START to exit from programming mode.
-
-
-***********************************************************************************
-
- [2008/12/12]
- - Initial release.
- - Added technical notes.
-
-
- *** TO DO ***
-
- - Decrypt the program ROMs.
- - Fix memory map.
- - Fix GFX decode.
- - Fix color decode routines.
- - Proper inputs.
- - MCU simulation.
- - Dump/decap the MCU.
-
-
-***********************************************************************************/
-
-
-#include "emu.h"
-#include "includes/funworld.h"
-
-#include "cpu/m6502/m65c02.h"
-#include "machine/nvram.h"
-#include "sound/ay8910.h"
-#include "video/mc6845.h"
-
-#include "screen.h"
-#include "speaker.h"
-
-
-#define MASTER_CLOCK XTAL(16'000'000)
-
-class _4roses_state : public funworld_state
-{
-public:
- _4roses_state(const machine_config &mconfig, device_type type, const char *tag)
- : funworld_state(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- {
- }
-
- void driver_init() override;
- void _4roses(machine_config &config);
-
-protected:
- required_device<cpu_device> m_maincpu;
-
-private:
- DECLARE_READ8_MEMBER(_4roses_opcode_r);
-
- void _4roses_map(address_map &map);
- void _4roses_opcodes_map(address_map &map);
-};
-
-class rugby_state : public _4roses_state
-{
-public:
- rugby_state(const machine_config &mconfig, device_type type, const char *tag)
- : _4roses_state(mconfig, type, tag)
- {
- }
-
- void driver_init() override;
- void rugby(machine_config &config);
-
-private:
- DECLARE_READ8_MEMBER(rugby_opcode_r);
-
- void rugby_map(address_map &map);
- void rugby_opcodes_map(address_map &map);
-};
-
-/**********************
-* Read/Write Handlers *
-**********************/
-
-
-
-/*************************
-* Memory map information *
-*************************/
-
-void _4roses_state::_4roses_map(address_map &map)
-{
- map(0x0000, 0x07ff).ram(); // .share("nvram");
- map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
- map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
- map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
- map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- map(0x4000, 0x4fff).ram().w(FUNC(_4roses_state::funworld_videoram_w)).share("videoram");
- map(0x5000, 0x5fff).ram().w(FUNC(_4roses_state::funworld_colorram_w)).share("colorram");
- map(0x6000, 0xffff).rom().region("maincpu", 0x6000);
-}
-
-READ8_MEMBER(_4roses_state::_4roses_opcode_r)
-{
- uint8_t data = m_maincpu->space(AS_PROGRAM).read_byte(offset);
-
- switch (offset & 0x7c00)
- {
- case 0x6000:
- data = bitswap<8>(data ^ 0x68, 4, 3, 2, 1, 0, 7, 6, 5);
- break;
-
- case 0x6400:
- data = bitswap<8>(data ^ 0x3f, 3, 4, 2, 5, 1, 6, 0, 7);
- break;
-
- case 0x6800:
- data = bitswap<8>(data ^ 0x6a, 7, 0, 2, 1, 4, 3, 6, 5);
- break;
-
- case 0x6c00:
- data = bitswap<8>(data ^ 0x5e, 6, 1, 4, 5, 2, 3, 0, 7);
- break;
-
- case 0x7000:
- data = bitswap<8>(data ^ 0x34, 3, 7, 2, 6, 1, 5, 0, 4);
- break;
-
- case 0x7400:
- data = bitswap<8>(data ^ 0x43, 7, 2, 5, 0, 6, 1, 3, 4);
- break;
- }
-
- return data;
-}
-
-void _4roses_state::_4roses_opcodes_map(address_map &map)
-{
- map(0x0000, 0x7fff).r(FUNC(_4roses_state::_4roses_opcode_r));
- map(0x8000, 0xffff).rom().region("maincpu", 0x8000);
-}
-
-void rugby_state::rugby_map(address_map &map)
-{
- map(0x0000, 0x07ff).ram(); // .share("nvram");
- map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r));
- map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w));
- map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w));
- map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
- map(0x2000, 0xffff).rom().region("maincpu", 0x2000);
- map(0x6000, 0x6fff).ram().w(FUNC(rugby_state::funworld_videoram_w)).share("videoram");
- map(0x7000, 0x7fff).ram().w(FUNC(rugby_state::funworld_colorram_w)).share("colorram");
-}
-
-READ8_MEMBER(rugby_state::rugby_opcode_r)
-{
- uint8_t data = m_maincpu->space(AS_PROGRAM).read_byte(offset);
- if ((offset >> 12) == 4)
- data = bitswap<8>(data ^ 0xae, 2, 3, 0, 5, 6, 4, 7, 1);
- return data;
-}
-
-void rugby_state::rugby_opcodes_map(address_map &map)
-{
- map(0x0000, 0x7fff).r(FUNC(rugby_state::rugby_opcode_r));
- map(0x8000, 0xffff).rom().region("maincpu", 0x8000);
-}
-
-/*
- Unknown R/W
- -----------
-
-
-*/
-
-
-/*************************
-* Input ports *
-*************************/
-
-static INPUT_PORTS_START( 4roses )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-1") PORT_CODE(KEYCODE_1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-2") PORT_CODE(KEYCODE_2)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-3") PORT_CODE(KEYCODE_3)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-4") PORT_CODE(KEYCODE_4)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-5") PORT_CODE(KEYCODE_5)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-6") PORT_CODE(KEYCODE_6)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-7") PORT_CODE(KEYCODE_7)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-8") PORT_CODE(KEYCODE_8)
-
- PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-1") PORT_CODE(KEYCODE_Q)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-2") PORT_CODE(KEYCODE_W)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-3") PORT_CODE(KEYCODE_E)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-4") PORT_CODE(KEYCODE_R)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-5") PORT_CODE(KEYCODE_T)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-6") PORT_CODE(KEYCODE_Y)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-7") PORT_CODE(KEYCODE_U)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1-8") PORT_CODE(KEYCODE_I)
-
- PORT_START("IN2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-1") PORT_CODE(KEYCODE_A)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-2") PORT_CODE(KEYCODE_S)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-3") PORT_CODE(KEYCODE_D)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-4") PORT_CODE(KEYCODE_F)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-5") PORT_CODE(KEYCODE_G)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-6") PORT_CODE(KEYCODE_H)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-7") PORT_CODE(KEYCODE_J)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-8") PORT_CODE(KEYCODE_K)
-
- PORT_START("IN3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-1") PORT_CODE(KEYCODE_Z)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-2") PORT_CODE(KEYCODE_X)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-3") PORT_CODE(KEYCODE_C)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-4") PORT_CODE(KEYCODE_V)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-5") PORT_CODE(KEYCODE_B)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-6") PORT_CODE(KEYCODE_N)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-7") PORT_CODE(KEYCODE_M)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-8") PORT_CODE(KEYCODE_L)
-
- PORT_START("SW1")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("SW2") /* this bank is x4 DIP switches */
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-INPUT_PORTS_END
-
-
-/*************************
-* Graphics Layouts *
-*************************/
-
-static const gfx_layout charlayout =
-{
-/* WRONG... Must be changed */
- 4,
- 8,
-// 0x1000,
- RGN_FRAC(1,2),
- 4,
-// { 0, 4, 0x8000*8, 0x8000*8+4 },
- { RGN_FRAC(0,2), RGN_FRAC(0,2) + 4, RGN_FRAC(1,2), RGN_FRAC(1,2) + 4 },
- { 3, 2, 1, 0 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*4*2
-};
-
-
-/******************************
-* Graphics Decode Information *
-******************************/
-
-static GFXDECODE_START( gfx_4roses )
- GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 16 )
-GFXDECODE_END
-
-
-/**************************
-* Machine Drivers *
-**************************/
-
-void _4roses_state::_4roses(machine_config &config)
-{
- /* basic machine hardware */
- M65C02(config, m_maincpu, MASTER_CLOCK/8); /* 2MHz, guess */
- m_maincpu->set_addrmap(AS_PROGRAM, &_4roses_state::_4roses_map);
- m_maincpu->set_addrmap(AS_OPCODES, &_4roses_state::_4roses_opcodes_map);
-
-// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
-
- /* video hardware */
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size((124+1)*4, (30+1)*8); /* guess. taken from funworld games */
- screen.set_visarea(0*4, 96*4-1, 0*8, 29*8-1); /* guess. taken from funworld games */
- screen.set_screen_update(FUNC(_4roses_state::screen_update_funworld));
-
- GFXDECODE(config, m_gfxdecode, "palette", gfx_4roses);
-
- PALETTE(config, "palette", FUNC(_4roses_state::funworld_palette), 0x1000);
-
- mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/8)); /* 2MHz, guess */
- crtc.set_screen("screen");
- crtc.set_show_border_area(false);
- crtc.set_char_width(4);
- //crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- AY8910(config, "ay8910", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 2.5); /* 2MHz, guess */
-}
-
-void rugby_state::rugby(machine_config &config)
-{
- _4roses(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &rugby_state::rugby_map);
- m_maincpu->set_addrmap(AS_OPCODES, &rugby_state::rugby_opcodes_map);
-}
-
-
-/*************************
-* Rom Load *
-*************************/
-
-ROM_START( 4roses )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* encrypted program ROM...*/
- ROM_LOAD( "4.10.u32", 0x00000, 0x10000, CRC(e94440e9) SHA1(b2f81ba79f1f40ed35e45fd80c17eb8529ccdb4c) )
-
- ROM_REGION( 0x0400, "mcu", 0 ) /* protected... no dump available */
- ROM_LOAD( "ep87c750ebpn_no_dump.u41", 0x0000, 0x0400, NO_DUMP )
-
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "30.u17", 0x00000, 0x80000, CRC(daefacc2) SHA1(5896e9da06fde39770fcdc585881b8c689b34369) )
-
- ROM_REGION( 0x18000, "proms", 0 )
- ROM_LOAD( "20.u43", 0x00000, 0x08000, CRC(f206b4d3) SHA1(dfee226a9e01ddacf09995ec4e027b0ed4dffe7e) )
- ROM_LOAD( "10.u39", 0x08000, 0x10000, CRC(87dcf9c5) SHA1(b289527b8d9db1e91adf85b53233415c6969f4d4) )
-
- ROM_REGION( 0x02dd, "plds", 0 )
- ROM_LOAD( "palce22v10h.u29", 0x0000, 0x02dd, BAD_DUMP CRC(5c4e9024) SHA1(e9d1e4df3d79c21f4ce053a84bb7b7a43d650f91) )
-ROM_END
-
-ROM_START( 4rosesa )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* encrypted program ROM...*/
- ROM_LOAD( "4.u15", 0x00000, 0x10000, CRC(66bb5b67) SHA1(438371c3918f0a285cb19caa650739df9fb24800) )
-
- ROM_REGION( 0x0400, "mcu", 0 ) /* protected... no dump available */
- ROM_LOAD( "ep87c750ebpn_no_dump.u41", 0x0000, 0x0400, NO_DUMP )
-
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "30.u17", 0x00000, 0x80000, CRC(daefacc2) SHA1(5896e9da06fde39770fcdc585881b8c689b34369) )
-
- ROM_REGION( 0x20000, "proms", 0 )
- ROM_LOAD( "20.ub5", 0x00000, 0x10000, CRC(01cc8b15) SHA1(f8e1fa7c0a4ae35debf8eecde31471049308cd60) )
- ROM_LOAD( "10.ua5", 0x10000, 0x10000, CRC(87dcf9c5) SHA1(b289527b8d9db1e91adf85b53233415c6969f4d4) )
-
- ROM_REGION( 0x02dd, "plds", 0 )
- ROM_LOAD( "palce22v10h.u29", 0x0000, 0x02dd, BAD_DUMP CRC(5c4e9024) SHA1(e9d1e4df3d79c21f4ce053a84bb7b7a43d650f91) )
-ROM_END
-
-/*
-2x 6821
-6845
-AY-3-8910
-
-no cpu... cpu seem a 44 plcc chip with name scratched off...
-
-pcb is almost the same as "Four Roses"
-*/
-ROM_START( rugby )
- ROM_REGION( 0x10000, "maincpu", 0 ) /* encrypted program ROM...*/
- ROM_LOAD( "rugby1.u15", 0x00000, 0x10000, CRC(6ac45fa7) SHA1(dba936d236d57172e56143a9858e5052009e4346) )
-
- ROM_REGION( 0x0400, "mcu", 0 ) /* protected... no dump available */
- ROM_LOAD( "ep87c750ebpn_no_dump.u41", 0x0000, 0x0400, NO_DUMP )
-
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "rugby2.u17", 0x00000, 0x40000, CRC(822eb316) SHA1(8568f5a67f6a54858841e6832dc987f72dd911e2) )
- ROM_LOAD( "rugby3.u18", 0x40000, 0x40000, CRC(536c56c1) SHA1(a7812f0a854c5138fb7412d656de128ff094010f) )
-
- ROM_REGION( 0x10000, "proms", 0 )
- ROM_LOAD( "rugby4.u5", 0x00000, 0x10000, CRC(dc1eb4cd) SHA1(fb7b933a6e4307ee693c4f4bb3630b98a0c60f16) )
-ROM_END
-
-
-/**************************
-* Driver Initialization *
-**************************/
-
-void _4roses_state::driver_init()
-{
- uint8_t *rom = memregion("maincpu")->base();
- for (offs_t addr = 0x8000; addr < 0x10000; addr++)
- rom[addr] = bitswap<8>(rom[addr] ^ 0xca, 6, 5, 4, 3, 2, 1, 0, 7);
-}
-
-void rugby_state::driver_init()
-{
- uint8_t *rom = memregion("maincpu")->base();
- for (offs_t addr = 0x8000; addr < 0x10000; addr++)
- rom[addr] = bitswap<8>(rom[addr], 6, 7, 4, 5, 2, 3, 0, 1);
-}
-
-
-/*************************
-* Game Drivers *
-*************************/
-
-/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1999, 4roses, 0, _4roses, 4roses, _4roses_state, driver_init, ROT0, "<unknown>", "Four Roses (encrypted, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-GAME( 1999, 4rosesa, 4roses, _4roses, 4roses, _4roses_state, driver_init, ROT0, "<unknown>", "Four Roses (encrypted, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
-GAME( 1999, rugby, 0, rugby, 4roses, rugby_state, driver_init, ROT0, "C.M.C.", "Rugby? (four roses hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )