summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/skylncr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/skylncr.cpp')
-rw-r--r--src/mame/drivers/skylncr.cpp1678
1 files changed, 1678 insertions, 0 deletions
diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp
new file mode 100644
index 00000000000..9eb3919b0e5
--- /dev/null
+++ b/src/mame/drivers/skylncr.cpp
@@ -0,0 +1,1678 @@
+// license:BSD-3-Clause
+// copyright-holders:Roberto Fresca, David Haywood
+/***************************************************************************************************
+
+ Sky Lancer / Butterfly / Mad Zoo / Super Star 97
+ Bordun International.
+
+ Original preliminary driver by Luca Elia.
+ Additional Work: Roberto Fresca & David Haywood.
+
+****************************************************************************************************
+
+ Notes:
+
+ - There are at least 3 different PCBs: Rolla, Sky and Cleco.
+
+ - Some of the tiles look badly scaled down, and others appear to have columns swapped.
+ This might actually be correct due to different gfx encoding for different PCBs.
+
+ - Skylncr and madzoo can run with the same program roms, they're basically graphics swaps.
+
+ - To enter the Service Mode, press F2. All the game settings are there.
+ Change regular values using DIP switches, and jackpot value using STOP2 and STOP3.
+ To exit the mode, press START. You must reset the machine (F3) to update the changes.
+
+ - Press key 0 to navigate between statistics pages. Press START to exit the mode.
+
+
+ TODO:
+
+ - Proper M5M82C255 device emulation.
+
+****************************************************************************************************
+
+ Settings:
+
+ Pressing F2, you can enter the DIP switches settings.
+ Here the translated items:
+
+ .---------------------------------------.
+ | DIP Switches Settings |
+ | |
+ | Main Game % Double-Up % |
+ | Clown % Reels Speed |
+ | Coin Scores Key In Scores |
+ | Payout Limit Key Out Score |
+ | Max Bet Min Bet |
+ | Special Bonus % Super Star % |
+ | Bonus Base Max Win Bonus |
+ | Double-Up Y/N Bonus Scores |
+ | |
+ '---------------------------------------'
+
+ 'Special Bonus' and 'Super Star' appearance, are per 1000.
+ You also can find the MAME DIP switches menu already translated.
+ The <unknown> items still need translation.
+
+ Press START (key 1) to exit the mode.
+
+
+ Bookkeeping:
+
+ Pressing BOOKKEEPING (key 0), you enter the Record Mode.
+ Here the translated items:
+
+ .---------------------------------------.
+ | Record Menu |
+ | |
+ | Play Scores Key In Total |
+ | Win Scores Key Out Total |
+ | Play Times Coin In Total |
+ | Win Times Coin Out Total |
+ | Bonus Scores Short Total |
+ | Double Play Special Times |
+ | Double Win Super Show Up |
+ | Win Times Power On Times |
+ | Loss Times Working Time H M |
+ | |
+ | Version XXXXX |
+ '---------------------------------------'
+
+ Pressing BOOKKEEPING key again, you can find 2 screens showing
+ all statistics and the whole historial by winning hand.
+
+ Press START (key 1) to exit the mode.
+
+***************************************************************************************************/
+
+
+#define MASTER_CLOCK XTAL_12MHz /* confirmed */
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "sound/ay8910.h"
+#include "machine/i8255.h"
+#include "machine/nvram.h"
+
+
+class skylncr_state : public driver_device
+{
+public:
+ skylncr_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_videoram(*this, "videoram"),
+ m_colorram(*this, "colorram"),
+ m_reeltiles_1_ram(*this, "reeltiles_1_ram"),
+ m_reeltiles_2_ram(*this, "reeltiles_2_ram"),
+ m_reeltiles_3_ram(*this, "reeltiles_3_ram"),
+ m_reeltiles_4_ram(*this, "reeltiles_4_ram"),
+ m_reeltileshigh_1_ram(*this, "rthigh_1_ram"),
+ m_reeltileshigh_2_ram(*this, "rthigh_2_ram"),
+ m_reeltileshigh_3_ram(*this, "rthigh_3_ram"),
+ m_reeltileshigh_4_ram(*this, "rthigh_4_ram"),
+ m_reelscroll1(*this, "reelscroll1"),
+ m_reelscroll2(*this, "reelscroll2"),
+ m_reelscroll3(*this, "reelscroll3"),
+ m_reelscroll4(*this, "reelscroll4"),
+ m_maincpu(*this, "maincpu"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette"),
+ m_generic_paletteram_8(*this, "paletteram"),
+ m_generic_paletteram2_8(*this, "paletteram2") { }
+
+ tilemap_t *m_tmap;
+ required_shared_ptr<UINT8> m_videoram;
+ required_shared_ptr<UINT8> m_colorram;
+ required_shared_ptr<UINT8> m_reeltiles_1_ram;
+ required_shared_ptr<UINT8> m_reeltiles_2_ram;
+ required_shared_ptr<UINT8> m_reeltiles_3_ram;
+ required_shared_ptr<UINT8> m_reeltiles_4_ram;
+ required_shared_ptr<UINT8> m_reeltileshigh_1_ram;
+ required_shared_ptr<UINT8> m_reeltileshigh_2_ram;
+ required_shared_ptr<UINT8> m_reeltileshigh_3_ram;
+ required_shared_ptr<UINT8> m_reeltileshigh_4_ram;
+ tilemap_t *m_reel_1_tilemap;
+ tilemap_t *m_reel_2_tilemap;
+ tilemap_t *m_reel_3_tilemap;
+ tilemap_t *m_reel_4_tilemap;
+ required_shared_ptr<UINT8> m_reelscroll1;
+ required_shared_ptr<UINT8> m_reelscroll2;
+ required_shared_ptr<UINT8> m_reelscroll3;
+ required_shared_ptr<UINT8> m_reelscroll4;
+ UINT8 m_nmi_enable;
+ int m_color;
+ int m_color2;
+ DECLARE_WRITE8_MEMBER(skylncr_videoram_w);
+ DECLARE_WRITE8_MEMBER(skylncr_colorram_w);
+ DECLARE_WRITE8_MEMBER(reeltiles_1_w);
+ DECLARE_WRITE8_MEMBER(reeltiles_2_w);
+ DECLARE_WRITE8_MEMBER(reeltiles_3_w);
+ DECLARE_WRITE8_MEMBER(reeltiles_4_w);
+ DECLARE_WRITE8_MEMBER(reeltileshigh_1_w);
+ DECLARE_WRITE8_MEMBER(reeltileshigh_2_w);
+ DECLARE_WRITE8_MEMBER(reeltileshigh_3_w);
+ DECLARE_WRITE8_MEMBER(reeltileshigh_4_w);
+ DECLARE_WRITE8_MEMBER(skylncr_paletteram_w);
+ DECLARE_WRITE8_MEMBER(skylncr_paletteram2_w);
+ DECLARE_WRITE8_MEMBER(reelscroll1_w);
+ DECLARE_WRITE8_MEMBER(reelscroll2_w);
+ DECLARE_WRITE8_MEMBER(reelscroll3_w);
+ DECLARE_WRITE8_MEMBER(reelscroll4_w);
+ DECLARE_WRITE8_MEMBER(skylncr_coin_w);
+ DECLARE_READ8_MEMBER(ret_ff);
+ DECLARE_READ8_MEMBER(ret_00);
+ DECLARE_WRITE8_MEMBER(skylncr_nmi_enable_w);
+ DECLARE_DRIVER_INIT(skylncr);
+ TILE_GET_INFO_MEMBER(get_tile_info);
+ TILE_GET_INFO_MEMBER(get_reel_1_tile_info);
+ TILE_GET_INFO_MEMBER(get_reel_2_tile_info);
+ TILE_GET_INFO_MEMBER(get_reel_3_tile_info);
+ TILE_GET_INFO_MEMBER(get_reel_4_tile_info);
+ virtual void video_start();
+ UINT32 screen_update_skylncr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ INTERRUPT_GEN_MEMBER(skylncr_vblank_interrupt);
+ required_device<cpu_device> m_maincpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+ optional_shared_ptr<UINT8> m_generic_paletteram_8;
+ optional_shared_ptr<UINT8> m_generic_paletteram2_8;
+};
+
+
+/**************************************
+* Video Hardware *
+**************************************/
+
+WRITE8_MEMBER(skylncr_state::skylncr_videoram_w)
+{
+ m_videoram[offset] = data;
+ m_tmap->mark_tile_dirty(offset);
+}
+
+WRITE8_MEMBER(skylncr_state::skylncr_colorram_w)
+{
+ m_colorram[offset] = data;
+ m_tmap->mark_tile_dirty(offset);
+}
+
+
+TILE_GET_INFO_MEMBER(skylncr_state::get_tile_info)
+{
+ UINT16 code = m_videoram[ tile_index ] + (m_colorram[ tile_index ] << 8);
+ int pal = (code & 0x8000) >> 15;
+ SET_TILE_INFO_MEMBER(0, code, pal^1, TILE_FLIPYX( 0 ));
+}
+
+TILE_GET_INFO_MEMBER(skylncr_state::get_reel_1_tile_info)
+{
+ UINT16 code = m_reeltiles_1_ram[ tile_index ] + (m_reeltileshigh_1_ram[ tile_index ] << 8);
+ int pal = (code & 0x8000) >> 15;
+ SET_TILE_INFO_MEMBER(1, code&0x7fff, pal^1, TILE_FLIPYX( 0 ));
+}
+
+TILE_GET_INFO_MEMBER(skylncr_state::get_reel_2_tile_info)
+{
+ UINT16 code = m_reeltiles_2_ram[ tile_index ] + (m_reeltileshigh_2_ram[ tile_index ] << 8);
+ int pal = (code & 0x8000) >> 15;
+ SET_TILE_INFO_MEMBER(1, code, pal^1, TILE_FLIPYX( 0 ));
+}
+
+TILE_GET_INFO_MEMBER(skylncr_state::get_reel_3_tile_info)
+{
+ UINT16 code = m_reeltiles_3_ram[ tile_index ] + (m_reeltileshigh_3_ram[ tile_index ] << 8);
+ int pal = (code & 0x8000) >> 15;
+ SET_TILE_INFO_MEMBER(1, code, pal^1, TILE_FLIPYX( 0 ));
+}
+
+TILE_GET_INFO_MEMBER(skylncr_state::get_reel_4_tile_info)
+{
+ UINT16 code = m_reeltiles_4_ram[ tile_index ] + (m_reeltileshigh_4_ram[ tile_index ] << 8);
+ int pal = (code & 0x8000) >> 15;
+ SET_TILE_INFO_MEMBER(1, code, pal^1, TILE_FLIPYX( 0 ));
+}
+
+
+void skylncr_state::video_start()
+{
+ m_tmap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20 );
+
+ m_reel_1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_reel_1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 );
+ m_reel_2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_reel_2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 );
+ m_reel_3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_reel_3_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 );
+ m_reel_4_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_reel_4_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 );
+
+ m_reel_2_tilemap->set_scroll_cols(0x40);
+ m_reel_3_tilemap->set_scroll_cols(0x40);
+ m_reel_4_tilemap->set_scroll_cols(0x40);
+
+ m_reel_2_tilemap->set_transparent_pen(0);
+ m_reel_3_tilemap->set_transparent_pen(0);
+ m_reel_4_tilemap->set_transparent_pen(0);
+
+
+ m_tmap->set_transparent_pen(0);
+}
+
+
+UINT32 skylncr_state::screen_update_skylncr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ int i;
+
+ bitmap.fill(0, cliprect);
+ m_reel_1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+
+ // are these hardcoded, or registers?
+ const rectangle visible1(0*8, (20+48)*8-1, 4*8, (4+7)*8-1);
+ const rectangle visible2(0*8, (20+48)*8-1, 12*8, (12+7)*8-1);
+ const rectangle visible3(0*8, (20+48)*8-1, 20*8, (20+7)*8-1);
+
+ for (i= 0;i < 64;i++)
+ {
+ m_reel_2_tilemap->set_scrolly(i, m_reelscroll2[i]);
+ m_reel_3_tilemap->set_scrolly(i, m_reelscroll3[i]);
+ m_reel_4_tilemap->set_scrolly(i, m_reelscroll4[i]);
+ }
+
+ m_reel_2_tilemap->draw(screen, bitmap, visible1, 0, 0);
+ m_reel_3_tilemap->draw(screen, bitmap, visible2, 0, 0);
+ m_reel_4_tilemap->draw(screen, bitmap, visible3, 0, 0);
+
+
+ m_tmap->draw(screen, bitmap, cliprect, 0, 0);
+ return 0;
+}
+
+WRITE8_MEMBER(skylncr_state::reeltiles_1_w)
+{
+ m_reeltiles_1_ram[offset] = data;
+ m_reel_1_tilemap->mark_tile_dirty(offset);
+}
+
+WRITE8_MEMBER(skylncr_state::reeltiles_2_w)
+{
+ m_reeltiles_2_ram[offset] = data;
+ m_reel_2_tilemap->mark_tile_dirty(offset);
+}
+
+WRITE8_MEMBER(skylncr_state::reeltiles_3_w)
+{
+ m_reeltiles_3_ram[offset] = data;
+ m_reel_3_tilemap->mark_tile_dirty(offset);
+}
+
+WRITE8_MEMBER(skylncr_state::reeltiles_4_w)
+{
+ m_reeltiles_4_ram[offset] = data;
+ m_reel_4_tilemap->mark_tile_dirty(offset);
+}
+
+WRITE8_MEMBER(skylncr_state::reeltileshigh_1_w)
+{
+ m_reeltileshigh_1_ram[offset] = data;
+ m_reel_1_tilemap->mark_tile_dirty(offset);
+}
+
+WRITE8_MEMBER(skylncr_state::reeltileshigh_2_w)
+{
+ m_reeltileshigh_2_ram[offset] = data;
+ m_reel_2_tilemap->mark_tile_dirty(offset);
+}
+
+WRITE8_MEMBER(skylncr_state::reeltileshigh_3_w)
+{
+ m_reeltileshigh_3_ram[offset] = data;
+ m_reel_3_tilemap->mark_tile_dirty(offset);
+}
+
+WRITE8_MEMBER(skylncr_state::reeltileshigh_4_w)
+{
+ m_reeltileshigh_4_ram[offset] = data;
+ m_reel_4_tilemap->mark_tile_dirty(offset);
+}
+
+// FIXME: this is a VGA-style RAMDAC, so use one
+// instead of this custom implementation
+
+WRITE8_MEMBER(skylncr_state::skylncr_paletteram_w)
+{
+ if (offset == 0)
+ {
+ m_color = data;
+ }
+ else
+ {
+ int r,g,b;
+ m_generic_paletteram_8[m_color] = data;
+
+ r = m_generic_paletteram_8[(m_color/3 * 3) + 0];
+ g = m_generic_paletteram_8[(m_color/3 * 3) + 1];
+ b = m_generic_paletteram_8[(m_color/3 * 3) + 2];
+ r = (r << 2) | (r >> 4);
+ g = (g << 2) | (g >> 4);
+ b = (b << 2) | (b >> 4);
+
+ m_palette->set_pen_color(m_color / 3, rgb_t(r, g, b));
+ m_color = (m_color + 1) % (0x100 * 3);
+ }
+}
+
+WRITE8_MEMBER(skylncr_state::skylncr_paletteram2_w)
+{
+ if (offset == 0)
+ {
+ m_color2 = data;
+ }
+ else
+ {
+ int r,g,b;
+ m_generic_paletteram2_8[m_color2] = data;
+
+ r = m_generic_paletteram2_8[(m_color2/3 * 3) + 0];
+ g = m_generic_paletteram2_8[(m_color2/3 * 3) + 1];
+ b = m_generic_paletteram2_8[(m_color2/3 * 3) + 2];
+ r = (r << 2) | (r >> 4);
+ g = (g << 2) | (g >> 4);
+ b = (b << 2) | (b >> 4);
+
+ m_palette->set_pen_color(0x100 + m_color2 / 3, rgb_t(r, g, b));
+ m_color2 = (m_color2 + 1) % (0x100 * 3);
+ }
+}
+
+WRITE8_MEMBER(skylncr_state::reelscroll1_w)
+{
+ m_reelscroll1[offset] = data;
+}
+
+WRITE8_MEMBER(skylncr_state::reelscroll2_w)
+{
+ m_reelscroll2[offset] = data;
+}
+
+WRITE8_MEMBER(skylncr_state::reelscroll3_w)
+{
+ m_reelscroll3[offset] = data;
+}
+
+WRITE8_MEMBER(skylncr_state::reelscroll4_w)
+{
+ m_reelscroll4[offset] = data;
+}
+
+
+/************************************
+* Other Handlers *
+************************************/
+
+WRITE8_MEMBER(skylncr_state::skylncr_coin_w)
+{
+ coin_counter_w(machine(), 0, data & 0x04);
+}
+
+READ8_MEMBER(skylncr_state::ret_ff)
+{
+ return 0xff;
+}
+
+#ifdef UNUSED_FUNCTION
+READ8_MEMBER(skylncr_state::ret_00)
+{
+ return 0x00;
+}
+#endif
+
+WRITE8_MEMBER(skylncr_state::skylncr_nmi_enable_w)
+{
+ m_nmi_enable = data & 0x10;
+}
+
+
+/**************************************
+* Memory Map *
+**************************************/
+
+static ADDRESS_MAP_START( mem_map_skylncr, AS_PROGRAM, 8, skylncr_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
+
+ AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skylncr_videoram_w ) AM_SHARE("videoram")
+ AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(skylncr_colorram_w ) AM_SHARE("colorram")
+
+ AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(reeltiles_1_w ) AM_SHARE("reeltiles_1_ram")
+ AM_RANGE(0x9a00, 0x9bff) AM_RAM_WRITE(reeltiles_2_w ) AM_SHARE("reeltiles_2_ram")
+ AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(reeltiles_3_w ) AM_SHARE("reeltiles_3_ram")
+ AM_RANGE(0x9e00, 0x9fff) AM_RAM_WRITE(reeltiles_4_w ) AM_SHARE("reeltiles_4_ram")
+ AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(reeltileshigh_1_w ) AM_SHARE("rthigh_1_ram")
+ AM_RANGE(0xa200, 0xa3ff) AM_RAM_WRITE(reeltileshigh_2_w ) AM_SHARE("rthigh_2_ram")
+ AM_RANGE(0xa400, 0xa5ff) AM_RAM_WRITE(reeltileshigh_3_w ) AM_SHARE("rthigh_3_ram")
+ AM_RANGE(0xa600, 0xa7ff) AM_RAM_WRITE(reeltileshigh_4_w ) AM_SHARE("rthigh_4_ram")
+
+ AM_RANGE(0xaa55, 0xaa55) AM_READ(ret_ff )
+
+ AM_RANGE(0xb000, 0xb03f) AM_RAM_WRITE(reelscroll1_w) AM_SHARE("reelscroll1")
+ AM_RANGE(0xb040, 0xb07f) AM_RAM_WRITE(reelscroll1_w)
+ AM_RANGE(0xb080, 0xb0bf) AM_RAM_WRITE(reelscroll1_w)
+ AM_RANGE(0xb0c0, 0xb0ff) AM_RAM_WRITE(reelscroll1_w)
+ AM_RANGE(0xb100, 0xb13f) AM_RAM_WRITE(reelscroll1_w)
+ AM_RANGE(0xb140, 0xb17f) AM_RAM_WRITE(reelscroll1_w)
+ AM_RANGE(0xb180, 0xb1bf) AM_RAM_WRITE(reelscroll1_w)
+ AM_RANGE(0xb1c0, 0xb1ff) AM_RAM_WRITE(reelscroll1_w)
+
+ AM_RANGE(0xb200, 0xb23f) AM_RAM_WRITE(reelscroll2_w) AM_SHARE("reelscroll2")
+ AM_RANGE(0xb240, 0xb27f) AM_RAM_WRITE(reelscroll2_w)
+ AM_RANGE(0xb280, 0xb2bf) AM_RAM_WRITE(reelscroll2_w)
+ AM_RANGE(0xb2c0, 0xb2ff) AM_RAM_WRITE(reelscroll2_w)
+ AM_RANGE(0xb300, 0xb33f) AM_RAM_WRITE(reelscroll2_w)
+ AM_RANGE(0xb340, 0xb37f) AM_RAM_WRITE(reelscroll2_w)
+ AM_RANGE(0xb380, 0xb3bf) AM_RAM_WRITE(reelscroll2_w)
+ AM_RANGE(0xb3c0, 0xb3ff) AM_RAM_WRITE(reelscroll2_w)
+
+ AM_RANGE(0xb400, 0xb43f) AM_RAM_WRITE(reelscroll3_w) AM_SHARE("reelscroll3")
+ AM_RANGE(0xb440, 0xb47f) AM_RAM_WRITE(reelscroll3_w)
+ AM_RANGE(0xb480, 0xb4bf) AM_RAM_WRITE(reelscroll3_w)
+ AM_RANGE(0xb4c0, 0xb4ff) AM_RAM_WRITE(reelscroll3_w)
+ AM_RANGE(0xb500, 0xb53f) AM_RAM_WRITE(reelscroll3_w)
+ AM_RANGE(0xb540, 0xb57f) AM_RAM_WRITE(reelscroll3_w)
+ AM_RANGE(0xb580, 0xb5bf) AM_RAM_WRITE(reelscroll3_w)
+ AM_RANGE(0xb5c0, 0xb5ff) AM_RAM_WRITE(reelscroll3_w)
+
+ AM_RANGE(0xb600, 0xb63f) AM_RAM_WRITE(reelscroll4_w) AM_SHARE("reelscroll4")
+ AM_RANGE(0xb640, 0xb67f) AM_RAM_WRITE(reelscroll4_w)
+ AM_RANGE(0xb680, 0xb6bf) AM_RAM_WRITE(reelscroll4_w)
+ AM_RANGE(0xb6c0, 0xb6ff) AM_RAM_WRITE(reelscroll4_w)
+ AM_RANGE(0xb700, 0xb73f) AM_RAM_WRITE(reelscroll4_w)
+ AM_RANGE(0xb740, 0xb77f) AM_RAM_WRITE(reelscroll4_w)
+ AM_RANGE(0xb780, 0xb7bf) AM_RAM_WRITE(reelscroll4_w)
+ AM_RANGE(0xb7c0, 0xb7ff) AM_RAM_WRITE(reelscroll4_w)
+
+ AM_RANGE(0xc000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( io_map_skylncr, AS_IO, 8, skylncr_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
+ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
+
+ AM_RANGE(0x20, 0x20) AM_WRITE(skylncr_coin_w )
+
+ AM_RANGE(0x30, 0x31) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
+ AM_RANGE(0x31, 0x31) AM_DEVREAD("aysnd", ay8910_device, data_r)
+
+ AM_RANGE(0x40, 0x41) AM_WRITE(skylncr_paletteram_w )
+ AM_RANGE(0x50, 0x51) AM_WRITE(skylncr_paletteram2_w )
+
+ AM_RANGE(0x70, 0x70) AM_WRITE(skylncr_nmi_enable_w )
+ADDRESS_MAP_END
+
+
+/***************************************
+* Graphics Layouts *
+***************************************/
+
+static const gfx_layout layout8x8x8 =
+{
+ 8,8,
+ RGN_FRAC(1,2),
+ 8,
+ { STEP8(0,1) },
+ {
+ 8*0,8*1,
+ RGN_FRAC(1,2)+8*0,RGN_FRAC(1,2)+8*1,
+ 8*2,8*3,
+ RGN_FRAC(1,2)+8*2,RGN_FRAC(1,2)+8*3
+ },
+ { STEP8(0,8*4) },
+ 8*8*4
+};
+
+static const gfx_layout layout8x8x8_alt = /* for sstar97 */
+{
+ 8,8,
+ RGN_FRAC(1,2),
+ 8,
+ { STEP8(0,1) },
+ {
+ 8*0,RGN_FRAC(1,2)+8*0,
+ 8*1,RGN_FRAC(1,2)+8*1,
+ 8*2,RGN_FRAC(1,2)+8*2,
+ 8*3,RGN_FRAC(1,2)+8*3
+ },
+ { STEP8(0,8*4) },
+ 8*8*4
+};
+
+static const gfx_layout layout8x32x8 =
+{
+ 8,32,
+ RGN_FRAC(1,2),
+ 8,
+ { STEP8(0,1) },
+ {
+ 8*0, 8*1,
+ RGN_FRAC(1,2)+8*0, RGN_FRAC(1,2)+8*1,
+ 8*2, 8*3,
+ RGN_FRAC(1,2)+8*2, RGN_FRAC(1,2)+8*3
+ },
+ {
+ STEP16(0,8*4),
+ STEP16(16*8*4,8*4)
+ },
+ 8*32*8/2
+};
+
+/* this will decode the big x2 x3 'correctly' however, maybe they're
+ simply not meant to appear correct? */
+static const gfx_layout layout8x32x8_rot =
+{
+ 8,32,
+ RGN_FRAC(1,2),
+ 8,
+ { STEP8(0,1) },
+ {
+ 8*0, 8*1,
+ RGN_FRAC(1,2)+8*1, RGN_FRAC(1,2)+8*0,
+ 8*2, 8*3,
+ RGN_FRAC(1,2)+8*3, RGN_FRAC(1,2)+8*2
+ },
+ {
+ STEP16(0,8*4),
+ STEP16(16*8*4,8*4)
+ },
+ 8*32*8/2
+};
+
+static const gfx_layout layout8x32x8_alt = /* for sstar97 */
+{
+ 8,32,
+ RGN_FRAC(1,2),
+ 8,
+ { STEP8(0,1) },
+ {
+ RGN_FRAC(1,2)+8*1, 8*1,
+ 8*0, RGN_FRAC(1,2)+8*0,
+ RGN_FRAC(1,2)+8*3, 8*3,
+ 8*2, RGN_FRAC(1,2)+8*2
+ },
+ {
+ STEP16(0,8*4),
+ STEP16(16*8*4,8*4)
+ },
+ 8*32*8/2
+};
+
+static const gfx_layout layout8x32x8_alt2 = /* for neraidov */
+{
+ 8,32,
+ RGN_FRAC(1,2),
+ 8,
+ { STEP8(0,1) },
+ {
+ RGN_FRAC(1,2)+8*1, 8*1,
+ RGN_FRAC(1,2)+8*0, 8*0,
+ RGN_FRAC(1,2)+8*3, 8*3,
+ RGN_FRAC(1,2)+8*2, 8*2
+ },
+ {
+ STEP16(0,8*4),
+ STEP16(16*8*4,8*4)
+ },
+ 8*32*8/2
+};
+
+
+/**************************************
+* Graphics Decode *
+**************************************/
+
+static GFXDECODE_START( skylncr )
+ GFXDECODE_ENTRY( "gfx1", 0, layout8x8x8, 0, 2 )
+ GFXDECODE_ENTRY( "gfx2", 0, layout8x32x8, 0, 2 )
+ GFXDECODE_ENTRY( "gfx2", 0, layout8x32x8_rot, 0, 2 )
+GFXDECODE_END
+
+static GFXDECODE_START( neraidou )
+ GFXDECODE_ENTRY( "gfx1", 0, layout8x8x8_alt, 0, 2 )
+ GFXDECODE_ENTRY( "gfx2", 0, layout8x32x8_alt2, 0, 2 )
+// GFXDECODE_ENTRY( "gfx2", 0, layout8x32x8_alt, 0x100, 1 )
+GFXDECODE_END
+
+static GFXDECODE_START( sstar97 )
+ GFXDECODE_ENTRY( "gfx1", 0, layout8x8x8_alt, 0, 2 )
+ GFXDECODE_ENTRY( "gfx2", 0, layout8x32x8_alt, 0, 2 )
+ GFXDECODE_ENTRY( "gfx2", 0, layout8x32x8_alt, 0x100, 1 )
+GFXDECODE_END
+
+
+/***********************************
+* Input Ports *
+***********************************/
+
+static INPUT_PORTS_START( skylncr )
+ PORT_START("IN1") /* $00 (PPI0 port A) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN2") /* $01 (PPI0 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_LOW) PORT_NAME("Down/Low") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1) PORT_NAME("Start")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN3") /* $11 (PPI1 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH) PORT_NAME("Up/High") PORT_CODE(KEYCODE_A)
+
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take Score")
+
+ PORT_START("IN4") /* $12 (PPI1 port C) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
+ PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) /* Settings */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
+
+ PORT_START("DSW1") /* $02 (PPI0 port C) */
+ PORT_DIPNAME( 0x11, 0x11, "D-UP Percentage" )
+ PORT_DIPSETTING( 0x11, "60%" )
+ PORT_DIPSETTING( 0x01, "70%" )
+ PORT_DIPSETTING( 0x10, "80%" )
+ PORT_DIPSETTING( 0x00, "90%" )
+ PORT_DIPNAME( 0x0e, 0x0e, "Main Game Percentage" )
+ PORT_DIPSETTING( 0x0e, "75%" )
+ PORT_DIPSETTING( 0x0c, "78%" )
+ PORT_DIPSETTING( 0x0a, "81%" )
+ PORT_DIPSETTING( 0x08, "84%" )
+ PORT_DIPSETTING( 0x06, "87%" )
+ PORT_DIPSETTING( 0x04, "90%" )
+ PORT_DIPSETTING( 0x02, "93%" )
+ PORT_DIPSETTING( 0x00, "96%" )
+ PORT_DIPNAME( 0x20, 0x20, "Reels Speed" )
+ PORT_DIPSETTING( 0x20, "Slow" )
+ PORT_DIPSETTING( 0x00, "Fast" )
+ PORT_DIPNAME( 0x40, 0x40, "Bonus Score" )
+ PORT_DIPSETTING( 0x40, "32" )
+ PORT_DIPSETTING( 0x00, "24" )
+ PORT_DIPNAME( 0x80, 0x00, "Key Out" )
+ PORT_DIPSETTING( 0x00, "x1" )
+ PORT_DIPSETTING( 0x80, "x100" )
+
+ PORT_START("DSW2") /* $10 (PPI1 port A) */
+ 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, "Double-Up" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x18, 0x08, "Payout Limit" )
+ PORT_DIPSETTING( 0x00, "0" )
+ PORT_DIPSETTING( 0x18, "1000" )
+ PORT_DIPSETTING( 0x10, "2000" )
+ PORT_DIPSETTING( 0x08, "5000" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0xc0, 0xc0, "Clown Percentage" )
+ PORT_DIPSETTING( 0xc0, "60%" )
+ PORT_DIPSETTING( 0x80, "70%" )
+ PORT_DIPSETTING( 0x40, "80%" )
+ PORT_DIPSETTING( 0x00, "90%" )
+
+ PORT_START("DSW3") /* AY8910 port A */
+ PORT_DIPNAME( 0x07, 0x07, "Coinage A, B & C" )
+ PORT_DIPSETTING( 0x00, "1 Coin / 1 Credit" )
+ PORT_DIPSETTING( 0x01, "1 Coin / 5 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Coin / 10 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Coin / 20 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Coin / 30 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Coin / 40 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Coin / 50 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Coin / 100 Credit" )
+ 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, "Max Win Bonus" )
+ PORT_DIPSETTING( 0x20, "10000" )
+ PORT_DIPSETTING( 0x00, "20000" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" )
+ PORT_DIPSETTING( 0xc0, "0" )
+ PORT_DIPSETTING( 0x80, "8" )
+ PORT_DIPSETTING( 0x40, "16" )
+ PORT_DIPSETTING( 0x00, "32" )
+
+ PORT_START("DSW4") /* AY8910 port B */
+ PORT_DIPNAME( 0x07, 0x07, "Remote Credits" )
+ PORT_DIPSETTING( 0x00, "1 Pulse / 100 Credits" )
+ PORT_DIPSETTING( 0x01, "1 Pulse / 110 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Pulse / 120 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Pulse / 130 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Pulse / 200 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Pulse / 400 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Pulse / 500 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Pulse / 1000 Credits" )
+ PORT_DIPNAME( 0x18, 0x00, "Max Bet" )
+ PORT_DIPSETTING( 0x18, "32" )
+ PORT_DIPSETTING( 0x10, "64" )
+ PORT_DIPSETTING( 0x08, "72" )
+ PORT_DIPSETTING( 0x00, "80" )
+ 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
+
+
+static INPUT_PORTS_START( leader )
+ PORT_START("IN1") /* $00 (PPI0 port A) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN2") /* $01 (PPI0 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET) PORT_NAME("Bet/Throttle")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_LOW) PORT_NAME("Down/Low") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1) PORT_NAME("Start")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN3") /* $11 (PPI1 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH) PORT_NAME("Up/High") PORT_CODE(KEYCODE_A)
+
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take Score")
+
+ PORT_START("IN4") /* $12 (PPI1 port C) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
+ PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) /* Settings */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
+
+ PORT_START("DSW1") /* $02 (PPI0 port C) */
+ PORT_DIPNAME( 0x11, 0x11, "Butterfly Max Mul" ) PORT_DIPLOCATION("DSW-A:!4,!5")
+ PORT_DIPSETTING( 0x11, "5" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x10, "8" )
+ PORT_DIPSETTING( 0x00, "12" )
+ PORT_DIPNAME( 0x0e, 0x00, "Main Win Rate" ) PORT_DIPLOCATION("DSW-A:!6,!7,!8")
+ PORT_DIPSETTING( 0x0e, "55%" )
+ PORT_DIPSETTING( 0x0c, "60%" )
+ PORT_DIPSETTING( 0x0a, "65%" )
+ PORT_DIPSETTING( 0x08, "70%" )
+ PORT_DIPSETTING( 0x06, "75%" )
+ PORT_DIPSETTING( 0x04, "80%" )
+ PORT_DIPSETTING( 0x02, "85%" )
+ PORT_DIPSETTING( 0x00, "90%" )
+ PORT_DIPNAME( 0x20, 0x00, "Reels Speed" ) PORT_DIPLOCATION("DSW-A:!3")
+ PORT_DIPSETTING( 0x20, "Slow" )
+ PORT_DIPSETTING( 0x00, "Fast" )
+ PORT_DIPNAME( 0x40, 0x00, "Bonus Score" ) PORT_DIPLOCATION("DSW-A:!2")
+ PORT_DIPSETTING( 0x40, "24" )
+ PORT_DIPSETTING( 0x00, "32" )
+ PORT_DIPNAME( 0x80, 0x00, "Key Out" ) PORT_DIPLOCATION("DSW-A:!1")
+ PORT_DIPSETTING( 0x00, "x1" )
+ PORT_DIPSETTING( 0x80, "x100" )
+
+ PORT_START("DSW2") /* $10 (PPI1 port A) */
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW-B:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW-B:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "Double-Up" ) PORT_DIPLOCATION("DSW-B:3")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x18, 0x18, "Refund Coin Limit" ) PORT_DIPLOCATION("DSW-B:4,5")
+ PORT_DIPSETTING( 0x00, "0" )
+ PORT_DIPSETTING( 0x18, "1000" )
+ PORT_DIPSETTING( 0x10, "2000" )
+ PORT_DIPSETTING( 0x08, "5000" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW-B:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0xc0, 0xc0, "Butterfly Win Rate" ) PORT_DIPLOCATION("DSW-B:7,8")
+ PORT_DIPSETTING( 0xc0, "15%" )
+ PORT_DIPSETTING( 0x80, "20%" )
+ PORT_DIPSETTING( 0x40, "25%" )
+ PORT_DIPSETTING( 0x00, "30%" )
+
+ PORT_START("DSW3") /* AY8910 port A */
+ PORT_DIPNAME( 0x07, 0x07, "Coinage A, B & C" ) PORT_DIPLOCATION("DSW-D:1,2,3")
+ PORT_DIPSETTING( 0x00, "1 Coin / 1 Credit" )
+ PORT_DIPSETTING( 0x01, "1 Coin / 5 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Coin / 10 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Coin / 20 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Coin / 30 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Coin / 40 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Coin / 50 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Coin / 100 Credit" )
+ PORT_DIPNAME( 0x18, 0x00, "Credit Limit" ) PORT_DIPLOCATION("DSW-D:4,5")
+ PORT_DIPSETTING( 0x00, "120000" )
+ PORT_DIPSETTING( 0x08, "100000" )
+ PORT_DIPSETTING( 0x10, "80000" )
+ PORT_DIPSETTING( 0x18, "50000" )
+ PORT_DIPNAME( 0x20, 0x20, "Max Win Bonus" ) PORT_DIPLOCATION("DSW-D:6")
+ PORT_DIPSETTING( 0x20, "10000" )
+ PORT_DIPSETTING( 0x00, "20000" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" ) PORT_DIPLOCATION("DSW-D:7,8")
+ PORT_DIPSETTING( 0xc0, "8" )
+ PORT_DIPSETTING( 0x80, "16" )
+ PORT_DIPSETTING( 0x40, "32" )
+ PORT_DIPSETTING( 0x00, "64" )
+
+ PORT_START("DSW4") /* AY8910 port B */
+ PORT_DIPNAME( 0x07, 0x07, "Remote Credits" ) PORT_DIPLOCATION("DSW-C:1,2,3")
+ PORT_DIPSETTING( 0x00, "1 Pulse / 100 Credits" )
+ PORT_DIPSETTING( 0x01, "1 Pulse / 110 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Pulse / 120 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Pulse / 130 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Pulse / 200 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Pulse / 400 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Pulse / 500 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Pulse / 1000 Credits" )
+ PORT_DIPNAME( 0x18, 0x18, "High Bet Limit" ) PORT_DIPLOCATION("DSW-C:4,5")
+ PORT_DIPSETTING( 0x18, "32" )
+ PORT_DIPSETTING( 0x10, "50" )
+ PORT_DIPSETTING( 0x08, "72" )
+ PORT_DIPSETTING( 0x00, "96" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW-C:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW-C:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, "Coin Lock" ) PORT_DIPLOCATION("DSW-C:8")
+ PORT_DIPSETTING( 0x80, "Locked" )
+ PORT_DIPSETTING( 0x00, "Normal" )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( neraidou )
+ PORT_START("IN1") /* $00 (PPI0 port A) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN2") /* $01 (PPI0 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET) PORT_NAME("Bet/Throttle")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_LOW) PORT_NAME("Down/Low") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1) PORT_NAME("Start")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN3") /* $11 (PPI1 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH) PORT_NAME("Up/High") PORT_CODE(KEYCODE_A)
+
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take Score")
+
+ PORT_START("IN4") /* $12 (PPI1 port C) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
+ PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) /* Settings */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
+
+ PORT_START("DSW1") /* $02 (PPI0 port C) */
+ PORT_DIPNAME( 0x01, 0x01, "Hardware Type (could be inverted)" ) // leave it off, otherwise the game works bad and resets
+ PORT_DIPSETTING( 0x01, "Rolla" )
+ PORT_DIPSETTING( 0x00, "Sky" )
+ PORT_DIPNAME( 0x0e, 0x0e, "Main Game Percentage" )
+ PORT_DIPSETTING( 0x0e, "91%" )
+ PORT_DIPSETTING( 0x0c, "92%" )
+ PORT_DIPSETTING( 0x0a, "93%" )
+ PORT_DIPSETTING( 0x08, "94%" )
+ PORT_DIPSETTING( 0x06, "95%" )
+ PORT_DIPSETTING( 0x04, "96%" )
+ PORT_DIPSETTING( 0x02, "97%" )
+ PORT_DIPSETTING( 0x00, "98%" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "Reels Speed" )
+ PORT_DIPSETTING( 0x20, "Slow" )
+ PORT_DIPSETTING( 0x00, "Fast" )
+ PORT_DIPNAME( 0x40, 0x40, "Bonus Rate" )
+ PORT_DIPSETTING( 0x40, "20" )
+ PORT_DIPSETTING( 0x00, "40" )
+ PORT_DIPNAME( 0x80, 0x00, "Key Out" )
+ PORT_DIPSETTING( 0x00, "x1" )
+ PORT_DIPSETTING( 0x80, "x100" )
+
+ PORT_START("DSW2") /* $10 (PPI1 port A) */
+ 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, "Double-Up" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ 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( 0xc0, 0xc0, "Butterfly Win Rate" )
+ PORT_DIPSETTING( 0xc0, "25%" )
+ PORT_DIPSETTING( 0x80, "30%" )
+ PORT_DIPSETTING( 0x40, "40%" )
+ PORT_DIPSETTING( 0x00, "50%" )
+
+ PORT_START("DSW3") /* AY8910 port A */
+ PORT_DIPNAME( 0x07, 0x07, "Coinage A, B & C" )
+ PORT_DIPSETTING( 0x00, "1 Coin / 1 Credit" )
+ PORT_DIPSETTING( 0x01, "1 Coin / 5 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Coin / 10 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Coin / 20 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Coin / 30 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Coin / 40 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Coin / 50 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Coin / 100 Credit" )
+ PORT_DIPNAME( 0x18, 0x18, "Credit Limit" )
+ PORT_DIPSETTING( 0x00, "120000" )
+ PORT_DIPSETTING( 0x08, "100000" )
+ PORT_DIPSETTING( 0x10, "80000" )
+ PORT_DIPSETTING( 0x18, "50000" )
+ PORT_DIPNAME( 0x20, 0x20, "Max Win Bonus" )
+ PORT_DIPSETTING( 0x20, "10000" )
+ PORT_DIPSETTING( 0x00, "20000" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" )
+ PORT_DIPSETTING( 0xc0, "8" )
+ PORT_DIPSETTING( 0x80, "16" )
+ PORT_DIPSETTING( 0x40, "32" )
+ PORT_DIPSETTING( 0x00, "64" )
+
+ PORT_START("DSW4") /* AY8910 port B */
+ PORT_DIPNAME( 0x07, 0x07, "Remote Credits" )
+ PORT_DIPSETTING( 0x00, "1 Pulse / 100 Credits" )
+ PORT_DIPSETTING( 0x01, "1 Pulse / 110 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Pulse / 120 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Pulse / 130 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Pulse / 200 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Pulse / 400 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Pulse / 500 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Pulse / 1000 Credits" )
+ PORT_DIPNAME( 0x18, 0x00, "High Bet Limit" )
+ PORT_DIPSETTING( 0x18, "104" )
+ PORT_DIPSETTING( 0x10, "120" )
+ PORT_DIPSETTING( 0x08, "160" )
+ PORT_DIPSETTING( 0x00, "240" )
+ 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, "Bonus? (Left Side)" )
+ PORT_DIPSETTING( 0x80, "x3" )
+ PORT_DIPSETTING( 0x00, "No Bonus" )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( gallag50 )
+ PORT_START("IN1") /* $00 (PPI0 port A) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN2") /* $01 (PPI0 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET) PORT_NAME("Bet/Throttle")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_LOW) PORT_NAME("Down/Low") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1) PORT_NAME("Start")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN3") /* $11 (PPI1 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH) PORT_NAME("Up/High") PORT_CODE(KEYCODE_A)
+
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take Score")
+
+ PORT_START("IN4") /* $12 (PPI1 port C) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
+ PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) /* Settings */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
+
+ PORT_START("DSW1") /* $02 (PPI0 port C) */
+ PORT_DIPNAME( 0x01, 0x01, "Hardware Type (could be inverted)" ) // leave it off, otherwise the game works bad and resets
+ PORT_DIPSETTING( 0x01, "Rolla" )
+ PORT_DIPSETTING( 0x00, "Sky" )
+ PORT_DIPNAME( 0x0e, 0x0e, "Main Game Percentage" )
+ PORT_DIPSETTING( 0x0e, "91%" )
+ PORT_DIPSETTING( 0x0c, "92%" )
+ PORT_DIPSETTING( 0x0a, "93%" )
+ PORT_DIPSETTING( 0x08, "94%" )
+ PORT_DIPSETTING( 0x06, "95%" )
+ PORT_DIPSETTING( 0x04, "96%" )
+ PORT_DIPSETTING( 0x02, "97%" )
+ PORT_DIPSETTING( 0x00, "98%" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "Reels Speed" )
+ PORT_DIPSETTING( 0x20, "Slow" )
+ PORT_DIPSETTING( 0x00, "Fast" )
+ PORT_DIPNAME( 0x40, 0x40, "Bonus Rate" )
+ PORT_DIPSETTING( 0x40, "24" )
+ PORT_DIPSETTING( 0x00, "32" )
+ PORT_DIPNAME( 0x80, 0x00, "Key Out" )
+ PORT_DIPSETTING( 0x00, "x1" )
+ PORT_DIPSETTING( 0x80, "x100" )
+
+ PORT_START("DSW2") /* $10 (PPI1 port A) */
+ 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, "Double-Up" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x08, 0x00, "Rolla GFX" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, "Title" )
+ PORT_DIPSETTING( 0x10, "Petalouda (Greek for Butterfly)" )
+ PORT_DIPSETTING( 0x00, "Gallag" )
+ PORT_DIPNAME( 0x20, 0x20, "Alt GFX Decode (For different HW)" ) // could be a mix with 08 'Rolla GFX'
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0xc0, 0xc0, "Butterfly Win Rate" )
+ PORT_DIPSETTING( 0xc0, "15%" )
+ PORT_DIPSETTING( 0x80, "20%" )
+ PORT_DIPSETTING( 0x40, "25%" )
+ PORT_DIPSETTING( 0x00, "30%" )
+
+ PORT_START("DSW3") /* AY8910 port A */
+ PORT_DIPNAME( 0x07, 0x07, "Coinage A, B & C" )
+ PORT_DIPSETTING( 0x00, "1 Coin / 1 Credit" )
+ PORT_DIPSETTING( 0x01, "1 Coin / 5 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Coin / 10 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Coin / 20 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Coin / 30 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Coin / 40 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Coin / 50 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Coin / 100 Credit" )
+ PORT_DIPNAME( 0x18, 0x18, "Credit Limit" )
+ PORT_DIPSETTING( 0x00, "120000" )
+ PORT_DIPSETTING( 0x08, "100000" )
+ PORT_DIPSETTING( 0x10, "80000" )
+ PORT_DIPSETTING( 0x18, "50000" )
+ PORT_DIPNAME( 0x20, 0x20, "Max Win Bonus" )
+ PORT_DIPSETTING( 0x20, "10000" )
+ PORT_DIPSETTING( 0x00, "20000" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" )
+ PORT_DIPSETTING( 0xc0, "8" )
+ PORT_DIPSETTING( 0x80, "16" )
+ PORT_DIPSETTING( 0x40, "32" )
+ PORT_DIPSETTING( 0x00, "64" )
+
+ PORT_START("DSW4") /* AY8910 port B */
+ PORT_DIPNAME( 0x07, 0x07, "Remote Credits" )
+ PORT_DIPSETTING( 0x00, "1 Pulse / 100 Credits" )
+ PORT_DIPSETTING( 0x01, "1 Pulse / 110 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Pulse / 120 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Pulse / 130 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Pulse / 200 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Pulse / 400 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Pulse / 500 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Pulse / 1000 Credits" )
+ PORT_DIPNAME( 0x18, 0x00, "High Bet Limit" )
+ PORT_DIPSETTING( 0x18, "32" )
+ PORT_DIPSETTING( 0x10, "50" )
+ PORT_DIPSETTING( 0x08, "72" )
+ PORT_DIPSETTING( 0x00, "99" )
+ PORT_DIPNAME( 0x20, 0x00, "Rolla HW" )
+ 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, "Unknown Feature" )
+ PORT_DIPSETTING( 0x80, "Full Cutted" )
+ PORT_DIPSETTING( 0x00, "Full Open" )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( sstar97 )
+ PORT_START("IN1") /* $00 (PPI0 port A) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN2") /* $01 (PPI0 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_LOW) PORT_NAME("Low") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1) PORT_NAME("Start")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("IN3") /* $11 (PPI1 port B) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("High") PORT_CODE(KEYCODE_A)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take Score")
+
+ PORT_START("IN4") /* $12 (PPI1 port C) */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
+ PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) /* Settings */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
+
+ PORT_START("DSW1") /* $02 (PPI0 port C) */
+ PORT_DIPNAME( 0x11, 0x11, "D-UP Percentage" )
+ PORT_DIPSETTING( 0x11, "60%" )
+ PORT_DIPSETTING( 0x01, "70%" )
+ PORT_DIPSETTING( 0x10, "80%" )
+ PORT_DIPSETTING( 0x00, "90%" )
+ PORT_DIPNAME( 0x0e, 0x0e, "Special Bonus Appearance (per 1000)" )
+ PORT_DIPSETTING( 0x0e, "5" )
+ PORT_DIPSETTING( 0x0c, "6" )
+ PORT_DIPSETTING( 0x0a, "7" )
+ PORT_DIPSETTING( 0x08, "8" )
+ PORT_DIPSETTING( 0x06, "9" )
+ PORT_DIPSETTING( 0x04, "10" )
+ PORT_DIPSETTING( 0x02, "11" )
+ PORT_DIPSETTING( 0x00, "12" )
+ PORT_DIPNAME( 0x20, 0x20, "Reels Speed" )
+ PORT_DIPSETTING( 0x20, "Slow" )
+ PORT_DIPSETTING( 0x00, "Fast" )
+ PORT_DIPNAME( 0x40, 0x40, "Bonus Score" )
+ PORT_DIPSETTING( 0x00, "24" )
+ PORT_DIPSETTING( 0x40, "32" )
+ PORT_DIPNAME( 0x80, 0x00, "Key Out" )
+ PORT_DIPSETTING( 0x00, "x1" )
+ PORT_DIPSETTING( 0x80, "x100" )
+
+ PORT_START("DSW2") /* $10 (PPI1 port A) */
+ PORT_DIPNAME( 0x03, 0x03, "Main Game Percentage" )
+ PORT_DIPSETTING( 0x03, "60%" )
+ PORT_DIPSETTING( 0x02, "70%" )
+ PORT_DIPSETTING( 0x01, "80%" )
+ PORT_DIPSETTING( 0x00, "90%" )
+ PORT_DIPNAME( 0x04, 0x04, "Double-Up" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x18, 0x18, "Payout Limit" )
+ PORT_DIPSETTING( 0x00, "0" )
+ PORT_DIPSETTING( 0x18, "1000" )
+ PORT_DIPSETTING( 0x10, "2000" )
+ PORT_DIPSETTING( 0x08, "5000" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0xc0, 0xc0, "Clown Percentage" )
+ PORT_DIPSETTING( 0xc0, "60%" )
+ PORT_DIPSETTING( 0x80, "70%" )
+ PORT_DIPSETTING( 0x40, "80%" )
+ PORT_DIPSETTING( 0x00, "90%" )
+
+ PORT_START("DSW3") /* AY8910 port A */
+ PORT_DIPNAME( 0x07, 0x07, "Coinage A, B & C" )
+ PORT_DIPSETTING( 0x00, "1 Coin / 1 Credit" )
+ PORT_DIPSETTING( 0x01, "1 Coin / 5 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Coin / 10 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Coin / 20 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Coin / 30 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Coin / 40 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Coin / 50 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Coin / 100 Credit" )
+ PORT_DIPNAME( 0x18, 0x18, "Base Bonus (Bonus Bottom)" )
+ PORT_DIPSETTING( 0x18, "200" )
+ PORT_DIPSETTING( 0x10, "400" )
+ PORT_DIPSETTING( 0x08, "600" )
+ PORT_DIPSETTING( 0x00, "800" )
+ PORT_DIPNAME( 0x20, 0x20, "Max Win Bonus" )
+ PORT_DIPSETTING( 0x20, "10000" )
+ PORT_DIPSETTING( 0x00, "20000" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" )
+ PORT_DIPSETTING( 0xc0, "0" )
+ PORT_DIPSETTING( 0x80, "8" )
+ PORT_DIPSETTING( 0x40, "16" )
+ PORT_DIPSETTING( 0x00, "32" )
+
+ PORT_START("DSW4") /* AY8910 port B */
+ PORT_DIPNAME( 0x07, 0x07, "Remote Credits" )
+ PORT_DIPSETTING( 0x00, "1 Pulse / 100 Credits" )
+ PORT_DIPSETTING( 0x01, "1 Pulse / 110 Credits" )
+ PORT_DIPSETTING( 0x02, "1 Pulse / 120 Credits" )
+ PORT_DIPSETTING( 0x03, "1 Pulse / 130 Credits" )
+ PORT_DIPSETTING( 0x04, "1 Pulse / 200 Credits" )
+ PORT_DIPSETTING( 0x05, "1 Pulse / 400 Credits" )
+ PORT_DIPSETTING( 0x06, "1 Pulse / 500 Credits" )
+ PORT_DIPSETTING( 0x07, "1 Pulse / 1000 Credits" )
+ PORT_DIPNAME( 0x18, 0x18, "Max Bet" )
+ PORT_DIPSETTING( 0x18, "32" )
+ PORT_DIPSETTING( 0x10, "64" )
+ PORT_DIPSETTING( 0x08, "72" )
+ PORT_DIPSETTING( 0x00, "80" )
+ PORT_DIPNAME( 0xe0, 0xe0, "Super Star Appearance (per 1000)" )
+ PORT_DIPSETTING( 0xe0, "6" )
+ PORT_DIPSETTING( 0xc0, "8" )
+ PORT_DIPSETTING( 0xa0, "10" )
+ PORT_DIPSETTING( 0x80, "12" )
+ PORT_DIPSETTING( 0x60, "14" )
+ PORT_DIPSETTING( 0x40, "16" )
+ PORT_DIPSETTING( 0x20, "18" )
+ PORT_DIPSETTING( 0x00, "20" )
+INPUT_PORTS_END
+
+
+// It runs in IM 0, thus needs an opcode on the data bus
+INTERRUPT_GEN_MEMBER(skylncr_state::skylncr_vblank_interrupt)
+{
+ if (m_nmi_enable) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+}
+
+
+/*************************************
+* Machine Driver *
+*************************************/
+
+static MACHINE_CONFIG_START( skylncr, skylncr_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4)
+ MCFG_CPU_PROGRAM_MAP(mem_map_skylncr)
+ MCFG_CPU_IO_MAP(io_map_skylncr)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", skylncr_state, skylncr_vblank_interrupt)
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ /* 1x M5M82C255, or 2x PPI8255 */
+ MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
+ MCFG_I8255_IN_PORTA_CB(IOPORT("IN1"))
+ MCFG_I8255_IN_PORTB_CB(IOPORT("IN2"))
+ MCFG_I8255_IN_PORTC_CB(IOPORT("DSW1"))
+
+ MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
+ MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2"))
+ MCFG_I8255_IN_PORTB_CB(IOPORT("IN3"))
+ MCFG_I8255_IN_PORTC_CB(IOPORT("IN4"))
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+ MCFG_SCREEN_UPDATE_DRIVER(skylncr_state, screen_update_skylncr)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", skylncr)
+ MCFG_PALETTE_ADD("palette", 0x200)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/8)
+ MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW3"))
+ MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW4"))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( neraidou, skylncr )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_GFXDECODE_MODIFY("gfxdecode", neraidou)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( sstar97, skylncr )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_GFXDECODE_MODIFY("gfxdecode", sstar97)
+MACHINE_CONFIG_END
+
+
+/**********************************
+* ROM Load *
+**********************************/
+/*
+
+Sky Lancer PCB Layout
+---------------------
+
+ |--------------------------------------------|
+ _| ROM.U33 |
+| |
+| ROM.U32 |
+| WF19054 |
+| |
+|_ |
+ | 6264 |
+ | |------| 6116 |
+ _| DSW4(8) |ACTEL | |
+| DSW3(8) |A1010B| |
+| DSW2(8) | | 6264 |
+| DSW1(8) |------| |
+| 6264 |
+| M5M82C255 |
+| |
+| ROM.U35 |
+|3.6V_BATT |
+|_ 6116 Z80 12MHz |
+ |--------------------------------------------|
+Notes:
+ Z80 @ 3.0MHz [12/4]
+ WF19054 = AY-3-8910 @ 1.5MHz [12/8]
+*/
+
+ROM_START( skylncr )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "27512.u35", 0x00000, 0x10000, CRC(98b1c9fe) SHA1(9ca1706d25038a078fb07ba5c2e6681ed468bc88) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD( "574200.u32", 0x00000, 0x80000, CRC(b36f11fe) SHA1(1d8660ac1ca44e33976ac14210e4a3a201f8f3c4) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_LOAD( "574200.u33", 0x00000, 0x80000, CRC(19b25221) SHA1(2f32d337125a9fd0bc7f50713b05e564fd4f81b2) )
+ROM_END
+
+ROM_START( butrfly )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "butterfly.prg", 0x00000, 0x10000, CRC(b35b289c) SHA1(5a02bfb6e1fb608099b9f491c10795ef888a3b36) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "u29", 0x00000, 0x20000, CRC(2ff775ea) SHA1(2219c75cbac2969485607446ab116587bdee7278) )
+ ROM_LOAD16_BYTE( "u31", 0x00001, 0x20000, CRC(029d2214) SHA1(cf8256157db0b297ed457b3da6b6517907128843) )
+ ROM_LOAD16_BYTE( "u33", 0x40000, 0x20000, CRC(37bad677) SHA1(c077f0c07b097b376a01e5637446e4c4f82d9e28) )
+ ROM_LOAD16_BYTE( "u35", 0x40001, 0x20000, CRC(d14c7713) SHA1(c229ef64f3b0a04ff8e27bc56cff6a55ca34b80c) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "u52", 0x00000, 0x20000, CRC(15051537) SHA1(086c38c05c605f297a7bc470eb51763a7648e72c) )
+ ROM_LOAD16_BYTE( "u54", 0x00001, 0x20000, CRC(8e34d029) SHA1(ae316f2f34768938a07d62db110ce59d2751abaa) )
+ ROM_LOAD16_BYTE( "u56", 0x40000, 0x20000, CRC(a53daaef) SHA1(7b88bb986bd5e47576163d6999f8770c720c5bfc) )
+ ROM_LOAD16_BYTE( "u58", 0x40001, 0x20000, CRC(21ca47f8) SHA1(b192be06a2eb817776309580dc64fd76772a8d50) )
+ROM_END
+
+ROM_START( mbutrfly )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "magical_butterfy_x4_cleco.bin", 0x00000, 0x10000, CRC(2391778f) SHA1(f82ee9fb571547fda70867e091317779e2fe6e80) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "mb.u29", 0x00000, 0x20000, CRC(294b1cc5) SHA1(56f143d7d96b9ace0973d7001a13e7e55967e70a) )
+ ROM_LOAD16_BYTE( "mb.u31", 0x00001, 0x20000, CRC(c6f4e629) SHA1(97334c7dcfea9a405996c06a79cf3c34a360f807) )
+ ROM_LOAD16_BYTE( "mb.u33", 0x40000, 0x20000, CRC(72d22790) SHA1(d7a995e95f17bd4324f02aa16d23bfd78f95b5c5) )
+ ROM_LOAD16_BYTE( "mb.u35", 0x40001, 0x20000, CRC(fdaa2288) SHA1(199323c2bd2af0d9b1d254a330670e2845f21dd9) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "mb.u52", 0x00000, 0x20000, CRC(15051537) SHA1(086c38c05c605f297a7bc470eb51763a7648e72c) ) // identical to butterfly.
+ ROM_LOAD16_BYTE( "mb.u54", 0x00001, 0x20000, CRC(8e34d029) SHA1(ae316f2f34768938a07d62db110ce59d2751abaa) ) // identical to butterfly.
+ ROM_LOAD16_BYTE( "mb.u56", 0x40000, 0x20000, CRC(21ca47f8) SHA1(b192be06a2eb817776309580dc64fd76772a8d50) ) // this one is straight fixed for reel tiles 6C-DF.
+ ROM_LOAD16_BYTE( "mb.u58", 0x40001, 0x20000, CRC(21ca47f8) SHA1(b192be06a2eb817776309580dc64fd76772a8d50) ) // identical to butterfly.
+ROM_END
+
+ROM_START( gallag50 )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "27512.u9", 0x00000, 0x10000, CRC(355f8c3b) SHA1(d419fcb96bf936eaf7afb1a4b38a9e1d2a191686) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "27c301.u29", 0x00000, 0x20000, CRC(adf3208a) SHA1(251e94efe90b8250cb8d75255bd5b58a6b7825a7) )
+ ROM_LOAD16_BYTE( "27c301.u31", 0x00001, 0x20000, CRC(24f20819) SHA1(a6fd1febe061f84e2bf3609bbf7c95912a04db70) )
+ ROM_LOAD16_BYTE( "27c301.u33", 0x40000, 0x20000, CRC(7ec63f5a) SHA1(47e91f21a674a949b0085cf2d8463da245328db3) )
+ ROM_LOAD16_BYTE( "27c301.u35", 0x40001, 0x20000, CRC(68c186d6) SHA1(6e8b5d489c4ba2a65dadf3a8cb3c07c2fedc1cb1) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "27c301.u52", 0x00000, 0x20000, CRC(f3de59f4) SHA1(3b70a8677647a54333049a59cf01ba2c63c33d87) )
+ ROM_LOAD16_BYTE( "27c301.u54", 0x00001, 0x20000, CRC(f399751b) SHA1(2b7f3ed4181d654b67154b9587ee971ee881f35c) )
+ ROM_LOAD16_BYTE( "27c301.u56", 0x40000, 0x20000, CRC(7eec4edf) SHA1(897fbbcda8d1c42b3a59f0f2f68e295e054d062d) )
+ ROM_LOAD16_BYTE( "27c301.u58", 0x40001, 0x20000, CRC(afd0d391) SHA1(cc024d37cc23f94ef09a8a543cb1604e3f82c306) )
+ROM_END
+
+/*
+
+Mad Zoo PCB Layout
+------------------
+
+|-----| |------| |---------------------------|
+| |--| |--|ROM.U29 ROM.U52 |
+| |
+| DSW3(8) ROM.U31 ROM.U54 |
+| KC89C72 |
+| DSW4(8) ROM.U33 ROM.U56 |
+|_ |
+ | PAL ROM.U35 ROM.U58 |
+ | |-------| |
+ _| |LATTICE| 6116 |
+| 12MHz |1016 | |
+| | | 6116 |
+| 8255 |-------| |
+| 6116 |
+| DSW1(8) DSW2(8) |
+| 8255 PAL ROM.U9 6116 |
+| |
+| 6264 Z80 6116 6116 |
+|_ 6264 PAL BATTERY|
+ |--------------------------------------------|
+Notes:
+ Z80 @ 3.0MHz [12/4]
+ KC89C72 = AY-3-8910 @ 1.5MHz [12/8]
+*/
+
+ROM_START( madzoo )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "27512.u9", 0x00000, 0x10000, CRC(98b1c9fe) SHA1(9ca1706d25038a078fb07ba5c2e6681ed468bc88) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "27c301.u29", 0x00000, 0x20000, CRC(44645bb8) SHA1(efaf88d63e09029aa023ddaf72dbd9ee1df10315) )
+ ROM_LOAD16_BYTE( "27c301.u31", 0x00001, 0x20000, CRC(58267dbc) SHA1(dd64e4b44d10e2d93ded255622891f058b2b8bb9) )
+ ROM_LOAD16_BYTE( "27c301.u33", 0x40000, 0x20000, CRC(6adb1c2c) SHA1(d782a778a34e6240a3ae09cd11124790864a9149) )
+ ROM_LOAD16_BYTE( "27c301.u35", 0x40001, 0x20000, CRC(a8d3a174) SHA1(b668bb1db1d27aff52e808aa9b972f24693161b3) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "27c301.u52", 0x00000, 0x20000, CRC(dd1997ed) SHA1(9197a0b4a0b6284ae7eeb6364c87589f6f8a614d) )
+ ROM_LOAD16_BYTE( "27c301.u54", 0x00001, 0x20000, CRC(a654a6df) SHA1(54292953df1103ad830e1f40fdf96c48e0e13be7) )
+ ROM_LOAD16_BYTE( "27c301.u56", 0x40000, 0x20000, CRC(f2e3c394) SHA1(8e09516fe822d7c125be57b154c896ab3e024f98) )
+ ROM_LOAD16_BYTE( "27c301.u58", 0x40001, 0x20000, CRC(65d2015b) SHA1(121494a2684276276e2504d6f853718e93f4d458) )
+ROM_END
+
+ROM_START( leader )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "leader.prg", 0x00000, 0x10000, CRC(1a6e1129) SHA1(639f687e7720bab89628b377dca0475f17a35041) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "leadergfx1.dmp11", 0x00000, 0x20000, CRC(08acae31) SHA1(8b93066a2159e56607499fe1b1748a70a73a326c) )
+ ROM_LOAD16_BYTE( "leadergfx1.dmp21", 0x00001, 0x20000, CRC(88cd7a49) SHA1(f7187c7e3e584180de03998f376001f8d5966882) )
+ ROM_LOAD16_BYTE( "leadergfx1.dmp12", 0x40000, 0x20000, CRC(e57e145e) SHA1(3f6169ed1d907de3438787c02dc53c73ca6bdb73) )
+ ROM_LOAD16_BYTE( "leadergfx1.dmp22", 0x40001, 0x20000, CRC(e8368d29) SHA1(19e7d7d6e320f5f06e91013cb4c92b3987dbe24e) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "leadergfx2.dmp11", 0x00000, 0x20000, CRC(1d62edf4) SHA1(7ba43bf0d0d0cadd5c7fcbe940ecf3fab5c9127b) )
+ ROM_LOAD16_BYTE( "leadergfx2.dmp21", 0x00001, 0x20000, CRC(57b9d159) SHA1(ee98aea160653d55017bd893cc253d23c7b1faf4) )
+ ROM_LOAD16_BYTE( "leadergfx2.dmp12", 0x40000, 0x20000, CRC(91e73bf9) SHA1(90a9c1119ae05bbd66a4d3c2266ec02cc53969bd) )
+ ROM_LOAD16_BYTE( "leadergfx2.dmp22", 0x40001, 0x20000, CRC(04cc0118) SHA1(016ccbe7daf8c4676830aadcc906a64e2826d11a) )
+ROM_END
+
+ROM_START( neraidou )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "aepi.prg", 0x00000, 0x10000, CRC(7ac74830) SHA1(1e3322341711e329b40d94ac6ec25fbafb1d4d62) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "ldrbfl4.bin", 0x00000, 0x20000, CRC(9424c24d) SHA1(4fcf66b641db14b5096d0de75a134d2d35c6eb9b) )
+ ROM_LOAD16_BYTE( "ldrbfl2.bin", 0x00001, 0x20000, CRC(467dd56b) SHA1(5c64ee7ff2f4cc127b57342daf63c392c5155344) )
+ ROM_LOAD16_BYTE( "ldrbfl3.bin", 0x40000, 0x20000, CRC(810ac7f5) SHA1(f0e680a1813d01e4ca4da97c3c45e9373361620b) )
+ ROM_LOAD16_BYTE( "ldrbfl1.bin", 0x40001, 0x20000, CRC(c3bd4dc0) SHA1(2696321846e09359122447e6b60db29c5742a36a) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "ldrbfl8.bin", 0x00000, 0x20000, CRC(74992877) SHA1(f10f90f844198bba49fc3c74b1e8f40821cd1b56) )
+ ROM_LOAD16_BYTE( "ldrbfl6.bin", 0x00001, 0x20000, CRC(4b9fb756) SHA1(21d5abbc19a7e3277316d0ac616bdf0819e563b7) )
+ ROM_LOAD16_BYTE( "ldrbfl7.bin", 0x40000, 0x20000, CRC(a1842082) SHA1(0790c1c1c268fe13f2613e594fdf09daae19bbd0) )
+ ROM_LOAD16_BYTE( "ldrbfl5.bin", 0x40001, 0x20000, CRC(aa0a9b4e) SHA1(e09e6d3c5283ace1f1c6999cdc97e7dde9105338) )
+ROM_END
+
+/*
+ Super Star 97
+ Bordun International.
+
+ For amusement only (as seen in the title).
+ PCB looks similar to Sky Lancer.
+
+ 1x M5M82C255ASP for I/O,
+ 1x daughterboard with Z80 CPU,
+ 1x AY-3-8910A
+
+ 1x Xilinx XC2064-33 CPLD...
+
+ 1x 12.000 Mhz crystal
+
+ 2x UM70C171-66
+ 1x HM6116LP-4
+ 5x HM6116L-120
+
+ Unfortunately, one extra ROM (u48) is blank.
+ Seems to be the one that store the palette at offset $C000.
+
+ BP 170 to see the palette registers...
+
+*/
+ROM_START( sstar97 )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "27256.u15", 0x0000, 0x8000, CRC(a5da4f92) SHA1(82ac70bd379649f130db017aa226d0247db0f3cd) )
+ ROM_LOAD( "unknown.u48", 0x8000, 0x8000, BAD_DUMP CRC(9f4c02e3) SHA1(05975184130ea7dd3bb5d32eff77b585bd53e6b5) ) // palette borrowed from other game
+
+ ROM_REGION( 0x80000, "gfx1", 0 ) // All ROMs are 28-pins mask ROMs dumped as Fujitsu MB831000 or TC531000 (mask ROM).
+ ROM_LOAD16_BYTE( "bor_dun_4.u23", 0x00000, 0x20000, CRC(d0d0ead1) SHA1(00bfe691cb9020c5d7e21d80a1e059ea2155aad8) )
+ ROM_LOAD16_BYTE( "bor_dun_2.u25", 0x00001, 0x20000, CRC(2b0f07b5) SHA1(9bcde623e53697c4b68d2f083f6254596aee64eb) )
+ ROM_LOAD16_BYTE( "bor_dun_3.u24", 0x40000, 0x20000, CRC(3c7da3f1) SHA1(8098b33a779fb697984b97f2d7edb9874e6e19d9) )
+ ROM_LOAD16_BYTE( "bor_dun_1.u26", 0x40001, 0x20000, CRC(36efdca6) SHA1(e614fbba77e5c7a1e7a1d2970b4f945ee0468196) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 ) // All ROMs are 28-pins mask ROMs dumped as Fujitsu MB831000 or TC531000 (mask ROM).
+ ROM_LOAD16_BYTE( "bor_dun_8.u19", 0x00000, 0x20000, CRC(adf0b7ce) SHA1(41d9fb16eb20e1fd2960117b7e4ea23a97b88961) )
+ ROM_LOAD16_BYTE( "bor_dun_6.u21", 0x00001, 0x20000, CRC(37be2cbe) SHA1(78acda58aab605cb992c3b9fbaf18d38f768ed1a) )
+ ROM_LOAD16_BYTE( "bor_dun_7.u20", 0x40000, 0x20000, CRC(43908665) SHA1(41b9cee0723d9da6934ab7934012fb1625a8f080) )
+ ROM_LOAD16_BYTE( "bor_dun_5.u22", 0x40001, 0x20000, CRC(ca17a632) SHA1(d491310ccdbe9b59a1e607f9254646f20700d79d) )
+ROM_END
+
+
+/**********************************
+* Driver Init *
+**********************************/
+
+DRIVER_INIT_MEMBER(skylncr_state,skylncr)
+{
+ m_generic_paletteram_8.allocate(0x100 * 3);
+ m_generic_paletteram2_8.allocate(0x100 * 3);
+}
+
+
+/****************************************************
+* Game Drivers *
+****************************************************/
+
+/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
+GAME( 1995, skylncr, 0, skylncr, skylncr, skylncr_state, skylncr, ROT0, "Bordun International", "Sky Lancer (Bordun, version U450C)", 0 )
+GAME( 1995, butrfly, 0, skylncr, skylncr, skylncr_state, skylncr, ROT0, "Bordun International", "Butterfly Video Game (version U350C)", 0 )
+GAME( 1999, mbutrfly, 0, skylncr, skylncr, skylncr_state, skylncr, ROT0, "Bordun International", "Magical Butterfly (version U350C, encrypted)", MACHINE_NOT_WORKING )
+GAME( 1995, madzoo, 0, skylncr, skylncr, skylncr_state, skylncr, ROT0, "Bordun International", "Mad Zoo (version U450C)", 0 )
+GAME( 1995, leader, 0, skylncr, leader, skylncr_state, skylncr, ROT0, "bootleg", "Leader (version Z 2E, Greece)", 0 )
+GAME( 199?, gallag50, 0, skylncr, gallag50, skylncr_state, skylncr, ROT0, "bootleg", "Gallag Video Game / Petalouda (Butterfly, x50)", 0 )
+GAME( 199?, neraidou, 0, neraidou, neraidou, skylncr_state, skylncr, ROT0, "bootleg", "Neraidoula (Fairy Butterfly)", 0 )
+GAME( 199?, sstar97, 0, sstar97, sstar97, skylncr_state, skylncr, ROT0, "Bordun International", "Super Star 97 / Ming Xing 97 (version V153B)", 0 )