mirror of
https://github.com/holub/mame
synced 2025-05-18 03:35:03 +03:00
2843 lines
120 KiB
C
2843 lines
120 KiB
C
/* raiden 2 board test note 17/04/08 (based on test by dox)
|
|
|
|
rom banking is at 6c9, bit 0x80
|
|
-- the game only writes this directly at startup, must be written indirectly by
|
|
one of the protection commands? or mirrored?
|
|
value of 0x80 puts 0x00000-0x1ffff at 0x20000 - 0x3ffff
|
|
value of 0x00 puts 0x20000-0x3ffff at 0x20000 - 0x3ffff
|
|
|
|
*/
|
|
|
|
/*
|
|
Raiden DX
|
|
Seibu Kaihatsu, 1994
|
|
|
|
This readme covers Raiden DX and to some extent Raiden II
|
|
which uses an almost identical PCB.
|
|
|
|
PCB Layout
|
|
----------
|
|
|
|
(C) 1993 RAIDEN II DX SEIBU KAIHATSU INC.,o
|
|
|----------------------------------------------------------|
|
|
| 1 2 3 4 5 6 7 8 9 10 |
|
|
|LA4460 M6295 PCM Z80 6116 A|
|
|
| YM2151 M6295 6 5 6116 28.63636MHz B|
|
|
| VOL YM3012 |
|
|
|HB-45A |------| C|
|
|
|HB-2 4560 |SIE150| 6116 |---------| |
|
|
|RC220 | | 6116 | SEI252 | D|
|
|
| |------| 6116 |SB05-106 | |
|
|
| 6116 |(QFP208) | E|
|
|
|J | | F|
|
|
|A DSW2(8) |---------| |
|
|
|M G|
|
|
|M DSW1(8) CXK58258 |
|
|
|A |---------|OBJ-1 OBJ-2 CXK58258 H|
|
|
| | SEI360 | CXK58258 J|
|
|
| |SB06-1937|DX_OBJ-3 DX_OBJ-4 CXK58258 K|
|
|
| |(QFP160) | PAL1 |---------| L|
|
|
| | | |SEI1000 | M|
|
|
| |------| |---------| 1H 3H |SB01-001 | N|
|
|
| |SEI200| 32MHz |(QFP184) | |
|
|
| | |CY7C185 2H 4H | | P|
|
|
| |------|CY7C185 |---------| |
|
|
| Q|
|
|
| PAL2 PAL3 |----| R|
|
|
| |V30 | |
|
|
| DX_BACK-1 DX_BACK-2 7 COPX-D2 |----| S|
|
|
|----------------------------------------------------------|
|
|
Notes:
|
|
V30 clock - 16.000MHz [32/2]. Chip is stamped "NEC D70116HG-16 V30 NEC '84" (QFP52)
|
|
Z80 clock - 3.579545MHz [28.63636/8]
|
|
YM2151 clock - 3.579545MHz [28.63636/8]
|
|
M6295 clocks - 1.022MHz [28.63636/28] and pin 7 HIGH (both)
|
|
CXK58258 - Sony CXK58258 32k x8 SRAM (= 62256)
|
|
CY7C185 - Cypress CY7C185 8k x8 SRAM (= 6264)
|
|
6116 - 2k x8 SRAM
|
|
HB-45A - Seibu custom ceramic module sound DAC (SIP20)
|
|
HB-2 - Seibu custom ceramic module connected to coin counters (SIP10)
|
|
RC220 - Custom resistor network module used for inputs (SIP14)
|
|
VSync - 55.4859Hz \
|
|
HSync - 15.5586kHz / measured via EL4583
|
|
PAL1 - AMI 18CV8 stamped 'JJ5004' (DIP20)
|
|
PAL2 - AMI 18CV8 stamped 'JJ5002' (DIP20)
|
|
PAL3 - AMI 18CV8 stamped 'JJ5001' (DIP20)
|
|
ROMs - *PCM - 2M MaskROM stamped 'RAIDEN 2 PCM' at location U1018 (DIP32)
|
|
6 - 27C020 EPROM labelled 'SEIBU 6' at location U1017 (DIP32)
|
|
5 - 27C512 EPROM labelled 'SEIBU 5' at location U1110 (DIP28)
|
|
*OBJ-1 - 16M MaskROM stamped 'RAIDEN 2 OBJ-1' at location U0811 (DIP42)
|
|
*OBJ-2 - 16M MaskROM stamped 'RAIDEN 2 OBJ-2' at location U082 (DIP42)
|
|
DX_OBJ-3 - 16M MaskROM stamped 'DX OBJ-3' at location U0837 (DIP42)
|
|
DX_OBJ-4 - 16M MaskROM stamped 'DX OBJ-4' at location U0836 (DIP42)
|
|
1H - 27C4001 EPROM labelled 'SEIBU 1H' at location U1210 (DIP32)
|
|
2H - 27C4001 EPROM labelled 'SEIBU 2H' at location U1211 (DIP32)
|
|
3H - 27C4001 EPROM labelled 'SEIBU 3H' at location U129 (DIP32)
|
|
4H - 27C4001 EPROM labelled 'SEIBU 4H' at location U1212 (DIP32)
|
|
DX_BACK-1 - 16M MaskROM stamped 'DX BACK-1' at location U075 (DIP42)
|
|
DX_BACK-2 - 16M MaskROM stamped 'DX BACK-2' at location U0714 (DIP42)
|
|
7 - 27C210 EPROM labelled 'SEIBU 7' at location U0724 (DIP40)
|
|
*COPX-D2 - 2M MaskROM stamped 'COPX-D2' at location U0313 (DIP40)
|
|
|
|
* = these ROMs are soldered-in and match ROMs from the original Raiden II PCB
|
|
|
|
SEIBU Custom ICs -
|
|
SIE150 (QFP100)
|
|
SEI252 SB05-106 (QFP208)
|
|
SEI0200 TC110G21AF 0076 (QFP100)
|
|
SEI360 SB06-1937 (QFP160)
|
|
SEI1000 SB01-001 (QFP184)
|
|
|
|
|
|
Games on this PCB / Similar PCBs
|
|
Raiden 2
|
|
Raiden DX
|
|
Zero Team
|
|
X Se Dae Quiz
|
|
|
|
+ variants
|
|
|
|
Some of these games were also released on updated PCBs
|
|
which usually featured vastly inferior sound hardware
|
|
(see the V33 based version of Raiden II/DX New)
|
|
|
|
|
|
Protection Notes:
|
|
These games use the 2nd (and 3rd) generation of Seibu's 'COP' protection,
|
|
utilizing the external 'COPX_D2' and 'COPX_D3' lookup roms (probably for
|
|
math operations) These chips, marked (c)1992 RISE Corp. are not thought
|
|
to be the actual MCU which is probably internal to one of the Seibu
|
|
customs.
|
|
|
|
The games in legionna.c use the same protection chips.
|
|
|
|
Current Problem(s) - in order of priority
|
|
|
|
High Priority
|
|
|
|
ROM banking - we don't know where the ROM bank registers are, this causes
|
|
serious problems as it's hard to see which glitches are caused by
|
|
protection, and which are caused by a lack of ROM banking.
|
|
|
|
Protection - it isn't emulated, until it is the games will never work.
|
|
|
|
Sprite Encryption - this is 99% complete for Raiden 2 / DX, just a few bad
|
|
bits remain. No decryption support for Zero Team yet.
|
|
|
|
Video emulation - used to be more complete than it is now, tile banking is
|
|
currently broken.
|
|
|
|
Low Priority
|
|
|
|
*/
|
|
|
|
#define ADDRESS_MAP_MODERN
|
|
#include "emu.h"
|
|
#include "cpu/nec/nec.h"
|
|
#include "cpu/z80/z80.h"
|
|
#include "audio/seibu.h"
|
|
#include "machine/eeprom.h"
|
|
#include "sound/okim6295.h"
|
|
#include "includes/raiden2.h"
|
|
|
|
static UINT16 rps(running_machine &machine)
|
|
{
|
|
return cpu_get_reg(machine.device("maincpu"), NEC_CS);
|
|
}
|
|
|
|
static UINT16 rpc(running_machine &machine)
|
|
{
|
|
return cpu_get_reg(machine.device("maincpu"), NEC_IP);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_pgm_data_w)
|
|
{
|
|
assert(ACCESSING_BITS_0_7 && ACCESSING_BITS_8_15);
|
|
cop_program[cop_latch_addr] = data;
|
|
int idx = cop_latch_addr >> 3;
|
|
cop_func_trigger[idx] = cop_latch_trigger;
|
|
cop_func_value[idx] = cop_latch_value;
|
|
cop_func_mask[idx] = cop_latch_mask;
|
|
|
|
if(data) {
|
|
int off = data & 31;
|
|
int reg = (data >> 5) & 3;
|
|
int op = (data >> 7) & 31;
|
|
|
|
logerror("COPDIS: %04x s=%02x f1=%x l=%x f2=%02x %x %04x %02x %03x %02x.%x.%02x ", cop_latch_trigger, (cop_latch_trigger >> 11) << 3, (cop_latch_trigger >> 10) & 1, ((cop_latch_trigger >> 7) & 7)+1, cop_latch_trigger & 0x7f, cop_latch_value, cop_latch_mask, cop_latch_addr, data, op, reg, off);
|
|
|
|
off *= 2;
|
|
|
|
// COPDIS: 0205 s=00 f1=0 l=5 f2=05 6 ffeb 00 188 03.0.08 read32 10(r0)
|
|
// COPDIS: 0205 s=00 f1=0 l=5 f2=05 6 ffeb 01 282 05.0.02 add32 4(r0)
|
|
// COPDIS: 0205 s=00 f1=0 l=5 f2=05 6 ffeb 02 082 01.0.02 write32 4(r0)
|
|
// COPDIS: 0205 s=00 f1=0 l=5 f2=05 6 ffeb 03 b8e 17.0.0e add16h 1c(r0)
|
|
// COPDIS: 0205 s=00 f1=0 l=5 f2=05 6 ffeb 04 98e 13.0.0e write16h 1c(r0)
|
|
|
|
// 188 182 082 b8e 98e -> 04 = 04+04 1ch = 1c+04
|
|
// 188 188 082 b8e 98e -> 04 = 04+10 1ch = 1c+10
|
|
// 188 18e 082 b8e 98e -> 04 = 04+1c 1ch = 1c+1c
|
|
// 188 282 082 b8e 98e -> 04 = 04+10 1ch = 1c+10
|
|
// 188 288 082 b8e 98e -> 04 = 10+10 1ch = 1c+10
|
|
// 188 28e 082 b8e 98e -> 04 = 1c+10 1ch = 1c+10
|
|
// 188 282 282 282 082 -> 04 = 04+04+10 10h = 04+10
|
|
// 188 188 188 188 082 -> 04h = 04+10 04l = 04+10+10
|
|
// 188 188 188 188 082 -> 04 = 04+10 04l = 04+10+10 10h = 04+10 (same, but trigger = 020b)
|
|
|
|
switch(op) {
|
|
case 0x01:
|
|
if(off)
|
|
logerror("addmem32 %x(r%x)\n", off, reg);
|
|
else
|
|
logerror("addmem32 (r%x)\n", reg);
|
|
break;
|
|
case 0x03:
|
|
if(off)
|
|
logerror("read32 %x(r%x)\n", off, reg);
|
|
else
|
|
logerror("read32 (r%x)\n", reg);
|
|
break;
|
|
case 0x05:
|
|
if(off)
|
|
logerror("add32 %x(r%x)\n", off, reg);
|
|
else
|
|
logerror("add32 (r%x)\n", reg);
|
|
break;
|
|
case 0x13:
|
|
if(off)
|
|
logerror("write16h %x(r%x)\n", off, reg);
|
|
else
|
|
logerror("write16h (r%x)\n", reg);
|
|
break;
|
|
case 0x15:
|
|
if(off)
|
|
logerror("sub32 %x(r%x)\n", off, reg);
|
|
else
|
|
logerror("sub32 (r%x)\n", reg);
|
|
break;
|
|
break;
|
|
case 0x17:
|
|
if(off)
|
|
logerror("addmem16 %x(r%x)\n", off, reg);
|
|
else
|
|
logerror("addmem16 (r%x)\n", reg);
|
|
break;
|
|
default:
|
|
logerror("?\n");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_pgm_addr_w)
|
|
{
|
|
assert(ACCESSING_BITS_0_7 && ACCESSING_BITS_8_15);
|
|
assert(data < 0x100);
|
|
cop_latch_addr = data;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_pgm_value_w)
|
|
{
|
|
assert(ACCESSING_BITS_0_7 && ACCESSING_BITS_8_15);
|
|
cop_latch_value = data;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_pgm_mask_w)
|
|
{
|
|
assert(ACCESSING_BITS_0_7 && ACCESSING_BITS_8_15);
|
|
cop_latch_mask = data;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_pgm_trigger_w)
|
|
{
|
|
assert(ACCESSING_BITS_0_7 && ACCESSING_BITS_8_15);
|
|
cop_latch_trigger = data;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_dma_adr_rel_w)
|
|
{
|
|
COMBINE_DATA(&cop_dma_adr_rel);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_dma_v1_w)
|
|
{
|
|
COMBINE_DATA(&cop_dma_v1);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_dma_v2_w)
|
|
{
|
|
COMBINE_DATA(&cop_dma_v2);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_dma_dst_w)
|
|
{
|
|
COMBINE_DATA(&cop_dma_dst[cop_dma_mode]);
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_dma_mode_r)
|
|
{
|
|
return cop_dma_mode;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_dma_mode_w)
|
|
{
|
|
COMBINE_DATA(&cop_dma_mode);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_dma_src_w)
|
|
{
|
|
COMBINE_DATA(&cop_dma_src[cop_dma_mode]);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_dma_size_w)
|
|
{
|
|
COMBINE_DATA(&cop_dma_size[cop_dma_mode]);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_dma_trigger_w)
|
|
{
|
|
// logerror("COP DMA mode=%x adr=%x size=%x vals=%x %x %x\n", cop_dma_mode, cop_dma_src[cop_dma_mode], cop_dma_size[cop_dma_mode], cop_dma_v1[cop_dma_mode], cop_dma_v2[cop_dma_mode], cop_dma_dst[cop_dma_mode]);
|
|
|
|
switch(cop_dma_mode) {
|
|
case 0x14: {
|
|
/* TODO: this transfers the whole VRAM, not only spriteram!
|
|
For whatever reason, this stopped working as soon as I've implemented DMA slot concept.
|
|
Raiden 2 uses this DMA with cop_dma_dst == 0xfffe, effectively changing the order of the uploaded VRAMs.
|
|
Also the size is used for doing a sprite limit trickery.
|
|
*/
|
|
static int rsize = ((0x80 - cop_dma_size[cop_dma_mode]) & 0x7f) +1;
|
|
|
|
sprites_cur_start = 0x1000 - (rsize << 5);
|
|
#if 0
|
|
int rsize = 32*(0x7f-cop_dma_size);
|
|
int radr = 64*cop_dma_adr - rsize;
|
|
for(int i=0; i<rsize; i+=2)
|
|
sprites[i/2] = space.read_word(radr+i);
|
|
sprites_cur_start = rsize;
|
|
#endif
|
|
break;
|
|
}
|
|
case 0x82: {
|
|
UINT32 src,dst,size;
|
|
int i;
|
|
|
|
src = (cop_dma_src[cop_dma_mode] << 6) + (cop_dma_adr_rel * 0x400);
|
|
dst = (cop_dma_dst[cop_dma_mode] << 6);
|
|
size = ((cop_dma_size[cop_dma_mode] << 5) - (cop_dma_dst[cop_dma_mode] << 6) + 0x20)/2;
|
|
|
|
//printf("%08x %08x %08x\n",src,dst,size);
|
|
/* TODO: palette brightness */
|
|
|
|
for(i = 0;i < size;i++)
|
|
{
|
|
space.write_word(dst, space.read_word(src));
|
|
src+=2;
|
|
dst+=2;
|
|
}
|
|
|
|
break;
|
|
}
|
|
case 0x09: {
|
|
UINT32 src,dst,size;
|
|
int i;
|
|
|
|
src = (cop_dma_src[cop_dma_mode] << 6);
|
|
dst = (cop_dma_dst[cop_dma_mode] << 6);
|
|
size = ((cop_dma_size[cop_dma_mode] << 5) - (cop_dma_dst[cop_dma_mode] << 6) + 0x20)/2;
|
|
|
|
// printf("%08x %08x %08x\n",src,dst,size);
|
|
|
|
for(i = 0;i < size;i++)
|
|
{
|
|
space.write_word(dst, space.read_word(src));
|
|
src+=2;
|
|
dst+=2;
|
|
}
|
|
|
|
break;
|
|
}
|
|
case 0x118:
|
|
case 0x11f: {
|
|
UINT32 length, address;
|
|
int i;
|
|
if(cop_dma_dst[cop_dma_mode] != 0x0000) // Invalid?
|
|
return;
|
|
|
|
address = (cop_dma_src[cop_dma_mode] << 6);
|
|
length = (cop_dma_size[cop_dma_mode]+1) << 5;
|
|
|
|
//printf("%08x %08x\n",address,length);
|
|
|
|
for (i=address;i<address+length;i+=4)
|
|
{
|
|
space.write_dword(i, (cop_dma_v1) | (cop_dma_v2 << 16));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_itoa_low_w)
|
|
{
|
|
cop_itoa = (cop_itoa & ~UINT32(mem_mask)) | (data & mem_mask);
|
|
|
|
int digits = 1 << cop_itoa_digit_count*2;
|
|
UINT32 val = cop_itoa;
|
|
|
|
if(digits > 9)
|
|
digits = 9;
|
|
for(int i=0; i<digits; i++)
|
|
if(!val && i)
|
|
cop_itoa_digits[i] = 0x20;
|
|
else {
|
|
cop_itoa_digits[i] = 0x30 | (val % 10);
|
|
val = val / 10;
|
|
}
|
|
cop_itoa_digits[9] = 0;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_itoa_high_w)
|
|
{
|
|
cop_itoa = (cop_itoa & ~(mem_mask << 16)) | ((data & mem_mask) << 16);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_itoa_digit_count_w)
|
|
{
|
|
COMBINE_DATA(&cop_itoa_digit_count);
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_itoa_digits_r)
|
|
{
|
|
return cop_itoa_digits[offset*2] | (cop_itoa_digits[offset*2+1] << 8);
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_status_r)
|
|
{
|
|
return cop_status;
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_angle_r)
|
|
{
|
|
return cop_angle;
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_dist_r)
|
|
{
|
|
return cop_dist;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_scale_w)
|
|
{
|
|
COMBINE_DATA(&cop_scale);
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_reg_high_r)
|
|
{
|
|
return cop_regs[offset] >> 16;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_reg_high_w)
|
|
{
|
|
cop_regs[offset] = (cop_regs[offset] & ~(mem_mask << 16)) | ((data & mem_mask) << 16);
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_reg_low_r)
|
|
{
|
|
return cop_regs[offset];
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_reg_low_w)
|
|
{
|
|
cop_regs[offset] = (cop_regs[offset] & ~UINT32(mem_mask)) | (data & mem_mask);
|
|
}
|
|
|
|
UINT8 raiden2_state::cop_calculate_collsion_detection(running_machine &machine)
|
|
{
|
|
static UINT8 res;
|
|
|
|
res = 3;
|
|
|
|
/* outbound X check */
|
|
if(cop_collision_info[0].max_x >= cop_collision_info[1].min_x && cop_collision_info[0].min_x <= cop_collision_info[1].max_x)
|
|
res &= ~1;
|
|
|
|
/* outbound Y check */
|
|
if(cop_collision_info[0].max_y >= cop_collision_info[1].min_y && cop_collision_info[0].min_y <= cop_collision_info[1].max_y)
|
|
res &= ~2;
|
|
|
|
/* TODO: special collision detection for Zero Team */
|
|
|
|
return res;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_cmd_w)
|
|
{
|
|
cop_status &= 0x7fff;
|
|
|
|
switch(data) {
|
|
case 0x0205: // 0205 0006 ffeb 0000 - 0188 0282 0082 0b8e 098e 0000 0000 0000
|
|
space.write_dword(cop_regs[0] + 4 + offset*4, space.read_dword(cop_regs[0] + 4 + offset*4) + space.read_dword(cop_regs[0] + 16 + offset*4));
|
|
space.write_word(cop_regs[0] + 0x1c + offset*4, space.read_word(cop_regs[0] + 0x1c + offset*4) + space.read_word(cop_regs[0] + 16 + offset*4));
|
|
break;
|
|
|
|
case 0x0904: { /* X Se Dae and Zero Team uses this variant */
|
|
space.write_dword(cop_regs[0] + 16 + offset*4, space.read_dword(cop_regs[0] + 16 + offset*4) - space.read_dword(cop_regs[0] + 0x28 + offset*4));
|
|
break;
|
|
}
|
|
case 0x0905: // 194 288 088
|
|
space.write_dword(cop_regs[0] + 16 + offset*4, space.read_dword(cop_regs[0] + 16 + offset*4) + space.read_dword(cop_regs[0] + 0x28 + offset*4));
|
|
break;
|
|
|
|
case 0x130e:
|
|
case 0x138e: { // 130e 0005 bf7f 0010 - 0984 0aa4 0d82 0aa2 039b 0b9a 0b9a 0a9a
|
|
int dx = space.read_dword(cop_regs[1]+4) - space.read_dword(cop_regs[0]+4);
|
|
int dy = space.read_dword(cop_regs[1]+8) - space.read_dword(cop_regs[0]+8);
|
|
|
|
if(!dy) {
|
|
cop_status |= 0x8000;
|
|
cop_angle = 0;
|
|
} else {
|
|
cop_angle = atan(double(dx)/double(dy)) * 128 / M_PI;
|
|
if(dy<0)
|
|
cop_angle += 0x80;
|
|
}
|
|
dx = dx >> 16;
|
|
dy = dy >> 16;
|
|
cop_dist = sqrt((double)(dx*dx+dy*dy));
|
|
|
|
if(data & 0x0080) {
|
|
space.write_byte(cop_regs[0]+0x34, cop_angle);
|
|
space.write_word(cop_regs[0]+0x38, cop_dist);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case 0x3bb0: { // 3bb0 0004 007f 0038 - 0f9c 0b9c 0b9c 0b9c 0b9c 0b9c 0b9c 099c
|
|
// called systematically after 130e/138e, no results expected it seems
|
|
break;
|
|
}
|
|
|
|
case 0x42c2: { // 42c2 0005 fcdd 0040 - 0f9a 0b9a 0b9c 0b9c 0b9c 029c 0000 0000
|
|
int div = space.read_word(cop_regs[0]+0x36);
|
|
if(!div)
|
|
div = 1;
|
|
space.write_word(cop_regs[0]+0x38, (space.read_word(cop_regs[0]+0x38) << (5-cop_scale)) / div);
|
|
break;
|
|
}
|
|
|
|
case 0x8100: { // 8100 0007 fdfb 0080 - 0b9a 0b88 0888 0000 0000 0000 0000 0000
|
|
int raw_angle = (space.read_word(cop_regs[0]+0x34) & 0xff);
|
|
double angle = raw_angle * M_PI / 128;
|
|
double amp = 65536*(space.read_word(cop_regs[0]+0x36) & 0xff);
|
|
/* TODO: up direction, why? (check machine/seicop.c) */
|
|
if(raw_angle == 0xc0)
|
|
amp*=2;
|
|
space.write_dword(cop_regs[0] + 16, int(amp*sin(angle)) >> (5-cop_scale));
|
|
break;
|
|
}
|
|
|
|
case 0x8900: { // 8900 0007 fdfb 0088 - 0b9a 0b8a 088a 0000 0000 0000 0000 0000
|
|
int raw_angle = (space.read_word(cop_regs[0]+0x34) & 0xff);
|
|
double angle = raw_angle * M_PI / 128;
|
|
double amp = 65536*(space.read_word(cop_regs[0]+0x36) & 0xff);
|
|
/* TODO: left direction, why? (check machine/seicop.c) */
|
|
if(raw_angle == 0x80)
|
|
amp*=2;
|
|
space.write_dword(cop_regs[0] + 20, int(amp*cos(angle)) >> (5-cop_scale));
|
|
break;
|
|
}
|
|
|
|
case 0x5205: // 5205 0006 fff7 0050 - 0180 02e0 03a0 00a0 03a0 0000 0000 0000
|
|
// fprintf(stderr, "sprcpt 5205 %04x %04x %04x %08x %08x\n", cop_regs[0], cop_regs[1], cop_regs[3], space.read_dword(cop_regs[0]), space.read_dword(cop_regs[3]));
|
|
space.write_dword(cop_regs[1], space.read_dword(cop_regs[0]));
|
|
break;
|
|
|
|
case 0x5a05: // 5a05 0006 fff7 0058 - 0180 02e0 03a0 00a0 03a0 0000 0000 0000
|
|
// fprintf(stderr, "sprcpt 5a05 %04x %04x %04x %08x %08x\n", cop_regs[0], cop_regs[1], cop_regs[3], space.read_dword(cop_regs[0]), space.read_dword(cop_regs[3]));
|
|
space.write_dword(cop_regs[1], space.read_dword(cop_regs[0]));
|
|
break;
|
|
|
|
case 0xf205: // f205 0006 fff7 00f0 - 0182 02e0 03c0 00c0 03c0 0000 0000 0000
|
|
// fprintf(stderr, "sprcpt f205 %04x %04x %04x %08x %08x\n", cop_regs[0]+4, cop_regs[1], cop_regs[3], space.read_dword(cop_regs[0]+4), space.read_dword(cop_regs[3]));
|
|
space.write_dword(cop_regs[2], space.read_dword(cop_regs[0]+4));
|
|
break;
|
|
|
|
// raidndx only
|
|
case 0x7e05:
|
|
space.write_dword(0x470, (space.read_dword(cop_regs[4]) & 0x30) << 6);
|
|
// Actually, wherever the bank selection actually is
|
|
// And probably 8 bytes too, but they zero all the rest
|
|
break;
|
|
|
|
case 0xa100:
|
|
cop_collision_info[0].y = (space.read_dword(cop_regs[0]+4));
|
|
cop_collision_info[0].x = (space.read_dword(cop_regs[0]+8));
|
|
break;
|
|
|
|
case 0xa900:
|
|
cop_collision_info[1].y = (space.read_dword(cop_regs[1]+4));
|
|
cop_collision_info[1].x = (space.read_dword(cop_regs[1]+8));
|
|
break;
|
|
|
|
case 0xb100:
|
|
/* Take hitbox param, TODO */
|
|
cop_collision_info[0].hitbox = space.read_word(cop_regs[2]);
|
|
|
|
cop_collision_info[0].min_x = cop_collision_info[0].x + (0 << 16);
|
|
cop_collision_info[0].min_y = cop_collision_info[0].y + (0 << 16);
|
|
cop_collision_info[0].max_x = cop_collision_info[0].x + (0x10 << 16);
|
|
cop_collision_info[0].max_y = cop_collision_info[0].y + (0x10 << 16);
|
|
|
|
/* do the math */
|
|
cop_hit_status = cop_calculate_collsion_detection(space.machine());
|
|
break;
|
|
|
|
case 0xb900:
|
|
/* Take hitbox param, TODO */
|
|
cop_collision_info[1].hitbox = space.read_word(cop_regs[3]);
|
|
|
|
cop_collision_info[1].min_x = cop_collision_info[1].x + (0 << 16);
|
|
cop_collision_info[1].min_y = cop_collision_info[1].y + (0 << 16);
|
|
cop_collision_info[1].max_x = cop_collision_info[1].x + (0x10 << 16);
|
|
cop_collision_info[1].max_y = cop_collision_info[1].y + (0x10 << 16);
|
|
|
|
/* do the math */
|
|
cop_hit_status = cop_calculate_collsion_detection(space.machine());
|
|
break;
|
|
|
|
default:
|
|
logerror("pcall %04x (%04x:%04x) [%x %x %x %x]\n", data, rps(space.machine()), rpc(space.machine()), cop_regs[0], cop_regs[1], cop_regs[2], cop_regs[3]);
|
|
}
|
|
}
|
|
|
|
// case 0x6ca:
|
|
// logerror("select bank %d %04x\n", (data >> 15) & 1, data);
|
|
// memory_set_bank(space.machine(), "bank1", (data >> 15) & 1);
|
|
|
|
|
|
static void combine32(UINT32 *val, int offset, UINT16 data, UINT16 mem_mask)
|
|
{
|
|
UINT16 *dest = (UINT16 *)val + BYTE_XOR_LE(offset);
|
|
COMBINE_DATA(dest);
|
|
}
|
|
|
|
|
|
|
|
/* SPRITE DRAWING (move to video file) */
|
|
|
|
void raiden2_state::draw_sprites(running_machine &machine, bitmap_t *bitmap, const rectangle *cliprect ,int pri_mask )
|
|
{
|
|
UINT16 *source = sprites + sprites_cur_start/2 - 4;
|
|
|
|
const gfx_element *gfx = machine.gfx[2];
|
|
|
|
// static int ytlim = 1;
|
|
// static int xtlim = 1;
|
|
|
|
// if ( machine.input().code_pressed_once(KEYCODE_Q) ) ytlim--;
|
|
// if ( machine.input().code_pressed_once(KEYCODE_W) ) ytlim++;
|
|
|
|
// if ( machine.input().code_pressed_once(KEYCODE_A) ) xtlim--;
|
|
// if ( machine.input().code_pressed_once(KEYCODE_S) ) xtlim++;
|
|
|
|
|
|
/*00 ???? ???? (colour / priority?)
|
|
01 fhhh Fwww h = height f=flipy w = width F = flipx
|
|
02 nnnn nnnn n = tileno
|
|
03 nnnn nnnn n = tile no
|
|
04 xxxx xxxx x = xpos
|
|
05 xxxx xxxx x = xpos
|
|
06 yyyy yyyy y = ypos
|
|
07 yyyy yyyy y = ypos
|
|
|
|
*/
|
|
|
|
|
|
while( source>sprites ){
|
|
int tile_number = source[1];
|
|
int sx = source[2];
|
|
int sy = source[3];
|
|
int colr;
|
|
int xtiles, ytiles;
|
|
int ytlim, xtlim;
|
|
int xflip, yflip;
|
|
int xstep, ystep;
|
|
|
|
if (sx & 0x8000) sx -= 0x10000;
|
|
if (sy & 0x8000) sy -= 0x10000;
|
|
|
|
|
|
ytlim = (source[0] >> 12) & 0x7;
|
|
xtlim = (source[0] >> 8) & 0x7;
|
|
|
|
xflip = (source[0] >> 15) & 0x1;
|
|
yflip = (source[0] >> 11) & 0x1;
|
|
|
|
colr = source[0] & 0x3f;
|
|
|
|
ytlim += 1;
|
|
xtlim += 1;
|
|
|
|
xstep = 16;
|
|
ystep = 16;
|
|
|
|
if (xflip)
|
|
{
|
|
ystep = -16;
|
|
sy += ytlim*16-16;
|
|
}
|
|
|
|
if (yflip)
|
|
{
|
|
xstep = -16;
|
|
sx += xtlim*16-16;
|
|
}
|
|
|
|
for (xtiles = 0; xtiles < xtlim; xtiles++)
|
|
{
|
|
for (ytiles = 0; ytiles < ytlim; ytiles++)
|
|
{
|
|
drawgfx_transpen(
|
|
bitmap,
|
|
cliprect,
|
|
gfx,
|
|
tile_number,
|
|
colr,
|
|
yflip,xflip,
|
|
sx+xstep*xtiles,sy+ystep*ytiles,15);
|
|
|
|
tile_number++;
|
|
}
|
|
}
|
|
|
|
source-=4;
|
|
}
|
|
|
|
}
|
|
|
|
/* VIDEO RELATED WRITE HANDLERS (move to video file) */
|
|
|
|
WRITE16_MEMBER(raiden2_state::raiden2_background_w)
|
|
{
|
|
COMBINE_DATA(&back_data[offset]);
|
|
tilemap_mark_tile_dirty(background_layer, offset);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::raiden2_midground_w)
|
|
{
|
|
COMBINE_DATA(&mid_data[offset]);
|
|
tilemap_mark_tile_dirty(midground_layer,offset);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::raiden2_foreground_w)
|
|
{
|
|
COMBINE_DATA(&fore_data[offset]);
|
|
tilemap_mark_tile_dirty(foreground_layer,offset);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::raiden2_text_w)
|
|
{
|
|
COMBINE_DATA(&text_data[offset]);
|
|
tilemap_mark_tile_dirty(text_layer, offset);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::tilemap_enable_w)
|
|
{
|
|
COMBINE_DATA(&raiden2_tilemap_enable);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::tile_scroll_w)
|
|
{
|
|
COMBINE_DATA(scrollvals + offset);
|
|
data = scrollvals[offset];
|
|
|
|
tilemap_t *tm = 0;
|
|
switch(offset/2) {
|
|
case 0: tm = background_layer; break;
|
|
case 1: tm = midground_layer; break;
|
|
case 2: tm = foreground_layer; break;
|
|
}
|
|
if(offset & 1)
|
|
tilemap_set_scrolly(tm, 0, data);
|
|
else
|
|
tilemap_set_scrollx(tm, 0, data);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::tile_bank_01_w)
|
|
{
|
|
if(ACCESSING_BITS_0_7) {
|
|
int new_bank;
|
|
new_bank = 0 | ((data & 1)<<1);
|
|
if(new_bank != bg_bank) {
|
|
bg_bank = new_bank;
|
|
tilemap_mark_all_tiles_dirty(background_layer);
|
|
}
|
|
|
|
new_bank = 1 | (data & 2);
|
|
if(new_bank != mid_bank) {
|
|
mid_bank = new_bank;
|
|
tilemap_mark_all_tiles_dirty(midground_layer);
|
|
}
|
|
}
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_tile_bank_2_r)
|
|
{
|
|
return cop_bank;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::cop_tile_bank_2_w)
|
|
{
|
|
COMBINE_DATA(&cop_bank);
|
|
|
|
if(ACCESSING_BITS_8_15) {
|
|
int new_bank = 4 | (data >> 14);
|
|
if(new_bank != fg_bank) {
|
|
fg_bank = new_bank;
|
|
tilemap_mark_all_tiles_dirty(foreground_layer);
|
|
}
|
|
}
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::raidendx_cop_bank_2_w)
|
|
{
|
|
COMBINE_DATA(&cop_bank);
|
|
|
|
if(ACCESSING_BITS_8_15) {
|
|
int new_bank = 4 | ((cop_bank >> 10) & 3);
|
|
if(new_bank != fg_bank) {
|
|
fg_bank = new_bank;
|
|
tilemap_mark_all_tiles_dirty(foreground_layer);
|
|
}
|
|
|
|
/* probably bit 3 is from 6c9 */
|
|
/* TODO: this doesn't work! */
|
|
memory_set_bank(space.machine(), "mainbank", 8 | (cop_bank & 0x7000) >> 12);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* TILEMAP RELATED (move to video file) */
|
|
|
|
static TILE_GET_INFO( get_back_tile_info )
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
int tile = state->back_data[tile_index];
|
|
int color = (tile >> 12) | (0 << 4);
|
|
|
|
tile = (tile & 0xfff) | (state->bg_bank << 12);
|
|
|
|
SET_TILE_INFO(1,tile+0x0000,color,0);
|
|
}
|
|
|
|
static TILE_GET_INFO( get_mid_tile_info )
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
int tile = state->mid_data[tile_index];
|
|
int color = (tile >> 12) | (2 << 4);
|
|
|
|
tile = (tile & 0xfff) | (state->mid_bank << 12);
|
|
|
|
SET_TILE_INFO(1,tile,color,0);
|
|
}
|
|
|
|
static TILE_GET_INFO( get_fore_tile_info )
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
int tile = state->fore_data[tile_index];
|
|
int color = (tile >> 12) | (1 << 4);
|
|
|
|
tile = (tile & 0xfff) | (state->fg_bank << 12);
|
|
|
|
SET_TILE_INFO(1,tile,color,0);
|
|
}
|
|
|
|
static TILE_GET_INFO( get_text_tile_info )
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
int tile = state->text_data[tile_index];
|
|
int color = (tile>>12)&0xf;
|
|
|
|
tile &= 0xfff;
|
|
|
|
SET_TILE_INFO(0,tile,color,0);
|
|
}
|
|
|
|
/* VIDEO START (move to video file) */
|
|
|
|
|
|
static VIDEO_START( raiden2 )
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
state->text_layer = tilemap_create(machine, get_text_tile_info, tilemap_scan_rows, 8, 8, 64,32 );
|
|
state->background_layer = tilemap_create(machine, get_back_tile_info, tilemap_scan_rows, 16,16, 32,32 );
|
|
state->midground_layer = tilemap_create(machine, get_mid_tile_info, tilemap_scan_rows, 16,16, 32,32 );
|
|
state->foreground_layer = tilemap_create(machine, get_fore_tile_info, tilemap_scan_rows, 16,16, 32,32 );
|
|
|
|
tilemap_set_transparent_pen(state->midground_layer, 15);
|
|
tilemap_set_transparent_pen(state->foreground_layer, 15);
|
|
tilemap_set_transparent_pen(state->text_layer, 15);
|
|
}
|
|
|
|
/* SCREEN_UPDATE (move to video file) */
|
|
|
|
static SCREEN_UPDATE( raiden2 )
|
|
{
|
|
raiden2_state *state = screen->machine().driver_data<raiden2_state>();
|
|
bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine()));
|
|
|
|
//if (!screen->machine().input().code_pressed(KEYCODE_Q))
|
|
{
|
|
if (!(state->raiden2_tilemap_enable & 1))
|
|
tilemap_draw(bitmap, cliprect, state->background_layer, 0, 0);
|
|
}
|
|
|
|
//if (!screen->machine().input().code_pressed(KEYCODE_W))
|
|
{
|
|
if (!(state->raiden2_tilemap_enable & 2))
|
|
tilemap_draw(bitmap, cliprect, state->midground_layer, 0, 0);
|
|
}
|
|
|
|
//if (!screen->machine().input().code_pressed(KEYCODE_E))
|
|
{
|
|
if (!(state->raiden2_tilemap_enable & 4))
|
|
tilemap_draw(bitmap, cliprect, state->foreground_layer, 0, 0);
|
|
}
|
|
|
|
//if (!screen->machine().input().code_pressed(KEYCODE_S))
|
|
{
|
|
//if (!(raiden2_tilemap_enable & 0x10))
|
|
state->draw_sprites(screen->machine(), bitmap, cliprect, 0);
|
|
}
|
|
|
|
//if (!screen->machine().input().code_pressed(KEYCODE_A))
|
|
{
|
|
if (!(state->raiden2_tilemap_enable & 8))
|
|
tilemap_draw(bitmap, cliprect, state->text_layer, 0, 0);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************
|
|
*
|
|
* Interrupts
|
|
*
|
|
*************************************/
|
|
|
|
static INTERRUPT_GEN( raiden2_interrupt )
|
|
{
|
|
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xc0/4); /* VBL */
|
|
}
|
|
|
|
|
|
|
|
|
|
// Sprite encryption key upload
|
|
|
|
static UINT32 sprcpt_adr, sprcpt_idx;
|
|
|
|
static UINT16 sprcpt_flags2;
|
|
static UINT32 sprcpt_val[2], sprcpt_flags1;
|
|
static UINT32 sprcpt_data_1[0x100], sprcpt_data_2[0x40], sprcpt_data_3[6], sprcpt_data_4[4];
|
|
|
|
static void sprcpt_init(void)
|
|
{
|
|
memset(sprcpt_data_1, 0, sizeof(sprcpt_data_1));
|
|
memset(sprcpt_data_2, 0, sizeof(sprcpt_data_2));
|
|
memset(sprcpt_data_3, 0, sizeof(sprcpt_data_3));
|
|
memset(sprcpt_data_4, 0, sizeof(sprcpt_data_4));
|
|
|
|
sprcpt_adr = 0;
|
|
sprcpt_idx = 0;
|
|
}
|
|
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_adr_w)
|
|
{
|
|
combine32(&sprcpt_adr, offset, data, mem_mask);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_data_1_w)
|
|
{
|
|
combine32(sprcpt_data_1+sprcpt_adr, offset, data, mem_mask);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_data_2_w)
|
|
{
|
|
combine32(sprcpt_data_2+sprcpt_adr, offset, data, mem_mask);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_data_3_w)
|
|
{
|
|
combine32(sprcpt_data_3+sprcpt_idx, offset, data, mem_mask);
|
|
if(offset == 1) {
|
|
sprcpt_idx ++;
|
|
if(sprcpt_idx == 6)
|
|
sprcpt_idx = 0;
|
|
}
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_data_4_w)
|
|
{
|
|
combine32(sprcpt_data_4+sprcpt_idx, offset, data, mem_mask);
|
|
if(offset == 1) {
|
|
sprcpt_idx ++;
|
|
if(sprcpt_idx == 4)
|
|
sprcpt_idx = 0;
|
|
}
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_val_1_w)
|
|
{
|
|
combine32(sprcpt_val+0, offset, data, mem_mask);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_val_2_w)
|
|
{
|
|
combine32(sprcpt_val+1, offset, data, mem_mask);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_flags_1_w)
|
|
{
|
|
combine32(&sprcpt_flags1, offset, data, mem_mask);
|
|
if(offset == 1) {
|
|
// bit 31: 1 = allow write on sprcpt data
|
|
|
|
if(!(sprcpt_flags1 & 0x80000000U)) {
|
|
// Upload finished
|
|
if(1) {
|
|
int i;
|
|
logerror("sprcpt_val 1: %08x\n", sprcpt_val[0]);
|
|
logerror("sprcpt_val 2: %08x\n", sprcpt_val[1]);
|
|
logerror("sprcpt_data 1:\n");
|
|
for(i=0; i<0x100; i++) {
|
|
logerror(" %08x", sprcpt_data_1[i]);
|
|
if(!((i+1) & 7))
|
|
logerror("\n");
|
|
}
|
|
logerror("sprcpt_data 2:\n");
|
|
for(i=0; i<0x40; i++) {
|
|
logerror(" %08x", sprcpt_data_2[i]);
|
|
if(!((i+1) & 7))
|
|
logerror("\n");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprcpt_flags_2_w)
|
|
{
|
|
COMBINE_DATA(&sprcpt_flags2);
|
|
if(offset == 0) {
|
|
if(sprcpt_flags2 & 0x8000) {
|
|
// Reset decryption -> redo it
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void raiden2_state::common_reset()
|
|
{
|
|
bg_bank=0;
|
|
fg_bank=6;
|
|
mid_bank=1;
|
|
cop_itoa_digit_count = 4; //TODO: Raiden 2 never inits the BCD register, value here is a guess (8 digits, as WR is 10.000.000 + a)
|
|
}
|
|
|
|
static MACHINE_RESET(raiden2)
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
state->common_reset();
|
|
sprcpt_init();
|
|
MACHINE_RESET_CALL(seibu_sound);
|
|
|
|
memory_set_bank(machine, "mainbank", 1);
|
|
|
|
state->prg_bank = 0;
|
|
//cop_init();
|
|
}
|
|
|
|
static MACHINE_RESET(raidendx)
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
state->common_reset();
|
|
sprcpt_init();
|
|
MACHINE_RESET_CALL(seibu_sound);
|
|
|
|
memory_set_bank(machine, "mainbank", 8);
|
|
|
|
state->prg_bank = 0x08;
|
|
|
|
//cop_init();
|
|
}
|
|
|
|
static MACHINE_RESET(zeroteam)
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
state->bg_bank = 0;
|
|
state->fg_bank = 2;
|
|
state->mid_bank = 1;
|
|
sprcpt_init();
|
|
MACHINE_RESET_CALL(seibu_sound);
|
|
|
|
memory_set_bank(machine, "mainbank", 1);
|
|
|
|
state->prg_bank = 0;
|
|
//cop_init();
|
|
}
|
|
|
|
static MACHINE_RESET(xsedae)
|
|
{
|
|
raiden2_state *state = machine.driver_data<raiden2_state>();
|
|
state->bg_bank = 0;
|
|
state->fg_bank = 2;
|
|
state->mid_bank = 1;
|
|
sprcpt_init();
|
|
MACHINE_RESET_CALL(seibu_sound);
|
|
|
|
//memory_set_bank(machine, "mainbank", 1);
|
|
|
|
//cop_init();
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::raiden2_sound_comms_r)
|
|
{
|
|
return seibu_main_word_r(&space,(offset >> 1) & 7,0xffff);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::raiden2_sound_comms_w)
|
|
{
|
|
seibu_main_word_w(&space,(offset >> 1) & 7,data,0x00ff);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::raiden2_bank_w)
|
|
{
|
|
if(ACCESSING_BITS_8_15) {
|
|
logerror("select bank %d %04x\n", (data >> 15) & 1, data);
|
|
memory_set_bank(space.machine(), "mainbank", !((data >> 15) & 1));
|
|
prg_bank = ((data >> 15) & 1);
|
|
}
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::cop_collision_status_r)
|
|
{
|
|
return cop_hit_status;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprite_prot_x_w)
|
|
{
|
|
sprite_prot_x = data;
|
|
popmessage("%04x %04x",sprite_prot_x,sprite_prot_y);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprite_prot_y_w)
|
|
{
|
|
sprite_prot_y = data;
|
|
popmessage("%04x %04x",sprite_prot_x,sprite_prot_y);
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprite_prot_src_seg_w)
|
|
{
|
|
sprite_prot_src_addr[0] = data;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprite_prot_src_w)
|
|
{
|
|
int dx;
|
|
int dy;
|
|
UINT32 src;
|
|
|
|
sprite_prot_src_addr[1] = data;
|
|
src = (sprite_prot_src_addr[0]<<4)+sprite_prot_src_addr[1];
|
|
|
|
dx = ((space.read_dword(src+0x08) >> 16) - (sprite_prot_x)) & 0xffff;
|
|
dy = ((space.read_dword(src+0x04) >> 16) - (sprite_prot_y)) & 0xffff;
|
|
|
|
space.write_word(src,(dx < 0x140 && dy < 256) ? 0x0001 : 0x0000);
|
|
|
|
//printf("[%08x] %08x %08x %04x %04x\n",src,dx,dy,dst1,dst2);
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::sprite_prot_dst1_r)
|
|
{
|
|
return dst1;
|
|
}
|
|
|
|
READ16_MEMBER(raiden2_state::sprite_prot_dst2_r)
|
|
{
|
|
return dst2;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprite_prot_dst1_w)
|
|
{
|
|
dst1 = data;
|
|
}
|
|
|
|
WRITE16_MEMBER(raiden2_state::sprite_prot_dst2_w)
|
|
{
|
|
dst2 = data;
|
|
}
|
|
|
|
/* MEMORY MAPS */
|
|
static ADDRESS_MAP_START( raiden2_cop_mem, AS_PROGRAM, 16, raiden2_state )
|
|
// AM_RANGE(0x0041c, 0x0041d) AM_WRITENOP // angle compare (for 0x6200 COP macro)
|
|
// AM_RANGE(0x0041e, 0x0041f) AM_WRITENOP // angle mod value (for 0x6200 COP macro)
|
|
AM_RANGE(0x00420, 0x00421) AM_WRITE(cop_itoa_low_w)
|
|
AM_RANGE(0x00422, 0x00423) AM_WRITE(cop_itoa_high_w)
|
|
AM_RANGE(0x00424, 0x00425) AM_WRITE(cop_itoa_digit_count_w)
|
|
AM_RANGE(0x00428, 0x00429) AM_WRITE(cop_dma_v1_w)
|
|
AM_RANGE(0x0042a, 0x0042b) AM_WRITE(cop_dma_v2_w)
|
|
AM_RANGE(0x00432, 0x00433) AM_WRITE(cop_pgm_data_w)
|
|
AM_RANGE(0x00434, 0x00435) AM_WRITE(cop_pgm_addr_w)
|
|
AM_RANGE(0x00438, 0x00439) AM_WRITE(cop_pgm_value_w)
|
|
AM_RANGE(0x0043a, 0x0043b) AM_WRITE(cop_pgm_mask_w)
|
|
AM_RANGE(0x0043c, 0x0043d) AM_WRITE(cop_pgm_trigger_w)
|
|
AM_RANGE(0x00444, 0x00445) AM_WRITE(cop_scale_w)
|
|
AM_RANGE(0x00450, 0x00459) AM_WRITENOP //sort-DMA params, Zero Team uses it
|
|
AM_RANGE(0x0045a, 0x0045b) AM_WRITENOP //palette DMA brightness val, used by X Se Dae / Zero Team
|
|
AM_RANGE(0x0045c, 0x0045d) AM_WRITENOP //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5)
|
|
AM_RANGE(0x00470, 0x00471) AM_READWRITE(cop_tile_bank_2_r,cop_tile_bank_2_w)
|
|
|
|
AM_RANGE(0x00476, 0x00477) AM_WRITE(cop_dma_adr_rel_w)
|
|
AM_RANGE(0x00478, 0x00479) AM_WRITE(cop_dma_src_w)
|
|
AM_RANGE(0x0047a, 0x0047b) AM_WRITE(cop_dma_size_w)
|
|
AM_RANGE(0x0047c, 0x0047d) AM_WRITE(cop_dma_dst_w)
|
|
AM_RANGE(0x0047e, 0x0047f) AM_READWRITE(cop_dma_mode_r, cop_dma_mode_w)
|
|
AM_RANGE(0x004a0, 0x004a9) AM_READWRITE(cop_reg_high_r, cop_reg_high_w)
|
|
AM_RANGE(0x004c0, 0x004c9) AM_READWRITE(cop_reg_low_r, cop_reg_low_w)
|
|
AM_RANGE(0x00500, 0x00505) AM_WRITE(cop_cmd_w)
|
|
AM_RANGE(0x00580, 0x00581) AM_READ(cop_collision_status_r)
|
|
// AM_RANGE(0x00588, 0x00589) AM_READ(cop_collision_status2_r) // used by Zero Team (only this, why?)
|
|
AM_RANGE(0x00590, 0x00599) AM_READ(cop_itoa_digits_r)
|
|
AM_RANGE(0x005b0, 0x005b1) AM_READ(cop_status_r)
|
|
AM_RANGE(0x005b2, 0x005b3) AM_READ(cop_dist_r)
|
|
AM_RANGE(0x005b4, 0x005b5) AM_READ(cop_angle_r)
|
|
|
|
AM_RANGE(0x0061c, 0x0061d) AM_WRITE(tilemap_enable_w)
|
|
AM_RANGE(0x00620, 0x0062b) AM_WRITE(tile_scroll_w)
|
|
AM_RANGE(0x006a0, 0x006a3) AM_WRITE(sprcpt_val_1_w)
|
|
AM_RANGE(0x006a4, 0x006a7) AM_WRITE(sprcpt_data_3_w)
|
|
AM_RANGE(0x006a8, 0x006ab) AM_WRITE(sprcpt_data_4_w)
|
|
AM_RANGE(0x006ac, 0x006af) AM_WRITE(sprcpt_flags_1_w)
|
|
AM_RANGE(0x006b0, 0x006b3) AM_WRITE(sprcpt_data_1_w)
|
|
AM_RANGE(0x006b4, 0x006b7) AM_WRITE(sprcpt_data_2_w)
|
|
AM_RANGE(0x006b8, 0x006bb) AM_WRITE(sprcpt_val_2_w)
|
|
AM_RANGE(0x006bc, 0x006bf) AM_WRITE(sprcpt_adr_w)
|
|
AM_RANGE(0x006c2, 0x006c3) AM_WRITE(sprite_prot_src_seg_w)
|
|
AM_RANGE(0x006c6, 0x006c7) AM_WRITE(sprite_prot_dst1_w)
|
|
AM_RANGE(0x006ca, 0x006cb) AM_WRITE(raiden2_bank_w)
|
|
AM_RANGE(0x006cc, 0x006cd) AM_WRITE(tile_bank_01_w)
|
|
AM_RANGE(0x006ce, 0x006cf) AM_WRITE(sprcpt_flags_2_w)
|
|
AM_RANGE(0x006d8, 0x006d9) AM_WRITE(sprite_prot_x_w)
|
|
AM_RANGE(0x006da, 0x006db) AM_WRITE(sprite_prot_y_w)
|
|
AM_RANGE(0x006dc, 0x006dd) AM_READ(sprite_prot_dst2_r) AM_WRITE(sprite_prot_dst2_w)
|
|
AM_RANGE(0x006de, 0x006df) AM_WRITE(sprite_prot_src_w)
|
|
AM_RANGE(0x006fc, 0x006fd) AM_WRITE(cop_dma_trigger_w)
|
|
AM_RANGE(0x006fe, 0x006ff) AM_WRITENOP // sort-DMA trigger
|
|
|
|
AM_RANGE(0x00762, 0x00763) AM_READ(sprite_prot_dst1_r)
|
|
ADDRESS_MAP_END
|
|
|
|
static ADDRESS_MAP_START( raiden2_mem, AS_PROGRAM, 16, raiden2_state )
|
|
AM_RANGE(0x00000, 0x003ff) AM_RAM
|
|
|
|
AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP //irq ack / sprite buffering?
|
|
|
|
AM_IMPORT_FROM( raiden2_cop_mem )
|
|
|
|
AM_RANGE(0x00700, 0x0071f) AM_READWRITE(raiden2_sound_comms_r,raiden2_sound_comms_w)
|
|
|
|
AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW")
|
|
AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2")
|
|
AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
|
|
|
|
AM_RANGE(0x00800, 0x0bfff) AM_RAM
|
|
|
|
AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_BASE(sprites)
|
|
AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(raiden2_background_w) AM_BASE(back_data)
|
|
AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE(raiden2_foreground_w) AM_BASE(fore_data)
|
|
AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(raiden2_midground_w) AM_BASE(mid_data)
|
|
AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_BASE(text_data)
|
|
AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
|
|
|
|
AM_RANGE(0x10000, 0x1efff) AM_RAM
|
|
AM_RANGE(0x1f000, 0x1ffff) AM_RAM AM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
|
|
|
AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("mainbank")
|
|
AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("mainprg", 0x40000)
|
|
ADDRESS_MAP_END
|
|
|
|
static ADDRESS_MAP_START( raidendx_mem, AS_PROGRAM, 16, raiden2_state )
|
|
AM_RANGE(0x00470, 0x00471) AM_READWRITE(cop_tile_bank_2_r,raidendx_cop_bank_2_w)
|
|
AM_RANGE(0x004d0, 0x004d7) AM_RAM //???
|
|
AM_RANGE(0x0062c, 0x0062d) AM_WRITE(tilemap_enable_w)
|
|
AM_RANGE(0x00610, 0x0061b) AM_WRITE(tile_scroll_w)
|
|
// AM_RANGE(0x006ca, 0x006cb) AM_WRITENOP
|
|
AM_IMPORT_FROM( raiden2_mem )
|
|
ADDRESS_MAP_END
|
|
|
|
static ADDRESS_MAP_START( zeroteam_mem, AS_PROGRAM, 16, raiden2_state )
|
|
AM_RANGE(0x00000, 0x003ff) AM_RAM
|
|
|
|
AM_RANGE(0x00470, 0x00471) AM_WRITENOP
|
|
AM_RANGE(0x006cc, 0x006cd) AM_WRITENOP
|
|
|
|
AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // irq ack / sprite buffering?
|
|
|
|
AM_IMPORT_FROM( raiden2_cop_mem )
|
|
|
|
AM_RANGE(0x00700, 0x0071f) AM_READWRITE(raiden2_sound_comms_r,raiden2_sound_comms_w)
|
|
|
|
AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW")
|
|
AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2")
|
|
AM_RANGE(0x00748, 0x00749) AM_READ_PORT("P3_P4")
|
|
AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
|
|
|
|
AM_RANGE(0x00800, 0x0b7ff) AM_RAM
|
|
AM_RANGE(0x0b800, 0x0bfff) AM_RAM_WRITE(raiden2_background_w) AM_BASE(back_data)
|
|
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(raiden2_foreground_w) AM_BASE(fore_data)
|
|
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(raiden2_midground_w) AM_BASE(mid_data)
|
|
AM_RANGE(0x0d000, 0x0dfff) AM_RAM_WRITE(raiden2_text_w) AM_BASE(text_data)
|
|
AM_RANGE(0x0e000, 0x0efff) AM_RAM AM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
|
AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_BASE(sprites)
|
|
AM_RANGE(0x10000, 0x1ffff) AM_RAM
|
|
|
|
AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("mainbank")
|
|
AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("mainprg", 0x40000)
|
|
ADDRESS_MAP_END
|
|
|
|
static ADDRESS_MAP_START( xsedae_mem, AS_PROGRAM, 16, raiden2_state )
|
|
AM_RANGE(0x00000, 0x003ff) AM_RAM
|
|
|
|
AM_RANGE(0x00470, 0x00471) AM_WRITENOP
|
|
AM_RANGE(0x006cc, 0x006cd) AM_WRITENOP
|
|
|
|
AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP //irq ack / sprite buffering?
|
|
|
|
AM_IMPORT_FROM( raiden2_cop_mem )
|
|
|
|
AM_RANGE(0x00700, 0x0071f) AM_READWRITE(raiden2_sound_comms_r,raiden2_sound_comms_w)
|
|
|
|
AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW")
|
|
AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2")
|
|
AM_RANGE(0x00748, 0x00749) AM_READ_PORT("P3_P4")
|
|
AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
|
|
|
|
AM_RANGE(0x00800, 0x0b7ff) AM_RAM
|
|
AM_RANGE(0x0b800, 0x0bfff) AM_RAM_WRITE(raiden2_background_w) AM_BASE(back_data)
|
|
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(raiden2_foreground_w) AM_BASE(fore_data)
|
|
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(raiden2_midground_w) AM_BASE(mid_data)
|
|
AM_RANGE(0x0d000, 0x0dfff) AM_RAM_WRITE(raiden2_text_w) AM_BASE(text_data)
|
|
AM_RANGE(0x0e000, 0x0efff) AM_RAM AM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
|
AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_BASE(sprites)
|
|
|
|
AM_RANGE(0x10000, 0x1ffff) AM_RAM
|
|
|
|
AM_RANGE(0x20000, 0xfffff) AM_ROM AM_REGION("mainprg", 0x20000)
|
|
ADDRESS_MAP_END
|
|
|
|
|
|
/* INPUT PORTS */
|
|
|
|
static INPUT_PORTS_START( raiden2 )
|
|
SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
|
|
|
|
PORT_START("P1_P2") /* IN0/1 */
|
|
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_UNUSED )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
|
|
PORT_START("DSW") /* Dip switches */
|
|
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( 4C_1C ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) )
|
|
PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) )
|
|
PORT_DIPSETTING( 0x0003, DEF_STR( 1C_4C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
|
|
PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
|
|
PORT_DIPSETTING( 0x0008, DEF_STR( 4C_1C ) )
|
|
PORT_DIPSETTING( 0x0010, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0020, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) )
|
|
PORT_DIPSETTING( 0x0028, DEF_STR( 1C_3C ) )
|
|
PORT_DIPSETTING( 0x0018, DEF_STR( 1C_4C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
|
|
PORT_DIPNAME( 0x0040, 0x0040, "Starting Coin" )
|
|
PORT_DIPSETTING( 0x0040, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0000, "X 2" )
|
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
|
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
|
|
PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) )
|
|
PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Lives ) )
|
|
PORT_DIPSETTING( 0x0000, "1" )
|
|
PORT_DIPSETTING( 0x0400, "4" )
|
|
PORT_DIPSETTING( 0x0800, "2" )
|
|
PORT_DIPSETTING( 0x0c00, "3" )
|
|
PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Bonus_Life ) )
|
|
PORT_DIPSETTING( 0x3000, "200000 500000" )
|
|
PORT_DIPSETTING( 0x2000, "400000 1000000" )
|
|
PORT_DIPSETTING( 0x1000, "1000000 3000000" )
|
|
PORT_DIPSETTING( 0x0000, "No Extend" )
|
|
PORT_DIPNAME( 0x4000, 0x4000, "Demo Sound" )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x8000, 0x8000, "Test Mode" )
|
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
|
|
PORT_START("SYSTEM") /* START BUTTONS */
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( raidendx )
|
|
SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
|
|
|
|
PORT_START("P1_P2") /* IN0/1 */
|
|
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_UNUSED )
|
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
|
|
PORT_START("DSW") /* Dip switches */
|
|
PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( 4C_1C ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) )
|
|
PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) )
|
|
PORT_DIPSETTING( 0x0003, DEF_STR( 1C_4C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
|
|
PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
|
|
PORT_DIPSETTING( 0x0008, DEF_STR( 4C_1C ) )
|
|
PORT_DIPSETTING( 0x0010, DEF_STR( 3C_1C ) )
|
|
PORT_DIPSETTING( 0x0020, DEF_STR( 2C_1C ) )
|
|
PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) )
|
|
PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) )
|
|
PORT_DIPSETTING( 0x0028, DEF_STR( 1C_3C ) )
|
|
PORT_DIPSETTING( 0x0018, DEF_STR( 1C_4C ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
|
|
PORT_DIPNAME( 0x0040, 0x0040, "Starting Coin" )
|
|
PORT_DIPSETTING( 0x0040, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0000, "X 2" )
|
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
|
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
|
|
PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) )
|
|
PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Lives ) )
|
|
PORT_DIPSETTING( 0x0000, "1" )
|
|
PORT_DIPSETTING( 0x0400, "4" )
|
|
PORT_DIPSETTING( 0x0800, "2" )
|
|
PORT_DIPSETTING( 0x0c00, "3" )
|
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) /* Manual shows "Not Used" */
|
|
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) /* Manual shows "Not Used" */
|
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x4000, 0x4000, "Demo Sound" )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x8000, 0x8000, "Test Mode" )
|
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
|
|
PORT_START("SYSTEM") /* START BUTTONS */
|
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
|
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
|
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
|
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( zeroteam )
|
|
PORT_INCLUDE( raiden2 )
|
|
|
|
PORT_MODIFY("P1_P2")
|
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
|
|
|
PORT_START("P3_P4")
|
|
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_UNUSED )
|
|
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
|
|
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
|
|
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
|
|
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
|
|
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
|
|
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
|
|
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
|
|
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
|
|
PORT_MODIFY("DSW")
|
|
PORT_DIPNAME( 0x0001, 0x0001, "DSW0" )
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0100, 0x0100, "DSW1" )
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
|
|
PORT_MODIFY("SYSTEM")
|
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START3 )
|
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START4 )
|
|
PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
PORT_DIPNAME( 0x0100, 0x0100, "DSW3" )
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_SERVICE( 0x0800, IP_ACTIVE_LOW )
|
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
INPUT_PORTS_END
|
|
|
|
static INPUT_PORTS_START( xsedae )
|
|
PORT_INCLUDE( raiden2 )
|
|
|
|
PORT_START("P3_P4")
|
|
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
|
|
|
PORT_MODIFY("DSW")
|
|
PORT_DIPNAME( 0x0001, 0x0001, "DSW0" )
|
|
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0100, 0x0100, "DSW1" )
|
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
|
INPUT_PORTS_END
|
|
|
|
/*************************************
|
|
*
|
|
* Graphics layouts
|
|
*
|
|
*************************************/
|
|
|
|
static const gfx_layout raiden2_charlayout =
|
|
{
|
|
8,8,
|
|
4096,
|
|
4,
|
|
{ 8,12,0,4 },
|
|
{ 3,2,1,0,19,18,17,16 },
|
|
{ STEP8(0,32) },
|
|
32*8
|
|
};
|
|
|
|
|
|
static const gfx_layout raiden2_tilelayout =
|
|
{
|
|
16,16,
|
|
0x8000,
|
|
4,
|
|
{ 8,12,0,4 },
|
|
{
|
|
3,2,1,0,
|
|
19,18,17,16,
|
|
3+64*8, 2+64*8, 1+64*8, 0+64*8,
|
|
19+64*8,18+64*8,17+64*8,16+64*8,
|
|
},
|
|
{ STEP16(0,32) },
|
|
128*8
|
|
};
|
|
|
|
static const gfx_layout raiden2_spritelayout =
|
|
{
|
|
16, 16,
|
|
0x10000,
|
|
4,
|
|
{ STEP4(0,1) },
|
|
{ 4, 0, 12, 8, 20, 16, 28, 24, 36, 32, 44, 40, 52, 48, 60, 56 },
|
|
{ STEP16(0,64) },
|
|
16*16*4
|
|
};
|
|
|
|
static GFXDECODE_START( raiden2 )
|
|
GFXDECODE_ENTRY( "gfx1", 0x00000, raiden2_charlayout, 0x700, 128 )
|
|
GFXDECODE_ENTRY( "gfx2", 0x00000, raiden2_tilelayout, 0x400, 128 )
|
|
GFXDECODE_ENTRY( "gfx3", 0x00000, raiden2_spritelayout, 0x000, 128 )
|
|
GFXDECODE_END
|
|
|
|
|
|
/* MACHINE DRIVERS */
|
|
|
|
static MACHINE_CONFIG_START( raiden2, raiden2_state )
|
|
|
|
/* basic machine hardware */
|
|
MCFG_CPU_ADD("maincpu", V30,XTAL_32MHz/2) /* verified on pcb */
|
|
MCFG_CPU_PROGRAM_MAP(raiden2_mem)
|
|
MCFG_CPU_VBLANK_INT("screen", raiden2_interrupt)
|
|
|
|
MCFG_MACHINE_RESET(raiden2)
|
|
|
|
SEIBU2_RAIDEN2_SOUND_SYSTEM_CPU(XTAL_28_63636MHz/8)
|
|
|
|
/* video hardware */
|
|
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
|
|
|
|
MCFG_SCREEN_ADD("screen", RASTER)
|
|
MCFG_SCREEN_REFRESH_RATE(55.47) /* verified on pcb */
|
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate *//2)
|
|
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
|
MCFG_SCREEN_SIZE(64*8, 64*8)
|
|
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 30*8-1)
|
|
MCFG_SCREEN_UPDATE(raiden2)
|
|
MCFG_GFXDECODE(raiden2)
|
|
MCFG_PALETTE_LENGTH(2048)
|
|
|
|
MCFG_VIDEO_START(raiden2)
|
|
|
|
/* sound hardware */
|
|
SEIBU_SOUND_SYSTEM_YM2151_RAIDEN2_INTERFACE(XTAL_28_63636MHz/8,XTAL_28_63636MHz/28,1,2)
|
|
|
|
|
|
/* Sound hardware infos: Z80 and YM2151 are clocked at XTAL_28_63636MHz/8 */
|
|
/* The 2 Oki M6295 are clocked at XTAL_28_63636MHz/28 and pin 7 is high for both */
|
|
|
|
MACHINE_CONFIG_END
|
|
|
|
static MACHINE_CONFIG_DERIVED( xsedae, raiden2 )
|
|
MCFG_CPU_MODIFY("maincpu")
|
|
MCFG_CPU_PROGRAM_MAP(xsedae_mem)
|
|
|
|
MCFG_MACHINE_RESET(xsedae)
|
|
|
|
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
|
|
|
MCFG_SCREEN_MODIFY("screen")
|
|
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 32*8-1)
|
|
|
|
MACHINE_CONFIG_END
|
|
|
|
static MACHINE_CONFIG_DERIVED( raidendx, raiden2 )
|
|
MCFG_CPU_MODIFY("maincpu")
|
|
MCFG_CPU_PROGRAM_MAP(raidendx_mem)
|
|
|
|
MCFG_MACHINE_RESET(raidendx)
|
|
MACHINE_CONFIG_END
|
|
|
|
|
|
static MACHINE_CONFIG_START( zeroteam, raiden2_state )
|
|
|
|
/* basic machine hardware */
|
|
MCFG_CPU_ADD("maincpu", V30,XTAL_32MHz/2) /* verified on pcb */
|
|
MCFG_CPU_PROGRAM_MAP(zeroteam_mem)
|
|
MCFG_CPU_VBLANK_INT("screen", raiden2_interrupt)
|
|
|
|
MCFG_MACHINE_RESET(zeroteam)
|
|
|
|
SEIBU_NEWZEROTEAM_SOUND_SYSTEM_CPU(XTAL_28_63636MHz/8)
|
|
|
|
/* video hardware */
|
|
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
|
|
|
|
MCFG_SCREEN_ADD("screen", RASTER)
|
|
MCFG_SCREEN_REFRESH_RATE(55.47) /* verified on pcb */
|
|
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate *//2)
|
|
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
|
MCFG_SCREEN_SIZE(64*8, 64*8)
|
|
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 32*8-1)
|
|
MCFG_SCREEN_UPDATE(raiden2)
|
|
MCFG_GFXDECODE(raiden2)
|
|
MCFG_PALETTE_LENGTH(2048)
|
|
|
|
MCFG_VIDEO_START(raiden2)
|
|
|
|
/* sound hardware */
|
|
SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(XTAL_28_63636MHz/8, 1320000/* ? */)
|
|
MACHINE_CONFIG_END
|
|
|
|
/* ROM LOADING */
|
|
/*
|
|
Raiden II
|
|
|
|
(C) 1993 RAIDEN II SEIBU KAIHATSU INC.,o
|
|
|----------------------------------------------------------|
|
|
| 1 2 3 4 5 6 7 8 9 10 |
|
|
|LA4460 M6295 PCM Z8400A 6116 BATTERY3.6v A|
|
|
| YM2151 M6295 6 5 6116 28.6360 MHz B|
|
|
| VOL YM3014 |
|
|
|HB-45A YM3012 |------| C|
|
|
|HB-2 NJM4560 |SIE150| LH5116 |---------| |
|
|
|RC220 | | LH5116 | SEI252 | D|
|
|
|RC220 |------| LH5116 |SB05-106 | |
|
|
|RC220 LH5116 |(QFP208) | E|
|
|
|J | | F|
|
|
|A |---------| |
|
|
|M DSW2(8) G|
|
|
|M DSW1(8) LH522258 |
|
|
|A |---------|OBJ-1 OBJ-2 LH522258 H|
|
|
| | SEI360 | LH522258 J|
|
|
| |SB06-1937|OBJ-3 OBJ-4 LH522258 K|
|
|
| |(QFP160) | |---------| L|
|
|
| | | 1 |SEI1000 | M|
|
|
| |------| |---------| 1x 3x |SB01-001 | N|
|
|
| |SEI200| 32MHz 2 |(QFP184) | |
|
|
| | |CXK5863 2x 4x | | P|
|
|
| |------|CXK5863 |---------| |
|
|
| Q|
|
|
| PAL2 PAL1 |----| R|
|
|
| |V30 | |
|
|
| BG-1 BG-2 7 COPX-D2 |----| S|
|
|
|----------------------------------------------------------|
|
|
Notes:
|
|
V30 clock - 16.000MHz [32/2]. Chip is stamped "NEC D70116HG-16 V30 NEC '84" (QFP52)
|
|
Z80 clock - 3.579545MHz [28.63636/8]
|
|
YM2151 clock - 3.579545MHz [28.63636/8]
|
|
Yamaha DAC -
|
|
early boards: ym3014 mono dac, no NJM4560
|
|
later boards: ym3012 stereo dac plus NJM4560, each with a capacitor on top
|
|
M6295 clocks - 1.022MHz [28.63636/28] and pin 7 HIGH (both)
|
|
LH52258 - Sharp LH52258 32k x8 SRAM (= 62256)
|
|
CXK5863 - Sony CXK5863 8k x8 SRAM (= 6264)
|
|
6116 - 2k x8 SRAM
|
|
LH5116 - 2k x8 SRAM
|
|
HB-45A - Seibu custom ceramic module sound DAC (SIP20)
|
|
HB-2 - Seibu custom ceramic module connected to coin counters (SIP10)
|
|
RC220 - Custom resistor network module used for inputs (SIP14)
|
|
VSync - 55.4859Hz \
|
|
HSync - 15.5586kHz / not measured but assumed same as R2DX
|
|
PAL1 - MMIPAL16L8B stamped 'JJ4B01' (DIP20)
|
|
PAL2 - AMI 18CV8 stamped 'JJ4B02' (DIP20)
|
|
ROMs - *PCM - 2M MaskROM stamped 'RAIDEN 2 PCM' at location U1018 (DIP32), pcb labeled VOI2
|
|
6 - 23C020 MASK ROM labelled 'SEIBU 6' at location U1017 (DIP32), pcb labeled VOI1
|
|
5 - 27C512 EPROM labelled 'SEIBU 5' at location U1110 (DIP28)
|
|
*OBJ-1 - 16M MaskROM stamped 'RAIDEN 2 OBJ-1' at location U0811 (DIP42)
|
|
*OBJ-2 - 16M MaskROM stamped 'RAIDEN 2 OBJ-2' at location U082 (DIP42)
|
|
*OBJ-3 - 16M MaskROM stamped 'RAIDEN 2 OBJ-3' at location U0837 (DIP42)
|
|
*OBJ-4 - 16M MaskROM stamped 'RAIDEN 2 OBJ-4' at location U0836 (DIP42)
|
|
/ 1x - 27C2001 EPROM labelled 'SEIBU 1' at location U1210 (DIP32)
|
|
Early boards| 2x - 27C2001 EPROM labelled 'SEIBU 2' at location U1211 (DIP32)
|
|
| 3x - 27C2001 EPROM labelled 'SEIBU 3' at location U129 (DIP32)
|
|
\ 4x - 27C2001 EPROM labelled 'SEIBU 4' at location U1212 (DIP32)
|
|
Later boards/ 1 - 27C402 or 27C4096 EPROM labelled 'SEIBU 1' at location U0211 (DIP40)
|
|
\ 2 - 27C402 or 27C4096 EPROM labelled 'SEIBU 2' at location U0212 (DIP40)
|
|
*BG-1 - 16M MaskROM stamped 'RAIDEN 2 BG-1' at location U075 (DIP42)
|
|
*BG-2 - 16M MaskROM stamped 'RAIDEN 2 BG-2' at location U0714 (DIP42)
|
|
7 - 27C210 EPROM labelled 'SEIBU 7' at location U0724 (DIP40)
|
|
*COPX-D2 - 2M MaskROM stamped 'COPX-D2' at location U0313 (DIP40)
|
|
|
|
* = these ROMs are soldered-in
|
|
|
|
SEIBU Custom ICs -
|
|
SIE150 (QFP100) - z80 interface
|
|
SEI252 SB05-106 (QFP208) - fg/sprite gfx and its decryption
|
|
SEI0200 TC110G21AF 0076 (QFP100) - bg gfx
|
|
SEI360 SB06-1937 (QFP160) - logic and i/o array
|
|
SEI1000 SB01-001 (QFP184) - main protection
|
|
|
|
*/
|
|
|
|
/* Note: some raiden 2 fabtek usa boards (the one Hammad sent to LN and Balrog, at least) have the
|
|
ROM_LOAD( "seibu5.u1110", 0x000000, 0x08000, CRC(8f130589) SHA1(e58c8beaf9f27f063ffbcb0ab4600123c25ce6f3) )
|
|
z80 sound rom as used in raiden2a instead of the
|
|
ROM_LOAD( "snd.u1110", 0x000000, 0x08000, CRC(f51a28f9) SHA1(7ae2e2ba0c8159a544a8fd2bb0c2c694ba849302) )
|
|
rom from raiden2. Slight version difference, and I don't know which is older/newer. - LN
|
|
|
|
ROMSET organization:
|
|
Note: type numbers are NOT NECESSARILY in chronological version order YET.
|
|
SETNAME LONGNAME PRG TYPES SND(u1110) TYPE VOICE(u1017) TYPE FX0(u0724) TYPE Notes
|
|
raiden2 (set 1 fabtek) 1 1' 1(f51a28f9) 1(fb0fca23) 1(c9ec9469) sepia fighter on hiscore
|
|
raiden2a (set 2 metro) 1 2' 2(8f130589) 1(fb0fca23) 1(c9ec9469) sepia fighter on hiscore
|
|
raiden2b (set 3 japan) 1 3' 2(8f130589) 1(fb0fca23) 1(c9ec9469) sepia fighter on hiscore
|
|
raiden2c (set 4 italy) 2 4' 3(5db9f922) 1(fb0fca23) 1(c9ec9469) sepia fighter on hiscore
|
|
raiden2d (set 5 easy) 3 5' 4(6bad0a3e) 2(488d050f) 2(c709bdf6) red fighter on hiscore
|
|
raiden2e (set 6 easy) 4 6' 5(f5f835af) 3(fab9f8e4) 3(c7aa4d00) red fighter on hiscore
|
|
raiden2f (set 7 easy fabtek) 4 7' 5(f5f835af) 3(fab9f8e4) 3(c7aa4d00) red fighter on hiscore
|
|
raiden2g (set 8 easy fabtek) 3 8' 6(6d362472) 3(fab9f8e4) 3(c7aa4d00) red fighter on hiscore, sn 0003068, aama 0557135
|
|
^ this set has 4 prg roms: 1 and 3 correspond to seibu1/prg0 and 2 and 4 correspond to seibu2/prg1
|
|
balrog+ln (set x fabtek) 1 1' 2(8f130589) 1(fb0fca23) 1(c9ec9469) sepia fighter on hiscore, sn 0012739, aama 0600565, not in mame yet due to roms matching mix of sets 1 and 2
|
|
*/
|
|
|
|
ROM_START( raiden2 )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD16_BYTE("prg0.u0211", 0x000000, 0x80000, CRC(09475ec4) SHA1(05027f2d8f9e11fcbd485659eda68ada286dae32) )
|
|
ROM_RELOAD(0x100000, 0x80000)
|
|
ROM_LOAD16_BYTE("prg1.u0212", 0x000001, 0x80000, CRC(4609b5f2) SHA1(272d2aa75b8ea4d133daddf42c4fc9089093df2e) )
|
|
ROM_RELOAD(0x100001, 0x80000)
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "snd.u1110", 0x000000, 0x08000, CRC(f51a28f9) SHA1(7ae2e2ba0c8159a544a8fd2bb0c2c694ba849302) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "seibu7.u0724", 0x000000, 0x020000, CRC(c9ec9469) SHA1(a29f480a1bee073be7a177096ef58e1887a5af24) ) /* PCB silkscreened FX0 */
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "raiden_2_seibu_bg-1.u0714", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) ) /* Soldered MASK ROM */
|
|
ROM_LOAD( "raiden_2_seibu_bg-2.u075", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-3.u0837", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-4.u0836", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "seibu6.u1017", 0x00000, 0x40000, CRC(fb0fca23) SHA1(4b2217b121a66c5ab6015537609cf908ffedaf86) ) /* PCB silkscreened VOICE1 */
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "raiden_2_pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
|
|
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_END
|
|
|
|
/*
|
|
|
|
---------------------------------------
|
|
Raiden II by SEIBU KAIHATSU INC. (1993)
|
|
---------------------------------------
|
|
malcor
|
|
|
|
Location Type File ID Checksum
|
|
-------------------------------------------
|
|
M6 U0211 27C240 ROM1 F9A9
|
|
M6 U0212 27C240 ROM2e 13B3 [ English ]
|
|
M6 U0212 27C240 ROM2J 14BF [ Japanese ]
|
|
B5 U1110 27C512 ROM5 1223
|
|
B3 U1017 27C2000 ROM6 DE25
|
|
S5 U0724 27C1024 ROM7 966D
|
|
|
|
*/
|
|
|
|
ROM_START( raiden2a )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD16_BYTE("prg0.u0211", 0x000000, 0x80000, CRC(09475ec4) SHA1(05027f2d8f9e11fcbd485659eda68ada286dae32) ) // rom1
|
|
ROM_RELOAD(0x100000, 0x80000)
|
|
ROM_LOAD16_BYTE("rom2e.u0212", 0x000001, 0x80000, CRC(458d619c) SHA1(842bf0eeb5d192a6b188f4560793db8dad697683) )
|
|
ROM_RELOAD(0x100001, 0x80000)
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "seibu5.u1110", 0x000000, 0x08000, CRC(8f130589) SHA1(e58c8beaf9f27f063ffbcb0ab4600123c25ce6f3) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "seibu7.u0724", 0x000000, 0x020000, CRC(c9ec9469) SHA1(a29f480a1bee073be7a177096ef58e1887a5af24) ) /* PCB silkscreened FX0 */
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "raiden_2_seibu_bg-1.u0714", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) ) /* Soldered MASK ROM */
|
|
ROM_LOAD( "raiden_2_seibu_bg-2.u075", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-3.u0837", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-4.u0836", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "seibu6.u1017", 0x00000, 0x40000, CRC(fb0fca23) SHA1(4b2217b121a66c5ab6015537609cf908ffedaf86) ) /* PCB silkscreened VOICE1 */
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "raiden_2_pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
|
|
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_END
|
|
|
|
/*
|
|
|
|
Raiden II (Japan version)
|
|
(c) 1993 Seibu Kaihatsu Inc.,
|
|
|
|
CPU: D70116HG-16 V30/Z8400AB1 Z80ACPU
|
|
SOUND: YM2151
|
|
VOICE: M6295 x2
|
|
OSC: 32.000/28.6364MHz
|
|
CUSTOM: SEI150
|
|
SEI252
|
|
SEI360
|
|
SEI1000
|
|
SEI0200
|
|
COPX-D2 ((c)1992 RISE CORP)
|
|
|
|
---------------------------------------------------
|
|
filemanes devices kind
|
|
---------------------------------------------------
|
|
RD2_1.211 27C4096 V30 main prg.
|
|
RD2_2.212 27C4096 V30 main prg.
|
|
RD2_5.110 27C512 Z80 sound prg.
|
|
RD2_PCM.018 27C2001 M6295 data
|
|
RD2_6.017 27C2001 M6295 data
|
|
RD2_7.724 27C1024 fix chr.
|
|
RD2_BG1.075 57C16200 bg chr.
|
|
RD2_BG2.714 57C16200 bg chr.
|
|
RD2_OBJ1.811 57C16200 obj chr.
|
|
RD2_OBJ2.082 57C16200 obj chr.
|
|
RD2_OBJ3.837 57C16200 obj chr.
|
|
RD2_OBJ4.836 57C16200 obj chr.
|
|
---------------------------------------------------
|
|
|
|
*/
|
|
|
|
ROM_START( raiden2b )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD16_BYTE("prg0.u0211", 0x000000, 0x80000, CRC(09475ec4) SHA1(05027f2d8f9e11fcbd485659eda68ada286dae32) ) // rom1
|
|
ROM_RELOAD(0x100000, 0x80000)
|
|
ROM_LOAD16_BYTE("rom2j.u0212", 0x000001, 0x80000, CRC(e4e4fb4c) SHA1(7ccf33fe9a1cddf0c7e80d7ed66d615a828b3bb9) )
|
|
ROM_RELOAD(0x100001, 0x80000)
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "seibu5.u1110", 0x000000, 0x08000, CRC(8f130589) SHA1(e58c8beaf9f27f063ffbcb0ab4600123c25ce6f3) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "seibu7.u0724", 0x000000, 0x020000, CRC(c9ec9469) SHA1(a29f480a1bee073be7a177096ef58e1887a5af24) ) /* PCB silkscreened FX0 */
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "raiden_2_seibu_bg-1.u0714", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) ) /* Soldered MASK ROM */
|
|
ROM_LOAD( "raiden_2_seibu_bg-2.u075", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-3.u0837", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-4.u0836", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "seibu6.u1017", 0x00000, 0x40000, CRC(fb0fca23) SHA1(4b2217b121a66c5ab6015537609cf908ffedaf86) ) /* PCB silkscreened VOICE1 */
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "raiden_2_pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
|
|
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_END
|
|
|
|
ROM_START( raiden2c )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD16_BYTE("seibu1.u0211", 0x000000, 0x80000, CRC(c1fc70f5) SHA1(a054f5ae9583972c406d9cf871340d5e072d71a3) ) /* Italian set */
|
|
ROM_RELOAD(0x100000, 0x80000)
|
|
ROM_LOAD16_BYTE("seibu2.u0212", 0x000001, 0x80000, CRC(28d5365f) SHA1(21efe29c2d373229c2ff302d86e59c2c94fa6d03) )
|
|
ROM_RELOAD(0x100001, 0x80000)
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "seibu5.c.u1110", 0x000000, 0x08000, CRC(5db9f922) SHA1(8257aab98657fe44df19d2a48d85fcf65b3d98c6) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "seibu7.u0724", 0x000000, 0x020000, CRC(c9ec9469) SHA1(a29f480a1bee073be7a177096ef58e1887a5af24) ) /* PCB silkscreened FX0 */
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "raiden_2_seibu_bg-1.u0714", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) ) /* Soldered MASK ROM */
|
|
ROM_LOAD( "raiden_2_seibu_bg-2.u075", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-3.u0837", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-4.u0836", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "seibu6.u1017", 0x00000, 0x40000, CRC(fb0fca23) SHA1(4b2217b121a66c5ab6015537609cf908ffedaf86) ) /* PCB silkscreened VOICE1 */
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "raiden_2_pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
|
|
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_END
|
|
|
|
|
|
/*
|
|
|
|
Raiden 2, Seibu License, Easy Version
|
|
|
|
According to DragonKnight Zero's excellent Raiden 2
|
|
FAQ this PCB is the easy version.
|
|
|
|
The different versions may be identified by the high score
|
|
screen. The easy version has the Raiden MK-II in colour
|
|
on a black background whereas the hard version has a sepia shot
|
|
of an ascending fighter.
|
|
|
|
The entire FAQ is available here:
|
|
http://www.gamefaqs.com/coinop/arcade/game/10729.html
|
|
|
|
*/
|
|
|
|
ROM_START( raiden2d )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD16_BYTE("r2_prg_0.u0211", 0x000000, 0x80000, CRC(2abc848c) SHA1(1df4276d0074fcf1267757fa0b525a980a520f3d) )
|
|
ROM_RELOAD(0x100000, 0x80000)
|
|
ROM_LOAD16_BYTE("r2_prg_1.u0212", 0x000001, 0x80000, CRC(509ade43) SHA1(7cdee7bb00a6a1c7899d10b96385d54c261f6f5a) )
|
|
ROM_RELOAD(0x100001, 0x80000)
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "r2_snd.u1110", 0x000000, 0x08000, CRC(6bad0a3e) SHA1(eb7ae42353e1984cd60b569c26cdbc3b025a7da6) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "r2_fx0.u0724", 0x000000, 0x020000, CRC(c709bdf6) SHA1(0468d90412b7590d67eaadc0a5e3537cd5e73943) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "raiden_2_seibu_bg-1.u0714", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) ) /* Soldered MASK ROM */
|
|
ROM_LOAD( "raiden_2_seibu_bg-2.u075", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-3.u0837", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-4.u0836", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "r2_voi1.u1017", 0x00000, 0x40000, CRC(488d050f) SHA1(fde2fd64fea6bc39e1a42885d21d362bc6be2ac2) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "raiden_2_pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
|
|
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_END
|
|
|
|
ROM_START( raiden2e )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD16_BYTE("r2.1.u0211", 0x000000, 0x80000, CRC(d7041be4) SHA1(3cf97132fba6f7b00c9059265f4e9f0bf1505b71) )
|
|
ROM_RELOAD(0x100000, 0x80000)
|
|
ROM_LOAD16_BYTE("r2.2.u0212", 0x000001, 0x80000, CRC(bf7577ec) SHA1(98576af78760b8aef1ef3efe1ba963977c89d225) )
|
|
ROM_RELOAD(0x100001, 0x80000)
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "r2.5.u1110", 0x000000, 0x08000, CRC(f5f835af) SHA1(5be82ebc582d0da919e9ae1b9e64528bb295efc7) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "r2.7.u0724", 0x000000, 0x020000, CRC(c7aa4d00) SHA1(9ad99d3891598c1ea3f12318400ee67666da56dd) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "raiden_2_seibu_bg-1.u0714", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) ) /* Soldered MASK ROM */
|
|
ROM_LOAD( "raiden_2_seibu_bg-2.u075", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-3.u0837", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-4.u0836", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "r2.6.u1017", 0x00000, 0x40000, CRC(fab9f8e4) SHA1(b1eff154c4f766b2d272ac6a57f8d54c9e39e3bb) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "raiden_2_pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
|
|
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_END
|
|
|
|
ROM_START( raiden2f ) // same as raiden2e, different region
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD16_BYTE("seibu_1.u0211", 0x000000, 0x80000, CRC(d7041be4) SHA1(3cf97132fba6f7b00c9059265f4e9f0bf1505b71) )
|
|
ROM_RELOAD(0x100000, 0x80000)
|
|
ROM_LOAD16_BYTE("seibu_2.u0212", 0x000001, 0x80000, CRC(beb71ddb) SHA1(471399ead1cdc27ac2a1139f9616f828efd14626) )
|
|
ROM_RELOAD(0x100001, 0x80000)
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "r2.5.u1110", 0x000000, 0x08000, CRC(f5f835af) SHA1(5be82ebc582d0da919e9ae1b9e64528bb295efc7) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "r2.7.u0724", 0x000000, 0x020000, CRC(c7aa4d00) SHA1(9ad99d3891598c1ea3f12318400ee67666da56dd) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "raiden_2_seibu_bg-1.u0714", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) ) /* Soldered MASK ROM */
|
|
ROM_LOAD( "raiden_2_seibu_bg-2.u075", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-3.u0837", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-4.u0836", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "r2.6.u1017", 0x00000, 0x40000, CRC(fab9f8e4) SHA1(b1eff154c4f766b2d272ac6a57f8d54c9e39e3bb) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "raiden_2_pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
|
|
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_END
|
|
|
|
ROM_START( raiden2g ) // sort of a mixture of raiden2d easy set with voice rom of raiden2e and 2f and a unique sound rom
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("seibu__1.27c020j.u1210", 0x000000, 0x40000, CRC(ED1514E3) SHA1(296125BFE3C4F3033F7AA319DD8554BC978C4A00) )
|
|
ROM_RELOAD(0x100000, 0x40000)
|
|
ROM_LOAD32_BYTE("seibu__2.27c2001.u1211", 0x000001, 0x40000, CRC(BB6ECF2A) SHA1(D4F628E9D0ED2897654F05A8A2541E1ED3FAF8DD) )
|
|
ROM_RELOAD(0x100000, 0x40000)
|
|
ROM_LOAD32_BYTE("seibu__3.27c2001.u129", 0x000002, 0x40000, CRC(6A01D52C) SHA1(983B914592AB9D9C058BEBB5BCCF5C882E2B82DE) )
|
|
ROM_RELOAD(0x100000, 0x40000)
|
|
ROM_LOAD32_BYTE("seibu__4.27c2001.u1212", 0x000003, 0x40000, CRC(E54BFA37) SHA1(4FABB23503FD9245A10CDED15A6880415CA5FFD7) )
|
|
ROM_RELOAD(0x100000, 0x40000)
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "seibu__5.27c512.u1110", 0x000000, 0x08000, CRC(6d362472) SHA1(a362e500bb9492affde1f7a4da7e08dd16e755df) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "seibu__7.fx0.27c210.u0724", 0x000000, 0x020000, CRC(c7aa4d00) SHA1(9ad99d3891598c1ea3f12318400ee67666da56dd) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "raiden_2_seibu_bg-1.u0714", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) ) /* Soldered MASK ROM */
|
|
ROM_LOAD( "raiden_2_seibu_bg-2.u075", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-3.u0837", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) ) /* Soldered MASK ROM */
|
|
ROM_LOAD32_WORD( "raiden_2_seibu_obj-4.u0836", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "seibu__6.voice1.23c020.u1017", 0x00000, 0x40000, CRC(fab9f8e4) SHA1(b1eff154c4f766b2d272ac6a57f8d54c9e39e3bb) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "raiden_2_pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Soldered MASK ROM */
|
|
|
|
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
|
|
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
|
|
ROM_END
|
|
|
|
|
|
/* Raiden DX sets */
|
|
|
|
ROM_START( raidndx )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("1d.4n", 0x000000, 0x80000, CRC(14d725fc) SHA1(f12806f64f069fdc4ee29b309a32f7ca00b36f93) )
|
|
ROM_LOAD32_BYTE("2d.4p", 0x000001, 0x80000, CRC(5e7e45cb) SHA1(94eff893b5335c522f1c063c3175b9bac87b0a25) )
|
|
ROM_LOAD32_BYTE("3d.6n", 0x000002, 0x80000, CRC(f0a47e67) SHA1(8cbd21993077b2e01295db6e343cae9e0e4bfefe) )
|
|
ROM_LOAD32_BYTE("4d.6p", 0x000003, 0x80000, CRC(2a2003e8) SHA1(f239b351759babe4683d16e745a5ac2f3c2ab06b) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.6s", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Shared with original Raiden 2 */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "dx_5.5b", 0x000000, 0x08000, CRC(8c46857a) SHA1(8b269cb20adf960ba4eb594d8add7739dbc9a837) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "dx_7.4s", 0x000000, 0x020000, CRC(c73986d4) SHA1(d29345077753bda53560dedc95dd23f329e521d9) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "dx_back1.1s", 0x000000, 0x200000, CRC(90970355) SHA1(d71d57cd550a800f583550365102adb7b1b779fc) )
|
|
ROM_LOAD( "dx_back2.2s", 0x200000, 0x200000, CRC(5799af3e) SHA1(85d6532abd769da77bcba70bd2e77915af40f987) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "obj1", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "obj2", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "dx_obj3.4k", 0x400000, 0x200000, CRC(ba381227) SHA1(dfc4d659aca1722a981fa56a31afabe66f444d5d) )
|
|
ROM_LOAD32_WORD( "dx_obj4.6k", 0x400002, 0x200000, CRC(65e50d19) SHA1(c46147b4132abce7314b46bf419ce4773e024b05) )
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_6.3b", 0x00000, 0x40000, CRC(9a9196da) SHA1(3d1ee67fb0d40a231ce04d10718f07ffb76db455) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_pcm.3a", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Shared with original Raiden 2 */
|
|
ROM_END
|
|
|
|
ROM_START( raidndxa1 )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("dx_1h.4n", 0x000000, 0x80000, BAD_DUMP CRC(7624c36b) SHA1(84c17f2988031210d06536710e1eac558f4290a1) ) // bad
|
|
ROM_LOAD32_BYTE("dx_2h.4p", 0x000001, 0x80000, CRC(4940fdf3) SHA1(c87e307ed7191802583bee443c7c8e4f4e33db25) )
|
|
ROM_LOAD32_BYTE("dx_3h.6n", 0x000002, 0x80000, CRC(6c495bcf) SHA1(fb6153ecc443dabc829dda6f8d11234ad48de88a) )
|
|
ROM_LOAD32_BYTE("dx_4h.6k", 0x000003, 0x80000, CRC(9ed6335f) SHA1(66975204b120915f23258a431e19dbc017afd912) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.6s", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "dx_5.5b", 0x000000, 0x08000, CRC(8c46857a) SHA1(8b269cb20adf960ba4eb594d8add7739dbc9a837) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "dx_7.4s", 0x000000, 0x020000, CRC(c73986d4) SHA1(d29345077753bda53560dedc95dd23f329e521d9) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "dx_back1.1s", 0x000000, 0x200000, CRC(90970355) SHA1(d71d57cd550a800f583550365102adb7b1b779fc) )
|
|
ROM_LOAD( "dx_back2.2s", 0x200000, 0x200000, CRC(5799af3e) SHA1(85d6532abd769da77bcba70bd2e77915af40f987) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "obj1", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "obj2", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "dx_obj3.4k", 0x400000, 0x200000, CRC(ba381227) SHA1(dfc4d659aca1722a981fa56a31afabe66f444d5d) )
|
|
ROM_LOAD32_WORD( "dx_obj4.6k", 0x400002, 0x200000, CRC(65e50d19) SHA1(c46147b4132abce7314b46bf419ce4773e024b05) )
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_6.3b", 0x00000, 0x40000, CRC(9a9196da) SHA1(3d1ee67fb0d40a231ce04d10718f07ffb76db455) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_pcm.3a", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) )
|
|
ROM_END
|
|
|
|
ROM_START( raidndxa2 )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("1d.bin", 0x000000, 0x80000, CRC(22b155ae) SHA1(388151e2c8fb301bd5bc66a974e9fe16816ae0bc) )
|
|
ROM_LOAD32_BYTE("2d.bin", 0x000001, 0x80000, CRC(2be98ca8) SHA1(491e990405b0ad3de45bdbcc2453af9215ae19c8) )
|
|
ROM_LOAD32_BYTE("3d.bin", 0x000002, 0x80000, CRC(b4785576) SHA1(aa5eee7b0c635c6d18a7fc1e037bf570a677dd90) )
|
|
ROM_LOAD32_BYTE("4d.bin", 0x000003, 0x80000, CRC(5a77f7b4) SHA1(aa757e6308893ca63963170c5b1743de7c7ab034) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.6s", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Shared with original Raiden 2 */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "dx_5.5b", 0x000000, 0x08000, CRC(8c46857a) SHA1(8b269cb20adf960ba4eb594d8add7739dbc9a837) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "dx_7.4s", 0x000000, 0x020000, CRC(c73986d4) SHA1(d29345077753bda53560dedc95dd23f329e521d9) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "dx_back1.1s", 0x000000, 0x200000, CRC(90970355) SHA1(d71d57cd550a800f583550365102adb7b1b779fc) )
|
|
ROM_LOAD( "dx_back2.2s", 0x200000, 0x200000, CRC(5799af3e) SHA1(85d6532abd769da77bcba70bd2e77915af40f987) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "obj1", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "obj2", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "dx_obj3.4k", 0x400000, 0x200000, CRC(ba381227) SHA1(dfc4d659aca1722a981fa56a31afabe66f444d5d) )
|
|
ROM_LOAD32_WORD( "dx_obj4.6k", 0x400002, 0x200000, CRC(65e50d19) SHA1(c46147b4132abce7314b46bf419ce4773e024b05) )
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_6.3b", 0x00000, 0x40000, CRC(9a9196da) SHA1(3d1ee67fb0d40a231ce04d10718f07ffb76db455) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_pcm.3a", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Shared with original Raiden 2 */
|
|
ROM_END
|
|
|
|
ROM_START( raidndxj )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("rdxj_1.bin", 0x000000, 0x80000, CRC(b5b32885) SHA1(fb3c592b2436d347103c17bd765176062be95fa2) )
|
|
ROM_LOAD32_BYTE("rdxj_2.bin", 0x000001, 0x80000, CRC(7efd581d) SHA1(4609a0d8afb3d62a38b461089295efed47beea91) )
|
|
ROM_LOAD32_BYTE("rdxj_3.bin", 0x000002, 0x80000, CRC(55ec0e1d) SHA1(6be7f268df51311a817c1c329a578b38abb659ae) )
|
|
ROM_LOAD32_BYTE("rdxj_4.bin", 0x000003, 0x80000, CRC(f8fb31b4) SHA1(b72fd7cbbebcf3d1b2253c309fcfa60674776467) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.6s", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Shared with original Raiden 2 */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "dx_5.5b", 0x000000, 0x08000, CRC(8c46857a) SHA1(8b269cb20adf960ba4eb594d8add7739dbc9a837) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "dx_7.4s", 0x000000, 0x020000, CRC(c73986d4) SHA1(d29345077753bda53560dedc95dd23f329e521d9) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "dx_back1.1s", 0x000000, 0x200000, CRC(90970355) SHA1(d71d57cd550a800f583550365102adb7b1b779fc) )
|
|
ROM_LOAD( "dx_back2.2s", 0x200000, 0x200000, CRC(5799af3e) SHA1(85d6532abd769da77bcba70bd2e77915af40f987) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "obj1", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "obj2", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "dx_obj3.4k", 0x400000, 0x200000, CRC(ba381227) SHA1(dfc4d659aca1722a981fa56a31afabe66f444d5d) )
|
|
ROM_LOAD32_WORD( "dx_obj4.6k", 0x400002, 0x200000, CRC(65e50d19) SHA1(c46147b4132abce7314b46bf419ce4773e024b05) )
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_6.3b", 0x00000, 0x40000, CRC(9a9196da) SHA1(3d1ee67fb0d40a231ce04d10718f07ffb76db455) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_pcm.3a", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Shared with original Raiden 2 */
|
|
ROM_END
|
|
|
|
ROM_START( raidndxu )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("1a.u1210", 0x000000, 0x80000, CRC(53e63194) SHA1(a957330e14649cf46ad27fb99c460576c59e60b1) )
|
|
ROM_LOAD32_BYTE("2a.u1211", 0x000001, 0x80000, CRC(ec8d1647) SHA1(5ceae132c6c09d6bb8565e9141ee1170bbdfd5fc) )
|
|
ROM_LOAD32_BYTE("3a.u129", 0x000002, 0x80000, CRC(7dbfd73d) SHA1(43cb1dbc3ccbded64fc300c262d1fd528e0391a2) )
|
|
ROM_LOAD32_BYTE("4a.u1212", 0x000003, 0x80000, CRC(cb41a459) SHA1(532f0ed00a5b50a7537e5f48884d632aa5b92fb0) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.6s", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Shared with original Raiden 2 */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "dx_5.5b", 0x000000, 0x08000, CRC(8c46857a) SHA1(8b269cb20adf960ba4eb594d8add7739dbc9a837) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "dx_7.4s", 0x000000, 0x020000, CRC(c73986d4) SHA1(d29345077753bda53560dedc95dd23f329e521d9) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "dx_back1.1s", 0x000000, 0x200000, CRC(90970355) SHA1(d71d57cd550a800f583550365102adb7b1b779fc) )
|
|
ROM_LOAD( "dx_back2.2s", 0x200000, 0x200000, CRC(5799af3e) SHA1(85d6532abd769da77bcba70bd2e77915af40f987) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "obj1", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "obj2", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "dx_obj3.4k", 0x400000, 0x200000, CRC(ba381227) SHA1(dfc4d659aca1722a981fa56a31afabe66f444d5d) )
|
|
ROM_LOAD32_WORD( "dx_obj4.6k", 0x400002, 0x200000, CRC(65e50d19) SHA1(c46147b4132abce7314b46bf419ce4773e024b05) )
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_6.3b", 0x00000, 0x40000, CRC(9a9196da) SHA1(3d1ee67fb0d40a231ce04d10718f07ffb76db455) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "dx_pcm.3a", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Shared with original Raiden 2 */
|
|
ROM_END
|
|
|
|
ROM_START( raidndxg )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("1d.u1210", 0x000000, 0x80000, CRC(14d725fc) SHA1(f12806f64f069fdc4ee29b309a32f7ca00b36f93) )
|
|
ROM_LOAD32_BYTE("2d.u1211", 0x000001, 0x80000, CRC(5e7e45cb) SHA1(94eff893b5335c522f1c063c3175b9bac87b0a25) )
|
|
ROM_LOAD32_BYTE("3d.u129", 0x000002, 0x80000, CRC(f0a47e67) SHA1(8cbd21993077b2e01295db6e343cae9e0e4bfefe) )
|
|
ROM_LOAD32_BYTE("4d.u1212", 0x000003, 0x80000, CRC(6bde6edc) SHA1(c3565a55b858c10659fd9b93b1cd92bc39e6446d) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2.u0313", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) ) /* Shared with original Raiden 2 */
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "5.u1110", 0x000000, 0x08000, CRC(8c46857a) SHA1(8b269cb20adf960ba4eb594d8add7739dbc9a837) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD( "7.u0724", 0x000000, 0x020000, CRC(c73986d4) SHA1(d29345077753bda53560dedc95dd23f329e521d9) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "dx_back-1.u075", 0x000000, 0x200000, CRC(90970355) SHA1(d71d57cd550a800f583550365102adb7b1b779fc) )
|
|
ROM_LOAD( "dx_back-2.u0714", 0x200000, 0x200000, CRC(5799af3e) SHA1(85d6532abd769da77bcba70bd2e77915af40f987) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) */
|
|
ROM_LOAD32_WORD( "obj-1.u0811", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "obj-2.u082", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) ) /* Shared with original Raiden 2 */
|
|
ROM_LOAD32_WORD( "dx_obj-3.u0837", 0x400000, 0x200000, CRC(ba381227) SHA1(dfc4d659aca1722a981fa56a31afabe66f444d5d) )
|
|
ROM_LOAD32_WORD( "dx_obj-4.u0836", 0x400002, 0x200000, CRC(65e50d19) SHA1(c46147b4132abce7314b46bf419ce4773e024b05) )
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "6.u1017", 0x00000, 0x40000, CRC(9a9196da) SHA1(3d1ee67fb0d40a231ce04d10718f07ffb76db455) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "pcm.u1018", 0x00000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) /* Shared with original Raiden 2 */
|
|
ROM_END
|
|
|
|
|
|
/* Zero Team sets */
|
|
/* Zero team is slightly older hardware (early 93 instead of late 93) but
|
|
almost identical to raiden 2 with a few key differences:
|
|
Zero Team: Raiden 2:
|
|
BG/FG roms marked MUSHA BG/FG roms marked RAIDEN 2
|
|
SEI251 fg/sprite gate array SEI252 fg/sprite gate array
|
|
about 15 74xx logic chips SEI360 gate array
|
|
3x dipswitch arrays 2x dipswitch arrays
|
|
4x 8bit program roms 2x 16bit program roms (some older pcbs have 4x 8bit like zt)
|
|
YM3812 plus Y3014 YM2151 plus Y3012 plus NJM4550 (some older pcbs have YM2151, Y3014)
|
|
1x OKI M6295 & voice rom 2x OKI M6295s & 2x voice roms
|
|
2x 8bit licensee bgroms 1x 16bit licensee bgrom
|
|
2x fg/sprite mask roms 4x fg/sprite mask roms
|
|
4x pals (two are stacked) 2x pals
|
|
*/
|
|
/* ZERO TEAM Seibu Kaihatsu 1993
|
|
TODO: guru-readme here
|
|
*/
|
|
|
|
ROM_START( zeroteam )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("1.5k", 0x000000, 0x40000, CRC(25aa5ba4) SHA1(40e6047620fbd195c87ac3763569af099096eff9) )
|
|
ROM_LOAD32_BYTE("3.6k", 0x000002, 0x40000, CRC(ec79a12b) SHA1(515026a2fca92555284ac49818499af7395783d3) )
|
|
ROM_LOAD32_BYTE("2.6l", 0x000001, 0x40000, CRC(54f3d359) SHA1(869744185746d55c60d2f48eabe384a8499e00fd) )
|
|
ROM_LOAD32_BYTE("4.5l", 0x000003, 0x40000, CRC(a017b8d0) SHA1(4a93ff1ab18f4b61c7ef580995f64840c19ce6b9) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "5.5c", 0x000000, 0x08000, CRC(7ec1fbc3) SHA1(48299d6530f641b18764cc49e283c347d0918a47) ) // 5.5c
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD16_BYTE( "7.5s", 0x000000, 0x010000, CRC(9f6aa0f0) SHA1(1caad7092c07723d12a07aa363ae2aa69cb6be0d) )
|
|
ROM_LOAD16_BYTE( "8.5r", 0x000001, 0x010000, CRC(68f7dddc) SHA1(6938fa974c6ef028751982fdabd6a3820b0d30a8) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "back-1", 0x000000, 0x100000, CRC(8b7f9219) SHA1(3412b6f8a4fe245e521ddcf185a53f2f4520eb57) )
|
|
ROM_LOAD( "back-2", 0x100000, 0x080000, CRC(ce61c952) SHA1(52a843c8ba428b121fab933dd3b313b2894d80ac) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) (diff encrypt to raiden2? ) */
|
|
ROM_LOAD32_WORD( "obj-1", 0x000000, 0x200000, CRC(45be8029) SHA1(adc164f9dede9a86b96a4d709e9cba7d2ad0e564) )
|
|
ROM_LOAD32_WORD( "obj-2", 0x000002, 0x200000, CRC(cb61c19d) SHA1(151a2ce9c32f3321a974819e9b165dddc31c8153) )
|
|
|
|
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "6.4a", 0x00000, 0x40000, CRC(48be32b1) SHA1(969d2191a3c46871ee8bf93088b3cecce3eccf0c) ) // 6.4a
|
|
ROM_END
|
|
|
|
ROM_START( zeroteama )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("1.bin", 0x000000, 0x40000, CRC(bd7b3f3a) SHA1(896413901a429d0efa3290f61920063c81730e9b) )
|
|
ROM_LOAD32_BYTE("3.bin", 0x000002, 0x40000, CRC(19e02822) SHA1(36c9b887eaa9b9b67d65c55e8f7eefd08fe0be15) )
|
|
ROM_LOAD32_BYTE("2.bin", 0x000001, 0x40000, CRC(0580b7e8) SHA1(d4416264aa5acdaa781ebcf51f128b3e665cc903) )
|
|
ROM_LOAD32_BYTE("4.bin", 0x000003, 0x40000, CRC(cc666385) SHA1(23a8878315b6009dcc1f27e49572e5be29f6a1a6) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "5.bin", 0x000000, 0x08000, CRC(efc484ca) SHA1(c34b8e3e7f4c2967bc6414348993478ed637d338) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD16_BYTE( "7.bin", 0x000000, 0x010000, CRC(eb10467f) SHA1(fc7d576dc41bc878ff20f0370e669e19d54fcefb) )
|
|
ROM_LOAD16_BYTE( "8.bin", 0x000001, 0x010000, CRC(a0b2a09a) SHA1(9b1f6c732000b84b1ad635f332ebead5d65cc491) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "back-1", 0x000000, 0x100000, CRC(8b7f9219) SHA1(3412b6f8a4fe245e521ddcf185a53f2f4520eb57) )
|
|
ROM_LOAD( "back-2", 0x100000, 0x080000, CRC(ce61c952) SHA1(52a843c8ba428b121fab933dd3b313b2894d80ac) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) (diff encrypt to raiden2? ) */
|
|
ROM_LOAD32_WORD( "obj-1", 0x000000, 0x200000, CRC(45be8029) SHA1(adc164f9dede9a86b96a4d709e9cba7d2ad0e564) )
|
|
ROM_LOAD32_WORD( "obj-2", 0x000002, 0x200000, CRC(cb61c19d) SHA1(151a2ce9c32f3321a974819e9b165dddc31c8153) )
|
|
|
|
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "6.4a", 0x00000, 0x40000, CRC(48be32b1) SHA1(969d2191a3c46871ee8bf93088b3cecce3eccf0c) ) // 6.bin
|
|
ROM_END
|
|
|
|
ROM_START( zeroteams )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("1_sel.bin", 0x000000, 0x40000, CRC(d99d6273) SHA1(21dccd5d71c720b8364406835812b3c9defaff6c) )
|
|
ROM_LOAD32_BYTE("3_sel.bin", 0x000002, 0x40000, CRC(0a9fe0b1) SHA1(3588fe19788f77d07e9b5ab8182b94362ffd0024) )
|
|
ROM_LOAD32_BYTE("2_sel.bin", 0x000001, 0x40000, CRC(4e114e74) SHA1(fcccbb68c6b7ffe8d109ed3a1ec9120d338398f9) )
|
|
ROM_LOAD32_BYTE("4_sel.bin", 0x000003, 0x40000, CRC(0df8ba94) SHA1(e07dce6cf3c3cfe1ea3b7f01e18833c1da5ed1dc) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "5_sel.bin", 0x000000, 0x08000, CRC(ed91046c) SHA1(de815c999aeeb814d3f091d5a9ac34ea9a388ddb) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD16_BYTE( "7.5s", 0x000000, 0x010000, CRC(9f6aa0f0) SHA1(1caad7092c07723d12a07aa363ae2aa69cb6be0d) )
|
|
ROM_LOAD16_BYTE( "8.5r", 0x000001, 0x010000, CRC(68f7dddc) SHA1(6938fa974c6ef028751982fdabd6a3820b0d30a8) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "back-1", 0x000000, 0x100000, CRC(8b7f9219) SHA1(3412b6f8a4fe245e521ddcf185a53f2f4520eb57) )
|
|
ROM_LOAD( "back-2", 0x100000, 0x080000, CRC(ce61c952) SHA1(52a843c8ba428b121fab933dd3b313b2894d80ac) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) (diff encrypt to raiden2? ) */
|
|
ROM_LOAD32_WORD( "obj-1", 0x000000, 0x200000, CRC(45be8029) SHA1(adc164f9dede9a86b96a4d709e9cba7d2ad0e564) )
|
|
ROM_LOAD32_WORD( "obj-2", 0x000002, 0x200000, CRC(cb61c19d) SHA1(151a2ce9c32f3321a974819e9b165dddc31c8153) )
|
|
|
|
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "6.4a", 0x00000, 0x40000, CRC(48be32b1) SHA1(969d2191a3c46871ee8bf93088b3cecce3eccf0c) ) // 6.bin
|
|
ROM_END
|
|
|
|
/* this set, consisting of updated program roms, is a later version or hack of zero team to incorporate the writing
|
|
of the fg sei251 'key data' to the pcb on bootup (like raiden 2 does) rather than relying on the sram to hold the
|
|
keys as programmed from factory (or via the suicide revival kit below); hence this romset is immune to the common
|
|
problem of the 3.6v lithium battery dying and the missing keys to cause the sprites to show up as gibberish */
|
|
ROM_START( zeroteamb )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("z1", 0x000000, 0x40000, CRC(157743d0) SHA1(f9c84c9025319f76807ef0e79f1ee1599f915b45) )
|
|
ROM_LOAD32_BYTE("z3", 0x000002, 0x40000, CRC(fea7e4e8) SHA1(08c4bdff82362ae4bcf86fa56fcfc384bbf82b71) )
|
|
ROM_LOAD32_BYTE("z2", 0x000001, 0x40000, CRC(21d68f62) SHA1(8aa85b38e8f36057ef6c7dce5a2878958ce93ce8) )
|
|
ROM_LOAD32_BYTE("z4", 0x000003, 0x40000, CRC(ce8fe6c2) SHA1(69627867c7866e43e771ab85014553117044d18d) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "5.5c", 0x000000, 0x08000, CRC(7ec1fbc3) SHA1(48299d6530f641b18764cc49e283c347d0918a47) ) // 5.5c
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD16_BYTE( "7.5s", 0x000000, 0x010000, CRC(9f6aa0f0) SHA1(1caad7092c07723d12a07aa363ae2aa69cb6be0d) )
|
|
ROM_LOAD16_BYTE( "8.5r", 0x000001, 0x010000, CRC(68f7dddc) SHA1(6938fa974c6ef028751982fdabd6a3820b0d30a8) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "back-1", 0x000000, 0x100000, CRC(8b7f9219) SHA1(3412b6f8a4fe245e521ddcf185a53f2f4520eb57) )
|
|
ROM_LOAD( "back-2", 0x100000, 0x080000, CRC(ce61c952) SHA1(52a843c8ba428b121fab933dd3b313b2894d80ac) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) (diff encrypt to raiden2? ) */
|
|
ROM_LOAD32_WORD( "obj-1", 0x000000, 0x200000, CRC(45be8029) SHA1(adc164f9dede9a86b96a4d709e9cba7d2ad0e564) )
|
|
ROM_LOAD32_WORD( "obj-2", 0x000002, 0x200000, CRC(cb61c19d) SHA1(151a2ce9c32f3321a974819e9b165dddc31c8153) )
|
|
|
|
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "6.4a", 0x00000, 0x40000, CRC(48be32b1) SHA1(969d2191a3c46871ee8bf93088b3cecce3eccf0c) ) // 6.4a
|
|
ROM_END
|
|
|
|
ROM_START( zeroteamc )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("b1.024", 0x000000, 0x40000, CRC(528de3b9) SHA1(9ca8cdc0212f2540e852d20ab4c04f68b967d024) )
|
|
ROM_LOAD32_BYTE("b3.023", 0x000002, 0x40000, CRC(3688739a) SHA1(f98f461fb8e7804b3b4020a5e3762d36d6458a62) )
|
|
ROM_LOAD32_BYTE("b2.025", 0x000001, 0x40000, CRC(5176015e) SHA1(6b372564b2f1b1f56cae0c98f4ca588b784bfa3d) )
|
|
ROM_LOAD32_BYTE("b4.026", 0x000003, 0x40000, CRC(c79925cb) SHA1(aaff9f626ec61bc0ff038ebd722fe361dccc49fb) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "5.bin", 0x000000, 0x08000, CRC(efc484ca) SHA1(c34b8e3e7f4c2967bc6414348993478ed637d338) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD16_BYTE( "b7.072", 0x000000, 0x010000, CRC(30ec0241) SHA1(a0d0be9458bf97cb9764fb85c988bb816710475e) )
|
|
ROM_LOAD16_BYTE( "b8.077", 0x000001, 0x010000, CRC(e18b3a75) SHA1(3d52bba8d47d0d9108ee79014fd64d6e856a3fde) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "back-1", 0x000000, 0x100000, CRC(8b7f9219) SHA1(3412b6f8a4fe245e521ddcf185a53f2f4520eb57) )
|
|
ROM_LOAD( "back-2", 0x100000, 0x080000, CRC(ce61c952) SHA1(52a843c8ba428b121fab933dd3b313b2894d80ac) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) (diff encrypt to raiden2? ) */
|
|
ROM_LOAD32_WORD( "obj-1", 0x000000, 0x200000, CRC(45be8029) SHA1(adc164f9dede9a86b96a4d709e9cba7d2ad0e564) )
|
|
ROM_LOAD32_WORD( "obj-2", 0x000002, 0x200000, CRC(cb61c19d) SHA1(151a2ce9c32f3321a974819e9b165dddc31c8153) )
|
|
|
|
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "6.105", 0x00000, 0x40000, CRC(b4a6e899) SHA1(175ab656db3c3258ff10eede89890f62435d2298) )
|
|
ROM_END
|
|
|
|
/*
|
|
"Zero Team Suicide Revival Kit"
|
|
|
|
As the name implies, this is used to give life again to a dead ZT PCB.
|
|
*/
|
|
|
|
ROM_START( zeroteamsr )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("zteam1.u24", 0x000000, 0x40000, CRC(c531e009) SHA1(731881fca3dc0a8269ecdd295ba7119d93c892e7) )
|
|
ROM_LOAD32_BYTE("zteam3.u23", 0x000002, 0x40000, CRC(1f988808) SHA1(b1fcb8c96e57c4942bc032d42408d7289c6a3681) )
|
|
ROM_LOAD32_BYTE("zteam2.u25", 0x000001, 0x40000, CRC(b7234b93) SHA1(35bc093e8ad4bce1d2130a392ed1b9487a5642a1) )
|
|
ROM_LOAD32_BYTE("zteam4.u26", 0x000003, 0x40000, CRC(c2d26708) SHA1(d65191b40f5dd7cdbbc004e2de10134db6092fd1) )
|
|
|
|
ROM_REGION( 0x40000, "user2", 0 ) /* COPX */
|
|
ROM_LOAD( "copx-d2", 0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
|
|
|
|
ROM_REGION( 0x20000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "5.5c", 0x000000, 0x08000, CRC(7ec1fbc3) SHA1(48299d6530f641b18764cc49e283c347d0918a47) ) // 5.5c
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD16_BYTE( "7.5s", 0x000000, 0x010000, CRC(9f6aa0f0) SHA1(1caad7092c07723d12a07aa363ae2aa69cb6be0d) )
|
|
ROM_LOAD16_BYTE( "8.5r", 0x000001, 0x010000, CRC(68f7dddc) SHA1(6938fa974c6ef028751982fdabd6a3820b0d30a8) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "back-1", 0x000000, 0x100000, CRC(8b7f9219) SHA1(3412b6f8a4fe245e521ddcf185a53f2f4520eb57) )
|
|
ROM_LOAD( "back-2", 0x100000, 0x080000, CRC(ce61c952) SHA1(52a843c8ba428b121fab933dd3b313b2894d80ac) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (encrypted) (diff encrypt to raiden2? ) */
|
|
ROM_LOAD32_WORD( "obj-1", 0x000000, 0x200000, CRC(45be8029) SHA1(adc164f9dede9a86b96a4d709e9cba7d2ad0e564) )
|
|
ROM_LOAD32_WORD( "obj-2", 0x000002, 0x200000, CRC(cb61c19d) SHA1(151a2ce9c32f3321a974819e9b165dddc31c8153) )
|
|
|
|
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "6.4a", 0x00000, 0x40000, CRC(48be32b1) SHA1(969d2191a3c46871ee8bf93088b3cecce3eccf0c) ) // 6.4a
|
|
ROM_END
|
|
|
|
|
|
/*
|
|
|
|
X Se Dae Quiz
|
|
Seibu/Dream Island, 1995
|
|
|
|
This game runs on a Zero Team PCB
|
|
|
|
PCB Layout
|
|
ZERO TEAM-V2 SEIBU KAIHATSU INC.
|
|
|----------------------------------------|
|
|
|LA4460 YM2151 M6295 9 Z80 Y |
|
|
|HB-46A1 YM3014 SEI150 8 |
|
|
|VOL 6116 6116 28.6362MHz 6116 |
|
|
| 6116 SEI251 6116 |
|
|
|J HB-2 62256 |
|
|
|A OBJ-2 OBJ-1 62256 |
|
|
|M 62256 |
|
|
|M SW1(8) PAL 1 3 62256 |
|
|
|A PAL 4 2 SEI1000 |
|
|
| SW2(8) 6264 |
|
|
| PAL 6264 X |
|
|
| SW3(8) SEI0200 5 D71011 |
|
|
| 7 BG-1 6 V30 |
|
|
|----------------------------------------|
|
|
Notes:
|
|
PCB is identical to standard Zero Team PCB
|
|
with the following differences....
|
|
1. X - location for COPX ROM, not populated
|
|
2. Y - location for battery, not populated
|
|
3. NEC V30 and NEC D71011 are located on a sub board and
|
|
the surface-mounted V30 (UPD70116) is not populated
|
|
4. ROM7 is located in a 8M-DIP42 to 4M-DIP40 adapter and is a 27C4002 EPROM
|
|
5. ROM8 has the top 4 pins hanging out of the DIP28 socket and is a 27C1001
|
|
EPROM. Pins 30,31 & 32 are tied together and pin 2 is tied to the SEI150
|
|
with a wire.
|
|
*/
|
|
|
|
ROM_START( xsedae )
|
|
ROM_REGION( 0x200000, "mainprg", 0 ) /* v30 main cpu */
|
|
ROM_LOAD32_BYTE("1.u024", 0x000000, 0x40000, CRC(185437f9) SHA1(e46950b6a549d11dc57105dd7d9cb512a8ecbe70) )
|
|
ROM_LOAD32_BYTE("2.u025", 0x000001, 0x40000, CRC(a2b052df) SHA1(e8bf9ab3d5d4e601ea9386e1f2d4e017b025407e) )
|
|
ROM_LOAD32_BYTE("3.u023", 0x000002, 0x40000, CRC(293fd6c1) SHA1(8b1a231f4bedbf9c0f347330e13fdf092b9888b4) )
|
|
ROM_LOAD32_BYTE("4.u026", 0x000003, 0x40000, CRC(5adf20bf) SHA1(42a0bb5a460c656675b2c432c043fc61a9049276) )
|
|
|
|
ROM_REGION( 0x40000, "user2", ROMREGION_ERASEFF ) /* COPX */
|
|
/* Not populated */
|
|
|
|
ROM_REGION( 0x30000, "audiocpu", ROMREGION_ERASEFF ) /* 64k code for sound Z80 */
|
|
ROM_LOAD( "8.u1110", 0x000000, 0x08000, CRC(2dc2f81a) SHA1(0f6605042e0e295b4256b43dbdf5d53daebe1a9a) )
|
|
ROM_CONTINUE(0x10000,0x8000)
|
|
ROM_CONTINUE(0x20000,0x10000) // TODO
|
|
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
|
|
|
|
ROM_REGION( 0x020000, "gfx1", 0 ) /* chars */
|
|
ROM_LOAD16_BYTE( "5.u077", 0x000001, 0x010000, CRC(478deced) SHA1(88cd72cb76bbc1c4255c3dfae4b9a10af9b050b2) )
|
|
ROM_LOAD16_BYTE( "6.u072", 0x000000, 0x010000, CRC(a788402d) SHA1(8a1ac4760cf75cd2e32c1d15f36ad15cce3d411b) )
|
|
|
|
ROM_REGION( 0x400000, "gfx2", 0 ) /* background gfx */
|
|
ROM_LOAD( "bg-1.u075", 0x000000, 0x100000, CRC(ac087560) SHA1(b6473b20c55ec090961cfc46a024b3c5b707ec25) )
|
|
ROM_LOAD( "7.u0714", 0x100000, 0x080000, CRC(296105dc) SHA1(c2b80d681646f504b03c2dde13e37b1d820f82d2) )
|
|
|
|
ROM_REGION( 0x800000, "gfx3", 0 ) /* sprite gfx (not encrypted) */
|
|
ROM_LOAD32_WORD( "obj-1.u0811", 0x000000, 0x200000, CRC(6ae993eb) SHA1(d9713c79eacb4b3ce5e82dd3ce39003e3a433d8f) )
|
|
ROM_LOAD32_WORD( "obj-2.u082", 0x000002, 0x200000, CRC(26c806ee) SHA1(899a76a1b3f933c6f5cb6b5dcdf5b58e1b7e49c6) )
|
|
|
|
ROM_REGION( 0x100000, "oki1", 0 ) /* ADPCM samples */
|
|
ROM_LOAD( "9.u105", 0x00000, 0x40000, CRC(a7a0c5f9) SHA1(7882681ac152642aa4f859071f195842068b214b) )
|
|
|
|
ROM_REGION( 0x100000, "oki2", ROMREGION_ERASEFF ) /* ADPCM samples */
|
|
ROM_END
|
|
|
|
static DRIVER_INIT (raiden2)
|
|
{
|
|
memory_configure_bank(machine, "mainbank", 0, 2, machine.region("mainprg")->base(), 0x20000);
|
|
raiden2_decrypt_sprites(machine);
|
|
}
|
|
|
|
static DRIVER_INIT (raidendx)
|
|
{
|
|
memory_configure_bank(machine, "mainbank", 0, 0x10, machine.region("mainprg")->base(), 0x20000);
|
|
raiden2_decrypt_sprites(machine);
|
|
}
|
|
|
|
static DRIVER_INIT (xsedae)
|
|
{
|
|
/* doesn't have banking */
|
|
//memory_configure_bank(machine, "mainbank", 0, 2, machine.region("mainprg")->base(), 0x20000);
|
|
}
|
|
|
|
static DRIVER_INIT (zeroteam)
|
|
{
|
|
memory_configure_bank(machine, "mainbank", 0, 2, machine.region("mainprg")->base(), 0x20000);
|
|
zeroteam_decrypt_sprites(machine);
|
|
}
|
|
|
|
/* GAME DRIVERS */
|
|
|
|
// rev numbers at end of the line just indicate which sets are the same code revisions (just a region byte change), they don't reflect the actual order of release
|
|
GAME( 1993, raiden2, 0, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden II (set 1, US Fabtek)", GAME_NOT_WORKING) // rev 1
|
|
GAME( 1993, raiden2a, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden II (set 2, Metrotainment)", GAME_NOT_WORKING) // ^
|
|
GAME( 1993, raiden2b, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden II (set 3, Japan)", GAME_NOT_WORKING) // ^
|
|
GAME( 1993, raiden2c, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden II (set 4, Italy)", GAME_NOT_WORKING) // rev 2
|
|
GAME( 1993, raiden2d, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden II (set 5, Easy Version)", GAME_NOT_WORKING) // rev 3
|
|
GAME( 1993, raiden2e, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden II (set 6, Easy Version)", GAME_NOT_WORKING) // rev 4
|
|
GAME( 1993, raiden2f, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden II (set 7, US Fabtek, Easy Version)", GAME_NOT_WORKING) // ^
|
|
GAME( 1993, raiden2g, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden II (set 8, US Fabtek, Easy Version)", GAME_NOT_WORKING) // rev 3 and 4 mix?
|
|
|
|
|
|
GAME( 1994, raidndx, 0, raidendx, raidendx, raidendx, ROT270, "Seibu Kaihatsu", "Raiden DX (UK)", GAME_NOT_WORKING)
|
|
GAME( 1994, raidndxa1,raidndx, raidendx, raidendx, raidendx, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden DX (Asia set 1)", GAME_NOT_WORKING)
|
|
GAME( 1994, raidndxa2,raidndx, raidendx, raidendx, raidendx, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden DX (Asia set 2)", GAME_NOT_WORKING)
|
|
GAME( 1994, raidndxj, raidndx, raidendx, raidendx, raidendx, ROT270, "Seibu Kaihatsu", "Raiden DX (Japan)", GAME_NOT_WORKING)
|
|
GAME( 1994, raidndxu, raidndx, raidendx, raidendx, raidendx, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden DX (US)", GAME_NOT_WORKING)
|
|
GAME( 1994, raidndxg, raidndx, raidendx, raidendx, raidendx, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden DX (Germany)", GAME_NOT_WORKING)
|
|
|
|
GAME( 1993, zeroteam, 0, zeroteam, zeroteam, zeroteam, ROT0, "Seibu Kaihatsu", "Zero Team (set 1)", GAME_NOT_WORKING)
|
|
GAME( 1993, zeroteama,zeroteam,zeroteam, zeroteam, zeroteam, ROT0, "Seibu Kaihatsu", "Zero Team (set 2)", GAME_NOT_WORKING)
|
|
GAME( 1993, zeroteamb,zeroteam,zeroteam, zeroteam, zeroteam, ROT0, "Seibu Kaihatsu", "Zero Team (set 3)", GAME_NOT_WORKING)
|
|
GAME( 1993, zeroteamc,zeroteam,zeroteam, zeroteam, zeroteam, ROT0, "Seibu Kaihatsu", "Zero Team (set 4)", GAME_NOT_WORKING)
|
|
GAME( 1993, zeroteams,zeroteam,zeroteam, zeroteam, zeroteam, ROT0, "Seibu Kaihatsu", "Zero Team Selection", GAME_NOT_WORKING)
|
|
GAME( 1993, zeroteamsr,zeroteam,zeroteam, zeroteam, zeroteam, ROT0, "Seibu Kaihatsu", "Zero Team Suicide Revival Kit", GAME_NOT_WORKING)
|
|
|
|
GAME( 1995, xsedae, 0, xsedae, xsedae, xsedae, ROT0, "Dream Island", "X Se Dae Quiz", GAME_NOT_WORKING)
|