Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
4890 lines (3905 sloc) 219 KB
// license:BSD-3-Clause
// copyright-holders:Luca Elia
/***************************************************************************
-= Seta, Sammy, Visco (SSV) System =-
driver by Luca Elia (l.elia@tin.it)
CPU : NEC V60
Sound Chip : Ensoniq ES5506 (OTTOR2)
Custom Chips : ST-0004 (Video DAC)
ST-0005 (Parallel I/O)
ST-0006 (Video controller)
ST-0007 (System controller)
Others : Battery + MB3790 + LH5168D-10L (NVRAM)
DX-102 (I/O)
M62X42B (RTC)
ST010
TA8210 (Audio AMP)
uPD71051/7001C (UART)
-----------------------------------------------------------------------------------
Main Board ROM Board Year + Game By
-----------------------------------------------------------------------------------
STA-0001 STS-0001 93 Super Real Mahjong PIV Seta
STA-0001 STS-0001 93 Dramatic Adventure Quiz Keith & Lucy Visco
STA-0001 STS-0001 93 Pastel Island Visco
STA-0001 SAM-5127 93 Survival Arts Sammy
STA-0001 SAM-5127 93 Dyna Gears Sammy
STA-0001B VISCO-001B 94 Drift Out '94 Visco
STA-0001B GOLF ROM 94 Eagle Shot Golf Sammy
STA-0001B STS0003 94 Twin Eagle II - The Rescue Mission (1) Seta
STA-0001B VISCO 95 Mobil Suit Gundam Final Shooting (2) Banpresto
STA-0001B P1-102A 95 Mahjong Hyper Reaction Sammy
? ? 95 Ultra X Weapons / Ultra Keibitai Banpresto / Tsuburaya Prod.
STA-0001B VISCO-JJ1 96 Lovely Pop Mahjong JangJang Shimasho Visco
STA-0001B VISCO-001B 96 Storm Blade Visco
STA-0001B P1-105A 96? Meosis Magic Sammy
STA-0001B ? 97 Joryuu Syougi Kyoushitsu (3) Visco
STA-0001B VISCO-JJ1 97 Koi Koi Shimasho 2 Visco
STA-0001B P1-112A 97 Mahjong Hyper Reaction 2 Sammy
STA-0001B ? 97 Monster Slider Visco / Datt
STA-0001 ? 97 Super Real Mahjong P7 Seta
STA-0001B ? 98 Gourmet Battle Quiz Ryorioh CooKing Visco
STA-0001B P1-112C 98 Pachinko Sexy Reaction Sammy
STA-0001B B1-001A 99 Pachinko Sexy Reaction 2 Sammy
STA-0001B P1-112C 99 Change Air Blade Visco
STA-0001B VISCO-JJ1 00 Lovely Pop Mahjong JangJang Shimasho 2 Visco
STA-0001B SSV_SUB 00 Vasara Visco
STA-0001B SSV_SUB 01 Vasara 2 Visco
-----------------------------------------------------------------------------------
(1) Uses ST010 MCU / Math chip
(2) Uses ST-0009 & ST-0020 & Light Gun
(3) Uses NEC V810 CPU as sub cpu for the AI (basically the same as the majinsen games on st0016)
SSV Hardware Overview
Sammy/Seta/Visco, 1993-2001
SSV was a joint venture between "S"ammy, "S"eta and "V"isco to produce a high quality 32-bit
RISC-based hardware platform.
The SSV main board contains all of the CPUs, RAM, custom ICs and sound chips. The lower PCB plugs
into 4x 64-pin connectors and contains the game software and any additional game-specific connectors
for controllers etc. The SSV games can be swapped by simply exchanging the lower (game) PCB onto any
SSV main board. There is an older main board STA-0001 which is not compatible with _some_ of the
newer games. The actual PCB will plug in, but the games will not boot up, instead displaying some
kind of debug screen full of numbers. This is known to occur on Vasara and Vasara 2 but may occur
with other games also. AFAIK, the actual PCBs look identical!
PCB Layouts
-----------
Main Board (common to all SSV-based games)
STA-0001B SYSTEM SSV
|---------------------------------------------------------|
| 2066 VOL |
|TA8210 |--------| 74ALS245 x6 |
| TL072 |--------| | | |
|H |ENSONIQ | | ST0007 | JP1 |
| TL072 |ES5506 | | | |--------|JP2 |
| |OTTOR2 | |--------| | |74ALS74 |
|S |--------| | V60 | |
| D6376 74ALS08 | |74F32 |
| 74LS07 |--------| |
| TC4050 JP3 |
|J TD62064 |
|A 74ALS245 |
|M LM358 74ALS245 |
|M |------| 74ALS245 |
|A |ST0004| 681000 681000 |
| | | |
||------| |------| 43256 43256 43256 43256 43256 |
||ST0005| |--------| JP4 |
|| | 48MHz | | MB3771 |
||------|42.9545MHz 74AC245 | ST0006 | 74ALS273 |
| 74F245 | | 74F04 |
| DSW1(8) DSW2(8) |--------| |
|---------------------------------------------------------|
(Note All IC's Shown)
Notes:
H - 3 pin connector for additional sound output
S - 5 pin connector for additional sound output
D6376 - NEC D6376 2-channel 16-bit D/A converter (SOIC16)
V60 - NEC D70615GD-16 V60 CPU, clock 16.000MHz [48/3] (QFP120)
ES5506 - Ensoniq ES5506 sound IC, clock 16.000MHz [48/3] (PLCC68)
LM358 - National Semiconductor LM358 Low Power Dual Operational Amplifier (DIP8)
2066 - New Japan Radio NJM2066 Dual Operational Amplifier (DIP16)
TL072 - Texas Instruments TL072 Low Noise JFET-Input Operational Amplifier (DIP8)
TA8210 - Toshiba TA8210 20W 2-channel Audio Power Amplifier
43256 - Sharp LH52B256-70LL 32K x8 SRAM (DIP28)
Note all sockets with 43256 can accept DIP32 128K x8 SRAM instead depending on
game requirements
681000 - Samsung KM681000ALP-7L 128K x8 SRAM (DIP32)
JP1 - 3 pin jumper, hardwired on PCB to 2-3
JP2 - 3 pin jumper, hardwired on PCB to 2-3
JP3 - 3 pin jumper, hardwired on PCB to 1-3
JP4 - 3 pin jumper, hardwired on PCB to 1-3
SETA custom IC's -
ST-0004 Video DAC (QFP64)
ST-0005 Parallel I/O (QFP100)
ST-0006 Video controller (QFP208, covered with large heatsink)
ST-0007 System controller (QFP160)
To Do:
- hypreac2 : communication with other units
- janjans2 : Coin inputs don't register in the input test
- jsk : Coin inputs don't register in the input test
- mslider : Coin inputs don't register in the input test
- srmp4 : Coin inputs don't register in the input test
- srmp7 : Needs interrupts by the sound chip (not properly hooked up yet). Kludged to work.
Notes:
- gdfs : Hold 1P Start on startup to enter test mode
- jsk : Push 1P Start and 2P Start to advance to sound test
code @ $e75cdc
W:
0x482000 - 0x482007 - values taken from obj table
0x482040 - 0x482043 - write latch ?
R:
0x482022 - 0x482023 - result = direction, probably : 00 = down, 40 = left, 80 = up, c0 = right
0x482042 - 0x482043 - protection status bits ?
***************************************************************************/
#include "emu.h"
#include "includes/ssv.h"
#include "cpu/v810/v810.h"
#include "cpu/v60/v60.h"
#include "machine/nvram.h"
#include "machine/watchdog.h"
#include "speaker.h"
/***************************************************************************
Interrupts
***************************************************************************/
/* Update the IRQ state based on all possible causes */
void ssv_state::update_irq_state()
{
m_maincpu->set_input_line(0, (m_requested_int & m_irq_enable)? ASSERT_LINE : CLEAR_LINE);
}
IRQ_CALLBACK_MEMBER(ssv_state::irq_callback)
{
for (int i = 0; i <= 7; i++)
{
if (m_requested_int & (1 << i))
{
uint16_t vector = m_irq_vectors[i * (16/2)] & 7;
return vector;
}
}
return 0;
}
WRITE16_MEMBER(ssv_state::irq_ack_w)
{
int level = ((offset * 2) & 0x70) >> 4;
m_requested_int &= ~(1 << level);
update_irq_state();
}
/*
IRQ Enable Register:
drifto94: c at the start
hypreact: ff at the start
hypreac2: ff at the start
janjans1: 0,6c,60
keithlcy: c at the start
meosism: ff at the start
mslider: c at the start
ryorioh: 0,c at the start
srmp4: 8 at the start
srmp7: 8 at the start, 28, 40 (seems related to 21000e writes)
survarts: 0,8 at the start
sxyreact: ff at the start
ultrax: 40,00 at the start then 42,4a
twineag2: 40,00 at the start then 42,4a
*/
WRITE16_MEMBER(ssv_state::irq_enable_w)
{
COMBINE_DATA(&m_irq_enable);
}
TIMER_DEVICE_CALLBACK_MEMBER(ssv_state::interrupt)
{
int scanline = param;
if (scanline == 0)
{
if (m_interrupt_ultrax)
{
m_requested_int |= 1 << 1; // needed by ultrax to coin up, breaks cairblad
update_irq_state();
}
}
else if ((scanline == 120) && m_raster_interrupt_enabled)
{
/* scanline can almost certainly be programmed, where is the register? (unless it's really just a 'half screen' interrupt)
this split position seems to be correct for pastelis 2 player mode, the end credits aren't quite right, but like the 'for japan' warning it seems to be
more based on polling vblank_read than the raster interrupt.
note, janjans1 and keithlcy and ryorioh might be using it too (they enable this IRQ level at least) */
m_requested_int |= 1 << 2;
update_irq_state();
//m_screen->update_partial(m_screen->vpos() - 1);
}
else if(scanline == 240)
{
m_requested_int |= 1 << 3; // vblank
update_irq_state();
}
}
WRITE_LINE_MEMBER(ssv_state::gdfs_adc_int_w)
{
if (state)
{
m_requested_int |= 1 << 6; // reads lightgun (4 times for 4 axis)
update_irq_state();
}
}
/***************************************************************************
Coins Lockout / Counter
***************************************************************************/
/*
drifto94: c3
janjans1: c3
keithlcy: c3
mslider: c3, 83 in test mode
ryorioh: c3
hypreac2: 80
hypreact: 80
meosism: 83
srmp4: 83, c0 in test mode (where only tilemap sprites are used)
srmp7: 80
survarts: 83
sxyreact: 80
*/
WRITE16_MEMBER(ssv_state::lockout_w)
{
// popmessage("%02X",data & 0xff);
if (ACCESSING_BITS_0_7)
{
machine().bookkeeping().coin_lockout_w(1,~data & 0x01);
machine().bookkeeping().coin_lockout_w(0,~data & 0x02);
machine().bookkeeping().coin_counter_w(1, data & 0x04);
machine().bookkeeping().coin_counter_w(0, data & 0x08);
// data & 0x40?
enable_video(data & 0x80);
}
}
/* Same as above but with inverted lockout lines */
WRITE16_MEMBER(ssv_state::lockout_inv_w)
{
// popmessage("%02X",data & 0xff);
if (ACCESSING_BITS_0_7)
{
machine().bookkeeping().coin_lockout_w(1, data & 0x01);
machine().bookkeeping().coin_lockout_w(0, data & 0x02);
machine().bookkeeping().coin_counter_w(1, data & 0x04);
machine().bookkeeping().coin_counter_w(0, data & 0x08);
// data & 0x40?
enable_video(data & 0x80);
}
}
void ssv_state::machine_reset()
{
m_requested_int = 0;
}
/***************************************************************************
DSP
***************************************************************************/
void ssv_state::dsp_prg_map(address_map &map)
{
map(0x0000, 0x3fff).rom().region("dspprg", 0);
}
void ssv_state::dsp_data_map(address_map &map)
{
map(0x0000, 0x07ff).rom().region("dspdata", 0);
}
READ16_MEMBER(ssv_state::dsp_dr_r)
{
return m_dsp->snesdsp_read(true);
}
WRITE16_MEMBER(ssv_state::dsp_dr_w)
{
m_dsp->snesdsp_write(true, data);
}
READ16_MEMBER(ssv_state::dsp_r)
{
uint16_t temp = m_dsp->dataram_r(offset/2);
uint16_t res;
if (offset & 1)
{
res = temp>>8;
}
else
{
res = temp & 0xff;
}
return res;
}
WRITE16_MEMBER(ssv_state::dsp_w)
{
uint16_t temp = m_dsp->dataram_r(offset/2);
if (offset & 1)
{
temp &= 0xff;
temp |= data<<8;
}
else
{
temp &= 0xff00;
temp |= data;
}
m_dsp->dataram_w(offset/2, temp);
}
/***************************************************************************
Memory Maps
***************************************************************************/
#ifdef UNUSED_FUNCTION
READ16_MEMBER(ssv_state::fake_r){ return ssv_scroll[offset]; }
#endif
void ssv_state::ssv_map(address_map &map, u32 rom)
{
map(0x000000, 0x00ffff).ram().share("mainram"); /* RAM */
map(0x100000, 0x13ffff).ram().share("spriteram"); /* Sprites */
map(0x140000, 0x15ffff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); /* Palette */
map(0x160000, 0x17ffff).ram(); /* */
map(0x1c0000, 0x1c007f).ram().w(FUNC(ssv_state::scroll_w)).share("scroll"); /* Scroll */
map(0x1c0000, 0x1c0001).r(FUNC(ssv_state::vblank_r)); /* Vblank? */
map(0x210002, 0x210003).portr("DSW1");
map(0x210004, 0x210005).portr("DSW2");
map(0x210008, 0x210009).portr("P1");
map(0x21000a, 0x21000b).portr("P2");
map(0x21000c, 0x21000d).portr("SYSTEM");
map(0x21000e, 0x21000f).nopr().w(FUNC(ssv_state::lockout_w)); /* Lockout */
map(0x210010, 0x210011).nopw();
map(0x230000, 0x230071).writeonly().share("irq_vectors"); /* IRQ Vec */
map(0x240000, 0x240071).w(FUNC(ssv_state::irq_ack_w)); /* IRQ Ack */
map(0x260000, 0x260001).w(FUNC(ssv_state::irq_enable_w)); /* IRQ En */
map(0x300000, 0x30007f).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write)).umask16(0x00ff); /* Sound */
map(rom, 0xffffff).rom().region("maincpu", 0); /* ROM */
}
/***************************************************************************
Drift Out '94
***************************************************************************/
READ16_MEMBER(ssv_state::drifto94_unknown_r)
{
return machine().rand() & 0xffff;
}
void ssv_state::drifto94_map(address_map &map)
{
ssv_map(map, 0xc00000);
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
map(0x400000, 0x47ffff).writeonly(); // ?
map(0x480000, 0x480001).rw(FUNC(ssv_state::dsp_dr_r), FUNC(ssv_state::dsp_dr_w));
map(0x482000, 0x482fff).rw(FUNC(ssv_state::dsp_r), FUNC(ssv_state::dsp_w));
map(0x483000, 0x485fff).nopw(); // ?
map(0x500000, 0x500001).nopw(); // ??
map(0x510000, 0x510001).r(FUNC(ssv_state::drifto94_unknown_r)); // ??
map(0x520000, 0x520001).r(FUNC(ssv_state::drifto94_unknown_r)); // ??
map(0x580000, 0x5807ff).ram().share("nvram"); // NVRAM
}
/***************************************************************************
Mobil Suit Gundam Final Shooting
***************************************************************************/
READ16_MEMBER(ssv_state::gdfs_eeprom_r)
{
return m_adc->data_r() | (m_eeprom->do_read() << 8);
}
WRITE16_MEMBER(ssv_state::gdfs_eeprom_w)
{
if (data & ~0x7b00)
logerror("%s - Unknown EEPROM bit written %04X\n",machine().describe_context(),data);
if ( ACCESSING_BITS_8_15 )
{
// data & 0x8000 ? (near palette writes)
// data & 0x0001 ?
// latch the bit
m_eeprom->di_write(BIT(data, 14));
// reset line asserted: reset.
m_eeprom->cs_write(BIT(data, 12) ? ASSERT_LINE : CLEAR_LINE);
// clock line asserted: write latch or select next bit to read
m_eeprom->clk_write(BIT(data, 13) ? ASSERT_LINE : CLEAR_LINE);
m_adc->address_w((data & 0x0700) >> 8);
m_adc->start_w(BIT(data, 11));
}
}
void ssv_state::gdfs_map(address_map &map)
{
ssv_map(map, 0xc00000);
map(0x400000, 0x41ffff).ram().w(FUNC(ssv_state::gdfs_tmapram_w)).share("gdfs_tmapram");
map(0x420000, 0x43ffff).ram();
map(0x440000, 0x44003f).ram().share("gdfs_tmapscroll");
map(0x500000, 0x500001).w(FUNC(ssv_state::gdfs_eeprom_w));
map(0x540000, 0x540001).r(FUNC(ssv_state::gdfs_eeprom_r));
map(0x600000, 0x600fff).ram();
map(0x800000, 0x87ffff).rw(m_gdfs_st0020, FUNC(st0020_device::sprram_r), FUNC(st0020_device::sprram_w));
map(0x8c0000, 0x8c00ff).rw(m_gdfs_st0020, FUNC(st0020_device::regs_r), FUNC(st0020_device::regs_w));
map(0x900000, 0x9fffff).rw(m_gdfs_st0020, FUNC(st0020_device::gfxram_r), FUNC(st0020_device::gfxram_w));
}
/***************************************************************************
Hyper Reaction
***************************************************************************/
/*
The game prints "backup ram ok" and there is code to test some ram
at 0x580000-0x5bffff. The test is skipped and this ram isn't used
though. I guess it's either a left-over or there are different
version with some battery backed RAM (which would indeed be on the
ROM board, AFAIK)
*/
READ16_MEMBER(ssv_state::hypreact_input_r)
{
uint16_t input_sel = *m_input_sel;
if (input_sel & 0x0001) return m_io_key[0]->read();
if (input_sel & 0x0002) return m_io_key[1]->read();
if (input_sel & 0x0004) return m_io_key[2]->read();
if (input_sel & 0x0008) return m_io_key[3]->read();
logerror("CPU #0 PC %06X: unknown input read: %04X\n",m_maincpu->pc(),input_sel);
return 0xffff;
}
void ssv_state::hypreact_map(address_map &map)
{
ssv_map(map, 0xf00000);
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start
map(0x21000e, 0x21000f).w(FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines
// AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read at the start, value not used
map(0xc00000, 0xc00001).r(FUNC(ssv_state::hypreact_input_r)); // Inputs
map(0xc00006, 0xc00007).ram().share("input_sel"); //
map(0xc00008, 0xc00009).noprw(); //
}
/***************************************************************************
Hyper Reaction 2
***************************************************************************/
void ssv_state::hypreac2_map(address_map &map)
{
ssv_map(map, 0xe00000);
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start
map(0x21000e, 0x21000f).w(FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines
// AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read at the start, value not used
map(0x500000, 0x500001).r(FUNC(ssv_state::hypreact_input_r)); // Inputs
map(0x500002, 0x500003).r(FUNC(ssv_state::hypreact_input_r)); // (again?)
map(0x520000, 0x520001).writeonly().share("input_sel"); // Inputs
// 0x540000, 0x540003 communication with other units
}
/***************************************************************************
Jan Jan Simasyo
***************************************************************************/
void ssv_state::janjans1_map(address_map &map)
{
ssv_map(map, 0xc00000);
map(0x210000, 0x210001).nopw(); // koikois2 but not janjans1
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
map(0x210006, 0x210007).nopr();
map(0x800000, 0x800001).writeonly().share("input_sel"); // Inputs
map(0x800002, 0x800003).r(FUNC(ssv_state::srmp4_input_r)); // Inputs
}
/***************************************************************************
Keith & Lucy
***************************************************************************/
void ssv_state::keithlcy_map(address_map &map)
{
ssv_map(map, 0xe00000);
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
map(0x210010, 0x210011).nopw(); //
map(0x21000e, 0x21000f).nopr(); //
map(0x400000, 0x47ffff).writeonly(); // ?
}
/***************************************************************************
Meosis Magic
***************************************************************************/
void ssv_state::meosism_map(address_map &map)
{
ssv_map(map, 0xf00000);
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start
// AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read once, value not used
// AM_RANGE(0x500004, 0x500005) AM_WRITENOP // ? 0,58,18
map(0x580000, 0x58ffff).ram().share("nvram"); // NVRAM
}
/***************************************************************************
Monster Slider
***************************************************************************/
/* Monster Slider needs the RAM mirrored for the gameplay logic to work correctly */
READ16_MEMBER(ssv_state::mainram_r)
{
return m_mainram[offset];
}
WRITE16_MEMBER(ssv_state::mainram_w)
{
COMBINE_DATA(&m_mainram[offset]);
}
void ssv_state::mslider_map(address_map &map)
{
ssv_map(map, 0xf00000);
map(0x010000, 0x01ffff).rw(FUNC(ssv_state::mainram_r), FUNC(ssv_state::mainram_w)); // RAM Mirror
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
map(0x400000, 0x47ffff).writeonly(); // ?
// AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? ff at the start
}
/***************************************************************************
Gourmet Battle Quiz Ryohrioh CooKing
***************************************************************************/
void ssv_state::ryorioh_map(address_map &map)
{
ssv_map(map, 0xc00000);
map(0x210000, 0x210001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
}
/***************************************************************************
Super Real Mahjong PIV
***************************************************************************/
READ16_MEMBER(ssv_state::srmp4_input_r)
{
uint16_t input_sel = *m_input_sel;
if (input_sel & 0x0002) return m_io_key[0]->read();
if (input_sel & 0x0004) return m_io_key[1]->read();
if (input_sel & 0x0008) return m_io_key[2]->read();
if (input_sel & 0x0010) return m_io_key[3]->read();
logerror("CPU #0 PC %06X: unknown input read: %04X\n",m_maincpu->pc(),input_sel);
return 0xffff;
}
void ssv_state::srmp4_map(address_map &map)
{
ssv_map(map, 0xf00000);
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1,5 at the start
map(0xc0000a, 0xc0000b).r(FUNC(ssv_state::srmp4_input_r)); // Inputs
map(0xc0000e, 0xc0000f).writeonly().share("input_sel"); // Inputs
map(0xc00010, 0xc00011).nopw(); //
}
/***************************************************************************
Super Real Mahjong P7
***************************************************************************/
/*
Interrupts aren't supported by the chip emulator yet
(lev 5 in this case, I guess)
*/
READ16_MEMBER(ssv_state::srmp7_irqv_r)
{
return 0x0080;
}
WRITE16_MEMBER(ssv_state::srmp7_sound_bank_w)
{
if (ACCESSING_BITS_0_7)
{
int bank = 0x400000/2 * (data & 1); // uint16_t address
for (int voice = 0; voice < 32; voice++)
m_ensoniq->voice_bank_w(voice, bank);
}
// popmessage("%04X",data);
}
READ16_MEMBER(ssv_state::srmp7_input_r)
{
uint16_t input_sel = *m_input_sel;
if (input_sel & 0x0002) return m_io_key[0]->read();
if (input_sel & 0x0004) return m_io_key[1]->read();
if (input_sel & 0x0008) return m_io_key[2]->read();
if (input_sel & 0x0010) return m_io_key[3]->read();
logerror("CPU #0 PC %06X: unknown input read: %04X\n",m_maincpu->pc(),input_sel);
return 0xffff;
}
void ssv_state::srmp7_map(address_map &map)
{
ssv_map(map, 0xc00000);
map(0x010000, 0x050faf).ram(); // More RAM
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start
map(0x21000e, 0x21000f).w(FUNC(ssv_state::lockout_inv_w)); // Coin Counters / Lockouts
map(0x300076, 0x300077).r(FUNC(ssv_state::srmp7_irqv_r)); // Sound
// 0x540000, 0x540003, related to lev 5 irq?
map(0x580000, 0x580001).w(FUNC(ssv_state::srmp7_sound_bank_w)); // Sound Bank
map(0x600000, 0x600001).r(FUNC(ssv_state::srmp7_input_r)); // Inputs
map(0x680000, 0x680001).writeonly().share("input_sel"); // Inputs
}
/***************************************************************************
Survival Arts
***************************************************************************/
void ssv_state::survarts_map(address_map &map)
{
ssv_map(map, 0xf00000);
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start
// AM_RANGE(0x290000, 0x290001) AM_READNOP // ?
// AM_RANGE(0x2a0000, 0x2a0001) AM_READNOP // ?
map(0x400000, 0x43ffff).ram(); // dyna
map(0x500008, 0x500009).portr("ADD_BUTTONS"); // Extra Buttons
}
/***************************************************************************
Pachinko Sexy Reaction
***************************************************************************/
READ16_MEMBER(ssv_state::sxyreact_ballswitch_r)
{
return m_io_service.read_safe(0);
}
READ16_MEMBER(ssv_state::sxyreact_dial_r)
{
return ((m_sxyreact_serial >> 1) & 0x80);
}
WRITE16_MEMBER(ssv_state::sxyreact_dial_w)
{
if (ACCESSING_BITS_0_7)
{
if (data & 0x20)
m_sxyreact_serial = m_io_paddle.read_safe(0) & 0xff;
if ( (m_sxyreact_dial & 0x40) && !(data & 0x40) ) // $40 -> $00
m_sxyreact_serial <<= 1; // shift 1 bit
m_sxyreact_dial = data;
}
}
WRITE16_MEMBER(ssv_state::sxyreact_motor_w)
{
// popmessage("%04X",data); // 8 = motor on; 0 = motor off
}
void ssv_state::sxyreact_map(address_map &map)
{
ssv_map(map, 0xe00000);
// AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(mainram_r, mainram_w) // sxyreac2 reads / writes here, why?
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start
map(0x21000e, 0x21000f).w(FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines
map(0x500002, 0x500003).r(FUNC(ssv_state::sxyreact_ballswitch_r)); // ?
map(0x500004, 0x500005).rw(FUNC(ssv_state::sxyreact_dial_r), FUNC(ssv_state::sxyreact_motor_w)); // Dial Value (serial)
map(0x520000, 0x520001).w(FUNC(ssv_state::sxyreact_dial_w)); // Dial Value (advance 1 bit)
map(0x580000, 0x58ffff).ram().share("nvram"); // NVRAM
}
/***************************************************************************
Twin Eagle II
***************************************************************************/
/* comes as either a standalone board or a standard SSV ROM board (verified) */
void ssv_state::twineag2_map(address_map &map)
{
ssv_map(map, 0xe00000);
map(0x010000, 0x03ffff).ram(); // More RAM
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog (also value is cmp.b with mem 8)
map(0x480000, 0x480001).rw(FUNC(ssv_state::dsp_dr_r), FUNC(ssv_state::dsp_dr_w));
map(0x482000, 0x482fff).rw(FUNC(ssv_state::dsp_r), FUNC(ssv_state::dsp_w));
}
/***************************************************************************
Ultra X
***************************************************************************/
/* standalone board based on SSV hardware */
void ssv_state::ultrax_map(address_map &map)
{
ssv_map(map, 0xe00000);
map(0x010000, 0x03ffff).ram(); // More RAM
map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog (also value is cmp.b with memory address 8)
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 2,6 at the start
}
/***************************************************************************
Joryuu Syougi Kyoushitsu
***************************************************************************/
/* from st0016.c */
READ32_MEMBER(ssv_state::latch32_r)
{
if(!offset)
m_latches[2]&=~2;
return m_latches[offset];
}
WRITE32_MEMBER(ssv_state::latch32_w)
{
if(!offset)
m_latches[2]|=1;
COMBINE_DATA(&m_latches[offset]);
machine().scheduler().synchronize();
}
READ16_MEMBER(ssv_state::latch16_r)
{
if(!offset)
m_latches[2]&=~1;
return m_latches[offset];
}
WRITE16_MEMBER(ssv_state::latch16_w)
{
if(!offset)
m_latches[2]|=2;
m_latches[offset]=data;
machine().scheduler().synchronize();
}
void ssv_state::jsk_map(address_map &map)
{
ssv_map(map, 0xf00000);
map(0x050000, 0x05ffff).rw(FUNC(ssv_state::mainram_r), FUNC(ssv_state::mainram_w)); // RAM Mirror?
map(0x210000, 0x210001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
map(0x400000, 0x47ffff).ram(); // RAM?
map(0x900000, 0x900007).rw(FUNC(ssv_state::latch16_r), FUNC(ssv_state::latch16_w));
}
void ssv_state::jsk_v810_mem(address_map &map)
{
map(0x00000000, 0x0001ffff).ram();
map(0x80000000, 0x8001ffff).ram();
map(0xc0000000, 0xc001ffff).ram();
map(0x40000000, 0x4000000f).rw(FUNC(ssv_state::latch32_r), FUNC(ssv_state::latch32_w));
map(0xfff80000, 0xffffffff).rom().region("sub", 0);
}
/***************************************************************************
Eagle Shot Golf
***************************************************************************/
WRITE8_MEMBER(ssv_state::eaglshot_gfxrom_bank_w)
{
membank("gfxrom")->set_entry(data < 6 ? data : 6);
}
WRITE8_MEMBER(ssv_state::eaglshot_trackball_w)
{
// All these get toggled during trackball reads; the precise arrangement is uncertain
m_upd4701->cs_w(!BIT(data, 6));
m_upd4701->ul_w(BIT(data, 5));
m_upd4701->xy_w(BIT(data, 4));
m_upd4701->resetx_w(BIT(data, 3));
m_upd4701->resety_w(BIT(data, 2));
}
READ16_MEMBER(ssv_state::eaglshot_gfxram_r)
{
return m_eaglshot_gfxram[offset + (m_scroll[0x76/2] & 0xf) * 0x40000/2];
}
WRITE16_MEMBER(ssv_state::eaglshot_gfxram_w)
{
offset += (m_scroll[0x76/2] & 0xf) * 0x40000/2;
COMBINE_DATA(&m_eaglshot_gfxram[offset]);
m_gfxdecode->gfx(0)->mark_dirty(offset / (16*8/2));
}
void ssv_state::eaglshot_map(address_map &map)
{
ssv_map(map, 0xf00000);
map(0x180000, 0x1bffff).rw(FUNC(ssv_state::eaglshot_gfxram_r), FUNC(ssv_state::eaglshot_gfxram_w));
map(0x210000, 0x210001).nopr(); /*AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)*/ // Watchdog
// AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start
map(0x21000e, 0x21000f).w(FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines
map(0x800000, 0x800000).w(FUNC(ssv_state::eaglshot_gfxrom_bank_w));
map(0x900000, 0x900000).w(FUNC(ssv_state::eaglshot_trackball_w));
map(0xa00000, 0xbfffff).bankr("gfxrom");
map(0xc00000, 0xc007ff).ram().share("nvram"); // NVRAM
map(0xd00000, 0xd00000).r(m_upd4701, FUNC(upd4701_device::d_r));
}
/***************************************************************************
Input Ports
***************************************************************************/
/***************************************************************************
Basic Coinage Settings
***************************************************************************/
#define SSV_COINAGE_BASIC( shift, default, name, diploc ) \
PORT_DIPNAME( 0x0003 << (shift), (default) << (shift), (name) ) PORT_DIPLOCATION( (diploc) ) \
PORT_DIPSETTING( 0x0001 << (shift), DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x0003 << (shift), DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x0000 << (shift), DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0x0002 << (shift), DEF_STR( 1C_2C ) )
#define SSV_COINAGE_STANDARD( shift, default, name, diploc ) \
PORT_DIPNAME( 0x0007 << (shift), (default) << (shift), (name) ) PORT_DIPLOCATION( (diploc) ) \
PORT_DIPSETTING( 0x0005 << (shift), DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x0006 << (shift), DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x0007 << (shift), DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x0004 << (shift), DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x0003 << (shift), DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0x0002 << (shift), DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0x0001 << (shift), DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0x0000 << (shift), DEF_STR( 1C_6C ) )
#define SSV_COINAGE_EXTENDED( shift, default, name, diploc ) \
PORT_DIPNAME( 0x000f << (shift), (default) << (shift), (name) ) PORT_DIPLOCATION( (diploc) ) \
PORT_DIPSETTING( 0x0007 << (shift), DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x0008 << (shift), DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x0009 << (shift), DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x000f << (shift), DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x0006 << (shift), DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0x000e << (shift), DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x000d << (shift), DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0x000c << (shift), DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0x000b << (shift), DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0x000a << (shift), DEF_STR( 1C_6C ) ) \
/* "** ADDED MULTIPLE COIN FEATURE **" */ \
PORT_DIPSETTING( 0x0005 << (shift), "Multiple Coin Feature A" ) \
/* 2c-1c, 4c-2c, 5c-3c & 6c-4c */ \
PORT_DIPSETTING( 0x0004 << (shift), "Multiple Coin Feature B" ) \
/* 2c-1c, 4c-3c */ \
PORT_DIPSETTING( 0x0003 << (shift), "Multiple Coin Feature C" ) \
/* 1c-1c, 2c-2c, 3c-3c, 4c-4c, 5c-6c */ \
PORT_DIPSETTING( 0x0002 << (shift), "Multiple Coin Feature D" ) \
/* 1c-1c, 2c-2c, 3c-3c & 4c-5c */ \
PORT_DIPSETTING( 0x0001 << (shift), "Multiple Coin Feature E" ) \
/* 1c-1c, 2c-3c */ \
/* Meaning of all "ON" varies between games so it's not included here */
/***************************************************************************
Common Joystick Inputs
***************************************************************************/
static INPUT_PORTS_START( ssv_joystick )
PORT_START("DSW1") // IN0 - $210002
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Modified below */
PORT_START("DSW2") // IN1 - $210004
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Modified below */
PORT_START("P1") // IN2 - $210008
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("P2") // IN3 - $21000a
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_START("SYSTEM") // IN4 - $21000c
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1)
PORT_BIT( 0x00e0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Common Mahjong Inputs
***************************************************************************/
static INPUT_PORTS_START( ssv_mahjong )
PORT_INCLUDE(ssv_joystick)
PORT_START("KEY0") // IN5 - $800002(0)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_L )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_H )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_D )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY1") // IN6 - $800002(1)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_K )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_G )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_C )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY2") // IN7 - $800002(2)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_N )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_J )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_F )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_B )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3") // IN8 - $800002(3)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_M )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_I )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_E )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_A )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Common Quiz Inputs
***************************************************************************/
static INPUT_PORTS_START( ssv_quiz )
PORT_START("DSW1") // IN0 - $210002
PORT_DIPUNUSED_DIPLOC( 0x0001, 0x0001, "DSW1:1" ) /* Manual states this dip is "Unused" */
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW1:2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0004, IP_ACTIVE_LOW, "DSW1:3" )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW1:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
SSV_COINAGE_BASIC( 4, 0x03, DEF_STR( Coin_A ), "DSW1:5,6" )
PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Modified below */
PORT_START("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) ) /* 15 sec */
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) ) /* 12 sec */
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) ) /* 10 sec */
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) /* 8 sec */
PORT_BIT( 0x00fc, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Modified below */
PORT_START("P1") // IN2 - $210008
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_START("P2") // IN3 - $21000a
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_START("SYSTEM") // IN4 - $21000c
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x00f0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Change Air Blade
***************************************************************************/
static INPUT_PORTS_START( cairblad )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0
SSV_COINAGE_STANDARD( 0, 0x07, DEF_STR( Coin_A ), "DSW1:1,2,3" )
SSV_COINAGE_STANDARD( 3, 0x07, DEF_STR( Coin_B ), "DSW1:4,5,6" )
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "DSW1:7" ) /* Manual lists this dip as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW1:8" ) /* Manual lists this dip as "Unused" */
PORT_MODIFY("DSW2") // IN1
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:2" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:3,4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Free_Play ) ) PORT_DIPLOCATION( "DSW2:5" )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "DSW2:6,7" )
PORT_DIPSETTING( 0x0040, "Every 2 Mil" )
PORT_DIPSETTING( 0x0060, "2 Mil/6 Mil" )
PORT_DIPSETTING( 0x0020, "4 Million" )
PORT_DIPSETTING( 0x0000, DEF_STR( None ) )
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "DSW2:8" )
INPUT_PORTS_END
/***************************************************************************
Drift Out '94
***************************************************************************/
static INPUT_PORTS_START( drifto94 )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW1:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0002, IP_ACTIVE_LOW, "DSW1:2" )
PORT_DIPNAME( 0x0004, 0x0004, "Sound Test" ) PORT_DIPLOCATION( "DSW1:3" )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW1:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
SSV_COINAGE_BASIC( 4, 0x03, DEF_STR( Coin_A ), "DSW1:5,6" )
SSV_COINAGE_BASIC( 6, 0x03, DEF_STR( Coin_B ), "DSW1:7,8" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2" )
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPUNKNOWN_DIPLOC( 0x0004, 0x0004, "DSW2:3" ) /* Manual lists these dips as "Unused" */
PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0008, "DSW2:4" )
PORT_DIPNAME( 0x0010, 0x0010, "Music Volume" ) PORT_DIPLOCATION( "DSW2:5" )
PORT_DIPSETTING( 0x0000, "Quiet" )
PORT_DIPSETTING( 0x0010, "Loud" )
PORT_DIPNAME( 0x0020, 0x0020, "Sound Volume" ) PORT_DIPLOCATION( "DSW2:6" )
PORT_DIPSETTING( 0x0000, "Quiet" )
PORT_DIPSETTING( 0x0020, "Loud" )
PORT_DIPNAME( 0x0040, 0x0040, "Save Best Time" ) PORT_DIPLOCATION( "DSW2:7" )
PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Yes ) )
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW2:8" ) /* Manual lists this dip as "Unused" */
INPUT_PORTS_END
/***************************************************************************
Dyna Gears
***************************************************************************/
static INPUT_PORTS_START( dynagear )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_EXTENDED( 0, 0x0f, DEF_STR( Coin_A ), "DSW1:1,2,3,4" )
//PORT_DIPSETTING( 0x0000, "???" ) - No values listed for all "ON"
SSV_COINAGE_EXTENDED( 4, 0x0f, DEF_STR( Coin_B ), "DSW1:5,6,7,8" )
//PORT_DIPSETTING( 0x0000, "???" ) - No values listed for all "ON"
PORT_MODIFY("DSW2") // IN0 - $210004
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:3,4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION( "DSW2:5,6" )
PORT_DIPSETTING( 0x0010, "1" )
PORT_DIPSETTING( 0x0030, "2" )
PORT_DIPSETTING( 0x0020, "3" )
PORT_DIPSETTING( 0x0000, "4" )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Free_Play ) ) PORT_DIPLOCATION( "DSW2:7" )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, "Health" ) PORT_DIPLOCATION( "DSW2:8" )
PORT_DIPSETTING( 0x0000, "3 Hearts" )
PORT_DIPSETTING( 0x0080, "4 Hearts" )
PORT_START("ADD_BUTTONS") // IN5 - $500008
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Pastel Island
***************************************************************************/
static INPUT_PORTS_START( pastelis )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) ) PORT_DIPLOCATION( "DSW1:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW1:2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0004, IP_ACTIVE_LOW, "DSW1:3" )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW1:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) PORT_DIPLOCATION( "DSW1:5,6" )
PORT_DIPSETTING( 0x0010, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0000, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x0030, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0020, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION( "DSW1:7,8" )
PORT_DIPSETTING( 0x0040, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0000, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0080, DEF_STR( 1C_2C ) )
PORT_MODIFY("DSW2") // IN0 - $210004
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Easy) )
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) ) PORT_DIPLOCATION( "DSW2:3" )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) PORT_DIPLOCATION( "DSW2:4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION( "DSW2:5,6" )
PORT_DIPSETTING( 0x0020, "1" )
PORT_DIPSETTING( 0x0030, "2" )
PORT_DIPSETTING( 0x0010, "3" )
PORT_DIPSETTING( 0x0000, "4" )
PORT_DIPNAME( 0x00c0, 0x00c0, "Extend" ) PORT_DIPLOCATION( "DSW2:7,8" )
PORT_DIPSETTING( 0x0000, "70000, every 90000" )
PORT_DIPSETTING( 0x0040, "every 70000" )
PORT_DIPSETTING( 0x0080, "50000, every 70000" )
PORT_DIPSETTING( 0x00c0, "every 50000" )
PORT_START("ADD_BUTTONS") // IN5 - $500008
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Eagle Shot Golf
***************************************************************************/
static INPUT_PORTS_START( eaglshot )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_EXTENDED( 0, 0x0f, DEF_STR( Coinage ), "DSW1:1,2,3,4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x0010, 0x0010, "Credits To Start" ) PORT_DIPLOCATION( "DSW1:5" )
PORT_DIPSETTING( 0x0010, "1" )
PORT_DIPSETTING( 0x0000, "2" )
PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Controls ) ) PORT_DIPLOCATION( "DSW1:6" )
PORT_DIPSETTING( 0x0020, DEF_STR( Trackball ) ) // trackball dosn't work yet
PORT_DIPSETTING( 0x0000, DEF_STR( Joystick ) )
PORT_DIPNAME( 0x0040, 0x0040, "Trackball Type" ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0040, "24 Counts (USA)" )
PORT_DIPSETTING( 0x0000, "12 Counts (Japan)" )
PORT_DIPUNKNOWN_DIPLOC( 0x0080, 0x0080, "DSW1:8" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0003, 0x0003, "Number Of Holes" ) PORT_DIPLOCATION( "DSW2:1,2" )
PORT_DIPSETTING( 0x0002, "2" )
PORT_DIPSETTING( 0x0003, "3" )
PORT_DIPSETTING( 0x0001, "4" )
PORT_DIPSETTING( 0x0000, "5" )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:3,4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
/*PORT_DIPSETTING( 0x0000, "???" ) - No listed value for ON & ON */
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:5" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION( "DSW2:6" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:7" )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "DSW2:8" )
PORT_START("TRACKX") // IN5 - trackball x ($d00000)
PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_RESET PORT_PLAYER(1)
PORT_START("TRACKY") // IN6 - trackball y ($d00000)
PORT_BIT( 0x0fff, 0x0000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_RESET PORT_PLAYER(1)
INPUT_PORTS_END
/***************************************************************************
Mobil Suit Gundam Final Shooting
***************************************************************************/
static INPUT_PORTS_START( gdfs )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Controls ) ) PORT_DIPLOCATION( "DSW1:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Joystick ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Light_Gun ) )
PORT_DIPNAME( 0x0002, 0x0002, "Light Gun Calibration" ) PORT_DIPLOCATION( "DSW1:2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Level_Select ) ) PORT_DIPLOCATION( "DSW1:3" ) /* Manual lists this dip as "Unused" */
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0018, 0x0018, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "DSW1:4,5" )
// PORT_DIPSETTING( 0x0000, DEF_STR( 2C_1C ) ) /* 2 Coins to Start, 1 Coin to Continue??? */
PORT_DIPSETTING( 0x0010, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0018, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0008, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0020, 0x0020, "Save Scores" ) PORT_DIPLOCATION( "DSW1:6" )
PORT_DIPSETTING( 0x0000, DEF_STR( No ) ) // Clear NVRAM on boot
PORT_DIPSETTING( 0x0020, DEF_STR( Yes ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW1:8" ) /* Manual lists this dip as "Unused" */
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0001, 0x0001, "Invert X Axis" ) PORT_DIPLOCATION( "DSW2:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC( 0x0002, 0x0002, "DSW2:2" ) /* Manual lists this dip as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "DSW2:3" ) /* Manual lists this dip as "Unused" */
PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Language ) ) PORT_DIPLOCATION( "DSW2:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( English ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Japanese ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:5" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, "Damage From Machine Gun" ) PORT_DIPLOCATION( "DSW2:6" ) // F76E34
PORT_DIPSETTING( 0x0020, "Light" )
PORT_DIPSETTING( 0x0000, "Heavy" )
PORT_DIPNAME( 0x0040, 0x0040, "Damage From Beam Cannon" ) PORT_DIPLOCATION( "DSW2:7" ) // F77487
PORT_DIPSETTING( 0x0040, "Light" )
PORT_DIPSETTING( 0x0000, "Heavy" )
PORT_DIPNAME( 0x0080, 0x0080, "Damage From Missle" ) PORT_DIPLOCATION( "DSW2:8" ) // F77255
PORT_DIPSETTING( 0x0080, "Light" )
PORT_DIPSETTING( 0x0000, "Heavy" )
PORT_START("GUNX1") // IN5 - $540000(0)
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_INVERT
PORT_START("GUNY1") // IN6 - $540000(1)
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_PLAYER(1)
PORT_START("GUNX2") // IN7 - $540000(2)
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_PLAYER(2) PORT_INVERT
PORT_START("GUNY2") // IN8 - $540000(3)
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_PLAYER(2)
INPUT_PORTS_END
/***************************************************************************
Hyper Reaction
***************************************************************************/
static INPUT_PORTS_START( hypreact )
PORT_START("DSW1") // IN0 - $210002
SSV_COINAGE_STANDARD( 0, 0x07, DEF_STR( Coin_A ), "DSWA:1,2,3" )
SSV_COINAGE_STANDARD( 3, 0x07, DEF_STR( Coin_B ), "DSWA:4,5,6" )
PORT_DIPNAME( 0x0040, 0x0040, "Half Coins To Continue" ) PORT_DIPLOCATION( "DSWA:7" )
PORT_DIPSETTING( 0x0040, DEF_STR( No ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION( "DSWA:8" )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSWB:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSWB:2" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSWB:3,4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Controls ) ) PORT_DIPLOCATION( "DSWB:5" )
PORT_DIPSETTING( 0x0010, "Keyboard" )
PORT_DIPSETTING( 0x0000, DEF_STR( Joystick ) )
PORT_DIPNAME( 0x0020, 0x0020, "Multiple coins" ) PORT_DIPLOCATION( "DSWB:6" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, "Keep Status On Continue" ) PORT_DIPLOCATION( "DSWB:7" )
PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Yes ) )
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "DSWB:8" )
PORT_START("P1") // IN2 - $210008 (used in joystick mode)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_NAME("P1 Mahjong Chi (Joy Mode)")
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_NAME("P1 Mahjong Pon (Joy Mode)")
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_NAME("P1 Mahjong Kan (Joy Mode)")
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_START("P2") // IN3 - $21000a (used in joystick mode)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_NAME("P1 Mahjong Reach (Joy Mode)")
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_NAME("P1 Mahjong Ron (Joy Mode)")
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_NAME("Tsumo")// Is this correct?
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM") // IN4 - $21000c
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service coin & bet
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x00f0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY0") // IN5 - $c00000(0)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY1") // IN6 - $c00000(1)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY2") // IN7 - $c00000(2)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3") // IN8 - $c00000(3)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Hyper Reaction 2
***************************************************************************/
static INPUT_PORTS_START( hypreac2 )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_STANDARD( 0, 0x07, DEF_STR( Coin_A ), "DSWA:1,2,3" )
SSV_COINAGE_STANDARD( 3, 0x07, DEF_STR( Coin_B ), "DSWA:4,5,6" )
PORT_DIPNAME( 0x0040, 0x0040, "Half Coins To Continue" ) PORT_DIPLOCATION( "DSWA:7" )
PORT_DIPSETTING( 0x0040, DEF_STR( No ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION( "DSWA:8" )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSWB:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSWB:2" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSWB:3,4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Controls ) ) PORT_DIPLOCATION( "DSWB:5" )
PORT_DIPSETTING( 0x0010, "Keyboard" )
PORT_DIPSETTING( 0x0000, DEF_STR( Joystick ) )
PORT_DIPNAME( 0x0020, 0x0020, "Communication" ) PORT_DIPLOCATION( "DSWB:6" )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, "Communication Mode" ) PORT_DIPLOCATION( "DSWB:7" )
PORT_DIPSETTING( 0x0040, "SLAVE" )
PORT_DIPSETTING( 0x0000, "MASTER" )
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "DSWB:8" )
PORT_START("KEY0") // IN5 - $500000(0)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY1") // IN6 - $500000(1)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY2") // IN7 - $500000(2)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3") // IN8 - $500000(3)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
JangJang Shimasho
***************************************************************************/
static INPUT_PORTS_START( janjans1 )
PORT_INCLUDE(ssv_mahjong)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPUNKNOWN_DIPLOC( 0x0001, 0x0001, "DSW1:1" )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW1:2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0004, IP_ACTIVE_LOW, "DSW1:3" )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW1:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
SSV_COINAGE_BASIC( 4, 0x03, DEF_STR( Coinage ), "DSW1:5,6" )
PORT_DIPNAME( 0x0040, 0x0040, "Voice" ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
PORT_DIPUNKNOWN_DIPLOC( 0x0080, 0x0080, "DSW1:8" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0004, 0x0004, "Nudity" ) PORT_DIPLOCATION( "DSW2:3" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, "Mini Game" ) PORT_DIPLOCATION( "DSW2:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
PORT_DIPNAME( 0x0030, 0x0030, "Initial Score" ) PORT_DIPLOCATION( "DSW2:5,6" )
PORT_DIPSETTING( 0x0020, "1000" )
PORT_DIPSETTING( 0x0030, "1500" )
PORT_DIPSETTING( 0x0010, "2000" )
PORT_DIPSETTING( 0x0000, "3000" )
PORT_DIPNAME( 0x00c0, 0x00c0, "Communication" ) PORT_DIPLOCATION( "DSW2:7,8" )
// PORT_DIPSETTING( 0x0080, "unused" )
PORT_DIPSETTING( 0x00c0, DEF_STR( None ) )
PORT_DIPSETTING( 0x0040, "Board 1 (Main)" )
PORT_DIPSETTING( 0x0000, "Board 2 (Sub)" )
INPUT_PORTS_END
/***************************************************************************
JangJang Shimasho 2
***************************************************************************/
static INPUT_PORTS_START( janjans2 )
PORT_INCLUDE(ssv_mahjong)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPUNKNOWN_DIPLOC( 0x0001, 0x0001, "DSW1:1" )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW1:2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0004, IP_ACTIVE_LOW, "DSW1:3" )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW1:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
SSV_COINAGE_BASIC( 4, 0x03, DEF_STR( Coinage ), "DSW1:5,6" )
PORT_DIPNAME( 0x0040, 0x0040, "Nudity" ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
PORT_DIPUNKNOWN_DIPLOC( 0x0080, 0x0080, "DSW1:8" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x000c, 0x000c, "Initial Score (vs player)") PORT_DIPLOCATION( "DSW2:3,4" )
PORT_DIPSETTING( 0x0008, "10000" )
PORT_DIPSETTING( 0x0004, "15000" )
PORT_DIPSETTING( 0x000c, "20000" )
PORT_DIPSETTING( 0x0000, "25000" )
PORT_DIPNAME( 0x0030, 0x0030, "Initial Score (vs CPU)" ) PORT_DIPLOCATION( "DSW2:5,6" )
PORT_DIPSETTING( 0x0020, "1000" )
PORT_DIPSETTING( 0x0030, "1500" )
PORT_DIPSETTING( 0x0010, "2000" )
PORT_DIPSETTING( 0x0000, "3000" )
PORT_DIPNAME( 0x00c0, 0x00c0, "Communication" ) PORT_DIPLOCATION( "DSW2:7,8" )
// PORT_DIPSETTING( 0x0080, "unused" )
PORT_DIPSETTING( 0x00c0, DEF_STR( None ) )
PORT_DIPSETTING( 0x0040, "Transmitter" )
PORT_DIPSETTING( 0x0000, "Receiver" )
INPUT_PORTS_END
/***************************************************************************
Joryuu Syougi Kyoushitsu
***************************************************************************/
static INPUT_PORTS_START( jsk )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:1,2,3")
PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x0001, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x0002, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0003, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) )
PORT_SERVICE_DIPLOC( 0x0008, IP_ACTIVE_LOW, "DSW1:4" )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW1:5")
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
PORT_DIPNAME( 0x00c0, 0x00c0, "Minutes" ) PORT_DIPLOCATION("DSW1:7,8")
PORT_DIPSETTING( 0x0080, "3" )
PORT_DIPSETTING( 0x00c0, "4" )
PORT_DIPSETTING( 0x0040, "5" )
PORT_DIPSETTING( 0x0000, "6" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0007, 0x0007, "Difficulty A" ) PORT_DIPLOCATION("DSW2:1,2,3")
PORT_DIPSETTING( 0x0000, "1 (Novice)" ) // 8 fixed levels
PORT_DIPSETTING( 0x0001, "2" )
PORT_DIPSETTING( 0x0002, "3" )
PORT_DIPSETTING( 0x0003, "4" )
PORT_DIPSETTING( 0x0007, "5 (Medium)" )
PORT_DIPSETTING( 0x0006, "6" )
PORT_DIPSETTING( 0x0005, "7" )
PORT_DIPSETTING( 0x0004, "8 (expert)" )
PORT_DIPNAME( 0x0008, 0x0008, "Difficulty Switch" ) PORT_DIPLOCATION("DSW2:4")
PORT_DIPSETTING( 0x0008, "A (8 Levels)" )
PORT_DIPSETTING( 0x0000, "B (4 Levels)" )
PORT_DIPNAME( 0x0030, 0x0030, "Difficulty B" ) PORT_DIPLOCATION("DSW2:5,6")
PORT_DIPSETTING( 0x0020, DEF_STR( Easy ) ) // 4 levels, and player can select 3 levels during game
PORT_DIPSETTING( 0x0030, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0040, 0x0040, "Campaign" ) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING( 0x0040, "Available" )
PORT_DIPSETTING( 0x0000, "Finished" )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:8")
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
/***************************************************************************
Keith & Lucy
***************************************************************************/
static INPUT_PORTS_START( keithlcy )
PORT_INCLUDE(ssv_quiz)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_BASIC( 6, 0x03, DEF_STR( Coin_B ), "DSW1:7,8" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Lives ) ) PORT_DIPLOCATION( "DSW2:3,4" )
PORT_DIPSETTING( 0x0008, "2" )
PORT_DIPSETTING( 0x000c, "3" )
PORT_DIPSETTING( 0x0004, "4" )
PORT_DIPSETTING( 0x0000, "5" )
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "DSW2:5,6" )
PORT_DIPSETTING( 0x0030, "Every 100k" ) //100
PORT_DIPSETTING( 0x0020, "Every 150k" ) //150
PORT_DIPSETTING( 0x0010, "100k & Every 200K" ) //100
PORT_DIPSETTING( 0x0000, "Every 200k" ) //200
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "DSW2:7" ) /* Manual lists these dips as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW2:8" ) /* Manual lists these dips as "Unused" */
INPUT_PORTS_END
/***************************************************************************
Koi Koi Simasho 2
***************************************************************************/
static INPUT_PORTS_START( koikois2 )
PORT_INCLUDE(ssv_mahjong)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPUNKNOWN_DIPLOC( 0x0001, 0x0001, "DSW1:1" )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW1:2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0004, IP_ACTIVE_LOW, "DSW1:3" )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW1:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
SSV_COINAGE_BASIC( 4, 0x03, DEF_STR( Coinage ), "DSW1:5,6" )
PORT_DIPNAME( 0x0040, 0x0040, "Voice" ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Controls ) ) PORT_DIPLOCATION( "DSW1:8" )
PORT_DIPSETTING( 0x0080, DEF_STR( Joystick ) )
PORT_DIPSETTING( 0x0000, "Keyboard" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0004, 0x0004, "Nudity" ) PORT_DIPLOCATION( "DSW2:3" )
PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Yes ) )
PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0008, "DSW2:4" )
PORT_DIPUNKNOWN_DIPLOC( 0x0010, 0x0010, "DSW2:5" )
PORT_DIPUNKNOWN_DIPLOC( 0x0020, 0x0020, "DSW2:6" )
PORT_DIPNAME( 0x00c0, 0x00c0, "Communication" ) PORT_DIPLOCATION( "DSW2:7,8" )
// PORT_DIPSETTING( 0x0080, "unused" )
PORT_DIPSETTING( 0x00c0, DEF_STR( None ) )
PORT_DIPSETTING( 0x0040, "Board 1 (Main)" )
PORT_DIPSETTING( 0x0000, "Board 2 (Sub)" )
INPUT_PORTS_END
/***************************************************************************
Meosis Magic
***************************************************************************/
static INPUT_PORTS_START( meosism )
PORT_START("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "DSW1:1,2" )
PORT_DIPSETTING( 0x0003, "1 Medal/1 Credit" )
PORT_DIPSETTING( 0x0001, "1 Medal/5 Credits" )
PORT_DIPSETTING( 0x0002, "1 Medal/10 Credits" )
PORT_DIPSETTING( 0x0000, "1 Medal/20 Credits" )
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW1:3" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, "Attendant Pay" ) PORT_DIPLOCATION( "DSW1:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Yes ) )
PORT_DIPNAME( 0x0010, 0x0010, "Medals Payout" ) PORT_DIPLOCATION( "DSW1:5" )
PORT_DIPSETTING( 0x0010, "400" )
PORT_DIPSETTING( 0x0000, "800" )
PORT_DIPNAME( 0x0020, 0x0020, "Max Credits" ) PORT_DIPLOCATION( "DSW1:6" )
PORT_DIPSETTING( 0x0020, "5000" )
PORT_DIPSETTING( 0x0000, "9999" )
PORT_DIPNAME( 0x0040, 0x0040, "Hopper" ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Yes ) )
PORT_DIPNAME( 0x0080, 0x0080, "Reel Speed" ) PORT_DIPLOCATION( "DSW1:8" )
PORT_DIPSETTING( 0x0080, DEF_STR( Low ) )
PORT_DIPSETTING( 0x0000, DEF_STR( High ) )
PORT_START("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0003, 0x0003, "Game Rate" ) PORT_DIPLOCATION( "DSW2:1,2" )
PORT_DIPSETTING( 0x0000, "80%" )
PORT_DIPSETTING( 0x0002, "85%" )
PORT_DIPSETTING( 0x0003, "90%" )
PORT_DIPSETTING( 0x0001, "95%" )
PORT_DIPUNKNOWN_DIPLOC( 0x0004, 0x0004, "DSW2:3" )
PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0008, "DSW2:4" )
PORT_DIPUNKNOWN_DIPLOC( 0x0010, 0x0010, "DSW2:5" )
PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Controls ) ) PORT_DIPLOCATION( "DSW2:6" )
PORT_DIPSETTING( 0x0020, "Simple" )
PORT_DIPSETTING( 0x0000, "Complex" )
PORT_DIPNAME( 0x0040, 0x0000, "Coin Sensor" ) PORT_DIPLOCATION( "DSW2:7" )
PORT_DIPSETTING( 0x0040, "Active High" )
PORT_DIPSETTING( 0x0000, "Active Low" )
PORT_DIPNAME( 0x0080, 0x0080, "Hopper Sensor" ) PORT_DIPLOCATION( "DSW2:8" )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_START("P1") // IN2 - $210008
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) //bet
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) //stop/r
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) //stop/c
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) //stop/l
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) //no
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) //yes
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START1 ) //start
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) //-
PORT_START("P2") // IN3 - $21000a
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) //-
PORT_SERVICE_NO_TOGGLE( 0x0002, IP_ACTIVE_LOW )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) //-
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Payout") //payout
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) //-
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT ) //reset
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) //-
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) //-
PORT_START("SYSTEM") // IN4 - $21000c
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10)
// PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10) // Should work but doesn't
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) //service coin
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Analyzer") //analyzer
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 ) //max bet
PORT_BIT( 0x00e2, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Monster Slider
***************************************************************************/
static INPUT_PORTS_START( mslider )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_STANDARD( 0, 0x07, DEF_STR( Coin_A ), "DSW1:1,2,3" )
SSV_COINAGE_STANDARD( 3, 0x07, DEF_STR( Coin_B ), "DSW1:4,5,6" )
PORT_SERVICE_DIPLOC( 0x0040, IP_ACTIVE_LOW, "DSW1:7" )
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW1:8" ) /* Manual lists this dip as "Unused" */
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( On ) ) // service mode calls this OFF
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) // and this ON, TODO: check if it's an error in the video code, or a mistake in the game
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:2" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:3,4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0030, 0x0030, "Rounds (Vs Mode)" ) PORT_DIPLOCATION( "DSW2:5,6" )
PORT_DIPSETTING( 0x0000, "1" )
PORT_DIPSETTING( 0x0030, "2" )
PORT_DIPSETTING( 0x0020, "3" )
PORT_DIPSETTING( 0x0010, "4" )
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "DSW2:7" ) /* Manual lists these dips as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW2:8" )
INPUT_PORTS_END
/***************************************************************************
Gourmet Battle Quiz Ryohrioh CooKing
***************************************************************************/
static INPUT_PORTS_START( ryorioh )
PORT_INCLUDE(ssv_quiz)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "DSW1:7" ) /* Manual states this dip is "Unused" */
PORT_DIPUNKNOWN_DIPLOC( 0x0080, 0x0080, "DSW1:8" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "DSW2:3" ) /* Manual states dips 3-8 are "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "DSW2:4" )
PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "DSW2:5" )
PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "DSW2:6" )
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "DSW2:7" )
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW2:8" )
INPUT_PORTS_END
/***************************************************************************
Super Real Mahjong PIV
***************************************************************************/
static INPUT_PORTS_START( srmp4 )
PORT_INCLUDE(ssv_mahjong)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION( "DSW1:1,2,3" )
PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x0001, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x0002, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0003, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) )
PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION( "DSW1:4,5,6" )
PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x0008, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x0010, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0018, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0028, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Free_Play ) ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPUNKNOWN_DIPLOC( 0x0080, 0x0080, "DSW1:8" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2,3" )
PORT_DIPSETTING( 0x0006, DEF_STR( Easiest ) )
PORT_DIPSETTING( 0x0005, DEF_STR( Easier ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0007, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Medium ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Harder ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:5" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0020, IP_ACTIVE_LOW, "DSW2:6" )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION( "DSW2:7" )
PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Yes ) )
PORT_DIPUNKNOWN_DIPLOC( 0x0080, 0x0080, "DSW2:8" )
INPUT_PORTS_END
/***************************************************************************
Super Real Mahjong P7
***************************************************************************/
static INPUT_PORTS_START( srmp7 )
PORT_START("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "DSW1:1,2,3" )
PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x0001, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x0002, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0003, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) )
PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0008, "DSW1:4" )
PORT_DIPUNKNOWN_DIPLOC( 0x0010, 0x0010, "DSW1:5" )
PORT_DIPUNKNOWN_DIPLOC( 0x0020, 0x0020, "DSW1:6" )
PORT_DIPNAME( 0x0040, 0x0040, "Re-cloth" ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, "Nudity" ) PORT_DIPLOCATION( "DSW1:8" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
PORT_START("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2,3" )
PORT_DIPSETTING( 0x0006, DEF_STR( Easiest ) )
PORT_DIPSETTING( 0x0005, DEF_STR( Easier ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0007, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Medium ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Harder ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0008, 0x0008, "Kuitan" ) PORT_DIPLOCATION( "DSW2:4" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION( "DSW2:5" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:6" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:7" )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "DSW2:8" )
PORT_START("P1") // IN2 - $210008
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2") // IN3 - $21000a
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM") // IN4 - $21000c
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested
PORT_BIT( 0x00e0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY0") // IN6 - $600000(0)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_K )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_G )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_C )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY1") // IN7 - $600000(1)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_N )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_J )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_F )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_B )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY2") // IN8 - $600000(2)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_M )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_I )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_E )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_A )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3") // IN5 - $600000(3)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_L )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_H )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_D )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Storm Blade
***************************************************************************/
static INPUT_PORTS_START( stmblade )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_STANDARD( 0, 0x07, DEF_STR( Coin_A ), "DSW1:1,2,3" )
SSV_COINAGE_STANDARD( 3, 0x07, DEF_STR( Coin_B ), "DSW1:4,5,6" )
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "DSW1:7" )
PORT_DIPNAME( 0x0080, 0x0080, "Rapid Fire" ) PORT_DIPLOCATION( "DSW1:8" )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:1" ) /* works opposite of expected, emulation issue?? */
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:2" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:3,4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION( "DSW2:5,6" )
PORT_DIPSETTING( 0x0020, "1" )
PORT_DIPSETTING( 0x0010, "2" )
PORT_DIPSETTING( 0x0030, "3" )
PORT_DIPSETTING( 0x0000, "4" )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "DSW2:7" )
PORT_DIPSETTING( 0x0040, "600000" )
PORT_DIPSETTING( 0x0000, "800000" )
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "DSW2:8" )
INPUT_PORTS_END
/***************************************************************************
Survival Arts
***************************************************************************/
static INPUT_PORTS_START( survarts )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_EXTENDED( 0, 0x09, DEF_STR( Coin_A ), "DSW1:1,2,3,4" )
PORT_DIPSETTING( 0x0000, "2 Credits Start, 1 to continue" )
SSV_COINAGE_EXTENDED( 4, 0x09, DEF_STR( Coin_B ), "DSW1:5,6,7,8" )
PORT_DIPSETTING( 0x0000, "2 Credits Start, 1 to continue" )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:2" )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0004, 0x0004, "Timer Speed" ) PORT_DIPLOCATION( "DSW2:3" )
PORT_DIPSETTING( 0x0004, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0000, "Fast" )
PORT_DIPNAME( 0x0008, 0x0008, "Damage Level" ) PORT_DIPLOCATION( "DSW2:4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0000, DEF_STR( High ) )
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:5,6" )
PORT_DIPSETTING( 0x0010, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0030, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x00c0, 0x00c0, "Fatal Damage" ) PORT_DIPLOCATION( "DSW2:7,8" )
PORT_DIPSETTING( 0x0040, "Light" )
PORT_DIPSETTING( 0x00c0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0080, "Heavy" )
PORT_DIPSETTING( 0x0000, "Heaviest" )
PORT_START("ADD_BUTTONS") // IN5 - $500008
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Pachinko Sexy Reaction
***************************************************************************/
static INPUT_PORTS_START( sxyreact )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_STANDARD( 0, 0x07, DEF_STR( Coin_A ), "DSW1:1,2,3" )
PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "DSW1:4" )
PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "DSW1:5" )
PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "DSW1:6" )
//SSV_COINAGE_STANDARD( 3, 0x07, DEF_STR( Coin_B ), "DSW1:4,5,6" )
PORT_DIPNAME( 0x0040, 0x0040, "Credits To Play" ) PORT_DIPLOCATION( "DSW1:7" )
PORT_DIPSETTING( 0x0040, "1" )
PORT_DIPSETTING( 0x0000, "2" )
PORT_DIPNAME( 0x0080, 0x0080, "Buy Balls With Credits" ) PORT_DIPLOCATION( "DSW1:8" ) // press start
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:1" )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "DSW2:2" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:3,4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Controls ) ) PORT_DIPLOCATION( "DSW2:5" )
PORT_DIPSETTING( 0x0010, "Dial" )
PORT_DIPSETTING( 0x0000, DEF_STR( Joystick ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Free_Play ) ) PORT_DIPLOCATION( "DSW2:6" )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0040, IP_ACTIVE_LOW, "DSW2:7" )
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW2:8" )
PORT_START("SERVICE") // IN5 - $500002
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SERVICE2 ) // ball switch on -> handle motor off
PORT_START("PADDLE") // IN6 - $500004
PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_MINMAX(0,0xcf) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M)
INPUT_PORTS_END
/***************************************************************************
Twin Eagle II
***************************************************************************/
static INPUT_PORTS_START( twineag2 )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
SSV_COINAGE_EXTENDED( 0, 0x0f, DEF_STR( Coin_A ), "DSW1:1,2,3,4" )
//PORT_DIPSETTING( 0x0000, "???" ) - No values listed for all "ON"
SSV_COINAGE_EXTENDED( 4, 0x0f, DEF_STR( Coin_B ), "DSW1:5,6,7,8" )
//PORT_DIPSETTING( 0x0000, "???" ) - No values listed for all "ON"
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "DSW2:1,2,3" )
PORT_DIPSETTING( 0x0006, DEF_STR( Easiest ) )
PORT_DIPSETTING( 0x0005, DEF_STR( Easier ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0007, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Medium ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Harder ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Free_Play ) ) PORT_DIPLOCATION( "DSW2:4" )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Lives ) ) PORT_DIPLOCATION( "DSW2:5" )
PORT_DIPSETTING( 0x0000, "2" )
PORT_DIPSETTING( 0x0010, "3" )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Pause ) ) PORT_DIPLOCATION( "DSW2:6" )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION( "DSW2:7" )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "DSW2:8" )
// Not shown in service mode I/O or show any function in game. Valid?
// PORT_MODIFY("SYSTEM") // IN4 - $21000c
// PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE2 )
// PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE4 )
// PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START3 )
// PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START4 )
INPUT_PORTS_END
/***************************************************************************
Ultra X
***************************************************************************/
static INPUT_PORTS_START( ultrax )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW1:1,2,3,4")
PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0009, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x000f, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x000e, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x000d, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x000c, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x000b, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x000a, DEF_STR( 1C_6C ) )
PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW1:5,6,7,8")
PORT_DIPSETTING( 0x0080, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0090, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x00f0, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00e0, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x00d0, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x00b0, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00a0, DEF_STR( 1C_6C ) )
PORT_MODIFY("DSW2") // IN1 - $210004
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW2:1,2")
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) ) //$140
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) ) //$190
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) ) //$200
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) //$300
PORT_DIPNAME( 0x0014, 0x0004, DEF_STR( Region ) ) PORT_DIPLOCATION("DSW2:3,5")
PORT_DIPSETTING( 0x0000, DEF_STR( China ) )
PORT_DIPSETTING( 0x0014, DEF_STR( Japan ) )
//PORT_DIPSETTING( 0x0010, DEF_STR( Japan ) )
PORT_DIPSETTING( 0x0004, DEF_STR( World ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("DSW2:4")
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
// country 0x0010
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW2:6")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "DSW2:8" )
INPUT_PORTS_END
/***************************************************************************
Vasara
***************************************************************************/
static INPUT_PORTS_START( vasara )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("SYSTEM") // IN4 - $21000c
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("DSW1:1")
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0004, IP_ACTIVE_LOW, "DSW1:3" )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
SSV_COINAGE_BASIC( 4, 0x03, DEF_STR( Coin_A ), "DSW1:5,6" )
SSV_COINAGE_BASIC( 6, 0x03, DEF_STR( Coin_B ), "DSW1:7,8" )
PORT_MODIFY("DSW2") // IN1
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW2:1,2")
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x000c, 0x000c, "Bomber Stock" ) PORT_DIPLOCATION("DSW2:3,4")
PORT_DIPSETTING( 0x0000, "0" )
PORT_DIPSETTING( 0x0004, "1" )
PORT_DIPSETTING( 0x000c, "2" )
PORT_DIPSETTING( 0x0008, "3" )
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives )) PORT_DIPLOCATION("DSW2:5,6")
PORT_DIPSETTING( 0x0000, "1" )
PORT_DIPSETTING( 0x0010, "2" )
PORT_DIPSETTING( 0x0030, "3" )
PORT_DIPSETTING( 0x0020, "5" )
PORT_DIPNAME( 0x0040, 0x0040, "Game Voice" ) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0000, "English Subtitles" ) PORT_DIPLOCATION("DSW2:8")
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
/***************************************************************************
Vasara 2
***************************************************************************/
static INPUT_PORTS_START( vasara2 )
PORT_INCLUDE(ssv_joystick)
PORT_MODIFY("SYSTEM") // IN4 - $21000c
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_MODIFY("DSW1") // IN0 - $210002
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("DSW1:1")
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0004, IP_ACTIVE_LOW, "DSW1:3" )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
SSV_COINAGE_BASIC( 4, 0x03, DEF_STR( Coin_A ), "DSW1:5,6" )
SSV_COINAGE_BASIC( 6, 0x03, DEF_STR( Coin_B ), "DSW1:7,8" )
PORT_MODIFY("DSW2") // IN1
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW2:1,2")
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW2:3,4")
PORT_DIPSETTING( 0x0000, "1" )
PORT_DIPSETTING( 0x0004, "2" )
PORT_DIPSETTING( 0x000c, "3" )
PORT_DIPSETTING( 0x0008, "5" )
PORT_DIPNAME( 0x0010, 0x0010, "Game Voice" ) PORT_DIPLOCATION("DSW2:5")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, "Vasara Stock" ) PORT_DIPLOCATION("DSW2:6")
PORT_DIPSETTING( 0x0020, "2" )
PORT_DIPSETTING( 0x0000, "3" )
PORT_DIPNAME( 0x0040, 0x0040, "English Subtitles" ) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, "Secret Character" ) PORT_DIPLOCATION("DSW2:8")
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
/***************************************************************************
Graphics Layouts
***************************************************************************/
/* 16 x 8 tiles. Depth is 8 bits, but can be decreased to 6 (and maybe
less) at runtime. */
static const gfx_layout layout_16x8x8 =
{
16,8,
RGN_FRAC(1,4),
8,
{ RGN_FRAC(3,4)+8, RGN_FRAC(3,4)+0,
RGN_FRAC(2,4)+8, RGN_FRAC(2,4)+0,
RGN_FRAC(1,4)+8, RGN_FRAC(1,4)+0,
RGN_FRAC(0,4)+8, RGN_FRAC(0,4)+0 },
{ STEP8(0,1), STEP8(16,1) },
{ STEP8(0,16*2) },
16*8*2
};
static GFXDECODE_START( gfx_ssv )
GFXDECODE_ENTRY( "gfx1", 0, layout_16x8x8, 0, 0x8000/64 ) // [0] Sprites (256 colors)
GFXDECODE_END
static const gfx_layout layout_16x8x8_ram =
{
16,8,
0x40000 * 16 / (16 * 8),
8,
{ STEP8(0,1) },
{ STEP16(0,8) },
{ STEP8(0,16*8) },
16*8*8
};
static GFXDECODE_START( gfx_eaglshot )
GFXDECODE_ENTRY( nullptr, 0, layout_16x8x8_ram, 0, 0x8000/64 ) // [0] Sprites (256 colors, decoded from RAM)
GFXDECODE_END
static const gfx_layout layout_16x16x8 =
{
16,16,
RGN_FRAC(1,1),
8,
{ STEP8(0,1) },
{ STEP16(0,8) },
{ STEP16(0,16*8) },
16*16*8
};
static GFXDECODE_START( gfx_gdfs )
GFXDECODE_ENTRY( "gfx1", 0, layout_16x8x8, 0, 0x8000/64 ) // [0] Sprites (256 colors)
GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0, 0x8000/256 ) // [3] Tilemap
GFXDECODE_END
/***************************************************************************
Machine Drivers
***************************************************************************/
/***************************************************************************
Some games (e.g. hypreac2) oddly map the high bits of the tile code
to the gfx ROMs: arranging the ROMs accordingly would waste tens of
megabytes. So we use a look-up table.
We also need to set up game specific offsets for sprites and layers
(at least until the CRT controlled will be emulated).
***************************************************************************/
void ssv_state::init_ssv()
{
for (int i = 0; i < 16; i++)
m_tile_code[i] = bitswap<4>(i,0,1,2,3) << 16;
enable_video(1);
m_interrupt_ultrax = 0;
save_item(NAME(m_requested_int));
save_item(NAME(m_irq_enable));
}
void ssv_state::init_ssv_tilescram()
{
init_ssv();
for (int i = 0; i < 16; i++)
m_tile_code[i] = i << 16;
}
// srmp4
// ((uint16_t *)memregion("maincpu")->base())[0x2b38/2] = 0x037a; /* patch to see gal test mode */
void ssv_state::init_sexy()
{
init_ssv_tilescram();
save_item(NAME(m_sxyreact_serial));
save_item(NAME(m_sxyreact_dial));
}
void ssv_state::init_eaglshot()
{
init_ssv_tilescram();
membank("gfxrom")->configure_entries(0, 6+1, memregion("gfxdata")->base(), 0x200000);
}
void ssv_state::init_jsk()
{
init_ssv();
save_item(NAME(m_latches));
}
void ssv_state::init_pastelis()
{
init_ssv();
m_raster_interrupt_enabled = true;
}
void ssv_state::init_ssv_irq1()
{
init_ssv();
m_interrupt_ultrax = 1;
}
#define SSV_MASTER_CLOCK XTAL(48'000'000)/3
#define SSV_PIXEL_CLOCK XTAL(42'954'545)/6
#define SSV_HTOTAL 0x1c6
#define SSV_HBEND 0
#define SSV_HBSTART 0x150
#define SSV_VTOTAL 0x106
#define SSV_VBEND 0
#define SSV_VBSTART 0xf0
void ssv_state::ssv(machine_config &config)
{
/* basic machine hardware */
V60(config, m_maincpu, SSV_MASTER_CLOCK); /* Based on STA-0001 & STA-0001B System boards */
m_maincpu->set_irq_acknowledge_callback(FUNC(ssv_state::irq_callback));
TIMER(config, "scantimer").configure_scanline(FUNC(ssv_state::interrupt), "screen", 0, 1);
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(SSV_PIXEL_CLOCK,SSV_HTOTAL,SSV_HBEND,SSV_HBSTART,SSV_VTOTAL,SSV_VBEND,SSV_VBSTART);
m_screen->set_screen_update(FUNC(ssv_state::screen_update));
m_screen->set_palette(m_palette);
//m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ssv);
PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 0x8000);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
ES5506(config, m_ensoniq, SSV_MASTER_CLOCK);
m_ensoniq->set_region0("ensoniq.0");
m_ensoniq->set_region1("ensoniq.1");
m_ensoniq->set_region2("ensoniq.2");
m_ensoniq->set_region3("ensoniq.3");
m_ensoniq->set_channels(1);
m_ensoniq->add_route(0, "lspeaker", 0.1);
m_ensoniq->add_route(1, "rspeaker", 0.1);
}
void ssv_state::drifto94(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::drifto94_map);
UPD96050(config, m_dsp, 10000000); /* TODO: correct? */
m_dsp->set_addrmap(AS_PROGRAM, &ssv_state::dsp_prg_map);
m_dsp->set_addrmap(AS_DATA, &ssv_state::dsp_data_map);
config.m_perfect_cpu_quantum = subtag("maincpu");
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
m_screen->set_visarea(0, (0xcd-0x25)*2-1, 0, (0x101-0x13)-1);
}
void ssv_state::gdfs(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::gdfs_map);
EEPROM_93C46_16BIT(config, m_eeprom);
ADC0809(config, m_adc, 1000000); // unknown clock
m_adc->in_callback<0>().set_ioport("GUNX1");
m_adc->in_callback<1>().set_ioport("GUNY1");
m_adc->in_callback<2>().set_ioport("GUNX2");
m_adc->in_callback<3>().set_ioport("GUNY2");
m_adc->eoc_callback().set(FUNC(ssv_state::gdfs_adc_int_w));
/* video hardware */
m_screen->set_visarea(0, (0xd5-0x2c)*2-1, 0, (0x102-0x12)-1);
m_screen->set_screen_update(FUNC(ssv_state::screen_update_gdfs));
ST0020_SPRITES(config, m_gdfs_st0020, 0);
m_gdfs_st0020->set_palette(m_palette);
m_gfxdecode->set_info(gfx_gdfs);
MCFG_VIDEO_START_OVERRIDE(ssv_state,gdfs)
}
void ssv_state::hypreact(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::hypreact_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xcb-0x22)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::hypreac2(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::hypreac2_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xcb-0x22)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::janjans1(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::janjans1_map);
/* video hardware */
m_screen->set_visarea(0, (0xcb-0x23)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::keithlcy(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::keithlcy_map);
/* video hardware */
m_screen->set_visarea(0, (0xcd-0x25)*2-1, 0, (0x101 - 0x13)-1);
}
void ssv_state::meosism(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::meosism_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xd5-0x2c)*2-1, 0, (0xfe - 0x12)-1);
}
void ssv_state::mslider(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::mslider_map);
/* video hardware */
m_screen->set_visarea(0, (0xd6-0x26)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::ryorioh(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::ryorioh_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xcb-0x23)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::vasara(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::ryorioh_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xcc-0x24)*2-1, 0,(0xfe - 0x0e)-1);
}
void ssv_state::srmp4(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::srmp4_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xd4-0x2c)*2-1, 0, (0x102 - 0x12)-1);
}
void ssv_state::srmp7(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::srmp7_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xd4-0x2c)*2-1, 0, (0xfd - 0x0e)-1);
}
void ssv_state::stmblade(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::drifto94_map);
UPD96050(config, m_dsp, 10000000);
m_dsp->set_addrmap(AS_PROGRAM, &ssv_state::dsp_prg_map);
m_dsp->set_addrmap(AS_DATA, &ssv_state::dsp_data_map);
/* don't need this, game just does a simple check at boot then the DSP stalls into a tight loop. */
//config.m_perfect_cpu_quantum = subtag("maincpu");
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
m_screen->set_visarea(0, (0xd6-0x26)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::survarts(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::survarts_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xd4-0x2c)*2-1, 0, (0x102 - 0x12)-1);
}
void ssv_state::dynagear(machine_config &config)
{
survarts(config);
/* video hardware */
m_screen->set_visarea(0, (0xd4-0x2c)*2-1, 0, (0x102 - 0x12)-1);
}
void ssv_state::eaglshot(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::eaglshot_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
UPD4701A(config, m_upd4701);
m_upd4701->set_portx_tag("TRACKX");
m_upd4701->set_porty_tag("TRACKY");
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xca - 0x2a)*2-1, 0, (0xf6 - 0x16)-1);
m_screen->set_screen_update(FUNC(ssv_state::screen_update_eaglshot));
m_gfxdecode->set_info(gfx_eaglshot);
MCFG_VIDEO_START_OVERRIDE(ssv_state,eaglshot)
}
void ssv_state::sxyreact(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::sxyreact_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xcb - 0x22)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::sxyreac2(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::sxyreact_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xcb - 0x23)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::cairblad(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::sxyreact_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xcb - 0x22)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::twineag2(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::twineag2_map);
UPD96050(config, m_dsp, 10000000);
m_dsp->set_addrmap(AS_PROGRAM, &ssv_state::dsp_prg_map);
m_dsp->set_addrmap(AS_DATA, &ssv_state::dsp_data_map);
config.m_perfect_cpu_quantum = subtag("maincpu");
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xd4 - 0x2c)*2-1, 0, (0x102 - 0x12)-1);
}
void ssv_state::ultrax(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::ultrax_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xd4 - 0x2c)*2-1, 0, (0x102 - 0x12)-1);
}
void ssv_state::jsk(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::jsk_map);
V810(config, "sub", 25000000).set_addrmap(AS_PROGRAM, &ssv_state::jsk_v810_mem);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
m_screen->set_visarea(0, (0xca - 0x22)*2-1, 0, (0xfe - 0x0e)-1);
}
void ssv_state::pastelis(machine_config &config)
{
ssv(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &ssv_state::keithlcy_map);
/* video hardware */
m_screen->set_visarea(0, (0xd6-0x26)*2-1, 0, (0xfe - 0x0e)-1);
}
/***************************************************************************
ROMs Loading
***************************************************************************/
/***************************************************************************
Change Air Blade (Japan)
Change Air Blade
Sammy, 1999
ROM board for use with System SSV Main Board
PCB No: P1-112C
Fairly sparsely populated board containing not much except....
RAM : 6262 (x1)
OTHER : 3.6V Ni-Cd Battery
PALs : (x1, labelled AC412G00)
ROMs : (Filename = ROM Label)
(Extension = PCB Location)
------------------------------
AC1801M01.U6 32M Mask
AC1802M01.U9 32M Mask
AC1805M01.U8 32M Mask
AC1806M01.U11 32M Mask
AC1803M01.U7 32M Mask
AC1804M01.U10 32M Mask
AC1807M01.U41 32M Mask
AC1810E01.U32 27C160
***************************************************************************/
ROM_START( cairblad )
ROM_REGION( 0x200000, "maincpu", 0 ) /* V60 Code */
ROM_LOAD16_WORD( "ac1810e0.u32", 0x000000, 0x200000, CRC(13a0b4c2) SHA1(3498303e9b186ab329ee761cee9d4cb8ed552455) ) // AC1810E01.U32 27C160
ROM_REGION( 0x2000000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "ac1801m0.u6", 0x0000000, 0x400000, CRC(1b2b6943) SHA1(95c5dc0ed1d533b2285452c8546346d96a90d097) ) // AC1801M01.U6 32M Mask
ROM_LOAD( "ac1802m0.u9", 0x0400000, 0x400000, CRC(e053b087) SHA1(9569e79c6363e8f97c27aacaa29d25cf32c4b4c1) ) // AC1802M01.U9 32M Mask
ROM_LOAD( "ac1803m0.u7", 0x0800000, 0x400000, CRC(45484866) SHA1(5e2f06743906be298202eafc233b76762d60d8aa) ) // AC1803M01.U7 32M Mask
ROM_LOAD( "ac1804m0.u10", 0x0c00000, 0x400000, CRC(5e0b2285) SHA1(b3b8f249c1b1b2e9438ebc3a669f3ebfb5aa5feb) ) // AC1804M01.U10 32M Mask
ROM_LOAD( "ac1805m0.u8", 0x1000000, 0x400000, CRC(19771f43) SHA1(d6a05392c58d3f60d666e08b3a82f06fa2c8e3a3) ) // AC1805M01.U8 32M Mask
ROM_LOAD( "ac1806m0.u11", 0x1400000, 0x400000, CRC(816b97dc) SHA1(3737cb37a4db720901661fa9b4e30c44181efb94) ) // AC1806M01.U11 32M Mask
ROM_FILL( 0x1800000, 0x800000, 0x000000)
ROM_REGION16_BE( 0x400000, "ensoniq.0", 0 ) /* Samples */
ROM_LOAD16_WORD_SWAP( "ac1410m0.u41", 0x000000, 0x400000, CRC(ecf1f255) SHA1(984b1529b8f0c7d94ea713c85d71df00f54eba79) ) // AC1807M01.U41 32M Mask
ROM_END
/***************************************************************************
Drift Out '94 - The hard order
----------------------
System SSV (STA-0001B)
----------------------
CPU : NEC D70615GD-16-S (V60)
Sound: Ensoniq ES5506 (OTTOR2)
OSC : 42.9545MHz(X2) 48.0000MHz(X3)
Custom chips:
ST-0004 (Video DAC?)
ST-0005 (Parallel I/O?)
ST-0006 (Video controller)
ST-0007 (System controller)
Program Work RAM : 256Kbitx2 (expandable to 1Mx2)
Object Work RAM : 1Mbitx2
Color Palette RAM : 256Kbitx3 (expandable to 1Mx3)
-------------------------
SSV Subboard (VISCO-001B)
-------------------------
ROMs:
visco-33.bin - Main programs (27c4000)
visco-37.bin /
vg003-19.u26 - Data? (mask, read as 27c160)
vg003-17.u22 - Samples (mask, read as 27c160)
vg003-18.u15 /
vg003-01.a0 - Graphics (mask, read as 27c160)
vg003-05.a1 |
vg003-09.a2 |
vg009-13.a3 |
vg009-02.b0 |
vg003-06.b1 |
vg003-10.b2 |
vg003-14.b3 |
vg003-03.c0 |
vg003-07.c1 |
vg003-11.c2 |
vg003-15.c3 |
vg003-04.d0 |
vg003-08.d1 |
vg003-12.d2 |
vg003-16.d3 /
VISCO-001B
|-----------------------|CN1|-|
| |
| VG003-16.D3 L |
| VG003-12.D2 o |
| VG003-18.U15 VG003-08.D1 g |
| VG003-17.U22 VG003-04.D0 i |
| VG003-15.C3 c |
| VG003-11.C2 |
| VG003-07.C1 c |
| uPD4701AC VG003-03.C0 h |
| ADC0809 VG003-14.B3 i |
| VG003-19.U26 VG003-10.B2 p |
| VISCO-33.U33 VG003-06.B1 s |
| VISCO-37.U37 VG003-02.B0 |
|6264 VG003-22 VG003-13.A3 x |
| ST010 VG003-09.A2 |
| VG003-05.A1 1 |
|3790 BT2* BT1 VG003-01.A0 7 |
| |
|-----------------------------|
VG003-22: GAL16V8B (undumped) at U29
SETA ST010: Custom programmed uPD96050 MCU used for math caculations
ADC0809CCN: 8bit microprocessor compatible A/D converters with 8-Channel Multiplexer
uPD4701AC: X, Y 2-axis Incremental Encoder Counter
CN1: 5-pin male header/connector
3790: MB3790 Bi-CMOS Battery Backup IC
6264: Sharp LH5168D-10L 8K x 8bit CMOS SRAM
BT1: CR2032 3v battery
***************************************************************************/
ROM_START( drifto94 )
ROM_REGION( 0x400000, "maincpu", 0 ) /* V60 Code */
ROM_LOAD16_WORD( "vg003-19.u26", 0x000000, 0x200000, CRC(238e5e2b) SHA1(fe58f571857804263642d7d089df962327a007b6) ) // "SoundDriverV1.1a"
ROM_LOAD16_BYTE( "visco-37.u37", 0x200000, 0x080000, CRC(78fa3ccb) SHA1(0c79ff1aa31e7ca1eeb14fbef7774278fa83ba44) )
ROM_RELOAD( 0x300000, 0x080000)
ROM_LOAD16_BYTE( "visco-33.u33", 0x200001, 0x080000, CRC(88351146) SHA1(1decce44b5d244b57676177f417e4937d7088124) )
ROM_RELOAD( 0x300001, 0x080000)
ROM_REGION( 0x2000000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "vg003-01.a0", 0x0000000, 0x200000, CRC(2812aa1a) SHA1(5046fe51a4ea50051a19cfeeb091c87f0f217fb8) )
ROM_LOAD( "vg003-05.a1", 0x0200000, 0x200000, CRC(1a1dd910) SHA1(f2252e4cd1b6269036ed02cec9d5a224736c1bce) )
ROM_LOAD( "vg003-09.a2", 0x0400000, 0x200000, CRC(198f1c06) SHA1(7df5d51aa62f0b609cd1d296a3cfeeb38fbcd9d0) )
ROM_LOAD( "vg003-13.a3", 0x0600000, 0x200000, CRC(b45b2267) SHA1(66828efcca2050bc1cdca6bbf2e8cf015ff937a8) )
ROM_LOAD( "vg003-02.b0", 0x0800000, 0x200000, CRC(d7402027) SHA1(32af6d611ea277a860ee10e98f4eee5c4458ef7a) )
ROM_LOAD( "vg003-06.b1", 0x0a00000, 0x200000, CRC(518c509f) SHA1(e4bcbe1d8644490a58670add40d2908c7acdf989) )
ROM_LOAD( "vg003-10.b2", 0x0c00000, 0x200000, CRC(c1ee9d8b) SHA1(7425cf92225cd1c8d764aa47db6219a6d8b090a5) )
ROM_LOAD( "vg003-14.b3", 0x0e00000, 0x200000, CRC(645b672b) SHA1(26dfde289679cd780bc65f4f6783a6a0f8b87818) )
ROM_LOAD( "vg003-03.c0", 0x1000000, 0x200000, CRC(1ca7163d) SHA1(d8c5fd0054a1bc1fbad5866216f6d83c42436ecd) )
ROM_LOAD( "vg003-07.c1", 0x1200000, 0x200000, CRC(2ff113bb) SHA1(a482ddd3c86633a79d18a03193d70fc8f0f157d8) )
ROM_LOAD( "vg003-11.c2", 0x1400000, 0x200000, CRC(f924b105) SHA1(079ad0fc3b34c31a67dd88a442088237a2c03fdd) )
ROM_LOAD( "vg003-15.c3", 0x1600000, 0x200000, CRC(83623b01) SHA1(026654303fb58958bc7f7be86aeb4fdd08e8be7b) )
ROM_LOAD( "vg003-04.d0", 0x1800000, 0x200000, CRC(6be9bc62) SHA1(c0b49a558786b50f04c1cd87a11e111ad31b85d9) )
ROM_LOAD( "vg003-08.d1", 0x1a00000, 0x200000, CRC(a7113cdb) SHA1(74d8bfee7e816d53e60d4e54a2584643562a1ee5) )
ROM_LOAD( "vg003-12.d2", 0x1c00000, 0x200000, CRC(ac0fd855) SHA1(992ae0d02bcefaa2fad7462b211a49fbd1338b62) )
ROM_LOAD( "vg003-16.d3", 0x1e00000, 0x200000, CRC(1a5fd312) SHA1(1e67ffa51408de107be75c9c63df6fd1bb6ce6b1) )
ROM_REGION16_BE( 0x400000, "ensoniq.0", ROMREGION_ERASE | 0 ) /* Samples */
ROM_LOAD16_BYTE( "vg003-17.u22", 0x000000, 0x200000, CRC(6f9294ce) SHA1(b097defd95eb1d8f00e107d7669f9d33148e75c1) )
ROM_REGION16_BE( 0x400000, "ensoniq.1", ROMREGION_ERASE | 0 ) /* Samples */
ROM_LOAD16_BYTE( "vg003-18.u15", 0x000000, 0x200000, CRC(511b3e93) SHA1(09eda175c8f1b21c18645519cc6e89c6ca1fc5de) )
ROM_REGION( 0x11000, "st010", 0)
ROM_LOAD( "st010.bin", 0x00000, 0x11000, CRC(aa11ee2d) SHA1(cc1984e989cb94e3dcbb5f99e085b5414e18a017) ) // BPMicro-compatible dump
ROM_REGION32_BE( 0x10000, "dspprg", 0)
ROM_COPY( "st010", 0x00000, 0x00000, 0x10000 )
ROM_REGION16_BE( 0x01000, "dspdata", 0)
ROM_COPY( "st010", 0x10000, 0x00000, 0x01000 )
ROM_END
/***************************************************************************
Eagle Shot Golf
Sammy, 1994
GOLF ROM
|----------------------------------------|
| 514400 GAL SI3-11 |
| GAL SI3-12 |
| 514400 |
| SI003-06.u31 SI003-09.u18 |
| 514400 |
| |
| 514400 SI003-05.u30 SI003-10.u20 |
| |
| 514400 |
| SI003-04.u10 |
| 514400 |
| |
| 514400 SI003-03.u11 |
| |
| 514400 |
| SI003-02.u12 |
| |
| |
| SI003-01.u13 SI003-07.U23 |
| |
| |
| SI003-08.U24 |
| |
| uPD4701 |
| |
| mc14584b |
| |
| P1 |
|-------------------------------||||||---|
mc14584b - Motorola HEX Schmitt Trigger
uPD4701 - Mouse/Trackball interface by NEC
514400 - Hatachi HM514400BS7 1M x 4 DRAM (4 Megs of RAM)
GAL - GAL16V8B
P1 - 6 Pin trackball connector (same pinout as Golden Tee 9x series)
Lower PCB
PCB Number: GOLF ROM PCB
RAM : HM514400 (x8)
PALs : GAL16V8 (x2) labelled SI3-11 & SI3-12
OTHER : NEC D4701AC
Controls probably trackball, has 6 pin connector hooked up to a
mc14584b Logic IC. Joystick appears to be used also for selecting
stance, club and direction.
ROMs : U18 & U20 are used for main program.
All rest are 16M Mask
U23 & U24 are sound related, all others for GFX.
Loc ROMs Use & EPROM type
-----------------------------------------
U18 si003-09.prl - V60 Program (27C4001)
U20 si003-10.prh /
U23 si003-07.s0 - Samples (16M-Mask)
U24 si003-08.s1 /
U13 si003-01.d0 - Graphics (16M-Mask)
U12 si003-02.d1 |
U11 si003-03.d2 |
U10 si003-04.d3 |
U30 si003-05.d4 |
U31 si003-06.d5 /
NOTE: The "s" and "d" designations above are silk-screened on the ROM PCB.
Chips of note: mc14584b - Motorola HEX Schmitt Trigger
This chip is used for the trackball trigger / reading / converting values
***************************************************************************/
ROM_START( eaglshot )
ROM_REGION( 0x100000, "maincpu", 0 ) /* V60 Code */
ROM_LOAD16_BYTE( "si003-09.u18", 0x000000, 0x080000, CRC(219c71ce) SHA1(4f8996b4c5b267a90073d67857358147732f8c0d) )
ROM_LOAD16_BYTE( "si003-10.u20", 0x000001, 0x080000, CRC(c8872e48) SHA1(c8e1e712d5fa380f8fc1447502f21d2ae592811a) )
ROM_REGION16_LE( 0xe00000, "gfxdata", ROMREGION_ERASEFF ) /* Sprites - Read by the CPU */
ROM_LOAD( "si003-01.u13", 0x0000000, 0x200000, CRC(d7df0d52) SHA1(d7b79a186f4272334c2297666c52f32c05787c29) )
ROM_LOAD( "si003-02.u12", 0x0200000, 0x200000, CRC(92b4d50d) SHA1(9dc2f2961b088824d8370ac83dff796345fe4158) )
ROM_LOAD( "si003-03.u11", 0x0400000, 0x200000, CRC(6ede4012) SHA1(6663990c6ee8e500cb8c51ad2102761ee0b3351d) )
ROM_LOAD( "si003-04.u10", 0x0600000, 0x200000, CRC(4c65d1a1) SHA1(165f16d08813d2c989ddce4bb23b3a3652003bd5) )
ROM_LOAD( "si003-05.u30", 0x0800000, 0x200000, CRC(daf52d56) SHA1(108419ef7d3716a3890b0d8bcbfddc1585daaae8) )
ROM_LOAD( "si003-06.u31", 0x0a00000, 0x200000, CRC(449f9ae5) SHA1(b3e664eb88d14d1e25a0cfc8dcccc8270ca778c9) )
ROM_REGION16_BE( 0x400000, "ensoniq.0", 0 ) /* Samples */
ROM_LOAD16_WORD_SWAP( "si003-07.u23", 0x000000, 0x200000, CRC(81679fd6) SHA1(ca3b07a87781278b5c7c85951728bbe5dfcbe042) )
ROM_LOAD16_WORD_SWAP( "si003-08.u24", 0x200000, 0x200000, CRC(d0122ba2) SHA1(96230fb690cf144cd873f7d51c0304736a698316) )
ROM_REGION16_BE( 0x400000, "ensoniq.1", 0 ) /* Samples */
ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
ROM_REGION16_BE( 0x400000, "ensoniq.2", 0 ) /* Samples */
ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
ROM_REGION16_BE( 0x400000, "ensoniq.3", 0 ) /* Samples */
ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
ROM_END
ROM_START( eaglshotj )
ROM_REGION( 0x100000, "maincpu", 0 ) /* V60 Code */
ROM_LOAD16_BYTE( "sammygolf.u18", 0x000000, 0x080000, CRC(b6d6869c) SHA1(7528751fad783e9b0fd217d2fac2ab408814a583) ) // handwritten labels on prg ROMs, other ROMS had no labels.
ROM_LOAD16_BYTE( "sammygolf.u20", 0x000001, 0x080000, CRC(c8872e48) SHA1(c8e1e712d5fa380f8fc1447502f21d2ae592811a) )
ROM_REGION16_LE( 0xe00000, "gfxdata", ROMREGION_ERASEFF ) /* Sprites - Read by the CPU */
ROM_LOAD( "si003-01.u13", 0x0000000, 0x200000, CRC(d7df0d52) SHA1(d7b79a186f4272334c2297666c52f32c05787c29) )
ROM_LOAD( "si003-02.u12", 0x0200000, 0x200000, CRC(92b4d50d) SHA1(9dc2f2961b088824d8370ac83dff796345fe4158) )
ROM_LOAD( "si003-03.u11", 0x0400000, 0x200000, CRC(6ede4012) SHA1(6663990c6ee8e500cb8c51ad2102761ee0b3351d) )
ROM_LOAD( "si003-04.u10", 0x0600000, 0x200000, CRC(4c65d1a1) SHA1(165f16d08813d2c989ddce4bb23b3a3652003bd5) )
ROM_LOAD( "si003-05.u30", 0x0800000, 0x200000, CRC(daf52d56) SHA1(108419ef7d3716a3890b0d8bcbfddc1585daaae8) )
ROM_LOAD( "si003-06.u31", 0x0a00000, 0x200000, CRC(449f9ae5) SHA1(b3e664eb88d14d1e25a0cfc8dcccc8270ca778c9) )
ROM_REGION16_BE( 0x400000, "ensoniq.0", 0 ) /* Samples */
ROM_LOAD16_WORD_SWAP( "si003-07.u23", 0x000000, 0x200000, CRC(81679fd6) SHA1(ca3b07a87781278b5c7c85951728bbe5dfcbe042) )
ROM_LOAD16_WORD_SWAP( "si003-08.u24", 0x200000, 0x200000, CRC(d0122ba2) SHA1(96230fb690cf144cd873f7d51c0304736a698316) )
ROM_REGION16_BE( 0x400000, "ensoniq.1", 0 ) /* Samples */
ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
ROM_REGION16_BE( 0x400000, "ensoniq.2", 0 ) /* Samples */
ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
ROM_REGION16_BE( 0x400000, "ensoniq.3", 0 ) /* Samples */
ROM_COPY( "ensoniq.0", 0x000000, 0x000000, 0x400000 )
ROM_END
/***************************************************************************
(Mahjong) Hyper Reaction (Japan)
(c)1995 Sammy, SSV system
P1-102A (ROM board)
***************************************************************************/
ROM_START( hypreact )
ROM_REGION( 0x100000, "maincpu", 0 ) /* V60 Code */
ROM_LOAD16_BYTE( "s14-1-02.u2", 0x000000, 0x080000, CRC(d90a383c) SHA1(9945f60ce6e1f50c24c2ae3c2c5d0df9ec3b8926) )
ROM_LOAD16_BYTE( "s14-1-01.u1", 0x000001, 0x080000, CRC(80481401) SHA1(4b1b7050893b6659762297d0f6496c7193ea6c4e) )
ROM_REGION( 0x1800000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "s14-1-07.u7", 0x0000000, 0x200000, CRC(6c429fd0) SHA1(de1bbcd4a20410328d88a3b246afa8e1a6a6f232) )
ROM_LOAD( "s14-1-05.u13", 0x0200000, 0x200000, CRC(2ff72f98) SHA1(92bd5042e19e1dae1252305413684f9cff4bd0ac) )
ROM_LOAD( "s14-1-06.u10", 0x0400000, 0x200000, CRC(f470ec42) SHA1(f31e9c3f3daa212226b9eea14aa1d01367fa348f) )
ROM_LOAD( "s14-1-10.u6", 0x0600000, 0x200000, CRC(fdd706ba) SHA1(893ead529c1ef62002dcff97092ff9fa51ced938) )
ROM_LOAD( "s14-1-08.u12", 0x0800000, 0x200000, CRC(5bb9bb0d) SHA1(1874375cbe79663ff1b5181a1c16fa597a6b55f7) )
ROM_LOAD( "s14-1-09.u9", 0x0a00000, 0x200000, CRC(d1dda65f) SHA1(b4bbd5c9da08b4d4fedb48cfe2dea4f27895c2fd) )
ROM_LOAD( "s14-1-13.u8", 0x0c00000, 0x200000, CRC(971caf11) SHA1(7cfc8bed4431467da53e19056402aa2409be5d88) )
ROM_LOAD( "s14-1-11.u14", 0x0e00000, 0x200000, CRC(6d8e7bae) SHA1(93258663ceb6174917560bb66d72a42ba0f96c0e) )
ROM_LOAD( "s14-1-12.u11", 0x1000000, 0x200000, CRC(233a8e23) SHA1(0c813ec80ac63aa342c8ea57d9e38cada74456d9) )
ROM_FILL( 0x1200000, 0x600000, 0x000000 )
// The chip seems to use REGION1 too, but produces no sound from there.
ROM_REGION16_BE( 0x400000, "ensoniq.2", 0 ) /* Samples */
ROM_LOAD16_WORD_SWAP( "s14-1-04.u4", 0x000000, 0x200000, CRC(a5955336) SHA1(1ac0f5d27224e93acfe449d8ca5c3ab3b7f5dd8c) )
ROM_LOAD16_WORD_SWAP( "s14-1-03.u5", 0x200000, 0x200000, CRC(283a6ec2) SHA1(766c685384ea8d801c53a2ae36b4980318aff06b) )
ROM_END
/***************************************************************************
(Mahjong) Hyper Reaction 2 (Japan)
(c)1997 Sammy,SSV system
P1-112A (ROM board)
***************************************************************************/
ROM_START( hypreac2 )
ROM_REGION( 0x200000, "maincpu", 0 ) /* V60 Code */
ROM_LOAD16_BYTE( "u2.bin", 0x000000, 0x080000, CRC(05c93266) SHA1(0833e80f67ccb4ac17e771fa04dc6f433554a34f) )
ROM_LOAD16_BYTE( "u1.bin", 0x000001, 0x080000, CRC(80cf9e59) SHA1(7025321539891e1a3354ca233255f5395d716933) )
ROM_LOAD16_BYTE( "u47.bin", 0x100000, 0x080000, CRC(a3e9bfee) SHA1(1e897646bafd07ab48eda2883926506c6bedab87) )
ROM_LOAD16_BYTE( "u46.bin", 0x100001, 0x080000, CRC(68c41235) SHA1(6ec32aa6ab6074a8db63a76a3d1a0ec2dc8f8aae) )
ROM_REGION( 0x2800000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "s16-1-16.u6", 0x0000000, 0x400000, CRC(b308ac34) SHA1(409652bc5a537650cab1f3709a2c2be206f72a78) )
ROM_LOAD( "s16-1-15.u9", 0x0400000, 0x400000, CRC(2c8e381e) SHA1(a8681620809d3d9dc62b443232b6e4c4c4209248) )
ROM_LOAD( "s16-1-14.u12", 0x0800000, 0x200000, CRC(afe9d187) SHA1(802df8b1bbb94e4451a6b97c852fa555a6cf5837) )
ROM_LOAD( "s16-1-10.u7", 0x0a00000, 0x400000, CRC(86a10cbd) SHA1(7c15da7c3ffebff058e78439c64f6c0386e4d55b) )
ROM_LOAD( "s16-1-09.u10", 0x0e00000, 0x400000, CRC(6b8e4d92) SHA1(a58c02d3fe595ab654b267cebcb1c6e8ec0b20c4) )
ROM_LOAD( "s16-1-08.u13", 0x1200000, 0x200000, CRC(b355f45d) SHA1(7e0fe81825745555b9627716bfdf1132f20e88f0) )
ROM_LOAD( "s16-1-13.u8", 0x1400000, 0x400000, CRC(89869af2) SHA1(46a8eec18327b515a33c6e01d35fb9b947fcab1f) )
ROM_LOAD( "s16-1-12.u11", 0x1800000, 0x400000, CRC(87d9c748) SHA1(1332db901e50e2fd25d3323920f99e0ef0b0533d) )
ROM_LOAD( "s16-1-11.u14", 0x1c00000, 0x200000, CRC(70b3c0a0) SHA1(009e2f2f292ed6f10a9d54557861294156664e72) )
ROM_FILL( 0x1e00000,0x0a00000, 0x000000)
ROM_REGION16_BE( 0x400000, "ensoniq.0", 0 ) /* Samples */
ROM_LOAD16_WORD_SWAP( "s16-1-06.u41", 0x000000, 0x400000, CRC(626e8a81) SHA1(45ef5b630aed575acd160ede1413e0370f4f9761) )
ROM_REGION16_BE( 0x600000, "ensoniq.1", 0 ) /* Samples */
ROM_LOAD16_WORD_SWAP( "s16-1-07.u42", 0x200000, 0x400000, CRC(42bcb41b) SHA1(060312b19bd52770410cec1f77e5d8d6478d80eb) )
ROM_REGION16_BE( 0x400000, "ensoniq.2", 0 ) /* Samples */
ROM_LOAD16_WORD_SWAP( "s16-1-07.u42", 0x000000, 0x400000, CRC(42bcb41b) SHA1(060312b19bd52770410cec1f77e5d8d6478d80eb) )
ROM_END
/***************************************************************************
Lovely Pop Mahjong Jangjang Shimasho (Japan)
(c)1996 Visco, SSV System
***************************************************************************/
ROM_START( janjans1 )
ROM_REGION( 0x400000, "maincpu", 0 ) /* V60 Code */
ROM_LOAD16_WORD( "jj1-data.bin", 0x000000, 0x200000, CRC(6734537e) SHA1(a40f84479141a6f33ce465e66ba9313b54915002) )
ROM_LOAD16_BYTE( "jj1-prol.bin", 0x200000, 0x080000, CRC(4231d928) SHA1(820d1233cd1a8d0c4ece15b94bd9be976b383fe2) )
ROM_RELOAD( 0x300000, 0x080000)
ROM_LOAD16_BYTE( "jj1-proh.bin", 0x200001, 0x080000, CRC(651383c6) SHA1(8291f86b230eee3a2ebcc926a8370777ee21ec47) )
ROM_RELOAD( 0x300001, 0x080000)
ROM_REGION( 0x2800000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "jj1-a0.bin", 0x0000000, 0x400000, CRC(39bbbc46) SHA1(77c6b5e9d4315671ea79ec838baa7ae043bcd8c4) )
ROM_LOAD( "jj1-a1.bin", 0x0400000, 0x400000, CRC(26020133) SHA1(32c834655d885431d466f25a729aee2d589ade1b) )
ROM_LOAD( "jj1-a2.bin", 0x0800000, 0x200000, CRC(e993251e) SHA1(6cea12bbfc170ad4ecdc09c1728f88ec7534270a) )
ROM_LOAD( "jj1-b0.bin", 0x0a00000, 0x400000, CRC(8ee66b0a) SHA1(f5a641d54a3040b67d9b6e9533c4e1ed3dbc9e12) )
ROM_LOAD( "jj1-b1.bin", 0x0e00000, 0x400000, CRC(048719b3) SHA1(b81198d58afbc7ef2f7dc71cfef11d269bc1608f) )
ROM_LOAD( "jj1-b2.bin", 0x1200000, 0x200000, CRC(6e95af3f) SHA1(c4336a3f169143d5ab828ea527c08dcac27654c3) )
ROM_LOAD( "jj1-c0.bin", 0x1400000, 0x400000, CRC(9df28afc) SHA1(98ee75b028257614c3354d5ec7b3d4b27be75595) )
ROM_LOAD( "jj1-c1.bin", 0x1800000, 0x400000, CRC(eb470ed3) SHA1(ac0601eb57283c3ebb2daf20d07a2c350804b8e6) )
ROM_LOAD( "jj1-c2.bin", 0x1c00000, 0x200000, CRC(aaf72c2d) SHA1(774e713bbc4c2ed7ff7c9fb49a06246d97c33bad) )
ROM_LOAD( "jj1-d0.bin", 0x1e00000, 0x400000, CRC(2b3bd591) SHA1(0619b2779bd4bc19a5259040ccce0fdbefecf1d0) )
ROM_LOAD( "jj1-d1.bin", 0x2200000, 0x400000, CRC(f24c0d36) SHA1(212969b456bfd7cc00081f65c03c1e167186891a) )
ROM_LOAD( "jj1-d2.bin", 0x2600000, 0x200000, CRC(481b3be8) SHA1(cd1bcaca8c236cebba72d315e759b2e9d243aca8) )
ROM_REGION16_BE( 0x400000, "ensoniq.0", ROMREGION_ERASE | 0 ) /* Samples */
ROM_LOAD16_BYTE( "jj1-snd0.bin", 0x000000, 0x200000, CRC(4f7d620a) SHA1(edded130ce7bb0f37e1f59b2771ae6a10a061f9e) )
ROM_REGION16_BE( 0x400000, "ensoniq.1", ROMREGION_ERASE | 0 ) /* Samples */
ROM_LOAD16_BYTE( "jj1-snd1.bin", 0x000000, 0x200000, CRC(9b3a7ae5) SHA1(193743fcce779c4a8a73a44c54b5391d08116331) )
ROM_END
/***************************************************************************
Lovely Pop Mahjong JangJang Shimasho 2 (Japan)
(c)1996-2000 Visco
This game runs on SSV hardware. The game PCB is VISCO-JJ1
The game PCB contains mostly just ROMs and logic, plus....
NEC D71051 (DIP28)
8MHz OSC TI 75175 (DIP8)
2x PALs (near program ROMs)
2x 8-pin connectors for extra controls
***************************************************************************/
ROM_START( janjans2 )
ROM_REGION( 0x400000, "maincpu", 0 ) /* V60 Code */
ROM_LOAD16_WORD( "jan2-dat.u28", 0x000000, 0x200000, CRC(0c9c62bf) SHA1(17c6eea7cec05860c238cc22706fec1a8e3d9263) )
ROM_LOAD16_BYTE( "jan2-prol.u26", 0x200000, 0x080000, CRC(758a7249) SHA1(1126e8527bad000bdfbd59da46d72ed256cb0fa9) )
ROM_RELOAD( 0x300000, 0x080000)
ROM_LOAD16_BYTE( "jan2-proh.u27", 0x200001, 0x080000, CRC(fcd5da62) SHA1(e0243e41e4ec25e82b0316f1189ed069c369e7b1) )
ROM_RELOAD( 0x300001, 0x080000)
ROM_REGION( 0x2000000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "jan2-a0.u13", 0x0000000, 0x400000, CRC(37869bea) SHA1(6259e8584775ca702ef4e9e460c6d874980ffecb) )
ROM_LOAD( "jan2-a1.u14", 0x0400000, 0x400000, CRC(8189e74f) SHA1(ea083a7ef0858dac59e14a77f10a9900b20447f3) )
ROM_LOAD( "jan2-b0.u16", 0x0800000, 0x400000, CRC(19877c5c) SHA1(5faaf3b862ca544589b46cf52d5fdb73287ceb6f) )
ROM_LOAD( "jan2-b1.u17", 0x0c00000, 0x400000, CRC(8d0f7190) SHA1(d06b53d627f7629bda4de7e130eae2be14c18a5a) )
ROM_LOAD( "jan2-c0.u21", 0x1000000, 0x400000, CRC(8bdff3d5) SHA1(be3d2f72abae620f8855d5443dae62880f58f7c6) )
ROM_LOAD( "jan2-c1.u22", 0x1400000, 0x400000, CRC(f7ea5934) SHA1(1767a0206fc35dc2800c9b5b061f704828571452) )
ROM_LOAD( "jan2-d0.u34", 0x1800000, 0x400000, CRC(479fdb54) SHA1(667d89518877a3b501a87c9c765b85b9a0b23517) )
ROM_LOAD( "jan2-d1.u35", 0x1c00000, 0x400000, CRC(c0148895) SHA1(f89482a6ef475ca44d570332d05201b34887afbb) )
ROM_REGION16_BE( 0x400000, "ensoniq.0", ROMREGION_ERASE | 0 ) /* Samples */
ROM_LOAD16_BYTE( "jan2-snd0.u29", 0x000000, 0x200000, CRC(22cc054e) SHA1(4926dd9f8f85880d6c1d14f93d68f330898b473a) )
ROM_REGION16_BE( 0x400000, "ensoniq.1", ROMREGION_ERASE | 0 ) /* Samples */
ROM_LOAD16_BYTE( "jan2-snd1.u33", 0x000000, 0x200000, CRC(cbcac4a6) SHA1(f0c57fa6784e910bdb94f046d09e58e26921773b) )
ROM_END
/***************************************************************************
Joryuu Syougi Kyoushitsu
(c)1997 Visco, System SSV ROM board
CPU : NEC JAPAN D70732GD-25 (C)NEC1991 V810 9651MK007
OSC : 48.0000MHz
ROMs:
JSK-U4 .BIN [ec22fb41] - (27c1001)
JSK-U24.BIN [1fa6e156] |
JSK-U38.BIN [8e5c0de3] |
JSK-U52.BIN [b11aef0c] /
JSK-U71.BIN [f6774fba] - (27c040)
JSK-U72.BIN [db6b2554] /
JSK-S0.U65 [8d1a9aeb] - (16M mask)
JSK-A0.BIN [4bac3196] - (16M mask)
JSK-B0.BIN [40664e5a] |
JSK-C0.BIN [2a230e64] |
JSK-D0.BIN [911e53a6] /
GAL (not dumped):
U53.BIN [--------] - GAL16V8B
U70.BIN [--------] /
dumped by sayu
Note, in the old bad dump u52 had a few different bytes: