#include "driver.h"
#include "vidhrdw/generic.h"
#include "cpu/m68000/m68000.h"
#include "state.h"
#include "segac2.h"
#include "machine/random.h"
#define LOG_PROTECTION 0
#define LOG_PALETTE 0
#define LOG_IOCHIP 0
#define MASTER_CLOCK 53693100
static UINT8 ym3438_int;
static UINT8 scanline_int;
static UINT8 vblank_int;
static UINT8 iochip_reg[0x10];
static const UINT32 *prot_table;
static UINT16 prot_write_buf;
static UINT16 prot_read_buf;
static data16_t * ribbit_palette_select;
static offs_t swizzle_table_index;
static UINT8 sound_banks;
static UINT8 bloxeed_sound;
static data16_t * main_ram;
unsigned int z80_68000_latch = 0;
unsigned int z80_latch_bitcount = 0;
static int z80running;
static data16_t *genesis_68k_ram;
static unsigned char *genesis_z80_ram;
unsigned int bios_port_ctrl;
unsigned int bios_ctrl_inputs;
static void update_interrupts(void)
{
int level = 0;
if (ym3438_int) level = 2;
if (scanline_int) level = 4;
if (vblank_int) level = 6;
if (level)
cpu_set_irq_line(0, level, ASSERT_LINE);
else
cpu_set_irq_line(0, 7, CLEAR_LINE);
}
static void vdp_int4_off(int param)
{
scanline_int = 0;
update_interrupts();
}
static void vdp_reload_counter(int scanline)
{
if ((segac2_vdp_regs[0] & 0x10) && !(iochip_reg[7] & 0x10))
if (scanline != 0 || segac2_vdp_regs[10] == 0)
{
scanline_int = 1;
update_interrupts();
timer_set(cpu_getscanlinetime(scanline + 1), 0, vdp_int4_off);
}
scanline += segac2_vdp_regs[10] + 1;
if (scanline >= 224)
scanline = 0;
timer_set(cpu_getscanlinetime(scanline) + cpu_getscanlineperiod() * (320. / 342.), scanline, vdp_reload_counter);
}
static void vdp_int6_off(int param)
{
vblank_int = 0;
update_interrupts();
}
static INTERRUPT_GEN( vblank_interrupt )
{
vblank_int = 1;
update_interrupts();
timer_set(cpu_getscanlineperiod() * (22. / 342.), 0, vdp_int6_off);
}
static void ym3438_interrupt(int state)
{
ym3438_int = state;
update_interrupts();
}
static MACHINE_INIT( segac2 )
{
timer_set(cpu_getscanlinetime(0) + cpu_getscanlineperiod() * (320. / 342.), 0, vdp_reload_counter);
sound_banks = 0;
if (memory_region(REGION_SOUND1))
sound_banks = memory_region_length(REGION_SOUND1) / 0x20000;
prot_write_buf = 0;
prot_read_buf = 0;
swizzle_table_index = 0;
}
static MACHINE_INIT( genesis )
{
genesis_z80_ram[0] = 0x76;
genesis_z80_ram[0x38] = 0x76;
cpu_setbank(1, &genesis_z80_ram[0]);
cpu_setbank(2, &genesis_z80_ram[0]);
cpu_setbank(3, &genesis_68k_ram[0]);
cpu_set_halt_line(1, ASSERT_LINE);
z80running = 0;
logerror("Machine init\n");
timer_set(cpu_getscanlinetime(0) + cpu_getscanlineperiod() * (320. / 342.), 0, vdp_reload_counter);
}
static READ16_HANDLER( ym3438_r )
{
switch (offset)
{
case 0: return YM2612_status_port_0_A_r(0);
case 1: return YM2612_read_port_0_r(0);
case 2: return YM2612_status_port_0_B_r(0);
}
return 0xff;
}
static READ16_HANDLER( puckpkmn_YM3438_r )
{
return YM2612_status_port_0_A_r(0) << 8;
}
static WRITE16_HANDLER( ym3438_w )
{
if (ACCESSING_LSB)
{
static UINT8 last_port;
if (bloxeed_sound && last_port == 0x27 && (offset & 1))
data &= ~0x08;
switch (offset)
{
case 0: YM2612_control_port_0_A_w(0, data & 0xff); last_port = data; break;
case 1: YM2612_data_port_0_A_w(0, data & 0xff); break;
case 2: YM2612_control_port_0_B_w(0, data & 0xff); last_port = data; break;
case 3: YM2612_data_port_0_B_w(0, data & 0xff); break;
}
}
}
static WRITE16_HANDLER( puckpkmn_YM3438_w )
{
switch (offset)
{
case 0:
if (ACCESSING_MSB) YM2612_control_port_0_A_w (0, (data >> 8) & 0xff);
else YM2612_data_port_0_A_w (0, (data >> 0) & 0xff);
break;
case 1:
if (ACCESSING_MSB) YM2612_control_port_0_B_w (0, (data >> 8) & 0xff);
else YM2612_data_port_0_B_w (0, (data >> 0) & 0xff);
break;
}
}
static WRITE16_HANDLER( upd7759_w )
{
if (!sound_banks)
return;
if (ACCESSING_LSB)
{
UPD7759_reset_w(0, 0);
UPD7759_reset_w(0, 1);
UPD7759_port_w(0, data & 0xff);
UPD7759_start_w(0, 0);
UPD7759_start_w(0, 1);
}
}
static WRITE16_HANDLER( sn76489_w )
{
if (ACCESSING_LSB)
SN76496_0_w(0, data & 0xff);
}
static READ16_HANDLER( palette_r )
{
return paletteram16[(offset & 0x1ff) + segac2_palbank];
}
static WRITE16_HANDLER( palette_w )
{
int r,g,b,newword;
offset = (offset & 0x1ff) + segac2_palbank;
COMBINE_DATA(&paletteram16[offset]);
newword = paletteram16[offset];
r = ((newword << 4) & 0xf0) | ((newword >> 9) & 0x08);
g = ((newword >> 0) & 0xf0) | ((newword >> 10) & 0x08);
b = ((newword >> 4) & 0xf0) | ((newword >> 11) & 0x08);
r |= r >> 5;
g |= g >> 5;
b |= b >> 5;
palette_set_color(offset + 0x0000, r, g, b);
}
static const UINT8 swizzle_table[][32] =
{
{
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f
},
{
0x04,0x05,0x0c,0x0d,0x06,0x07,0x0e,0x0f,0x14,0x15,0x1c,0x1d,0x16,0x17,0x1e,0x1f,
0x00,0x01,0x08,0x09,0x02,0x03,0x0a,0x0b,0x10,0x11,0x18,0x19,0x12,0x13,0x1a,0x1b
},
{
0x14,0x15,0x1c,0x1d,0x00,0x01,0x02,0x03,0x16,0x17,0x1e,0x1f,0x04,0x05,0x06,0x07,
0x10,0x11,0x18,0x19,0x08,0x09,0x0a,0x0b,0x12,0x13,0x1a,0x1b,0x0c,0x0d,0x0e,0x0f
},
{
0x00,0x01,0x04,0x05,0x02,0x03,0x06,0x07,0x08,0x09,0x0c,0x0d,0x0a,0x0b,0x0e,0x0f,
0x14,0x15,0x16,0x17,0x1c,0x1d,0x1e,0x1f,0x10,0x11,0x12,0x13,0x18,0x19,0x1a,0x1b
}
};
static READ16_HANDLER( ribbit_palette_r )
{
int newoffs = (offset & 0x60f) | (swizzle_table[swizzle_table_index][(offset >> 4) & 0x1f] << 4);
return palette_r(newoffs, mem_mask);
}
static WRITE16_HANDLER( ribbit_palette_w )
{
int newoffs = (offset & 0x60f) | (swizzle_table[swizzle_table_index][(offset >> 4) & 0x1f] << 4);
if (LOG_PALETTE)
if (offset % 16 == 0) logerror("%06X:palette_w @ %03X(%03X) = %04X [swizzle_table=%d]\n", activecpu_get_previouspc(), newoffs, offset, data, swizzle_table_index);
palette_w(newoffs, data, mem_mask);
}
static READ16_HANDLER( ribbit_palette_select_r )
{
if (activecpu_get_previouspc() == 0x2b4c)
{
switch (0x2000 + 2 * offset)
{
case 0x2006:
case 0x2116:
case 0x2236:
case 0x2356:
swizzle_table_index = (offset >> 7) & 3;
break;
case 0x2476:
case 0x2576:
case 0x2676:
swizzle_table_index = ((offset >> 7) & 3) + 1;
break;
}
}
return ribbit_palette_select[offset];
}
static READ16_HANDLER( iochip_r )
{
switch (offset)
{
case 0x00: return 0xff00 | readinputport(1);
case 0x01: return 0xff00 | readinputport(2);
case 0x02: if (sound_banks)
return 0xff00 | (UPD7759_0_busy_r(0) << 6) | 0xbf;
else
return 0xffff;
case 0x04: return 0xff00 | readinputport(0);
case 0x05: return 0xff00 | readinputport(3);
case 0x06: return 0xff00 | readinputport(4);
case 0x08: return 0xff00 | 'S';
case 0x09: return 0xff00 | 'E';
case 0x0a: return 0xff00 | 'G';
case 0x0b: return 0xff00 | 'A';
default: return 0xff00 | iochip_reg[offset];
}
return 0xffff;
}
static WRITE16_HANDLER( iochip_w )
{
int newbank;
if (!ACCESSING_LSB)
return;
iochip_reg[offset] = data;
switch (offset)
{
case 0x03:
break;
case 0x07:
newbank = (data & 3) * 0x200;
if (newbank != segac2_palbank)
{
force_partial_update(cpu_getscanline() + 1);
segac2_palbank = newbank;
}
if (sound_banks > 1)
{
newbank = (data >> 2) & (sound_banks - 1);
UPD7759_set_bank_base(0, newbank * 0x20000);
}
break;
case 0x0e:
break;
case 0x0f:
if (data != 0x88)
if (LOG_IOCHIP) logerror("%06x:I/O write @ %02x = %02x\n", activecpu_get_previouspc(), offset, data & 0xff);
break;
default:
if (LOG_IOCHIP) logerror("%06x:I/O write @ %02x = %02x\n", activecpu_get_previouspc(), offset, data & 0xff);
break;
}
}
static WRITE16_HANDLER( control_w )
{
if (!ACCESSING_LSB)
return;
data &= 0xff;
segac2_enable_display(~data & 1);
if (LOG_IOCHIP)
if (data != 6 && data != 7) logerror("%06x:control_w suspicious value = %02X (%d)\n", activecpu_get_previouspc(), data, cpu_getscanline());
}
static READ16_HANDLER( prot_r )
{
if (LOG_PROTECTION) logerror("%06X:protection r=%02X\n", activecpu_get_previouspc(), prot_table ? prot_read_buf : 0xff);
return prot_read_buf | 0xf0;
}
static WRITE16_HANDLER( prot_w )
{
int new_sp_palbase = ((data >> 2) & 3) * 0x40 + 0x100;
int new_bg_palbase = (data & 3) * 0x40;
int table_index;
if (!ACCESSING_LSB)
return;
prot_write_buf = (prot_write_buf << 4) | (data & 0x0f);
table_index = (prot_write_buf & 0xf0) | prot_read_buf;
if (prot_table)
prot_read_buf = (prot_table[table_index >> 3] << (4 * (table_index & 7))) >> 28;
if (LOG_PROTECTION) logerror("%06X:protection w=%02X, new result=%02X\n", activecpu_get_previouspc(), data & 0x0f, prot_read_buf);
if (new_sp_palbase != segac2_sp_palbase || new_bg_palbase != segac2_bg_palbase)
{
force_partial_update(cpu_getscanline() + 1);
segac2_sp_palbase = new_sp_palbase;
segac2_bg_palbase = new_bg_palbase;
if (LOG_PALETTE) logerror("Set palbank: %d/%d (scan=%d)\n", segac2_bg_palbase, segac2_sp_palbase, cpu_getscanline());
}
}
static READ16_HANDLER( puyopuy2_prot_r )
{
int table_index = (prot_write_buf & 0xf0) | ((prot_write_buf >> 8) & 0x0f);
if (prot_table)
prot_read_buf = (prot_table[table_index >> 3] << (4 * (table_index & 7))) >> 28;
if (LOG_PROTECTION) logerror("%06X:protection r=%02X\n", activecpu_get_previouspc(), prot_table ? prot_read_buf : 0xff);
return prot_read_buf | 0xf0;
}
static READ16_HANDLER( ribbit_prot_hack_r )
{
data16_t result = main_ram[0xc166/2];
if (activecpu_get_previouspc() >= 0xff0000)
result = (result & 0xff00) | (result >> 8);
return result;
}
static WRITE16_HANDLER( counter_timer_w )
{
if (ACCESSING_LSB)
{
switch (data & 0x1e)
{
case 0x00:
case 0x02:
case 0x04:
case 0x06:
case 0x08:
case 0x0a:
case 0x0c:
case 0x0e:
break;
case 0x10:
coin_counter_w(0,1);
coin_counter_w(0,0);
break;
case 0x12:
break;
case 0x14:
case 0x16:
case 0x18:
case 0x1a:
case 0x1c:
break;
case 0x1e:
break;
}
}
}
static MEMORY_READ16_START( readmem )
{ 0x000000, 0x1fffff, MRA16_ROM },
{ 0x800000, 0x800001, prot_r },
{ 0x840000, 0x84001f, iochip_r },
{ 0x840100, 0x840107, ym3438_r },
{ 0x8c0000, 0x8c0fff, palette_r },
{ 0xc00000, 0xc0001f, segac2_vdp_r },
{ 0xff0000, 0xffffff, MRA16_RAM },
MEMORY_END
static MEMORY_WRITE16_START( writemem )
{ 0x000000, 0x1fffff, MWA16_ROM },
{ 0x800000, 0x800001, prot_w },
{ 0x800200, 0x800201, control_w },
{ 0x840000, 0x84001f, iochip_w },
{ 0x840100, 0x840107, ym3438_w },
{ 0x880000, 0x880001, upd7759_w },
{ 0x880134, 0x880135, counter_timer_w },
{ 0x880334, 0x880335, counter_timer_w },
{ 0x8c0000, 0x8c0fff, palette_w, &paletteram16 },
{ 0xc00000, 0xc0000f, segac2_vdp_w },
{ 0xc00010, 0xc00017, sn76489_w },
{ 0xff0000, 0xffffff, MWA16_RAM, &main_ram },
MEMORY_END
static MEMORY_READ16_START( puckpkmn_readmem )
{ 0x000000, 0x1fffff, MRA16_ROM },
{ 0x700010, 0x700011, input_port_0_word_r },
{ 0x700012, 0x700013, input_port_1_word_r },
{ 0x700014, 0x700015, input_port_2_word_r },
{ 0x700016, 0x700017, input_port_3_word_r },
{ 0x700018, 0x700019, input_port_4_word_r },
{ 0x700022, 0x700023, OKIM6295_status_0_lsb_r },
{ 0xa04000, 0xa04001, puckpkmn_YM3438_r },
{ 0xc00000, 0xc0001f, segac2_vdp_r },
{ 0xe00000, 0xe1ffff, MRA16_BANK1 },
{ 0xfe0000, 0xfeffff, MRA16_BANK2 },
{ 0xff0000, 0xffffff, MRA16_RAM },
{ 0xa10002, 0xa10005, MRA16_NOP },
{ 0xa11100, 0xa11101, MRA16_NOP },
MEMORY_END
static MEMORY_WRITE16_START( puckpkmn_writemem )
{ 0x000000, 0x1fffff, MWA16_ROM },
{ 0x700022, 0x700023, OKIM6295_data_0_lsb_w },
{ 0xa04000, 0xa04003, puckpkmn_YM3438_w },
{ 0xc00000, 0xc0000f, segac2_vdp_w },
{ 0xc00010, 0xc00017, sn76489_w },
{ 0xff0000, 0xffffff, MWA16_RAM, &main_ram },
{ 0xa00000, 0xa00551, MWA16_RAM },
{ 0xa10002, 0xa10005, MWA16_NOP },
{ 0xa11100, 0xa11101, MWA16_NOP },
{ 0xa11200, 0xa11201, MWA16_NOP },
MEMORY_END
READ16_HANDLER(genesis_ctrl_r)
{
switch (offset)
{
case 0:
return 0xffff;
break;
case 0x80:
return (z80running ? 0x0100 : 0x0);
break;
case 0x100:
return 0xffff;
break;
}
return 0x00;
}
WRITE16_HANDLER(genesis_ctrl_w)
{
data &= ~mem_mask;
switch (offset)
{
case 0:
return;
break;
case 0x80:
if (data == 0x100)
{
z80running = 0;
cpu_set_halt_line(1, ASSERT_LINE);
}
else
{
z80running = 1;
cpu_setbank(1, &genesis_z80_ram[0]);
cpu_set_halt_line(1, CLEAR_LINE);
}
return;
break;
case 0x100:
if (data == 0x00)
{
cpu_set_halt_line(1, ASSERT_LINE);
cpu_set_reset_line(1, PULSE_LINE);
cpu_set_halt_line(1, ASSERT_LINE);
z80running = 0;
return;
}
else
{
}
return;
break;
}
}
static READ16_HANDLER ( genesis_68k_to_z80_r )
{
offset *= 2;
offset &= 0x7fff;
if ((offset >= 0x0000) && (offset <= 0x3fff))
{
offset &=0x1fff;
return (genesis_z80_ram[offset] << 8) + genesis_z80_ram[offset+1];
}
if ((offset >= 0x4000) && (offset <= 0x5fff))
{
switch (offset & 3)
{
case 0:
if (ACCESSING_MSB) return YM2612_status_port_0_A_r(0) << 8;
else return YM2612_read_port_0_r(0);
break;
case 2:
if (ACCESSING_MSB) return YM2612_status_port_0_B_r(0) << 8;
else return 0;
break;
}
}
if ((offset >= 0x6000) && (offset <= 0x60ff))
{
}
if ((offset >= 0x6100) && (offset <= 0x7eff))
{
}
if ((offset >= 0x7f00) && (offset <= 0x7fff))
{
}
return 0x0000;
}
static WRITE16_HANDLER ( genesis_68k_to_z80_w )
{
offset *= 2;
offset &= 0x7fff;
if ((offset >= 0x0000) && (offset <= 0x3fff))
{
offset &=0x1fff;
if (ACCESSING_LSB) genesis_z80_ram[offset+1] = data & 0xff;
if (ACCESSING_MSB) genesis_z80_ram[offset] = (data >> 8) & 0xff;
}
if ((offset >= 0x4000) && (offset <= 0x5fff))
{
switch (offset & 3)
{
case 0:
if (ACCESSING_MSB) YM2612_control_port_0_A_w (0, (data >> 8) & 0xff);
else YM2612_data_port_0_A_w (0, (data >> 0) & 0xff);
break;
case 2:
if (ACCESSING_MSB) YM2612_control_port_0_B_w (0, (data >> 8) & 0xff);
else YM2612_data_port_0_B_w (0, (data >> 0) & 0xff);
break;
}
}
if ((offset >= 0x6000) && (offset <= 0x60ff))
{
}
if ((offset >= 0x6100) && (offset <= 0x7eff))
{
}
if ((offset >= 0x7f00) && (offset <= 0x7fff))
{
offset &= 0x1f;
if ( (offset >= 0x10) && (offset <=0x17) )
{
if (ACCESSING_LSB) SN76496_0_w(0, data & 0xff);
if (ACCESSING_MSB) SN76496_0_w(0, (data >>8) & 0xff);
}
}
}
data16_t *genesis_io_ram;
READ16_HANDLER ( genesis_io_r )
{
UINT8 return_value = 0;
switch (offset)
{
case 0:
return_value = 0x80;
break;
case 1:
if (genesis_io_ram[offset] & 0x40)
{
int iport = readinputport(9);
return_value = iport & 0x3f;
}
else
{
int iport1 = readinputport(12);
int iport2 = readinputport(7) >> 1;
return_value = (iport1 & 0x10) + (iport2 & 0x20);
}
return_value = (genesis_io_ram[offset] & 0x80) | return_value;
logerror ("reading joypad 1 , type %02x %02x\n",genesis_io_ram[offset] & 0x80, return_value &0x7f);
if(bios_ctrl_inputs & 0x04) return_value = 0xff;
break;
case 2:
if (genesis_io_ram[offset] & 0x40)
{
int iport1 = (readinputport(9) & 0xc0) >> 6;
int iport2 = (readinputport(8) & 0x0f) << 2;
return_value = (iport1 + iport2) & 0x3f;
}
else
{
int iport1 = readinputport(12) << 2;
int iport2 = readinputport(7) >> 2;
return_value = (iport1 & 0x10) + (iport2 & 0x20);
}
return_value = (genesis_io_ram[offset] & 0x80) | return_value;
logerror ("reading joypad 2 , type %02x %02x\n",genesis_io_ram[offset] & 0x80, return_value &0x7f);
if(bios_ctrl_inputs & 0x04) return_value = 0xff;
break;
default:
return_value = 0x00;
}
return return_value | return_value << 8;
}
WRITE16_HANDLER ( genesis_io_w )
{
logerror ("write io offset :%02x data %04x\n",offset,data);
switch (offset)
{
case 0x00:
break;
case 0x01:
genesis_io_ram[offset] = data;
break;
case 0x02:
genesis_io_ram[offset] = data;
break;
case 0x03:
genesis_io_ram[offset] = data;
break;
case 0x04:
genesis_io_ram[offset] = data;
break;
case 0x05:
genesis_io_ram[offset] = data;
break;
case 0x06:
genesis_io_ram[offset] = data;
break;
case 0x07:
genesis_io_ram[offset] = data;
break;
}
}
static MEMORY_READ16_START( genesis_readmem )
{ 0x000000, 0x3fffff, MRA16_ROM },
{ 0xa10000, 0xa1001f, genesis_io_r },
{ 0xa00000, 0xa0ffff, genesis_68k_to_z80_r },
{ 0xc00000, 0xc0001f, segac2_vdp_r },
{ 0xfe0000, 0xfeffff, MRA16_BANK3 },
{ 0xff0000, 0xffffff, MRA16_RAM },
MEMORY_END
static MEMORY_WRITE16_START( genesis_writemem )
{ 0x000000, 0x3fffff, MWA16_ROM },
{ 0xa10000, 0xa1001f, genesis_io_w, &genesis_io_ram },
{ 0xa11000, 0xa11203, genesis_ctrl_w },
{ 0xa00000, 0xa0ffff, genesis_68k_to_z80_w },
{ 0xc00000, 0xc0000f, segac2_vdp_w },
{ 0xc00010, 0xc00017, sn76489_w },
{ 0xfe0000, 0xfeffff, MWA16_BANK3 },
{ 0xff0000, 0xffffff, MWA16_RAM, &genesis_68k_ram },
MEMORY_END
#ifdef LSB_FIRST
#define BYTE_XOR(a) ((a) ^ 1)
#else
#define BYTE_XOR(a) (a)
#endif
static WRITE_HANDLER ( genesis_bank_select_w )
{
if (offset !=0 ) return;
if (z80_latch_bitcount == 0) z80_68000_latch = 0;
z80_68000_latch = z80_68000_latch | ((( ((unsigned char)data) & 0x01) << (15+z80_latch_bitcount)));
logerror("value %x written to latch\n", data);
z80_latch_bitcount++;
if (z80_latch_bitcount == 9)
{
z80_latch_bitcount = 0;
logerror("latch set, value %x\n", z80_68000_latch);
}
}
static READ_HANDLER ( genesis_z80_r )
{
offset += 0x4000;
if ((offset >= 0x4000) && (offset <= 0x5fff))
{
switch (offset & 3)
{
case 0: return YM2612_status_port_0_A_r(0);
case 1: return YM2612_read_port_0_r(0);
case 2: return YM2612_status_port_0_B_r(0);
case 3: return 0;
}
}
if ((offset >= 0x6000) && (offset <= 0x60ff))
{
}
if ((offset >= 0x6100) && (offset <= 0x7eff))
{
}
if ((offset >= 0x7f00) && (offset <= 0x7fff))
{
}
return 0x00;
}
static WRITE_HANDLER ( genesis_z80_w )
{
offset += 0x4000;
if ((offset >= 0x4000) && (offset <= 0x5fff))
{
switch (offset & 3)
{
case 0: YM2612_control_port_0_A_w (0, data);
break;
case 1: YM2612_data_port_0_A_w (0, data);
break;
case 2: YM2612_control_port_0_B_w (0, data);
break;
case 3: YM2612_data_port_0_B_w (0, data);
break;
}
}
if ((offset >= 0x6000) && (offset <= 0x60ff))
{
genesis_bank_select_w(offset & 0xff, data);
}
if ((offset >= 0x6100) && (offset <= 0x7eff))
{
}
if ((offset >= 0x7f00) && (offset <= 0x7fff))
{
}
}
static READ_HANDLER ( genesis_z80_bank_r )
{
int address = (z80_68000_latch) + (offset & 0x7fff);
if (!z80running) logerror("undead Z80->68000 read!\n");
if (z80_latch_bitcount != 0) logerror("reading whilst latch being set!\n");
logerror("z80 read from address %x\n", address);
if (address < 0x400000) return memory_region(REGION_CPU1)[BYTE_XOR(address)];
return -1;
}
static WRITE16_HANDLER ( genesis_z80_ram_w )
{
if (z80running) logerror("Z80 written whilst running!\n");
logerror("68000->z80 sound write, %x to %x\n", data, offset);
if (ACCESSING_LSB) genesis_z80_ram[(offset<<1)+1] = data & 0xff;
if (ACCESSING_MSB) genesis_z80_ram[offset<<1] = (data >> 8) & 0xff;
}
static MEMORY_READ_START(genesis_z80_readmem)
{ 0x0000, 0x1fff, MRA_BANK1 },
{ 0x2000, 0x3fff, MRA_BANK2 },
{ 0x4000, 0x7fff, genesis_z80_r },
{ 0x8000, 0xffff, genesis_z80_bank_r },
MEMORY_END
static MEMORY_WRITE_START(genesis_z80_writemem)
{ 0x0000, 0x1fff, MWA_BANK1, &genesis_z80_ram },
{ 0x2000, 0x3fff, MWA_BANK2 },
{ 0x4000, 0x7fff, genesis_z80_w },
MEMORY_END
static READ_HANDLER( instr_r )
{
unsigned char* instr = memory_region(REGION_USER1);
unsigned char* ram = memory_region(REGION_CPU3);
if(ram[0x6404] == 0)
return instr[offset/2];
else
return 0xFF;
}
unsigned char bios_ctrl[6];
static READ_HANDLER( bios_ctrl_r )
{
if(offset == 0)
return 0;
if(offset == 2)
return bios_ctrl[offset] & 0xfe;
return bios_ctrl[offset];
}
static WRITE_HANDLER( bios_ctrl_w )
{
if(offset == 1)
{
bios_ctrl_inputs = data & 0x04;
}
bios_ctrl[offset] = data;
}
static MEMORY_READ_START(megatech_bios_readmem)
{ 0x0000, 0x2fff, MRA_ROM },
{ 0x3000, 0x3fff, MRA_RAM },
{ 0x4000, 0x4fff, MRA_RAM },
{ 0x5000, 0x5fff, MRA_RAM },
{ 0x6000, 0x63ff, MRA_RAM },
{ 0x6400, 0x6400, input_port_10_r },
{ 0x6401, 0x6401, input_port_11_r },
{ 0x6800, 0x6800, input_port_6_r },
{ 0x6801, 0x6801, input_port_7_r },
{ 0x6802, 0x6807, bios_ctrl_r },
{ 0x6808, 0x6fff, MRA_RAM },
{ 0x7000, 0x77ff, MRA_RAM },
{ 0x8000, 0xffff, instr_r },
MEMORY_END
static MEMORY_WRITE_START(megatech_bios_writemem)
{ 0x0000, 0x2fff, MWA_ROM },
{ 0x3000, 0x3fff, MWA_RAM },
{ 0x4000, 0x4fff, MWA_RAM },
{ 0x5000, 0x5fff, MWA_RAM },
{ 0x6000, 0x63ff, MWA_RAM },
{ 0x6802, 0x6807, bios_ctrl_w },
{ 0x6808, 0x6fff, MWA_RAM },
{ 0x7000, 0x77ff, MWA_RAM },
MEMORY_END
unsigned char segae_vdp_ctrl_r ( UINT8 chip );
unsigned char segae_vdp_data_r ( UINT8 chip );
void segae_vdp_ctrl_w ( UINT8 chip, UINT8 data );
void segae_vdp_data_w ( UINT8 chip, UINT8 data );
static READ_HANDLER (megatech_bios_port_be_bf_r)
{
UINT8 temp = 0;
switch (offset)
{
case 0:
temp = segae_vdp_data_r(0); break ;
case 1:
temp = segae_vdp_ctrl_r(0); break ;
}
return temp;
}
static WRITE_HANDLER (megatech_bios_port_be_bf_w)
{
switch (offset)
{
case 0:
segae_vdp_data_w(0, data); break;
case 1:
segae_vdp_ctrl_w(0, data); break;
}
}
static WRITE_HANDLER (megatech_bios_port_ctrl_w)
{
bios_port_ctrl = data;
}
static READ_HANDLER (megatech_bios_port_dc_r)
{
if(bios_port_ctrl == 0x55)
return readinputport(12);
else
return readinputport(9);
}
static READ_HANDLER (megatech_bios_port_dd_r)
{
if(bios_port_ctrl == 0x55)
return readinputport(12);
else
return readinputport(8);
}
static WRITE_HANDLER (megatech_bios_port_7f_w)
{
}
static PORT_READ_START( megatech_bios_readport )
{ 0xdc, 0xdc, megatech_bios_port_dc_r },
{ 0xdd, 0xdd, megatech_bios_port_dd_r },
{ 0xbe, 0xbf, megatech_bios_port_be_bf_r },
PORT_END
static PORT_WRITE_START( megatech_bios_writeport )
{ 0x3f, 0x3f, megatech_bios_port_ctrl_w },
{ 0x7f, 0x7f, megatech_bios_port_7f_w },
{ 0xbe, 0xbf, megatech_bios_port_be_bf_w },
PORT_END
static UINT8 hintcount;
extern UINT8 vintpending;
extern UINT8 hintpending;
extern UINT8 *segae_vdp_regs[];
INTERRUPT_GEN (megatech_irq)
{
int sline;
sline = 261 - cpu_getiloops();
if (sline ==0) {
hintcount = segae_vdp_regs[0][10];
}
if (sline <= 192) {
if (sline == 192)
vintpending = 1;
if (hintcount == 0) {
hintcount = segae_vdp_regs[0][10];
hintpending = 1;
if ((segae_vdp_regs[0][0] & 0x10)) {
cpu_set_irq_line(2, 0, HOLD_LINE);
return;
}
} else {
hintcount--;
}
}
if (sline > 192) {
hintcount = segae_vdp_regs[0][10];
if ( (sline<0xe0) && (vintpending) ) {
cpu_set_irq_line(2, 0, HOLD_LINE);
}
}
}
#define COINS \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) \
PORT_BITX(0x04, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE ) \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
#define JOYSTICK_1 \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
#define JOYSTICK_2 \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 ) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 ) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
#define COIN_A \
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) \
PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x05, "2 Coins/1 Credit 5/3 6/4" ) \
PORT_DIPSETTING( 0x04, "2 Coins/1 Credit, 4/3" ) \
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x03, "1 Coin/1 Credit, 5/6" ) \
PORT_DIPSETTING( 0x02, "1 Coin/1 Credit, 4/5" ) \
PORT_DIPSETTING( 0x01, "1 Coin/1 Credit, 2/3" ) \
PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x00, "1 Coin/1 Credit (Freeplay if Coin B also)" )
#define COIN_B \
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) \
PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x50, "2 Coins/1 Credit 5/3 6/4" ) \
PORT_DIPSETTING( 0x40, "2 Coins/1 Credit, 4/3" ) \
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x30, "1 Coin/1 Credit, 5/6" ) \
PORT_DIPSETTING( 0x20, "1 Coin/1 Credit, 4/5" ) \
PORT_DIPSETTING( 0x10, "1 Coin/1 Credit, 2/3" ) \
PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x00, "1 Coin/1 Credit (Freeplay if Coin A also)" )
INPUT_PORTS_START( columns )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x00, "Easy" )
PORT_DIPSETTING( 0x10, "Medium" )
PORT_DIPSETTING( 0x30, "Hard" )
PORT_DIPSETTING( 0x20, "Hardest" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( columns2 )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x01, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "VS. Mode Credits/Match" )
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "4" )
PORT_DIPNAME( 0x30, 0x30, "Flash Mode Difficulty" )
PORT_DIPSETTING( 0x20, "Easy" )
PORT_DIPSETTING( 0x30, "Medium" )
PORT_DIPSETTING( 0x10, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( borench )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, "Credits to Start" )
PORT_DIPSETTING( 0x01, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "Lives 1P Mode" )
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x0c, "2" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPNAME( 0x30, 0x30, "Lives 2P Mode" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x30, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x10, "5" )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x80, "Easy" )
PORT_DIPSETTING( 0xc0, "Medium" )
PORT_DIPSETTING( 0x40, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
INPUT_PORTS_END
INPUT_PORTS_START( tfrceac )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, "Credits to Start" )
PORT_DIPSETTING( 0x01, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x08, "4" )
PORT_DIPSETTING( 0x04, "5" )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
PORT_DIPSETTING( 0x10, "10k, 70k, 150k" )
PORT_DIPSETTING( 0x30, "20k, 100k, 200k" )
PORT_DIPSETTING( 0x20, "40k, 150k, 300k" )
PORT_DIPSETTING( 0x00, "None" )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x80, "Easy" )
PORT_DIPSETTING( 0xc0, "Medium" )
PORT_DIPSETTING( 0x40, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
INPUT_PORTS_END
INPUT_PORTS_START( ribbit )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, "Credits to Start" )
PORT_DIPSETTING( 0x01, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x0c, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x20, "Easy" )
PORT_DIPSETTING( 0x30, "Normal" )
PORT_DIPSETTING( 0x10, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( puyopuyo )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "VS. Mode Credits/Match" )
PORT_DIPSETTING( 0x04, "1" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x18, 0x18, "1P Mode Difficulty" )
PORT_DIPSETTING( 0x10, "Easy" )
PORT_DIPSETTING( 0x18, "Medium" )
PORT_DIPSETTING( 0x08, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Moving Seat" )
PORT_DIPSETTING( 0x80, "No Use" )
PORT_DIPSETTING( 0x00, "In Use" )
INPUT_PORTS_END
INPUT_PORTS_START( stkclmns )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x02, "Easy" )
PORT_DIPSETTING( 0x03, "Medium" )
PORT_DIPSETTING( 0x01, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Match Mode Price" )
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( potopoto )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, "Credits to Start" )
PORT_DIPSETTING( 0x01, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Coin Chute Type" )
PORT_DIPSETTING( 0x04, "Common" )
PORT_DIPSETTING( 0x00, "Individual" )
PORT_DIPNAME( 0x08, 0x08, "Credits to Continue" )
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0x10, 0x10, "Buy-In" )
PORT_DIPSETTING( 0x10, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x40, "Easy" )
PORT_DIPSETTING( 0x60, "Medium" )
PORT_DIPSETTING( 0x20, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x80, 0x80, "Moving Seat" )
PORT_DIPSETTING( 0x80, "No Use" )
PORT_DIPSETTING( 0x00, "In Use" )
INPUT_PORTS_END
INPUT_PORTS_START( zunkyou )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, "Game Difficulty 1" )
PORT_DIPSETTING( 0x01, "Medium" )
PORT_DIPSETTING( 0x00, "Hard" )
PORT_DIPNAME( 0x02, 0x02, "Game Difficulty 2" )
PORT_DIPSETTING( 0x02, "Medium" )
PORT_DIPSETTING( 0x00, "Hard" )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x04, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( ichidant )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x06, 0x06, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x04, "Easy" )
PORT_DIPSETTING( 0x06, "Medium" )
PORT_DIPSETTING( 0x02, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( bloxeedc )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, "VS Mode Price" )
PORT_DIPSETTING( 0x00, "Same as Ordinary" )
PORT_DIPSETTING( 0x01, "Double as Ordinary" )
PORT_DIPNAME( 0x02, 0x02, "Credits to Start" )
PORT_DIPSETTING( 0x02, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( puyopuy2 )
PORT_START
COINS
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_1
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
JOYSTICK_2
PORT_START
COIN_A
COIN_B
PORT_START
PORT_DIPNAME( 0x01, 0x01, "Rannyu Off Button" )
PORT_DIPSETTING( 0x01, "Use" )
PORT_DIPSETTING( 0x00, "No Use" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Turn Direction" )
PORT_DIPSETTING( 0x04, "1:Right 2:Left" )
PORT_DIPSETTING( 0x00, "1:Left 2:Right")
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x10, "Easy" )
PORT_DIPSETTING( 0x18, "Medium" )
PORT_DIPSETTING( 0x08, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x60, 0x60, "VS Mode Match/1 Play" )
PORT_DIPSETTING( 0x60, "1" )
PORT_DIPSETTING( 0x40, "2" )
PORT_DIPSETTING( 0x20, "3" )
PORT_DIPSETTING( 0x00, "4" )
PORT_DIPNAME( 0x80, 0x80, "Battle Start credit" )
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x80, "2" )
INPUT_PORTS_END
INPUT_PORTS_START( puckpkmn )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT_IMPULSE( 0x02, IP_ACTIVE_LOW, IPT_COIN1, 10 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
PORT_START
PORT_START
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x03, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C ) )
PORT_DIPNAME( 0x38, 0x28, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x38, "1" )
PORT_DIPSETTING( 0x30, "2" )
PORT_DIPSETTING( 0x28, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x18, "5" )
PORT_DIPSETTING( 0x10, "6" )
PORT_DIPSETTING( 0x08, "7" )
PORT_DIPSETTING( 0x00, "8" )
PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0xc0, "Easy" )
PORT_DIPSETTING( 0x80, "Normal" )
PORT_DIPSETTING( 0x40, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_START
PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( pclub )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BITX(0x04, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT_NAME( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1, "Ok" )
PORT_BIT_NAME( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2, "Cancel" )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY )
PORT_START
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, DEF_STR( 7C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 6C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x07, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 4-4" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 4-5" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 4-6" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-7" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 4-8" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START
PORT_DIPNAME( 0x01, 0x01, "Unknown 5-1" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 5-2" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 5-3" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 5-4" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 5-5" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ))
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 5-7" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 5-8" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
INPUT_PORTS_START( genesis )
PORT_START
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
INPUT_PORTS_START( megatech )
PORT_START
PORT_START
PORT_START
PORT_START
PORT_START
PORT_START
PORT_START
PORT_BITX( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2, "Select", KEYCODE_0, JOYCODE_NONE )
PORT_BITX( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN , "0x6800 bit 1", KEYCODE_Y, JOYCODE_NONE )
PORT_BITX( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN, "0x6800 bit 2", KEYCODE_U, JOYCODE_NONE )
PORT_BITX( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN, "0x6800 bit 3", KEYCODE_I, JOYCODE_NONE )
PORT_BITX( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL, "Door 1", KEYCODE_K, JOYCODE_NONE )
PORT_BITX( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL, "Door 2", KEYCODE_L, JOYCODE_NONE )
PORT_BITX( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN, "0x6800 bit 6", KEYCODE_O, JOYCODE_NONE )
PORT_BITX( 0x80, IP_ACTIVE_LOW, IPT_SERVICE, "Test mode", KEYCODE_F2, JOYCODE_NONE )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
PORT_BITX( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1, "Service coin", KEYCODE_9, JOYCODE_NONE )
PORT_BITX( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3,"Enter", KEYCODE_MINUS, JOYCODE_NONE )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2)
PORT_BITX( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN , "port DD bit 4", KEYCODE_NONE, JOYCODE_NONE )
PORT_BITX( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN , "port DD bit 5", KEYCODE_NONE, JOYCODE_NONE )
PORT_BITX( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN , "port DD bit 6", KEYCODE_NONE, JOYCODE_NONE )
PORT_BITX( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN , "port DD bit 7", KEYCODE_NONE, JOYCODE_NONE )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
PORT_START
PORT_DIPNAME( 0x02, 0x02, "Coin slot 3" )
PORT_DIPSETTING ( 0x00, "Inhibit" )
PORT_DIPSETTING ( 0x02, "Accept" )
PORT_DIPNAME( 0x01, 0x01, "Coin slot 4" )
PORT_DIPSETTING ( 0x00, "Inhibit" )
PORT_DIPSETTING ( 0x01, "Accept" )
PORT_DIPNAME( 0x1c, 0x1c, "Coin slot 3/4 value" )
PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x10, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 1C_8C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 credits" )
PORT_DIPNAME( 0xe0, 0x60, "Coin slot 2 value" )
PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x60, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x00, "Inhibit" )
PORT_START
PORT_DIPNAME( 0x0f, 0x01, "Coin Slot 1 value" )
PORT_DIPSETTING( 0x00, "Inhibit" )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x07, DEF_STR( 1C_7C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_8C ) )
PORT_DIPSETTING( 0x09, DEF_STR( 1C_9C ) )
PORT_DIPSETTING( 0x0a, "1 coin/10 credits" )
PORT_DIPSETTING( 0x0b, "1 coin/11 credits" )
PORT_DIPSETTING( 0x0c, "1 coin/12 credits" )
PORT_DIPSETTING( 0x0d, "1 coin/13 credits" )
PORT_DIPSETTING( 0x0e, "1 coin/14 credits" )
PORT_DIPSETTING( 0x0f, "1 coin/15 credits" )
PORT_DIPNAME( 0xf0, 0xa0, "Time per credit" )
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x10, "7:30" )
PORT_DIPSETTING( 0x20, "7:00" )
PORT_DIPSETTING( 0x30, "6:30" )
PORT_DIPSETTING( 0x40, "6:00" )
PORT_DIPSETTING( 0x50, "5:30" )
PORT_DIPSETTING( 0x60, "5:00" )
PORT_DIPSETTING( 0x70, "4:30" )
PORT_DIPSETTING( 0x80, "4:00" )
PORT_DIPSETTING( 0x90, "3:30" )
PORT_DIPSETTING( 0xa0, "3:00" )
PORT_DIPSETTING( 0xb0, "2:30" )
PORT_DIPSETTING( 0xc0, "2:00" )
PORT_DIPSETTING( 0xd0, "1:30" )
PORT_DIPSETTING( 0xe0, "1:00" )
PORT_DIPSETTING( 0xf0, "0:30" )
PORT_START
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1)
INPUT_PORTS_END
static struct UPD7759_interface upd7759_intf =
{
1,
{ 50 },
{ REGION_SOUND1 },
UPD7759_STANDALONE_MODE
};
static struct YM2612interface ym3438_intf =
{
1,
MASTER_CLOCK/7,
{ YM3012_VOL(50,MIXER_PAN_CENTER,50,MIXER_PAN_CENTER) },
{ 0 },
{ 0 },
{ 0 },
{ 0 },
{ ym3438_interrupt }
};
static struct YM2612interface gen_ym3438_intf =
{
1,
MASTER_CLOCK/7,
{ YM3012_VOL(50,MIXER_PAN_CENTER,50,MIXER_PAN_CENTER) },
{ 0 },
{ 0 },
{ 0 },
{ 0 },
};
static struct SN76496interface sn76489_intf =
{
1,
{ MASTER_CLOCK/15 },
{ 50 }
};
static struct OKIM6295interface puckpkmn_m6295_intf =
{
1,
{ 8000 },
{ REGION_SOUND1 },
{ 50 }
};
static MACHINE_DRIVER_START( segac )
MDRV_CPU_ADD_TAG("main",M68000, MASTER_CLOCK/7)
MDRV_CPU_MEMORY(readmem,writemem)
MDRV_CPU_VBLANK_INT(vblank_interrupt,1)
MDRV_FRAMES_PER_SECOND(60)
MDRV_VBLANK_DURATION((int)(((262. - 224.) / 262.) * 1000000. / 60.))
MDRV_MACHINE_INIT(segac2)
MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS)
MDRV_SCREEN_SIZE(320,224)
MDRV_VISIBLE_AREA(0, 319, 0, 223)
MDRV_PALETTE_LENGTH(2048)
MDRV_VIDEO_START(segac2)
MDRV_VIDEO_EOF(segac2)
MDRV_VIDEO_UPDATE(segac2)
MDRV_SOUND_ADD(YM2612, ym3438_intf)
MDRV_SOUND_ADD(SN76496, sn76489_intf)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( segac2 )
MDRV_IMPORT_FROM( segac )
MDRV_SOUND_ADD(UPD7759, upd7759_intf)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( puckpkmn )
MDRV_IMPORT_FROM( segac )
MDRV_CPU_MODIFY("main")
MDRV_CPU_MEMORY(puckpkmn_readmem,puckpkmn_writemem)
MDRV_VIDEO_START(puckpkmn)
MDRV_VISIBLE_AREA(8, 319, 0, 223)
MDRV_SOUND_ADD(OKIM6295, puckpkmn_m6295_intf)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( genesis )
MDRV_CPU_ADD_TAG("main", M68000, 53693100 / 7)
MDRV_CPU_MEMORY(genesis_readmem, genesis_writemem)
MDRV_CPU_VBLANK_INT(vblank_interrupt,1)
MDRV_CPU_ADD_TAG("sound", Z80, 53693100 / 15)
MDRV_CPU_MEMORY(genesis_z80_readmem, genesis_z80_writemem)
MDRV_CPU_VBLANK_INT(irq0_line_hold, 1)
MDRV_FRAMES_PER_SECOND(60)
MDRV_VBLANK_DURATION((int)(((262. - 224.) / 262.) * 1000000. / 60.))
MDRV_INTERLEAVE(100)
MDRV_MACHINE_INIT(genesis)
MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS)
MDRV_SCREEN_SIZE(320,224)
MDRV_VISIBLE_AREA(0, 319, 0, 223)
MDRV_PALETTE_LENGTH(2048)
MDRV_VIDEO_START(puckpkmn)
MDRV_VIDEO_EOF(segac2)
MDRV_VIDEO_UPDATE(segac2)
MDRV_SOUND_ADD(YM2612, gen_ym3438_intf )
MDRV_SOUND_ADD(SN76496, sn76489_intf)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( megatech )
MDRV_IMPORT_FROM( genesis )
MDRV_VIDEO_START(megatech)
MDRV_VIDEO_UPDATE(megatech)
MDRV_ASPECT_RATIO(4,6)
MDRV_SCREEN_SIZE(320,224+192)
MDRV_VISIBLE_AREA(0, 319, 0, 223+192)
MDRV_PALETTE_LENGTH(2048+32)
MDRV_CPU_ADD_TAG("megatech_bios", Z80, 53693100 / 15)
MDRV_CPU_MEMORY(megatech_bios_readmem, megatech_bios_writemem)
MDRV_CPU_PORTS(megatech_bios_readport,megatech_bios_writeport)
MDRV_CPU_VBLANK_INT(megatech_irq, 262)
MACHINE_DRIVER_END
ROM_START( bloxeedc )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr12908.32", 0x000000, 0x020000, CRC(fc77cb91) SHA1(248a462e3858ffdc171af7d806e57deecb5dae50) )
ROM_LOAD16_BYTE( "epr12907.31", 0x000001, 0x020000, CRC(e5fcbac6) SHA1(a1adec5ef5574bff96a3d66619a24a6715097bb9) )
ROM_LOAD16_BYTE( "epr12993.34", 0x040000, 0x020000, CRC(487bc8fc) SHA1(3fb205bf56f35443e993e08b39c1a08c13ca5e3b) )
ROM_LOAD16_BYTE( "epr12992.33", 0x040001, 0x020000, CRC(19b0084c) SHA1(b3ba0f3d8d39a19aa66edb24885ea21192e22704) )
ROM_END
ROM_START( columns )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr13114.32", 0x000000, 0x020000, CRC(ff78f740) SHA1(0a034103a4b942f43e62f6e717f5dbf1bfb0b613) )
ROM_LOAD16_BYTE( "epr13113.31", 0x000001, 0x020000, CRC(9a426d9b) SHA1(3322e65ebf8d0a6047f7d408387c63ea401b8973) )
ROM_END
ROM_START( columnsj )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr13112.32", 0x000000, 0x020000, CRC(bae6e53e) SHA1(2c2fd621eecd55591f22d076323972a7d0314615) )
ROM_LOAD16_BYTE( "epr13111.31", 0x000001, 0x020000, CRC(aa5ccd6d) SHA1(480e29e3112282d1790f1fb68075453325ba4336) )
ROM_END
ROM_START( columns2 )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr13361.rom", 0x000000, 0x020000, CRC(b54b5f12) SHA1(4d7fbae7d9bcadd433ebc25aef255dc43df611bc) )
ROM_LOAD16_BYTE( "epr13360.rom", 0x000001, 0x020000, CRC(a59b1d4f) SHA1(e9ee315677782e1c61ae8f11260101cc03176188) )
ROM_END
ROM_START( tantrbl2 )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "trb2_2.32", 0x000000, 0x080000, CRC(8fc99c48) SHA1(d90ed673fe1f6e1f878c0d8fc62f5439b56d0a47) )
ROM_LOAD16_BYTE( "trb2_1.31", 0x000001, 0x080000, CRC(c318d00d) SHA1(703760d4ddc45bc0921ae96a27d9a8fbf12a1e96) )
ROM_LOAD16_BYTE( "mpr15616.34", 0x100000, 0x080000, CRC(17b80202) SHA1(f47bf2aa0c5972647438619b8453c7dede5c422f) )
ROM_LOAD16_BYTE( "mpr15615.33", 0x100001, 0x080000, CRC(36a88bd4) SHA1(cc7f6a947d1b79bb86957c43035b53d6d2bcfa28) )
ROM_END
ROM_START( ichidntb )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "27c4000.2",0x000000, 0x080000, CRC(5a194f44) SHA1(67a4d21b91704f8c2210b5106e82e22ba3366f4c) )
ROM_LOAD16_BYTE( "27c4000.1",0x000001, 0x080000, CRC(de209f84) SHA1(0860d0ebfab2952e82fc1e292bf9410d673d9322) )
ROM_LOAD16_BYTE( "epr16888", 0x100000, 0x080000, CRC(85d73722) SHA1(7ebe81b4d6c89f87f60200a3a8cddb07d581adef) )
ROM_LOAD16_BYTE( "epr16887", 0x100001, 0x080000, CRC(bc3bbf25) SHA1(e760ad400bc183b38e9787d88c8ac084fbe2ae21) )
ROM_END
ROM_START( borench )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "ic32.bin", 0x000000, 0x040000, CRC(2c54457d) SHA1(adf3ea5393d2633ec6215e64f0cd89ad4567e765) )
ROM_LOAD16_BYTE( "ic31.bin", 0x000001, 0x040000, CRC(b46445fc) SHA1(24e85ef5abbc5376a854b13ed90f08f0c30d7f25) )
ROM_REGION( 0x020000, REGION_SOUND1, 0 )
ROM_LOAD( "ic4.bin", 0x000000, 0x020000, CRC(62b85e56) SHA1(822ab733c87938bb70a9e32cc5dd36bbf6f21d11) )
ROM_END
ROM_START( tfrceac )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "ic32.bin", 0x000000, 0x040000, CRC(95ecf202) SHA1(92b0f351f2bee7d59873a4991615f14f1afe4da7) )
ROM_LOAD16_BYTE( "ic31.bin", 0x000001, 0x040000, CRC(e63d7f1a) SHA1(a40d0a5a96f379a467048dc8fddd8aaaeb94da1d) )
ROM_LOAD16_BYTE( "ic34.bin", 0x100000, 0x040000, CRC(29f23461) SHA1(032a7125fef5a660b85654d595aafc46812cdde6) )
ROM_LOAD16_BYTE( "ic33.bin", 0x100001, 0x040000, CRC(9e23734f) SHA1(64d27dc53f0ffc3513345a26ed077751b25d15f1) )
ROM_REGION( 0x040000, REGION_SOUND1, 0 )
ROM_LOAD( "ic4.bin", 0x000000, 0x040000, CRC(e09961f6) SHA1(e109b5f41502b765d191f22e3bbcff97d6defaa1) )
ROM_END
ROM_START( tfrceacj )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr13657.32", 0x000000, 0x040000, CRC(a0f38ffd) SHA1(da548e7f61aed0e82a460553a119941da8857bc4) )
ROM_LOAD16_BYTE( "epr13656.31", 0x000001, 0x040000, CRC(b9438d1e) SHA1(598209c9fec3527fde720af09e5bebd7379f5b2b) )
ROM_LOAD16_BYTE( "ic34.bin", 0x100000, 0x040000, CRC(29f23461) SHA1(032a7125fef5a660b85654d595aafc46812cdde6) )
ROM_LOAD16_BYTE( "ic33.bin", 0x100001, 0x040000, CRC(9e23734f) SHA1(64d27dc53f0ffc3513345a26ed077751b25d15f1) )
ROM_REGION( 0x040000, REGION_SOUND1, 0 )
ROM_LOAD( "ic4.bin", 0x000000, 0x040000, CRC(e09961f6) SHA1(e109b5f41502b765d191f22e3bbcff97d6defaa1) )
ROM_END
ROM_START( tfrceacb )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "4.bin", 0x000000, 0x040000, CRC(eba059d3) SHA1(7bc04401f9a138fa151ac09a528b70acfb2021e3) )
ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x040000, CRC(3e5dc542) SHA1(4a66dc842afaa145dab82b232738eea107bdf0f8) )
ROM_LOAD16_BYTE( "ic34.bin", 0x100000, 0x040000, CRC(29f23461) SHA1(032a7125fef5a660b85654d595aafc46812cdde6) )
ROM_LOAD16_BYTE( "ic33.bin", 0x100001, 0x040000, CRC(9e23734f) SHA1(64d27dc53f0ffc3513345a26ed077751b25d15f1) )
ROM_REGION( 0x040000, REGION_SOUND1, 0 )
ROM_LOAD( "ic4.bin", 0x000000, 0x040000, CRC(e09961f6) SHA1(e109b5f41502b765d191f22e3bbcff97d6defaa1) )
ROM_END
ROM_START( ribbit )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "ep13833.32", 0x000000, 0x040000, CRC(5347f8ce) SHA1(b95b99536157edfbf0d74a42f64235f47dca7ee1) )
ROM_LOAD16_BYTE( "ep13832.31", 0x000001, 0x040000, CRC(889c42c2) SHA1(0839a50a68b64a66d995f1bfaff42fcb60bb4d45) )
ROM_COPY( REGION_CPU1, 0x000000, 0x080000, 0x080000 )
ROM_LOAD16_BYTE( "ep13838.34", 0x100000, 0x080000, CRC(a5d62ac3) SHA1(8d83a7bc4017e125ef4231278f766b2368d5fc1f) )
ROM_LOAD16_BYTE( "ep13837.33", 0x100001, 0x080000, CRC(434de159) SHA1(cf2973131cabf2bc0ebb2bfe9f804ad3d7d0a733) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "ep13834.4", 0x000000, 0x020000, CRC(ab0c1833) SHA1(f864e12ecf6c0524da20fc66747a4fa4280e67e9) )
ROM_END
ROM_START( tantr )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr15614.32", 0x000000, 0x080000, CRC(557782bc) SHA1(1546a999ab97c380dc87f6c95d5687722206740d) )
ROM_LOAD16_BYTE( "epr15613.31", 0x000001, 0x080000, CRC(14bbb235) SHA1(8dbfec5fb1d7a695acbb2fc0e78e4bdf76eb8d9d) )
ROM_LOAD16_BYTE( "mpr15616.34", 0x100000, 0x080000, CRC(17b80202) SHA1(f47bf2aa0c5972647438619b8453c7dede5c422f) )
ROM_LOAD16_BYTE( "mpr15615.33", 0x100001, 0x080000, CRC(36a88bd4) SHA1(cc7f6a947d1b79bb86957c43035b53d6d2bcfa28) )
ROM_REGION( 0x040000, REGION_SOUND1, 0 )
ROM_LOAD( "epr15617.4", 0x000000, 0x040000, CRC(338324a1) SHA1(79e2782d0d4764dd723886f846c852a6f6c1fb64) )
ROM_END
ROM_START( tantrbl )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "pa_e10.bin", 0x000000, 0x080000, CRC(6c3f711f) SHA1(55aa2d50422134b95d9a7c5cbdc453b207b91b4c) )
ROM_LOAD16_BYTE( "pa_f10.bin", 0x000001, 0x080000, CRC(75526786) SHA1(8f5aa7f6918b71a79e6fca18194beec2aef15844) )
ROM_LOAD16_BYTE( "mpr15616.34", 0x100000, 0x080000, CRC(17b80202) SHA1(f47bf2aa0c5972647438619b8453c7dede5c422f) )
ROM_LOAD16_BYTE( "mpr15615.33", 0x100001, 0x080000, CRC(36a88bd4) SHA1(cc7f6a947d1b79bb86957c43035b53d6d2bcfa28) )
ROM_REGION( 0x040000, REGION_SOUND1, 0 )
ROM_LOAD( "pa_e03.bin", 0x000000, 0x020000, CRC(72918c58) SHA1(cb42363b163727a887a0b762519c72dcdf0a6460) )
ROM_LOAD( "pa_e02.bin", 0x020000, 0x020000, CRC(4e85b2a3) SHA1(3f92fb931d315c5a2d6c54b3204718574928cb7b) )
ROM_END
ROM_START( puyopuyo )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr15036", 0x000000, 0x020000, CRC(5310ca1b) SHA1(dcfe2bf7476b640dfb790e8716e75b483d535e48) )
ROM_LOAD16_BYTE( "epr15035", 0x000001, 0x020000, CRC(bc62e400) SHA1(12bb6031574838a28889f6edb31dbb689265287c) )
ROM_LOAD16_BYTE( "epr15038", 0x100000, 0x020000, CRC(3b9eea0c) SHA1(e3e6148c1769834cc0061932eb035daa79673144) )
ROM_LOAD16_BYTE( "epr15037", 0x100001, 0x020000, CRC(be2f7974) SHA1(77027ced7a62f94e9fc6e8a0a4ac0c62f7ea813b) )
ROM_REGION( 0x020000, REGION_SOUND1, 0 )
ROM_LOAD( "epr15034", 0x000000, 0x020000, CRC(5688213b) SHA1(f3f234e482871ca903a782e51008f3bfed04ee63) )
ROM_END
ROM_START( puyopuya )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "ep15036a.32", 0x000000, 0x020000, CRC(61b35257) SHA1(e09a7e992999befc88fc7928a478d1e2d14d7b08) )
ROM_LOAD16_BYTE( "ep15035a.31", 0x000001, 0x020000, CRC(dfebb6d9) SHA1(6f685729ef4660c2eba409c5236c6d2f313eef5b) )
ROM_LOAD16_BYTE( "epr15038", 0x100000, 0x020000, CRC(3b9eea0c) SHA1(e3e6148c1769834cc0061932eb035daa79673144) )
ROM_LOAD16_BYTE( "epr15037", 0x100001, 0x020000, CRC(be2f7974) SHA1(77027ced7a62f94e9fc6e8a0a4ac0c62f7ea813b) )
ROM_REGION( 0x020000, REGION_SOUND1, 0 )
ROM_LOAD( "epr15034", 0x000000, 0x020000, CRC(5688213b) SHA1(f3f234e482871ca903a782e51008f3bfed04ee63) )
ROM_END
ROM_START( puyopuyb )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "puyopuyb.4bo", 0x000000, 0x020000, CRC(89ea4d33) SHA1(bef9d011524e71c072d309f6da3c2ebc38878e0e) )
ROM_LOAD16_BYTE( "puyopuyb.3bo", 0x000001, 0x020000, CRC(c002e545) SHA1(7a59ac764d60e9955830d9617b0bd122b44e7b2f) )
ROM_LOAD16_BYTE( "puyopuyb.6bo", 0x100000, 0x020000, CRC(0a0692e5) SHA1(d4ecc5b1791a91e3b33a5d4d0dd305f1623483d9) )
ROM_LOAD16_BYTE( "puyopuyb.5bo", 0x100001, 0x020000, CRC(353109b8) SHA1(92440987add3124b758e7eaa77a3a6f54ca61bb8) )
ROM_REGION( 0x020000, REGION_SOUND1, 0 )
ROM_LOAD( "puyopuyb.abo", 0x000000, 0x020000, CRC(79112b3b) SHA1(fc3a202e1e2ff39950d4af689b7fcca86c301805) )
ROM_END
ROM_START( ichidant )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr16886", 0x000000, 0x080000, CRC(38208e28) SHA1(07fc634bdf2d3e25274c9c374b3506dec765114c) )
ROM_LOAD16_BYTE( "epr16885", 0x000001, 0x080000, CRC(1ce4e837) SHA1(16600600e12e3f35e3da89524f7f51f019b5ad17) )
ROM_LOAD16_BYTE( "epr16888", 0x100000, 0x080000, CRC(85d73722) SHA1(7ebe81b4d6c89f87f60200a3a8cddb07d581adef) )
ROM_LOAD16_BYTE( "epr16887", 0x100001, 0x080000, CRC(bc3bbf25) SHA1(e760ad400bc183b38e9787d88c8ac084fbe2ae21) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "epr16884", 0x000000, 0x080000, CRC(fd9dcdd6) SHA1(b8053a2e68072e7664ffc3c53f983f3ba72a892b) )
ROM_END
ROM_START( ichidnte )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "pa2_32.bin", 0x000000, 0x080000, CRC(7ba0c025) SHA1(855e9bb2a20c6f51b26381233c57c26aa96ad1f6) )
ROM_LOAD16_BYTE( "pa2_31.bin", 0x000001, 0x080000, CRC(5f86e5cc) SHA1(44e201de00dfbf7c66d0e0d40d17b162c6f0625b) )
ROM_LOAD16_BYTE( "epr16888", 0x100000, 0x080000, CRC(85d73722) SHA1(7ebe81b4d6c89f87f60200a3a8cddb07d581adef) )
ROM_LOAD16_BYTE( "epr16887", 0x100001, 0x080000, CRC(bc3bbf25) SHA1(e760ad400bc183b38e9787d88c8ac084fbe2ae21) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "pa2_02.bin", 0x000000, 0x080000, CRC(fc7b0da5) SHA1(46770aa7e19b4f8a183be3f433c48ad677b552b1) )
ROM_END
ROM_START( stkclmns )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr16795.32", 0x000000, 0x080000, CRC(b478fd02) SHA1(aaf9d9f9f4dc900b4e8ff6f258f26e782e5c3166) )
ROM_LOAD16_BYTE( "epr16794.31", 0x000001, 0x080000, CRC(6d0e8c56) SHA1(8f98d9fd98a1faa70b173cfd72f15102d11e79ae) )
ROM_LOAD16_BYTE( "mpr16797.34", 0x100000, 0x080000, CRC(b28e9bd5) SHA1(227eb591d10c9dbc52b35954ebd322e2a4451df2) )
ROM_LOAD16_BYTE( "mpr16796.33", 0x100001, 0x080000, CRC(ec7de52d) SHA1(85bc48cef15e615ad9059500808d17916c854a87) )
ROM_REGION( 0x020000, REGION_SOUND1, 0 )
ROM_LOAD( "epr16793.4", 0x000000, 0x020000, CRC(ebb2d057) SHA1(4a19ee5d71e4aabe7d9b9b968ab5ee4bc6262aad) )
ROM_END
ROM_START( puyopuy2 )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "pp2.eve", 0x000000, 0x080000, CRC(1cad1149) SHA1(77fb0482fa35e615c0bed65f4d7f4dd89b241f23) )
ROM_LOAD16_BYTE( "pp2.odd", 0x000001, 0x080000, CRC(beecf96d) SHA1(c2bdad4b6184c11f81f2a5db409cb4ea186205a7) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "pp2.snd", 0x000000, 0x080000, CRC(020ff6ef) SHA1(6095b8277b47a6fd7a9721f15a70ae5bf6be9b1a) )
ROM_END
ROM_START( potopoto )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr16662", 0x000000, 0x040000, CRC(bbd305d6) SHA1(1a4f4869fefac188c69bc67df0b625e43a0c3f1f) )
ROM_LOAD16_BYTE( "epr16661", 0x000001, 0x040000, CRC(5a7d14f4) SHA1(a615b5f481256366db7b1c6302a8dcb69708102b) )
ROM_REGION( 0x040000, REGION_SOUND1, 0 )
ROM_LOAD( "epr16660", 0x000000, 0x040000, CRC(8251c61c) SHA1(03eef3aa0bdde2c1d93128648f54fd69278d85dd) )
ROM_END
ROM_START( zunkyou )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr16812.32", 0x000000, 0x080000, CRC(eb088fb0) SHA1(69089a3516ad50f35e81971ef3c33eb3f5d52374) )
ROM_LOAD16_BYTE( "epr16811.31", 0x000001, 0x080000, CRC(9ac7035b) SHA1(1803ffbadc1213e04646d483e27da1591e22cd06) )
ROM_LOAD16_BYTE( "epr16814.34", 0x100000, 0x080000, CRC(821b3b77) SHA1(c45c7393a792ce8306a52f83f8ed8f6b0d7c11e9) )
ROM_LOAD16_BYTE( "epr16813.33", 0x100001, 0x080000, CRC(3cba9e8f) SHA1(208819bc1a205eaab089542afc7a59f69ce5bb81) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "epr16810.4", 0x000000, 0x080000, CRC(d542f0fe) SHA1(23ea50110dfe1cd9f286a535d15e0c3bcba73b00) )
ROM_END
ROM_START( puckpkmn )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "puckpoke.u5", 0x000000, 0x080000, CRC(fd334b91) SHA1(cf8bf6645a4082ea4392937e169b1686c9c7e246) )
ROM_LOAD16_BYTE( "puckpoke.u4", 0x000001, 0x080000, CRC(839cc76b) SHA1(e15662a7175db7a8e222dda176a8ed92e0d56e9d) )
ROM_LOAD16_BYTE( "puckpoke.u8", 0x100000, 0x080000, CRC(7936bec8) SHA1(4b350105abe514fbfeabae1c6f3aeee695c3d07a) )
ROM_LOAD16_BYTE( "puckpoke.u7", 0x100001, 0x080000, CRC(96b66bdf) SHA1(3cc2861ad9bc232cbe683e01b58090f832d03db5) )
ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "puckpoke.u3", 0x00000, 0x40000, CRC(7b066bac) SHA1(429616e21c672b07e0705bc63234249cac3af56f) )
ROM_END
ROM_START( pclubj )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "epr18171.32", 0x000000, 0x080000, CRC(6c8eb8e2) )
ROM_LOAD16_BYTE( "epr18170.31", 0x000001, 0x080000, CRC(72c631e6) )
ROM_LOAD16_BYTE( "epr18173.34", 0x100000, 0x080000, CRC(9809dc72) )
ROM_LOAD16_BYTE( "epr18172.33", 0x100001, 0x080000, CRC(c61d819b) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "epr18169.4", 0x000000, 0x080000, CRC(5c00ccfb) )
ROM_END
ROM_START( pclubjv2 )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "p2jwn.u32", 0x000000, 0x080000, CRC(dfc0f7f1) )
ROM_LOAD16_BYTE( "p2jwn.u31", 0x000001, 0x080000, CRC(6ab4c694) )
ROM_LOAD16_BYTE( "p2jwn.u34", 0x100000, 0x080000, CRC(854fd456) )
ROM_LOAD16_BYTE( "p2jwn.u33", 0x100001, 0x080000, CRC(64428a69) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "epr18169.4", 0x000000, 0x080000, CRC(5c00ccfb) )
ROM_END
ROM_START( pclubjv4 )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "p4jsm.u32", 0x000000, 0x080000, CRC(36ff5f80) )
ROM_LOAD16_BYTE( "p4jsm.u31", 0x000001, 0x080000, CRC(f3c021ad) )
ROM_LOAD16_BYTE( "p4jsm.u34", 0x100000, 0x080000, CRC(d0fd4b33) )
ROM_LOAD16_BYTE( "p4jsm.u33", 0x100001, 0x080000, CRC(ec667875) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "epr18169.4", 0x000000, 0x080000, CRC(5c00ccfb) )
ROM_END
ROM_START( pclubjv5 )
ROM_REGION( 0x200000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "p5jat.u32", 0x000000, 0x080000, CRC(72220e69) )
ROM_LOAD16_BYTE( "p5jat.u31", 0x000001, 0x080000, CRC(06d83fde) )
ROM_LOAD16_BYTE( "p5jat.u34", 0x100000, 0x080000, CRC(b172ab58) )
ROM_LOAD16_BYTE( "p5jat.u33", 0x100001, 0x080000, CRC(ba38ec50) )
ROM_REGION( 0x080000, REGION_SOUND1, 0 )
ROM_LOAD( "epr18169.4", 0x000000, 0x080000, CRC(5c00ccfb) )
ROM_END
ROM_START( megatech )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_beast )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "mp12538.ic1", 0x000000, 0x080000, CRC(3bea3dce) SHA1(ec72e4fde191dedeb3f148f132603ed3c23f0f86) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-01.ic2", 0x000000, 0x08000, CRC(40cb0088) SHA1(e1711532c29f395a35a1cb34d789015881b5a1ed) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_astro )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD( "ep13817.ic2", 0x000000, 0x020000, CRC(299cbb74) SHA1(901697a3535ad70190647f34ad5b30b695d54542) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-13.ic1", 0x000000, 0x08000, CRC(4038cbd1) SHA1(696bc1efce45d9f0052b2cf0332a232687c8d6ab) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_wcsoc )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "12607.ic1", 0x000000, 0x080000, CRC(bc591b30) SHA1(55e8577171c0933eee53af1dabd0f4c6462d5fc8) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-21.ic2", 0x000000, 0x08000, CRC(028ee46b) SHA1(cd8f81d66e5ae62107eb20e0ca5db4b66d4b2987) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_gng )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "mp12605.ic1", 0x000000, 0x080000, BAD_DUMP CRC(0c6d6f25) SHA1(96c9c0e41036a23fc8e75e18ee2dad87654f200f) )
ROM_LOAD16_WORD_SWAP( "mpr12605.14", 0x080000, 0x020000, CRC(1066c6ab) SHA1(c30e4442732bdb38c96d780542f8550a94d127b0) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-23.ic3", 0x000000, 0x08000, CRC(7ee58546) SHA1(ad5bb0934475eacdc5e354f67c96fe0d2512d33b) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_gaxe )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "12806.ic1", 0x000000, 0x080000, CRC(43456820) SHA1(2f7f1fcd979969ac99426f11ab99999a5494a121) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-25.ic2", 0x000000, 0x08000, CRC(1f07ed28) SHA1(9d54192f4c6c1f8a51c38a835c1dd1e4e3e8279e) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_smgp )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "13250.ic1", 0x000000, 0x080000, CRC(189b885f) SHA1(31c06ffcb48b1604989a94e584261457de4f1f46) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-39.ic2", 0x000000, 0x08000, CRC(64b3ce25) SHA1(83a9f2432d146a712b037f96f261742f7dc810bb) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_sonic )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "mp13913.ic1", 0x000000, 0x080000, CRC(480b4b5c) SHA1(ab1dc1f738e3b2d0898a314b123fa71182bf572e) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-52.ic2", 0x0000, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_gaxe2 )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "mp14272.ic1", 0x000000, 0x080000, CRC(d4784cae) SHA1(b6c286027d06fd850016a2a1ee1f1aeea080c3bb) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-57.ic2", 0x000000, 0x08000, CRC(dc9b4433) SHA1(efd3a598569010cdc4bf38ecbf9ed1b4e14ffe36) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_fshrk )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "mp14341.ic1", 0x000000, 0x080000, CRC(04d65ebc) SHA1(24338aecdc52b6f416548be722ca475c83dbae96) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-53.ic2", 0x000000, 0x08000, CRC(4fa61044) SHA1(7810deea221c10b0b2f5233443d81f4f1998ee58) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( mt_eswat )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "mp13192.ic1", 0x000000, 0x080000, CRC(82f458ef) SHA1(58444b783312def71ecffc4ad021b72a609685cb) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "12368-38.ic2", 0x000000, 0x08000, CRC(43c5529b) SHA1(104f85adea6da1612c0aa96d553efcaa387d7aaf) )
ROM_REGION( 0x10000, REGION_CPU3, 0 )
ROM_LOAD( "epr12664.20", 0x000000, 0x8000, CRC(f71e9526) SHA1(1c7887541d02c41426992d17f8e3db9e03975953) )
ROM_END
ROM_START( megaplay )
ROM_REGION( 0x20000, REGION_USER1, 0 )
ROM_LOAD( "ep15294.ic2", 0x000000, 0x20000, CRC(aa8dc2d8) SHA1(96771ad7b79dc9c83a1594243250d65052d23176) )
ROM_END
ROM_START( mp_sonic )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "ep15177.ic2", 0x000000, 0x040000, CRC(a389b03b) SHA1(8e9e1cf3dd65ddf08757f5a1ce472130c902ea2c) )
ROM_LOAD16_BYTE( "ep15176.ic1", 0x000001, 0x040000, CRC(d180cc21) SHA1(62805cfaaa80c1da6146dd89fc2b49d819fd4f22) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "15175-01.ic3", 0x000000, 0x08000, CRC(99246889) SHA1(184aa3b7fdedcf578c5e34edb7ed44f57f832258) )
ROM_REGION( 0x20000, REGION_USER2, 0 )
ROM_LOAD( "ep15294.ic2", 0x000000, 0x20000, CRC(aa8dc2d8) SHA1(96771ad7b79dc9c83a1594243250d65052d23176) )
ROM_END
ROM_START( mp_gaxe2 )
ROM_REGION( 0x400000, REGION_CPU1, 0 )
ROM_LOAD16_BYTE( "ep15179b.ic2", 0x000000, 0x040000, CRC(00d97b84) SHA1(914bbf566ddf940aab67b92af237d251650ddadf) )
ROM_LOAD16_BYTE( "ep15178b.ic1", 0x000001, 0x040000, CRC(2ea576db) SHA1(6d96b948243533de1f488b1f80e0d5431a4f1f53) )
ROM_REGION( 0x10000, REGION_CPU2, 0 )
ROM_REGION( 0x8000, REGION_USER1, 0 )
ROM_LOAD( "1517502b.ic3", 0x000000, 0x08000, CRC(3039b653) SHA1(b19874c74d0fc0cca1169f62e5e74f0e8ca83679) )
ROM_REGION( 0x20000, REGION_USER2, 0 )
ROM_LOAD( "ep15294.ic2", 0x000000, 0x20000, CRC(aa8dc2d8) SHA1(96771ad7b79dc9c83a1594243250d65052d23176) )
ROM_END
static void init_saves(void)
{
state_save_register_UINT8 ("C2_main", 0, "Int 2 Status", &ym3438_int, 1);
state_save_register_UINT8 ("C2_main", 0, "Int 4 Status", &scanline_int, 1);
state_save_register_UINT8 ("C2_main", 0, "Int 6 Status", &vblank_int, 1);
state_save_register_UINT8 ("C2_IO", 0, "I/O Writes", iochip_reg, 0x10);
state_save_register_UINT16 ("C2 Protection", 0, "Write Buffer", &prot_write_buf, 1);
state_save_register_UINT16 ("C2 Protection", 0, "Read Buffer", &prot_read_buf, 1);
}
static DRIVER_INIT( segac2 )
{
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( bloxeedc )
{
init_saves();
bloxeed_sound = 1;
}
static DRIVER_INIT( columns )
{
static const UINT32 columns_table[256/8] =
{
0x20a41397, 0x64e057d3, 0x20a41397, 0x64e057d3,
0x20a41397, 0x64e057d3, 0xa8249b17, 0xec60df53,
0x20a41397, 0x64e057d3, 0x75f546c6, 0x31b10282,
0x20a41397, 0x64e057d3, 0xfd75ce46, 0xb9318a02,
0xb8348b07, 0xfc70cf43, 0xb8348b07, 0xfc70cf43,
0x9a168b07, 0xde52cf43, 0x9a168b07, 0xde52cf43,
0x30b40387, 0x74f047c3, 0x75f546c6, 0x31b10282,
0x30b40387, 0x74f047c3, 0xfd75ce46, 0xb9318a02
};
prot_table = columns_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( columns2 )
{
static const UINT32 columns2_table[256/8] =
{
0x0015110c, 0x0015110c, 0x889d9984, 0xcedb9b86,
0x4455554c, 0x4455554c, 0xddddccc4, 0x9b9bcec6,
0x2237332e, 0x2237332e, 0x6677776e, 0x2031756c,
0x6677776e, 0x6677776e, 0x7777666e, 0x3131646c,
0x0015110c, 0x0015110c, 0x889d9984, 0xcedb9b86,
0x6677776e, 0x6677776e, 0xffffeee6, 0xb9b9ece4,
0xaabfbba6, 0xaabfbba6, 0xeeffffe6, 0xa8b9fde4,
0xeeffffe6, 0xeeffffe6, 0xffffeee6, 0xb9b9ece4
};
prot_table = columns2_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( borench )
{
static const UINT32 borench_table[256/8] =
{
0x12fe56ba, 0x56ba56ba, 0x00aa44ee, 0xcceeccee,
0x13ff57bb, 0x759957bb, 0x11bb55ff, 0xffddddff,
0x12ba56fe, 0x56fe56fe, 0x00aa44ee, 0xcceeccee,
0x933bd77f, 0xf55dd77f, 0x913bd57f, 0x7f5d5d7f,
0x12fe56ba, 0x56ba56ab, 0x00aa44ee, 0xcceeccff,
0xd73bd73b, 0xf519d72a, 0xd57fd57f, 0x7f5d5d6e,
0x12ba56fe, 0x56fe56ef, 0x00aa44ee, 0xcceeccff,
0xd77fd77f, 0xf55dd76e, 0xd57fd57f, 0x7f5d5d6e
};
prot_table = borench_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( tfrceac )
{
static const UINT32 tfrceac_table[256/8] =
{
0x3a3a6f6f, 0x38386d6d, 0x3a3a6f6f, 0x28287d7d,
0x3a3a6f6f, 0x38386d6d, 0x3a3a6f6f, 0x28287d7d,
0x7e3a2b6f, 0x7c38296d, 0x7eb22be7, 0x6ca039f5,
0x7e3a2b6f, 0x7c38296d, 0x7eb22be7, 0x6ca039f5,
0x3b3b6e6e, 0x39396c6c, 0x5dd50880, 0x4ec61b93,
0x3b3b6e6e, 0x39396c6c, 0x3bb36ee6, 0x28a07df5,
0x5d19084c, 0x5d19084c, 0x7ff72aa2, 0x6ee63bb3,
0x5d19084c, 0x5d19084c, 0x5d9108c4, 0x4c8019d5
};
prot_table = tfrceac_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( tfrceacb )
{
install_mem_write16_handler(0, 0x800000, 0x800001, MWA16_NOP);
}
static DRIVER_INIT( ribbit )
{
static const UINT32 ribbit_table[256/8] =
{
0xffeeddcc, 0xffeeddcc, 0xfeeffeef, 0xfeeffeef,
0xbb8899aa, 0xffccddee, 0xba89ba89, 0xfecdfecd,
0x7f6e5d4c, 0x3b2a1908, 0x7e6f7e6f, 0x3a2b3a2b,
0x3b19193b, 0x3b19193b, 0xba98ba98, 0xba98ba98,
0xffff5555, 0xffff5555, 0xfefe7676, 0xfefe7676,
0xbb991133, 0xffdd5577, 0xfedc7654, 0xfedc7654,
0x7f7ff7f7, 0x3b3bb3b3, 0x7e7ef6f6, 0x3a3ab2b2,
0x3b19b391, 0x3b19b391, 0xfedc7654, 0xba983210
};
prot_table = ribbit_table;
bloxeed_sound = 0;
init_saves();
install_mem_read16_handler(0, 0xffc166, 0xffc167, ribbit_prot_hack_r);
install_mem_read16_handler(0, 0x8c0000, 0x8c0fff, ribbit_palette_r);
install_mem_write16_handler(0, 0x8c0000, 0x8c0fff, ribbit_palette_w);
ribbit_palette_select = install_mem_read16_handler(0, 0x2000, 0x27ff, ribbit_palette_select_r);
}
static DRIVER_INIT( tantr )
{
static const UINT32 tantr_table[256/8] =
{
0x91ddd19d, 0x91ddd19d, 0xd4dc949c, 0xf6feb6be,
0x91bbd1fb, 0x91bbd1fb, 0xd4fe94be, 0xf6feb6be,
0x80cce2ae, 0x88cceaae, 0xc5cda7af, 0xefef8d8d,
0x91bbf3d9, 0x99bbfbd9, 0xd4feb69c, 0xfefe9c9c,
0x5d55959d, 0x5d55959d, 0x5c54949c, 0x7e76b6be,
0x5d7795bf, 0x5d7795bf, 0x5c7694be, 0x7e76b6be,
0x5d55b7bf, 0x4444aeae, 0x5c54b6be, 0x67678d8d,
0x5d77b79d, 0x5577bf9d, 0x5c76b69c, 0x76769c9c
};
prot_table = tantr_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( ichidant )
{
static const UINT32 ichidant_table[256/8] =
{
0x55116622, 0x55116622, 0x55117733, 0x55117733,
0x8800aa22, 0x8800aa22, 0x8800bb33, 0x8800bb33,
0x11550044, 0x55114400, 0x11551155, 0x55115511,
0xcc44cc44, 0x88008800, 0xcc44dd55, 0x88009911,
0xdd99eeaa, 0xdd99eeaa, 0xdd99ffbb, 0xdd99ffbb,
0xaa228800, 0xaa228800, 0xaa229911, 0xaa229911,
0x99dd88cc, 0xdd99cc88, 0x99dd99dd, 0xdd99dd99,
0xee66ee66, 0xaa22aa22, 0xee66ff77, 0xaa22bb33
};
prot_table = ichidant_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( ichidnte )
{
static const UINT32 ichidnte_table[256/8] =
{
0x4c4c4c4c, 0x08080808, 0x5d5d4c4c, 0x19190808,
0x33332222, 0x33332222, 0x22222222, 0x22222222,
0x082a082a, 0x082a082a, 0x193b082a, 0x193b082a,
0x77556644, 0x33112200, 0x66446644, 0x22002200,
0x6e6e6e6e, 0x2a2a2a2a, 0x7f7f6e6e, 0x3b3b2a2a,
0xbbbbaaaa, 0xbbbbaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
0x2a082a08, 0x2a082a08, 0x3b192a08, 0x3b192a08,
0xffddeecc, 0xbb99aa88, 0xeecceecc, 0xaa88aa88
};
prot_table = ichidnte_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( potopoto )
{
static const UINT32 potopoto_table[256/8] =
{
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x22222222, 0x22222222,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000
};
prot_table = potopoto_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( puyopuyo )
{
static const UINT32 puyopuyo_table[256/8] =
{
0x33aa55cc, 0x33aa55cc, 0xba22fe66, 0xba22fe66,
0x77ee55cc, 0x55cc77ee, 0xfe66fe66, 0xdc44dc44,
0x33aa77ee, 0x77aa33ee, 0xba22fe66, 0xfe22ba66,
0x77ee77ee, 0x11cc11cc, 0xfe66fe66, 0x98449844,
0x22bb44dd, 0x3ba25dc4, 0xab33ef77, 0xba22fe66,
0x66ff44dd, 0x5dc47fe6, 0xef77ef77, 0xdc44dc44,
0x22bb66ff, 0x7fa23be6, 0xab33ef77, 0xfe22ba66,
0x66ff66ff, 0x19c419c4, 0xef77ef77, 0x98449844
};
prot_table = puyopuyo_table;
bloxeed_sound = 0;
init_saves();
}
static DRIVER_INIT( puyopuy2 )
{
static const UINT32 puyopuy2_table[256/8] =
{
0x00008383, 0xb3b33030, 0xcccc4f4f, 0x7f7ffcfc,
0x02028181, 0xb1b13232, 0xcece4d4d, 0x7d7dfefe,
0x4444c1c1, 0x91911414, 0x99991c1c, 0x4c4cc9c9,
0x4646c3c3, 0x93931616, 0x9b9b1e1e, 0x4e4ecbcb,
0x5555d7d7, 0xf7f77575, 0xdddd5f5f, 0x7f7ffdfd,
0x5757d5d5, 0xf5f57777, 0xdfdf5d5d, 0x7d7dffff,
0x11119595, 0xd5d55151, 0x88880c0c, 0x4c4cc8c8,
0x13139797, 0xd7d75353, 0x8a8a0e0e, 0x4e4ecaca
};
prot_table = puyopuy2_table;
bloxeed_sound = 0;
install_mem_read16_handler(0, 0x800000, 0x800001, puyopuy2_prot_r);
init_saves();
}
static DRIVER_INIT( stkclmns )
{
static const UINT32 stkclmns_table[256/8] =
{
0xcc88cc88, 0xcc88cc88, 0xcc99cc99, 0xcc99cc99,
0x00001111, 0x88889999, 0x00111100, 0x88999988,
0xaaee88cc, 0xeeaacc88, 0xaaff88dd, 0xeebbcc99,
0x66665555, 0xaaaa9999, 0x66775544, 0xaabb9988,
0xeeaaeeaa, 0xeeaaeeaa, 0xeebbeebb, 0xeebbeebb,
0x00001111, 0x88889999, 0x00111100, 0x88999988,
0x00442266, 0x44006622, 0x00552277, 0x44116633,
0xeeeedddd, 0x22221111, 0xeeffddcc, 0x22331100
};
prot_table = stkclmns_table;
bloxeed_sound = 0;
{
int i;
for (i = 0; i < 0x10000/2; i++)
main_ram[i] = mame_rand();
}
init_saves();
}
static DRIVER_INIT( zunkyou )
{
static const UINT32 zunkyou_table[256/8] =
{
0xa0a06c6c, 0x82820a0a, 0xecec2020, 0xecec6464,
0xa2a26e6e, 0x80800808, 0xaaaa6666, 0xaaaa2222,
0x39287d6c, 0x1b0a1b0a, 0x75643120, 0x75647564,
0x3b2a7f6e, 0x19081908, 0x33227766, 0x33223322,
0xb1b17d7d, 0x93931b1b, 0xfdfd3131, 0xfdfd7575,
0xa2a26e6e, 0x80800808, 0xaaaa6666, 0xaaaa2222,
0x28396c7d, 0x0a1b0a1b, 0x64752031, 0x64756475,
0x3b2a7f6e, 0x19081908, 0x33227766, 0x33223322
};
prot_table = zunkyou_table;
bloxeed_sound = 0;
init_saves();
}
static int cam_data;
static READ16_HANDLER( printer_r )
{
return cam_data;
}
static WRITE16_HANDLER( print_club_camera_w )
{
cam_data = data;
}
static DRIVER_INIT( pclub )
{
static const UINT32 printc1_table[256/8] =
{
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
};
prot_table = printc1_table;
bloxeed_sound = 0;
init_saves();
install_mem_read16_handler(0, 0x880120, 0x880121, printer_r );
install_mem_read16_handler(0, 0x880124, 0x880125, printer_r );
install_mem_write16_handler(0, 0x880124, 0x880125, print_club_camera_w);
}
DRIVER_INIT( puckpkmn )
{
data8_t *rom = memory_region(REGION_CPU1);
size_t len = memory_region_length(REGION_CPU1);
int i;
for (i = 0; i < len; i++)
rom[i] = BITSWAP8(rom[i],1,4,2,0,7,5,3,6);
cpu_setbank(1, memory_region(REGION_CPU1) );
cpu_setbank(2, main_ram );
init_segac2();
}
GAME ( 1989, bloxeedc, bloxeed, segac, bloxeedc, bloxeedc, ROT0, "Sega / Elorg", "Bloxeed (C System)" )
GAME ( 1990, columns, 0, segac, columns, columns, ROT0, "Sega", "Columns (US)" )
GAME ( 1990, columnsj, columns, segac, columns, columns, ROT0, "Sega", "Columns (Japan)" )
GAME ( 1990, columns2, 0, segac, columns2, columns2, ROT0, "Sega", "Columns II - The Voyage Through Time (Japan)" )
GAME ( 1990, borench, 0, segac2, borench, borench, ROT0, "Sega", "Borench" )
GAME ( 1990, tfrceac, 0, segac2, tfrceac, tfrceac, ROT0, "Sega / Technosoft", "ThunderForce AC" )
GAME ( 1990, tfrceacj, tfrceac, segac2, tfrceac, tfrceac, ROT0, "Sega / Technosoft", "ThunderForce AC (Japan)" )
GAME ( 1990, tfrceacb, tfrceac, segac2, tfrceac, tfrceacb, ROT0, "bootleg", "ThunderForce AC (bootleg)" )
GAME ( 1991, ribbit, 0, segac2, ribbit, ribbit, ROT0, "Sega", "Ribbit!" )
GAME ( 1992, tantr, 0, segac2, ichidant, tantr, ROT0, "Sega", "Tant-R (Puzzle & Action) (Japan)" )
GAME ( 1992, tantrbl, tantr, segac2, ichidant, segac2, ROT0, "bootleg", "Tant-R (Puzzle & Action) (Japan) (bootleg set 1)" )
GAME ( 1994, tantrbl2, tantr, segac, ichidant, tantr, ROT0, "bootleg", "Tant-R (Puzzle & Action) (Japan) (bootleg set 2)" )
GAME ( 1992, puyopuyo, 0, segac2, puyopuyo, puyopuyo, ROT0, "Sega / Compile", "Puyo Puyo (Japan)" )
GAME ( 1992, puyopuya, puyopuyo, segac2, puyopuyo, puyopuyo, ROT0, "Sega / Compile", "Puyo Puyo (Japan) (Rev A)" )
GAME ( 1992, puyopuyb, puyopuyo, segac2, puyopuyo, puyopuyo, ROT0, "bootleg", "Puyo Puyo (English) (bootleg)" )
GAME ( 1994, ichidant, 0, segac2, ichidant, ichidant, ROT0, "Sega", "Ichidant-R (Puzzle & Action 2) (Japan)" )
GAME ( 1994, ichidnte, ichidant, segac2, ichidant, ichidnte, ROT0, "Sega", "Ichidant-R (Puzzle & Action 2) (English)" )
GAME ( 1994, ichidntb, ichidant, segac, ichidant, segac2, ROT0, "bootleg", "Ichidant-R (Puzzle & Action 2) (Japan) (bootleg)" )
GAME ( 1994, stkclmns, 0, segac2, stkclmns, stkclmns, ROT0, "Sega", "Stack Columns (Japan)" )
GAME ( 1994, puyopuy2, 0, segac2, puyopuy2, puyopuy2, ROT0, "Compile (Sega license)", "Puyo Puyo 2 (Japan)" )
GAME ( 1994, potopoto, 0, segac2, potopoto, potopoto, ROT0, "Sega", "Poto Poto (Japan)" )
GAME ( 1994, zunkyou, 0, segac2, zunkyou, zunkyou, ROT0, "Sega", "Zunzunkyou No Yabou (Japan)" )
GAME ( 2000, puckpkmn, 0, puckpkmn, puckpkmn, puckpkmn, ROT0, "Genie", "Puckman Pockimon" )
GAMEX( 1995, pclubj, 0, segac2, pclub, pclub, ROT0, "Atlus", "Print Club (Japan Vol.1)", GAME_NOT_WORKING )
GAMEX( 1995, pclubjv2, pclubj, segac2, pclub, pclub, ROT0, "Atlus", "Print Club (Japan Vol.2)", GAME_NOT_WORKING )
GAMEX( 1996, pclubjv4, pclubj, segac2, pclub, pclub, ROT0, "Atlus", "Print Club (Japan Vol.4)", GAME_NOT_WORKING )
GAMEX( 1996, pclubjv5, pclubj, segac2, pclub, pclub, ROT0, "Atlus", "Print Club (Japan Vol.5)", GAME_NOT_WORKING )
GAMEX( 1989, megatech, 0, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: Bios", NOT_A_DRIVER )
GAMEX( 1989, mt_beast, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: Altered Beast", GAME_NOT_WORKING )
GAMEX( 1989, mt_astro, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: Astro Warrior", GAME_NOT_WORKING )
GAMEX( 1989, mt_gaxe, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: Golden Axe", GAME_NOT_WORKING )
GAMEX( 1989, mt_gng, megatech, megatech, megatech, segac2, ROT0, "Capcom / Sega", "MegaTech: Ghouls and Ghosts", GAME_NOT_WORKING )
GAMEX( 1990, mt_smgp, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: Super Monaco Grand Prix", GAME_NOT_WORKING )
GAMEX( 1989, mt_wcsoc, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: World Cup Soccer", GAME_NOT_WORKING )
GAMEX( 1989, mt_sonic, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: Sonic the Hedgehog", GAME_NOT_WORKING )
GAMEX( 1989, mt_fshrk, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: Fire Shark", GAME_NOT_WORKING )
GAMEX( 1989, mt_gaxe2, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: Golden Axe 2", GAME_NOT_WORKING )
GAMEX( 1989, mt_eswat, megatech, megatech, megatech, segac2, ROT0, "Sega", "MegaTech: E-Swat", GAME_NOT_WORKING )
GAMEX( 1989, megaplay, 0, genesis, genesis, segac2, ROT0, "Sega", "MegaPlay: Bios", NOT_A_DRIVER )
GAMEX( 1989, mp_sonic, megaplay, genesis, genesis, segac2, ROT0, "Sega", "MegaPlay: Sonic The Hedgehog", GAME_NOT_WORKING )
GAMEX( 1989, mp_gaxe2, megaplay, genesis, genesis, segac2, ROT0, "Sega", "MegaPlay: Golden Axe 2", GAME_NOT_WORKING )