/***************************************************************************
-= Kaneko 16 Bit Games =-
driver by Luca Elia (l.elia@tin.it)
CPU : 68000 + MCU [Optional]
SOUND : OKI-M6295 x (1 | 2) + YM2149 x (0 | 2)
OR : Z80 + YM2151
OTHER : 93C46 EEPROM [Optional]
CUSTOM : VU-001 046A (48pin PQFP)
VU-002 052 151021 (160pin PQFP) <- Sprites
VU-003 <- High Colour Background
VIEW2-CHIP 23160-509 9047EAI (144pin PQFP) <- Tilemaps
MUX2-CHIP (64pin PQFP)
HELP1-CHIP (64pin PQFP)
IU-001 9045KP002 (44pin PQFP)
I/O JAMMA MC-8282 047 (46pin) <- Inputs
----------------------------------------------------------------------------------------
Year + Game PCB Notes
----------------------------------------------------------------------------------------
91 The Berlin Wall
Magical Crystals Z00FC-02
92 Bakuretsu Breaker ZOOFC-02
Blaze On Z02AT-002 2 VU-002 Sprites Chips (Atlus PCB ID: ATL-67140)
Shogun Warriors ZO1DK-002 CALC3 MCU protection (EEPROM handling, 68k code snippet, data - palettes, tilemaps, fighters)
B.Rap Boys ZO1DK-002 CALC3 MCU protection (EEPROM handling, 68k code snippet, data - palettes, tilemaps, fighters)
94 Great 1000 Miles Rally Z09AF-005 TBSOP01 MCU protection (EEPROM handling etc.)
Bonk's Adventure Z09AF-003 TBSOP01 MCU protection (EEPROM handling, 68k code snippet, data)
Blood Warrior Z09AF-005 TBSOP01 MCU protection (EEPROM handling etc.)
95 Great 1000 Miles Rally 2 M201F00138 TBSOP02 MCU protection (EEPROM handling etc.)
----------------------------------------------------------------------------------------
Note: gtmr manual shows "Compatible with AX Kaneko System Board"
Note: Magic Crystals reports "TOYBOX SYSTEM Version 0.93B+"
Note: Decapping shows the CALC3 MCU to be a NEC uPD78322 series MCU with 16K internal ROM. Both the
TBSOP01 and TBSOP02 are thought to be the NEC uPD78324 series MCU with 32K internal ROM.
To Do:
[gtmr]
- Stage 4: The layers' scrolling is very jerky for a couple of seconds
in the middle of this level (probably interrupt related)
- The layers' colours are not initialised when showing the self test
screen and the very first screen (with the Kaneko logo in the middle).
They're probably supposed to be disabled in those occasions, but the
relevant registers aren't changed throughout the game (?)
[gtmr2]
- Finish the Inputs (different wheels and pedals)
- Find infos about the communication stuff (even if it won't be supported)
[brapboys / shogwarr]
- Verify collision protection on real hardware (appears to be a function of the system/memory controller, NOT the MCU)
- currently B.Rap Boys has it's own special case, it should work with the same code as Blood Warriors / Shogun Warriors (and probably SuperNova)
- Figure out how MCU resets writeback address (currently hacked)
- Find relationship between Key tables and final datablock
- Clean up debug code file writes etc. (when above are done only!)
- Interrupt timing? (some sprites flicker) - some sprite flicker exists in youtube videos too, so probably not a bug
- Sprite buffering (1-2 frames?, or related to above) - some bg objects with sprite parts break up in shogun
Dip locations verified from manual for:
- berlwall
- mgcrystl
- blazeon
- bakubrkr
- bloodwar
- gtmr
- gtmr2
- shogwarr
[general]
- replace sample bank copying with new ADDRESS MAP system for OKI and do banking like CPUs
***************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "deprecat.h"
#include "machine/eeprom.h"
#include "includes/kaneko16.h"
#include "sound/2203intf.h"
#include "sound/2151intf.h"
#include "sound/okim6295.h"
/***************************************************************************
Machine Initialisation
***************************************************************************/
MACHINE_RESET( kaneko16 )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
state->m_sprite_type = 0;
state->m_sprite_xoffs = 0;
state->m_sprite_yoffs = 0;
state->m_sprite_fliptype = 0;
/*
Sx = Sprites with priority x, x = tiles with priority x,
Sprites - Tiles Order (bottom -> top):
0 S0 1 2 3
0 1 S1 2 3
0 1 2 S2 3
0 1 2 3 S3
*/
state->m_priority.sprite[0] = 1; // above tile[0], below the others
state->m_priority.sprite[1] = 2; // above tile[0-1], below the others
state->m_priority.sprite[2] = 3; // above tile[0-2], below the others
state->m_priority.sprite[3] = 8; // above all
}
static MACHINE_RESET( berlwall )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
MACHINE_RESET_CALL(kaneko16);
state->m_sprite_type = 2; // like type 0, but using 16 instead of 8 bytes
}
static MACHINE_RESET( blazeon )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
MACHINE_RESET_CALL(kaneko16);
state->m_sprite_xoffs = 0x10000 - 0x680;
state->m_sprite_yoffs = 0x000;
/*
Sx = Sprites with priority x, x = tiles with priority x,
Sprites - Tiles Order (bottom -> top):
0 S0 1 2 3
0 1 S1 2 3
0 1 2 3 S2
0 1 2 3 S3
*/
state->m_priority.sprite[0] = 1; // above tile[0], below the others
state->m_priority.sprite[1] = 2; // above tile[0-1], below the others
state->m_priority.sprite[2] = 8; // above all
state->m_priority.sprite[3] = 8; // ""
}
static MACHINE_RESET( bloodwar )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
state->m_priority.sprite[0] = 2; // ever used ?
state->m_priority.sprite[1] = 3; // character selection / vs. portraits
state->m_priority.sprite[2] = 5; // winning portrait
state->m_priority.sprite[3] = 7;
state->m_sprite_type = 1;
state->m_priority.VIEW2_2_pri = 1;
state->m_toybox_mcu_run = bloodwar_mcu_run;
toybox_mcu_init(machine);
}
static MACHINE_RESET( bonkadv )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
state->m_priority.sprite[0] = 2; // ever used ?
state->m_priority.sprite[1] = 3; // volcano lava on level 2
state->m_priority.sprite[2] = 5; // in-game player
state->m_priority.sprite[3] = 7; // demostration text
state->m_sprite_type = 1;
state->m_priority.VIEW2_2_pri = 1;
state->m_toybox_mcu_run = bonkadv_mcu_run;
toybox_mcu_init(machine);
}
static MACHINE_RESET( bakubrkr )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
MACHINE_RESET_CALL(kaneko16);
state->m_priority.sprite[0] = 8; // above all
state->m_priority.sprite[1] = 8; // above all
state->m_priority.sprite[2] = 8; // above all
state->m_priority.sprite[3] = 8; // above all
state->m_priority.VIEW2_2_pri = 1;
}
static MACHINE_RESET( gtmr )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
MACHINE_RESET_CALL(kaneko16);
state->m_sprite_type = 1;
state->m_priority.VIEW2_2_pri = 1;
state->m_toybox_mcu_run = gtmr_mcu_run;
toybox_mcu_init(machine);
}
static MACHINE_RESET( mgcrystl )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
MACHINE_RESET_CALL(kaneko16);
/*
Sx = Sprites with priority x, x = tiles with priority x,
Sprites - Tiles Order:
S0: below 0 2
S1: over 2
below 0
S2: over 0 2
S3: over all
tiles of the 2nd VIEW2 chip always behind sprites?
*/
state->m_priority.sprite[0] = 2; // below all
state->m_priority.sprite[1] = 3; // above tile[0], below the others
state->m_priority.sprite[2] = 5; // above all
state->m_priority.sprite[3] = 7; // ""
state->m_priority.VIEW2_2_pri = 0;
}
static MACHINE_RESET( shogwarr )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
MACHINE_RESET_CALL(kaneko16);
state->m_sprite_xoffs = 0xa00;
state->m_sprite_yoffs = -0x40;
state->m_sprite_type = 0;
state->m_sprite_fliptype = 1;
state->m_priority.sprite[0] = 1; // below all
state->m_priority.sprite[1] = 3; // above tile[0], below the others
state->m_priority.sprite[2] = 5; // above all
state->m_priority.sprite[3] = 7; // ""
state->m_priority.VIEW2_2_pri = 0;
calc3_mcu_init(machine);
}
/***************************************************************************
Misc Machine Emulation Routines
***************************************************************************/
static READ16_HANDLER( kaneko16_rnd_r )
{
return space->machine().rand() & 0xffff;
}
static WRITE16_HANDLER( kaneko16_coin_lockout_w )
{
if (ACCESSING_BITS_8_15)
{
coin_counter_w(space->machine(), 0, data & 0x0100);
coin_counter_w(space->machine(), 1, data & 0x0200);
coin_lockout_w(space->machine(), 0, (~data) & 0x0400 );
coin_lockout_w(space->machine(), 1, (~data) & 0x0800 );
}
}
/***************************************************************************
Sound
***************************************************************************/
static WRITE16_HANDLER( kaneko16_soundlatch_w )
{
if (ACCESSING_BITS_8_15)
{
soundlatch_w(space, 0, (data & 0xff00) >> 8 );
cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
}
}
/* Two identically mapped YM2149 chips */
static READ16_DEVICE_HANDLER( kaneko16_YM2149_r )
{
/* Each 2149 register is mapped to a different address */
ay8910_address_w(device,0,offset);
return ay8910_r(device,0);
}
static WRITE16_DEVICE_HANDLER( kaneko16_YM2149_w )
{
/* Each 2149 register is mapped to a different address */
ay8910_address_w(device,0,offset);
/* The registers are mapped to odd addresses, except one! */
if (ACCESSING_BITS_0_7) ay8910_data_w(device,0, data & 0xff);
else ay8910_data_w(device,0,(data >> 8) & 0xff);
}
/***************************************************************************
EEPROM
***************************************************************************/
static WRITE16_HANDLER( kaneko16_eeprom_w )
{
if (ACCESSING_BITS_0_7)
{
input_port_write(space->machine(), "EEPROMOUT", data, 0xff);
}
if (ACCESSING_BITS_8_15)
{
coin_counter_w(space->machine(), 0, data & 0x0100);
coin_counter_w(space->machine(), 1, data & 0x0200);
coin_lockout_w(space->machine(), 0, data & 0x8000);
coin_lockout_w(space->machine(), 1, data & 0x8000);
}
}
/***************************************************************************
Memory Maps - Main CPU
***************************************************************************/
/***************************************************************************
The Berlin Wall
***************************************************************************/
static ADDRESS_MAP_START( berlwall, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM
AM_RANGE(0x30e000, 0x30ffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
// AM_RANGE(0x480000, 0x480001) AM_RAM // ?
AM_RANGE(0x500000, 0x500001) AM_READWRITE(kaneko16_bg15_reg_r, kaneko16_bg15_reg_w) AM_BASE_MEMBER(kaneko16_state, m_bg15_reg) // High Color Background
AM_RANGE(0x580000, 0x580001) AM_READWRITE(kaneko16_bg15_select_r, kaneko16_bg15_select_w) AM_BASE_MEMBER(kaneko16_state, m_bg15_select)
AM_RANGE(0x600000, 0x60003f) AM_RAM_WRITE(kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs) // Sprites Regs
AM_RANGE(0x680000, 0x680001) AM_READ_PORT("P1")
AM_RANGE(0x680002, 0x680003) AM_READ_PORT("P2")
AM_RANGE(0x680004, 0x680005) AM_READ_PORT("SYSTEM")
// AM_RANGE(0x680006, 0x680007) AM_READ_PORT("UNK")
AM_RANGE(0x700000, 0x700001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout
AM_RANGE(0x780000, 0x780001) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("ay1", kaneko16_YM2149_r, kaneko16_YM2149_w) // Sound
AM_RANGE(0x800200, 0x80021f) AM_DEVREADWRITE("ay2", kaneko16_YM2149_r, kaneko16_YM2149_w)
AM_RANGE(0x8003fe, 0x8003ff) AM_NOP // for OKI when accessed as .l
AM_RANGE(0x800400, 0x800401) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers
AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0]) //
AM_RANGE(0xc02000, 0xc02fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1]) //
AM_RANGE(0xc03000, 0xc03fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0]) //
AM_RANGE(0xd00000, 0xd0001f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers Regs
ADDRESS_MAP_END
/***************************************************************************
Bakuretsu Breaker
***************************************************************************/
/* Two un-assigned OKI samples get requested during game play. Leftover bug? */
/* The two YM2149 chips are only used when entering high score initials, and */
/* when the game is fully completed. Overkill??? */
static WRITE16_DEVICE_HANDLER( bakubrkr_oki_bank_sw )
{
if (ACCESSING_BITS_0_7) {
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(0x40000 * (data & 0x7) );
logerror("%s:Selecting OKI bank %02X\n",device->machine().describe_context(),data&0xff);
}
}
static ADDRESS_MAP_START( bakubrkr, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
AM_RANGE(0x400000, 0x40001f) AM_DEVREAD("ay1", kaneko16_YM2149_r) // Sound
AM_RANGE(0x400000, 0x40001d) AM_DEVWRITE("ay1", kaneko16_YM2149_w)
AM_RANGE(0x40001e, 0x40001f) AM_DEVWRITE("oki", bakubrkr_oki_bank_sw) // OKI bank Switch
AM_RANGE(0x400200, 0x40021f) AM_DEVREADWRITE("ay2", kaneko16_YM2149_r,kaneko16_YM2149_w) // Sound
AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff) //
AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers 0
AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0]) //
AM_RANGE(0x502000, 0x502fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1]) //
AM_RANGE(0x503000, 0x503fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0]) //
AM_RANGE(0x580000, 0x580fff) AM_RAM_WRITE(kaneko16_vram_3_w) AM_BASE_MEMBER(kaneko16_state, m_vram[3]) // Layers 1
AM_RANGE(0x581000, 0x581fff) AM_RAM_WRITE(kaneko16_vram_2_w) AM_BASE_MEMBER(kaneko16_state, m_vram[2]) //
AM_RANGE(0x582000, 0x582fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[3]) //
AM_RANGE(0x583000, 0x583fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[2]) //
AM_RANGE(0x600000, 0x601fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x700000, 0x700fff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x800000, 0x80001f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers 0 Regs
AM_RANGE(0x900000, 0x90001f) AM_RAM_WRITE(kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs ) // Sprites Regs
AM_RANGE(0xa80000, 0xa80001) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0xb00000, 0xb0001f) AM_RAM_WRITE(kaneko16_layers_1_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_1_regs) // Layers 1 Regs
AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_eeprom_w) // EEPROM
AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("P1")
AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("P2")
AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("SYSTEM")
AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("UNK")
ADDRESS_MAP_END
/***************************************************************************
Blaze On
***************************************************************************/
static ADDRESS_MAP_START( blazeon, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM
AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x600000, 0x600fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers 0
AM_RANGE(0x601000, 0x601fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0]) //
AM_RANGE(0x602000, 0x602fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1]) //
AM_RANGE(0x603000, 0x603fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0]) //
AM_RANGE(0x700000, 0x700fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x800000, 0x80001f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers 0 Regs
AM_RANGE(0x900000, 0x90001f) AM_RAM_WRITE(kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs) // Sprites Regs #1
AM_RANGE(0x980000, 0x98001f) AM_RAM // Sprites Regs #2
AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW2_P1")
AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("DSW1_P2")
AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("UNK")
AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("SYSTEM")
AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout
AM_RANGE(0xe00000, 0xe00001) AM_READNOP AM_WRITE(kaneko16_soundlatch_w) // Read = IRQ Ack ?
AM_RANGE(0xe40000, 0xe40001) AM_READNOP // IRQ Ack ?
// AM_RANGE(0xe80000, 0xe80001) AM_READNOP // IRQ Ack ?
AM_RANGE(0xec0000, 0xec0001) AM_READNOP // Lev 4 IRQ Ack ?
ADDRESS_MAP_END
/***************************************************************************
Blood Warrior
***************************************************************************/
static WRITE16_DEVICE_HANDLER( bloodwar_oki_0_bank_w )
{
if (ACCESSING_BITS_0_7)
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(0x40000 * (data & 0xf) );
// logerror("CPU #0 PC %06X : OKI0 bank %08X\n",cpu_get_pc(&space->device()),data);
}
}
static WRITE16_DEVICE_HANDLER( bloodwar_oki_1_bank_w )
{
if (ACCESSING_BITS_0_7)
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(0x40000 * data );
// logerror("CPU #0 PC %06X : OKI1 bank %08X\n",cpu_get_pc(&space->device()),data);
}
}
static WRITE16_HANDLER( bloodwar_coin_lockout_w )
{
if (ACCESSING_BITS_8_15)
{
coin_counter_w(space->machine(), 0, data & 0x0100);
coin_counter_w(space->machine(), 1, data & 0x0200);
coin_lockout_w(space->machine(), 0, data & 0x8000);
coin_lockout_w(space->machine(), 1, data & 0x8000);
}
}
static ADDRESS_MAP_START( bloodwar, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_mcu_ram) // Shared With MCU
AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(toybox_mcu_com0_w) // To MCU ?
AM_RANGE(0x2b0000, 0x2b0001) AM_WRITE(toybox_mcu_com1_w)
AM_RANGE(0x2c0000, 0x2c0001) AM_WRITE(toybox_mcu_com2_w)
AM_RANGE(0x2d0000, 0x2d0001) AM_WRITE(toybox_mcu_com3_w)
AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers 0
AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0]) //
AM_RANGE(0x502000, 0x502fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1]) //
AM_RANGE(0x503000, 0x503fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0]) //
AM_RANGE(0x580000, 0x580fff) AM_RAM_WRITE(kaneko16_vram_3_w) AM_BASE_MEMBER(kaneko16_state, m_vram[3]) // Layers 1
AM_RANGE(0x581000, 0x581fff) AM_RAM_WRITE(kaneko16_vram_2_w) AM_BASE_MEMBER(kaneko16_state, m_vram[2]) //
AM_RANGE(0x582000, 0x582fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[3]) //
AM_RANGE(0x583000, 0x583fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[2]) //
AM_RANGE(0x600000, 0x60001f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers 0 Regs
AM_RANGE(0x680000, 0x68001f) AM_RAM_WRITE(kaneko16_layers_1_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_1_regs) // Layers 1 Regs
AM_RANGE(0x700000, 0x70001f) AM_RAM_WRITE(kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs) // Sprites Regs
AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x900000, 0x900039) AM_READWRITE(bloodwar_calc_r, bloodwar_calc_w)
AM_RANGE(0xa00000, 0xa00001) AM_READWRITE(watchdog_reset16_r, watchdog_reset16_w) // Watchdog
AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA")
AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable)
AM_RANGE(0xd00000, 0xd00001) AM_READ(toybox_mcu_status_r)
AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("oki1", bloodwar_oki_0_bank_w)
AM_RANGE(0xe80000, 0xe80001) AM_DEVWRITE("oki2", bloodwar_oki_1_bank_w)
ADDRESS_MAP_END
/***************************************************************************
Bonk's Adventure
***************************************************************************/
static WRITE16_DEVICE_HANDLER( bonkadv_oki_0_bank_w )
{
if (ACCESSING_BITS_0_7)
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(0x40000 * (data & 0xF));
logerror("%s: OKI0 bank %08X\n",device->machine().describe_context(),data);
}
}
static WRITE16_DEVICE_HANDLER( bonkadv_oki_1_bank_w )
{
if (ACCESSING_BITS_0_7)
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(0x40000 * data );
logerror("%s: OKI1 bank %08X\n",device->machine().describe_context(),data);
}
}
static ADDRESS_MAP_START( bonkadv, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_mcu_ram) // Shared With MCU
AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(toybox_mcu_com0_w) // To MCU ?
AM_RANGE(0x2b0000, 0x2b0001) AM_WRITE(toybox_mcu_com1_w)
AM_RANGE(0x2c0000, 0x2c0001) AM_WRITE(toybox_mcu_com2_w)
AM_RANGE(0x2d0000, 0x2d0001) AM_WRITE(toybox_mcu_com3_w)
AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers 0
AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0]) //
AM_RANGE(0x502000, 0x502fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1]) //
AM_RANGE(0x503000, 0x503fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0]) //
AM_RANGE(0x580000, 0x580fff) AM_RAM_WRITE(kaneko16_vram_3_w) AM_BASE_MEMBER(kaneko16_state, m_vram[3]) // Layers 1
AM_RANGE(0x581000, 0x581fff) AM_RAM_WRITE(kaneko16_vram_2_w) AM_BASE_MEMBER(kaneko16_state, m_vram[2]) //
AM_RANGE(0x582000, 0x582fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[3]) //
AM_RANGE(0x583000, 0x583fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[2]) //
AM_RANGE(0x600000, 0x60001f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers 0 Regs
AM_RANGE(0x680000, 0x68001f) AM_RAM_WRITE(kaneko16_layers_1_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_1_regs) // Layers 1 Regs
AM_RANGE(0x700000, 0x70001f) AM_RAM_WRITE(kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs) // Sprites Regs
AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x900000, 0x900015) AM_READWRITE(galpanib_calc_r,galpanib_calc_w)
AM_RANGE(0xa00000, 0xa00001) AM_READWRITE(watchdog_reset16_r, watchdog_reset16_w) // Watchdog
AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK")
AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable)
AM_RANGE(0xd00000, 0xd00001) AM_READ(toybox_mcu_status_r)
AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("oki1", bonkadv_oki_0_bank_w)
AM_RANGE(0xe80000, 0xe80001) AM_DEVWRITE("oki2", bonkadv_oki_1_bank_w)
ADDRESS_MAP_END
/***************************************************************************
Great 1000 Miles Rally
***************************************************************************/
static READ16_HANDLER( gtmr_wheel_r )
{
// check 'Controls' dip switch
switch (input_port_read(space->machine(), "DSW1") & 0x1000)
{
case 0x0000: // 'Both Sides' = 270deg Wheel
return (input_port_read(space->machine(), "WHEEL0"));
case 0x1000: // '1P Side' = 360' Wheel
return (input_port_read(space->machine(), "WHEEL1"));
default:
return (0);
}
}
static WRITE16_DEVICE_HANDLER( gtmr_oki_0_bank_w )
{
if (ACCESSING_BITS_0_7)
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base( 0x40000 * (data & 0xF) );
// logerror("CPU #0 PC %06X : OKI0 bank %08X\n",cpu_get_pc(&space->device()),data);
}
}
static WRITE16_DEVICE_HANDLER( gtmr_oki_1_bank_w )
{
if (ACCESSING_BITS_0_7)
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base( 0x40000 * (data & 0x1) );
// logerror("CPU #0 PC %06X : OKI1 bank %08X\n",cpu_get_pc(&space->device()),data);
}
}
static ADDRESS_MAP_START( gtmr_map, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0ffffd) AM_ROM // ROM
AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr_wheel_r) // Wheel Value
AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_mcu_ram) // Shared With MCU
AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(toybox_mcu_com0_w) // To MCU ?
AM_RANGE(0x2b0000, 0x2b0001) AM_WRITE(toybox_mcu_com1_w)
AM_RANGE(0x2c0000, 0x2c0001) AM_WRITE(toybox_mcu_com2_w)
AM_RANGE(0x2d0000, 0x2d0001) AM_WRITE(toybox_mcu_com3_w)
AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x310000, 0x327fff) AM_RAM //
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers 0
AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0]) //
AM_RANGE(0x502000, 0x502fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1]) //
AM_RANGE(0x503000, 0x503fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0]) //
AM_RANGE(0x580000, 0x580fff) AM_RAM_WRITE(kaneko16_vram_3_w) AM_BASE_MEMBER(kaneko16_state, m_vram[3]) // Layers 1
AM_RANGE(0x581000, 0x581fff) AM_RAM_WRITE(kaneko16_vram_2_w) AM_BASE_MEMBER(kaneko16_state, m_vram[2]) //
AM_RANGE(0x582000, 0x582fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[3]) //
AM_RANGE(0x583000, 0x583fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[2]) //
AM_RANGE(0x600000, 0x60000f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers 0 Regs
AM_RANGE(0x680000, 0x68000f) AM_RAM_WRITE(kaneko16_layers_1_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_1_regs) // Layers 1 Regs
AM_RANGE(0x700000, 0x70001f) AM_READWRITE(kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs) // Sprites Regs
AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff) // Samples
AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x900014, 0x900015) AM_READ(kaneko16_rnd_r) // Random Number ?
AM_RANGE(0xa00000, 0xa00001) AM_READWRITE(watchdog_reset16_r, watchdog_reset16_w) // Watchdog
AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK")
AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that
AM_RANGE(0xd00000, 0xd00001) AM_READ(toybox_mcu_status_r)
AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("oki1", gtmr_oki_0_bank_w) // Samples Bankswitching
AM_RANGE(0xe80000, 0xe80001) AM_DEVWRITE("oki2", gtmr_oki_1_bank_w)
ADDRESS_MAP_END
/***************************************************************************
Great 1000 Miles Rally 2
***************************************************************************/
static READ16_HANDLER( gtmr2_wheel_r )
{
switch (input_port_read(space->machine(), "DSW1") & 0x1800)
{
case 0x0000: // 270' A. Wheel
return (input_port_read(space->machine(), "WHEEL0"));
case 0x1000: // 270' D. Wheel
return (input_port_read(space->machine(), "WHEEL1") << 8);
case 0x0800: // 360' Wheel
return (input_port_read(space->machine(), "WHEEL2") << 8);
default:
logerror("gtmr2_wheel_r : read at %06x with joystick\n", cpu_get_pc(&space->device()));
return (~0);
}
}
static READ16_HANDLER( gtmr2_IN1_r )
{
return (input_port_read(space->machine(), "P2") & (input_port_read(space->machine(), "FAKE") | ~0x7100));
}
static ADDRESS_MAP_START( gtmr2_map, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0ffffd) AM_ROM // ROM
AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr2_wheel_r) // Wheel Value
AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_mcu_ram) // Shared With MCU
AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(toybox_mcu_com0_w) // To MCU ?
AM_RANGE(0x2b0000, 0x2b0001) AM_WRITE(toybox_mcu_com1_w)
AM_RANGE(0x2c0000, 0x2c0001) AM_WRITE(toybox_mcu_com2_w)
AM_RANGE(0x2d0000, 0x2d0001) AM_WRITE(toybox_mcu_com3_w)
AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x310000, 0x327fff) AM_RAM //
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers 0
AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0]) //
AM_RANGE(0x502000, 0x502fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1]) //
AM_RANGE(0x503000, 0x503fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0]) //
AM_RANGE(0x580000, 0x580fff) AM_RAM_WRITE(kaneko16_vram_3_w) AM_BASE_MEMBER(kaneko16_state, m_vram[3]) // Layers 1
AM_RANGE(0x581000, 0x581fff) AM_RAM_WRITE(kaneko16_vram_2_w) AM_BASE_MEMBER(kaneko16_state, m_vram[2]) //
AM_RANGE(0x582000, 0x582fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[3]) //
AM_RANGE(0x583000, 0x583fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[2]) //
AM_RANGE(0x600000, 0x60000f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers 0 Regs
AM_RANGE(0x680000, 0x68000f) AM_RAM_WRITE(kaneko16_layers_1_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_1_regs) // Layers 1 Regs
AM_RANGE(0x700000, 0x70001f) AM_READWRITE(kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs) // Sprites Regs
AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff) // Samples
AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x900014, 0x900015) AM_READ(kaneko16_rnd_r) // Random Number ?
AM_RANGE(0xa00000, 0xa00001) AM_READWRITE(watchdog_reset16_r, watchdog_reset16_w) // Watchdog
AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
// AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
AM_RANGE(0xb00002, 0xb00003) AM_READ(gtmr2_IN1_r)
AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM")
AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA")
AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that
AM_RANGE(0xd00000, 0xd00001) AM_READ(toybox_mcu_status_r)
AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("oki1", gtmr_oki_0_bank_w) // Samples Bankswitching
AM_RANGE(0xe80000, 0xe80001) AM_DEVWRITE("oki2", gtmr_oki_1_bank_w)
ADDRESS_MAP_END
/***************************************************************************
Magical Crystal
***************************************************************************/
static ADDRESS_MAP_START( mgcrystl, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE("ay1", kaneko16_YM2149_r, kaneko16_YM2149_w) // Sound
AM_RANGE(0x400200, 0x40021f) AM_DEVREADWRITE("ay2", kaneko16_YM2149_r, kaneko16_YM2149_w)
AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x600000, 0x600fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers 0
AM_RANGE(0x601000, 0x601fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0]) //
AM_RANGE(0x602000, 0x602fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1]) //
AM_RANGE(0x603000, 0x603fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0]) //
AM_RANGE(0x680000, 0x680fff) AM_RAM_WRITE(kaneko16_vram_3_w) AM_BASE_MEMBER(kaneko16_state, m_vram[3]) // Layers 1
AM_RANGE(0x681000, 0x681fff) AM_RAM_WRITE(kaneko16_vram_2_w) AM_BASE_MEMBER(kaneko16_state, m_vram[2]) //
AM_RANGE(0x682000, 0x682fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[3]) //
AM_RANGE(0x683000, 0x683fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[2]) //
AM_RANGE(0x700000, 0x701fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x800000, 0x80001f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers 0 Regs
AM_RANGE(0x900000, 0x90001f) AM_RAM_WRITE(kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs) // Sprites Regs
AM_RANGE(0xb00000, 0xb0001f) AM_RAM_WRITE(kaneko16_layers_1_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_1_regs) // Layers 1 Regs
AM_RANGE(0xa00000, 0xa00001) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW_P1")
AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P2")
AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("SYSTEM")
AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_eeprom_w) // EEPROM
ADDRESS_MAP_END
/***************************************************************************
Shogun Warriors
***************************************************************************/
static void kaneko16_common_oki_bank_w( running_machine& machine, const char *bankname, const char* tag, int bank, size_t fixedsize, size_t bankedsize )
{
UINT32 bankaddr;
UINT8* samples = machine.region(tag)->base();
size_t length = machine.region(tag)->bytes();
bankaddr = fixedsize + (bankedsize * bank);
if (bankaddr <= (length-bankedsize))
{
memory_set_bankptr(machine, bankname, samples + bankaddr);
}
}
static WRITE16_HANDLER( shogwarr_oki_bank_w )
{
if (ACCESSING_BITS_0_7)
{
kaneko16_common_oki_bank_w(space->machine(), "bank10", "oki1", (data >> 4) & 0xf, 0x30000, 0x10000);
kaneko16_common_oki_bank_w(space->machine(), "bank11", "oki2", (data & 0xf) , 0x00000, 0x40000);
}
}
static WRITE16_HANDLER( brapboys_oki_bank_w )
{
if (ACCESSING_BITS_0_7)
{
kaneko16_common_oki_bank_w(space->machine(), "bank10", "oki1", (data >> 4) & 0xf, 0x30000, 0x10000);
kaneko16_common_oki_bank_w(space->machine(), "bank11", "oki2", (data & 0xf) , 0x20000, 0x20000);
}
}
static ADDRESS_MAP_START( shogwarr, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_mainram) // Work RAM
AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(calc3_mcu_ram_w) AM_BASE_MEMBER(kaneko16_state, m_mcu_ram) // Shared With MCU
AM_RANGE(0x280000, 0x280001) AM_WRITE(calc3_mcu_com0_w)
AM_RANGE(0x290000, 0x290001) AM_WRITE(calc3_mcu_com1_w)
AM_RANGE(0x2b0000, 0x2b0001) AM_WRITE(calc3_mcu_com2_w)
//AM_RANGE(0x2c0000, 0x2c0001) AM_WRITE(calc3_run) // guess, might be irqack
AM_RANGE(0x2d0000, 0x2d0001) AM_WRITE(calc3_mcu_com3_w)
AM_RANGE(0x380000, 0x380fff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff) // Samples
AM_RANGE(0x480000, 0x480001) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x580000, 0x581fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x600000, 0x600fff) AM_RAM_WRITE(kaneko16_vram_1_w) AM_BASE_MEMBER(kaneko16_state, m_vram[1]) // Layers 0
AM_RANGE(0x601000, 0x601fff) AM_RAM_WRITE(kaneko16_vram_0_w) AM_BASE_MEMBER(kaneko16_state, m_vram[0])
AM_RANGE(0x602000, 0x602fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[1])
AM_RANGE(0x603000, 0x603fff) AM_RAM AM_BASE_MEMBER(kaneko16_state, m_vscroll[0])
AM_RANGE(0x800000, 0x80000f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE_MEMBER(kaneko16_state, m_layers_0_regs) // Layers 0 Regs
AM_RANGE(0x900000, 0x90001f) AM_RAM_WRITE(kaneko16_sprites_regs_w) AM_BASE_MEMBER(kaneko16_state, m_sprites_regs) // Sprites Regs
AM_RANGE(0xa00000, 0xa0007f) AM_READWRITE(bloodwar_calc_r, bloodwar_calc_w)
AM_RANGE(0xa80000, 0xa80001) AM_READWRITE(watchdog_reset16_r, watchdog_reset16_w) // Watchdog
AM_RANGE(0xb80000, 0xb80001) AM_READ_PORT("P1")
AM_RANGE(0xb80002, 0xb80003) AM_READ_PORT("P2")
AM_RANGE(0xb80004, 0xb80005) AM_READ_PORT("SYSTEM")
AM_RANGE(0xb80006, 0xb80007) AM_READ_PORT("UNK")
AM_RANGE(0xd00000, 0xd00001) AM_NOP // ? (bit 0)
AM_RANGE(0xe00000, 0xe00001) AM_WRITE(shogwarr_oki_bank_w) // Samples Bankswitching
ADDRESS_MAP_END
/***************************************************************************
Memory Maps - Sound CPU
***************************************************************************/
/***************************************************************************
Blaze On
***************************************************************************/
static ADDRESS_MAP_START( blazeon_soundmem, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( blazeon_soundport, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
AM_RANGE(0x06, 0x06) AM_READ(soundlatch_r)
ADDRESS_MAP_END
/***************************************************************************
Input Ports
***************************************************************************/
/***************************************************************************
Bakuretsu Breaker
***************************************************************************/
static INPUT_PORTS_START( bakubrkr )
PORT_START("P1") /* e00000.w */
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0002, IP_ACTIVE_LOW, "SW1:2" )
/* All other game settings done through the test mode */
PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:3" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW1:4" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW1:5" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:6" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW1:7" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW1:8" ) /* Listed as "Unused" */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2") /* e00002.b */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM") /* e00004.b */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT ) // pause
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("UNK") /* Seems unused ! - e00006.b */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START( "EEPROMOUT" )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_clock_line)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, write_bit)
INPUT_PORTS_END
/***************************************************************************
The Berlin Wall (set 1)
***************************************************************************/
static INPUT_PORTS_START( berlwall )
PORT_START("P1") /* 680000.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2") /* 680002.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM") /* 680000.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("UNK") /* ? - 680006.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1") /*$200018.b <- ! $80001d.b */
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW1:2" ) /* Listed as "Unused" */
PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:3,4,5")
PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x10, DEF_STR( 1C_4C ) )
PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:6,7,8")
PORT_DIPSETTING( 0x60, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x40, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x20, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) )
PORT_START("DSW2") /* $200019.b <- $80001f.b */
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4") // 1p lives at 202982.b
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x04, "5" )
PORT_DIPSETTING( 0x00, "7" )
PORT_DIPNAME( 0x30, 0x30, "Country" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x30, "England" )
PORT_DIPSETTING( 0x20, "Italy" )
PORT_DIPSETTING( 0x10, "Germany" )
PORT_DIPSETTING( 0x00, "Freeze Screen" ) // Not documented
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x80, IP_ACTIVE_LOW, "SW2:8" )
INPUT_PORTS_END
/***************************************************************************
The Berlin Wall (set 2)
***************************************************************************/
// Same as berlwall, but for a different lives setting
static INPUT_PORTS_START( berlwalt )
PORT_INCLUDE(berlwall)
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x0c, "2" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x04, "5" )
INPUT_PORTS_END
/***************************************************************************
Blaze On
***************************************************************************/
static INPUT_PORTS_START( blazeon )
PORT_START("DSW2_P1") /* c00000.w */
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x0000, "2" )
PORT_DIPSETTING( 0x000c, "3" )
PORT_DIPSETTING( 0x0008, "4" )
PORT_DIPSETTING( 0x0004, "5" )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW2:8" )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_START("DSW1_P2") /* c00002.w */
PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPSETTING( 0x0007, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0005, "6 Coins/3 Credits" )
PORT_DIPSETTING( 0x0009, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0004, DEF_STR( 4C_3C ) )
PORT_DIPSETTING( 0x000f, DEF_STR( 1C_1C ) )
// PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0003, "5 Coins/6 Credits" )
PORT_DIPSETTING( 0x0002, DEF_STR( 4C_5C ) )
PORT_DIPSETTING( 0x0006, DEF_STR( 2C_3C ) )
// PORT_DIPSETTING( 0x0001, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x000e, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x000d, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x000c, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x000b, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x000a, DEF_STR( 1C_6C ) )
PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
PORT_DIPSETTING( 0x0070, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x0080, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0050, "6 Coins/3 Credits" )
PORT_DIPSETTING( 0x0090, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0040, DEF_STR( 4C_3C ) )
PORT_DIPSETTING( 0x00f0, DEF_STR( 1C_1C ) )
// PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0030, "5 Coins/6 Credits" )
PORT_DIPSETTING( 0x0020, DEF_STR( 4C_5C ) )
PORT_DIPSETTING( 0x0060, DEF_STR( 2C_3C ) )
// PORT_DIPSETTING( 0x0010, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x00e0, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x00d0, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x00b0, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00a0, DEF_STR( 1C_6C ) )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_START("UNK") /* ? - c00004.w */
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
PORT_START("SYSTEM") /* c00006.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE_NO_TOGGLE( 0x2000, IP_ACTIVE_LOW )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE1 )
INPUT_PORTS_END
/***************************************************************************
Blood Warrior
***************************************************************************/
static INPUT_PORTS_START( bloodwar )
PORT_START("P1") /* b0000.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_START("P2") /* b0002.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM") /* b0004.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE2 ) // tested
PORT_START("EXTRA") /* ? - b0006.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) // tested
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1") /* from the MCU - $10497e.b <- $208000.b */
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0200, IP_ACTIVE_LOW, "SW1:2" )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5,6")
PORT_DIPSETTING( 0x3800, "1 Easy" )
PORT_DIPSETTING( 0x3000, "2" )
PORT_DIPSETTING( 0x2800, "3" )
PORT_DIPSETTING( 0x2000, "4" )
PORT_DIPSETTING( 0x1800, "5" )
PORT_DIPSETTING( 0x1000, "6" )
PORT_DIPSETTING( 0x0800, "7" )
PORT_DIPSETTING( 0x0000, "8 Hard" )
PORT_DIPNAME( 0x4000, 0x4000, "Can Join During Game" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Yes ) )
PORT_DIPNAME( 0x8000, 0x8000, "Start 2 Credits/Continue 1 Credit" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x8000, DEF_STR( No ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) )
INPUT_PORTS_END
/***************************************************************************
Bonk's Adventure
***************************************************************************/
static INPUT_PORTS_START( bonkadv )
PORT_START("P1") /* b0000.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_START("P2") /* b0002.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_START("SYSTEM") /* b0004.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE2 )
PORT_START("UNK") /* ? - b0006.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1") /* from the MCU - $10019e.b <- $200200.b */
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, "Ticket dispenser" ) /* "Reserved" for Japan/Europe */
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x0000, "Title Level Display" )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, "Reserved" )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, "Reserved" )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE( 0x8000, IP_ACTIVE_LOW )
INPUT_PORTS_END
/***************************************************************************
Great 1000 Miles Rally
***************************************************************************/
static INPUT_PORTS_START( gtmr )
PORT_START("P1") /* b0000.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // swapped for consistency:
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // button1 is usually accel.
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2") /* b0002.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) // swapped for consistency:
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) // button1 is usually accel.
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM") /* b0004.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("UNK") /* Seems unused ! - b0006.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1") /* from the MCU - 101265.b <- 206000.b */
PORT_SERVICE_DIPLOC( 0x0100, IP_ACTIVE_LOW, "SW1:1" )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x0400, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Controller ) ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x0800, DEF_STR( Joystick ) )
PORT_DIPSETTING( 0x0000, "Wheel" )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x1000, "1P Side" ) PORT_CONDITION("DSW1",0x0800,PORTCOND_NOTEQUALS,0x00)
PORT_DIPSETTING( 0x0000, "Both Sides" ) PORT_CONDITION("DSW1",0x0800,PORTCOND_NOTEQUALS,0x00)
PORT_DIPSETTING( 0x1000, "360 degree wheel" ) PORT_CONDITION("DSW1",0x0800,PORTCOND_EQUALS,0x00)
PORT_DIPSETTING( 0x0000, "270 degree wheel" ) PORT_CONDITION("DSW1",0x0800,PORTCOND_EQUALS,0x00)
PORT_DIPNAME( 0x2000, 0x2000, "Use Brake" ) PORT_DIPLOCATION("SW1:6") /* Valid only when joystick is used */
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
PORT_DIPNAME( 0xc000, 0xc000, "National Anthem & Flag" ) PORT_DIPLOCATION("SW1:7,8")
PORT_DIPSETTING( 0xc000, "Use Memory" )
PORT_DIPSETTING( 0x8000, "Anthem Only" )
PORT_DIPSETTING( 0x4000, "Flag Only" )
PORT_DIPSETTING( 0x0000, DEF_STR( None ) )
PORT_START("WHEEL0") /* Wheel (270deg) - 100015.b <- ffffe.b */
PORT_BIT ( 0x00ff, 0x0080, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(25)
PORT_START("WHEEL1") /* Wheel (360deg) */
PORT_BIT ( 0x00ff, 0x0000, IPT_DIAL ) PORT_SENSITIVITY(70) PORT_KEYDELTA(25) PORT_PLAYER(1)
INPUT_PORTS_END
/***************************************************************************
Great 1000 Miles Rally 2
***************************************************************************/
static INPUT_PORTS_START( gtmr2 )
PORT_START("P1") /* 100004.w <- b00000.w (cpl) */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // swapped for consistency:
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // button1 is usually accel.
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2") /* 10000c.w <- b00002.w (cpl) - for "test mode" only */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) // swapped for consistency:
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) // button1 is usually accel.
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM") /* 100014.w <- b00004.w (cpl) */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) // only in "test mode"
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("EXTRA") /* 100017.w <- b00006.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("IN 3-6") // Code at 0x002236 - Centers 270D wheel ?
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1") /* from the MCU - 1016f7.b <- 206000.b */
PORT_DIPNAME( 0x0700, 0x0700, "Linked Operation Board Number" ) PORT_DIPLOCATION("SW1:6,7,8")
PORT_DIPSETTING( 0x0700, "No Communication" )
PORT_DIPSETTING( 0x0600, "Board #1" )
PORT_DIPSETTING( 0x0500, "Board #2" )
PORT_DIPSETTING( 0x0400, "Board #3" )
PORT_DIPSETTING( 0x0300, "Board #4" )
/* 0x0000 to 0x0200 : "Machine 4"
PORT_DIPSETTING( 0x0200, "Machine 4 (0x0200)" )
PORT_DIPSETTING( 0x0100, "Machine 4 (0x0100)" )
PORT_DIPSETTING( 0x0000, "Machine 4 (0x0000)" )
*/
PORT_DIPNAME( 0x1800, 0x1800, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW1:4,5")
PORT_DIPSETTING( 0x1800, DEF_STR( Joystick ) )
PORT_DIPSETTING( 0x0800, "Wheel (360)" ) // Not working correctly in race }
PORT_DIPSETTING( 0x1000, "Wheel (270D)" ) // Not working correctly ! } seems to work ok to me! (minwah)
PORT_DIPSETTING( 0x0000, "Wheel (270A)" ) // Not working correctly in race }
PORT_DIPNAME( 0x2000, 0x2000, "Optional Mode Of Pedal Function" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x2000, "Microswitch" ) // "This mode also corresponds to the two buttons used with joystick."
PORT_DIPSETTING( 0x0000, "Potentiometer" ) // Not implemented yet
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW1:1" )
PORT_START("WHEEL0") /* Wheel (270A) - 100019.b <- fffff.b */
PORT_BIT ( 0x00ff, 0x0080, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(1)
PORT_START("WHEEL1") /* Wheel (270D) - 100019.b <- ffffe.b */
PORT_BIT ( 0x00ff, 0x0080, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(1)
PORT_START("WHEEL2") /* Wheel (360) - 100019.b <- ffffe.b */
PORT_BIT( 0x00ff, 0x0000, IPT_DIAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_LEFT) PORT_CODE_INC(KEYCODE_RIGHT)
PORT_START("FAKE") /* Fake P2 - To be pressed during boot sequence - Code at 0x000c9e */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("IN 1-0") PORT_CODE(KEYCODE_H) // "sound test"
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("IN 1-4") PORT_CODE(KEYCODE_J) // "view tiles"
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("IN 1-5") PORT_CODE(KEYCODE_K) // "view memory"
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("IN 1-6") PORT_CODE(KEYCODE_L) // "view sprites ?"
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Magical Crystal
***************************************************************************/
static INPUT_PORTS_START( mgcrystl )
PORT_START("DSW_P1") /* c00000.w */
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_SERVICE_DIPLOC( 0x0002, IP_ACTIVE_LOW, "SW1:2" )
/* All other game settings done through the test mode */
PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:3" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW1:4" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW1:5" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:6" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW1:7" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW1:8" ) /* Listed as "Unused" */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2") /* c00002.b */
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM") /* c00004.b */
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START( "EEPROMOUT" )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_clock_line)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, write_bit)
INPUT_PORTS_END
/***************************************************************************
Shogun Warriors
***************************************************************************/
static INPUT_PORTS_START( shogwarr )
PORT_START("P1") /* b80000.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START("P2") /* b80002.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_START("SYSTEM") /* b80004.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("UNK") /* ? - b80006.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1") /* from the MCU - 102e15.b <- 200059.b */
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x02, IP_ACTIVE_LOW, "SW1:2" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
PORT_DIPNAME( 0x38, 0x38, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5,6")
PORT_DIPSETTING( 0x38, "1 Easy" )
PORT_DIPSETTING( 0x30, "2" )
PORT_DIPSETTING( 0x28, "3" )
PORT_DIPSETTING( 0x20, "4 Normal" )
PORT_DIPSETTING( 0x18, "5" )
PORT_DIPSETTING( 0x10, "6" )
PORT_DIPSETTING( 0x08, "7" )
PORT_DIPSETTING( 0x00, "8 Hard" )
PORT_DIPNAME( 0x40, 0x40, "Can Join During Game" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // 2 credits winner vs computer
PORT_DIPSETTING( 0x40, DEF_STR( On ) ) // 1 credit game over
PORT_DIPNAME( 0x80, 0x80, "Continue Coin" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "EEPROMOUT" )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_clock_line)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, write_bit)
INPUT_PORTS_END
static INPUT_PORTS_START( brapboys )
PORT_START("P1") /* b80000.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START("P2") /* b80002.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_START("SYSTEM") /* b80004.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_START("UNK") /* ? - b80006.w */
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x02, IP_ACTIVE_LOW, "SW1:2" )
PORT_DIPNAME( 0x04, 0x04, "Switch Test" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC(0x08, 0x08, "SW1:4" )
PORT_DIPNAME( 0x10, 0x10, "Coin Slots" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "Separate Coins" )
PORT_DIPSETTING( 0x00, "Shared Coins" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Players ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "3" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard) )
/*****************************************************
Difficulty Lives Bonus Players Play Level
Easy 3 every 1000 / 2000 Level 2
Normal 2 every 2000 / 3000 Level 3
Hard 2 every 3000 / 4000 Level 4
Very Hard 1 --- NONE --- Level 6
******************************************************/
PORT_START( "EEPROMOUT" )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_clock_line)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, write_bit)
INPUT_PORTS_END
/***************************************************************************
Graphics Layouts
***************************************************************************/
/*
16x16x4 made of 4 8x8x4 blocks arrenged like: 01
(nibbles are swapped for tiles, not for sprites) 23
*/
static const gfx_layout layout_16x16x4 =
{
16,16,
RGN_FRAC(1,1),
4,
{ STEP4(0,1) },
{ STEP8(8*8*4*0,4), STEP8(8*8*4*1,4) },
{ STEP8(8*8*4*0,8*4), STEP8(8*8*4*2,8*4) },
16*16*4
};
/*
16x16x8 made of 4 8x8x8 blocks arrenged like: 01
23
*/
static const gfx_layout layout_16x16x8 =
{
16,16,
RGN_FRAC(1,1),
8,
{ STEP8(0,1) },
{ STEP8(0,8), STEP8(8*8*8*1,8) },
{ STEP8(0,8*8), STEP8(8*8*8*2,8*8) },
16*16*8
};
static GFXDECODE_START( 1x4bit_1x4bit )
GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 0, 0x40 ) // [0] Sprites
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 0x40 * 16, 0x40 ) // [1] Layers
GFXDECODE_END
static GFXDECODE_START( 1x4bit_2x4bit )
GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 0, 0x40 ) // [0] Sprites
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 0x40 * 16, 0x40 ) // [1] Layers
GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x4, 0x40 * 16, 0x40 ) // [2] Layers
GFXDECODE_END
static GFXDECODE_START( 1x8bit_2x4bit )
GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x40 * 256, 0x40 ) // [0] Sprites
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 0, 0x40 ) // [1] Layers
GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x4, 0, 0x40 ) // [2] Layers
GFXDECODE_END
/***************************************************************************
Machine Drivers
***************************************************************************/
#define KANEKO16_INTERRUPTS_NUM 3
static INTERRUPT_GEN( kaneko16_interrupt )
{
switch ( cpu_getiloops(device) )
{
case 2: device_set_input_line(device, 3, HOLD_LINE); break;
case 1: device_set_input_line(device, 4, HOLD_LINE); break;
case 0: device_set_input_line(device, 5, HOLD_LINE); break;
}
}
static const ay8910_interface ay8910_intf_dsw =
{
AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS,
DEVCB_INPUT_PORT("DSW1"),
DEVCB_INPUT_PORT("DSW2"),
DEVCB_NULL,
DEVCB_NULL,
};
static WRITE8_DEVICE_HANDLER( kaneko16_eeprom_reset_w )
{
// FIXME: the device line cannot be directly put in the interface due to inverse value!
// we might want to define a "reversed" set_cs_line handler
eeprom_device *eeprom = device->machine().device<eeprom_device>("eeprom");
// reset line asserted: reset.
eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE );
}
static const ay8910_interface ay8910_intf_eeprom =
{
AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS,
DEVCB_DEVICE_LINE_MEMBER("eeprom", eeprom_device, read_bit), /* inputs A: 0,EEPROM bit read */
DEVCB_NULL, /* inputs B */
DEVCB_NULL, /* outputs A */
DEVCB_HANDLER(kaneko16_eeprom_reset_w) /* outputs B: 0,EEPROM reset */
};
/***************************************************************************
The Berlin Wall
***************************************************************************/
/*
Berlwall interrupts:
1-3] e8c:
4] e54:
5] de4:
6-7] rte
*/
static MACHINE_CONFIG_START( berlwall, kaneko16_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, 12000000) /* MC68000P12 */
MCFG_CPU_PROGRAM_MAP(berlwall)
MCFG_CPU_VBLANK_INT_HACK(kaneko16_interrupt,KANEKO16_INTERRUPTS_NUM)
MCFG_MACHINE_RESET(berlwall)
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) // mangled sprites otherwise
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
MCFG_SCREEN_UPDATE(berlwall)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048 + 32768) /* 32768 static colors for the bg */
MCFG_PALETTE_INIT(berlwall)
MCFG_VIDEO_START(berlwall)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ay1", YM2149, 1000000)
MCFG_SOUND_CONFIG(ay8910_intf_dsw)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ADD("ay2", YM2149, 1000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MCFG_OKIM6295_ADD("oki", 12000000/6, OKIM6295_PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MACHINE_CONFIG_END
/***************************************************************************
Bakuretsu Breaker
***************************************************************************/
static MACHINE_CONFIG_START( bakubrkr, kaneko16_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(bakubrkr)
MCFG_CPU_VBLANK_INT_HACK(kaneko16_interrupt,KANEKO16_INTERRUPTS_NUM)
MCFG_MACHINE_RESET(bakubrkr)
MCFG_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) // mangled sprites otherwise
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
MCFG_SCREEN_UPDATE(kaneko16)
MCFG_GFXDECODE(1x4bit_2x4bit)
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(kaneko16_2xVIEW2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ay1", YM2149, XTAL_12MHz/6) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_SOUND_ADD("ay2", YM2149, XTAL_12MHz/6) /* verified on pcb */
MCFG_SOUND_CONFIG(ay8910_intf_eeprom)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, OKIM6295_PIN7_HIGH) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
/***************************************************************************
Blaze On
***************************************************************************/
/*
Blaze On:
1] busy loop
2] does nothing
3] rte
4] drives the game
5] == 2
6-7] busy loop
*/
static MACHINE_CONFIG_START( blazeon, kaneko16_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000,12000000) /* TMP68HC000-12 */
MCFG_CPU_PROGRAM_MAP(blazeon)
MCFG_CPU_VBLANK_INT_HACK(kaneko16_interrupt,KANEKO16_INTERRUPTS_NUM)
MCFG_CPU_ADD("audiocpu", Z80,4000000) /* D780C-2 */
MCFG_CPU_PROGRAM_MAP(blazeon_soundmem)
MCFG_CPU_IO_MAP(blazeon_soundport)
MCFG_MACHINE_RESET(blazeon)
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1 -8)
MCFG_SCREEN_UPDATE(kaneko16)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(kaneko16_1xVIEW2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
/***************************************************************************
Great 1000 Miles Rally
***************************************************************************/
/*
gtmr interrupts:
3] 476: time, input ports, scroll registers
4] 466->258e: set sprite ram
5] 438: set sprite colors
VIDEO_UPDATE_AFTER_VBLANK fixes the mangled/wrong colored sprites
*/
static MACHINE_CONFIG_START( gtmr, kaneko16_state )
/* basic machine hardware */
MCFG_CPU_ADD("gtmr", M68000, XTAL_16MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(gtmr_map)
MCFG_CPU_VBLANK_INT_HACK(kaneko16_interrupt,KANEKO16_INTERRUPTS_NUM)
MCFG_MACHINE_RESET(gtmr)
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
MCFG_SCREEN_UPDATE(kaneko16)
MCFG_GFXDECODE(1x8bit_2x4bit)
MCFG_PALETTE_LENGTH(32768)
MCFG_VIDEO_START(kaneko16_2xVIEW2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/8, OKIM6295_PIN7_LOW) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/8, OKIM6295_PIN7_LOW) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
MACHINE_CONFIG_END
/***************************************************************************
Blood Warrior
***************************************************************************/
static MACHINE_CONFIG_DERIVED( bloodwar, gtmr )
/* basic machine hardware */
MCFG_CPU_MODIFY("gtmr")
MCFG_CPU_PROGRAM_MAP(bloodwar)
MCFG_MACHINE_RESET( bloodwar )
MACHINE_CONFIG_END
/***************************************************************************
Great 1000 Miles Rally 2
***************************************************************************/
static MACHINE_CONFIG_DERIVED( gtmr2, gtmr )
/* basic machine hardware */
MCFG_CPU_MODIFY("gtmr")
MCFG_CPU_PROGRAM_MAP(gtmr2_map)
MACHINE_CONFIG_END
/***************************************************************************
Bonk's Adventure
***************************************************************************/
/*
Even though 3 interrupts are triggered, I set an int_num of 4. (notice '+1')
I agree that it is kind of a misuse of the function, but I haven't found
clues in code on how interrupts are scheduled...
IT5 is the main int, and needs more time to execute than IT 3 and 4.
Between other things, each of these 2 int are responsible of translating
a part of sprite buffer from work ram to sprite ram.
So now test mode is fully working and visible.
SebV
*/
static MACHINE_CONFIG_DERIVED( bonkadv, gtmr )
/* basic machine hardware */
MCFG_CPU_MODIFY("gtmr")
MCFG_CPU_PROGRAM_MAP(bonkadv)
MCFG_CPU_VBLANK_INT_HACK(kaneko16_interrupt,KANEKO16_INTERRUPTS_NUM + 1 ) // comment above
MCFG_MACHINE_RESET( bonkadv )
MACHINE_CONFIG_END
/***************************************************************************
Magical Crystal
***************************************************************************/
static MACHINE_CONFIG_START( mgcrystl, kaneko16_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(mgcrystl)
MCFG_CPU_VBLANK_INT_HACK(kaneko16_interrupt,KANEKO16_INTERRUPTS_NUM)
MCFG_MACHINE_RESET(mgcrystl)
MCFG_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
MCFG_SCREEN_UPDATE(kaneko16)
MCFG_GFXDECODE(1x4bit_2x4bit)
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(kaneko16_2xVIEW2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ay1", YM2149, XTAL_12MHz/6) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_SOUND_ADD("ay2", YM2149, XTAL_12MHz/6) /* verified on pcb */
MCFG_SOUND_CONFIG(ay8910_intf_eeprom)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, OKIM6295_PIN7_HIGH) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
/***************************************************************************
Shogun Warriors
***************************************************************************/
/*
shogwarr interrupts:
2] 100: rte
3] 102:
4] 136:
movem.l D0-D7/A0-A6, -(A7)
movea.l $207808.l, A0 ; from mcu?
jmp ($4,A0)
other: busy loop
*/
#define SHOGWARR_INTERRUPTS_NUM 3
static INTERRUPT_GEN( shogwarr_interrupt )
{
//kaneko16_state *state = device->machine().driver_data<kaneko16_state>();
switch ( cpu_getiloops(device) )
{
case 2: device_set_input_line(device, 2, HOLD_LINE); break;
case 1: device_set_input_line(device, 3, HOLD_LINE); break;
// the code for this interrupt is provided by the MCU..
case 0: device_set_input_line(device, 4, HOLD_LINE);
calc3_mcu_run(device->machine());
break;
#if 0
case 0:
{
// hack, clear this ram address to get into test mode (interrupt would clear it)
if (state->mainram[0x2dfe/2]==0xff00)
{
state->mainram[0x2dfe/2]=0x0000;
}
}
#endif
}
}
/*
static const UINT16 shogwarr_default_eeprom[64] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x4B41, 0x4E45, 0x4B4F, 0x2F41, 0x544F, 0x5020, 0x3139, 0x3932,
0x4655, 0x4A49, 0xFFFF, 0x4D41, 0x2042, 0x5553, 0x5445, 0x5220,
0x2053, 0x484F, 0xFFFF, 0x4E20, 0x5741, 0x5252, 0x494F, 0x5253,
0xFFFF, 0x7079, 0x7269, 0xFFFF, 0x7420, 0x4B41, 0x4E45, 0x4B4F,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,
0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0xFFFF
};
*/
// the above eeprom looks corrupt, some of the text is wrong, the game never writes this text tho.. maybe it should be as below
// leaving both here incase they relate to which tables get 'locked out' by the MCU somehow
static const UINT16 shogwarr_default_eeprom[64] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x4B41, 0x4E45, 0x4B4F, 0x2F41, 0x544F, 0x5020, 0x3139, 0x3932,
0x4655, 0x4A49, 0x5941, 0x4D41, 0x2042, 0x5553, 0x5445, 0x5220,
0x2053, 0x484F, 0x4755, 0x4E20, 0x5741, 0x5252, 0x494F, 0x5253,
0x636F, 0x7079, 0x7269, 0x6768, 0x7420, 0x4B41, 0x4E45, 0x4B4F,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,
0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0xFFFF
};
static ADDRESS_MAP_START( shogwarr_oki1_map, AS_0, 8 )
AM_RANGE(0x00000, 0x2ffff) AM_ROM
AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("bank10")
ADDRESS_MAP_END
static ADDRESS_MAP_START( shogwarr_oki2_map, AS_0, 8 )
AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("bank11")
ADDRESS_MAP_END
static MACHINE_CONFIG_START( shogwarr, kaneko16_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz)
MCFG_CPU_PROGRAM_MAP(shogwarr)
MCFG_CPU_VBLANK_INT_HACK(shogwarr_interrupt,SHOGWARR_INTERRUPTS_NUM)
MCFG_MACHINE_RESET(shogwarr)
MCFG_EEPROM_93C46_ADD("eeprom")
MCFG_EEPROM_DATA(shogwarr_default_eeprom, 128)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1854)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(40, 296-1, 16, 240-1)
MCFG_SCREEN_UPDATE(kaneko16)
MCFG_GFXDECODE(1x4bit_1x4bit)
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(kaneko16_1xVIEW2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/8, OKIM6295_PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_DEVICE_ADDRESS_MAP(AS_0, shogwarr_oki1_map)
MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/8, OKIM6295_PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_DEVICE_ADDRESS_MAP(AS_0, shogwarr_oki2_map)
MACHINE_CONFIG_END
static const UINT16 brapboys_default_eeprom[64] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0005, 0x0006, 0x2030, 0x0003, 0x6818, 0x0101, 0x0101,
0x0101, 0x0001, 0x0004, 0x0008, 0x4B41, 0x4E45, 0x4B4F, 0x2020,
0x4265, 0x2052, 0x6170, 0x2042, 0x6F79, 0x7300, 0x3030, 0x302E,
0x3038, 0x10FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0035, 0xFFFF, 0xFFFF, 0xFFFF
};
static ADDRESS_MAP_START( brapboys_oki2_map, AS_0, 8 )
AM_RANGE(0x00000, 0x1ffff) AM_ROM
AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("bank11")
ADDRESS_MAP_END
static MACHINE_CONFIG_DERIVED( brapboys, shogwarr )
MCFG_SOUND_MODIFY("oki2")
MCFG_DEVICE_ADDRESS_MAP(AS_0, brapboys_oki2_map)
MCFG_DEVICE_REMOVE("eeprom")
MCFG_EEPROM_93C46_ADD("eeprom")
MCFG_EEPROM_DATA(brapboys_default_eeprom, 128)
MACHINE_CONFIG_END
/***************************************************************************
ROMs Loading
***************************************************************************/
/*
Sprites and tiles are stored in the ROMs using the same layout. But tiles
have the even and odd pixels swapped. So we use this function to untangle
them and have one single gfxlayout for both tiles and sprites.
*/
static void kaneko16_unscramble_tiles(running_machine &machine, const char *region)
{
UINT8 *RAM = machine.region(region)->base();
int size = machine.region(region)->bytes();
int i;
if (RAM == NULL) return;
for (i = 0; i < size; i ++)
{
RAM[i] = ((RAM[i] & 0xF0)>>4) + ((RAM[i] & 0x0F)<<4);
}
}
static void kaneko16_expand_sample_banks(running_machine &machine, const char *region)
{
/* The sample data for the first OKI has an address translator/
banking register in it that munges the addresses as follows:
Offsets 00000-2FFFF always come from ROM 00000-2FFFF
Offsets 30000-3FFFF come from ROM (10000*bank) + 00000-0FFFF
Because we can't do this dynamically, we pre-generate all 16
possible combinations of these and swap between them.
*/
int bank;
UINT8 *src0;
if (machine.region(region)->bytes() < 0x40000 * 16)
fatalerror("gtmr SOUND1 region too small");
/* bank 0 maps to itself, so we just leave it alone */
src0 = machine.region(region)->base();
for (bank = 15; bank > 0; bank--)
{
UINT8 *srcn = src0 + 0x10000 * (bank < 3 ? 3 : bank);
UINT8 *dst = src0 + 0x40000 * bank;
memcpy(dst + 0x30000, srcn + 0x00000, 0x10000);
memcpy(dst + 0x00000, src0 + 0x00000, 0x30000);
}
}
static DRIVER_INIT( kaneko16 )
{
kaneko16_unscramble_tiles(machine, "gfx2");
kaneko16_unscramble_tiles(machine, "gfx3");
}
static DRIVER_INIT( berlwall )
{
kaneko16_unscramble_tiles(machine, "gfx2");
}
static DRIVER_INIT( samplebank )
{
kaneko16_unscramble_tiles(machine, "gfx2");
kaneko16_unscramble_tiles(machine, "gfx3");
kaneko16_expand_sample_banks(machine, "oki1");
}
/***************************************************************************
Bakuretsu Breaker
USES TOSHIBA 68000 CPU W/TWO YM2149 & OKI M6295 FOR SOUND
LOCATION TYPE
------------------
U38 27C040
U37 "
U36 27C020
U19 "
U18 "
Bakuretsu Breaker / Explosive Breaker
Kaneko, 1992
PCB Layout
----------
ZOOFC-02
|------------------------------------------|
| PAL TS020.U33 PAL |
| 6264 6264 |
| 6264 VIEW2-CHIP 6264 |
| 4464 4464 VIEW2-CHIP TS010.U4 |
| 4464 4464 |
| 4464 4464 699206P |
| 5116 (QFP44) |
| |
| TS002J.U36 MUX2-CHIP 699205P |
|VU-002 TS001J.U37 5116 (QFP44) J|
|(QFP160) TS000J.U38 A|
| 62256 TS100J.U18 M|
| 6116 6116 62256 TS101J.U19 M|
| PAL PAL A|
|16MHz PAL PAL TMP68HC000N-12 |
|12MHz PAL IU-001 |
| VU-001 (QFP44) |
| (QFP48) YM2149 PAL |
|93C46 YM2149 TS030.U5 M6295 |
| DSW1(4) |
|------------------------------------------|
Notes:
68000 clock: 12.000MHz
YM2149 clock: 2.000MHz
M6295 clock: 2.000MHz, sample rate = clock /132
VSync: 59Hz
HSync: 15.68kHz
***************************************************************************/
ROM_START( explbrkr )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "ts100e.u18", 0x000000, 0x040000, CRC(cc84a985) SHA1(1732a607cc1f894dd45cfc915dfe0407335f0073) )
ROM_LOAD16_BYTE( "ts101e.u19", 0x000001, 0x040000, CRC(88f4afb7) SHA1(08b8efd6bd935bc1b8cf9753d58b38ccf9a70b4d) )
/* these actually match the other set but have different names on the board..*/
ROM_REGION( 0x240000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "ts001e.u37", 0x000000, 0x080000, CRC(70b66e7e) SHA1(307ba27b623f67ee4b4023179870c270bac8ea22) )
ROM_RELOAD( 0x100000, 0x080000 )
ROM_LOAD( "ts000e.u38", 0x080000, 0x080000, CRC(a7a94143) SHA1(d811a7597402c161850ddf98cdb00661ea506c7d) )
ROM_RELOAD( 0x180000, 0x080000 )
ROM_LOAD( "ts002e.u36", 0x200000, 0x040000, CRC(611271e6) SHA1(811c21822b074fbb4bb809fed29d48bbd51d57a0) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* Tiles */
ROM_LOAD( "ts010.u4", 0x000000, 0x100000, CRC(df935324) SHA1(73b7aff8800a4e88a47ad426190b73dabdfbf142) )
ROM_REGION( 0x100000, "gfx3", 0 ) /* Tiles */
ROM_LOAD( "ts020.u33", 0x000000, 0x100000, CRC(eb58c35d) SHA1(762c5219de6f729a0fc1df90fce09cdf711c2a1e) )
ROM_REGION( 0x100000, "user1", 0 ) /* OKI Sample ROM */
ROM_LOAD( "ts030.u5", 0x000000, 0x100000, CRC(1d68e9d1) SHA1(aaa64a8e8d7cd7f91d2be346fafb9d1f29b40eda) )
/* $00000-$20000 stays the same in all sound banks, */
/* the second half of the bank is what gets switched */
ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
ROM_COPY( "user1", 0x000000, 0x000000, 0x020000)
ROM_COPY( "user1", 0x020000, 0x020000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x040000, 0x020000)
ROM_COPY( "user1", 0x040000, 0x060000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x080000, 0x020000)
ROM_COPY( "user1", 0x060000, 0x0a0000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x0c0000, 0x020000)
ROM_COPY( "user1", 0x080000, 0x0e0000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x100000, 0x020000)
ROM_COPY( "user1", 0x0a0000, 0x120000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x140000, 0x020000)
ROM_COPY( "user1", 0x0c0000, 0x160000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x180000, 0x020000)
ROM_COPY( "user1", 0x0e0000, 0x1a0000, 0x020000)
ROM_FILL( 0x1c0000, 0x020000, 0x00 )
ROM_FILL( 0x1e0000, 0x020000, 0x00 )
ROM_END
ROM_START( bakubrkr )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "ts100j.u18", 0x000000, 0x040000, CRC(8cc0a4fd) SHA1(e7e18b5ea236522a79ba9db8f573ac8f7ade504b) )
ROM_LOAD16_BYTE( "ts101j.u19", 0x000001, 0x040000, CRC(aea92195) SHA1(e89f964e7e936fd7774f21956eb4ff5c9104837b) )
ROM_REGION( 0x240000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "ts001j.u37", 0x000000, 0x080000, CRC(70b66e7e) SHA1(307ba27b623f67ee4b4023179870c270bac8ea22) )
ROM_RELOAD( 0x100000, 0x080000 )
ROM_LOAD( "ts000j.u38", 0x080000, 0x080000, CRC(a7a94143) SHA1(d811a7597402c161850ddf98cdb00661ea506c7d) )
ROM_RELOAD( 0x180000, 0x080000 )
ROM_LOAD( "ts002j.u36", 0x200000, 0x040000, CRC(611271e6) SHA1(811c21822b074fbb4bb809fed29d48bbd51d57a0) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* Tiles */
ROM_LOAD( "ts010.u4", 0x000000, 0x100000, CRC(df935324) SHA1(73b7aff8800a4e88a47ad426190b73dabdfbf142) )
ROM_REGION( 0x100000, "gfx3", 0 ) /* Tiles */
ROM_LOAD( "ts020.u33", 0x000000, 0x100000, CRC(eb58c35d) SHA1(762c5219de6f729a0fc1df90fce09cdf711c2a1e) )
ROM_REGION( 0x100000, "user1", 0 ) /* OKI Sample ROM */
ROM_LOAD( "ts030.u5", 0x000000, 0x100000, CRC(1d68e9d1) SHA1(aaa64a8e8d7cd7f91d2be346fafb9d1f29b40eda) )
/* $00000-$20000 stays the same in all sound banks, */
/* the second half of the bank is what gets switched */
ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
ROM_COPY( "user1", 0x000000, 0x000000, 0x020000)
ROM_COPY( "user1", 0x020000, 0x020000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x040000, 0x020000)
ROM_COPY( "user1", 0x040000, 0x060000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x080000, 0x020000)
ROM_COPY( "user1", 0x060000, 0x0a0000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x0c0000, 0x020000)
ROM_COPY( "user1", 0x080000, 0x0e0000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x100000, 0x020000)
ROM_COPY( "user1", 0x0a0000, 0x120000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x140000, 0x020000)
ROM_COPY( "user1", 0x0c0000, 0x160000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x180000, 0x020000)
ROM_COPY( "user1", 0x0e0000, 0x1a0000, 0x020000)
ROM_FILL( 0x1c0000, 0x020000, 0x00 )
ROM_FILL( 0x1e0000, 0x020000, 0x00 )
ROM_END
/***************************************************************************
The Berlin Wall
The Berlin Wall, Kaneko 1991, BW-002
----
BW-004 BW-008 VU-003
BW-005 BW-009 VU-003
BW-006 BW-00A VU-003
BW-007 BW-00B 6116-90
6116-90
BW-003 52256 52256
BW101A BW100A
5864
5864 MUX2 68000
VIEW2
BW300
BW-002
BW-001 42101
42101
41464 41464 VU-002
41464 41464 YM2149 IU-004
41464 41464 YM2149
SWB BW-000 6295
SWA
PALs : BW-U47, BW-U48 (backgrounds encryption)
***************************************************************************/
ROM_START( berlwall )
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "u23_01.bin", 0x000000, 0x020000, CRC(76b526ce) SHA1(95ba7cccbe88fd695c28b6a7c25a1afd130c1aa6) )
ROM_LOAD16_BYTE( "u39_01.bin", 0x000001, 0x020000, CRC(78fa7ef2) SHA1(8392de6e307dcd2bf5bcbeb37d578d33246acfcf) )
ROM_REGION( 0x120000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "bw001", 0x000000, 0x080000, CRC(bc927260) SHA1(44273a8b6a041504d54da4a7897adf23e3e9db10) )
ROM_LOAD( "bw002", 0x080000, 0x080000, CRC(223f5465) SHA1(6ed077514ab4370a215a4a60c3aecc8b72ed1c97) )
ROM_LOAD( "bw300", 0x100000, 0x020000, CRC(b258737a) SHA1(b5c8fe44a8dcfc19bccba896bdb73030c5843544) )
ROM_REGION( 0x080000, "gfx2", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "bw003", 0x000000, 0x080000, CRC(fbb4b72d) SHA1(07a0590f18b3bba1843ef6a89a5c214e8e605cc3) )
ROM_REGION( 0x400000, "gfx3", 0 ) /* High Color Background */
ROM_LOAD16_BYTE( "bw004", 0x000000, 0x080000, CRC(5300c34d) SHA1(ccb12ea05f89ef68bcfe003faced2ffea24c4bf0) )
ROM_LOAD16_BYTE( "bw008", 0x000001, 0x080000, CRC(9aaf2f2f) SHA1(1352856159e19f07e8e30f9c44b21347103ce024) ) // FIXED BITS (xxxxxxx0)
ROM_LOAD16_BYTE( "bw005", 0x100000, 0x080000, CRC(16db6d43) SHA1(0158d0278d085487400ad4384b8cc9618503319e) )
ROM_LOAD16_BYTE( "bw009", 0x100001, 0x080000, CRC(1151a0b0) SHA1(584a0da7eb7f06450f95e76faa20d19f053cb74c) ) // FIXED BITS (xxxxxxx0)
ROM_LOAD16_BYTE( "bw006", 0x200000, 0x080000, CRC(73a35d1f) SHA1(af919cf858c5923aea45e0d8d91493e6284cb99e) )
ROM_LOAD16_BYTE( "bw00a", 0x200001, 0x080000, CRC(f447dfc2) SHA1(1254eafea92e8e416deedf21cb01990ffc4f896c) ) // FIXED BITS (xxxxxxx0)
ROM_LOAD16_BYTE( "bw007", 0x300000, 0x080000, CRC(97f85c87) SHA1(865e076e098c49c96639f62be793f2de24b4926b) )
ROM_LOAD16_BYTE( "bw00b", 0x300001, 0x080000, CRC(b0a48225) SHA1(de256bb6e2a824114274bff0c6c1234934c31c49) ) // FIXED BITS (xxxxxxx0)
ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
ROM_LOAD( "bw000", 0x000000, 0x040000, CRC(d8fe869d) SHA1(75e9044c4164ca6db9519fcff8eca6c8a2d8d5d1) )
ROM_END
/*
berlwalt original bug ?
info from SebV:
After about level 5 or so, if you insert a coin when the continue screen
pops up, an error message "Copy Board" pops up.
----------------------------------------
Happened to me when player dies, at level 4.
The message is not written in ROM, its sprite ram address is (always?)
$30fd40
Routine $337d2 writes it (and routine $5c8c erases it)
The 'COPY BOARD!' message in stored in ROM directly as sprite number
($1cfa8)
$20288a : seems to contain the level number (initialized to 2 (?) when a
game is started, and is incremented by 1 once a level is finished)
01CF3E: move.b $20288a.l, D0
01CF44: cmpi.b #$d, D0
01CF48: bcs 1cf76 ; branch not taken -=> 'COPY BOARD!'
01CF4A: movem.l D0/A0-A2, -(A7)
01CF4E: movea.l A0, A1
01CF50: lea ($4c,PC), A0; ($1cf9e)
01CF54: nop
01CF56: lea ($a,A0), A0 ; A0 = $1cfa8 = 'COPY BOARD!'
01CF5A: lea $30e064.l, A1
01CF60: lea (-$64,A1), A1
01CF64: lea ($1d40,A1), A1
01CF68: move.b #$80, D1
01CF6C: jsr $33776.l ; display routine
01CF72: movem.l (A7)+, D0/A0-A2
01CF76:
berlwall levels: 1-1,2,3(anim),...
berlwalt levels: 1-1(anim)2-1/2/3/4/5(anim)3-1/2/3/4/5(anim)4-1(*)
note: berlwall may be genuine while berlwalt may be bootleg! because
stage 1-1 of berlwalt is stage 1-3 of berlwall, and berlwall has
explanation ingame. + the flyer from TAFA shows main character as
berlwall and not berlwalt!
--------------------------------------------------------------------------------
*/
ROM_START( berlwallt )
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "bw100a", 0x000000, 0x020000, CRC(e6bcb4eb) SHA1(220b8fddc79230b4f6a8cf33e1035355c485e8d1) )
ROM_LOAD16_BYTE( "bw101a", 0x000001, 0x020000, CRC(38056fb2) SHA1(48338b9a5ebea872286541a3c45016673c4af76b) )
ROM_REGION( 0x120000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "bw001", 0x000000, 0x080000, CRC(bc927260) SHA1(44273a8b6a041504d54da4a7897adf23e3e9db10) )
ROM_LOAD( "bw002", 0x080000, 0x080000, CRC(223f5465) SHA1(6ed077514ab4370a215a4a60c3aecc8b72ed1c97) )
ROM_LOAD( "bw300", 0x100000, 0x020000, CRC(b258737a) SHA1(b5c8fe44a8dcfc19bccba896bdb73030c5843544) )
ROM_REGION( 0x080000, "gfx2", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "bw003", 0x000000, 0x080000, CRC(fbb4b72d) SHA1(07a0590f18b3bba1843ef6a89a5c214e8e605cc3) )
ROM_REGION( 0x400000, "gfx3", 0 ) /* High Color Background */
ROM_LOAD16_BYTE( "bw004", 0x000000, 0x080000, CRC(5300c34d) SHA1(ccb12ea05f89ef68bcfe003faced2ffea24c4bf0) )
ROM_LOAD16_BYTE( "bw008", 0x000001, 0x080000, CRC(9aaf2f2f) SHA1(1352856159e19f07e8e30f9c44b21347103ce024) ) // FIXED BITS (xxxxxxx0)
ROM_LOAD16_BYTE( "bw005", 0x100000, 0x080000, CRC(16db6d43) SHA1(0158d0278d085487400ad4384b8cc9618503319e) )
ROM_LOAD16_BYTE( "bw009", 0x100001, 0x080000, CRC(1151a0b0) SHA1(584a0da7eb7f06450f95e76faa20d19f053cb74c) ) // FIXED BITS (xxxxxxx0)
ROM_LOAD16_BYTE( "bw006", 0x200000, 0x080000, CRC(73a35d1f) SHA1(af919cf858c5923aea45e0d8d91493e6284cb99e) )
ROM_LOAD16_BYTE( "bw00a", 0x200001, 0x080000, CRC(f447dfc2) SHA1(1254eafea92e8e416deedf21cb01990ffc4f896c) ) // FIXED BITS (xxxxxxx0)
ROM_LOAD16_BYTE( "bw007", 0x300000, 0x080000, CRC(97f85c87) SHA1(865e076e098c49c96639f62be793f2de24b4926b) )
ROM_LOAD16_BYTE( "bw00b", 0x300001, 0x080000, CRC(b0a48225) SHA1(de256bb6e2a824114274bff0c6c1234934c31c49) ) // FIXED BITS (xxxxxxx0)
ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
ROM_LOAD( "bw000", 0x000000, 0x040000, CRC(d8fe869d) SHA1(75e9044c4164ca6db9519fcff8eca6c8a2d8d5d1) )
ROM_END
/***************************************************************************
Blaze On (Japan version)
CPU: TMP68HC000-12/D780C-2(Z80)
SOUND: YM2151
OSC: 13.3330/16.000MHz
CUSTOM: KANEKO VU-002 x2
KANEKO 23160-509 VIEW2-CHIP
KANEKO MUX2-CHIP
KANEKO HELP1-CHIP
---------------------------------------------------
filemanes devices kind
---------------------------------------------------
BZ_PRG1.U80 27C020 68000 main prg.
BZ_PRG2.U81 27C020 68000 main prg.
3.U45 27C010 Z80 sound prg.
BZ_BG.U2 57C8200 BG CHR
BZ_SP1.U20 27C8001 OBJ
BZ_SP2.U21 27C8001 OBJ
BZ_SP1.U68 27C8001 OBJ (same as BZ_SP1.U20 for 2nd sprite chip)
BZ_SP2.U86 27C8001 OBJ (same as BZ_SP2.U21 for 2nd sprite chip)
***************************************************************************/
ROM_START( blazeon )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "bz_prg1.u80", 0x000000, 0x040000, CRC(8409e31d) SHA1(a9dfc299f4b457df190314401aef309adfaf9bae) )
ROM_LOAD16_BYTE( "bz_prg2.u81", 0x000001, 0x040000, CRC(b8a0a08b) SHA1(5f275b98d3e49a834850b45179d26e8c2f9fd604) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Z80 Code */
ROM_LOAD( "3.u45", 0x000000, 0x020000, CRC(52fe4c94) SHA1(896230e4627503292575bbd84edc3cf9cb18b27e) ) // 1xxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "bz_sp1.u20", 0x000000, 0x100000, CRC(0d5809a1) SHA1(e72669f95b050d1967d10a865bab8f3634c9daad) )
ROM_LOAD( "bz_sp2.u21", 0x100000, 0x100000, CRC(56ead2bd) SHA1(463723f3c533603ce3a95310e9ce12b4e582b52d) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "bz_bg.u2", 0x000000, 0x100000, CRC(fc67f19f) SHA1(f5d9e037a736b0932efbfb48587de08bec93df5d) )
ROM_END
/***************************************************************************
Blood Warrior
Kaneko 1994
TOP BOARD: Z09AF-005
CPU - Toshiba TMP68HC000N - 16
SOUND - OKI M6295 x2
QUARTZ OSCILLATORS AT 27.0000MHz, 16.0000MHz, 20.0000MHz and 33.3330MHz
RAM - LC3664 x6, 424260 x2, LH52B256D x6, D42101C x2
PCU11.u11 - 18CV8PC \
PCU15.u15 - 18CV8PC | NEAR OKI
Z091P016.u16 - 18CV8PC /
Z091P013.u13 - 18CV8PC \
PCU17.u17 - 18CV8PC |
PCU14.u14 - 18CV8PC | NEAR 68000
PCU94.u94 - 18CV8PC |
PCU92.u92 - 18CV8PC |
Z092P093.u93 - 18CV8PC /
ALL ABOVE NOT DUMPED
Custom Chips
231609-509 View2-Chip x2
KC-002 L0002 023 9321EK702
9343T - 44 pin PQFP (NEAR JAMMMA CONNECTOR)
BOTTOM BOARD: Z09AF-ROM4
TBS0P01 452 9339PK001 - 74 pin PQFP (NEC uPD78324 series MCU)
ofs1g006.u6 - GAL16V8B
ofs1g007.u7 - GAL16V8B
ofs1p059.u59 - 18CV8PC
ofs1p511.u511 - 18CV8PC
ALL ABOVE NOT DUMPED
ROMS
9346.u126 - 93C46
ofdox3.U124 - 27C010
ofp1f3.U513 - 27C4000
ofpof3.U514 - 27C4000
of101f0223.U101 - 27C800
of20902011.u17 - 27C080
of210000213.u19 - 27C080
of2110215.u21 - 27C080
of21200217.u23 - 27C080
of21300219.u25 - 27C080
of21400221.u27 - 27C080
of1000222.u99 - 27C800
of0010226.u55 - 27C800
of3000225.u51 - 27C800
of2080209.u28 - 27V160
of2060207.u14 - 27V160
of2070208.u15 - 27V160
of2050206.u13 - 27V160
of2040205.u12 - 27V160
of2030204.u11 - 27V160
of2020203.u10 - 27V160
of2010202.u9 - 27V160
of2000201.u8 - 27V160
of209e0210.u16 - 27C080
of210e0212.u18 - 27C080
of211e0214.u20 - 27C080
of212e0216.u22 - 27C080
of213e0218.u24 - 27C080
of214e0220.u26 - 27C080
***************************************************************************/
ROM_START( bloodwar )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "ofp0f3.514", 0x000000, 0x080000, CRC(0c93da15) SHA1(65b6b1b4acfc32c551ae4fbe6a13f7f2b8554dbf) )
ROM_LOAD16_BYTE( "ofp1f3.513", 0x000001, 0x080000, CRC(894ecbe5) SHA1(bf403d19e6315266114ac742a08cac903e7b54b5) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code */
ROM_LOAD16_WORD_SWAP( "ofd0x3.124", 0x000000, 0x020000, CRC(399f2005) SHA1(ff0370724770c35963953fd9596d9f808ba87d8f) )
ROM_REGION( 0x1e00000, "gfx1", 0 ) /* Sprites */
ROM_LOAD ( "of-200-0201.8", 0x0000000, 0x200000, CRC(bba63025) SHA1(daec5285469ee953f6f838fe3cb3903524e9ac39) )
ROM_LOAD ( "of-201-0202.9", 0x0200000, 0x200000, CRC(4ffd9ddc) SHA1(62bc8c0ed2efab407fc2956c514c3e732bcc47ee) )
ROM_LOAD ( "of-202-0203.10", 0x0400000, 0x200000, CRC(fbcc5363) SHA1(9eff48c29d5c887d39e4db442c6ee51ec879521e) )
ROM_LOAD ( "of-203-0204.11", 0x0600000, 0x200000, CRC(8e818ce9) SHA1(bc37d35247edfc563400cd67459d455b1fea6eab) )
ROM_LOAD ( "of-204-0205.12", 0x0800000, 0x200000, CRC(70c4a76b) SHA1(01b17bda156f2e6f480bdc976927c8bba47c1186) )
ROM_LOAD ( "of-205-0206.13", 0x0a00000, 0x200000, CRC(80c667bb) SHA1(7edf33c713c8448ff73fa84b9f7684dd4d46eed1) )
ROM_LOAD ( "of-206-0207.14", 0x0c00000, 0x200000, CRC(c2028c97) SHA1(ac3b73ff34f84015432ceb22cf9c57ab0ff07a70) )
ROM_LOAD ( "of-207-0208.15", 0x0e00000, 0x200000, CRC(b1f30c61) SHA1(2ae010c10b7a2ae09df904f7ea81425e80389622) )
ROM_LOAD ( "of-208-0209.28", 0x1000000, 0x200000, CRC(a8f29545) SHA1(5d018147aa71207f679909343104deaa0f08fd9d) )
ROM_LOAD16_BYTE( "of-209e-0210.16", 0x1200000, 0x100000, CRC(93018468) SHA1(d156f408a78fbd736048ce33e44c0b1e10403b0e) )
ROM_LOAD16_BYTE( "of-2090-2011.17", 0x1200001, 0x100000, CRC(3fb226a1) SHA1(efba54f82fb9914559faad5fba92aa108ec039d5) )
ROM_LOAD16_BYTE( "of-210e-0212.18", 0x1400000, 0x100000, CRC(80f3fa1b) SHA1(ca0e84cb47228ef5ac3b94238a33c3ebc3c2f528) )
ROM_LOAD16_BYTE( "of-2100-0213.19", 0x1400001, 0x100000, CRC(8ca3a3d6) SHA1(b6f3876f987ce6828bfa26ca492ff6ca2d282d80) )
ROM_LOAD16_BYTE( "of-211e-0214.20", 0x1600000, 0x100000, CRC(8d3d96f7) SHA1(0a7c459f02938f86d53979498647c73837eb9e51) )
ROM_LOAD16_BYTE( "of-2110-0215.21", 0x1600001, 0x100000, CRC(78268230) SHA1(63fbf88551f6fde833222ae6a4382891e1bf5b39) )
ROM_LOAD16_BYTE( "of-212e-0216.22", 0x1800000, 0x100000, CRC(5a013d99) SHA1(c4af944c8f0b33a93b4bb083e32e2901c5607a39) )
ROM_LOAD16_BYTE( "of-2120-0217.23", 0x1800001, 0x100000, CRC(84ed25bd) SHA1(ddff811d326586eb7353230e74db37867af075eb) )
ROM_LOAD16_BYTE( "of-213e-0218.24", 0x1a00000, 0x100000, CRC(861bc5b1) SHA1(a85936781a56b5406bee2e4f36fadcb5b9f43b05) )
ROM_LOAD16_BYTE( "of-2130-0219.25", 0x1a00001, 0x100000, CRC(a79b8119) SHA1(62e3fb28fd3a538a8191a51242dbed7e88c62a54) )
ROM_LOAD16_BYTE( "of-214e-0220.26", 0x1c00000, 0x100000, CRC(43c622de) SHA1(73efe57233f056127e2d34590c624f39d1c0ab79) )
ROM_LOAD16_BYTE( "of-2140-0221.27", 0x1c00001, 0x100000, CRC(d10bf03c) SHA1(a81d6b7df7382fc8d50614c1332611e0c202b805) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "of-300-0225.51", 0x000000, 0x100000, CRC(fbc3c08a) SHA1(0ba52b381e7a10fb1513244b394438b440950af3) )
ROM_REGION( 0x100000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "of-301-0226.55", 0x000000, 0x100000, CRC(fcf215de) SHA1(83015f10e62b917efd6e3edfbd45fb8f9b35db2b) )
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "of-101-f-0223.101", 0x000000, 0x100000, CRC(295f3c93) SHA1(558698f1d04b23dd2a73e2eae5ecce598defb228) ) /* 0224 ? */
ROM_REGION( 0x100000, "oki2", 0 ) /* Samples */
ROM_LOAD( "of-100-0222.99", 0x000000, 0x100000, CRC(42b12269) SHA1(f9d9c42057e176710f09e8db0bfcbf603c15ca11) )
ROM_END
ROM_START( oedfight )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "ofp0j3.514", 0x000000, 0x080000, CRC(0c93da15) SHA1(65b6b1b4acfc32c551ae4fbe6a13f7f2b8554dbf) )
ROM_LOAD16_BYTE( "ofp1j3.513", 0x000001, 0x080000, CRC(cc59de49) SHA1(48ff4ed40ad22768054a59bdf5ce0e00891d8f0e) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code */
ROM_LOAD16_WORD_SWAP( "ofd0x3.124", 0x000000, 0x020000, CRC(399f2005) SHA1(ff0370724770c35963953fd9596d9f808ba87d8f) )
ROM_REGION( 0x1e00000, "gfx1", 0 ) /* Sprites */
ROM_LOAD ( "of-200-0201.8", 0x0000000, 0x200000, CRC(bba63025) SHA1(daec5285469ee953f6f838fe3cb3903524e9ac39) )
ROM_LOAD ( "of-201-0202.9", 0x0200000, 0x200000, CRC(4ffd9ddc) SHA1(62bc8c0ed2efab407fc2956c514c3e732bcc47ee) )
ROM_LOAD ( "of-202-0203.10", 0x0400000, 0x200000, CRC(fbcc5363) SHA1(9eff48c29d5c887d39e4db442c6ee51ec879521e) )
ROM_LOAD ( "of-203-0204.11", 0x0600000, 0x200000, CRC(8e818ce9) SHA1(bc37d35247edfc563400cd67459d455b1fea6eab) )
ROM_LOAD ( "of-204-0205.12", 0x0800000, 0x200000, CRC(70c4a76b) SHA1(01b17bda156f2e6f480bdc976927c8bba47c1186) )
ROM_LOAD ( "of-205-0206.13", 0x0a00000, 0x200000, CRC(80c667bb) SHA1(7edf33c713c8448ff73fa84b9f7684dd4d46eed1) )
ROM_LOAD ( "of-206-0207.14", 0x0c00000, 0x200000, CRC(c2028c97) SHA1(ac3b73ff34f84015432ceb22cf9c57ab0ff07a70) )
ROM_LOAD ( "of-207-0208.15", 0x0e00000, 0x200000, CRC(b1f30c61) SHA1(2ae010c10b7a2ae09df904f7ea81425e80389622) )
ROM_LOAD ( "of-208-0209.28", 0x1000000, 0x200000, CRC(a8f29545) SHA1(5d018147aa71207f679909343104deaa0f08fd9d) )
ROM_LOAD16_BYTE( "of-209e-0210.16", 0x1200000, 0x100000, CRC(93018468) SHA1(d156f408a78fbd736048ce33e44c0b1e10403b0e) )
ROM_LOAD16_BYTE( "of-2090-2011.17", 0x1200001, 0x100000, CRC(3fb226a1) SHA1(efba54f82fb9914559faad5fba92aa108ec039d5) )
ROM_LOAD16_BYTE( "of-210e-0212.18", 0x1400000, 0x100000, CRC(80f3fa1b) SHA1(ca0e84cb47228ef5ac3b94238a33c3ebc3c2f528) )
ROM_LOAD16_BYTE( "of-2100-0213.19", 0x1400001, 0x100000, CRC(8ca3a3d6) SHA1(b6f3876f987ce6828bfa26ca492ff6ca2d282d80) )
ROM_LOAD16_BYTE( "of-211e-0214.20", 0x1600000, 0x100000, CRC(8d3d96f7) SHA1(0a7c459f02938f86d53979498647c73837eb9e51) )
ROM_LOAD16_BYTE( "of-2110-0215.21", 0x1600001, 0x100000, CRC(78268230) SHA1(63fbf88551f6fde833222ae6a4382891e1bf5b39) )
ROM_LOAD16_BYTE( "of-212e-0216.22", 0x1800000, 0x100000, CRC(5a013d99) SHA1(c4af944c8f0b33a93b4bb083e32e2901c5607a39) )
ROM_LOAD16_BYTE( "of-2120-0217.23", 0x1800001, 0x100000, CRC(84ed25bd) SHA1(ddff811d326586eb7353230e74db37867af075eb) )
ROM_LOAD16_BYTE( "of-213e-0218.24", 0x1a00000, 0x100000, CRC(861bc5b1) SHA1(a85936781a56b5406bee2e4f36fadcb5b9f43b05) )
ROM_LOAD16_BYTE( "of-2130-0219.25", 0x1a00001, 0x100000, CRC(a79b8119) SHA1(62e3fb28fd3a538a8191a51242dbed7e88c62a54) )
ROM_LOAD16_BYTE( "of-214e-0220.26", 0x1c00000, 0x100000, CRC(43c622de) SHA1(73efe57233f056127e2d34590c624f39d1c0ab79) )
ROM_LOAD16_BYTE( "of-2140-0221.27", 0x1c00001, 0x100000, CRC(d10bf03c) SHA1(a81d6b7df7382fc8d50614c1332611e0c202b805) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "of-300-0225.51", 0x000000, 0x100000, CRC(fbc3c08a) SHA1(0ba52b381e7a10fb1513244b394438b440950af3) )
ROM_REGION( 0x100000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "of-301-0226.55", 0x000000, 0x100000, CRC(fcf215de) SHA1(83015f10e62b917efd6e3edfbd45fb8f9b35db2b) )
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "of-101-j-0224.101", 0x000000, 0x100000, CRC(83a1f826) SHA1(3b5f576735d5954770cd572b03e71bf121ae88d2) )
ROM_REGION( 0x100000, "oki2", 0 ) /* Samples */
ROM_LOAD( "of-100-0222.99", 0x000000, 0x100000, CRC(42b12269) SHA1(f9d9c42057e176710f09e8db0bfcbf603c15ca11) )
ROM_END
/***************************************************************************
Great 1000 Miles Rally
Kaneko 1994
TOP BOARD: Z09AF-005
CPU - Toshiba TMP68HC000N - 16
SOUND - OKI M6295 x2
QUARTZ OSCILLATORS AT 27.0000MHz, 16.0000MHz, 20.0000MHz and 33.3330MHz
RAM - LC3664 x6, 424260 x2, LH52B256D x6, D42101C x2
Custom Chips
231609-509 View2-Chip x2
KC-002 L0002 023 9321EK702
9343T - 44 pin PQFP (NEAR JAMMMA CONNECTOR)
BOTTOM BOARD: Z09AF-ROM5
TBS0P01 452 9339PK001 - 74 pin PQFP (NEC uPD78324 series MCU)
GMMU2+1 512K * 2 68k
GMMU23 1M OKI6295: 00000-2ffff + chunks of 0x10000 with headers
GMMU24 1M OKI6295: chunks of 0x40000 with headers - FIRST AND SECOND HALF IDENTICAL
GMMU27 2M sprites
GMMU28 2M sprites
GMMU29 2M sprites
GMMU30 512k sprites
GMMU64 1M sprites - FIRST AND SECOND HALF IDENTICAL
GMMU65 1M sprites - FIRST AND SECOND HALF IDENTICAL
GMMU52 2M tiles
---------------------------------------------------------------------------
Game code
---------------------------------------------------------------------------
100000.b <- (!b00000.b) & 7f [1p]
01.b previous value of the above
02.b bits gone high
100008.b <- (!b00002.b) & 7f [2p]
100010.b <- !b00004.b [coins]
11.b previous value of the above
12.b bits gone high
100013.b <- b00006.b (both never accessed again?)
100015.b <- wheel value
600000.w <- 100a20.w + 100a30.w 600002.w <- 100a22.w + 100a32.w
600004.w <- 100a24.w + 100a34.w 600006.w <- 100a26.w + 100a36.w
680000.w <- 100a28.w + 100a38.w 680002.w <- 100a2a.w + 100a3a.w
680004.w <- 100a2c.w + 100a3c.w 680006.w <- 100a2e.w + 100a3e.w
101265.b <- DSW (from 206000)
101266 <- Settings from NVRAM (0x80 bytes from 208000)
1034f8.b credits
103502.b coins x ..
103503.b .. credits
1035ec.l *** Time (BCD: seconds * 10000) ***
103e64.w *** Speed << 4 ***
10421a.b bank for the oki mapped at 800000
104216.b last value of the above
10421c.b bank for the oki mapped at 880000
104218.b last value of the above
ROUTINES:
dd6 print string: a2->scr ; a1->string ; d1.l = xpos.w<<6|ypos.w<<6
Trap #2 = 43a0 ; d0.w = routine index ; (where not specified: 43c0):
1: 43C4 2: 43F8 3: 448E 4: 44EE
5: 44D2 6: 4508 7: 453A 10: 0AF6
18: 4580 19: 4604
20> 2128 writes 700000-70001f
21: 21F6
24> 2346 clears 400000-401407 (641*8 = $281*8)
30> 282A writes 600008/9/b/e-f, 680008/9/b/e-f
31: 295A
32> 2B36 100a30-f <- 100a10-f
34> 2B4C clears 500000-503fff, 580000-583fff
35> 2B9E d1.w = selects between: 500000;501000;580000;581000.
Fill 0x1000 bytes from there with d2.l
70: 2BCE> 11d8a
71: 2BD6
74: 2BDE 90: 3D44
91> 3D4C wait for bit 0 of d00000 to be 0
92> 3D5C 200010.w<-D1 200012.w<-D2 200014.w<-D3
f1: 10F6
***************************************************************************/
/* This version displays:
tb05mm-eu "1000 miglia"
master up= 94/07/18 15:12:35 */
ROM_START( gtmr )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "u2.bin", 0x000000, 0x080000, CRC(031799f7) SHA1(a59a9635002d139247828e3b74f6cf2fbdd5e569) )
ROM_LOAD16_BYTE( "u1.bin", 0x000001, 0x080000, CRC(6238790a) SHA1(a137fd581138804534f3193068f117611a982004) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code */
ROM_LOAD16_WORD_SWAP( "mmd0x2.u124.bin", 0x000000, 0x020000, CRC(3d7cb329) SHA1(053106acde642a414fde0b01105fe6762b6a10f6) ) // from gtmra
ROM_REGION( 0x840000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "mm-200-402-s0.bin", 0x000000, 0x200000, CRC(c0ab3efc) SHA1(e6cd15480977b036234d91e6f3a6e21b7f0a3c3e) )
ROM_LOAD( "mm-201-403-s1.bin", 0x200000, 0x200000, CRC(cf6b23dc) SHA1(ccfd0b17507e091e55c169361cd6a6b19641b717) )
ROM_LOAD( "mm-202-404-s2.bin", 0x400000, 0x200000, CRC(8f27f5d3) SHA1(219a86446ce2556682009d8aff837480f040a01e) )
ROM_LOAD( "mm-203-405-s3.bin", 0x600000, 0x080000, CRC(e9747c8c) SHA1(2507102ec34755c6f110eadb3444e6d3a3474051) )
ROM_LOAD16_BYTE( "mms1x2.u30.bin", 0x800001, 0x020000, CRC(b42b426f) SHA1(6aee5759b5f0786c5ee074d9df3d2716919ea621) )
ROM_LOAD16_BYTE( "mms0x2.u29.bin", 0x800000, 0x020000, CRC(bd22b7d2) SHA1(ef82d00d72439590c71aed33ecfabc6ee71a6ff9) )
ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "mm-300-406-a0.bin", 0x000000, 0x200000, CRC(b15f6b7f) SHA1(5e84919d788add53fc87f4d85f437df413b1dbc5) )
ROM_REGION( 0x200000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_COPY("gfx2",0,0,0x200000) // it isn't on the board twice.
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "mm-100-401-e0.bin", 0x000000, 0x100000, CRC(b9cbfbee) SHA1(051d48a68477ef9c29bd5cc0bb7955d513a0ab94) ) // 16 x $10000
ROM_REGION( 0x100000, "oki2", ROMREGION_ERASE00 ) /* Samples */
/* Not present on this board */
ROM_END
ROM_START( gtmra )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "mmp0x2.u514.bin", 0x000000, 0x080000, CRC(ba4a77c8) SHA1(efb6ae0e7aa71ab0c5f486f799bf31edcec24e2b) )
ROM_LOAD16_BYTE( "mmp1x2.u513.bin", 0x000001, 0x080000, CRC(a2b9034e) SHA1(466bcb1bf7124eb15d23b25c4e1307b9706474ec) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code */
ROM_LOAD16_WORD_SWAP( "mmd0x2.u124.bin", 0x000000, 0x020000, CRC(3d7cb329) SHA1(053106acde642a414fde0b01105fe6762b6a10f6) )
ROM_REGION( 0x840000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "mm-200-402-s0.bin", 0x000000, 0x200000, CRC(c0ab3efc) SHA1(e6cd15480977b036234d91e6f3a6e21b7f0a3c3e) )
ROM_LOAD( "mm-201-403-s1.bin", 0x200000, 0x200000, CRC(cf6b23dc) SHA1(ccfd0b17507e091e55c169361cd6a6b19641b717) )
ROM_LOAD( "mm-202-404-s2.bin", 0x400000, 0x200000, CRC(8f27f5d3) SHA1(219a86446ce2556682009d8aff837480f040a01e) )
ROM_LOAD( "mm-203-405-s3.bin", 0x600000, 0x080000, CRC(e9747c8c) SHA1(2507102ec34755c6f110eadb3444e6d3a3474051) )
ROM_LOAD16_BYTE( "mms1x2.u30.bin", 0x800001, 0x020000, CRC(b42b426f) SHA1(6aee5759b5f0786c5ee074d9df3d2716919ea621) )
ROM_LOAD16_BYTE( "mms0x2.u29.bin", 0x800000, 0x020000, CRC(bd22b7d2) SHA1(ef82d00d72439590c71aed33ecfabc6ee71a6ff9) )
ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "mm-300-406-a0.bin", 0x000000, 0x200000, CRC(b15f6b7f) SHA1(5e84919d788add53fc87f4d85f437df413b1dbc5) )
ROM_REGION( 0x200000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_COPY("gfx2",0,0,0x200000) // it isn't on the board twice.
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "mm-100-401-e0.bin", 0x000000, 0x100000, CRC(b9cbfbee) SHA1(051d48a68477ef9c29bd5cc0bb7955d513a0ab94) ) // 16 x $10000
ROM_REGION( 0x100000, "oki2", ROMREGION_ERASE00 ) /* Samples */
/* Not present on this board */
ROM_END
/* The evolution and USA versions seem to be more like GTMR 1.5, they have some fairly significant changes */
/* This version displays:
tb05mm-eu "1000 miglia"
master up= 94/09/06 14:49:19 */
ROM_START( gtmre )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "gmmu2.bin", 0x000000, 0x080000, CRC(36dc4aa9) SHA1(0aea4dc169d7aad2ea957a1de698d1fa12c71556) )
ROM_LOAD16_BYTE( "gmmu1.bin", 0x000001, 0x080000, CRC(8653c144) SHA1(a253a01327a9443337a55a13c063ea5096444c4c) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code */
//ROM_LOAD16_WORD_SWAP( "mcu_code.u12", 0x000000, 0x020000, NO_DUMP )
// this rom has the right version string, so is probably correct
ROM_LOAD16_WORD_SWAP( "gtmrusa.u12", 0x000000, 0x020000, CRC(2e1a06ff) SHA1(475a7555653eefac84307492a385895b839cab0d) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
/* fill the 0x700000-7fffff range first, with the second of the identical halves */
ROM_LOAD16_BYTE( "gmmu64.bin", 0x600000, 0x100000, CRC(57d77b33) SHA1(f7ae28ae889be4442b7b236705943eaad1f0c84e) ) // HALVES IDENTICAL
ROM_LOAD16_BYTE( "gmmu65.bin", 0x600001, 0x100000, CRC(05b8bdca) SHA1(44471d66787d5b48ae8b13676f42f27af44e5c6a) ) // HALVES IDENTICAL
ROM_LOAD( "gmmu27.bin", 0x000000, 0x200000, CRC(c0ab3efc) SHA1(e6cd15480977b036234d91e6f3a6e21b7f0a3c3e) )
ROM_LOAD( "gmmu28.bin", 0x200000, 0x200000, CRC(cf6b23dc) SHA1(ccfd0b17507e091e55c169361cd6a6b19641b717) )
ROM_LOAD( "gmmu29.bin", 0x400000, 0x200000, CRC(8f27f5d3) SHA1(219a86446ce2556682009d8aff837480f040a01e) )
ROM_LOAD( "gmmu30.bin", 0x600000, 0x080000, CRC(e9747c8c) SHA1(2507102ec34755c6f110eadb3444e6d3a3474051) )
/* codes 6800-6fff are explicitly skipped */
ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "gmmu52.bin", 0x000000, 0x200000, CRC(b15f6b7f) SHA1(5e84919d788add53fc87f4d85f437df413b1dbc5) )
ROM_REGION( 0x200000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_COPY("gfx2",0,0,0x200000) // it isn't on the board twice.
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "gmmu23.bin", 0x000000, 0x100000, CRC(b9cbfbee) SHA1(051d48a68477ef9c29bd5cc0bb7955d513a0ab94) ) // 16 x $10000
ROM_REGION( 0x100000, "oki2", 0 ) /* Samples */
ROM_LOAD( "gmmu24.bin", 0x000000, 0x100000, CRC(380cdc7c) SHA1(ba7f51201b0f2bf15e66557e45bb2af5cf797779) ) // 2 x $40000 - HALVES IDENTICAL
ROM_END
/* This version displays:
tb05mm-eu "1000 miglia"
master up= 94/09/06 20:30:39 */
ROM_START( gtmrusa )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "gtmrusa.u2", 0x000000, 0x080000, CRC(5be615c4) SHA1(c14d11a5bf6e025a65b932039165302ff407c4e1) )
ROM_LOAD16_BYTE( "gtmrusa.u1", 0x000001, 0x080000, CRC(ae853e4e) SHA1(31eaa73b0c5ddab1292f521ceec43b202653efe9) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code? */
ROM_LOAD16_WORD_SWAP( "gtmrusa.u12", 0x000000, 0x020000, CRC(2e1a06ff) SHA1(475a7555653eefac84307492a385895b839cab0d) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
/* fill the 0x700000-7fffff range first, with the second of the identical halves */
ROM_LOAD16_BYTE( "gmmu64.bin", 0x600000, 0x100000, CRC(57d77b33) SHA1(f7ae28ae889be4442b7b236705943eaad1f0c84e) ) // HALVES IDENTICAL
ROM_LOAD16_BYTE( "gmmu65.bin", 0x600001, 0x100000, CRC(05b8bdca) SHA1(44471d66787d5b48ae8b13676f42f27af44e5c6a) ) // HALVES IDENTICAL
ROM_LOAD( "gmmu27.bin", 0x000000, 0x200000, CRC(c0ab3efc) SHA1(e6cd15480977b036234d91e6f3a6e21b7f0a3c3e) )
ROM_LOAD( "gmmu28.bin", 0x200000, 0x200000, CRC(cf6b23dc) SHA1(ccfd0b17507e091e55c169361cd6a6b19641b717) )
ROM_LOAD( "gmmu29.bin", 0x400000, 0x200000, CRC(8f27f5d3) SHA1(219a86446ce2556682009d8aff837480f040a01e) )
ROM_LOAD( "gmmu30.bin", 0x600000, 0x080000, CRC(e9747c8c) SHA1(2507102ec34755c6f110eadb3444e6d3a3474051) )
/* codes 6800-6fff are explicitly skipped */
ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "gmmu52.bin", 0x000000, 0x200000, CRC(b15f6b7f) SHA1(5e84919d788add53fc87f4d85f437df413b1dbc5) )
ROM_REGION( 0x200000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_COPY("gfx2",0,0,0x200000) // it isn't on the board twice.
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "gmmu23.bin", 0x000000, 0x100000, CRC(b9cbfbee) SHA1(051d48a68477ef9c29bd5cc0bb7955d513a0ab94) ) // 16 x $10000
ROM_REGION( 0x100000, "oki2", 0 ) /* Samples */
ROM_LOAD( "gmmu24.bin", 0x000000, 0x100000, CRC(380cdc7c) SHA1(ba7f51201b0f2bf15e66557e45bb2af5cf797779) ) // 2 x $40000 - HALVES IDENTICAL
ROM_END
/***************************************************************************
Great 1000 Miles Rally 2 USA
Kaneko, 1995
PCB Layouts
-----------
KANEKO AX-SYSTEM BOARD
M201F00584 KANEKO (sticker)
|------------------------------------------------------|
| PX4460 CNC1 |
|LA4461 M6295 6264 6264 |
| LPF6K M6295 PAL1 |----------| |
| PAL2 |KANEKO | |
| PAL3 |VIEW2-CHIP| CN3|
| |(QFP144) | |
| CNC2 | | |
| |----------| |
|J 6264 |
|A 6264 |
|M 62256 |
|M 62256 |----------| |
|A |KANEKO | |
| |VIEW2-CHIP| |
| MC1091 |(QFP144) | CN2|
| | | |
| CNA |----------| |
| 6264 |
| |----| 6264 |----------| |
| | *1 | 62256 |KANEKO | |
| |----| 62256 |KC-002 | |
| |---------------| |(QFP208) | |
| | 68000 | | | |
| | | |----------| |
| PAL4 |---------------|33.3333MHz 424260 |
| PAL5 PAL6 20MHz 424260 |
| PAL7 PAL8 |
|62256 PAL9 |
|62256 PAL10 |
| PAL11 |
| 27MHz 16MHz |
| CNB CN1 |
|------------------------------------------------------|
Notes:
68000 - Toshiba TMP68HC000N-16 CPU running at 16.000MHz (SDIP64)
M6295 - Oki M6295 ADPCM Sample Player IC, clock 2.000MHz (both), sample rate = 2000000/165 (QFP44)
LA4461- Sanyo LA4461 12W Power Amplifier (SIP10, same as LA4460 but with reverse pinout)
LPF6K - KANEKO Custom Ceramic AD/DA Module (SIP7)
PX4460- KANEKO Custom Ceramic AD/DA Module (SIP5)
MC1091- KANEKO Custom Ceramic Input Module (ZIP46)
6264 - Sony CXK5864CM-10LL 8k x8 SRAM (SOP28)
62256 - Sony CXK58257ASP-70L 32k x8 SRAM (DIP28)
424260- NEC 424260-80 256k x16 DRAM (SOJ40)
PAL1 - AMI 18CV8PC-25 stamped 'AX0P048' (DIP20)
PAL2 - AMI 18CV8PC-25 stamped 'AX0P049' (DIP20)
PAL3 - AMI 18CV8PC-25 stamped 'AX0P050' (DIP20)
PAL4 - AMI 18CV8PC-25 stamped 'AX0P021' (DIP20)
PAL5 - AMI 18CV8PC-25 stamped 'AX0P022' (DIP20)
PAL6 - AMI 18CV8PC-25 stamped 'AX0P070' (DIP20)
PAL7 - AMI 18CV8PC-25 stamped 'AX0P071' (DIP20)
PAL8 - AMI 18CV8PC-25 stamped 'AX0P089' (DIP20)
PAL9 - AMI 18CV8PC-25 stamped 'AX0P062' (DIP20)
PAL10 - AMI 18CV8PC-25 stamped 'AX0P063' (DIP20)
PAL11 - AMI 18CV8PC-25 stamped 'AX0P064' (DIP20)
CNC1/CNC2 \
CNA/CNB | Multi-pin connectors joining top board to bottom board
CN1/2/3 /
Custom IC's -
KANEKO VIEW2-CHIP (x2, QFP144)
KANEKO KC-002 (QFP208)
*1 - KANEKO JAPAN 9448 TA (QFP44)
KANEKO AX-SYSTEM BOARD ROM-08
AX09S00584 KANEKO (sticker)
|------------------------------------------------------|
| 93C46 SW1 CNB CN1 |
| |-------| EPROM.U31 SP_ROM0.U49 |
| |KANEKO | |
|CN4 |TBS0P02| EPROM.U32 SP_ROM1.U50 PAL8 |
| |(QFP74)| |
| |-------| EPROM.U33 SP_ROM2.U51 SP-ROM4.U85 |
| |
| PAL1 SP_ROM3.U52 SP-ROM5.U86 |
| PAL2 |
|PAL3 SP-ROM6.U87 |
|PAL4 |
| SP-ROM7.U88 |
|EPROM.U5 |
| 6116 |
|EPROM.U6 BG0_ROM0.U89|
| CNA 6116 |
|EPROM.U7 BG0_ROM1.U90|
| |
|EPROM.U8 BG1_ROM0.U93|
| |
| PAL5 BG1_ROM1.U94|
| PAL6 6116 PAL9 |
|UPC339C CN2|
|UPC339C 6116 BG2_ROM0.U91|
| |
|CNN3 CNC2 BG2_ROM1.U92|
| |
|CNN2 S2_ROM0.U47 S2_ROM1.U65 |
| BG2_ROM0.U96|
|CNN1 S1_ROM0.U48 S1_ROM1.U66 CN3|
| NE555 BG2_ROM1.U97|
|AD7820 CNC1 PAL7 |
|------------------------------------------------------|
Notes:
AD7820 - Analog Devices AD7820 Linear Compatible CMOS High Speed 8-Bit ADC with Track/Hold Function (DIP20)
93C46 - Atmel 93C46 Serial EEPROM (DIP8)
6116 - 2k x8 SRAM (DIP24)
NE555 - Texas Instruments NE555 General Purpose Single Bipolar Timer (DIP8)
UPC339C - NEC uPC339C Low Power Quad Comparator (DIP14)
PAL1 - Lattice GAL16V8B stamped 'COMUX2' (DIP20)
PAL2 - Lattice GAL16V8B stamped 'COMUX3' (DIP20)
PAL3 - AMI 18CV8PC-25 stamped 'COMUX1' (DIP20)
PAL4 - AMI 18CV8PC-25 stamped 'MMS4P004' (DIP20)
PAL5 - Lattice GAL16V8B stamped 'COMUX5' (DIP20)
PAL6 - Lattice GAL16V8B stamped 'COMUX4' (DIP20)
PAL7 - AMI 18CV8PC-25 stamped 'MMS4P067' (DIP20)
PAL8 - Lattice GAL16V8B stamped 'MMS4G084' (DIP20)
PAL9 - Lattice GAL16V8B stamped 'MMS4G095' (DIP20)
CNN1/2/3- Connectors for analog controls
CN4 - 16 Pin Flat Cable Connector
CNC1/CNC2 \
CNA/CNB | Multi-pin connectors joining top board to bottom board
CN1/2/3 /
Custom IC - KANEKO TBS0P02 Custom Microcontroller (QFP74)
ROMs - (Note: Not all ROM locations are populated on the above layout)
Filename Device Type Use
-----------------------------------------------------
M2P1A1.U7 27C040 (4M) \ 68000 Program
M2P0A1.U8 27C040 (4M) /
M2D0X0.U31 27C010 (1M) MCU Program
M2S0A1.U32 27C040 (4M) \
M2S1A1.U33 27C040 (4M) |
M2-200-00.U49 32M MaskROM (42-Pin) | Sprites
M2-201-00.U50 16M MaskROM (42-Pin) |
M2-202-00.U51 16M MaskROM (42-Pin) /
M2-300-00.U89 16M MaskROM (42-Pin) \
M2-301-00.U90 16M MaskROM (42-Pin) | Tiles
M2B0X0.U93 27C010 (1M) |
M2B1X0.U94 27C010 (1M) /
M2-100-00.U48 8M MASKROM (32-Pin) \
M2W1A1.U47 27C040 (4M) / Oki Samples
***************************************************************************/
ROM_START( gtmr2 )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "m2p0x1a.u8", 0x000000, 0x080000, CRC(c29039fb) SHA1(a16e8863608353c2931e9d45359fbcec8f11ef9d) )
ROM_LOAD16_BYTE( "m2p1x1a.u7", 0x000001, 0x080000, CRC(8ef392c4) SHA1(06bd720d931911e32264183dd215ab70ad6d2961) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code? */
ROM_LOAD16_WORD_SWAP( "m2d0x0.u31", 0x000000, 0x020000, CRC(2e1a06ff) SHA1(475a7555653eefac84307492a385895b839cab0d) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "m2-200-0.u49", 0x000000, 0x400000, CRC(93aafc53) SHA1(1d28b6e3bd61ce9c938fc5303aeabcdefa549852) )
ROM_LOAD( "m2-201-0.u50", 0x400000, 0x200000, CRC(39b60a83) SHA1(aa7b37c7c92bbcf685f4fec84cc6d8a77d26433c) )
ROM_LOAD( "m2-202-0.u51", 0x600000, 0x200000, CRC(fd06b339) SHA1(5de0af7d23147f6eb403700eabd66794198f3641) )
ROM_LOAD16_BYTE( "m2s0x1a.u32", 0x700000, 0x080000, CRC(a485eec6) SHA1(f8aff62daed95a63544106472a9ef34902feaaa2) )
ROM_LOAD16_BYTE( "m2s1x1a.u33", 0x700001, 0x080000, CRC(c5b71bb2) SHA1(874e2a2e19cd8f916afa6fcf54169a8db035fe64) )
ROM_REGION( 0x440000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "m2-300-0.u89", 0x000000, 0x200000, CRC(4dc42fbb) SHA1(f14c287bc60f561eb9a57db4e3390aae9a81c392) )
ROM_LOAD( "m2-301-0.u90", 0x200000, 0x200000, CRC(f4e894f2) SHA1(1f983a1d93845fe298afba60d4dacdd1a10cab7f) )
ROM_LOAD16_BYTE( "m2b0x0.u93", 0x400000, 0x020000, CRC(e023d51b) SHA1(3c9f591f3ca2ee8e1100b83ae8eb593e11e6eac7) )
ROM_LOAD16_BYTE( "m2b1x0.u94", 0x400001, 0x020000, CRC(03c48bdb) SHA1(f5ba45d026530d46f760cf06d02a1ffcca89aa3c) )
ROM_REGION( 0x440000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_COPY("gfx2",0,0,0x440000) // it isn't on the board twice.
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "m2-100-0.u48", 0x000000, 0x100000, CRC(5250fa45) SHA1(b1ad4660906997faea0aa89866de01a0e9f2b61d) )
ROM_REGION( 0x080000, "oki2", 0 ) /* Samples */
ROM_LOAD( "m2w1x0.u47", 0x040000, 0x040000, CRC(1b0513c5) SHA1(8c9ddef19297e1b39d900297005203b7ff28667e) )
ROM_END
ROM_START( gtmr2a )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "m2p0x1.u8", 0x000000, 0x080000, CRC(525f6618) SHA1(da8008cc7768b4e8c0091aa3ea21752d0ca33691) )
ROM_LOAD16_BYTE( "m2p1x1.u7", 0x000001, 0x080000, CRC(914683e5) SHA1(dbb2140f7de86073647abc6e73ba739ea201dd30) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code? */
ROM_LOAD16_WORD_SWAP( "m2d0x0.u31", 0x000000, 0x020000, CRC(2e1a06ff) SHA1(475a7555653eefac84307492a385895b839cab0d) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "m2-200-0.u49", 0x000000, 0x400000, CRC(93aafc53) SHA1(1d28b6e3bd61ce9c938fc5303aeabcdefa549852) )
ROM_LOAD( "m2-201-0.u50", 0x400000, 0x200000, CRC(39b60a83) SHA1(aa7b37c7c92bbcf685f4fec84cc6d8a77d26433c) )
ROM_LOAD( "m2-202-0.u51", 0x600000, 0x200000, CRC(fd06b339) SHA1(5de0af7d23147f6eb403700eabd66794198f3641) )
ROM_LOAD16_BYTE( "m2s0x1.u32", 0x700000, 0x080000, CRC(4069d6c7) SHA1(2ed1cbb7ebde8347e0359cd56ee3a0d4d42d551f) )
ROM_LOAD16_BYTE( "m2s1x1.u33", 0x700001, 0x080000, CRC(c53fe269) SHA1(e6c485bbaea4b67f074b89e047f686f107805713) )
ROM_REGION( 0x440000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "m2-300-0.u89", 0x000000, 0x200000, CRC(4dc42fbb) SHA1(f14c287bc60f561eb9a57db4e3390aae9a81c392) )
ROM_LOAD( "m2-301-0.u90", 0x200000, 0x200000, CRC(f4e894f2) SHA1(1f983a1d93845fe298afba60d4dacdd1a10cab7f) )
ROM_LOAD16_BYTE( "m2b0x0.u93", 0x400000, 0x020000, CRC(e023d51b) SHA1(3c9f591f3ca2ee8e1100b83ae8eb593e11e6eac7) )
ROM_LOAD16_BYTE( "m2b1x0.u94", 0x400001, 0x020000, CRC(03c48bdb) SHA1(f5ba45d026530d46f760cf06d02a1ffcca89aa3c) )
ROM_REGION( 0x440000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_COPY("gfx2",0,0,0x440000) // it isn't on the board twice.
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "m2-100-0.u48", 0x000000, 0x100000, CRC(5250fa45) SHA1(b1ad4660906997faea0aa89866de01a0e9f2b61d) )
ROM_REGION( 0x080000, "oki2", 0 ) /* Samples */
ROM_LOAD( "m2w1x0.u47", 0x040000, 0x040000, CRC(1b0513c5) SHA1(8c9ddef19297e1b39d900297005203b7ff28667e) )
ROM_END
ROM_START( gtmr2u )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "m2p0a1.u8", 0x000000, 0x080000, CRC(813e1d5e) SHA1(602df02933dc7b77be311113af1d1edad2751cc9) )
ROM_LOAD16_BYTE( "m2p1a1.u7", 0x000001, 0x080000, CRC(bee63666) SHA1(07585a63f901f50f2a2314eb4dc4307e7028ded7) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code? */
ROM_LOAD16_WORD_SWAP( "m2d0x0.u31", 0x000000, 0x020000, CRC(2e1a06ff) SHA1(475a7555653eefac84307492a385895b839cab0d) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "m2-200-0.u49", 0x000000, 0x400000, CRC(93aafc53) SHA1(1d28b6e3bd61ce9c938fc5303aeabcdefa549852) )
ROM_LOAD( "m2-201-0.u50", 0x400000, 0x200000, CRC(39b60a83) SHA1(aa7b37c7c92bbcf685f4fec84cc6d8a77d26433c) )
ROM_LOAD( "m2-202-0.u51", 0x600000, 0x200000, CRC(fd06b339) SHA1(5de0af7d23147f6eb403700eabd66794198f3641) )
ROM_LOAD16_BYTE( "m2s0a1.u32", 0x700000, 0x080000, CRC(98977171) SHA1(5b69462e07778b5bd1f5119cae6b63ede38cd642) )
ROM_LOAD16_BYTE( "m2s1a1.u33", 0x700001, 0x080000, CRC(c69a732e) SHA1(810b333f442c0714f4cb8b4a73136d0b44443277) )
ROM_REGION( 0x440000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "m2-300-0.u89", 0x000000, 0x200000, CRC(4dc42fbb) SHA1(f14c287bc60f561eb9a57db4e3390aae9a81c392) )
ROM_LOAD( "m2-301-0.u90", 0x200000, 0x200000, CRC(f4e894f2) SHA1(1f983a1d93845fe298afba60d4dacdd1a10cab7f) )
ROM_LOAD16_BYTE( "m2b0x0.u93", 0x400000, 0x020000, CRC(e023d51b) SHA1(3c9f591f3ca2ee8e1100b83ae8eb593e11e6eac7) )
ROM_LOAD16_BYTE( "m2b1x0.u94", 0x400001, 0x020000, CRC(03c48bdb) SHA1(f5ba45d026530d46f760cf06d02a1ffcca89aa3c) )
ROM_REGION( 0x440000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_COPY("gfx2",0,0,0x440000) // it isn't on the board twice.
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "m2-100-0.u48", 0x000000, 0x100000, CRC(5250fa45) SHA1(b1ad4660906997faea0aa89866de01a0e9f2b61d) )
ROM_REGION( 0x080000, "oki2", 0 ) /* Samples */
ROM_LOAD( "m2w1a1.u47", 0x000000, 0x080000, CRC(15f25342) SHA1(9947e66575738700345c12c104701b812c62ce03) )
ROM_END
/***************************************************************************
Magical Crystals
(c)1991 Kaneko/Atlus
Z00FC-02
CPU : TMP68HC000N-12
Sound: YM2149Fx2 M6295
OSC : 16.0000MHz(X1) 12.0000MHz(X2)
ROMs:
mc100j.u18 - Main programs
mc101j.u19 /
mc000.u38 - Graphics (32pin mask)
mc001.u37 | (32pin mask)
mc002j.u36 / (27c010)
mc010.u04 - Graphics (42pin mask)
mc020.u33 - Graphics (42pin mask)
mc030.u32 - Samples (32pin mask)
PALs (18CV8PC):
u08, u20, u41, u42, u50, u51, u54
Custom chips:
KANEKO VU-001 046A (u53, 48pin PQFP)
KANEKO VU-002 052 151021 (u60, 160pin PQFP)
KANEKO 23160-509 9047EAI VIEW2-CHIP (u24 & u34, 144pin PQFP)
KANEKO MUX2-CHIP (u28, 64pin PQFP)
KANEKO IU-001 9045KP002 (u22, 44pin PQFP)
KANEKO I/O JAMMA MC-8282 047 (u5, 46pin)
699206p (u09, 44pin PQFP)
699205p (u10, 44pin PQFP)
Other:
93C46 EEPROM
DIP settings:
1: Flip screen
2: Test mode
3: Unused
4: Unused
Yes, one program rom actually is a 27C010 and the other one is a 27C020
***************************************************************************/
ROM_START( mgcrystl ) /* Master Up: 92/01/10 14:21:30 */
ROM_REGION( 0x040000*2, "maincpu", ROMREGION_ERASE ) /* 68000 Code */
ROM_LOAD16_BYTE( "mc100e02.u18", 0x000000, 0x020000, CRC(246a1335) SHA1(8333945a92e08a7bff425d2d6602557386016dc5) ) /* Labeled as MC100E/U18-02 */
ROM_LOAD16_BYTE( "mc101e02.u19", 0x000001, 0x040000, CRC(708ea1dc) SHA1(ae6eca6620729bc1e815f1bfbd8fe130f0ba943c) ) /* Labeled as MC101E/U19-02 */
ROM_REGION( 0x280000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "mc000.u38", 0x000000, 0x100000, CRC(28acf6f4) SHA1(6647ad90ea580b65ed28772f9d65352b06833d0c) )
ROM_LOAD( "mc001.u37", 0x100000, 0x080000, CRC(005bc43d) SHA1(6f6cd99e8e60562fa86581008455a6d9d646fa95) )
ROM_RELOAD( 0x180000, 0x080000 )
ROM_LOAD( "mc002e02.u36", 0x200000, 0x020000, CRC(27ac1056) SHA1(34b07c1a0d403ca45c9849d3d8d311012f787df6) ) /* Labeled as MC002E/U36-02 */
ROM_RELOAD( 0x220000, 0x020000 )
ROM_RELOAD( 0x240000, 0x020000 )
ROM_RELOAD( 0x260000, 0x020000 )
ROM_REGION( 0x100000, "gfx2", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "mc010.u04", 0x000000, 0x100000, CRC(85072772) SHA1(25e903cc2c893d61db791d1fe60a1205a4395667) )
ROM_REGION( 0x100000, "gfx3", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "mc020.u34", 0x000000, 0x100000, CRC(1ea92ff1) SHA1(66ec53e664b2a5a751a280a538aaeceafc187ceb) )
ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
ROM_LOAD( "mc030.u32", 0x000000, 0x040000, CRC(c165962e) SHA1(f7e130db387ae9dcb7223f7ad6e51270d3033bc9) )
ROM_END
ROM_START( mgcrystlo ) /* Master Up: 91/12/10 01:56:06 */
ROM_REGION( 0x040000*2, "maincpu", ROMREGION_ERASE ) /* 68000 Code */
ROM_LOAD16_BYTE( "mc100h00.u18", 0x000000, 0x020000, CRC(c7456ba7) SHA1(96c25c3432069373fa86d7af3e093e02e39aea34) ) /* Labeled as MC100H/U18-00 */
ROM_LOAD16_BYTE( "mc101h00.u19", 0x000001, 0x040000, CRC(ea8f9300) SHA1(0cd0d448805aa45986b63befca00b08fe066dbb2) ) /* Labeled as MC101H/U19-00 */
ROM_REGION( 0x280000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "mc000.u38", 0x000000, 0x100000, CRC(28acf6f4) SHA1(6647ad90ea580b65ed28772f9d65352b06833d0c) )
ROM_LOAD( "mc001.u37", 0x100000, 0x080000, CRC(005bc43d) SHA1(6f6cd99e8e60562fa86581008455a6d9d646fa95) )
ROM_RELOAD( 0x180000, 0x080000 )
ROM_LOAD( "mc002h00.u36", 0x200000, 0x020000, CRC(22729037) SHA1(de4e1bdab57aa617411b6327f3db4856970e8953) ) /* Labeled as MC002H/U36-00 */
ROM_RELOAD( 0x220000, 0x020000 )
ROM_RELOAD( 0x240000, 0x020000 )
ROM_RELOAD( 0x260000, 0x020000 )
ROM_REGION( 0x100000, "gfx2", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "mc010.u04", 0x000000, 0x100000, CRC(85072772) SHA1(25e903cc2c893d61db791d1fe60a1205a4395667) )
ROM_REGION( 0x100000, "gfx3", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "mc020.u34", 0x000000, 0x100000, CRC(1ea92ff1) SHA1(66ec53e664b2a5a751a280a538aaeceafc187ceb) )
ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
ROM_LOAD( "mc030.u32", 0x000000, 0x040000, CRC(c165962e) SHA1(f7e130db387ae9dcb7223f7ad6e51270d3033bc9) )
ROM_END
ROM_START( mgcrystlj ) /* Master Up: 92/01/13 14:44:20 */
ROM_REGION( 0x040000*2, "maincpu", ROMREGION_ERASE ) /* 68000 Code */
ROM_LOAD16_BYTE( "mc100j02.u18", 0x000000, 0x020000, CRC(afe5882d) SHA1(176e6e12e3df63c08d7aff781f5e5a9bd83ec293) ) /* Labeled as MC100J/U18-02 */
ROM_LOAD16_BYTE( "mc101j02.u19", 0x000001, 0x040000, CRC(60da5492) SHA1(82b90a617d355825624ce9fb30bddf4714bd0d18) ) /* Labeled as MC101J/U19-02 */
ROM_REGION( 0x280000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "mc000.u38", 0x000000, 0x100000, CRC(28acf6f4) SHA1(6647ad90ea580b65ed28772f9d65352b06833d0c) )
ROM_LOAD( "mc001.u37", 0x100000, 0x080000, CRC(005bc43d) SHA1(6f6cd99e8e60562fa86581008455a6d9d646fa95) )
ROM_RELOAD( 0x180000, 0x080000 )
ROM_LOAD( "mc002e02.u36", 0x200000, 0x020000, CRC(27ac1056) SHA1(34b07c1a0d403ca45c9849d3d8d311012f787df6) ) /* Labeled as MC002J/U36-02, but same as MC002E/U36-02 */
ROM_RELOAD( 0x220000, 0x020000 )
ROM_RELOAD( 0x240000, 0x020000 )
ROM_RELOAD( 0x260000, 0x020000 )
ROM_REGION( 0x100000, "gfx2", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "mc010.u04", 0x000000, 0x100000, CRC(85072772) SHA1(25e903cc2c893d61db791d1fe60a1205a4395667) )
ROM_REGION( 0x100000, "gfx3", 0 ) /* Tiles (Scrambled) */
ROM_LOAD( "mc020.u34", 0x000000, 0x100000, CRC(1ea92ff1) SHA1(66ec53e664b2a5a751a280a538aaeceafc187ceb) )
ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
ROM_LOAD( "mc030.u32", 0x000000, 0x040000, CRC(c165962e) SHA1(f7e130db387ae9dcb7223f7ad6e51270d3033bc9) )
ROM_END
/***************************************************************************
Shogun Warriors (Europe Rev.xx)(Kaneko 1992)
Dumped from an original Kaneko PCB. Board No. Z01DK-002 / Serial FB92E01342. + Top board "Z05DP FOR Z01DK"
Two Program roms are equal to the Japanese version. See Below:
fb000e.u43 = fb001e.u43 Shogun Warriors <Note: Different label compared to Mame.
fb001e.u101 = fb000e.u42 Shogun Warriors <Note: Different label/position compared to Mame.
fb030e.u61 = fb030j.u61 Fujiyama Buster(Japan) <Note: Same as the Japanese version in Mame.
fb031e.u62 NO MATCH
fb040e.u33 = fb040j.u33 Fujiyama Buster (Japan) <Note: Same as the Japanese version in Mame.
The rom positions are equal to the Japanese version in Mame (Same Hardware revision).
The "e" suffix on the roms of "Shogun Warriors" that is previously
in Mame indicates that it is an European Version too, so this must be
an earlier or later European revision.
Some hardware(custom chip) differences compared with the info in the Mame source:
Fujiyama Buster(Japan) Shogun Warriors (Europe) (My Dump)
KANEKO JAPAN 9152EV 175101 (160 Pin PQFP) = KANEKO JAPAN 9202EV 175071 (160 Pin PQFP)
KANEKO JAPAN 9203 T (44 PIN PQFP) = KANEKO JAPAN 9204 T (44 PIN PQFP)
***************************************************************************/
ROM_START( shogwarr )
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "fb030e.u61", 0x000000, 0x020000, CRC(32ce7909) SHA1(02d87342706ac9547eb611bd542f8498ba41e34a) )
ROM_LOAD16_BYTE( "fb031e.u62", 0x000001, 0x020000, CRC(228aeaf5) SHA1(5e080d7975bc5dcf6fccfbc286eafe939496d9bf) )
ROM_REGION( 0x020000, "cpu1", 0 ) /* MCU Code */
ROM_LOAD( "fb040e.u33", 0x000000, 0x020000, CRC(299d0746) SHA1(67fe3a47ab01fa02ce2bb5836c2041986c19d875) )
ROM_REGION( 0x1000000, "gfx1", ROMREGION_ERASEFF ) /* Sprites */
ROM_LOAD( "fb-020a.u1", 0x000000, 0x100000, CRC(87e55c6d) SHA1(87886c045d7c30b8dee3c8fb0bf8f2cdbc5fd7fb) )
ROM_LOAD( "fb020b.u2", 0x100000, 0x100000, CRC(276b9d7b) SHA1(7a154f65b4737f2b6ac8effa3352711079f571dc) )
ROM_LOAD( "fb021a.u3", 0x200000, 0x100000, CRC(7da15d37) SHA1(345cf2242e8210a697294a45197f2b3b974de885) )
ROM_LOAD( "fb021b.u4", 0x300000, 0x100000, CRC(6a512d7b) SHA1(7fc3002d23262a9a590a283ea9e111e38d889ef2) )
ROM_LOAD( "fb-22a.u5", 0x400000, 0x100000, CRC(9039e5d3) SHA1(222452cd7947f7c99c68e495835cca62e0449b5c) )
ROM_LOAD( "fb-22b.u6", 0x500000, 0x100000, CRC(96ac9e54) SHA1(2b066375963dc57fe2ce89d65f6c0a9d183a838d) )
ROM_LOAD( "fb023.u7", 0x600000, 0x100000, CRC(132794bd) SHA1(bcc73c3183c59a4b66f79d04774773b8a9239501) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "fb010.u65", 0x000000, 0x100000, CRC(296ffd92) SHA1(183a28e4594c428deb4726ed22d5166592b94b60) ) // 42 pin mask rom
ROM_LOAD( "fb011.u66", 0x100000, 0x080000, CRC(500a0367) SHA1(6dc5190f81b21f59ee56a3b2332c8d86d6599782) ) // 40 pin mask rom (verified correct)
ROM_REGION( 0x100000, "oki1", 0 )
ROM_LOAD( "fb001e.u43", 0x000000, 0x080000, CRC(f524aaa1) SHA1(006a886f9df2e57c51b61c6cea70a6574fc20304) )
ROM_LOAD( "fb000e.u42", 0x080000, 0x080000, CRC(969f1465) SHA1(4f56d1ad341b08f4db41b7ab2498740612ff7c3d) )
ROM_REGION( 0x200000, "oki2", 0 )
ROM_LOAD( "fb-002.u45", 0x000000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) )
ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) )
ROM_END
/***************************************************************************
Shogun Warriors
Shogun Warriors, Kaneko 1992
fb010.u65 fb040.u33
fb011.u66
rb012.u67
rb013.u68
fb001.u43
68000-12 fb000.u42 m6295
51257 fb030.u61 fb002.u44 m6295
51257 fb031.u62 fb003.u45
fb021a.u3
fb021b.u4
fb022a.u5
fb023.u7 fb022b.u6
fb020a.u1 fb020b.u2
---------------------------------------------------------------------------
Game code
---------------------------------------------------------------------------
102e04-7 <- !b80004-7
102e18.w -> $800000
102e1c.w -> $800002 , $800006
102e1a.w -> $800004
102e20.w -> $800008
ROUTINES:
6622 print ($600000)
***************************************************************************/
// the 'green garbage' on the VS logo shown in the video ( http://www.youtube.com/watch?v=lz4gY9d7uxw ) doesn't happen on the real PCB,
// it appears to be an encoding artifact on the videos uploaded by this poster
ROM_START( shogwarru )
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "fb030a.u61", 0x000000, 0x020000, CRC(a04106c6) SHA1(95ab084f2e709be7cec2964cb09bcf5a8d3aacdf) )
ROM_LOAD16_BYTE( "fb031a.u62", 0x000001, 0x020000, CRC(d1def5e2) SHA1(f442de4433547e52b483549aca5786e4597a7122) )
ROM_REGION( 0x020000, "cpu1", 0 ) /* MCU Code */
ROM_LOAD( "fb040a.u33", 0x000000, 0x020000, CRC(4b62c4d9) SHA1(35c943dde70438a411714070e42a84366db5ef83) )
ROM_REGION( 0x1000000, "gfx1", ROMREGION_ERASEFF ) /* Sprites */
ROM_LOAD( "fb-020a.u1", 0x000000, 0x100000, CRC(87e55c6d) SHA1(87886c045d7c30b8dee3c8fb0bf8f2cdbc5fd7fb) )
ROM_LOAD( "fb020b.u2", 0x100000, 0x100000, CRC(276b9d7b) SHA1(7a154f65b4737f2b6ac8effa3352711079f571dc) )
ROM_LOAD( "fb021a.u3", 0x200000, 0x100000, CRC(7da15d37) SHA1(345cf2242e8210a697294a45197f2b3b974de885) )
ROM_LOAD( "fb021b.u4", 0x300000, 0x100000, CRC(6a512d7b) SHA1(7fc3002d23262a9a590a283ea9e111e38d889ef2) )
ROM_LOAD( "fb-22a.u5", 0x400000, 0x100000, CRC(9039e5d3) SHA1(222452cd7947f7c99c68e495835cca62e0449b5c) )
ROM_LOAD( "fb-22b.u6", 0x500000, 0x100000, CRC(96ac9e54) SHA1(2b066375963dc57fe2ce89d65f6c0a9d183a838d) )
ROM_LOAD( "fb023.u7", 0x600000, 0x100000, CRC(132794bd) SHA1(bcc73c3183c59a4b66f79d04774773b8a9239501) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "fb010.u65", 0x000000, 0x100000, CRC(296ffd92) SHA1(183a28e4594c428deb4726ed22d5166592b94b60) ) // 42 pin mask rom
ROM_LOAD( "fb011.u66", 0x100000, 0x080000, CRC(500a0367) SHA1(6dc5190f81b21f59ee56a3b2332c8d86d6599782) ) // 40 pin mask rom (verified correct)
ROM_REGION( 0x100000, "oki1", 0 )
ROM_LOAD( "fb001e.u43", 0x000000, 0x080000, CRC(f524aaa1) SHA1(006a886f9df2e57c51b61c6cea70a6574fc20304) )
ROM_LOAD( "fb000e.u42", 0x080000, 0x080000, CRC(969f1465) SHA1(4f56d1ad341b08f4db41b7ab2498740612ff7c3d) )
ROM_REGION( 0x200000, "oki2", 0 )
ROM_LOAD( "fb-002.u45", 0x000000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) )
ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) )
ROM_END
/***************************************************************************
Fujiyama Buster
Japan (c) 1992 Kaneko
This is the Japanese version of Shogun Warriors
Main PCB No: ZO1DK-002 (Same as B.Rap Boys)
ROM PCB No: ZO5DP
CPU: TMP68HC000N-12 (Toshiba)
SND: OKI M6295 x 2
OSC: 16.000MHz, 12.000MHz
DIP: 1 x 8 POSITION
OTHER:
93C46 (8 Pin DIP, EEPROM, Linked to FB-040.U33 & CALC3 Chip)
KANEKO JAPAN 9152EV 175101 (160 Pin PQFP)
KANEKO VIEW2-CHIP (144 Pin PQFP)
KANEKO MUX2-CHIP (64 Pin PQFP)
KANEKO CALC3 508 (74 Pin PQFP, NEC uPD78322 MCU, Linked to FB-040.U33)
KANEKO JAPAN 9203 T (44 PIN PQFP)
Differences from Shogun Warriors:
File Name CRC32 Labelled As ROM Type
===============================================
fb030j.u61 0x32ce7909 FB030J/U61-00 27C010 | 68000 CPU Code
fb031j.u62 0x000c8c08 FB031J/U62-00 27C010 /
fb040j.u33 0x299d0746 FB040J/U33-00 27C010 - MCU Code? 68000 Code snipets??
fb000j.u43 0xa7522555 FB000J/U43-00 27C040 | Japanese Sound Samples
fb001j_u.101 0x07d4e8e2 FB001J/U101-0 27C040 /
NOTE: U67 & U68 are empty on this Original board.
***************************************************************************/
ROM_START( fjbuster ) // Fujiyama Buster - Japan version of Shogun Warriors
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "fb030j.u61", 0x000000, 0x020000, CRC(32ce7909) SHA1(02d87342706ac9547eb611bd542f8498ba41e34a) )
ROM_LOAD16_BYTE( "fb031j.u62", 0x000001, 0x020000, CRC(000c8c08) SHA1(439daac1541c34557b5a4308ed69dfebb93abe13) )
ROM_REGION( 0x020000, "cpu1", 0 ) /* MCU Code */
ROM_LOAD( "fb040j.u33", 0x000000, 0x020000, CRC(299d0746) SHA1(67fe3a47ab01fa02ce2bb5836c2041986c19d875) )
ROM_REGION( 0x1000000, "gfx1", ROMREGION_ERASEFF ) /* Sprites */
ROM_LOAD( "fb-020a.u1", 0x000000, 0x100000, CRC(87e55c6d) SHA1(87886c045d7c30b8dee3c8fb0bf8f2cdbc5fd7fb) )
ROM_LOAD( "fb020b.u2", 0x100000, 0x100000, CRC(276b9d7b) SHA1(7a154f65b4737f2b6ac8effa3352711079f571dc) )
ROM_LOAD( "fb021a.u3", 0x200000, 0x100000, CRC(7da15d37) SHA1(345cf2242e8210a697294a45197f2b3b974de885) )
ROM_LOAD( "fb021b.u4", 0x300000, 0x100000, CRC(6a512d7b) SHA1(7fc3002d23262a9a590a283ea9e111e38d889ef2) )
ROM_LOAD( "fb-22a.u5", 0x400000, 0x100000, CRC(9039e5d3) SHA1(222452cd7947f7c99c68e495835cca62e0449b5c) )
ROM_LOAD( "fb-22b.u6", 0x500000, 0x100000, CRC(96ac9e54) SHA1(2b066375963dc57fe2ce89d65f6c0a9d183a838d) )
ROM_LOAD( "fb023.u7", 0x600000, 0x100000, CRC(132794bd) SHA1(bcc73c3183c59a4b66f79d04774773b8a9239501) )
ROM_REGION( 0x400000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "fb010.u65", 0x000000, 0x100000, CRC(296ffd92) SHA1(183a28e4594c428deb4726ed22d5166592b94b60) ) // 42 pin mask rom
ROM_LOAD( "fb011.u66", 0x100000, 0x080000, CRC(500a0367) SHA1(6dc5190f81b21f59ee56a3b2332c8d86d6599782) ) // 40 pin mask rom (verified correct)
ROM_REGION( 0x100000, "oki1", 0 )
ROM_LOAD( "fb000j.u43", 0x000000, 0x080000, CRC(a7522555) SHA1(ea88d90dda20bc309f98a1924c41551e7708e6af) )
ROM_LOAD( "fb001j_u.101", 0x080000, 0x080000, CRC(07d4e8e2) SHA1(0de911f452ddeb54b0b435b9c1cf5d5881175d44) )
ROM_REGION( 0x200000, "oki2", 0 )
ROM_LOAD( "fb-002.u45", 0x000000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) )
ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) )
ROM_END
/***************************************************************************
B.Rap Boys
B.Rap Boys
Kaneko, 1992
Game is a beat-em up, where a bunch of rapping boys (The B.Rap Boys) beats
up anyone and anything that gets in their way, smashing shop windows
and other property with their fists, chairs, wooden bats and whatever else
they can lay their hands on!
Main PCB No: ZO1DK-002
ROM PCB No: ZO1DK-EXROM
CPU: TMP68HC000N-12 @ 12.000MHz
SND: OKI M6295 x 2 @ 2.000MHz [16/8]. Pin 7 is low.
OSC: 16.000MHz, 12.000MHz
DIP: 1 x 8 POSITION
SW1 - PCB location for 2 position DIP but location is unpopulated.
SW2:
1 2 3 4 5 6 7 8
SCREEN FLIP NORMAL OFF
FLIP ON
MODE NORMAL OFF
TEST ON
SWITCH TEST [1] NO OFF
YES ON
POSITION #4 NOT USED OFF
COIN TYPE LOCAL COIN OFF
COMMON COIN ON
GAME TYPE 3 PLAYERS OFF
2 PLAYERS ON
DIFFICULTY [2] EASY ON OFF
NORMAL OFF OFF
HARD OFF ON
VERY HARD ON ON
[1] This additional test becomes available in test mode when this DIP is ON.
[2] Additional settings available in test mode via another on-screen menu.
Some text is written in Japanese. See scan in archive for details.
Control is via 8 Way Joystick and 2 buttons
There are two extra pin connectors near the JAMMA connector.
Pinouts are....
(A)
10 3P START SW
9 3P COIN SW
8 3P BUTTON 2
7 3P BUTTON 1
6 3P UP
5 3P DOWN
4 3P LEFT
3 3P RIGHT
2 GND
1 GND
(B)
6 COIN COUNTER 3
5 COIN LOCKOUT 3
4 TOTAL COIN COUNTER
3 NC
2 NC
1 NC
RAM:
M5M4464 x 6, M51257AL x 2, KM6264BLS x 2, D42101C x 2, LH5116D x 2, CAT71C256 x 2
OTHER:
93C46 (8 PIN DIP, EEPROM, LINKED TO RB-006.U33)
KANEKO JAPAN 9152EV 175101 (160 PIN PQFP)
KANEKO VIEW2-CHIP (144 PIN PQFP)
KANEKO MUX2-CHIP (64 PIN PQFP)
KANEKO CALC3 508 (74 PIN PQFP, NEC uPD78322 MCU, LINKED TO RB-006.U33)
KANEKO JAPAN 9204 T (44 PIN PQFP)
PALs (x 11, read protected, not dumped)
VSync is 59.1854Hz
HSync is 15.625kHz
ROMs:
RB-004.U61 27C010 \ Main program
RB-005.U62 27C010 /
RB-000.U43 2M mask \
RB-001.U44 4M mask | Located near main program and OKI M6295 chips
RB-002.U45 4M mask | Possibly sound related / OKI Samples etc..
RB-003.101 4M mask /
RB-006.U33 27C010 MCU program? (Linked to CALC3 508)
RB-010.U65 8M mask \
RB-011.U66 8M mask | GFX
RB-012.U67 8M mask |
RB-013.U68 8M mask /
RB-021.U76 4M mask \
RB-022.U77 4M mask |
RB-023.U78 4M mask | GFX (located under a plug-in ROM PCB)
RB-024.U79 4M mask /
RB-020.U2 4M mask \
RB-025.U4 27C040 | GFX (located on a plug-in ROM PCB)
RB-026.U5 27C040 /
-----
Game can be ROM Swapped onto a Shogun Warriors board and works
***************************************************************************/
ROM_START( brapboys ) /* Single PCB, fully populated, no rom sub board */
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "rb-030.u61", 0x000000, 0x020000, CRC(ccbe9a53) SHA1(b96baf0ecbf6550bfaf8e512d9275c53a3928bee) )
ROM_LOAD16_BYTE( "rb-031.u62", 0x000001, 0x020000, CRC(c72b8dda) SHA1(450e1fb8acb140fa0ab23630daad82924f7ce72b) )
ROM_REGION( 0x020000, "cpu1", 0 ) /* MCU Code */
ROM_LOAD( "rb-040.u33", 0x000000, 0x020000, CRC(757c6e19) SHA1(0f1c37b1b1eb6b230c593e4648c4302f413a61f5) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "rb-020.c2", 0x000000, 0x100000, CRC(ce220d38) SHA1(b88d7c89a3e1a826bf19a1fa692ec77c944596d9) )
ROM_LOAD( "rb-021.u76", 0x100000, 0x100000, CRC(74001407) SHA1(90002056ceb4e0401246950b8c3f996af0a2463c) )
ROM_LOAD( "rb-022.u77", 0x200000, 0x100000, CRC(cb3f42dc) SHA1(5415f15621924dd263b8fe7daaf3dc25d470b814) )
ROM_LOAD( "rb-023.u78", 0x300000, 0x100000, CRC(0e6530c5) SHA1(72bff46f0672927e540f4f3546ae533dd0a231e0) )
ROM_LOAD( "rb-024.u79", 0x400000, 0x080000, CRC(65fa6447) SHA1(551e540d7bf412753b4a7098e25e6f9d8774bcf4) ) // correct, both halves identical when dumped as larger
ROM_LOAD( "rb-025.u80", 0x500000, 0x040000, CRC(36cd6b90) SHA1(45c50f2652726ded67c9c24185a71a6367e09270) ) // eprom, contains title logo for this version
ROM_REGION( 0x400000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "rb-010.u65", 0x000000, 0x100000, CRC(ffd73f87) SHA1(1a661f71976be61c22d9b962850e738ba17f1d45) )
ROM_LOAD( "rb-011.u66", 0x100000, 0x100000, CRC(d9325f78) SHA1(346832608664aa8f3ac9260a549903386b4125a8) )
ROM_LOAD( "rb-012.u67", 0x200000, 0x100000, CRC(bfdbe0d1) SHA1(3abc5398ee8ee1871b4d081f9b748539d69bcdba) )
ROM_LOAD( "rb-013.u68", 0x300000, 0x100000, CRC(28c37fe8) SHA1(e10dd1a810983077328b44e6e33ce2e899c506d2) )
ROM_REGION( 0x100000, "oki1", 0 )
ROM_LOAD( "rb-000.u43", 0x000000, 0x080000, CRC(58ad1a62) SHA1(1d2643b5f6eac22682972a88d284e00de3e3b223) )
ROM_LOAD( "rb-003.101", 0x080000, 0x080000, CRC(2cac25d7) SHA1(0412c317bf650a93051b9304d23035efde0c026a) )
ROM_REGION( 0x200000, "oki2", 0 )
ROM_LOAD( "rb-001.u44", 0x000000, 0x100000, CRC(7cf774b3) SHA1(3fb0a5096ce9480f97e311439042eb8cbc26efb4) )
ROM_LOAD( "rb-002.u45", 0x100000, 0x100000, CRC(e4b30444) SHA1(be6756dce3721226e0b7f5d4d168008c31aeea8e) )
ROM_END
ROM_START( brapboysj ) /* The Japanese version has an extra rom??? and used a rom sub board */
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "rb-004.u61", 0x000000, 0x020000, CRC(5432442c) SHA1(f0f7328ece96ef25e6d4fd1958d734f64a9ef371) )
ROM_LOAD16_BYTE( "rb-005.u62", 0x000001, 0x020000, CRC(118b3cfb) SHA1(1690ecf5c629879bd97131ff77029e152919e45d) )
ROM_REGION( 0x020000, "cpu1", 0 ) /* MCU Code */
ROM_LOAD( "rb-006.u33", 0x000000, 0x020000, CRC(f1d76b20) SHA1(c571b5f28e529589ee2d7697ef5d4b60ccb66e7a) )
ROM_REGION( 0x1000000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "rb-020.c2", 0x000000, 0x100000, CRC(ce220d38) SHA1(b88d7c89a3e1a826bf19a1fa692ec77c944596d9) )
ROM_LOAD( "rb-021.u76", 0x100000, 0x100000, CRC(74001407) SHA1(90002056ceb4e0401246950b8c3f996af0a2463c) )
ROM_LOAD( "rb-022.u77", 0x200000, 0x100000, CRC(cb3f42dc) SHA1(5415f15621924dd263b8fe7daaf3dc25d470b814) )
ROM_LOAD( "rb-023.u78", 0x300000, 0x100000, CRC(0e6530c5) SHA1(72bff46f0672927e540f4f3546ae533dd0a231e0) )
ROM_LOAD( "rb-024.u79", 0x400000, 0x080000, CRC(65fa6447) SHA1(551e540d7bf412753b4a7098e25e6f9d8774bcf4) ) // correct, both halves identical when dumped as larger
ROM_LOAD( "rb-025.u4", 0x500000, 0x080000, CRC(aa795ba5) SHA1(c5256dcceded2e76f548b60c18e51d0dd0209d81) ) // eprom, special title screen
ROM_LOAD( "rb-026.u5", 0x580000, 0x080000, CRC(bb7604d4) SHA1(57d51ce4ea2000f9a50bae326cfcb66ec494249f) ) // eprom, logs that bounce past
ROM_REGION( 0x400000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "rb-010.u65", 0x000000, 0x100000, CRC(ffd73f87) SHA1(1a661f71976be61c22d9b962850e738ba17f1d45) )
ROM_LOAD( "rb-011.u66", 0x100000, 0x100000, CRC(d9325f78) SHA1(346832608664aa8f3ac9260a549903386b4125a8) )
ROM_LOAD( "rb-012.u67", 0x200000, 0x100000, CRC(bfdbe0d1) SHA1(3abc5398ee8ee1871b4d081f9b748539d69bcdba) )
ROM_LOAD( "rb-013.u68", 0x300000, 0x100000, CRC(28c37fe8) SHA1(e10dd1a810983077328b44e6e33ce2e899c506d2) )
ROM_REGION( 0x100000, "oki1", 0 )
ROM_LOAD( "rb-000.u43", 0x000000, 0x080000, CRC(58ad1a62) SHA1(1d2643b5f6eac22682972a88d284e00de3e3b223) )
ROM_LOAD( "rb-003.101", 0x080000, 0x080000, CRC(2cac25d7) SHA1(0412c317bf650a93051b9304d23035efde0c026a) )
ROM_REGION( 0x200000, "oki2", 0 )
ROM_LOAD( "rb-001.u44", 0x000000, 0x100000, CRC(7cf774b3) SHA1(3fb0a5096ce9480f97e311439042eb8cbc26efb4) )
ROM_LOAD( "rb-002.u45", 0x100000, 0x100000, CRC(e4b30444) SHA1(be6756dce3721226e0b7f5d4d168008c31aeea8e) )
ROM_END
/**********************************************************************
Bonk's Adventure
Bonk's Adventure
Kaneko, 1994
PCB Layout
----------
Z09AF-003
|--------------------------------------------------------|
| LA4460 PC604109.101 PAL 3664 3664 PC500105.55 |
| M6295 PC603108.102 PAL |
| M6295 PC602107.100 PAL VIEW2-CHIP |
| PC601106.99 PAL |
| PC400104.51 |
| 3664 3664 |
| 62256 |
|J KANEKO 62256 VIEW2-CHIP |
|A JAPAN |
|M 9203T 424260 |
|M |
|A 62256 62256 6116 |
| PRG.7 PRG.8 6116 KANEKO 424260 |
| 3364 KC-002 PAL |
| 62256 68000 3364 |
| 62256 |
| PAL PAL 20MHz |
| PAL PAL 16MHz PC600106.42 |
| PAL PC700107.43 |
| MCU.124 PC200102.40 |
| DSW(8) KANEKO 93C46 PC100101.37 PC300103.38 |
| TBSOP01 27MHz 33.3333MHz |
|--------------------------------------------------------|
Notes:
68000 clock: 16.000MHz
M6295 clock: 2.000MHz, Sample Rate: /165 (both)
VSync: 60Hz
HSync: 15.625kHz
PC100-PC500: 16M MASK
PC601-PC604: 8M MASK
PC600-PC700: 27C4001
PRG's: 27C4001
MCU : 27C010
**********************************************************************/
ROM_START( bonkadv )
ROM_REGION( 0x100000, "gtmr", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "prg.8", 0x000000, 0x080000, CRC(af2e60f8) SHA1(406f79e155d1244b84f8c89c25b37188e1b4f4a6) )
ROM_LOAD16_BYTE( "prg.7", 0x000001, 0x080000, CRC(a1cc6a78) SHA1(a9cea21a6a0dfd3b0952664681c057190aa27f8c) )
ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code */
ROM_LOAD16_WORD_SWAP( "mcu.124", 0x000000, 0x020000, CRC(9d4e2724) SHA1(9dd43703265e39f876877020a0ac3875de6faa8d) )
ROM_REGION( 0x500000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "pc100101.37", 0x000000, 0x200000, CRC(c96e7c10) SHA1(607cc7745abc3ff820047e8a00060ece61646623) )
ROM_LOAD( "pc200102.40", 0x200000, 0x100000, CRC(c2b7a26a) SHA1(1c8783442e0ccf30c5640866c5493f1dc1dd48f8) )
ROM_LOAD( "pc300103.38", 0x300000, 0x100000, CRC(51ee162c) SHA1(b33afc7d1e9f55f191e08472e8c51ca931b0389d) )
ROM_LOAD16_BYTE( "pc600106.42", 0x400000, 0x080000, CRC(25877026) SHA1(96814d97e9f9284f98c35edfe5e76677ac50dd97) )
ROM_LOAD16_BYTE( "pc700107.43", 0x400001, 0x080000, CRC(bfe21c44) SHA1(9900a6fe4182b720a90d64d368bd0fd08bf936a8) )
ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "pc400104.51", 0x000000, 0x100000, CRC(3b176f84) SHA1(0ad6fd5f03d275165490881173bafcb0a94762eb) )
ROM_REGION( 0x200000, "gfx3", 0 ) /* Tiles (scrambled) */
ROM_LOAD( "pc500105.55", 0x000000, 0x100000, CRC(bebb3edc) SHA1(e0fed4307316deaeb811ec29f5022adeaf577a95) )
ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
ROM_LOAD( "pc604109.101", 0x000000, 0x100000, CRC(76025530) SHA1(e0c8192d783057798eea084aa3e87938f6e01cb7) )
ROM_REGION( 0x300000, "oki2", 0 ) /* Samples */
ROM_LOAD( "pc601106.99", 0x000000, 0x100000, CRC(a893651c) SHA1(d221ce89f19a76be497724f6c16fab82c8a52661) )
ROM_LOAD( "pc602107.100", 0x100000, 0x100000, CRC(0fbb23aa) SHA1(69b620375c65246317d7105fbc414f3c36e02b2c) )
ROM_LOAD( "pc603108.102", 0x200000, 0x100000, CRC(58458985) SHA1(9a846d604ba901eb2a59d2b6cd9c42e3b43adb6a) )
ROM_END
static DRIVER_INIT( bloodwar )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
machine.device<nvram_device>("nvram")->set_base(state->m_nvram_save, sizeof(state->m_nvram_save));
DRIVER_INIT_CALL(samplebank);
DRIVER_INIT_CALL(decrypt_toybox_rom);
}
static DRIVER_INIT( gtmr2 )
{
kaneko16_state *state = machine.driver_data<kaneko16_state>();
machine.device<nvram_device>("nvram")->set_base(state->m_nvram_save, sizeof(state->m_nvram_save));
DRIVER_INIT_CALL(samplebank);
DRIVER_INIT_CALL(decrypt_toybox_rom_alt);
}
static DRIVER_INIT( calc3 )
{
DRIVER_INIT_CALL(calc3_scantables);
DRIVER_INIT_CALL(kaneko16);
// MCU is a 78K series III type CPU
}
static DRIVER_INIT( shogwarr )
{
// default sample banks
kaneko16_common_oki_bank_w(machine, "bank10", "oki1", 0, 0x30000, 0x10000);
kaneko16_common_oki_bank_w(machine, "bank11", "oki2", 0, 0x00000, 0x40000);
DRIVER_INIT_CALL(calc3);
}
static DRIVER_INIT( brapboys )
{
// sample banking is different on brap boys for the music, why? GALs / PALs ?
machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0xe00000, 0xe00001, FUNC(brapboys_oki_bank_w));
// default sample banks
kaneko16_common_oki_bank_w(machine, "bank10", "oki1", 0, 0x30000, 0x10000);
kaneko16_common_oki_bank_w(machine, "bank11", "oki2", 0, 0x20000, 0x20000);
DRIVER_INIT_CALL(calc3);
}
/***************************************************************************
Game drivers
***************************************************************************/
/* Working games */
GAME( 1991, berlwall, 0, berlwall, berlwall, berlwall, ROT0, "Kaneko", "The Berlin Wall", 0 )
GAME( 1991, berlwallt,berlwall, berlwall, berlwalt, berlwall, ROT0, "Kaneko", "The Berlin Wall (bootleg ?)", 0 )
GAME( 1991, mgcrystl, 0, mgcrystl, mgcrystl, kaneko16, ROT0, "Kaneko", "Magical Crystals (World, 92/01/10)", 0 )
GAME( 1991, mgcrystlo,mgcrystl, mgcrystl, mgcrystl, kaneko16, ROT0, "Kaneko", "Magical Crystals (World, 91/12/10)", 0 )
GAME( 1991, mgcrystlj,mgcrystl, mgcrystl, mgcrystl, kaneko16, ROT0, "Kaneko (Atlus license)", "Magical Crystals (Japan, 92/01/13)", 0 )
GAME( 1992, blazeon, 0, blazeon, blazeon, kaneko16, ROT0, "Atlus", "Blaze On (Japan)", 0 )
GAME( 1992, explbrkr, 0, bakubrkr, bakubrkr, kaneko16, ROT90, "Kaneko", "Explosive Breaker", 0 )
GAME( 1992, bakubrkr, explbrkr, bakubrkr, bakubrkr, kaneko16, ROT90, "Kaneko", "Bakuretsu Breaker", 0 )
GAME( 1994, bonkadv, 0, bonkadv , bonkadv, bloodwar, ROT0, "Kaneko", "B.C. Kid / Bonk's Adventure / Kyukyoku!! PC Genjin", 0 )
GAME( 1994, bloodwar, 0, bloodwar, bloodwar, bloodwar, ROT0, "Kaneko", "Blood Warrior", 0 )
GAME( 1994, oedfight, bloodwar, bloodwar, bloodwar, bloodwar, ROT0, "Kaneko", "Oedo Fight (Japan Bloodshed Ver.)", 0 )
GAME( 1994, gtmr, 0, gtmr, gtmr, bloodwar, ROT0, "Kaneko", "1000 Miglia: Great 1000 Miles Rally (94/07/18)", 0 )
GAME( 1994, gtmra, gtmr, gtmr, gtmr, bloodwar, ROT0, "Kaneko", "1000 Miglia: Great 1000 Miles Rally (94/06/13)", 0 )
GAME( 1994, gtmre, gtmr, gtmr, gtmr, gtmr2, ROT0, "Kaneko", "Great 1000 Miles Rally: Evolution Model!!! (94/09/06)", 0 )
GAME( 1994, gtmrusa, gtmr, gtmr, gtmr, gtmr2, ROT0, "Kaneko", "Great 1000 Miles Rally: U.S.A Version! (94/09/06)", 0 ) // U.S.A version seems part of the title, rather than region
GAME( 1995, gtmr2, 0, gtmr2, gtmr2, gtmr2, ROT0, "Kaneko", "Mille Miglia 2: Great 1000 Miles Rally (95/05/24)", 0 )
GAME( 1995, gtmr2a, gtmr2, gtmr2, gtmr2, gtmr2, ROT0, "Kaneko", "Mille Miglia 2: Great 1000 Miles Rally (95/04/04)", 0 )
GAME( 1995, gtmr2u, gtmr2, gtmr2, gtmr2, gtmr2, ROT0, "Kaneko", "Great 1000 Miles Rally 2 USA (95/05/18)", 0 )
// some functionality of the protection chip still needs investigating on these, but they seem to be playable
GAME( 1992, brapboys, 0, brapboys, brapboys, brapboys, ROT0, "Kaneko", "B.Rap Boys (World)", 0 )
GAME( 1992, brapboysj,brapboys, brapboys, brapboys, brapboys, ROT0, "Kaneko", "B.Rap Boys Special (Japan)", 0 )
GAME( 1992, shogwarr, 0, shogwarr, shogwarr, shogwarr, ROT0, "Kaneko", "Shogun Warriors (World)", 0 )
GAME( 1992, shogwarru,shogwarr, shogwarr, shogwarr, shogwarr, ROT0, "Kaneko", "Shogun Warriors (US)", 0 )
GAME( 1992, fjbuster, shogwarr, shogwarr, shogwarr, shogwarr, ROT0, "Kaneko", "Fujiyama Buster (Japan)", 0 )