4005 lines
187 KiB
C++
4005 lines
187 KiB
C++
// license:BSD-3-Clause
|
|
// copyright-holders:Nicola Salmoria
|
|
/***************************************************************************
|
|
|
|
Various Video System Co. games using the C7-01 GGA, VS8803, VS8904, VS8905
|
|
video chips.
|
|
C7-01 GGA is used in a lot of games, some of them without sprites. So it
|
|
either controls tilemaps, or the video signal, or both.
|
|
I think 8904/8905 handle sprites, don't know about 8803.
|
|
tail2nos doesn't have the 8904/8905, and indeed it has a different sprite
|
|
system.
|
|
|
|
Driver by Nicola Salmoria
|
|
|
|
|
|
Notes:
|
|
- Sprite zoom is probably not 100% accurate.
|
|
In pspikes, the zooming text during attract mode is horrible.
|
|
- spinlbrk: enemy sprites sometimes shows 1 pixel off on bottom if they are covered by big objects,
|
|
such as:
|
|
- tank boss in stage 1;
|
|
- trenches in Greece stage;
|
|
chip 0 draws player sprite, chip 1 all enemies. Assume btanb.
|
|
|
|
pspikes/turbofrc/aerofgtb write to two addresses which look like control
|
|
registers for a video generator. Maybe they control the display size/position.
|
|
aerofgt is different, it writes to consecutive memory addresses and the values
|
|
it writes don't seem to be related to these ones.
|
|
|
|
00 01 02 03 04 05 08 09 0a 0b 0c 0d
|
|
------------------------------------
|
|
pspikes 352x240? 57 63 69 71 1f 00 77 79 7b 7f 1f 00
|
|
karatblz 352x240 57 63 69 71 1f 00 77 79 7b 7f 1f 00
|
|
turbofrc 352x240 57 63 69 71 1f 00 77 79 7b 7f 1f 00
|
|
spinlbrk 352x240 57 68 6f 75 ff 01 77 78 7b 7f ff 00
|
|
aerofgtb 320x224 4f 5d 63 71 1f 00 6f 70 72 7c 1f 02
|
|
tail2nos 320x240 4f 5e 64 71 1f 09 7a 7c 7e 7f 1f 02
|
|
f1gp 320x240 4f 5e 64 71 1f 09 7a 7c 7e 7f 1f 02
|
|
welltris 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00
|
|
|
|
games with 8x4 tiles:
|
|
|
|
pipedrm 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00 * register 0b also briefly toggled to ff
|
|
hatris 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00 * register 0b also briefly toggled to ff
|
|
idolmj 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00
|
|
mjnatsu 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00 * register 0b also briefly toggled to ff
|
|
mfunclub 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00 * register 0b also briefly toggled to ff
|
|
daiyogen 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00 * register 0b also briefly toggled to ff
|
|
nmsengen 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00 * register 0b also briefly toggled to ff
|
|
fromance 352x240 57 63 69 71 1f 00 7a 7b 7e 7f 1f 00 * register 0b also briefly toggled to ff
|
|
|
|
register 00 could be screen width / 4 (hblank start?)
|
|
register 08 could be screen height / 2 (vblank start?)
|
|
|
|
|
|
2007.08.25: Small note regarding DipSwitches. Locations and values have been verified for:
|
|
|
|
- svolly91 (PCB Infos from the dumper),
|
|
- aerofgt (manual),
|
|
- karatblz (US manual),
|
|
- spinlbrk (US manual),
|
|
- turbofrc (US manual)
|
|
|
|
Verification still needed for the other PCBs.
|
|
|
|
***************************************************************************/
|
|
|
|
#include "emu.h"
|
|
|
|
#include "vsystem_gga.h"
|
|
#include "vsystem_spr2.h"
|
|
|
|
#include "cpu/m68000/m68000.h"
|
|
#include "cpu/z80/z80.h"
|
|
#include "machine/gen_latch.h"
|
|
#include "sound/okim6295.h"
|
|
#include "sound/upd7759.h"
|
|
#include "sound/ymopm.h"
|
|
#include "sound/ymopn.h"
|
|
#include "sound/ymopl.h"
|
|
|
|
#include "emupal.h"
|
|
#include "screen.h"
|
|
#include "speaker.h"
|
|
#include "tilemap.h"
|
|
|
|
|
|
namespace {
|
|
|
|
class pspikes_base_state : public driver_device
|
|
{
|
|
public:
|
|
pspikes_base_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
: driver_device(mconfig, type, tag)
|
|
, m_maincpu(*this, "maincpu")
|
|
, m_oki(*this, "oki")
|
|
, m_gfxdecode(*this, "gfxdecode")
|
|
, m_palette(*this, "palette")
|
|
, m_spr(*this, "spr%u", 1)
|
|
, m_vram(*this, "vram.%u", 0)
|
|
, m_rasterram(*this, "rasterram")
|
|
, m_sprlookupram(*this, "sprlookupram%u", 1)
|
|
, m_spriteram(*this, "spriteram")
|
|
, m_okibank(*this, "okibank")
|
|
{ }
|
|
|
|
void init_pspikesb() ATTR_COLD;
|
|
|
|
void pspikesb(machine_config &config) ATTR_COLD;
|
|
void pspikesc(machine_config &config) ATTR_COLD;
|
|
void aerfboo2(machine_config &config) ATTR_COLD;
|
|
|
|
protected:
|
|
uint32_t pspikes_tile_callback(uint32_t code);
|
|
|
|
// handlers
|
|
template<int Layer> void vram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
void pspikes_gfxbank_w(uint8_t data);
|
|
void pspikesb_gfxbank_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
void turbofrc_gfxbank_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
template<int Layer> void scrollx_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
template<int Layer> void scrolly_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
void pspikes_palette_bank_w(uint8_t data);
|
|
void pspikesb_oki_banking_w(uint16_t data);
|
|
void aerfboo2_okim6295_banking_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
TILE_GET_INFO_MEMBER(get_pspikes_tile_info);
|
|
template<int Layer> TILE_GET_INFO_MEMBER(karatblz_tile_info);
|
|
template<int Layer> TILE_GET_INFO_MEMBER(spinlbrk_tile_info);
|
|
template<int Layer> TILE_GET_INFO_MEMBER(get_tile_info);
|
|
DECLARE_VIDEO_START(pspikes) ATTR_COLD;
|
|
DECLARE_VIDEO_START(karatblz) ATTR_COLD;
|
|
DECLARE_VIDEO_START(turbofrc) ATTR_COLD;
|
|
DECLARE_VIDEO_START(aerofgtb) ATTR_COLD;
|
|
uint32_t screen_update_pspikes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
uint32_t screen_update_pspikesb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
uint32_t screen_update_aerfboot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
uint32_t screen_update_aerfboo2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
void register_state_globals();
|
|
void setbank(int layer, int num, int bank);
|
|
void aerfboo2_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri);
|
|
void pspikesb_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
void aerfboot_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
|
|
void pspikesb_map(address_map &map) ATTR_COLD;
|
|
void pspikesc_map(address_map &map) ATTR_COLD;
|
|
void aerfboo2_map(address_map &map) ATTR_COLD;
|
|
|
|
void oki_map(address_map &map) ATTR_COLD;
|
|
|
|
// devices referenced above
|
|
required_device<cpu_device> m_maincpu;
|
|
optional_device<okim6295_device> m_oki;
|
|
required_device<gfxdecode_device> m_gfxdecode;
|
|
required_device<palette_device> m_palette;
|
|
optional_device_array<vsystem_spr2_device, 2> m_spr;
|
|
|
|
// memory pointers
|
|
optional_shared_ptr_array<uint16_t, 2> m_vram;
|
|
optional_shared_ptr<uint16_t> m_rasterram;
|
|
optional_shared_ptr_array<uint16_t, 2> m_sprlookupram;
|
|
required_shared_ptr<uint16_t> m_spriteram;
|
|
|
|
optional_memory_bank m_okibank;
|
|
|
|
// video-related
|
|
tilemap_t *m_tilemap[2]{};
|
|
uint8_t m_gfxbank[8]{};
|
|
uint16_t m_bank[4]{};
|
|
uint16_t m_scrollx[2]{};
|
|
uint16_t m_scrolly[2]{};
|
|
bool m_flip_screen = false;
|
|
uint32_t m_charpalettebank = 0;
|
|
uint32_t m_spritepalettebank = 0;
|
|
int m_sprite_gfx = 0;
|
|
};
|
|
|
|
|
|
class pspikes_sound_cpu_state : public pspikes_base_state
|
|
{
|
|
public:
|
|
pspikes_sound_cpu_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
: pspikes_base_state(mconfig, type, tag)
|
|
, m_audiocpu(*this, "audiocpu")
|
|
, m_soundlatch(*this, "soundlatch")
|
|
, m_sprlookuprom(*this, "sprlookuprom")
|
|
{
|
|
}
|
|
|
|
void init_banked_oki() ATTR_COLD;
|
|
void init_kickball() ATTR_COLD;
|
|
|
|
void kickball(machine_config &config) ATTR_COLD;
|
|
void aerfboot(machine_config &config) ATTR_COLD;
|
|
|
|
protected:
|
|
uint8_t soundlatch_pending_r();
|
|
void soundlatch_pending_w(int state);
|
|
void spinlbrk_flip_screen_w(uint8_t data);
|
|
void karatblz_gfxbank_w(uint8_t data);
|
|
void kickball_gfxbank_w(uint8_t data);
|
|
|
|
uint32_t pspikes_tile2_callback(uint32_t code);
|
|
|
|
uint32_t screen_update_karatblz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
|
|
required_device<cpu_device> m_audiocpu;
|
|
required_device<generic_latch_8_device> m_soundlatch;
|
|
|
|
optional_region_ptr<uint16_t> m_sprlookuprom;
|
|
|
|
private:
|
|
void aerfboot_okim6295_banking_w(uint8_t data);
|
|
|
|
void kickball_map(address_map &map) ATTR_COLD;
|
|
void aerfboot_map(address_map &map) ATTR_COLD;
|
|
|
|
void aerfboot_sound_map(address_map &map) ATTR_COLD;
|
|
void kickball_sound_map(address_map &map) ATTR_COLD;
|
|
void kickball_sound_portmap(address_map &map) ATTR_COLD;
|
|
};
|
|
|
|
|
|
class spikes91_state : public pspikes_sound_cpu_state
|
|
{
|
|
public:
|
|
spikes91_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
: pspikes_sound_cpu_state(mconfig, type, tag)
|
|
, m_tx_tilemap_ram(*this, "tx_tilemap_ram")
|
|
{
|
|
}
|
|
|
|
void spikes91(machine_config &config) ATTR_COLD;
|
|
|
|
protected:
|
|
virtual void video_start() override ATTR_COLD;
|
|
|
|
private:
|
|
void spikes91_lookup_w(uint16_t data);
|
|
|
|
uint32_t screen_update_spikes91(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
|
|
void spikes91_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
|
|
void spikes91_map(address_map &map) ATTR_COLD;
|
|
void spikes91_sound_map(address_map &map) ATTR_COLD;
|
|
|
|
optional_shared_ptr<uint16_t> m_tx_tilemap_ram;
|
|
|
|
uint16_t m_spikes91_lookup = 0;
|
|
};
|
|
|
|
|
|
class karatblzbl_state : public pspikes_sound_cpu_state
|
|
{
|
|
public:
|
|
karatblzbl_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
: pspikes_sound_cpu_state(mconfig, type, tag)
|
|
, m_upd7759(*this, "upd")
|
|
{
|
|
}
|
|
|
|
void karatblzbl(machine_config &config) ATTR_COLD;
|
|
|
|
private:
|
|
void soundlatch_w(uint8_t data);
|
|
void d7759_write_port_0_w(uint8_t data);
|
|
void d7759_reset_w(uint8_t data);
|
|
|
|
void main_map(address_map &map) ATTR_COLD;
|
|
|
|
void sound_map(address_map &map) ATTR_COLD;
|
|
void sound_portmap(address_map &map) ATTR_COLD;
|
|
|
|
required_device<upd7759_device> m_upd7759;
|
|
};
|
|
|
|
|
|
class wbbc97_state : public pspikes_sound_cpu_state
|
|
{
|
|
public:
|
|
wbbc97_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
: pspikes_sound_cpu_state(mconfig, type, tag)
|
|
, m_bitmapram(*this, "bitmapram")
|
|
{
|
|
}
|
|
|
|
void wbbc97(machine_config &config) ATTR_COLD;
|
|
|
|
protected:
|
|
virtual void video_start() override ATTR_COLD;
|
|
|
|
private:
|
|
void bitmap_enable_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
|
|
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
|
|
|
void draw_bitmap(bitmap_rgb32 &bitmap);
|
|
|
|
void main_map(address_map &map) ATTR_COLD;
|
|
void sound_map(address_map &map) ATTR_COLD;
|
|
|
|
required_shared_ptr<uint16_t> m_bitmapram;
|
|
|
|
uint16_t m_bitmap_enable = 0;
|
|
};
|
|
|
|
|
|
class pspikes_banked_sound_state : public pspikes_sound_cpu_state
|
|
{
|
|
public:
|
|
pspikes_banked_sound_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
: pspikes_sound_cpu_state(mconfig, type, tag)
|
|
, m_soundbank(*this, "soundbank")
|
|
{
|
|
}
|
|
|
|
void pspikes(machine_config &config) ATTR_COLD;
|
|
void karatblz(machine_config &config) ATTR_COLD;
|
|
void spinlbrk(machine_config &config) ATTR_COLD;
|
|
void turbofrc(machine_config &config) ATTR_COLD;
|
|
void aerofgtb(machine_config &config) ATTR_COLD;
|
|
|
|
protected:
|
|
virtual void machine_start() override ATTR_COLD;
|
|
virtual void machine_reset() override ATTR_COLD;
|
|
|
|
DECLARE_VIDEO_START(spinlbrk);
|
|
|
|
void sound_map(address_map &map) ATTR_COLD;
|
|
void pspikes_sound_portmap(address_map &map) ATTR_COLD;
|
|
|
|
required_memory_bank m_soundbank;
|
|
|
|
private:
|
|
uint32_t spinbrk_tile_callback(uint32_t code);
|
|
|
|
void turbofrc_flip_screen_w(uint8_t data);
|
|
void spinlbrk_gfxbank_w(uint8_t data);
|
|
void sh_bankswitch_w(uint8_t data);
|
|
|
|
uint32_t screen_update_spinlbrk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
uint32_t screen_update_turbofrc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
|
|
void pspikes_map(address_map &map) ATTR_COLD;
|
|
void karatblz_map(address_map &map) ATTR_COLD;
|
|
void spinlbrk_map(address_map &map) ATTR_COLD;
|
|
void turbofrc_map(address_map &map) ATTR_COLD;
|
|
void aerofgtb_map(address_map &map) ATTR_COLD;
|
|
|
|
void spinlbrk_sound_portmap(address_map &map) ATTR_COLD;
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
Callbacks for the TileMap code
|
|
|
|
***************************************************************************/
|
|
|
|
TILE_GET_INFO_MEMBER(pspikes_base_state::get_pspikes_tile_info)
|
|
{
|
|
const uint16_t code = m_vram[0][tile_index];
|
|
const int bank = (code & 0x1000) >> 12;
|
|
tileinfo.set(0,
|
|
(code & 0x0fff) | (m_gfxbank[bank] << 12),
|
|
((code & 0xe000) >> 13) + 8 * m_charpalettebank,
|
|
0);
|
|
}
|
|
|
|
// also spinlbrk
|
|
template<int Layer>
|
|
TILE_GET_INFO_MEMBER(pspikes_base_state::karatblz_tile_info)
|
|
{
|
|
const uint16_t code = m_vram[Layer][tile_index];
|
|
tileinfo.set(Layer,
|
|
(code & 0x1fff) | (m_gfxbank[Layer] << 13),
|
|
(code & 0xe000) >> 13,
|
|
0);
|
|
}
|
|
|
|
template<int Layer>
|
|
TILE_GET_INFO_MEMBER(pspikes_base_state::spinlbrk_tile_info)
|
|
{
|
|
const uint16_t code = m_vram[Layer][tile_index];
|
|
tileinfo.set(Layer,
|
|
(code & 0x0fff) | (m_gfxbank[Layer] << 12),
|
|
(code & 0xf000) >> 12,
|
|
0);
|
|
}
|
|
|
|
template<int Layer>
|
|
TILE_GET_INFO_MEMBER(pspikes_base_state::get_tile_info)
|
|
{
|
|
const uint16_t code = m_vram[Layer][tile_index];
|
|
const int bank = (Layer << 2) | (code & 0x1800) >> 11;
|
|
tileinfo.set(Layer,
|
|
(code & 0x07ff) | (m_gfxbank[bank] << 11),
|
|
(code & 0xe000) >> 13,
|
|
0);
|
|
}
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
Start the video hardware emulation.
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
void pspikes_base_state::register_state_globals()
|
|
{
|
|
save_item(NAME(m_gfxbank));
|
|
save_item(NAME(m_bank));
|
|
save_item(NAME(m_scrollx));
|
|
save_item(NAME(m_scrolly));
|
|
save_item(NAME(m_flip_screen));
|
|
save_item(NAME(m_charpalettebank));
|
|
save_item(NAME(m_spritepalettebank));
|
|
}
|
|
|
|
VIDEO_START_MEMBER(pspikes_base_state,pspikes)
|
|
{
|
|
m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pspikes_base_state::get_pspikes_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32);
|
|
// no bg2 in this game
|
|
|
|
m_sprite_gfx = 1;
|
|
m_charpalettebank = 0;
|
|
|
|
register_state_globals();
|
|
}
|
|
|
|
void spikes91_state::video_start()
|
|
{
|
|
VIDEO_START_CALL_MEMBER(pspikes);
|
|
|
|
m_spikes91_lookup = 0;
|
|
|
|
save_item(NAME(m_spikes91_lookup));
|
|
}
|
|
|
|
VIDEO_START_MEMBER(pspikes_base_state,karatblz)
|
|
{
|
|
m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pspikes_base_state::karatblz_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8, 64,64);
|
|
m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pspikes_base_state::karatblz_tile_info<1>)), TILEMAP_SCAN_ROWS, 8,8, 64,64);
|
|
|
|
m_tilemap[1]->set_transparent_pen(15);
|
|
m_spritepalettebank = 0;
|
|
m_sprite_gfx = 2;
|
|
|
|
register_state_globals();
|
|
}
|
|
|
|
VIDEO_START_MEMBER(pspikes_banked_sound_state,spinlbrk)
|
|
{
|
|
m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pspikes_banked_sound_state::spinlbrk_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
|
|
m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pspikes_banked_sound_state::karatblz_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
|
|
|
|
m_tilemap[1]->set_transparent_pen(15);
|
|
|
|
m_spritepalettebank = 0;
|
|
m_sprite_gfx = 2;
|
|
|
|
// sprite maps are hardcoded in this game
|
|
|
|
register_state_globals();
|
|
}
|
|
|
|
VIDEO_START_MEMBER(pspikes_base_state,turbofrc)
|
|
{
|
|
m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pspikes_base_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
|
|
m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pspikes_base_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
|
|
|
|
m_tilemap[1]->set_transparent_pen(15);
|
|
|
|
m_spritepalettebank = 0;
|
|
m_sprite_gfx = 2;
|
|
|
|
register_state_globals();
|
|
}
|
|
|
|
VIDEO_START_MEMBER(pspikes_base_state,aerofgtb)
|
|
{
|
|
VIDEO_START_CALL_MEMBER(turbofrc);
|
|
|
|
m_tilemap[0]->set_scrolldx(1, 1);
|
|
m_tilemap[1]->set_scrolldx(1, 1);
|
|
}
|
|
|
|
|
|
uint32_t pspikes_base_state::pspikes_tile_callback(uint32_t code)
|
|
{
|
|
return m_sprlookupram[0][code % (m_sprlookupram[0].bytes()/2)];
|
|
}
|
|
|
|
uint32_t pspikes_sound_cpu_state::pspikes_tile2_callback(uint32_t code)
|
|
{
|
|
return m_sprlookupram[1][code % (m_sprlookupram[1].bytes()/2)];
|
|
}
|
|
|
|
uint32_t pspikes_banked_sound_state::spinbrk_tile_callback(uint32_t code)
|
|
{
|
|
// enemy sprites use ROM instead of RAM
|
|
return m_sprlookuprom[code % m_sprlookuprom.length()];
|
|
}
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
Memory handlers
|
|
|
|
***************************************************************************/
|
|
|
|
void pspikes_base_state::setbank(int layer, int num, int bank)
|
|
{
|
|
if (m_gfxbank[num] != bank)
|
|
{
|
|
m_gfxbank[num] = bank;
|
|
m_tilemap[layer]->mark_all_dirty();
|
|
}
|
|
}
|
|
|
|
void pspikes_base_state::pspikes_gfxbank_w(uint8_t data)
|
|
{
|
|
setbank(0, 0, (data & 0xf0) >> 4);
|
|
setbank(0, 1, data & 0x0f);
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::karatblz_gfxbank_w(uint8_t data)
|
|
{
|
|
setbank(0, 0, (data & 0x01));
|
|
setbank(1, 1, (data & 0x08) >> 3);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::spinlbrk_gfxbank_w(uint8_t data)
|
|
{
|
|
setbank(0, 0, (data & 0x07));
|
|
setbank(1, 1, (data & 0x38) >> 3);
|
|
}
|
|
|
|
void pspikes_base_state::turbofrc_gfxbank_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|
{
|
|
data = COMBINE_DATA(&m_bank[offset]);
|
|
|
|
setbank(offset, 4 * offset + 0, (data >> 0) & 0x0f);
|
|
setbank(offset, 4 * offset + 1, (data >> 4) & 0x0f);
|
|
setbank(offset, 4 * offset + 2, (data >> 8) & 0x0f);
|
|
setbank(offset, 4 * offset + 3, (data >> 12) & 0x0f);
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::kickball_gfxbank_w(uint8_t data)
|
|
{
|
|
// I strongly doubt this logic is correct
|
|
setbank(0, 0, (data & 0x0f) & ~0x01);
|
|
setbank(0, 1, (data & 0x0f));
|
|
}
|
|
|
|
void pspikes_base_state::pspikes_palette_bank_w(uint8_t data)
|
|
{
|
|
m_spritepalettebank = data & 0x03;
|
|
if (m_charpalettebank != (data & 0x1c) >> 2)
|
|
{
|
|
m_charpalettebank = (data & 0x1c) >> 2;
|
|
m_tilemap[0]->mark_all_dirty();
|
|
}
|
|
|
|
m_flip_screen = BIT(data, 7);
|
|
m_tilemap[0]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::spinlbrk_flip_screen_w(uint8_t data)
|
|
{
|
|
m_flip_screen = BIT(data, 7);
|
|
m_tilemap[0]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
|
|
m_tilemap[1]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::turbofrc_flip_screen_w(uint8_t data)
|
|
{
|
|
m_flip_screen = BIT(data, 7);
|
|
m_tilemap[0]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
|
|
m_tilemap[1]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
|
|
|
|
// bit 6 = ?
|
|
}
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
Display refresh
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
uint32_t pspikes_base_state::screen_update_pspikes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
int i, scrolly;
|
|
|
|
m_tilemap[0]->set_scroll_rows(256);
|
|
scrolly = m_scrolly[0];
|
|
for (i = 0; i < 256; i++)
|
|
m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]);
|
|
m_tilemap[0]->set_scrolly(0, scrolly);
|
|
|
|
screen.priority().fill(0, cliprect);
|
|
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
m_spr[0]->draw_sprites(m_spriteram,m_spriteram.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
|
|
m_spr[0]->draw_sprites(m_spriteram,m_spriteram.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
|
|
return 0;
|
|
}
|
|
|
|
|
|
uint32_t pspikes_sound_cpu_state::screen_update_karatblz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
m_tilemap[0]->set_scrollx(0, m_scrollx[0] - 8);
|
|
m_tilemap[0]->set_scrolly(0, m_scrolly[0]);
|
|
m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 4);
|
|
m_tilemap[1]->set_scrolly(0, m_scrolly[1]);
|
|
|
|
screen.priority().fill(0, cliprect);
|
|
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
|
|
|
|
// we use the priority buffer so sprites are drawn front to back
|
|
m_spr[1]->draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
|
|
m_spr[1]->draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
|
|
|
|
m_spr[0]->draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
|
|
m_spr[0]->draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
|
|
|
|
return 0;
|
|
}
|
|
|
|
uint32_t pspikes_banked_sound_state::screen_update_spinlbrk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
m_tilemap[0]->set_scroll_rows(512);
|
|
int scrolly = 0;
|
|
for (int i = 0; i < 256; i++)
|
|
m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 8);
|
|
// m_tilemap[0]->set_scrolly(0, m_scrolly[0]);
|
|
m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 4);
|
|
// m_tilemap[1]->set_scrolly(0, m_scrolly[1]);
|
|
|
|
screen.priority().fill(0, cliprect);
|
|
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
|
|
|
|
// we use the priority buffer so sprites are drawn front to back
|
|
m_spr[0]->draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
|
|
m_spr[0]->draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
|
|
|
|
m_spr[1]->draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
|
|
m_spr[1]->draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
|
|
|
|
return 0;
|
|
}
|
|
|
|
uint32_t pspikes_banked_sound_state::screen_update_turbofrc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
m_tilemap[0]->set_scroll_rows(512);
|
|
int scrolly = m_scrolly[0] + 2;
|
|
for (int i = 0; i < 256; i++)
|
|
// m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11);
|
|
m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] - 11 - (m_flip_screen ? 188 : 0));
|
|
m_tilemap[0]->set_scrolly(0, scrolly - (m_flip_screen ? 2 : 0));
|
|
m_tilemap[1]->set_scrollx(0, m_scrollx[1] - (m_flip_screen ? 185 : 7));
|
|
m_tilemap[1]->set_scrolly(0, m_scrolly[1] + (m_flip_screen ? 0 : 2));
|
|
|
|
screen.priority().fill(0, cliprect);
|
|
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
|
|
|
|
// we use the priority buffer so sprites are drawn front to back
|
|
m_spr[1]->draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen); //ship
|
|
m_spr[1]->draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen); //intro
|
|
|
|
m_spr[0]->draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen); //enemy
|
|
m_spr[0]->draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen); //enemy
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
BOOTLEG SUPPORT
|
|
|
|
***************************************************************************/
|
|
|
|
// BOOTLEG
|
|
void wbbc97_state::video_start()
|
|
{
|
|
m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wbbc97_state::get_pspikes_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
|
// no bg2 in this game
|
|
|
|
m_tilemap[0]->set_transparent_pen(15);
|
|
|
|
m_sprite_gfx = 1;
|
|
|
|
register_state_globals();
|
|
|
|
save_item(NAME(m_bitmap_enable));
|
|
}
|
|
|
|
// BOOTLEG
|
|
void pspikes_base_state::pspikesb_gfxbank_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|
{
|
|
COMBINE_DATA(&m_rasterram[0x200 / 2]);
|
|
|
|
setbank(0, 0, (data & 0xf000) >> 12);
|
|
setbank(0, 1, (data & 0x0f00) >> 8);
|
|
}
|
|
|
|
// BOOTLEG
|
|
void spikes91_state::spikes91_lookup_w(uint16_t data)
|
|
{
|
|
m_spikes91_lookup = BIT(data, 0);
|
|
}
|
|
|
|
// BOOTLEG
|
|
void wbbc97_state::bitmap_enable_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|
{
|
|
COMBINE_DATA(&m_bitmap_enable);
|
|
}
|
|
|
|
// BOOTLEG
|
|
void pspikes_base_state::aerfboo2_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri)
|
|
{
|
|
int base, first;
|
|
|
|
base = chip * 0x0200;
|
|
// first = 4 * m_spriteram[0x1fe + base];
|
|
first = 0;
|
|
|
|
for (int attr_start = base + 0x0200 - 4; attr_start >= first + base; attr_start -= 4)
|
|
{
|
|
// some other drivers still use this wrong table, they have to be upgraded
|
|
// int zoomtable[16] = { 0,7,14,20,25,30,34,38,42,46,49,52,54,57,59,61 };
|
|
|
|
if (BIT(~m_spriteram[attr_start + 2], 7))
|
|
continue;
|
|
|
|
const int pri = BIT(m_spriteram[attr_start + 2], 4);
|
|
|
|
if (chip_disabled_pri && !pri)
|
|
continue;
|
|
if ((!chip_disabled_pri) && pri)
|
|
continue;
|
|
const int ox = m_spriteram[attr_start + 1] & 0x01ff;
|
|
const int xsize = (m_spriteram[attr_start + 2] & 0x0700) >> 8;
|
|
const int zoomx = 32 - ((m_spriteram[attr_start + 1] & 0xf000) >> 12);
|
|
const int oy = m_spriteram[attr_start + 0] & 0x01ff;
|
|
const int ysize = (m_spriteram[attr_start + 2] & 0x7000) >> 12;
|
|
const int zoomy = 32 - ((m_spriteram[attr_start + 0] & 0xf000) >> 12);
|
|
const bool flipx = BIT(m_spriteram[attr_start + 2], 11);
|
|
const bool flipy = BIT(m_spriteram[attr_start + 2], 15);
|
|
const int color = (m_spriteram[attr_start + 2] & 0x000f) + 16 * m_spritepalettebank;
|
|
|
|
int map_start = m_spriteram[attr_start + 3];
|
|
|
|
// aerofgt has this adjustment, but doing it here would break turbo force title screen
|
|
// ox += (xsize*(32 - zoomx)+2)/4;
|
|
// oy += (ysize*(32 - zoomy)+2)/4;
|
|
|
|
for (int y = 0; y <= ysize; y++)
|
|
{
|
|
int sy;
|
|
if (flipy)
|
|
sy = ((oy + zoomy * (ysize - y)/2 + 16) & 0x1ff) - 16;
|
|
else
|
|
sy = ((oy + zoomy * y / 2 + 16) & 0x1ff) - 16;
|
|
|
|
for (int x = 0; x <= xsize; x++)
|
|
{
|
|
int sx;
|
|
if (flipx)
|
|
sx = ((ox + zoomx * (xsize - x) / 2 + 16) & 0x1ff) - 16;
|
|
else
|
|
sx = ((ox + zoomx * x / 2 + 16) & 0x1ff) - 16;
|
|
|
|
const int code = m_sprlookupram[chip][map_start % (m_sprlookupram[chip].bytes()/2)];
|
|
|
|
m_gfxdecode->gfx(m_sprite_gfx + chip)->prio_zoom_transpen(bitmap,cliprect,
|
|
code,
|
|
color,
|
|
flipx,flipy,
|
|
sx,sy,
|
|
zoomx << 11, zoomy << 11,
|
|
screen.priority(),pri ? 0 : 2,15);
|
|
map_start++;
|
|
}
|
|
|
|
if (xsize == 2) map_start += 1;
|
|
if (xsize == 4) map_start += 3;
|
|
if (xsize == 5) map_start += 2;
|
|
if (xsize == 6) map_start += 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
// BOOTLEG
|
|
void pspikes_base_state::pspikesb_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
for (int i = 4; i < m_spriteram.bytes() / 2; i += 4)
|
|
{
|
|
if (BIT(m_spriteram[i + 3 - 4], 15))
|
|
break;
|
|
|
|
const int xpos = (m_spriteram[i + 2] & 0x1ff) - 34;
|
|
const int ypos = 256 - (m_spriteram[i + 3 - 4] & 0x1ff) - 33;
|
|
const int code = m_spriteram[i + 0] & 0x1fff;
|
|
const bool flipy = 0;
|
|
const bool flipx = BIT(m_spriteram[i + 1], 11);
|
|
const int color = m_spriteram[i + 1] & 0x000f;
|
|
|
|
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
|
|
code,
|
|
color,
|
|
flipx,flipy,
|
|
xpos,ypos,15);
|
|
|
|
// wrap around y
|
|
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
|
|
code,
|
|
color,
|
|
flipx,flipy,
|
|
xpos,ypos + 512,15);
|
|
|
|
}
|
|
}
|
|
|
|
// BOOTLEG
|
|
void spikes91_state::spikes91_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
m_spritepalettebank = 1;
|
|
|
|
for (int i = m_spriteram.bytes() / 2 - 4; i >= 4; i -= 4)
|
|
{
|
|
int code = m_spriteram[i + 0] & 0x1fff;
|
|
|
|
if (!code)
|
|
continue;
|
|
|
|
const int xpos = (m_spriteram[i + 2] & 0x01ff) - 16;
|
|
const int ypos = 256 - (m_spriteram[i + 1] & 0x00ff) - 26;
|
|
const bool flipy = 0;
|
|
const bool flipx = BIT(m_spriteram[i + 3], 15);
|
|
const int color = ((m_spriteram[i + 3] & 0x00f0) >> 4);
|
|
|
|
code |= m_spikes91_lookup << 13;
|
|
|
|
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
|
|
m_sprlookuprom[code],
|
|
color,
|
|
flipx,flipy,
|
|
xpos,ypos,15);
|
|
|
|
// wrap around y
|
|
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
|
|
m_sprlookuprom[code],
|
|
color,
|
|
flipx,flipy,
|
|
xpos,ypos + 512,15);
|
|
}
|
|
}
|
|
|
|
// BOOTLEG
|
|
void pspikes_base_state::aerfboot_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
int last = ((m_rasterram[0x404 / 2] << 5) - 0x8000) / 2;
|
|
if (last < 0) last = 0;
|
|
|
|
for (int attr_start = m_spriteram.bytes() / 2 - 4; attr_start >= last; attr_start -= 4)
|
|
{
|
|
const int ox = m_spriteram[attr_start + 1] & 0x01ff;
|
|
const int oy = m_spriteram[attr_start + 0] & 0x01ff;
|
|
const bool flipx = BIT(m_spriteram[attr_start + 2], 11);
|
|
const bool flipy = BIT(m_spriteram[attr_start + 2], 15);
|
|
const int color = m_spriteram[attr_start + 2] & 0x000f;
|
|
|
|
int zoomx = (m_spriteram[attr_start + 1] & 0xf000) >> 12;
|
|
int zoomy = (m_spriteram[attr_start + 0] & 0xf000) >> 12;
|
|
const int pri = BIT(m_spriteram[attr_start + 2], 4);
|
|
int code = m_spriteram[attr_start + 3] & 0x1fff;
|
|
|
|
if (BIT(~m_spriteram[attr_start + 2], 6))
|
|
code |= 0x2000;
|
|
|
|
zoomx = 32 + zoomx;
|
|
zoomy = 32 + zoomy;
|
|
|
|
int sy = ((oy + 16 - 1) & 0x1ff) - 16;
|
|
|
|
int sx = ((ox + 16 + 3) & 0x1ff) - 16;
|
|
|
|
m_gfxdecode->gfx(m_sprite_gfx + (code >= 0x1000 ? 0 : 1))->prio_zoom_transpen(bitmap,cliprect,
|
|
code,
|
|
color,
|
|
flipx,flipy,
|
|
sx,sy,
|
|
zoomx << 11,zoomy << 11,
|
|
screen.priority(),pri ? 0 : 2,15);
|
|
|
|
}
|
|
|
|
last = ((m_rasterram[0x402 / 2] << 5) - 0x8000) / 2;
|
|
if (last < 0) last = 0;
|
|
|
|
for (int attr_start = ((m_spriteram.bytes() / 2) / 2) - 4; attr_start >= last; attr_start -= 4)
|
|
{
|
|
const int ox = m_spriteram[attr_start + 1] & 0x01ff;
|
|
const int oy = m_spriteram[attr_start + 0] & 0x01ff;
|
|
const bool flipx = BIT(m_spriteram[attr_start + 2], 11);
|
|
const bool flipy = BIT(m_spriteram[attr_start + 2], 15);
|
|
const int color = m_spriteram[attr_start + 2] & 0x000f;
|
|
|
|
int zoomx = (m_spriteram[attr_start + 1] & 0xf000) >> 12;
|
|
int zoomy = (m_spriteram[attr_start + 0] & 0xf000) >> 12;
|
|
const int pri = BIT(m_spriteram[attr_start + 2], 4);
|
|
int code = m_spriteram[attr_start + 3] & 0x1fff;
|
|
|
|
if (BIT(~m_spriteram[attr_start + 2], 6))
|
|
code |= 0x2000;
|
|
|
|
zoomx = 32 + zoomx;
|
|
zoomy = 32 + zoomy;
|
|
|
|
int sy = ((oy + 16 - 1) & 0x1ff) - 16;
|
|
|
|
int sx = ((ox + 16 + 3) & 0x1ff) - 16;
|
|
|
|
m_gfxdecode->gfx(m_sprite_gfx + (code >= 0x1000 ? 0 : 1))->prio_zoom_transpen(bitmap,cliprect,
|
|
code,
|
|
color,
|
|
flipx,flipy,
|
|
sx,sy,
|
|
zoomx << 11,zoomy << 11,
|
|
screen.priority(),pri ? 0 : 2,15);
|
|
|
|
}
|
|
}
|
|
|
|
// BOOTLEG
|
|
void wbbc97_state::draw_bitmap(bitmap_rgb32 &bitmap)
|
|
{
|
|
int count = 16; // weird, the bitmap doesn't start at 0?
|
|
for (int y = 0; y < 256; y++)
|
|
for (int x = 0; x < 512; x++)
|
|
{
|
|
const int color = m_bitmapram[count] >> 1;
|
|
|
|
// data is GRB; convert to RGB
|
|
const rgb_t pen = rgb_t(pal5bit((color & 0x3e0) >> 5), pal5bit((color & 0x7c00) >> 10), pal5bit(color & 0x1f));
|
|
bitmap.pix(y, (10 + x - m_rasterram[(y & 0x7f)]) & 0x1ff) = pen;
|
|
|
|
count++;
|
|
count &= 0x1ffff;
|
|
}
|
|
}
|
|
|
|
// BOOTLEG
|
|
uint32_t pspikes_base_state::screen_update_pspikesb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
m_tilemap[0]->set_scroll_rows(256);
|
|
int scrolly = m_scrolly[0];
|
|
for (int i = 0; i < 256; i++)
|
|
m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i] + 22);
|
|
m_tilemap[0]->set_scrolly(0, scrolly);
|
|
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
pspikesb_draw_sprites(screen, bitmap, cliprect);
|
|
return 0;
|
|
}
|
|
|
|
// BOOTLEG
|
|
uint32_t spikes91_state::screen_update_spikes91(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
gfx_element *const gfx = m_gfxdecode->gfx(0);
|
|
|
|
m_tilemap[0]->set_scroll_rows(256);
|
|
const int scrolly = m_scrolly[0];
|
|
|
|
for (int i = 0; i < 256; i++)
|
|
m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i + 0x01f0 / 2] + 0x96 + 0x16);
|
|
m_tilemap[0]->set_scrolly(0, scrolly);
|
|
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
spikes91_draw_sprites(screen, bitmap, cliprect);
|
|
|
|
// we could use a tilemap, but it's easier to just do it here
|
|
int count = 0;
|
|
for (int y = 0; y < 32; y++)
|
|
{
|
|
for (int x = 0; x < 64; x++)
|
|
{
|
|
const uint16_t tileno = m_tx_tilemap_ram[count] & 0x1fff;
|
|
const uint16_t colour = m_tx_tilemap_ram[count] & 0xe000;
|
|
gfx->transpen(bitmap,cliprect,
|
|
tileno,
|
|
colour>>13,
|
|
0,0,
|
|
(x*8)+24,(y*8)+8,15);
|
|
|
|
count++;
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
// BOOTLEG
|
|
uint32_t pspikes_base_state::screen_update_aerfboot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
int i, scrolly;
|
|
|
|
m_tilemap[0]->set_scroll_rows(512);
|
|
scrolly = m_scrolly[0] + 2;
|
|
for (i = 0; i < 256; i++)
|
|
m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] + 174);
|
|
m_tilemap[0]->set_scrolly(0, scrolly);
|
|
m_tilemap[1]->set_scrollx(0, m_scrollx[1] + 172);
|
|
m_tilemap[1]->set_scrolly(0, m_scrolly[1] + 2);
|
|
|
|
screen.priority().fill(0, cliprect);
|
|
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
|
|
|
|
// we use the priority buffer so sprites are drawn front to back
|
|
aerfboot_draw_sprites(screen, bitmap, cliprect);
|
|
return 0;
|
|
}
|
|
|
|
// BOOTLEG
|
|
uint32_t pspikes_base_state::screen_update_aerfboo2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
{
|
|
int i, scrolly;
|
|
|
|
m_tilemap[0]->set_scroll_rows(512);
|
|
scrolly = m_scrolly[0] + 2;
|
|
for (i = 0; i < 256; i++)
|
|
// m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11);
|
|
m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] - 11);
|
|
m_tilemap[0]->set_scrolly(0, scrolly);
|
|
m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 7);
|
|
m_tilemap[1]->set_scrolly(0, m_scrolly[1] + 2);
|
|
|
|
screen.priority().fill(0, cliprect);
|
|
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
|
|
|
|
// we use the priority buffer so sprites are drawn front to back
|
|
aerfboo2_draw_sprites(screen, bitmap, cliprect, 1, -1); //ship
|
|
aerfboo2_draw_sprites(screen, bitmap, cliprect, 1, 0); //intro
|
|
aerfboo2_draw_sprites(screen, bitmap, cliprect, 0, -1); //enemy
|
|
aerfboo2_draw_sprites(screen, bitmap, cliprect, 0, 0); //enemy
|
|
return 0;
|
|
}
|
|
|
|
// BOOTLEG (still uses original sprite type)
|
|
uint32_t wbbc97_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
|
{
|
|
m_tilemap[0]->set_scroll_rows(256);
|
|
const int scrolly = m_scrolly[0];
|
|
for (int i = 0; i < 256; i++)
|
|
m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]);
|
|
m_tilemap[0]->set_scrolly(0, scrolly);
|
|
|
|
screen.priority().fill(0, cliprect);
|
|
|
|
if (m_bitmap_enable)
|
|
{
|
|
draw_bitmap(bitmap);
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
|
}
|
|
else
|
|
{
|
|
m_tilemap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
|
}
|
|
|
|
m_spr[0]->draw_sprites(m_spriteram,m_spriteram.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
|
|
m_spr[0]->draw_sprites(m_spriteram,m_spriteram.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
|
|
return 0;
|
|
}
|
|
|
|
void karatblzbl_state::soundlatch_w(uint8_t data)
|
|
{
|
|
m_soundlatch->write(data);
|
|
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
|
}
|
|
|
|
uint8_t pspikes_sound_cpu_state::soundlatch_pending_r()
|
|
{
|
|
return m_soundlatch->pending_r();
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::soundlatch_pending_w(int state)
|
|
{
|
|
m_audiocpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
|
|
|
|
// sound comms is 2-way (see soundlatch_pending_r),
|
|
// NMI routine is very short, so briefly set perfect_quantum to make sure that the timing is right
|
|
if (state)
|
|
machine().scheduler().perfect_quantum(attotime::from_usec(100));
|
|
}
|
|
|
|
void pspikes_banked_sound_state::sh_bankswitch_w(uint8_t data)
|
|
{
|
|
m_soundbank->set_entry(data & 0x03);
|
|
}
|
|
|
|
void pspikes_base_state::pspikesb_oki_banking_w(uint16_t data)
|
|
{
|
|
m_okibank->set_entry(data & 3);
|
|
}
|
|
|
|
// TODO: sound banking.
|
|
void pspikes_base_state::aerfboo2_okim6295_banking_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|
{
|
|
// if(ACCESSING_BITS_8_15)
|
|
// {
|
|
// m_oki->set_rom_bank((data & 0xf00)>>8);
|
|
// }
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::aerfboot_okim6295_banking_w(uint8_t data)
|
|
{
|
|
// bit 2 (0x4) set too?
|
|
if (BIT(data, 2))
|
|
m_okibank->set_entry(data & 0x3);
|
|
}
|
|
|
|
void karatblzbl_state::d7759_write_port_0_w(uint8_t data)
|
|
{
|
|
m_upd7759->port_w(data);
|
|
m_upd7759->start_w(0);
|
|
m_upd7759->start_w(1);
|
|
}
|
|
|
|
void karatblzbl_state::d7759_reset_w(uint8_t data)
|
|
{
|
|
m_upd7759->reset_w(BIT(data, 7));
|
|
}
|
|
|
|
template<int Layer>
|
|
void pspikes_base_state::vram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|
{
|
|
COMBINE_DATA(&m_vram[Layer][offset]);
|
|
m_tilemap[Layer]->mark_tile_dirty(offset);
|
|
}
|
|
|
|
template<int Layer>
|
|
void pspikes_base_state::scrollx_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|
{
|
|
COMBINE_DATA(&m_scrollx[Layer]);
|
|
}
|
|
|
|
template<int Layer>
|
|
void pspikes_base_state::scrolly_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|
{
|
|
COMBINE_DATA(&m_scrolly[Layer]);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::pspikes_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x03ffff).rom();
|
|
map(0x100000, 0x10ffff).ram(); // work RAM
|
|
map(0x200000, 0x203fff).ram().share(m_sprlookupram[0]);
|
|
map(0xff8000, 0xff8fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<0>)).share("vram.0");
|
|
map(0xffc000, 0xffc3ff).writeonly().share(m_spriteram);
|
|
map(0xffd000, 0xffdfff).ram().share(m_rasterram); // bg1 scroll registers
|
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0xfff000, 0xfff001).portr("IN0");
|
|
map(0xfff001, 0xfff001).w(FUNC(pspikes_banked_sound_state::pspikes_palette_bank_w));
|
|
map(0xfff002, 0xfff003).portr("IN1");
|
|
map(0xfff003, 0xfff003).w(FUNC(pspikes_banked_sound_state::pspikes_gfxbank_w));
|
|
map(0xfff004, 0xfff005).portr("DSW").w(FUNC(pspikes_banked_sound_state::scrolly_w<0>));
|
|
map(0xfff007, 0xfff007).r(FUNC(pspikes_banked_sound_state::soundlatch_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
|
|
map(0xfff400, 0xfff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
|
|
}
|
|
|
|
void pspikes_base_state::pspikesb_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x03ffff).rom();
|
|
map(0x100000, 0x10ffff).ram(); // work RAM
|
|
map(0x200000, 0x203fff).ram().share(m_sprlookupram[0]);
|
|
map(0xc04000, 0xc04001).nopw();
|
|
map(0xff8000, 0xff8fff).ram().w(FUNC(pspikes_base_state::vram_w<0>)).share("vram.0");
|
|
map(0xffc000, 0xffcbff).ram().share(m_spriteram);
|
|
map(0xffd000, 0xffdfff).ram().share(m_rasterram); // bg1 scroll registers
|
|
map(0xffd200, 0xffd201).w(FUNC(pspikes_base_state::pspikesb_gfxbank_w));
|
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0xfff000, 0xfff001).portr("IN0");
|
|
map(0xfff002, 0xfff003).portr("IN1");
|
|
map(0xfff004, 0xfff005).portr("DSW").w(FUNC(pspikes_base_state::scrolly_w<0>));
|
|
map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
|
map(0xfff008, 0xfff009).w(FUNC(pspikes_base_state::pspikesb_oki_banking_w));
|
|
map(0xfff400, 0xfff403).nopw(); // GGA access
|
|
}
|
|
|
|
void spikes91_state::spikes91_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x03ffff).rom();
|
|
map(0x100000, 0x10ffff).ram(); // work RAM
|
|
map(0x200000, 0x203fff).ram().share(m_sprlookupram[0]);
|
|
map(0xc04000, 0xc04001).nopw();
|
|
map(0xff8000, 0xff8fff).ram().w(FUNC(spikes91_state::vram_w<0>)).share("vram.0");
|
|
|
|
map(0xffa000, 0xffbfff).ram().share(m_tx_tilemap_ram);
|
|
|
|
map(0xffc000, 0xffcfff).ram().share(m_spriteram);
|
|
//map(0xffd200, 0xffd201).w(FUNC(spikes91_state::pspikesb_gfxbank_w));
|
|
map(0xffd000, 0xffdfff).ram().share(m_rasterram); // bg1 scroll registers
|
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0xfff000, 0xfff001).portr("IN0");
|
|
map(0xfff002, 0xfff003).portr("IN1");
|
|
map(0xfff003, 0xfff003).w(FUNC(spikes91_state::pspikes_gfxbank_w));
|
|
map(0xfff004, 0xfff005).portr("DSW").w(FUNC(spikes91_state::scrolly_w<0>));
|
|
map(0xfff007, 0xfff007).r(FUNC(spikes91_state::soundlatch_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
|
|
map(0xfff008, 0xfff009).w(FUNC(spikes91_state::spikes91_lookup_w));
|
|
}
|
|
|
|
void pspikes_base_state::pspikesc_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x03ffff).rom();
|
|
map(0x100000, 0x10ffff).ram(); // work RAM
|
|
map(0x200000, 0x203fff).ram().share(m_sprlookupram[0]);
|
|
map(0xff8000, 0xff8fff).ram().w(FUNC(pspikes_base_state::vram_w<0>)).share("vram.0");
|
|
map(0xffc000, 0xffcbff).ram().share(m_spriteram);
|
|
map(0xffd000, 0xffdfff).ram().share(m_rasterram); // bg1 scroll registers
|
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0xfff000, 0xfff001).portr("IN0");
|
|
map(0xfff001, 0xfff001).w(FUNC(pspikes_base_state::pspikes_palette_bank_w));
|
|
map(0xfff002, 0xfff003).portr("IN1");
|
|
map(0xfff003, 0xfff003).w(FUNC(pspikes_base_state::pspikes_gfxbank_w));
|
|
map(0xfff004, 0xfff005).portr("DSW");
|
|
map(0xfff004, 0xfff005).w(FUNC(pspikes_base_state::scrolly_w<0>));
|
|
map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
|
map(0xfff400, 0xfff403).nopw(); // GGA access
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::kickball_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x07ffff).rom();
|
|
map(0x100000, 0x10ffff).ram(); // work RAM
|
|
map(0x200000, 0x20ffff).ram().share(m_sprlookupram[0]);
|
|
map(0xff8000, 0xff8fff).ram().w(FUNC(pspikes_sound_cpu_state::vram_w<0>)).share("vram.0");
|
|
map(0xffc000, 0xffc3ff).writeonly().share(m_spriteram);
|
|
map(0xffd000, 0xffdfff).ram().share(m_rasterram); // bg1 scroll registers
|
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0xfff000, 0xfff001).portr("IN0");
|
|
map(0xfff001, 0xfff001).w(FUNC(pspikes_sound_cpu_state::pspikes_palette_bank_w));
|
|
map(0xfff002, 0xfff003).portr("IN1");
|
|
map(0xfff003, 0xfff003).w(FUNC(pspikes_sound_cpu_state::kickball_gfxbank_w));
|
|
map(0xfff004, 0xfff005).portr("DSW").w(FUNC(pspikes_sound_cpu_state::scrolly_w<0>));
|
|
map(0xfff007, 0xfff007).r(FUNC(pspikes_sound_cpu_state::soundlatch_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
|
|
map(0xfff400, 0xfff403).nopw(); // GGA access
|
|
}
|
|
|
|
void pspikes_banked_sound_state::karatblz_map(address_map &map)
|
|
{
|
|
map.global_mask(0xfffff);
|
|
map(0x000000, 0x07ffff).rom();
|
|
map(0x080000, 0x081fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<0>)).share("vram.0");
|
|
map(0x082000, 0x083fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<1>)).share("vram.1");
|
|
map(0x0a0000, 0x0affff).ram().share(m_sprlookupram[0]);
|
|
map(0x0b0000, 0x0bffff).ram().share(m_sprlookupram[1]);
|
|
map(0x0c0000, 0x0cffff).ram(); // work RAM
|
|
map(0x0f8000, 0x0fbfff).ram(); // work RAM
|
|
map(0x0fc000, 0x0fc7ff).ram().share(m_spriteram);
|
|
map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0x0ff000, 0x0ff001).portr("IN0");
|
|
map(0x0ff000, 0x0ff000).w(FUNC(pspikes_banked_sound_state::spinlbrk_flip_screen_w));
|
|
map(0x0ff002, 0x0ff003).portr("IN1");
|
|
map(0x0ff002, 0x0ff002).w(FUNC(pspikes_banked_sound_state::karatblz_gfxbank_w));
|
|
map(0x0ff004, 0x0ff005).portr("IN2");
|
|
map(0x0ff006, 0x0ff007).portr("IN3");
|
|
map(0x0ff007, 0x0ff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
|
map(0x0ff008, 0x0ff009).portr("DSW").w(FUNC(pspikes_banked_sound_state::scrollx_w<0>));
|
|
map(0x0ff00b, 0x0ff00b).r(FUNC(pspikes_banked_sound_state::soundlatch_pending_r));
|
|
map(0x0ff00a, 0x0ff00b).w(FUNC(pspikes_banked_sound_state::scrolly_w<0>));
|
|
map(0x0ff00c, 0x0ff00d).w(FUNC(pspikes_banked_sound_state::scrollx_w<1>));
|
|
map(0x0ff00e, 0x0ff00f).w(FUNC(pspikes_banked_sound_state::scrolly_w<1>));
|
|
map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
|
|
}
|
|
|
|
void karatblzbl_state::main_map(address_map &map)
|
|
{
|
|
map.global_mask(0xfffff);
|
|
map(0x000000, 0x07ffff).rom();
|
|
map(0x080000, 0x081fff).ram().w(FUNC(karatblzbl_state::vram_w<0>)).share("vram.0");
|
|
map(0x082000, 0x083fff).ram().w(FUNC(karatblzbl_state::vram_w<1>)).share("vram.1");
|
|
map(0x0a0000, 0x0affff).ram().share(m_sprlookupram[0]);
|
|
map(0x0b0000, 0x0bffff).ram().share(m_sprlookupram[1]);
|
|
map(0x0c0000, 0x0cffff).ram(); // work RAM
|
|
map(0x0f8000, 0x0fbfff).ram(); // work RAM
|
|
map(0x0fc000, 0x0fc7ff).ram().share(m_spriteram);
|
|
map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0x0ff000, 0x0ff001).portr("IN0");
|
|
map(0x0ff000, 0x0ff000).w(FUNC(karatblzbl_state::spinlbrk_flip_screen_w));
|
|
map(0x0ff002, 0x0ff003).portr("IN1");
|
|
map(0x0ff002, 0x0ff002).w(FUNC(karatblzbl_state::karatblz_gfxbank_w));
|
|
map(0x0ff004, 0x0ff005).portr("IN2");
|
|
map(0x0ff006, 0x0ff007).portr("IN3");
|
|
map(0x0ff007, 0x0ff007).w(FUNC(karatblzbl_state::soundlatch_w));
|
|
map(0x0ff008, 0x0ff009).portr("DSW").w(FUNC(karatblzbl_state::scrollx_w<0>));
|
|
map(0x0ff00b, 0x0ff00b).r(FUNC(karatblzbl_state::soundlatch_pending_r));
|
|
map(0x0ff00a, 0x0ff00b).w(FUNC(karatblzbl_state::scrolly_w<0>));
|
|
map(0x0ff00c, 0x0ff00d).w(FUNC(karatblzbl_state::scrollx_w<1>));
|
|
map(0x0ff00e, 0x0ff00f).w(FUNC(karatblzbl_state::scrolly_w<1>));
|
|
map(0x0ff400, 0x0ff403).nopw(); // GGA access
|
|
}
|
|
|
|
void pspikes_banked_sound_state::spinlbrk_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x03ffff).rom();
|
|
map(0x080000, 0x080fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<0>)).share("vram.0");
|
|
map(0x082000, 0x082fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<1>)).share("vram.1");
|
|
map(0xff8000, 0xffbfff).ram(); // work RAM
|
|
map(0xffc000, 0xffc7ff).ram().share(m_spriteram);
|
|
map(0xffd000, 0xffd1ff).ram().share(m_rasterram); // bg1 scroll registers
|
|
map(0xffe000, 0xffe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0xfff000, 0xfff001).portr("IN0");
|
|
map(0xfff000, 0xfff000).w(FUNC(pspikes_banked_sound_state::spinlbrk_flip_screen_w));
|
|
map(0xfff001, 0xfff001).w(FUNC(pspikes_banked_sound_state::spinlbrk_gfxbank_w));
|
|
map(0xfff002, 0xfff003).portr("IN1").w(FUNC(pspikes_banked_sound_state::scrollx_w<1>));
|
|
map(0xfff004, 0xfff005).portr("DSW");
|
|
map(0xfff007, 0xfff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
|
// map(0xfff008, 0xfff009); - read when analog inputs are enabled
|
|
// map(0xfff00a, 0xfff00b); /
|
|
map(0xfff400, 0xfff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::turbofrc_map(address_map &map)
|
|
{
|
|
map.global_mask(0xfffff);
|
|
map(0x000000, 0x0bffff).rom();
|
|
map(0x0c0000, 0x0cffff).ram(); // work RAM
|
|
map(0x0d0000, 0x0d1fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<0>)).share("vram.0");
|
|
map(0x0d2000, 0x0d3fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<1>)).share("vram.1");
|
|
map(0x0e0000, 0x0e3fff).ram().share(m_sprlookupram[0]);
|
|
map(0x0e4000, 0x0e7fff).ram().share(m_sprlookupram[1]);
|
|
map(0x0f8000, 0x0fbfff).ram(); // work RAM
|
|
map(0x0fc000, 0x0fc7ff).ram().share(m_spriteram);
|
|
map(0x0fd000, 0x0fdfff).ram().share(m_rasterram); // bg1 scroll registers
|
|
map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0x0ff000, 0x0ff001).portr("IN0");
|
|
map(0x0ff001, 0x0ff001).w(FUNC(pspikes_banked_sound_state::turbofrc_flip_screen_w));
|
|
map(0x0ff002, 0x0ff003).portr("IN1").w(FUNC(pspikes_banked_sound_state::scrolly_w<0>));
|
|
map(0x0ff004, 0x0ff005).portr("DSW").w(FUNC(pspikes_banked_sound_state::scrollx_w<1>));
|
|
map(0x0ff007, 0x0ff007).r(FUNC(pspikes_banked_sound_state::soundlatch_pending_r));
|
|
map(0x0ff006, 0x0ff007).w(FUNC(pspikes_banked_sound_state::scrolly_w<1>));
|
|
map(0x0ff008, 0x0ff009).portr("IN2");
|
|
map(0x0ff008, 0x0ff00b).w(FUNC(pspikes_banked_sound_state::turbofrc_gfxbank_w));
|
|
map(0x0ff00c, 0x0ff00d).nopw(); // related to bg2 (written together with the scroll registers)
|
|
map(0x0ff00e, 0x0ff00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
|
map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::aerofgtb_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x07ffff).rom();
|
|
map(0x0c0000, 0x0cffff).ram(); // work RAM
|
|
map(0x0d0000, 0x0d1fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<0>)).share("vram.0");
|
|
map(0x0d2000, 0x0d3fff).ram().w(FUNC(pspikes_banked_sound_state::vram_w<1>)).share("vram.1");
|
|
map(0x0e0000, 0x0e3fff).ram().share(m_sprlookupram[0]);
|
|
map(0x0e4000, 0x0e7fff).ram().share(m_sprlookupram[1]);
|
|
map(0x0f8000, 0x0fbfff).ram(); // work RAM
|
|
map(0x0fc000, 0x0fc7ff).ram().share(m_spriteram);
|
|
map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0x0fe000, 0x0fe001).portr("IN0");
|
|
map(0x0fe001, 0x0fe001).w(FUNC(pspikes_banked_sound_state::turbofrc_flip_screen_w));
|
|
map(0x0fe002, 0x0fe003).portr("IN1").w(FUNC(pspikes_banked_sound_state::scrolly_w<0>));
|
|
map(0x0fe004, 0x0fe005).portr("DSW1").w(FUNC(pspikes_banked_sound_state::scrollx_w<1>));
|
|
map(0x0fe007, 0x0fe007).r(FUNC(pspikes_banked_sound_state::soundlatch_pending_r));
|
|
map(0x0fe006, 0x0fe007).w(FUNC(pspikes_banked_sound_state::scrolly_w<1>));
|
|
map(0x0fe008, 0x0fe009).portr("DSW2");
|
|
map(0x0fe008, 0x0fe00b).w(FUNC(pspikes_banked_sound_state::turbofrc_gfxbank_w));
|
|
map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
|
map(0x0fe400, 0x0fe403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
|
|
map(0x0ff000, 0x0fffff).ram().share(m_rasterram); // used only for the scroll registers
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::aerfboot_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x07ffff).rom();
|
|
map(0x0c0000, 0x0cffff).ram(); // work RAM
|
|
map(0x0d0000, 0x0d1fff).ram().w(FUNC(pspikes_sound_cpu_state::vram_w<0>)).share("vram.0");
|
|
map(0x0d2000, 0x0d3fff).ram().w(FUNC(pspikes_sound_cpu_state::vram_w<1>)).share("vram.1");
|
|
map(0x0e0000, 0x0e3fff).ram().share(m_sprlookupram[0]);
|
|
map(0x0e4000, 0x0e7fff).ram().share(m_sprlookupram[1]);
|
|
map(0x0f8000, 0x0fbfff).ram(); // work RAM
|
|
map(0x0fc000, 0x0fc7ff).ram(); //.share(m_spriteram);
|
|
map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0x0fe000, 0x0fe001).portr("IN0");
|
|
map(0x0fe002, 0x0fe003).portr("IN1");
|
|
map(0x0fe004, 0x0fe005).portr("DSW1");
|
|
map(0x0fe008, 0x0fe009).portr("DSW2");
|
|
map(0x0fe002, 0x0fe003).w(FUNC(pspikes_sound_cpu_state::scrolly_w<0>));
|
|
map(0x0fe004, 0x0fe005).w(FUNC(pspikes_sound_cpu_state::scrollx_w<1>));
|
|
map(0x0fe006, 0x0fe007).w(FUNC(pspikes_sound_cpu_state::scrolly_w<1>));
|
|
map(0x0fe008, 0x0fe00b).w(FUNC(pspikes_sound_cpu_state::turbofrc_gfxbank_w));
|
|
map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
|
map(0x0fe010, 0x0fe011).nopw();
|
|
map(0x0fe012, 0x0fe013).nopw(); // MSB = watchdog?
|
|
map(0x0fe400, 0x0fe403).nopw(); // GGA access
|
|
map(0x0ff000, 0x0fffff).ram().share(m_rasterram); // used only for the scroll registers
|
|
map(0x100000, 0x107fff).nopw();
|
|
map(0x108000, 0x10bfff).ram().share(m_spriteram);
|
|
map(0x10c000, 0x117fff).nopw();
|
|
}
|
|
|
|
void pspikes_base_state::aerfboo2_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x07ffff).rom();
|
|
map(0x0c0000, 0x0cffff).ram(); // work RAM
|
|
map(0x0d0000, 0x0d1fff).ram().w(FUNC(pspikes_base_state::vram_w<0>)).share("vram.0");
|
|
map(0x0d2000, 0x0d3fff).ram().w(FUNC(pspikes_base_state::vram_w<1>)).share("vram.1");
|
|
map(0x0e0000, 0x0e3fff).ram().share(m_sprlookupram[0]);
|
|
map(0x0e4000, 0x0e7fff).ram().share(m_sprlookupram[1]);
|
|
map(0x0f8000, 0x0fbfff).ram(); // work RAM
|
|
map(0x0fc000, 0x0fc7ff).ram().share(m_spriteram);
|
|
map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0x0fe000, 0x0fe001).portr("IN0");
|
|
map(0x0fe002, 0x0fe003).portr("IN1");
|
|
map(0x0fe004, 0x0fe005).portr("DSW1");
|
|
map(0x0fe008, 0x0fe009).portr("DSW2");
|
|
map(0x0fe002, 0x0fe003).w(FUNC(pspikes_base_state::scrolly_w<0>));
|
|
map(0x0fe004, 0x0fe005).w(FUNC(pspikes_base_state::scrollx_w<1>));
|
|
map(0x0fe006, 0x0fe007).w(FUNC(pspikes_base_state::scrolly_w<1>));
|
|
map(0x0fe008, 0x0fe00b).w(FUNC(pspikes_base_state::turbofrc_gfxbank_w));
|
|
map(0x0fe006, 0x0fe006).r(m_oki, FUNC(okim6295_device::read));
|
|
map(0x0fe00e, 0x0fe00e).w(m_oki, FUNC(okim6295_device::write));
|
|
map(0x0fe01e, 0x0fe01f).w(FUNC(pspikes_base_state::aerfboo2_okim6295_banking_w));
|
|
// map(0x0fe010, 0x0fe011).nopw();
|
|
// map(0x0fe012, 0x0fe013).w(FUNC(pspikes_base_state::aerfboot_soundlatch_w));
|
|
map(0x0fe400, 0x0fe403).nopw(); // GGA access
|
|
map(0x0ff000, 0x0fffff).ram().share(m_rasterram); // used only for the scroll registers
|
|
}
|
|
|
|
void wbbc97_state::main_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x3fffff).rom();
|
|
map(0x500000, 0x50ffff).ram(); // work RAM
|
|
map(0x600000, 0x605fff).ram().share(m_sprlookupram[0]);
|
|
map(0xa00000, 0xa3ffff).ram().share(m_bitmapram);
|
|
map(0xff8000, 0xff8fff).ram().w(FUNC(wbbc97_state::vram_w<0>)).share("vram.0");
|
|
map(0xffc000, 0xffc3ff).writeonly().share(m_spriteram);
|
|
map(0xffd000, 0xffdfff).ram().share(m_rasterram); // bg1 scroll registers
|
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
|
map(0xfff000, 0xfff001).portr("IN0");
|
|
map(0xfff001, 0xfff001).w(FUNC(wbbc97_state::pspikes_palette_bank_w));
|
|
map(0xfff002, 0xfff003).portr("IN1");
|
|
map(0xfff003, 0xfff003).w(FUNC(wbbc97_state::pspikes_gfxbank_w));
|
|
map(0xfff004, 0xfff005).portr("DSW").w(FUNC(wbbc97_state::scrolly_w<0>));
|
|
map(0xfff007, 0xfff007).r(FUNC(wbbc97_state::soundlatch_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
|
|
map(0xfff00e, 0xfff00f).w(FUNC(wbbc97_state::bitmap_enable_w));
|
|
map(0xfff400, 0xfff403).nopw(); // GGA access
|
|
}
|
|
|
|
void pspikes_banked_sound_state::sound_map(address_map &map)
|
|
{
|
|
map(0x0000, 0x77ff).rom().region("audiocpu", 0);
|
|
map(0x7800, 0x7fff).ram();
|
|
map(0x8000, 0xffff).bankr(m_soundbank);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::spinlbrk_sound_portmap(address_map &map)
|
|
{
|
|
map.global_mask(0xff);
|
|
map(0x00, 0x00).w(FUNC(pspikes_banked_sound_state::sh_bankswitch_w));
|
|
map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
|
|
map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
|
|
}
|
|
|
|
void pspikes_banked_sound_state::pspikes_sound_portmap(address_map &map)
|
|
{
|
|
map.global_mask(0xff);
|
|
map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
|
|
map(0x04, 0x04).w(FUNC(pspikes_banked_sound_state::sh_bankswitch_w));
|
|
map(0x08, 0x08).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
|
|
map(0x0c, 0x0c).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::aerfboot_sound_map(address_map &map)
|
|
{
|
|
map(0x0000, 0x7fff).rom();
|
|
map(0x8000, 0x87ff).ram();
|
|
map(0x9000, 0x9000).w(FUNC(pspikes_sound_cpu_state::aerfboot_okim6295_banking_w));
|
|
map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
|
map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
|
}
|
|
|
|
void wbbc97_state::sound_map(address_map &map)
|
|
{
|
|
map(0x0000, 0xefff).rom();
|
|
map(0xf000, 0xf7ff).ram();
|
|
map(0xf800, 0xf800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
|
map(0xf810, 0xf811).w("ymsnd", FUNC(ym3812_device::write));
|
|
map(0xfc00, 0xfc00).noprw();
|
|
map(0xfc20, 0xfc20).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
|
}
|
|
|
|
void karatblzbl_state::sound_map(address_map &map)
|
|
{
|
|
map(0x0000, 0xefff).rom();
|
|
map(0xf000, 0xf7ff).ram();
|
|
map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); //.w("soundlatch2", FUNC(generic_latch_8_device::write));
|
|
}
|
|
|
|
void karatblzbl_state::sound_portmap(address_map &map)
|
|
{
|
|
map.global_mask(0xff);
|
|
map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_r), FUNC(ym3812_device::address_w));
|
|
map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::data_w));
|
|
map(0x40, 0x40).w(FUNC(karatblzbl_state::d7759_write_port_0_w));
|
|
map(0x80, 0x80).w(FUNC(karatblzbl_state::d7759_reset_w));
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::kickball_sound_map(address_map &map)
|
|
{
|
|
map(0x0000, 0xefff).rom();
|
|
map(0xf000, 0xf7ff).ram();
|
|
map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::kickball_sound_portmap(address_map &map)
|
|
{
|
|
map.global_mask(0xff);
|
|
map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_r), FUNC(ym3812_device::address_w));
|
|
map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::data_w));
|
|
map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
|
map(0xc0, 0xc0).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
|
|
}
|
|
|
|
void spikes91_state::spikes91_sound_map(address_map &map)
|
|
{
|
|
map(0x0000, 0xdfff).rom();
|
|
map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
|
|
map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
|
//map(0xf000, 0xf000) // OKI M5205?
|
|
//map(0xf400, 0xf400) // OKI M5205?
|
|
map(0xf800, 0xffff).ram();
|
|
}
|
|
|
|
void pspikes_base_state::oki_map(address_map &map)
|
|
{
|
|
map(0x00000, 0x1ffff).rom();
|
|
map(0x20000, 0x3ffff).bankr(m_okibank);
|
|
}
|
|
|
|
static INPUT_PORTS_START( pspikes )
|
|
PORT_START("IN0")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("IN1")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("DSW")
|
|
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2")
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0003, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_2C ) )
|
|
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:3,4")
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0008, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x000c, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_2C ) )
|
|
PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW1:5" ) // Listed as "Unused"
|
|
PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:6" ) // Listed as "Unused"
|
|
PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
|
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:8")
|
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
// According to Super Volley '91 PCB Infos, here DSW2 starts
|
|
PORT_SERVICE_DIPLOC( 0x0100, IP_ACTIVE_LOW, "SW2:1" )
|
|
PORT_DIPNAME( 0x0600, 0x0600, "1 Player Starting Score" ) PORT_DIPLOCATION("SW2:2,3")
|
|
PORT_DIPSETTING( 0x0600, "12-12" )
|
|
PORT_DIPSETTING( 0x0400, "11-11" )
|
|
PORT_DIPSETTING( 0x0200, "11-12" )
|
|
PORT_DIPSETTING( 0x0000, "10-12" )
|
|
PORT_DIPNAME( 0x1800, 0x1800, "2 Players Starting Score" ) PORT_DIPLOCATION("SW2:4,5")
|
|
PORT_DIPSETTING( 0x1800, "9-9" )
|
|
PORT_DIPSETTING( 0x1000, "7-7" )
|
|
PORT_DIPSETTING( 0x0800, "5-5" )
|
|
PORT_DIPSETTING( 0x0000, "0-0" )
|
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6")
|
|
PORT_DIPSETTING( 0x2000, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) )
|
|
// When the players continue, only half of the time in SW2:7 is added
|
|
PORT_DIPNAME( 0x4000, 0x4000, "2 Players Time Per Credit" ) PORT_DIPLOCATION("SW2:7")
|
|
PORT_DIPSETTING( 0x4000, "3 min" )
|
|
PORT_DIPSETTING( 0x0000, "2 min" )
|
|
// The next one is reported as 'Must be off' in Super Volley '91 PCB Infos
|
|
PORT_DIPNAME( 0x8000, 0x8000, "Debug" ) PORT_DIPLOCATION("SW2:8")
|
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( pspikesb )
|
|
PORT_START("IN0")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("IN1")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("DSW")
|
|
// Dips bank 1
|
|
PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2")
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0003, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_2C ) )
|
|
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:3,4")
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0008, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x000c, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_2C ) )
|
|
PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW1:5" )
|
|
PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:6" )
|
|
PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
|
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW1:8" )
|
|
// Dips bank 2
|
|
PORT_DIPUNUSED_DIPLOC( 0x0100, 0x0100, "SW2:1" )
|
|
PORT_DIPNAME( 0x0600, 0x0600, "1 Player Starting Score" ) PORT_DIPLOCATION("SW2:2,3")
|
|
PORT_DIPSETTING( 0x0600, "12-12" )
|
|
PORT_DIPSETTING( 0x0400, "11-11" )
|
|
PORT_DIPSETTING( 0x0200, "11-12" )
|
|
PORT_DIPSETTING( 0x0000, "10-12" )
|
|
PORT_DIPNAME( 0x1800, 0x1800, "2 Players Starting Score" ) PORT_DIPLOCATION("SW2:4,5")
|
|
PORT_DIPSETTING( 0x1800, "9-9" )
|
|
PORT_DIPSETTING( 0x1000, "7-7" )
|
|
PORT_DIPSETTING( 0x0800, "5-5" )
|
|
PORT_DIPSETTING( 0x0000, "0-0" )
|
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6")
|
|
PORT_DIPSETTING( 0x2000, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) )
|
|
PORT_DIPNAME( 0x4000, 0x4000, "2 Players Time Per Credit" ) PORT_DIPLOCATION("SW2:7")
|
|
PORT_DIPSETTING( 0x4000, "3 min" )
|
|
PORT_DIPSETTING( 0x0000, "2 min" )
|
|
PORT_DIPNAME( 0x8000, 0x8000, "Debug" ) PORT_DIPLOCATION("SW2:8")
|
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( pspikesc )
|
|
PORT_INCLUDE( pspikes )
|
|
|
|
PORT_MODIFY("DSW")
|
|
PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Region ) ) PORT_DIPLOCATION("SW1:5,6")
|
|
PORT_DIPSETTING( 0x0030, DEF_STR( China ) )
|
|
PORT_DIPSETTING( 0x0020, DEF_STR( Taiwan ) )
|
|
PORT_DIPSETTING( 0x0010, DEF_STR( Hong_Kong ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( China ) )
|
|
INPUT_PORTS_END
|
|
|
|
|
|
static INPUT_PORTS_START( karatblz )
|
|
PORT_START("IN0")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 )
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("IN1")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
|
|
|
|
PORT_START("IN2")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(3)
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN3 )
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN4 )
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 )
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START4 )
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE2 )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("IN3")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4)
|
|
|
|
PORT_START("DSW")
|
|
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3") // It affects Coin 1, 2, 3 and 4
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( 4C_1C ) )
|
|
PORT_DIPSETTING( 0x0005, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0006, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0003, DEF_STR( 1C_2C ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( 1C_3C ) )
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( 1C_5C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
|
|
PORT_DIPNAME( 0x0008, 0x0008, "Continue Coin" ) PORT_DIPLOCATION("SW1:4")
|
|
PORT_DIPSETTING( 0x0008, "Start 1 Coin/Continue 1 Coin" )
|
|
PORT_DIPSETTING( 0x0000, "Start 2 Coin/Continue 1 Coin" )
|
|
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5")
|
|
PORT_DIPSETTING( 0x0000, "1" )
|
|
PORT_DIPSETTING( 0x0010, "2" )
|
|
PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:6,7") // Game Type
|
|
PORT_DIPSETTING( 0x0060, "2 Players" ) // 1 Unit / 2 Players
|
|
PORT_DIPSETTING( 0x0040, "3 Players" ) // 1 Unit / 3 Players
|
|
PORT_DIPSETTING( 0x0020, "4 Players" ) // 1 Unit / 4 Players
|
|
PORT_DIPSETTING( 0x0000, "4 Players (Team)" ) // 2 Units / 4 Players
|
|
/* With 4 player (Team) selected and Same Coin Slot:
|
|
Coin A & B credit together for use by _only_ player 1 or player 2
|
|
Coin C & D credit together for use by _only_ player 3 or player 4
|
|
Otherwise with Individual selected, everyone is separate */
|
|
PORT_DIPNAME( 0x0080, 0x0080, "Coin Slot" ) PORT_DIPLOCATION("SW1:8")
|
|
PORT_DIPSETTING( 0x0080, "Same" )
|
|
PORT_DIPSETTING( 0x0000, "Individual" )
|
|
// According to Turbo Force manual, here DSW2 starts
|
|
PORT_SERVICE_DIPLOC( 0x0100, IP_ACTIVE_LOW, "SW2:1" )
|
|
PORT_DIPNAME( 0x0600, 0x0600, "Number of Enemies" ) PORT_DIPLOCATION("SW2:2,3")
|
|
PORT_DIPSETTING( 0x0400, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x0600, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
|
|
PORT_DIPNAME( 0x1800, 0x1800, "Strength of Enemies" ) PORT_DIPLOCATION("SW2:4,5")
|
|
PORT_DIPSETTING( 0x1000, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x1800, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0800, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
|
|
// Listed in manual as N.C. (aka No Connection)
|
|
PORT_DIPNAME( 0x2000, 0x2000, "Freeze" ) PORT_DIPLOCATION("SW2:6")
|
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7")
|
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:8")
|
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( karatblzu )
|
|
PORT_INCLUDE( karatblz )
|
|
|
|
PORT_MODIFY("DSW")
|
|
// Suggested default in US manual is DEF_STR( Hard ) for these two
|
|
PORT_DIPNAME( 0x0600, 0x0200, "Number of Enemies" ) PORT_DIPLOCATION("SW2:2,3")
|
|
PORT_DIPSETTING( 0x0400, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x0600, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
|
|
PORT_DIPNAME( 0x1800, 0x0800, "Strength of Enemies" ) PORT_DIPLOCATION("SW2:4,5")
|
|
PORT_DIPSETTING( 0x1000, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x1800, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0800, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( spinlbrk )
|
|
PORT_START("IN0")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("IN1")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("DSW")
|
|
PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
|
|
PORT_DIPSETTING( 0x000f, "1 Credit 1 Health Pack" ) // I chose "Health Packs" as the actual value can change
|
|
PORT_DIPSETTING( 0x000e, "1 Credit 2 Health Packs" ) // via dipswitch 2-7 (0x4000) see below
|
|
PORT_DIPSETTING( 0x000d, "1 Credit 3 Health Packs" )
|
|
PORT_DIPSETTING( 0x000c, "1 Credit 4 Health Packs" )
|
|
PORT_DIPSETTING( 0x000b, "1 Credit 5 Health Packs" )
|
|
PORT_DIPSETTING( 0x000a, "1 Credit 6 Health Packs" )
|
|
PORT_DIPSETTING( 0x0009, "2 Credits 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x0008, "3 Credits 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x0007, "4 Credits 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x0006, "5 Credits 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x0005, "2 Credits 2 Health Packs" )
|
|
PORT_DIPSETTING( 0x0004, "2-1-1C 1-1-1 HPs" )
|
|
PORT_DIPSETTING( 0x0003, "2-2C 1-2 HPs" )
|
|
PORT_DIPSETTING( 0x0002, "1-1-1-1-1C 1-1-1-1-2 HPs" )
|
|
PORT_DIPSETTING( 0x0001, "1-1-1-1C 1-1-1-2 HPs" )
|
|
PORT_DIPSETTING( 0x0000, "1-1C 1-2 HPs" )
|
|
/* The last 5 Coin/Credit selections are cycles:
|
|
Example: 0x0004 = 2-1-1C 1-1-1 HPs:
|
|
2 Credits for the 1st Health Pack, 1 Credit for the 2nd Health Pack, 1 Credit
|
|
for the 3rd Health Pack... Then back to 2 Credits again for 1 HP, then 1 credit
|
|
and 1 credit.... on and on. With all Coin/Credit dips set to on, it's 1 Health
|
|
Pack for odd credits, 2 Health Packs for even credits :p
|
|
*/
|
|
PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
|
|
PORT_DIPSETTING( 0x00f0, "1 Credit 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x00e0, "1 Credit 2 Health Packs" )
|
|
PORT_DIPSETTING( 0x00d0, "1 Credit 3 Health Packs" )
|
|
PORT_DIPSETTING( 0x00c0, "1 Credit 4 Health Packs" )
|
|
PORT_DIPSETTING( 0x00b0, "1 Credit 5 Health Packs" )
|
|
PORT_DIPSETTING( 0x00a0, "1 Credit 6 Health Packs" )
|
|
PORT_DIPSETTING( 0x0090, "2 Credits 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x0080, "3 Credits 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x0070, "4 Credits 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x0060, "5 Credits 1 Health Pack" )
|
|
PORT_DIPSETTING( 0x0050, "2 Credits 2 Health Packs" )
|
|
PORT_DIPSETTING( 0x0040, "2-1-1C 1-1-1 HPs" )
|
|
PORT_DIPSETTING( 0x0030, "2-2C 1-2 HPs" )
|
|
PORT_DIPSETTING( 0x0020, "1-1-1-1-1C 1-1-1-1-2 HPs" )
|
|
PORT_DIPSETTING( 0x0010, "1-1-1-1C 1-1-1-2 HPs" )
|
|
PORT_DIPSETTING( 0x0000, "1-1C 1-2 HPs" )
|
|
// According to Spinal Breakers manual, here DSW2 starts
|
|
PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
|
|
PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
|
|
PORT_DIPNAME( 0x0400, 0x0400, "Credits For Extra Hitpoints" ) PORT_DIPLOCATION("SW2:3")
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:4")
|
|
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x1000, 0x1000, "Lever Type" ) PORT_DIPLOCATION("SW2:5")
|
|
PORT_DIPSETTING( 0x1000, "Digital" )
|
|
PORT_DIPSETTING( 0x0000, "Analog" ) // This setting causes lever error???
|
|
PORT_SERVICE_DIPLOC( 0x2000, IP_ACTIVE_LOW, "SW2:6" )
|
|
PORT_DIPNAME( 0x4000, 0x4000, "Health Pack" ) PORT_DIPLOCATION("SW2:7")
|
|
PORT_DIPSETTING( 0x4000, "32 Hitpoints" )
|
|
PORT_DIPSETTING( 0x0000, "40 Hitpoints" )
|
|
// Default in US manual is "5 points"
|
|
PORT_DIPNAME( 0x8000, 0x8000, "Life Restoration" ) PORT_DIPLOCATION("SW2:8")
|
|
PORT_DIPSETTING( 0x8000, "10 Points" )
|
|
PORT_DIPSETTING( 0x0000, "5 Points" )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( spinlbrku )
|
|
PORT_INCLUDE(spinlbrk)
|
|
|
|
PORT_MODIFY("DSW")
|
|
// Suggested default in US manual is DEF_STR( Hardest )
|
|
PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
|
|
PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
|
|
PORT_DIPNAME( 0x4000, 0x4000, "Health Pack" ) PORT_DIPLOCATION("SW2:7")
|
|
PORT_DIPSETTING( 0x4000, "20 Hitpoints" )
|
|
PORT_DIPSETTING( 0x0000, "32 Hitpoints" )
|
|
PORT_DIPNAME( 0x8000, 0x0000, "Life Restoration" ) PORT_DIPLOCATION("SW2:8")
|
|
PORT_DIPSETTING( 0x8000, "10 Points" )
|
|
PORT_DIPSETTING( 0x0000, "5 Points" )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( turbofrc )
|
|
PORT_START("IN0")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) // COIN1 in service
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE ) // "TEST"
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT )
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN3 )
|
|
|
|
PORT_START("IN1")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) // START1
|
|
|
|
PORT_START("IN2")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START3 )
|
|
|
|
PORT_START("DSW")
|
|
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3") // It affects Coin 1, 2 and 3
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( 4C_1C ) )
|
|
PORT_DIPSETTING( 0x0005, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0006, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0003, DEF_STR( 1C_2C ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( 1C_3C ) )
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( 1C_5C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
|
|
PORT_DIPNAME( 0x0008, 0x0008, "Continue Coin" ) PORT_DIPLOCATION("SW1:4")
|
|
PORT_DIPSETTING( 0x0008, "Start 1 Coin/Continue 1 Coin" )
|
|
PORT_DIPSETTING( 0x0000, "Start 2 Coin/Continue 1 Coin" )
|
|
PORT_DIPNAME( 0x0010, 0x0000, "Coin Slot" ) PORT_DIPLOCATION("SW1:5")
|
|
PORT_DIPSETTING( 0x0010, "Same" )
|
|
PORT_DIPSETTING( 0x0000, "Individual" )
|
|
PORT_DIPNAME( 0x0020, 0x0000, "Play Mode" ) PORT_DIPLOCATION("SW1:6")
|
|
PORT_DIPSETTING( 0x0020, "2 Players" )
|
|
PORT_DIPSETTING( 0x0000, "3 Players" )
|
|
PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
|
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW1:8" )
|
|
// According to Turbo Force manual, here DSW2 starts
|
|
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0e00, 0x0800, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:2,3,4")
|
|
PORT_DIPSETTING( 0x0e00, "1 (Easiest)")
|
|
PORT_DIPSETTING( 0x0c00, "2" )
|
|
PORT_DIPSETTING( 0x0a00, "3" )
|
|
PORT_DIPSETTING( 0x0800, "4 (Normal)" )
|
|
PORT_DIPSETTING( 0x0600, "5" )
|
|
PORT_DIPSETTING( 0x0400, "6" )
|
|
PORT_DIPSETTING( 0x0200, "7" )
|
|
PORT_DIPSETTING( 0x0000, "8 (Hardest)" )
|
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:5")
|
|
PORT_DIPSETTING( 0x0000, "2" )
|
|
PORT_DIPSETTING( 0x1000, "3" )
|
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:6")
|
|
PORT_DIPSETTING( 0x2000, "200000" )
|
|
PORT_DIPSETTING( 0x0000, "300000" )
|
|
// The following 2 are listed in Turbo Force manual as N.C. (aka No Connection) and "Should be kept on OFF"
|
|
PORT_DIPUNUSED_DIPLOC( 0x4000, 0x4000, "SW2:7" ) // Listed as "Unused"
|
|
PORT_DIPUNUSED_DIPLOC( 0x8000, 0x8000, "SW2:8" ) // Listed as "Unused"
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( aerofgtb )
|
|
PORT_START("IN0")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 )
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START2 )
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("IN1")
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
|
|
|
PORT_START("DSW1")
|
|
// Dips bank 1
|
|
// "Free Play mode: Have SW1:1-8 ON."
|
|
PORT_DIPNAME( 0x0001, 0x0001, "Coin Slot" ) PORT_DIPLOCATION("SW1:1")
|
|
PORT_DIPSETTING( 0x0001, "Same" )
|
|
PORT_DIPSETTING( 0x0000, "Individual" )
|
|
PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:2,3,4")
|
|
PORT_DIPSETTING( 0x000a, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x000e, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0008, DEF_STR( 1C_2C ) )
|
|
PORT_DIPSETTING( 0x0006, DEF_STR( 1C_3C ) )
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( 1C_5C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
|
|
PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7")
|
|
PORT_DIPSETTING( 0x0050, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0060, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0070, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0040, DEF_STR( 1C_2C ) )
|
|
PORT_DIPSETTING( 0x0030, DEF_STR( 1C_3C ) )
|
|
PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) )
|
|
PORT_DIPSETTING( 0x0010, DEF_STR( 1C_5C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
|
|
PORT_DIPNAME( 0x0080, 0x0080, "Continue Coin" ) PORT_DIPLOCATION("SW1:8") // "When ON SW1:2-7 are disabled."
|
|
PORT_DIPSETTING( 0x0080, "Start 1 Coin/Continue 1 Coin" )
|
|
PORT_DIPSETTING( 0x0000, "Start 2 Coin/Continue 1 Coin" )
|
|
|
|
// Dips bank 2
|
|
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4")
|
|
PORT_DIPSETTING( 0x0800, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x0c00, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0400, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
|
|
PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:5,6")
|
|
PORT_DIPSETTING( 0x2000, "1" )
|
|
PORT_DIPSETTING( 0x1000, "2" )
|
|
PORT_DIPSETTING( 0x3000, "3" )
|
|
PORT_DIPSETTING( 0x0000, "4" )
|
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:7")
|
|
PORT_DIPSETTING( 0x4000, "200000" )
|
|
PORT_DIPSETTING( 0x0000, "300000" )
|
|
PORT_SERVICE( 0x8000, IP_ACTIVE_LOW )
|
|
|
|
// Dips bank 3 (not documented)
|
|
PORT_START("DSW2")
|
|
PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Region ) ) PORT_DIPLOCATION("SW3:1")
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Japan ) )
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( Taiwan ) )
|
|
// TODO: there are others in the table at 11910
|
|
// this port is checked at 1b080
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( wbbc97 )
|
|
PORT_INCLUDE(pspikes)
|
|
|
|
PORT_MODIFY("IN0")
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
INPUT_PORTS_END
|
|
|
|
static const gfx_layout pspikesb_charlayout =
|
|
{
|
|
8,8,
|
|
RGN_FRAC(1,4),
|
|
4,
|
|
{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
|
|
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
|
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
|
8*8
|
|
};
|
|
|
|
static const gfx_layout aerfboot_charlayout =
|
|
{
|
|
8,8,
|
|
RGN_FRAC(1,8),
|
|
4,
|
|
{ RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
|
|
{ 7, 6, 5, 4, 3, 2, 1, 0 },
|
|
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
|
8*8
|
|
};
|
|
|
|
static const gfx_layout aerfboo2_charlayout =
|
|
{
|
|
8,8,
|
|
RGN_FRAC(1,2),
|
|
4,
|
|
{ 0, 1, 2, 3 },
|
|
{ 1*4, 0*4, RGN_FRAC(1,2)+1*4, RGN_FRAC(1,2)+0*4, 3*4, 2*4, RGN_FRAC(1,2)+3*4, RGN_FRAC(1,2)+2*4 },
|
|
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
|
|
32*4
|
|
};
|
|
|
|
static const gfx_layout pspikesb_spritelayout =
|
|
{
|
|
16,16,
|
|
RGN_FRAC(1,4),
|
|
4,
|
|
{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
|
|
{ 0, 1, 2, 3, 4, 5, 6, 7,
|
|
16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
|
|
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
|
|
32*8
|
|
};
|
|
|
|
|
|
static const gfx_layout aerfboot_spritelayout =
|
|
{
|
|
16,16,
|
|
RGN_FRAC(1,2),
|
|
4,
|
|
{ 0, 1, 2, 3 },
|
|
{ 2*4, 3*4, RGN_FRAC(1,2)+2*4, RGN_FRAC(1,2)+3*4, 0*4, 1*4, RGN_FRAC(1,2)+0*4, RGN_FRAC(1,2)+1*4,
|
|
6*4, 7*4, RGN_FRAC(1,2)+6*4, RGN_FRAC(1,2)+7*4, 4*4, 5*4, RGN_FRAC(1,2)+4*4, RGN_FRAC(1,2)+5*4 },
|
|
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
|
|
8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
|
|
64*8
|
|
};
|
|
|
|
static const gfx_layout aerfboo2_spritelayout =
|
|
{
|
|
16,16,
|
|
RGN_FRAC(1,2),
|
|
4,
|
|
{ 0,1,2,3 },
|
|
{ 28,24,20,16,12,8,4,0,60,56,52,48,44,40,36,32 },
|
|
{
|
|
0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64,8*64,9*64,10*64,11*64,12*64,13*64,14*64,15*64
|
|
},
|
|
16*64
|
|
};
|
|
|
|
static const gfx_layout kickball_spritelayout =
|
|
{
|
|
16,16,
|
|
RGN_FRAC(1,4),
|
|
4,
|
|
{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
|
|
{ 6,7, 4,5, 2,3, 0, 1, 14, 15, 12, 13, 10, 11, 8, 9 },
|
|
{ 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8, 16*8, 18*8, 20*8, 22*8, 24*8, 26*8 ,28*8, 30*8 },
|
|
32*8
|
|
};
|
|
|
|
static GFXDECODE_START( gfx_pspikes )
|
|
GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 64 ) // colors 0-1023 in 8 banks
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_pspikes_spr )
|
|
GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 1024, 64 ) // colors 1024-2047 in 4 banks
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_pspikesb )
|
|
GFXDECODE_ENTRY( "gfx1", 0, pspikesb_charlayout, 0, 64 ) // colors 0-1023 in 8 banks
|
|
GFXDECODE_ENTRY( "gfx2", 0, pspikesb_spritelayout, 1024, 64 ) // colors 1024-2047 in 4 banks
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_spikes91 )
|
|
GFXDECODE_ENTRY( "gfx1", 0, pspikesb_charlayout, 0, 64 ) // colors 0-1023 in 8 banks
|
|
GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_planar, 1024, 64 ) // colors 1024-2047 in 4 banks
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_kickball_spr )
|
|
GFXDECODE_ENTRY( "gfx2", 0, kickball_spritelayout, 1024, 64 ) // colors 1024-2047 in 4 banks
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_turbofrc )
|
|
GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 16 )
|
|
GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_lsb, 256, 16 )
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_turbofrc_spr1 )
|
|
GFXDECODE_ENTRY( "spritegfx", 0, gfx_16x16x4_packed_lsb, 512, 16 )
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_turbofrc_spr2 )
|
|
GFXDECODE_ENTRY( "gfx4", 0, gfx_16x16x4_packed_lsb, 768, 16 )
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_aerfboot )
|
|
GFXDECODE_ENTRY( "gfx1", 0, aerfboot_charlayout, 0, 16 )
|
|
GFXDECODE_ENTRY( "gfx1", 0x20000, aerfboot_charlayout, 256, 16 )
|
|
GFXDECODE_ENTRY( "gfx2", 0, aerfboot_spritelayout, 512, 16 )
|
|
GFXDECODE_ENTRY( "spritegfx", 0, aerfboot_spritelayout, 768, 16 )
|
|
GFXDECODE_END
|
|
|
|
static GFXDECODE_START( gfx_aerfboo2 )
|
|
GFXDECODE_ENTRY( "gfx1", 0, aerfboo2_charlayout, 0, 16 )
|
|
GFXDECODE_ENTRY( "gfx2", 0, aerfboo2_charlayout, 256, 16 )
|
|
GFXDECODE_ENTRY( "spritegfx", 0, aerfboo2_spritelayout, 512, 16 )
|
|
GFXDECODE_ENTRY( "spritegfx", 0x100000,aerfboo2_spritelayout, 768, 16 )
|
|
GFXDECODE_END
|
|
|
|
|
|
void pspikes_banked_sound_state::machine_start()
|
|
{
|
|
pspikes_sound_cpu_state::machine_start();
|
|
|
|
m_soundbank->configure_entries(0, 4, memregion("soundbank")->base(), 0x8000);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::machine_reset()
|
|
{
|
|
pspikes_sound_cpu_state::machine_reset();
|
|
|
|
m_soundbank->set_entry(0); // needed by spinlbrk
|
|
}
|
|
|
|
void pspikes_banked_sound_state::pspikes(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, XTAL(20'000'000)/2); // verified on pcb
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::pspikes_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_banked_sound_state::irq1_line_hold)); // all irq vectors are the same
|
|
|
|
Z80(config, m_audiocpu, XTAL(20'000'000)/4); // verified on pcb
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::sound_map);
|
|
m_audiocpu->set_addrmap(AS_IO, &pspikes_banked_sound_state::spinlbrk_sound_portmap);
|
|
// IRQs are triggered by the YM2610
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(61.31); // verified on pcb
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8+4, 44*8+4-1, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_banked_sound_state::screen_update_pspikes));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pspikes);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_pspikes_spr);
|
|
m_spr[0]->set_tile_indirect_cb(FUNC(pspikes_banked_sound_state::pspikes_tile_callback));
|
|
|
|
VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_banked_sound_state,pspikes)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "speaker", 2).front();
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set(FUNC(pspikes_banked_sound_state::soundlatch_pending_w));
|
|
m_soundlatch->set_separate_acknowledge(true);
|
|
|
|
ym2610_device &ymsnd(YM2610(config, "ymsnd", 8000000));
|
|
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 1);
|
|
ymsnd.add_route(1, "speaker", 1.0, 0);
|
|
ymsnd.add_route(2, "speaker", 1.0, 1);
|
|
}
|
|
|
|
void spikes91_state::spikes91(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &spikes91_state::spikes91_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(spikes91_state::irq1_line_hold)); // all irq vectors are the same
|
|
|
|
Z80(config, m_audiocpu, 24000000/8); // ?
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &spikes91_state::spikes91_sound_map);
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8, 320-1, 0*8+4, 224+4-1);
|
|
screen.set_screen_update(FUNC(spikes91_state::screen_update_spikes91));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_spikes91);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
|
|
|
|
//VSYSTEM_GGA(config, "gga", 0);
|
|
|
|
SPEAKER(config, "mono").front_center();
|
|
|
|
ym2151_device &ymsnd(YM2151(config, "ymsnd", 24000000/8));
|
|
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50);
|
|
|
|
// TODO: OKI M5205
|
|
}
|
|
|
|
void pspikes_base_state::pspikesb(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_base_state::pspikesb_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_base_state::irq1_line_hold)); // all irq vectors are the same
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8+4, 44*8+4-1, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_base_state::screen_update_pspikesb));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pspikesb);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
|
|
|
|
//VSYSTEM_GGA(config, "gga", 0);
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_base_state,pspikes)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "mono").front_center();
|
|
|
|
OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_LOW); // clock frequency & pin 7 not verified, pin high causes sound pitch to be too high
|
|
m_oki->set_addrmap(0, &pspikes_base_state::oki_map);
|
|
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
}
|
|
|
|
/*
|
|
Kick Ball
|
|
|
|
cloned bootleg-style Korean hardware, no original VSYSTEM parts
|
|
tile banking and sound system are different like many of the bootlegs
|
|
*/
|
|
|
|
void pspikes_sound_cpu_state::kickball(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, XTAL(10'000'000)); // 10Mhz XTAL near 10Mhz rated CPU
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_sound_cpu_state::kickball_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_sound_cpu_state::irq1_line_hold)); // only IRQ1 is valid
|
|
|
|
Z80(config, m_audiocpu, XTAL(4'000'000));
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &pspikes_sound_cpu_state::kickball_sound_map);
|
|
m_audiocpu->set_addrmap(AS_IO, &pspikes_sound_cpu_state::kickball_sound_portmap);
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8+4, 44*8+4-1, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_sound_cpu_state::screen_update_pspikes));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pspikes);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_kickball_spr);
|
|
m_spr[0]->set_tile_indirect_cb(FUNC(pspikes_sound_cpu_state::pspikes_tile_callback));
|
|
|
|
//VSYSTEM_GGA(config, "gga", 0); // still accessed as if it exists, in clone hardware?
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_sound_cpu_state,pspikes)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "mono").front_center();
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set(FUNC(pspikes_sound_cpu_state::soundlatch_pending_w));
|
|
m_soundlatch->set_separate_acknowledge(true);
|
|
|
|
ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(4'000'000))); // K-666 (YM3812)
|
|
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
|
|
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
|
|
OKIM6295(config, m_oki, XTAL(4'000'000)/4, okim6295_device::PIN7_LOW); // AD-65 (M6295) clock frequency & pin 7 not verified
|
|
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
}
|
|
|
|
void pspikes_base_state::pspikesc(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_base_state::pspikesc_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_base_state::irq1_line_hold)); // all irq vectors are the same
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8+4, 44*8+4-1, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_base_state::screen_update_pspikes));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pspikes);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
|
|
|
|
//VSYSTEM_GGA(config, "gga", 0);
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_pspikes_spr);
|
|
m_spr[0]->set_tile_indirect_cb(FUNC(pspikes_base_state::pspikes_tile_callback));
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_base_state,pspikes)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "mono").front_center();
|
|
|
|
OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
|
|
m_oki->set_addrmap(0, &pspikes_base_state::oki_map);
|
|
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::karatblz(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::karatblz_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_banked_sound_state::irq1_line_hold));
|
|
|
|
Z80(config, m_audiocpu, 8000000/2); // 4 MHz ???
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::sound_map);
|
|
m_audiocpu->set_addrmap(AS_IO, &pspikes_banked_sound_state::spinlbrk_sound_portmap); // IRQs are triggered by the YM2610
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(1*8, 45*8-1, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_banked_sound_state::screen_update_karatblz));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_turbofrc);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
|
|
|
|
VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_turbofrc_spr1);
|
|
m_spr[0]->set_tile_indirect_cb(FUNC(pspikes_banked_sound_state::pspikes_tile_callback));
|
|
|
|
VSYSTEM_SPR2(config, m_spr[1], 0, m_palette, gfx_turbofrc_spr2);
|
|
m_spr[1]->set_tile_indirect_cb(FUNC(pspikes_banked_sound_state::pspikes_tile2_callback));
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_banked_sound_state,karatblz)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "speaker", 2).front();
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set(FUNC(pspikes_banked_sound_state::soundlatch_pending_w));
|
|
m_soundlatch->set_separate_acknowledge(true);
|
|
|
|
ym2610_device &ymsnd(YM2610(config, "ymsnd", XTAL(8'000'000))); // verified on pcb
|
|
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 1);
|
|
ymsnd.add_route(1, "speaker", 1.0, 0);
|
|
ymsnd.add_route(2, "speaker", 1.0, 1);
|
|
}
|
|
|
|
void karatblzbl_state::karatblzbl(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &karatblzbl_state::main_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(karatblzbl_state::irq1_line_hold));
|
|
|
|
Z80(config, m_audiocpu, 8000000/2); // 4 MHz ???
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &karatblzbl_state::sound_map);
|
|
m_audiocpu->set_addrmap(AS_IO, &karatblzbl_state::sound_portmap);
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(1*8, 45*8-1, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(karatblzbl_state::screen_update_karatblz));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_turbofrc);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_turbofrc_spr1);
|
|
m_spr[0]->set_tile_indirect_cb(FUNC(karatblzbl_state::pspikes_tile_callback));
|
|
|
|
VSYSTEM_SPR2(config, m_spr[1], 0, m_palette, gfx_turbofrc_spr2);
|
|
m_spr[1]->set_tile_indirect_cb(FUNC(karatblzbl_state::pspikes_tile2_callback));
|
|
|
|
//VSYSTEM_GGA(config, "gga", 0);
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(karatblzbl_state,karatblz)
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
GENERIC_LATCH_8(config, "soundlatch2");
|
|
|
|
// sound hardware
|
|
|
|
SPEAKER(config, "mono").front_center();
|
|
|
|
ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(8'000'000)/2));
|
|
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
|
|
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
|
|
UPD7759(config, m_upd7759);
|
|
m_upd7759->add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::spinlbrk(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, XTAL(20'000'000)/2); // verified on pcb
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::spinlbrk_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_banked_sound_state::irq1_line_hold)); // there are vectors for 3 and 4 too, analog related?
|
|
|
|
Z80(config, m_audiocpu, XTAL(20'000'000)/4); // 5mhz verified on pcb
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::sound_map);
|
|
m_audiocpu->set_addrmap(AS_IO, &pspikes_banked_sound_state::spinlbrk_sound_portmap); // IRQs are triggered by the YM2610
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(1*8, 45*8-1, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_banked_sound_state::screen_update_spinlbrk));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_turbofrc);
|
|
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xRGB_555, 1024); // doesn't fully initialize palette at start-up ...
|
|
|
|
VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_turbofrc_spr1);
|
|
m_spr[0]->set_pritype(1);
|
|
|
|
VSYSTEM_SPR2(config, m_spr[1], 0, m_palette, gfx_turbofrc_spr2);
|
|
m_spr[1]->set_tile_indirect_cb(FUNC(pspikes_banked_sound_state::spinbrk_tile_callback)); // rom lookup
|
|
m_spr[1]->set_pritype(1);
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_banked_sound_state,spinlbrk)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "speaker", 2).front();
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set(FUNC(pspikes_banked_sound_state::soundlatch_pending_w));
|
|
m_soundlatch->set_separate_acknowledge(true);
|
|
|
|
ym2610_device &ymsnd(YM2610(config, "ymsnd", XTAL(8'000'000))); // verified on pcb
|
|
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 1);
|
|
ymsnd.add_route(1, "speaker", 1.0, 0);
|
|
ymsnd.add_route(2, "speaker", 1.0, 1);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::turbofrc(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, XTAL(20'000'000)/2); // verified on pcb
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::turbofrc_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_banked_sound_state::irq1_line_hold)); // all irq vectors are the same
|
|
|
|
Z80(config, m_audiocpu, XTAL(5'000'000)); // verified on pcb
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::sound_map);
|
|
m_audiocpu->set_addrmap(AS_IO, &pspikes_banked_sound_state::spinlbrk_sound_portmap); // IRQs are triggered by the YM2610
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(61.31); // verified on pcb
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8, 44*8-1, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_banked_sound_state::screen_update_turbofrc));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_turbofrc);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
|
|
|
|
VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_turbofrc_spr1);
|
|
m_spr[0]->set_tile_indirect_cb(FUNC(pspikes_banked_sound_state::pspikes_tile_callback));
|
|
|
|
VSYSTEM_SPR2(config, m_spr[1], 0, m_palette, gfx_turbofrc_spr2);
|
|
m_spr[1]->set_tile_indirect_cb(FUNC(pspikes_banked_sound_state::pspikes_tile2_callback));
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_banked_sound_state,turbofrc)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "speaker", 2).front();
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set(FUNC(pspikes_banked_sound_state::soundlatch_pending_w));
|
|
m_soundlatch->set_separate_acknowledge(true);
|
|
|
|
ym2610_device &ymsnd(YM2610(config, "ymsnd", XTAL(8'000'000))); // verified on pcb
|
|
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 1);
|
|
ymsnd.add_route(1, "speaker", 1.0, 0);
|
|
ymsnd.add_route(2, "speaker", 1.0, 1);
|
|
}
|
|
|
|
void pspikes_banked_sound_state::aerofgtb(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::aerofgtb_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_banked_sound_state::irq1_line_hold)); // all irq vectors are the same
|
|
|
|
Z80(config, m_audiocpu, 8000000/2); // 4 MHz ???
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &pspikes_banked_sound_state::sound_map);
|
|
m_audiocpu->set_addrmap(AS_IO, &pspikes_banked_sound_state::pspikes_sound_portmap); // IRQs are triggered by the YM2610
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(500)); // wrong but improves sprite-background synchronization
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8+12, 40*8-1+12, 0*8, 28*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_banked_sound_state::screen_update_turbofrc));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_turbofrc);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
|
|
|
|
VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_turbofrc_spr1);
|
|
m_spr[0]->set_tile_indirect_cb(FUNC(pspikes_banked_sound_state::pspikes_tile_callback));
|
|
m_spr[0]->set_offsets(3, -1);
|
|
|
|
VSYSTEM_SPR2(config, m_spr[1], 0, m_palette, gfx_turbofrc_spr2);
|
|
m_spr[1]->set_tile_indirect_cb(FUNC(pspikes_banked_sound_state::pspikes_tile2_callback));
|
|
m_spr[1]->set_offsets(3, -1);
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_banked_sound_state,aerofgtb)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "speaker", 2).front();
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set(FUNC(pspikes_banked_sound_state::soundlatch_pending_w));
|
|
m_soundlatch->set_separate_acknowledge(true);
|
|
|
|
ym2610_device &ymsnd(YM2610(config, "ymsnd", 8000000));
|
|
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
|
|
ymsnd.add_route(0, "speaker", 0.75, 0);
|
|
ymsnd.add_route(1, "speaker", 0.75, 1);
|
|
ymsnd.add_route(2, "speaker", 1.0, 0);
|
|
ymsnd.add_route(2, "speaker", 1.0, 1);
|
|
}
|
|
|
|
void pspikes_sound_cpu_state::aerfboot(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_sound_cpu_state::aerfboot_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_sound_cpu_state::irq1_line_hold));
|
|
|
|
Z80(config, m_audiocpu, 8000000/2); // 4 MHz ???
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &pspikes_sound_cpu_state::aerfboot_sound_map);
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(500)); // wrong but improves sprite-background synchronization
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8+12, 40*8-1+12, 0*8, 28*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_sound_cpu_state::screen_update_aerfboot));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_aerfboot);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
|
|
|
|
//VSYSTEM_GGA(config, "gga", 0);
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_sound_cpu_state,turbofrc)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "mono").front_center();
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
|
|
|
|
OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
|
|
m_oki->set_addrmap(0, &pspikes_sound_cpu_state::oki_map);
|
|
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
}
|
|
|
|
void pspikes_base_state::aerfboo2(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &pspikes_base_state::aerfboo2_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(pspikes_base_state::irq2_line_hold));
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(500)); // wrong but improves sprite-background synchronization
|
|
screen.set_size(64*8, 32*8);
|
|
screen.set_visarea(0*8+12, 40*8-1+12, 0*8, 28*8-1);
|
|
screen.set_screen_update(FUNC(pspikes_base_state::screen_update_aerfboo2));
|
|
screen.set_palette(m_palette);
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_aerfboo2);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024);
|
|
|
|
//VSYSTEM_GGA(config, "gga", 0);
|
|
|
|
MCFG_VIDEO_START_OVERRIDE(pspikes_base_state,turbofrc)
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "mono").front_center();
|
|
|
|
OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
|
|
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
}
|
|
|
|
void wbbc97_state::wbbc97(machine_config &config)
|
|
{
|
|
// basic machine hardware
|
|
M68000(config, m_maincpu, 20000000/2); // 10 MHz (?)
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &wbbc97_state::main_map);
|
|
m_maincpu->set_vblank_int("screen", FUNC(wbbc97_state::irq1_line_hold)); // all irq vectors are the same
|
|
|
|
Z80(config, m_audiocpu, 8000000/2); // 4 MHz ???
|
|
m_audiocpu->set_addrmap(AS_PROGRAM, &wbbc97_state::sound_map); // IRQs are triggered by the YM3812
|
|
|
|
// video hardware
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_refresh_hz(60);
|
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
|
screen.set_size(64*8, 64*8);
|
|
screen.set_visarea(0*8+14, 44*8-1+4, 0*8, 30*8-1);
|
|
screen.set_screen_update(FUNC(wbbc97_state::screen_update));
|
|
|
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pspikes);
|
|
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
|
|
|
|
//VSYSTEM_GGA(config, "gga", 0);
|
|
|
|
VSYSTEM_SPR2(config, m_spr[0], 0, m_palette, gfx_pspikes_spr);
|
|
m_spr[0]->set_tile_indirect_cb(FUNC(wbbc97_state::pspikes_tile_callback));
|
|
|
|
// sound hardware
|
|
SPEAKER(config, "mono").front_center();
|
|
|
|
GENERIC_LATCH_8(config, m_soundlatch);
|
|
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
|
|
|
|
ym3812_device &ymsnd(YM3812(config, "ymsnd", 3579545));
|
|
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
|
|
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
|
|
|
|
OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
|
|
m_oki->add_route(ALL_OUTPUTS, "mono", 0.50);
|
|
}
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
Game driver(s)
|
|
|
|
***************************************************************************/
|
|
|
|
ROM_START( pspikes )
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "pspikes2.bin", 0x00000, 0x40000, CRC(ec0c070e) SHA1(4ddcc184e835a2f9d15f01aaa03734fd75fe797e) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "19", 0x00000, 0x20000, CRC(7e8ed6e5) SHA1(eeb1a1e1989fad8fc1e741928422efaec0598868) )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "g7h", 0x000000, 0x80000, CRC(74c23c3d) SHA1(c0ac57d1f05c42556f97154ce1a08f465948546b) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", 0 )
|
|
ROM_LOAD32_WORD( "g7j", 0x000000, 0x80000, CRC(0b9e4739) SHA1(64b440a5026735aafe1a7cc2806fe0d78f4a6fba) )
|
|
ROM_LOAD32_WORD( "g7l", 0x000002, 0x80000, CRC(943139ff) SHA1(59065f9c3b3a47159c5968df199bdcb1b4f51f29) )
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "a47", 0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "o5b", 0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) )
|
|
|
|
ROM_REGION( 0x0200, "plds", 0 )
|
|
ROM_LOAD( "peel18cv8.bin", 0x0000, 0x0155, CRC(af5a83c9) SHA1(e8fd64ff71d1c2dff5a0d307ca3543352e903bbe) )
|
|
ROM_END
|
|
|
|
ROM_START( pspikesk )
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "20", 0x00000, 0x40000, CRC(75cdcee2) SHA1(272a08c46c1d0989f9fbb156e28e6a7ffa9c0a53) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "19", 0x00000, 0x20000, CRC(7e8ed6e5) SHA1(eeb1a1e1989fad8fc1e741928422efaec0598868) )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "g7h", 0x000000, 0x80000, CRC(74c23c3d) SHA1(c0ac57d1f05c42556f97154ce1a08f465948546b) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", 0 )
|
|
ROM_LOAD32_WORD( "g7j", 0x000000, 0x80000, CRC(0b9e4739) SHA1(64b440a5026735aafe1a7cc2806fe0d78f4a6fba) )
|
|
ROM_LOAD32_WORD( "g7l", 0x000002, 0x80000, CRC(943139ff) SHA1(59065f9c3b3a47159c5968df199bdcb1b4f51f29) )
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "a47", 0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "o5b", 0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) )
|
|
|
|
ROM_REGION( 0x0400, "plds", 0 )
|
|
ROM_LOAD( "peel18cv8-1101a-u15.53", 0x0000, 0x0155, CRC(c05e3bea) SHA1(b42e16f1f41ad9796ff3044c850d5331e7a0f91a) )
|
|
ROM_LOAD( "peel18cv8-1103-u112.76", 0x0200, 0x0155, CRC(786da44c) SHA1(02fd63083631abeced42714fb58a11b7d463285b) )
|
|
ROM_END
|
|
|
|
ROM_START( pspikesu )
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "svolly91.73", 0x00000, 0x40000, CRC(bfbffcdb) SHA1(2bba99cb6d0cb2fbb3cd1242551dd7e2c6ebef50) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "19", 0x00000, 0x20000, CRC(7e8ed6e5) SHA1(eeb1a1e1989fad8fc1e741928422efaec0598868) )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "g7h", 0x000000, 0x80000, CRC(74c23c3d) SHA1(c0ac57d1f05c42556f97154ce1a08f465948546b) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", 0 )
|
|
ROM_LOAD32_WORD( "g7j", 0x000000, 0x80000, CRC(0b9e4739) SHA1(64b440a5026735aafe1a7cc2806fe0d78f4a6fba) )
|
|
ROM_LOAD32_WORD( "g7l", 0x000002, 0x80000, CRC(943139ff) SHA1(59065f9c3b3a47159c5968df199bdcb1b4f51f29) )
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "a47", 0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "o5b", 0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) )
|
|
ROM_END
|
|
|
|
ROM_START( svolly91 )
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "u11.jpn", 0x00000, 0x40000, CRC(ea2e4c82) SHA1(f9cf9122499d9b1e54221fb8b6ef9c12004ca85e) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 64k for the audio CPU + banks
|
|
ROM_LOAD( "19", 0x00000, 0x20000, CRC(7e8ed6e5) SHA1(eeb1a1e1989fad8fc1e741928422efaec0598868) )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "g7h", 0x000000, 0x80000, CRC(74c23c3d) SHA1(c0ac57d1f05c42556f97154ce1a08f465948546b) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", 0 )
|
|
ROM_LOAD32_WORD( "g7j", 0x000000, 0x80000, CRC(0b9e4739) SHA1(64b440a5026735aafe1a7cc2806fe0d78f4a6fba) )
|
|
ROM_LOAD32_WORD( "g7l", 0x000002, 0x80000, CRC(943139ff) SHA1(59065f9c3b3a47159c5968df199bdcb1b4f51f29) )
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "a47", 0x00000, 0x40000, CRC(c6779dfa) SHA1(ea7adefdb0da02755428aac9a6f86c908fc11253) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "o5b", 0x000000, 0x100000, CRC(07d6cbac) SHA1(d3d5778dbaca7b6cdceae959d0847d56df7b5cc1) )
|
|
ROM_END
|
|
|
|
ROM_START( pspikesb )
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "2.ic63", 0x00000, 0x20000, CRC(d25e184c) SHA1(89ad275b03d909a7d16d2927df3ddf12301e4c60) )
|
|
ROM_LOAD16_BYTE( "3.ic62", 0x00001, 0x20000, CRC(5add1a34) SHA1(e166d5c76f2f087254f2af442f49251a9885f5bc) )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", ROMREGION_INVERT )
|
|
ROM_LOAD( "4.ic122", 0x00000, 0x20000, CRC(ea1c05a7) SHA1(adfdfeac80df287ffa6f469dc38ea94698817cf4) )
|
|
ROM_LOAD( "5.ic120", 0x20000, 0x20000, CRC(bfdc60f4) SHA1(2b1893fac2651ac82f5a05b8f891b20c928ced7e) )
|
|
ROM_LOAD( "6.ic118", 0x40000, 0x20000, CRC(96a5c235) SHA1(dad4ef9069d3130f719a402737909bb48225b73c) )
|
|
ROM_LOAD( "7.ic116", 0x60000, 0x20000, CRC(a7e00b36) SHA1(2b5e85ec02e8893d7d730aad4d690883b1d236cc) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", ROMREGION_INVERT )
|
|
ROM_LOAD( "8.ic121", 0x00000, 0x40000, CRC(fc096cfc) SHA1(75af810c97361b6f08767949b90c394a7a03f60b) )
|
|
ROM_LOAD( "9.ic119", 0x40000, 0x40000, CRC(a45ec985) SHA1(16357f5df7841e11889ac6fced1e2a9288585a29) )
|
|
ROM_LOAD( "10.ic117", 0x80000, 0x40000, CRC(3976b372) SHA1(72feec5a6fe7995f39d4b431dbbf25435359b04d) )
|
|
ROM_LOAD( "11.ic115", 0xc0000, 0x40000, CRC(f9249937) SHA1(5993e5ab7295ca2fa5c8f4c05ce23731741f4e97) )
|
|
|
|
// $00000-$20000 stays the same in all sound banks,
|
|
// the second half of the bank is what gets switched
|
|
ROM_REGION( 0x080000, "oki", 0 ) // Samples
|
|
ROM_LOAD( "1.ic21", 0x000000, 0x80000, CRC(1b78ed0b) SHA1(886bfd78709c295839dd51c7f5a13f5c452c0ab3) )
|
|
ROM_END
|
|
|
|
ROM_START( pspikesba )
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "2.ic63", 0x00000, 0x20000, CRC(dd87d28a) SHA1(09ab75bcd62db1a49af123648812852780ac9d60) ) // sldh
|
|
ROM_LOAD16_BYTE( "3.ic62", 0x00001, 0x20000, CRC(ec505317) SHA1(1e2b9e52654b08169827dbd877de2e724140e50c) ) // sldh
|
|
|
|
ROM_REGION( 0x080000, "gfx1", ROMREGION_INVERT )
|
|
ROM_LOAD( "4.ic122", 0x00000, 0x20000, CRC(ea1c05a7) SHA1(adfdfeac80df287ffa6f469dc38ea94698817cf4) )
|
|
ROM_LOAD( "5.ic120", 0x20000, 0x20000, CRC(bfdc60f4) SHA1(2b1893fac2651ac82f5a05b8f891b20c928ced7e) )
|
|
ROM_LOAD( "6.ic118", 0x40000, 0x20000, CRC(96a5c235) SHA1(dad4ef9069d3130f719a402737909bb48225b73c) )
|
|
ROM_LOAD( "7.ic116", 0x60000, 0x20000, CRC(a7e00b36) SHA1(2b5e85ec02e8893d7d730aad4d690883b1d236cc) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", ROMREGION_INVERT )
|
|
ROM_LOAD( "8.ic121", 0x00000, 0x40000, CRC(fc096cfc) SHA1(75af810c97361b6f08767949b90c394a7a03f60b) )
|
|
ROM_LOAD( "9.ic119", 0x40000, 0x40000, CRC(a45ec985) SHA1(16357f5df7841e11889ac6fced1e2a9288585a29) )
|
|
ROM_LOAD( "10.ic117", 0x80000, 0x40000, CRC(3976b372) SHA1(72feec5a6fe7995f39d4b431dbbf25435359b04d) )
|
|
ROM_LOAD( "11.ic115", 0xc0000, 0x40000, CRC(f9249937) SHA1(5993e5ab7295ca2fa5c8f4c05ce23731741f4e97) )
|
|
|
|
// $00000-$20000 stays the same in all sound banks,
|
|
// the second half of the bank is what gets switched
|
|
ROM_REGION( 0x080000, "oki", 0 ) // Samples
|
|
ROM_LOAD( "1.ic21", 0x000000, 0x80000, CRC(1b78ed0b) SHA1(886bfd78709c295839dd51c7f5a13f5c452c0ab3) )
|
|
ROM_END
|
|
|
|
|
|
/*
|
|
|
|
1991 Spikes (Italian bootleg)
|
|
|
|
Anno 1991
|
|
Produttore
|
|
N.revisione PX012-30
|
|
|
|
CPU
|
|
|
|
1x MC68000P10 (main)(ic1)
|
|
1x Z8400BB1 (sound)(ic139)
|
|
1x YM2151 (sound)(ic150)
|
|
1x OKI M5205 (sound)(ic145)
|
|
2x LM324N (sound)(ic152, ic153)
|
|
1x TDA2003 (sound)(ic154)
|
|
1x oscillator 20.000 (xtal1)
|
|
1x oscillator 24.000 (xtal2)
|
|
1x blu crystal POE400B (xtal3)(sound)
|
|
|
|
ROMs
|
|
2x AM27C512 (1,2)(sound)
|
|
4x M27C1001 (3,4,5,6)
|
|
2x D27C010 (7,8) (main prg)
|
|
2x D27C512 (9,10) (gfx)
|
|
4x AM27C020 (11,12,13,14) (gfx)
|
|
1x EP910PC (ic7)
|
|
2x GAL16V8 (ic147, ic94)(not dumped)
|
|
|
|
Note
|
|
1x 28x2 JAMMA edge connector
|
|
1x trimmer (volume)
|
|
2x 8 switches dip
|
|
--------------------------------
|
|
|
|
This is a clone of "Power Spikes" with Italian language.
|
|
It was rather famous in Italy
|
|
|
|
--------------------------------
|
|
|
|
This bootleg is very ugly, for example it has 'bad' looking tiles
|
|
instead of the video system background on the intro screens.
|
|
This appears to be correct as the same behavior can be seen on the
|
|
real PCB and in MAME.
|
|
|
|
Sprite, and sound hardware are also modified when compared to the
|
|
original game
|
|
|
|
*/
|
|
|
|
ROM_START( spikes91 )
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "7.ic2", 0x00001, 0x20000, CRC(41e38d7e) SHA1(d0c226a8b61a2311c781ed5747d78b8dbddbc7ef) )
|
|
ROM_LOAD16_BYTE( "8.ic3", 0x00000, 0x20000, CRC(9c488daa) SHA1(8336fec855786c6cc6a836d86b74e130d60013b7) )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "3.ic76", 0x00000, 0x20000, CRC(ab451eee) SHA1(439c5f46b4d8e66610417369bd0b2bf5568936cb) )
|
|
ROM_LOAD( "4.ic75", 0x20000, 0x20000, CRC(fe857bbd) SHA1(669151cf28f87cc494883dc537881d86887d08b9) )
|
|
ROM_LOAD( "5.ic74", 0x40000, 0x20000, CRC(d7fcd97c) SHA1(eb7c8ac111f5916350aae0ee3edc019207fef654) )
|
|
ROM_LOAD( "6.ic73", 0x60000, 0x20000, CRC(e6b9107f) SHA1(aaab2f2dfb85ee764091253c9a4ab89bc51d7518) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", ROMREGION_INVERT )
|
|
ROM_LOAD( "11.ic118", 0x00000, 0x40000, CRC(6e65b4b2) SHA1(5296e8095ec60f79a5cd3f9db829c7d491670282) )
|
|
ROM_LOAD( "12.ic119", 0x40000, 0x40000, CRC(60e0d3e0) SHA1(93efc58b03610e7f18ff076ac985428a446454f9) )
|
|
ROM_LOAD( "13.ic120", 0x80000, 0x40000, CRC(89213a8c) SHA1(8524d5c14669d9b03f1fe050c4318d4111bc8ef7) )
|
|
ROM_LOAD( "14.ic121", 0xc0000, 0x40000, CRC(468cbf5b) SHA1(60fbc2771e40f8de51a51891b8ddcc14e2b1e52c) )
|
|
|
|
ROM_REGION16_BE( 0x020000, "sprlookuprom", 0 ) // lookup tables for the sprites
|
|
ROM_LOAD16_BYTE( "10.ic104", 0x00000, 0x10000, CRC(769ade77) SHA1(9cb581d02592c69f37d4b5a902d3515f40915ec4) )
|
|
ROM_LOAD16_BYTE( "9.ic103", 0x00001, 0x10000, CRC(201cb748) SHA1(f78d384e4e9c5996a278f76fb4d5f28812a27de5) )
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 Sound CPU + M5205 Samples
|
|
ROM_LOAD( "1.ic140", 0x00000, 0x10000, CRC(e3065b1d) SHA1(c4a3a95ba7f43cdf1b0c574f41de06d007ad2bd8) ) // matches svolleybl in rpunch.cpp
|
|
ROM_LOAD( "2.ic141", 0x10000, 0x10000, CRC(5dd8bf22) SHA1(d1a12894fe8ca47e47b4a1e911cabf20dd41eda4) ) // 1ST AND 2ND HALF IDENTICAL, matches svolleybl in rpunch.cpp when halved
|
|
|
|
ROM_REGION( 0x1000, "user2", 0 ) // ?
|
|
ROM_LOAD( "ep910pc.ic7", 0x00000, 0x884, CRC(e7a3913a) SHA1(6f18f55ecdc94a416baecd16fe7c6698b1ec9d87) )
|
|
ROM_END
|
|
|
|
ROM_START( spikes91b ) // todo, check how this differs, only 1 of the 68k pair and the sprite lookup roms were different
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "7.ic2", 0x00001, 0x20000, CRC(46433a36) SHA1(a4df1bf710693779a9444f28c99591331765aada) ) // sldh
|
|
ROM_LOAD16_BYTE( "8.ic3", 0x00000, 0x20000, CRC(9c488daa) SHA1(8336fec855786c6cc6a836d86b74e130d60013b7) )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "3.ic76", 0x00000, 0x20000, CRC(ab451eee) SHA1(439c5f46b4d8e66610417369bd0b2bf5568936cb) )
|
|
ROM_LOAD( "4.ic75", 0x20000, 0x20000, CRC(fe857bbd) SHA1(669151cf28f87cc494883dc537881d86887d08b9) )
|
|
ROM_LOAD( "5.ic74", 0x40000, 0x20000, CRC(d7fcd97c) SHA1(eb7c8ac111f5916350aae0ee3edc019207fef654) )
|
|
ROM_LOAD( "6.ic73", 0x60000, 0x20000, CRC(e6b9107f) SHA1(aaab2f2dfb85ee764091253c9a4ab89bc51d7518) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", ROMREGION_INVERT )
|
|
ROM_LOAD( "11.ic118", 0x00000, 0x40000, CRC(6e65b4b2) SHA1(5296e8095ec60f79a5cd3f9db829c7d491670282) )
|
|
ROM_LOAD( "12.ic119", 0x40000, 0x40000, CRC(60e0d3e0) SHA1(93efc58b03610e7f18ff076ac985428a446454f9) )
|
|
ROM_LOAD( "13.ic120", 0x80000, 0x40000, CRC(89213a8c) SHA1(8524d5c14669d9b03f1fe050c4318d4111bc8ef7) )
|
|
ROM_LOAD( "14.ic121", 0xc0000, 0x40000, CRC(468cbf5b) SHA1(60fbc2771e40f8de51a51891b8ddcc14e2b1e52c) )
|
|
|
|
ROM_REGION16_BE( 0x020000, "sprlookuprom", 0 ) // lookup tables for the sprites
|
|
ROM_LOAD16_BYTE( "10.ic104", 0x00000, 0x8000, CRC(b6fe4e57) SHA1(6b62936ff9d0f39fd02c3db488d53bc035c2272d) ) // sldh
|
|
ROM_LOAD16_BYTE( "9.ic103", 0x00001, 0x8000, CRC(5479ed35) SHA1(ca26289318352901841fcdf26d9b43e797ac39b6) ) // sldh
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 Sound CPU + M5205 Samples
|
|
ROM_LOAD( "1.ic140", 0x00000, 0x10000, CRC(e3065b1d) SHA1(c4a3a95ba7f43cdf1b0c574f41de06d007ad2bd8) ) // matches svolleybl in rpunch.cpp
|
|
ROM_LOAD( "2.ic141", 0x10000, 0x10000, CRC(5dd8bf22) SHA1(d1a12894fe8ca47e47b4a1e911cabf20dd41eda4) ) // 1ST AND 2ND HALF IDENTICAL, matches svolleybl in rpunch.cpp when halved
|
|
|
|
ROM_REGION( 0x1000, "user2", 0 ) // ?
|
|
ROM_LOAD( "ep910pc.ic7", 0x00000, 0x884, CRC(e7a3913a) SHA1(6f18f55ecdc94a416baecd16fe7c6698b1ec9d87) )
|
|
ROM_END
|
|
|
|
|
|
// this is a bootleg / chinese hack of power spikes
|
|
|
|
ROM_START( pspikesc )
|
|
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "27c010.1", 0x00000, 0x20000, CRC(06a6ed73) SHA1(05bffe8766131a8729115244ed499ecdd872962a) )
|
|
ROM_LOAD16_BYTE( "27c010.2", 0x00001, 0x20000, CRC(ff31474e) SHA1(f21d44c15aeffd19e8c7fac49d6b9b239bd41c1b) )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "vlh30.bin", 0x000000, 0x80000, CRC(74c23c3d) SHA1(c0ac57d1f05c42556f97154ce1a08f465948546b) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", 0 )
|
|
ROM_LOAD32_WORD( "vlh10-vh118.bin", 0x000000, 0x80000, CRC(0b9e4739) SHA1(64b440a5026735aafe1a7cc2806fe0d78f4a6fba) )
|
|
ROM_LOAD32_WORD( "vlh20-vh102.bin", 0x000002, 0x80000, CRC(943139ff) SHA1(59065f9c3b3a47159c5968df199bdcb1b4f51f29) )
|
|
|
|
// $00000-$20000 stays the same in all sound banks,
|
|
// the second half of the bank is what gets switched
|
|
ROM_REGION( 0x080000, "oki", 0 ) // Samples
|
|
ROM_LOAD( "vlh40.bin", 0x00000, 0x80000, CRC(27166dd4) SHA1(f32ef1735d1a1aeda5df0337e46d65282dd798ad) )
|
|
ROM_END
|
|
|
|
ROM_START( spinlbrk )
|
|
ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "ic98", 0x00000, 0x10000, CRC(36c2bf70) SHA1(f627d0e7dad1760bcc95af4a6346050a1a277048) )
|
|
ROM_LOAD16_BYTE( "ic104", 0x00001, 0x10000, CRC(34a7e158) SHA1(5884570c1be38bfedffca3fd38089d0ae3391d4f) )
|
|
ROM_LOAD16_BYTE( "ic93", 0x20000, 0x10000, CRC(726f4683) SHA1(65aff0548333571d47a96d4bf5a7857f12399cc7) )
|
|
ROM_LOAD16_BYTE( "ic94", 0x20001, 0x10000, CRC(c4385e03) SHA1(6683eed812fa8a5430125b14e8647f8e9024bbdd) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 )
|
|
ROM_LOAD( "ic118", 0x00000, 0x10000, CRC(1025f024) SHA1(3e497c74c950d2cd2a0931cf2ae9b0124d11ca6a) )
|
|
ROM_RELOAD( 0x10000, 0x10000 )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_LOAD( "ic117", 0x00000, 0x08000, CRC(625ada41) SHA1(2dd0674c68ea382431115c155afbf880f5b9deb2) )
|
|
|
|
ROM_REGION( 0x100000, "gfx1", 0 )
|
|
ROM_LOAD( "ic15", 0x000000, 0x80000, CRC(e318cf3a) SHA1(d634001a0029566ce7b8fa30075970919eb5f44e) )
|
|
ROM_LOAD( "ic9", 0x080000, 0x80000, CRC(e071f674) SHA1(b6d98d7fcc28516d937d8c655d07305515be8a20) )
|
|
|
|
ROM_REGION( 0x200000, "gfx2", 0 )
|
|
ROM_LOAD( "ic17", 0x000000, 0x80000, CRC(a63d5a55) SHA1(a942651a206a2abe4f60f0717e1d5d8e89b993d4) )
|
|
ROM_LOAD( "ic11", 0x080000, 0x80000, CRC(7dcc913d) SHA1(527bae5020581d1ac322ea25c8e0994d54bbc051) )
|
|
ROM_LOAD( "ic16", 0x100000, 0x80000, CRC(0d84af7f) SHA1(07356ee61c84c4c4ccb49c8dfe8c468990580041) ) //FIRST AND SECOND HALF IDENTICAL
|
|
|
|
ROM_REGION( 0x100000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "ic12", 0x000000, 0x80000, CRC(d63fac4e) SHA1(bb96d2e41334d136b9208dbe7e88a45e3bbc6542) )
|
|
ROM_LOAD32_WORD( "ic18", 0x000002, 0x80000, CRC(5a60444b) SHA1(62c418aedd1087dac82dcb44830cce00278103dd) )
|
|
|
|
ROM_REGION( 0x200000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "ic14", 0x000000, 0x80000, CRC(1befd0f3) SHA1(7ab6fb5bf814ef3ae9a306a0d32d1078ee594461) )
|
|
ROM_LOAD32_WORD( "ic20", 0x100000, 0x80000, CRC(c2f84a61) SHA1(1dce538ced54a61c43ed25e1d71b5ac1c8935cc5) )
|
|
ROM_LOAD32_WORD( "ic35", 0x000002, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
|
|
ROM_LOAD32_WORD( "ic40", 0x100002, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) )
|
|
|
|
ROM_REGION16_BE( 0x24000, "sprlookuprom", 0 ) // hardcoded sprite maps
|
|
ROM_LOAD16_BYTE( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
|
|
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
|
|
// 20000-23fff empty space, filled in vh_startup
|
|
|
|
// no "ymsnd:adpcmb"
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "ic166", 0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) )
|
|
ROM_LOAD( "ic163", 0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) ) //FIRST AND SECOND HALF IDENTICAL
|
|
|
|
ROM_REGION( 0x0c00, "plds", 0 )
|
|
ROM_LOAD( "epl16p8bp.ic133", 0x0000, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic127", 0x0200, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic99", 0x0400, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic100", 0x0600, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "gal16v8a.ic95", 0x0800, 0x0117, NO_DUMP ) // read protected
|
|
ROM_LOAD( "gal16v8a.ic114", 0x0a00, 0x0117, NO_DUMP ) // read protected
|
|
ROM_END
|
|
|
|
ROM_START( spinlbrku )
|
|
ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "ic98.u5", 0x00000, 0x10000, CRC(3a0f7667) SHA1(55d5fa1a325c17532ed83d231032bdbe9fb84d85) )
|
|
ROM_LOAD16_BYTE( "ic104.u6",0x00001, 0x10000, CRC(a0e0af31) SHA1(21f6c3246bb7be2fd926324fd6d041e319a4e214) )
|
|
ROM_LOAD16_BYTE( "ic93.u4", 0x20000, 0x10000, CRC(0cf73029) SHA1(e1346b759a41f9eec9536dc90671778582e595b4) )
|
|
ROM_LOAD16_BYTE( "ic94.u3", 0x20001, 0x10000, CRC(5cf7c426) SHA1(b201da40c4511d2845004dff72d36adbb8a4fab9) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 )
|
|
ROM_LOAD( "ic118", 0x00000, 0x10000, CRC(1025f024) SHA1(3e497c74c950d2cd2a0931cf2ae9b0124d11ca6a) )
|
|
ROM_RELOAD( 0x10000, 0x10000 )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_LOAD( "ic117", 0x00000, 0x08000, CRC(625ada41) SHA1(2dd0674c68ea382431115c155afbf880f5b9deb2) )
|
|
|
|
ROM_REGION( 0x100000, "gfx1", 0 )
|
|
ROM_LOAD( "ic15", 0x000000, 0x80000, CRC(e318cf3a) SHA1(d634001a0029566ce7b8fa30075970919eb5f44e) )
|
|
ROM_LOAD( "ic9", 0x080000, 0x80000, CRC(e071f674) SHA1(b6d98d7fcc28516d937d8c655d07305515be8a20) )
|
|
|
|
ROM_REGION( 0x200000, "gfx2", 0 )
|
|
ROM_LOAD( "ic17", 0x000000, 0x80000, CRC(a63d5a55) SHA1(a942651a206a2abe4f60f0717e1d5d8e89b993d4) )
|
|
ROM_LOAD( "ic11", 0x080000, 0x80000, CRC(7dcc913d) SHA1(527bae5020581d1ac322ea25c8e0994d54bbc051) )
|
|
ROM_LOAD( "ic16", 0x100000, 0x80000, CRC(0d84af7f) SHA1(07356ee61c84c4c4ccb49c8dfe8c468990580041) ) //FIRST AND SECOND HALF IDENTICAL
|
|
|
|
ROM_REGION( 0x100000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "ic12", 0x000000, 0x80000, CRC(d63fac4e) SHA1(bb96d2e41334d136b9208dbe7e88a45e3bbc6542) )
|
|
ROM_LOAD32_WORD( "ic18", 0x000002, 0x80000, CRC(5a60444b) SHA1(62c418aedd1087dac82dcb44830cce00278103dd) )
|
|
|
|
ROM_REGION( 0x200000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "ic14", 0x000000, 0x80000, CRC(1befd0f3) SHA1(7ab6fb5bf814ef3ae9a306a0d32d1078ee594461) )
|
|
ROM_LOAD32_WORD( "ic20", 0x100000, 0x80000, CRC(c2f84a61) SHA1(1dce538ced54a61c43ed25e1d71b5ac1c8935cc5) )
|
|
ROM_LOAD32_WORD( "ic35", 0x000002, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
|
|
ROM_LOAD32_WORD( "ic40", 0x100002, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) )
|
|
|
|
ROM_REGION16_BE( 0x24000, "sprlookuprom", 0 ) // hardcoded sprite maps
|
|
ROM_LOAD16_BYTE( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
|
|
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
|
|
// 20000-23fff empty space, filled in vh_startup
|
|
|
|
// no "ymsnd:adpcmb"
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "ic166", 0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) )
|
|
ROM_LOAD( "ic163", 0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) ) //FIRST AND SECOND HALF IDENTICAL
|
|
|
|
ROM_REGION( 0x0c00, "plds", 0 )
|
|
ROM_LOAD( "epl16p8bp.ic133", 0x0000, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic127", 0x0200, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic99", 0x0400, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic100", 0x0600, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "gal16v8a.ic95", 0x0800, 0x0117, NO_DUMP ) // read protected
|
|
ROM_LOAD( "gal16v8a.ic114", 0x0a00, 0x0117, NO_DUMP ) // read protected
|
|
ROM_END
|
|
|
|
ROM_START( spinlbrkj )
|
|
ROM_REGION( 0x60000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "j5", 0x00000, 0x10000, CRC(6a3d690e) SHA1(4ac1985ea0a73b8fc12105ff75121718595dd171) )
|
|
ROM_LOAD16_BYTE( "j6", 0x00001, 0x10000, CRC(869593fa) SHA1(5821b011d42113f247bd100cecf140bbfc1e969c) )
|
|
ROM_LOAD16_BYTE( "j4", 0x20000, 0x10000, CRC(33e33912) SHA1(d6d052cd8dbedfd254bdf5e82ad770e4bf241777) )
|
|
ROM_LOAD16_BYTE( "j3", 0x20001, 0x10000, CRC(16ca61d0) SHA1(5d99a1261251412c3c758af751997fe31026c0d6) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 )
|
|
ROM_LOAD( "ic118", 0x00000, 0x10000, CRC(1025f024) SHA1(3e497c74c950d2cd2a0931cf2ae9b0124d11ca6a) )
|
|
ROM_RELOAD( 0x10000, 0x10000 )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_LOAD( "ic117", 0x00000, 0x08000, CRC(625ada41) SHA1(2dd0674c68ea382431115c155afbf880f5b9deb2) )
|
|
|
|
ROM_REGION( 0x100000, "gfx1", 0 )
|
|
ROM_LOAD( "ic15", 0x000000, 0x80000, CRC(e318cf3a) SHA1(d634001a0029566ce7b8fa30075970919eb5f44e) )
|
|
ROM_LOAD( "ic9", 0x080000, 0x80000, CRC(e071f674) SHA1(b6d98d7fcc28516d937d8c655d07305515be8a20) )
|
|
|
|
ROM_REGION( 0x200000, "gfx2", 0 )
|
|
ROM_LOAD( "ic17", 0x000000, 0x80000, CRC(a63d5a55) SHA1(a942651a206a2abe4f60f0717e1d5d8e89b993d4) )
|
|
ROM_LOAD( "ic11", 0x080000, 0x80000, CRC(7dcc913d) SHA1(527bae5020581d1ac322ea25c8e0994d54bbc051) )
|
|
ROM_LOAD( "ic16", 0x100000, 0x80000, CRC(0d84af7f) SHA1(07356ee61c84c4c4ccb49c8dfe8c468990580041) ) //FIRST AND SECOND HALF IDENTICAL
|
|
|
|
ROM_REGION( 0x100000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "ic12", 0x000000, 0x80000, CRC(d63fac4e) SHA1(bb96d2e41334d136b9208dbe7e88a45e3bbc6542) )
|
|
ROM_LOAD32_WORD( "ic18", 0x000002, 0x80000, CRC(5a60444b) SHA1(62c418aedd1087dac82dcb44830cce00278103dd) )
|
|
|
|
ROM_REGION( 0x200000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "ic14", 0x000000, 0x80000, CRC(1befd0f3) SHA1(7ab6fb5bf814ef3ae9a306a0d32d1078ee594461) )
|
|
ROM_LOAD32_WORD( "ic20", 0x100000, 0x80000, CRC(c2f84a61) SHA1(1dce538ced54a61c43ed25e1d71b5ac1c8935cc5) )
|
|
ROM_LOAD32_WORD( "ic35", 0x000002, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
|
|
ROM_LOAD32_WORD( "ic40", 0x100002, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) )
|
|
|
|
ROM_REGION16_BE( 0x24000, "sprlookuprom", 0 ) // hardcoded sprite maps
|
|
ROM_LOAD16_BYTE( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
|
|
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
|
|
// 20000-23fff empty space, filled in vh_startup
|
|
|
|
// no "ymsnd:adpcmb"
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "ic166", 0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) )
|
|
ROM_LOAD( "ic163", 0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) ) //FIRST AND SECOND HALF IDENTICAL
|
|
|
|
ROM_REGION( 0x0c00, "plds", 0 )
|
|
ROM_LOAD( "epl16p8bp.ic133", 0x0000, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic127", 0x0200, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic99", 0x0400, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic100", 0x0600, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "gal16v8a.ic95", 0x0800, 0x0117, NO_DUMP ) // read protected
|
|
ROM_LOAD( "gal16v8a.ic114", 0x0a00, 0x0117, NO_DUMP ) // read protected
|
|
ROM_END
|
|
|
|
/*
|
|
Dumper's notes:
|
|
-board has sockets and jumpers for ROMS not fitted on the final board.
|
|
-early version has game crashing bugs and other glitches.
|
|
-the mask ROMs match the regular version.
|
|
-RAM & ROM check is not shown.
|
|
-region warning seems much slower to pass.
|
|
-attract mode starts in the jungle, old dumps all start with a building with fences
|
|
*/
|
|
|
|
ROM_START( spinlbrkup ) // the labels are official Video System without numbering and handwritten on top
|
|
ROM_REGION( 0x60000, "maincpu", 0 ) // these differ quite a lot
|
|
ROM_LOAD16_BYTE( "spb0-e.ic98", 0x00000, 0x10000, CRC(421eaff2) SHA1(e0ffd37fa8361a544cd7a66da0b802367adccd7d) )
|
|
ROM_LOAD16_BYTE( "spb0-o.ic104", 0x00001, 0x10000, CRC(9576d508) SHA1(426a630a7a5bdaa0316391582b25274a6d923c79) )
|
|
ROM_LOAD16_BYTE( "sbp1-e.ic93", 0x20000, 0x10000, CRC(d6444d1e) SHA1(2aa80b8cf3c44e4a583b57f4a6cc673d984f3a05) )
|
|
ROM_LOAD16_BYTE( "sbp1-o.ic94", 0x20001, 0x10000, CRC(a3f7bd8e) SHA1(dc393b4911c6acadb97b0380db15ae5c972a3505) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 )
|
|
ROM_LOAD( "11-14.m.bank.ic118", 0x00000, 0x10000, CRC(a1ed270b) SHA1(f513baed1f7efda3d843982e1fa4857f058e8595) ) // relatively minor differences
|
|
ROM_RELOAD( 0x10000, 0x10000 )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 )
|
|
ROM_LOAD( "11-14-15.00.music.ic117", 0x00000, 0x08000, CRC(6b8c8f09) SHA1(d57699ea82f5e48ed8c9909a040c2fa6f988f8b3) ) // this differs quite a lot
|
|
|
|
ROM_REGION( 0x100000, "gfx1", 0 )
|
|
ROM_LOAD( "ic15", 0x000000, 0x80000, CRC(e318cf3a) SHA1(d634001a0029566ce7b8fa30075970919eb5f44e) )
|
|
ROM_LOAD( "ic9", 0x080000, 0x80000, CRC(e071f674) SHA1(b6d98d7fcc28516d937d8c655d07305515be8a20) )
|
|
|
|
ROM_REGION( 0x200000, "gfx2", 0 )
|
|
ROM_LOAD( "ic17", 0x000000, 0x80000, CRC(a63d5a55) SHA1(a942651a206a2abe4f60f0717e1d5d8e89b993d4) )
|
|
ROM_LOAD( "ic11", 0x080000, 0x80000, CRC(7dcc913d) SHA1(527bae5020581d1ac322ea25c8e0994d54bbc051) )
|
|
ROM_LOAD( "ic16", 0x100000, 0x80000, CRC(0d84af7f) SHA1(07356ee61c84c4c4ccb49c8dfe8c468990580041) ) //FIRST AND SECOND HALF IDENTICAL
|
|
|
|
ROM_REGION( 0x100000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "ic12", 0x000000, 0x80000, CRC(d63fac4e) SHA1(bb96d2e41334d136b9208dbe7e88a45e3bbc6542) )
|
|
ROM_LOAD32_WORD( "ic18", 0x000002, 0x80000, CRC(5a60444b) SHA1(62c418aedd1087dac82dcb44830cce00278103dd) )
|
|
|
|
ROM_REGION( 0x200000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "ic14", 0x000000, 0x80000, CRC(1befd0f3) SHA1(7ab6fb5bf814ef3ae9a306a0d32d1078ee594461) )
|
|
ROM_LOAD32_WORD( "ic20", 0x100000, 0x80000, CRC(c2f84a61) SHA1(1dce538ced54a61c43ed25e1d71b5ac1c8935cc5) )
|
|
ROM_LOAD32_WORD( "ic35", 0x000002, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
|
|
ROM_LOAD32_WORD( "ic40", 0x100002, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) )
|
|
|
|
ROM_REGION16_BE( 0x24000, "sprlookuprom", 0 ) // very minor differences
|
|
ROM_LOAD16_BYTE( "sbm-1-18.ic19", 0x00000, 0x10000, CRC(e155357f) SHA1(05864c5d281df52adce4e959c65260ee3f585988) )
|
|
ROM_LOAD16_BYTE( "sbm-0-18.ic13", 0x00001, 0x10000, CRC(16b79e45) SHA1(9f89381bc3949adf1317836fc35608c0982a4b46) )
|
|
|
|
// no "ymsnd:adpcmb"
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 )
|
|
ROM_LOAD( "ic166", 0x000000, 0x80000, CRC(6e0d063a) SHA1(313983e69f9625814de033fef7f6e9564694117a) )
|
|
ROM_LOAD( "ic163", 0x080000, 0x80000, CRC(e6621dfb) SHA1(85ee77c4720b7eb20ecf293c16b3105c8dcb1114) ) //FIRST AND SECOND HALF IDENTICAL
|
|
|
|
ROM_REGION( 0x0c00, "plds", 0 )
|
|
ROM_LOAD( "epl16p8bp.ic133", 0x0000, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic127", 0x0200, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic99", 0x0400, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "epl16p8bp.ic100", 0x0600, 0x0107, NO_DUMP ) // read protected
|
|
ROM_LOAD( "gal16v8a.ic95", 0x0800, 0x0117, NO_DUMP ) // read protected
|
|
ROM_LOAD( "gal16v8a.ic114", 0x0a00, 0x0117, NO_DUMP ) // read protected
|
|
ROM_END
|
|
|
|
/*
|
|
|
|
Karate Blazers regions known to exist but not dumped or not verified:
|
|
|
|
Toushin Blazers title:
|
|
4V2 with 1V1 Tecmo license??
|
|
V2 with 1V1 "original" non Tecmo verions??
|
|
|
|
Karate Blazers title
|
|
3V2 with 1V1 Euro, current parent??
|
|
|
|
Note: It's unknown what if any difference there is between V1 and 1V1 ROMs
|
|
|
|
*/
|
|
ROM_START( karatblz )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "rom2v3.u14", 0x00000, 0x40000, CRC(01f772e1) SHA1(f87f19a82d75839b5671f23ce14218d7b910eabc) ) // need to verify correct "region" stamped number, should this be "3v2.u14" ??
|
|
ROM_LOAD16_WORD_SWAP( "v1.u15", 0x40000, 0x40000, CRC(d16ee21b) SHA1(d454cdf22b72a537b9d7ae73deb8136a4f09da47) ) // chip with VideoSystem logo V and 1
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "v5.u92", 0x00000, 0x20000, CRC(97d67510) SHA1(1ffd419e3dec7de1099cd5819b0309f7dd0df80e) ) // chip with VideoSystem logo V and 5
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x80000, "gfx1", 0 )
|
|
ROM_LOAD( "gha.u55", 0x00000, 0x80000, CRC(3e0cea91) SHA1(bab41715f106d364013b64649441d280bc6893cf) )
|
|
|
|
ROM_REGION( 0x80000, "gfx2", 0 )
|
|
ROM_LOAD( "gh9.u61", 0x00000, 0x80000, CRC(5d1676bd) SHA1(6227d489c9c6259a0ac2bef62821fbf94efca8c6) )
|
|
|
|
ROM_REGION( 0x400000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "u42", 0x000000, 0x100000, CRC(65f0da84) SHA1(0bfbc6f4b87583703246704eb9fa13b1b3e6f90e) )
|
|
ROM_LOAD32_WORD( "v3.u44", 0x200000, 0x020000, CRC(34bdead2) SHA1(99f9a8cac807fcd599db55d2dc624ed92a3862ef) ) // chip with VideoSystem logo V and 3
|
|
ROM_LOAD32_WORD( "u43", 0x000002, 0x100000, CRC(7b349e5d) SHA1(8590a328f403e2c697a8d698c08d4adaf01fff62) )
|
|
ROM_LOAD32_WORD( "v4.u45", 0x200002, 0x020000, CRC(be4d487d) SHA1(6d19c91d0498c43017219f0c10f4845a51ccfa7f) ) // chip with VideoSystem logo V and 4
|
|
|
|
ROM_REGION( 0x100000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "u59.ghb", 0x000000, 0x80000, CRC(158c9cde) SHA1(a2c1b404d40e6c2627691f5c7a3f63484bd5d2de) )
|
|
ROM_LOAD32_WORD( "ghd.u60", 0x000002, 0x80000, CRC(73180ae3) SHA1(e4eaf6693826d9e72032d0a0e25938a23ab7d792) )
|
|
|
|
ROM_REGION( 0x080000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "u105.gh8", 0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "u104", 0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) )
|
|
ROM_END
|
|
|
|
ROM_START( karatblzt ) // Karate Blazers, Tecmo license
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "2v2.u14", 0x00000, 0x40000, CRC(7ae17b7f) SHA1(d7916c3159e22dde56a0de750032da9ee46b3d6c) ) // 2 stamped on chip with VideoSystem logo V and 2
|
|
ROM_LOAD16_WORD_SWAP( "v1.u15", 0x40000, 0x40000, CRC(d16ee21b) SHA1(d454cdf22b72a537b9d7ae73deb8136a4f09da47) ) // chip with VideoSystem logo V and 1
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "v5.u92", 0x00000, 0x20000, CRC(97d67510) SHA1(1ffd419e3dec7de1099cd5819b0309f7dd0df80e) ) // chip with VideoSystem logo V and 5
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x80000, "gfx1", 0 )
|
|
ROM_LOAD( "gha.u55", 0x00000, 0x80000, CRC(3e0cea91) SHA1(bab41715f106d364013b64649441d280bc6893cf) )
|
|
|
|
ROM_REGION( 0x80000, "gfx2", 0 )
|
|
ROM_LOAD( "gh9.u61", 0x00000, 0x80000, CRC(5d1676bd) SHA1(6227d489c9c6259a0ac2bef62821fbf94efca8c6) )
|
|
|
|
ROM_REGION( 0x400000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "u42", 0x000000, 0x100000, CRC(65f0da84) SHA1(0bfbc6f4b87583703246704eb9fa13b1b3e6f90e) )
|
|
ROM_LOAD32_WORD( "v3.u44", 0x200000, 0x020000, CRC(34bdead2) SHA1(99f9a8cac807fcd599db55d2dc624ed92a3862ef) ) // chip with VideoSystem logo V and 3
|
|
ROM_LOAD32_WORD( "u43", 0x000002, 0x100000, CRC(7b349e5d) SHA1(8590a328f403e2c697a8d698c08d4adaf01fff62) )
|
|
ROM_LOAD32_WORD( "v4.u45", 0x200002, 0x020000, CRC(be4d487d) SHA1(6d19c91d0498c43017219f0c10f4845a51ccfa7f) ) // chip with VideoSystem logo V and 4
|
|
|
|
ROM_REGION( 0x100000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "u59.ghb", 0x000000, 0x80000, CRC(158c9cde) SHA1(a2c1b404d40e6c2627691f5c7a3f63484bd5d2de) )
|
|
ROM_LOAD32_WORD( "ghd.u60", 0x000002, 0x80000, CRC(73180ae3) SHA1(e4eaf6693826d9e72032d0a0e25938a23ab7d792) )
|
|
|
|
ROM_REGION( 0x080000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "u105.gh8", 0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "u104", 0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) )
|
|
ROM_END
|
|
|
|
ROM_START( karatblza )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "_v2.u14", 0x00000, 0x40000, CRC(7a78976e) SHA1(3b74b80765622b8488bdd0729ec98a2c7584cad5) ) // need to verify correct "region" stamped number
|
|
ROM_LOAD16_WORD_SWAP( "_v1.u15", 0x40000, 0x40000, CRC(47e410fe) SHA1(d26fc93f91ccf00856db2b7dfd0d905d87e99bd8) ) // need to verify correct "region" stamped number, is this one "1v1" ??
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "v5.u92", 0x00000, 0x20000, CRC(97d67510) SHA1(1ffd419e3dec7de1099cd5819b0309f7dd0df80e) ) // chip with VideoSystem logo V and 5
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x80000, "gfx1", 0 )
|
|
ROM_LOAD( "gha.u55", 0x00000, 0x80000, CRC(3e0cea91) SHA1(bab41715f106d364013b64649441d280bc6893cf) )
|
|
|
|
ROM_REGION( 0x80000, "gfx2", 0 )
|
|
ROM_LOAD( "gh9.u61", 0x00000, 0x80000, CRC(5d1676bd) SHA1(6227d489c9c6259a0ac2bef62821fbf94efca8c6) )
|
|
|
|
ROM_REGION( 0x400000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "u42", 0x000000, 0x100000, CRC(65f0da84) SHA1(0bfbc6f4b87583703246704eb9fa13b1b3e6f90e) )
|
|
ROM_LOAD32_WORD( "v3.u44", 0x200000, 0x020000, CRC(34bdead2) SHA1(99f9a8cac807fcd599db55d2dc624ed92a3862ef) ) // chip with VideoSystem logo V and 3
|
|
ROM_LOAD32_WORD( "u43", 0x000002, 0x100000, CRC(7b349e5d) SHA1(8590a328f403e2c697a8d698c08d4adaf01fff62) )
|
|
ROM_LOAD32_WORD( "v4.u45", 0x200002, 0x020000, CRC(be4d487d) SHA1(6d19c91d0498c43017219f0c10f4845a51ccfa7f) ) // chip with VideoSystem logo V and 4
|
|
|
|
ROM_REGION( 0x100000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "u59.ghb", 0x000000, 0x80000, CRC(158c9cde) SHA1(a2c1b404d40e6c2627691f5c7a3f63484bd5d2de) )
|
|
ROM_LOAD32_WORD( "ghd.u60", 0x000002, 0x80000, CRC(73180ae3) SHA1(e4eaf6693826d9e72032d0a0e25938a23ab7d792) )
|
|
|
|
ROM_REGION( 0x080000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "u105.gh8", 0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "u104", 0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) )
|
|
ROM_END
|
|
|
|
ROM_START( karatblzu )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "1v2.u14", 0x00000, 0x40000, CRC(202e6220) SHA1(2605511a0574cbc39fdf3d8ae27a0aa9b43345fb) ) // 1 stamped on chip with VideoSystem logo V and 2
|
|
ROM_LOAD16_WORD_SWAP( "v1.u15", 0x40000, 0x40000, CRC(d16ee21b) SHA1(d454cdf22b72a537b9d7ae73deb8136a4f09da47) ) // chip with VideoSystem logo V and 1
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "v5.u92", 0x00000, 0x20000, CRC(97d67510) SHA1(1ffd419e3dec7de1099cd5819b0309f7dd0df80e) ) // chip with VideoSystem logo V and 5
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x80000, "gfx1", 0 )
|
|
ROM_LOAD( "gha.u55", 0x00000, 0x80000, CRC(3e0cea91) SHA1(bab41715f106d364013b64649441d280bc6893cf) )
|
|
|
|
ROM_REGION( 0x80000, "gfx2", 0 )
|
|
ROM_LOAD( "gh9.u61", 0x00000, 0x80000, CRC(5d1676bd) SHA1(6227d489c9c6259a0ac2bef62821fbf94efca8c6) )
|
|
|
|
ROM_REGION( 0x400000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "u42", 0x000000, 0x100000, CRC(65f0da84) SHA1(0bfbc6f4b87583703246704eb9fa13b1b3e6f90e) )
|
|
ROM_LOAD32_WORD( "v3.u44", 0x200000, 0x020000, CRC(34bdead2) SHA1(99f9a8cac807fcd599db55d2dc624ed92a3862ef) ) // chip with VideoSystem logo V and 3
|
|
ROM_LOAD32_WORD( "u43", 0x000002, 0x100000, CRC(7b349e5d) SHA1(8590a328f403e2c697a8d698c08d4adaf01fff62) )
|
|
ROM_LOAD32_WORD( "v4.u45", 0x200002, 0x020000, CRC(be4d487d) SHA1(6d19c91d0498c43017219f0c10f4845a51ccfa7f) ) // chip with VideoSystem logo V and 4
|
|
|
|
ROM_REGION( 0x100000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "u59.ghb", 0x000000, 0x80000, CRC(158c9cde) SHA1(a2c1b404d40e6c2627691f5c7a3f63484bd5d2de) )
|
|
ROM_LOAD32_WORD( "ghd.u60", 0x000002, 0x80000, CRC(73180ae3) SHA1(e4eaf6693826d9e72032d0a0e25938a23ab7d792) )
|
|
|
|
ROM_REGION( 0x080000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "u105.gh8", 0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "u104", 0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) )
|
|
ROM_END
|
|
|
|
ROM_START( karatblzj ) // Toushin Blazers, Tecmo license
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "2tecmo.u14", 0x00000, 0x40000, CRC(57e52654) SHA1(15939d8f7c693b9248f3dd2b2ad5fbae2c19621f) ) // need to verify correct "region" stamped number, is this one "4v2" ??
|
|
ROM_LOAD16_WORD_SWAP( "v1.u15", 0x40000, 0x40000, CRC(d16ee21b) SHA1(d454cdf22b72a537b9d7ae73deb8136a4f09da47) ) // chip with VideoSystem logo V and 1
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "v5.u92", 0x00000, 0x20000, CRC(97d67510) SHA1(1ffd419e3dec7de1099cd5819b0309f7dd0df80e) ) // chip with VideoSystem logo V and 5
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x80000, "gfx1", 0 )
|
|
ROM_LOAD( "gha.u55", 0x00000, 0x80000, CRC(3e0cea91) SHA1(bab41715f106d364013b64649441d280bc6893cf) )
|
|
|
|
ROM_REGION( 0x80000, "gfx2", 0 )
|
|
ROM_LOAD( "gh9.u61", 0x00000, 0x80000, CRC(5d1676bd) SHA1(6227d489c9c6259a0ac2bef62821fbf94efca8c6) )
|
|
|
|
ROM_REGION( 0x400000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "u42", 0x000000, 0x100000, CRC(65f0da84) SHA1(0bfbc6f4b87583703246704eb9fa13b1b3e6f90e) )
|
|
ROM_LOAD32_WORD( "v3.u44", 0x200000, 0x020000, CRC(34bdead2) SHA1(99f9a8cac807fcd599db55d2dc624ed92a3862ef) ) // chip with VideoSystem logo V and 3
|
|
ROM_LOAD32_WORD( "u43", 0x000002, 0x100000, CRC(7b349e5d) SHA1(8590a328f403e2c697a8d698c08d4adaf01fff62) )
|
|
ROM_LOAD32_WORD( "v4.u45", 0x200002, 0x020000, CRC(be4d487d) SHA1(6d19c91d0498c43017219f0c10f4845a51ccfa7f) ) // chip with VideoSystem logo V and 4
|
|
|
|
ROM_REGION( 0x100000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "u59.ghb", 0x000000, 0x80000, CRC(158c9cde) SHA1(a2c1b404d40e6c2627691f5c7a3f63484bd5d2de) )
|
|
ROM_LOAD32_WORD( "ghd.u60", 0x000002, 0x80000, CRC(73180ae3) SHA1(e4eaf6693826d9e72032d0a0e25938a23ab7d792) )
|
|
|
|
ROM_REGION( 0x080000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "u105.gh8", 0x000000, 0x080000, CRC(7a68cb1b) SHA1(1bdd0000c2d68019b9e5bf8f7ad84a6ae1af8443) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "u104", 0x000000, 0x100000, CRC(5795e884) SHA1(a4178497ad0a1e60ceb87612b218d77b36d2a11b) )
|
|
ROM_END
|
|
|
|
/*
|
|
|
|
Karate Blazers (bootleg)
|
|
|
|
CPU : MC68000
|
|
SND : Z80 + NEC D7759c + YM3812 (no number on chip, but ROM is the same as streetsm, which uses a YM3812)
|
|
|
|
*/
|
|
|
|
ROM_START( karatblzbl )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "9.u5", 0x000000, 0x040000, CRC(33c3d3cd) SHA1(a8490091fe8d96b984ebbbe6b2f107fe23411814) )
|
|
ROM_LOAD16_BYTE( "10.u2", 0x000001, 0x040000, CRC(dbed7323) SHA1(3ec2fffea41e606c176e2392b37f757ad6febf99) )
|
|
|
|
ROM_REGION( 0x10000, "audiocpu", 0 )
|
|
ROM_LOAD( "2.u80", 0x00000, 0x10000, CRC(ca4b171e) SHA1(a05fd81f68759a09be3ec09f38d7c9364dfb6c14) )
|
|
|
|
ROM_REGION( 0x20000, "upd", 0 ) // D7759c data
|
|
ROM_LOAD( "1.u88", 0x00000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) )
|
|
|
|
ROM_REGION( 0x80000, "gfx1", 0 )
|
|
ROM_LOAD( "3.u81", 0x00000, 0x80000, CRC(3e0cea91) SHA1(bab41715f106d364013b64649441d280bc6893cf) )
|
|
|
|
ROM_REGION( 0x80000, "gfx2", 0 )
|
|
ROM_LOAD( "4.u82", 0x00000, 0x80000, CRC(5d1676bd) SHA1(6227d489c9c6259a0ac2bef62821fbf94efca8c6) )
|
|
|
|
ROM_REGION( 0x400000, "spritegfx", 0 )
|
|
ROM_LOAD32_BYTE( "gfx14.u58", 0x000000, 0x020000, CRC(41e18169) SHA1(fc1723cb5d5ddf7dc3d418070605ad14770620e5) )
|
|
ROM_LOAD32_BYTE( "gfx19.u63", 0x000001, 0x020000, CRC(09833f2a) SHA1(13d7d530c5f7baa4442c950c8a976934a3df2304) )
|
|
ROM_LOAD32_BYTE( "gfx24.u68", 0x000002, 0x020000, CRC(a4417bf8) SHA1(791a3d70376915848fe1f26aa3152c96533c2783) )
|
|
ROM_LOAD32_BYTE( "gfx29.u73", 0x000003, 0x020000, CRC(5affb5d0) SHA1(c89517dfb139d18f313f15c70481999f136ecb82) )
|
|
ROM_LOAD32_BYTE( "gfx13.u59", 0x080000, 0x020000, CRC(666a8c19) SHA1(0392eb45b135db139d0149cbc140bdcaec627bf2) )
|
|
ROM_LOAD32_BYTE( "gfx18.u64", 0x080001, 0x020000, CRC(4be67468) SHA1(67413b9fc33483133a8ef39c39a1f202be1efcbf) )
|
|
ROM_LOAD32_BYTE( "gfx23.u69", 0x080002, 0x020000, CRC(3ff332e2) SHA1(2c3e3fc9af2735d21f0d14c08c731f148c5cc301) )
|
|
ROM_LOAD32_BYTE( "gfx28.u74", 0x080003, 0x020000, CRC(ccfdd9ad) SHA1(53b4d68bcae4c84fb73f4b6b5d1d1503f125c3c4) )
|
|
ROM_LOAD32_BYTE( "gfx12.u60", 0x100000, 0x020000, CRC(f425fe4c) SHA1(446b414e7f6bd699592dfdfc41e48d8f2f3a91b6) )
|
|
ROM_LOAD32_BYTE( "gfx17.u65", 0x100001, 0x020000, CRC(96e77e04) SHA1(2c4f07c0bd7748470fb320c2e87bcf8c359d10ab) )
|
|
ROM_LOAD32_BYTE( "gfx22.u70", 0x100002, 0x020000, CRC(5d673b74) SHA1(d54d22969c0a2d155775c48bea93f6946457d405) )
|
|
ROM_LOAD32_BYTE( "gfx27.u75", 0x100003, 0x020000, CRC(a38802d4) SHA1(f29d69dbac451be3b855733b77b83f86b8f2af86) )
|
|
ROM_LOAD32_BYTE( "gfx11.u61", 0x180000, 0x020000, CRC(09ae152b) SHA1(5d558e938f5d914f8bed2a8d980d08ad9e85d505) )
|
|
ROM_LOAD32_BYTE( "gfx16.u66", 0x180001, 0x020000, CRC(cc3a2c8f) SHA1(d69a2127f6142c4d5b4363720511d564ceecf2b9) )
|
|
ROM_LOAD32_BYTE( "gfx21.u71", 0x180002, 0x020000, CRC(ffd66ea0) SHA1(fc1b2fa27d28a61b381e3d4f15809c740082d07f) )
|
|
ROM_LOAD32_BYTE( "gfx26.u76", 0x180003, 0x020000, CRC(7ae76103) SHA1(5c42fbe133cbf600d2150295a70a1541b79706b5) )
|
|
ROM_LOAD32_BYTE( "gfx15.u57", 0x200000, 0x020000, CRC(876cf42e) SHA1(d9d5025f421f3dd297b519418a3cac528fcc269a) )
|
|
ROM_LOAD32_BYTE( "gfx20.u62", 0x200001, 0x020000, CRC(8b759fde) SHA1(90ba7f71736a2bd35af045372db34d69d3015ff1) )
|
|
ROM_LOAD32_BYTE( "gfx25.u67", 0x200002, 0x020000, CRC(1195b559) SHA1(2fd00b3360df5f0a762569ab49c445b68568cf2e) )
|
|
ROM_LOAD32_BYTE( "gfx30.u72", 0x200003, 0x020000, CRC(7593679f) SHA1(3a6199d1dc60d2c05084fe41c639228613831d99) )
|
|
|
|
ROM_REGION( 0x100000, "gfx4", 0 )
|
|
ROM_LOAD32_BYTE( "5.u62", 0x000000, 0x040000, CRC(1ed12174) SHA1(1e4fc511ad644aaf90505f7930957b4adf9f6c2a) )
|
|
ROM_LOAD32_BYTE( "6.u63", 0x000001, 0x040000, CRC(874c5251) SHA1(487c2ff66e03e0c1d415039a11404c503b48f9c6) )
|
|
ROM_LOAD32_BYTE( "7.u64", 0x000002, 0x040000, CRC(c2ed2666) SHA1(5c7b9cf46d13309facc8da82ef3eeb7ef3707ca0) )
|
|
ROM_LOAD32_BYTE( "8.u65", 0x000003, 0x040000, CRC(b491201a) SHA1(c18cb1cc8a8bf031e00d8d89de62f7ed5548e767) )
|
|
ROM_END
|
|
|
|
/*
|
|
|
|
Turbo Force
|
|
|
|
Program ROM comparision by region code:
|
|
|
|
Region Code 3 Region Code 4 Region Code 7 Region Code 8
|
|
----------------------------------------------------------
|
|
SUBPCB U2 0x721300ee 0x721300ee 0x721300ee 0x721300ee <-- Same data all sets
|
|
SUBPCB U1 0x71b6431b 0x6cd5312b 0xcc324da6 0xd1513f96 <-- Each set unique
|
|
Main PCB U14 0x63f50557 0x63f50557 0xc0a15480 0x63f50557 <-- Only turbofrcu differs by 1 byte: 0x240B:3C (vs 0x25 for other sets)
|
|
|
|
NOTE: Swapping in a 0x63f50557 ROM in turbofrcu in place of 8v3.u14 does NOT trigger a "PROGRAM ROM AREA" error.
|
|
Is 8v3.u14 a bad dump?, need to get it redumped to verify if it should indeed be different.
|
|
|
|
*/
|
|
ROM_START( turbofrc ) // World version with no copyright notice
|
|
ROM_REGION( 0xc0000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "4v2.subpcb.u2", 0x00000, 0x40000, CRC(721300ee) SHA1(79ab32fdfd377592a0bdbd1c4794cfd529a3eb7b) ) // 27c2048 - located on a OR-10 SUB BOARD - 4 stamped on chip with VideoSystem logo V
|
|
ROM_LOAD16_WORD_SWAP( "4v1.subpcb.u1", 0x40000, 0x40000, CRC(6cd5312b) SHA1(57b109fe268fb963e981c91b6d288667a3c9a665) ) // 27c2048 - located on a OR-10 SUB BOARD - 4 stamped on chip with VideoSystem logo V
|
|
ROM_LOAD16_WORD_SWAP( "4v3.u14", 0x80000, 0x40000, CRC(63f50557) SHA1(f8dba8c9ba412c9a67457ec31a804c57593ab20b) ) // 27c2048 - 4 stamped on chip with VideoSystem logo V
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "6.u166", 0x00000, 0x20000, CRC(2ca14a65) SHA1(95f6e7b4fa7ca26872ff472d7e6fb75fd4f281d5) ) // 27c1001
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x0a0000, "gfx1", 0 )
|
|
ROM_LOAD( "lh534ggs.u94", 0x000000, 0x80000, CRC(baa53978) SHA1(7f103122dd0bf675226ccf309fba73f645e0c79b) ) // mask rom
|
|
ROM_LOAD( "7.u95", 0x080000, 0x20000, CRC(71a6c573) SHA1(f14ebca676d85fabcde27631145933abc376dd12) ) // 27c1001a
|
|
|
|
ROM_REGION( 0x0a0000, "gfx2", 0 )
|
|
ROM_LOAD( "lh534ggy.u105", 0x000000, 0x80000, CRC(4de4e59e) SHA1(571396dadb8aac043319cabe24e629210e442d57) ) // mask rom
|
|
ROM_LOAD( "8.u106", 0x080000, 0x20000, CRC(c6479eb5) SHA1(47a58f082c73bc9dae3970e760ba46478ce6a190) ) // 27c1001a
|
|
|
|
ROM_REGION( 0x200000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "lh534gh2.u116", 0x000000, 0x80000, CRC(df210f3b) SHA1(990ac43e4a46fee6b929c5b27d317cdadf179b8b) ) // mask rom
|
|
ROM_LOAD32_WORD( "5.u118", 0x100000, 0x40000, CRC(f61d1d79) SHA1(2b8e33912c05c26170afd2fced0ff06cb7a097fa) ) // 27c2048
|
|
ROM_LOAD32_WORD( "lh534gh1.u117", 0x000002, 0x80000, CRC(f70812fd) SHA1(1964e1134940825211cd4825fdd3f13b8242192d) ) // mask rom
|
|
ROM_LOAD32_WORD( "4.u119", 0x100002, 0x40000, CRC(474ea716) SHA1(67753e96fa4fc8cd689a8bddeb60dbde259cacaa) ) // 27c2048
|
|
|
|
ROM_REGION( 0x080000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "lh532a52.u134", 0x000000, 0x40000, CRC(3c725a48) SHA1(120e62b2ef911bfa0f8a1468966ff70fab2d7582) ) // mask rom
|
|
ROM_LOAD32_WORD( "lh532a51.u135", 0x000002, 0x40000, CRC(95c63559) SHA1(5f77bd22dce1ac4aa7291e5c3c3c358e2f066e8c) ) // mask rom
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "lh532h74.u180", 0x00000, 0x40000, CRC(a3d43254) SHA1(d0225d6cf9299ecc39d8e3f64f48cf80d554a67f) ) // mask rom
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "lh538o7j.u179", 0x000000, 0x100000, CRC(60ca0333) SHA1(28b94edc98d360386759780ccd1122d43ffa5279) ) // mask rom
|
|
ROM_END
|
|
|
|
ROM_START( turbofrco ) // World version with no copyright notice
|
|
ROM_REGION( 0xc0000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "3v2.subpcb.u2", 0x00000, 0x40000, CRC(721300ee) SHA1(79ab32fdfd377592a0bdbd1c4794cfd529a3eb7b) ) // 27c2048 - located on a OR-10 SUB BOARD - 3 stamped on chip with VideoSystem logo V
|
|
ROM_LOAD16_WORD_SWAP( "3v1.subpcb.u1", 0x40000, 0x40000, CRC(71b6431b) SHA1(471bada4730a1a323af9b493f8c5f57c2a147f8d) ) // 27c2048 - located on a OR-10 SUB BOARD - 3 stamped on chip with VideoSystem logo V
|
|
ROM_LOAD16_WORD_SWAP( "3v3.u14", 0x80000, 0x40000, CRC(63f50557) SHA1(f8dba8c9ba412c9a67457ec31a804c57593ab20b) ) // 27c2048 - 3 stamped on chip with VideoSystem logo V
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "6.u166", 0x00000, 0x20000, CRC(2ca14a65) SHA1(95f6e7b4fa7ca26872ff472d7e6fb75fd4f281d5) ) // 27c1001
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x0a0000, "gfx1", 0 )
|
|
ROM_LOAD( "lh534ggs.u94", 0x000000, 0x80000, CRC(baa53978) SHA1(7f103122dd0bf675226ccf309fba73f645e0c79b) ) // mask rom
|
|
ROM_LOAD( "7.u95", 0x080000, 0x20000, CRC(71a6c573) SHA1(f14ebca676d85fabcde27631145933abc376dd12) ) // 27c1001a
|
|
|
|
ROM_REGION( 0x0a0000, "gfx2", 0 )
|
|
ROM_LOAD( "lh534ggy.u105", 0x000000, 0x80000, CRC(4de4e59e) SHA1(571396dadb8aac043319cabe24e629210e442d57) ) // mask rom
|
|
ROM_LOAD( "8.u106", 0x080000, 0x20000, CRC(c6479eb5) SHA1(47a58f082c73bc9dae3970e760ba46478ce6a190) ) // 27c1001a
|
|
|
|
ROM_REGION( 0x200000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "lh534gh2.u116", 0x000000, 0x80000, CRC(df210f3b) SHA1(990ac43e4a46fee6b929c5b27d317cdadf179b8b) ) // mask rom
|
|
ROM_LOAD32_WORD( "5.u118", 0x100000, 0x40000, CRC(f61d1d79) SHA1(2b8e33912c05c26170afd2fced0ff06cb7a097fa) ) // 27c2048
|
|
ROM_LOAD32_WORD( "lh534gh1.u117", 0x000002, 0x80000, CRC(f70812fd) SHA1(1964e1134940825211cd4825fdd3f13b8242192d) ) // mask rom
|
|
ROM_LOAD32_WORD( "4.u119", 0x100002, 0x40000, CRC(474ea716) SHA1(67753e96fa4fc8cd689a8bddeb60dbde259cacaa) ) // 27c2048
|
|
|
|
ROM_REGION( 0x080000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "lh532a52.u134", 0x000000, 0x40000, CRC(3c725a48) SHA1(120e62b2ef911bfa0f8a1468966ff70fab2d7582) ) // mask rom
|
|
ROM_LOAD32_WORD( "lh532a51.u135", 0x000002, 0x40000, CRC(95c63559) SHA1(5f77bd22dce1ac4aa7291e5c3c3c358e2f066e8c) ) // mask rom
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "lh532h74.u180", 0x00000, 0x40000, CRC(a3d43254) SHA1(d0225d6cf9299ecc39d8e3f64f48cf80d554a67f) ) // mask rom
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "lh538o7j.u179", 0x000000, 0x100000, CRC(60ca0333) SHA1(28b94edc98d360386759780ccd1122d43ffa5279) ) // mask rom
|
|
ROM_END
|
|
|
|
ROM_START( turbofrcu ) // US version - need to redump 8v3.u14 to verify it's unique
|
|
ROM_REGION( 0xc0000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "8v2.subpcb.u2", 0x00000, 0x40000, CRC(721300ee) SHA1(79ab32fdfd377592a0bdbd1c4794cfd529a3eb7b) ) // 27c2048 - located on a OR-10 SUB BOARD - 8 stamped on chip with VideoSystem logo V
|
|
ROM_LOAD16_WORD_SWAP( "8v1.subpcb.u1", 0x40000, 0x40000, CRC(cc324da6) SHA1(ed2eaff7351914e3ebaf925ddc01be9d44d89fa6) ) // 27c2048 - located on a OR-10 SUB BOARD - 8 stamped on chip with VideoSystem logo V
|
|
ROM_LOAD16_WORD_SWAP( "8v3.u14", 0x80000, 0x40000, CRC(c0a15480) SHA1(1ec99382e0a00a8167773b1d454a63cc5cd6199c) ) // 27c2048 - 8 stamped on chip with VideoSystem logo V - 0x240B:3C (vs 0x25 for other sets)
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "6.u166", 0x00000, 0x20000, CRC(2ca14a65) SHA1(95f6e7b4fa7ca26872ff472d7e6fb75fd4f281d5) ) // 27c1001
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x0a0000, "gfx1", 0 )
|
|
ROM_LOAD( "lh534ggs.u94", 0x000000, 0x80000, CRC(baa53978) SHA1(7f103122dd0bf675226ccf309fba73f645e0c79b) ) // mask rom
|
|
ROM_LOAD( "7.u95", 0x080000, 0x20000, CRC(71a6c573) SHA1(f14ebca676d85fabcde27631145933abc376dd12) ) // 27c1001a
|
|
|
|
ROM_REGION( 0x0a0000, "gfx2", 0 )
|
|
ROM_LOAD( "lh534ggy.u105", 0x000000, 0x80000, CRC(4de4e59e) SHA1(571396dadb8aac043319cabe24e629210e442d57) ) // mask rom
|
|
ROM_LOAD( "8.u106", 0x080000, 0x20000, CRC(c6479eb5) SHA1(47a58f082c73bc9dae3970e760ba46478ce6a190) ) // 27c1001a
|
|
|
|
ROM_REGION( 0x200000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "lh534gh2.u116", 0x000000, 0x80000, CRC(df210f3b) SHA1(990ac43e4a46fee6b929c5b27d317cdadf179b8b) ) // mask rom
|
|
ROM_LOAD32_WORD( "5.u118", 0x100000, 0x40000, CRC(f61d1d79) SHA1(2b8e33912c05c26170afd2fced0ff06cb7a097fa) ) // 27c2048
|
|
ROM_LOAD32_WORD( "lh534gh1.u117", 0x000002, 0x80000, CRC(f70812fd) SHA1(1964e1134940825211cd4825fdd3f13b8242192d) ) // mask rom
|
|
ROM_LOAD32_WORD( "4.u119", 0x100002, 0x40000, CRC(474ea716) SHA1(67753e96fa4fc8cd689a8bddeb60dbde259cacaa) ) // 27c2048
|
|
|
|
ROM_REGION( 0x080000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "lh532a52.u134", 0x000000, 0x40000, CRC(3c725a48) SHA1(120e62b2ef911bfa0f8a1468966ff70fab2d7582) ) // mask rom
|
|
ROM_LOAD32_WORD( "lh532a51.u135", 0x000002, 0x40000, CRC(95c63559) SHA1(5f77bd22dce1ac4aa7291e5c3c3c358e2f066e8c) ) // mask rom
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "lh532h74.u180", 0x00000, 0x40000, CRC(a3d43254) SHA1(d0225d6cf9299ecc39d8e3f64f48cf80d554a67f) ) // mask rom
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "lh538o7j.u179", 0x000000, 0x100000, CRC(60ca0333) SHA1(28b94edc98d360386759780ccd1122d43ffa5279) ) // mask rom
|
|
ROM_END
|
|
|
|
ROM_START( turbofrcua ) // US version
|
|
ROM_REGION( 0xc0000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_WORD_SWAP( "7v2.subpcb.u2", 0x00000, 0x40000, CRC(721300ee) SHA1(79ab32fdfd377592a0bdbd1c4794cfd529a3eb7b) ) // 27c2048 - located on a OR-10 SUB BOARD - 7 stamped on chip with VideoSystem logo V
|
|
ROM_LOAD16_WORD_SWAP( "7v1.subpcb.u1", 0x40000, 0x40000, CRC(d1513f96) SHA1(7acb96a44f661cd9c7561dfab0d60c993942d669) ) // 27c2048 - located on a OR-10 SUB BOARD - 7 stamped on chip with VideoSystem logo V
|
|
ROM_LOAD16_WORD_SWAP( "7v3.u14", 0x80000, 0x40000, CRC(63f50557) SHA1(f8dba8c9ba412c9a67457ec31a804c57593ab20b) ) // 27c2048 - 7 stamped on chip with VideoSystem logo V
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "6.u166", 0x00000, 0x20000, CRC(2ca14a65) SHA1(95f6e7b4fa7ca26872ff472d7e6fb75fd4f281d5) ) // 27c1001
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x0a0000, "gfx1", 0 )
|
|
ROM_LOAD( "lh534ggs.u94", 0x000000, 0x80000, CRC(baa53978) SHA1(7f103122dd0bf675226ccf309fba73f645e0c79b) ) // mask rom
|
|
ROM_LOAD( "7.u95", 0x080000, 0x20000, CRC(71a6c573) SHA1(f14ebca676d85fabcde27631145933abc376dd12) ) // 27c1001a
|
|
|
|
ROM_REGION( 0x0a0000, "gfx2", 0 )
|
|
ROM_LOAD( "lh534ggy.u105", 0x000000, 0x80000, CRC(4de4e59e) SHA1(571396dadb8aac043319cabe24e629210e442d57) ) // mask rom
|
|
ROM_LOAD( "8.u106", 0x080000, 0x20000, CRC(c6479eb5) SHA1(47a58f082c73bc9dae3970e760ba46478ce6a190) ) // 27c1001a
|
|
|
|
ROM_REGION( 0x200000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD( "lh534gh2.u116", 0x000000, 0x80000, CRC(df210f3b) SHA1(990ac43e4a46fee6b929c5b27d317cdadf179b8b) ) // mask rom
|
|
ROM_LOAD32_WORD( "5.u118", 0x100000, 0x40000, CRC(f61d1d79) SHA1(2b8e33912c05c26170afd2fced0ff06cb7a097fa) ) // 27c2048
|
|
ROM_LOAD32_WORD( "lh534gh1.u117", 0x000002, 0x80000, CRC(f70812fd) SHA1(1964e1134940825211cd4825fdd3f13b8242192d) ) // mask rom
|
|
ROM_LOAD32_WORD( "4.u119", 0x100002, 0x40000, CRC(474ea716) SHA1(67753e96fa4fc8cd689a8bddeb60dbde259cacaa) ) // 27c2048
|
|
|
|
ROM_REGION( 0x080000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD( "lh532a52.u134", 0x000000, 0x40000, CRC(3c725a48) SHA1(120e62b2ef911bfa0f8a1468966ff70fab2d7582) ) // mask rom
|
|
ROM_LOAD32_WORD( "lh532a51.u135", 0x000002, 0x40000, CRC(95c63559) SHA1(5f77bd22dce1ac4aa7291e5c3c3c358e2f066e8c) ) // mask rom
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "lh532h74.u180", 0x00000, 0x40000, CRC(a3d43254) SHA1(d0225d6cf9299ecc39d8e3f64f48cf80d554a67f) ) // mask rom
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "lh538o7j.u179", 0x000000, 0x100000, CRC(60ca0333) SHA1(28b94edc98d360386759780ccd1122d43ffa5279) ) // mask rom
|
|
ROM_END
|
|
|
|
ROM_START( aerofgtb )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "v2", 0x00000, 0x40000, CRC(5c9de9f0) SHA1(93b62c59f0bc052c6fdbd5aae292a7ab2122dfd1) )
|
|
ROM_LOAD16_BYTE( "v1", 0x00001, 0x40000, CRC(89c1dcf4) SHA1(41401d63049c140e4254dc791022d85c44271390) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "v3", 0x00000, 0x20000, CRC(cbb18cf4) SHA1(7119a7536cf710660ff06d1e7d2879c79ef12b3d) )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "it-19-03", 0x000000, 0x80000, CRC(85eba1a4) SHA1(5691a95d6359fdab29be0d615066370c2b856c0a) )
|
|
|
|
ROM_REGION( 0x080000, "gfx2", 0 )
|
|
ROM_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
|
|
|
|
ROM_REGION( 0x100000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD_SWAP( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
|
|
ROM_LOAD32_WORD_SWAP( "it-19-05", 0x000002, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
|
|
|
|
ROM_REGION( 0x080000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
|
|
ROM_LOAD32_WORD_SWAP( "g26", 0x000002, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "it-19-06", 0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) )
|
|
ROM_END
|
|
|
|
ROM_START( aerofgtc )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "v2.149", 0x00000, 0x40000, CRC(f187aec6) SHA1(8905af34f114ae22fbfbd3ae115f19280bdd4fb3) )
|
|
ROM_LOAD16_BYTE( "v1.111", 0x00001, 0x40000, CRC(9e684b19) SHA1(b5e1e5b74ed9fd223c9315ee2d548e620224c102) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "2.153", 0x00000, 0x20000, CRC(a1ef64ec) SHA1(fa3e434738bf4e742ad68882c1e914100ce0f761) )
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
// gfx ROMs were missing in this set, I'm using the aerofgtb ones
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "it-19-03", 0x000000, 0x80000, CRC(85eba1a4) SHA1(5691a95d6359fdab29be0d615066370c2b856c0a) )
|
|
|
|
ROM_REGION( 0x080000, "gfx2", 0 )
|
|
ROM_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
|
|
|
|
ROM_REGION( 0x100000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD_SWAP( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
|
|
ROM_LOAD32_WORD_SWAP( "it-19-05", 0x000002, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
|
|
|
|
ROM_REGION( 0x080000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
|
|
ROM_LOAD32_WORD_SWAP( "g26", 0x000002, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "it-19-06", 0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) )
|
|
ROM_END
|
|
|
|
ROM_START( sonicwi )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "2.149", 0x00000, 0x40000, CRC(3d1b96ba) SHA1(941be323c0cb15e05c92b897984617b05c5cf676) )
|
|
ROM_LOAD16_BYTE( "1.111", 0x00001, 0x40000, CRC(a3d09f94) SHA1(a1064d659488878f5303edc2b8636312ab632a83) )
|
|
|
|
ROM_REGION( 0x20000, "soundbank", 0 ) // 128k for the audio CPU + banks
|
|
ROM_LOAD( "2.153", 0x00000, 0x20000, CRC(a1ef64ec) SHA1(fa3e434738bf4e742ad68882c1e914100ce0f761) ) // 3.156
|
|
|
|
ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the audio CPU
|
|
ROM_COPY( "soundbank", 0x00000, 0x00000, 0x08000 )
|
|
|
|
// gfx ROMs were missing in this set, I'm using the aerofgtb ones
|
|
ROM_REGION( 0x080000, "gfx1", 0 )
|
|
ROM_LOAD( "it-19-03", 0x000000, 0x80000, CRC(85eba1a4) SHA1(5691a95d6359fdab29be0d615066370c2b856c0a) )
|
|
|
|
ROM_REGION( 0x080000, "gfx2", 0 )
|
|
ROM_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
|
|
|
|
ROM_REGION( 0x100000, "spritegfx", 0 )
|
|
ROM_LOAD32_WORD_SWAP( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
|
|
ROM_LOAD32_WORD_SWAP( "it-19-05", 0x000002, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
|
|
|
|
ROM_REGION( 0x080000, "gfx4", 0 )
|
|
ROM_LOAD32_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
|
|
ROM_LOAD32_WORD_SWAP( "g26", 0x000002, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
|
|
|
|
ROM_REGION( 0x40000, "ymsnd:adpcmb", 0 ) // sound samples
|
|
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
|
|
|
|
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 ) // sound samples
|
|
ROM_LOAD( "it-19-06", 0x000000, 0x100000, CRC(cdbbdb1d) SHA1(067c816545f246ff1fd4c821d70df1e7eb47938c) )
|
|
ROM_END
|
|
|
|
ROM_START( aerfboot )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "afb_ep2.u3", 0x00000, 0x40000, CRC(2bb9edf7) SHA1(cf0a62070fc0803dd8c473c375f6a2d1884ba2bf) )
|
|
ROM_LOAD16_BYTE( "afb_ep3.u2", 0x00001, 0x40000, CRC(475d3df3) SHA1(58bde24e9dea2fb0d7ae4f2a574b06bc1a33a13d) )
|
|
|
|
ROM_REGION( 0x10000, "audiocpu", 0 )
|
|
ROM_LOAD( "afb_ep1.u17", 0x0000, 0x8000, CRC(d41b5ab2) SHA1(17d9b999c9af1f332d67e7ce1a2f71fd08178303) )
|
|
|
|
ROM_REGION( 0x100000, "gfx1", 0 )
|
|
ROM_LOAD( "afb_ep9.hh", 0x000000, 0x40000, CRC(41233923) SHA1(20f2849407ac7bd851d2617ad72fd413775da410) )
|
|
ROM_LOAD( "afb_ep8.hi", 0x040000, 0x40000, CRC(97607ad3) SHA1(fb72e7ef0c6f7a736e12a9ff71017460f866195e) )
|
|
ROM_LOAD( "afb_ep7.hj", 0x080000, 0x40000, CRC(01dc793e) SHA1(dbd9d22d75f5bcef9102667722cebb75574badd3) )
|
|
ROM_LOAD( "afb_ep6.hk", 0x0c0000, 0x40000, CRC(cad7862a) SHA1(bfd729b19ff740ad3dc3b645c4f07f71126c0f3e) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", 0 )
|
|
ROM_LOAD( "afb_ep12.tc", 0x000000, 0x80000, CRC(1e692065) SHA1(a67da59cd65ec492d6e6ab14b1800fd35480a52d) )
|
|
ROM_LOAD( "afb_ep10.ta", 0x080000, 0x80000, CRC(e50db1a7) SHA1(952676879fb6a260c56a120b849abfae75f4cf2b) )
|
|
|
|
ROM_REGION( 0x080000, "spritegfx", 0 )
|
|
ROM_LOAD( "afb_ep13.td", 0x000000, 0x40000, CRC(1830f70c) SHA1(1759de9b56e4999defc08b2423eff38ec98c4f17) )
|
|
ROM_LOAD( "afb_ep11.tb", 0x040000, 0x40000, CRC(6298c0eb) SHA1(ede63849973742c67637eac0ec9cda95ea2ecebc) )
|
|
|
|
ROM_REGION( 0xa0000, "oki", ROMREGION_ERASEFF ) // sound samples
|
|
ROM_LOAD( "afb_ep5.u29", 0x000000, 0x20000, CRC(3559609a) SHA1(6f0b633bf74f41487fc98dcdc43a83eb67f3d14c) )
|
|
ROM_LOAD( "afb_ep4.u30", 0x020000, 0x80000, CRC(f9652163) SHA1(d8c1fcf44b350cc65378869e4eb188ea232b4948) )
|
|
ROM_END
|
|
|
|
ROM_START( aerfboo2 )
|
|
ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "p2", 0x00000, 0x40000, CRC(6c4ec09b) SHA1(cdfb8c59ddd6360487fee017d5093636aa52c5c2) )
|
|
ROM_LOAD16_BYTE( "p1", 0x00001, 0x40000, CRC(841c513a) SHA1(819e634f0aec29b1863c9cf0118cc33154d10037) )
|
|
|
|
// No z80 on this bootleg
|
|
|
|
ROM_REGION( 0x80000, "gfx1", 0 )
|
|
ROM_LOAD( "g5" , 0x000000, 0x80000, CRC(1c2bd86c) SHA1(f16d7eba967d76faaaeae5101db43141ef9e2eed) )
|
|
|
|
ROM_REGION( 0x80000, "gfx2", 0 )
|
|
ROM_LOAD( "g6" , 0x000000, 0x80000, CRC(b9b1b9b0) SHA1(c25e1ef8b5ecb4b630fb850fe483d7efb0544a6c) )
|
|
|
|
ROM_REGION( 0x200000, "spritegfx", 0 )
|
|
ROM_LOAD32_BYTE( "g2" , 0x000000, 0x80000, CRC(84774dbd) SHA1(731b08a62446ff9cf36a43d42d217f73b4e2437c) )
|
|
ROM_LOAD32_BYTE( "g1" , 0x000001, 0x80000, CRC(4ab31e69) SHA1(1c6bf5bf4a887cf21da76c6a874f8ff5d3540e3a) )
|
|
ROM_LOAD32_BYTE( "g4" , 0x000002, 0x80000, CRC(97725694) SHA1(59316e4be043e0b7111c6777b36bcfd39c899e72) )
|
|
ROM_LOAD32_BYTE( "g3" , 0x000003, 0x80000, CRC(7be8cef0) SHA1(b227252fd288e8eb06507397f3ad625465dc1b0a) )
|
|
|
|
ROM_REGION( 0x100000, "oki", ROMREGION_ERASEFF ) // sound samples
|
|
ROM_LOAD( "s2" , 0x00000, 0x80000, CRC(2e316ee8) SHA1(a163dddee6d8cfd1286059ee561e3a01df49381b) )
|
|
ROM_LOAD( "s1" , 0x80000, 0x80000, CRC(9e09813d) SHA1(582a36b5a46f4d8eaedca22e583b6949535d24a5) )
|
|
ROM_END
|
|
|
|
ROM_START( wbbc97 )
|
|
ROM_REGION( 0x400000, "maincpu", 0 ) // 68000 code
|
|
ROM_LOAD16_BYTE( "03.27c040.ur4.rom", 0x000001, 0x80000, CRC(fb4e48fc) SHA1(cffc75766a9b867ab73597156142aa7c70bf6f20) )
|
|
ROM_LOAD16_BYTE( "07.27c040.uo4.rom", 0x000000, 0x80000, CRC(87605dcc) SHA1(c5d05e7c581e02f88fd42c65768f5c8632e571a1) )
|
|
ROM_LOAD16_BYTE( "04.27c4000.ur4a.rom",0x100001, 0x80000, CRC(2dd6ff07) SHA1(54724f49d4ca1db16a799704a9e023f6ee407fee) )
|
|
ROM_LOAD16_BYTE( "08.27c4000.uo4a.rom",0x100000, 0x80000, CRC(1b96ef5b) SHA1(10bfecfc18c65735ddecf830dd72dd855ecf5ee7) )
|
|
ROM_LOAD16_BYTE( "05.27c4000.ur4b.rom",0x200001, 0x80000, CRC(84104886) SHA1(807d4441bde6535b780c0c680773804b1268a024) )
|
|
ROM_LOAD16_BYTE( "09.27c4000.uo4b.rom",0x200000, 0x80000, CRC(0367043c) SHA1(a5b77730e17b6223a8b465fe36d9447b60eb51ab) )
|
|
ROM_LOAD16_BYTE( "06.27c4000.ur4c.rom",0x300001, 0x80000, CRC(b22d11c4) SHA1(15d2ba97704bbcf9d851b650a9c56a6a668cfe63) )
|
|
ROM_LOAD16_BYTE( "10.27c040.uo4c.rom", 0x300000, 0x80000, CRC(fe403e8b) SHA1(5f8202792d9ec3e0404637614277c0375c747f7e) )
|
|
|
|
ROM_REGION( 0x10000, "audiocpu", 0 ) // z80 code
|
|
ROM_LOAD( "02.27c512.su11.rom", 0x000000, 0x10000, CRC(f03178e9) SHA1(5b0abee03059109a3cdb08a9341091255d5cb6ae) )
|
|
|
|
ROM_REGION( 0x40000, "gfx1", 0 ) // GFX
|
|
ROM_LOAD( "15.27c020.uu10.rom", 0x000000, 0x40000, CRC(965bc99e) SHA1(db72121cfbcd6916f46ac5bd3592681eafa4e5da) )
|
|
|
|
ROM_REGION( 0x100000, "gfx2", 0 ) // GFX
|
|
ROM_LOAD32_BYTE( "11.27c020.ue12.rom", 0x000003, 0x40000, CRC(a0b23c8a) SHA1(85ccc5dcc891a352b90f0f3d89f6115bc52face6) )
|
|
ROM_LOAD32_BYTE( "12.27c020.ue11.rom", 0x000002, 0x40000, CRC(4e529623) SHA1(b3e1e1ba5e05f7e095c0409f199c89b81297cf40) )
|
|
ROM_LOAD32_BYTE( "13.27c020.ue10.rom", 0x000001, 0x40000, CRC(3745f892) SHA1(085986dff9639dedaee3bcecca17a6ea7e4a45f4) )
|
|
ROM_LOAD32_BYTE( "14.27c020.ue9.rom", 0x000000, 0x40000, CRC(2814f4d2) SHA1(bf459b9ff160d0f18d74224d5e0729b8120261e6) )
|
|
|
|
ROM_REGION( 0x40000, "oki", 0 ) // OKIM6295 samples
|
|
ROM_LOAD( "01.27c020.su10.rom", 0x000000, 0x40000, CRC(c024e48c) SHA1(d3caedd22044c1645d96301a93f794db3ff77047) )
|
|
|
|
ROM_REGION( 0x200, "user1", 0 ) // ???
|
|
ROM_LOAD( "82s147a.rom", 0x000000, 0x200, CRC(72cec9d2) SHA1(1c6fe6b47fe24bdbebb51d6bef56bf71c9029e72) )
|
|
ROM_END
|
|
|
|
ROM_START( kickball )
|
|
ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 Code
|
|
ROM_LOAD16_BYTE( "kickball.1", 0x000000, 0x040000, CRC(f0fd971d) SHA1(b887196d9ff62403fd27e41ebda0a1d13215a456) )
|
|
ROM_LOAD16_BYTE( "kickball.2", 0x000001, 0x040000, CRC(7dab432d) SHA1(e077ea552e9aba4ecc82abd07ea5e94f0f09303f) )
|
|
|
|
ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 Code
|
|
ROM_LOAD( "kickball.4", 0x00000, 0x10000, CRC(ef10c2bf) SHA1(44fd03a28221dffe9c4281ef920fe975bbfb67f0) )
|
|
|
|
ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF )
|
|
ROM_LOAD( "kickball.9", 0x000000, 0x080000, CRC(19be87f3) SHA1(661966683f74b4fbfd77eab4477fb0d75e87230e) )
|
|
ROM_LOAD( "kickball.10", 0x080000, 0x080000, CRC(e3b4f894) SHA1(44b107b87cf9e94f67cfac98b67abed874d534c0) )
|
|
|
|
ROM_REGION( 0x200000, "gfx2", ROMREGION_ERASEFF )
|
|
ROM_LOAD( "kickball.5", 0x000000, 0x080000, CRC(050b6387) SHA1(59aa685014a6f138e14dbfe858c6ecc6514e44f6) )
|
|
ROM_LOAD( "kickball.6", 0x080000, 0x080000, CRC(1e55252f) SHA1(ce1604921af26e8da2fa4cf4a49c67f3b7d4222d) )
|
|
ROM_LOAD( "kickball.7", 0x100000, 0x080000, CRC(b2ee5218) SHA1(65e240b3ddb673b593404525aa2775c342228130) )
|
|
ROM_LOAD( "kickball.8", 0x180000, 0x080000, CRC(5f1b07f8) SHA1(add1f66fe09684ce65a54752cc90d7f0a05efc4f) )
|
|
|
|
ROM_REGION( 0x40000, "oki", 0 )
|
|
ROM_LOAD( "kickball.3", 0x000000, 0x040000, CRC(2f3ed4c1) SHA1(4688df5d420343a935d066f3b46580b77ee77b0e) )
|
|
ROM_END
|
|
|
|
void pspikes_base_state::init_pspikesb()
|
|
{
|
|
m_okibank->configure_entries(0, 4, memregion("oki")->base(), 0x20000);
|
|
m_okibank->set_entry(0);
|
|
}
|
|
|
|
|
|
void pspikes_sound_cpu_state::init_banked_oki()
|
|
{
|
|
m_okibank->configure_entries(0, 4, memregion("oki")->base() + 0x20000, 0x20000);
|
|
}
|
|
|
|
|
|
void pspikes_sound_cpu_state::init_kickball()
|
|
{
|
|
// 2 lines on 1 gfx rom are swapped, why?
|
|
uint8_t *src = memregion("gfx2")->base();
|
|
for (int i = 0; i < 0x80000; i++)
|
|
{
|
|
src[i] = bitswap<8>(src[i], 7, 5, 6, 4, 3, 2, 1, 0);
|
|
}
|
|
}
|
|
|
|
} // anonymous namespace
|
|
|
|
GAME( 1990, spinlbrk, 0, spinlbrk, spinlbrk, pspikes_banked_sound_state, empty_init, ROT0, "V-System Co.", "Spinal Breakers (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1990, spinlbrku, spinlbrk, spinlbrk, spinlbrku, pspikes_banked_sound_state, empty_init, ROT0, "V-System Co.", "Spinal Breakers (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1990, spinlbrkj, spinlbrk, spinlbrk, spinlbrk, pspikes_banked_sound_state, empty_init, ROT0, "V-System Co.", "Spinal Breakers (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1990, spinlbrkup, spinlbrk, spinlbrk, spinlbrk, pspikes_banked_sound_state, empty_init, ROT0, "V-System Co.", "Spinal Breakers (US, prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // build date 11/15 15:00
|
|
|
|
GAME( 1991, pspikes, 0, pspikes, pspikes, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co.", "Power Spikes (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, pspikesk, pspikes, pspikes, pspikes, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co.", "Power Spikes (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, pspikesu, pspikes, pspikes, pspikes, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co.", "Power Spikes (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, svolly91, pspikes, pspikes, pspikes, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co.", "Super Volley '91 (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, pspikesb, pspikes, pspikesb, pspikesb, pspikes_base_state, init_pspikesb, ROT0, "bootleg", "Power Spikes (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, pspikesba, pspikes, pspikesb, pspikesb, pspikes_base_state, init_pspikesb, ROT0, "bootleg (Playmark?)", "Power Spikes (Italian bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, spikes91, pspikes, spikes91, pspikes, spikes91_state, empty_init, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL ) // OKI M5205 not hooked up yet
|
|
GAME( 1991, spikes91b, pspikes, spikes91, pspikes, spikes91_state, empty_init, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL ) // OKI M5205 not hooked up yet
|
|
GAME( 1991, pspikesc, pspikes, pspikesc, pspikesc, pspikes_base_state, init_pspikesb, ROT0, "bootleg", "Power Spikes (China, bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
|
|
GAME( 1997, wbbc97, 0, wbbc97, wbbc97, wbbc97_state, empty_init, ROT0, "Comad", "Beach Festival World Championship 1997", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // based on power spikes codebase
|
|
GAME( 1998, kickball, 0, kickball, pspikes, pspikes_sound_cpu_state, init_kickball, ROT0, "Seoung Youn", "Kick Ball", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) // based on power spikes codebase, wrong priorities
|
|
|
|
GAME( 1991, karatblz, 0, karatblz, karatblz, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co.", "Karate Blazers (World, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, karatblza, karatblz, karatblz, karatblz, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co.", "Karate Blazers (World, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, karatblzt, karatblz, karatblz, karatblz, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co. (Tecmo license)", "Karate Blazers (World, Tecmo license)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, karatblzu, karatblz, karatblz, karatblzu, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co.", "Karate Blazers (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, karatblzj, karatblz, karatblz, karatblz, pspikes_banked_sound_state, empty_init, ROT0, "Video System Co. (Tecmo license)", "Toushin Blazers (Japan, Tecmo license)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
|
|
GAME( 1991, karatblzbl, karatblz, karatblzbl, karatblz, karatblzbl_state, empty_init, ROT0, "bootleg", "Karate Blazers (bootleg with Street Smart sound hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
|
|
|
|
// according to Gamest magazine in new revision they changed the points value of the rocks in level 6 (5'000 versus 500)
|
|
// turbofrcua gives 5'000, the others 500.
|
|
// NOTE: turbofrcua also denotes HP rank on these rocks, getting there without any life lost (almost impossible without cheating) makes those literally indestructible.
|
|
GAME( 1991, turbofrc, 0, turbofrc, turbofrc, pspikes_banked_sound_state, empty_init, ROT270, "Video System Co.", "Turbo Force (World, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // region code 4
|
|
GAME( 1991, turbofrco, turbofrc, turbofrc, turbofrc, pspikes_banked_sound_state, empty_init, ROT270, "Video System Co.", "Turbo Force (World, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // region code 3
|
|
GAME( 1991, turbofrcu, turbofrc, turbofrc, turbofrc, pspikes_banked_sound_state, empty_init, ROT270, "Video System Co.", "Turbo Force (US, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // region code 8
|
|
GAME( 1991, turbofrcua, turbofrc, turbofrc, turbofrc, pspikes_banked_sound_state, empty_init, ROT270, "Video System Co.", "Turbo Force (US, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // region code 7
|
|
|
|
// the tiles on these also contain an alt title 'The Final War' for both the title screen and attract logo was it ever used?
|
|
// sonicwi looks oldest set, aerofgt is slightly easier, aerofgtb/aerofgtc are noticeably harder
|
|
// aerofgtb sports an extra srl->rr in Z80 code at PC=1a8a compared to all other sets, bugfix rev?
|
|
GAME( 1992, aerofgtb, aerofgt, aerofgtb, aerofgtb, pspikes_banked_sound_state, empty_init, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // probably intended for Taiwan because the Japanese name is Sonic Wings (below)
|
|
GAME( 1992, aerofgtc, aerofgt, aerofgtb, aerofgtb, pspikes_banked_sound_state, empty_init, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 2)", MACHINE_SUPPORTS_SAVE )
|
|
GAME( 1992, sonicwi, aerofgt, aerofgtb, aerofgtb, pspikes_banked_sound_state, empty_init, ROT270, "Video System Co.", "Sonic Wings (Japan)", MACHINE_SUPPORTS_SAVE )
|
|
GAME( 1992, aerfboot, aerofgt, aerfboot, aerofgtb, pspikes_sound_cpu_state, init_banked_oki, ROT270, "bootleg", "Aero Fighters (bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
|
|
GAME( 1992, aerfboo2, aerofgt, aerfboo2, aerofgtb, pspikes_base_state, empty_init, ROT270, "bootleg", "Aero Fighters (bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
|