diff options
Diffstat (limited to 'trunk/src/mame/drivers/seibuspi.c')
-rw-r--r-- | trunk/src/mame/drivers/seibuspi.c | 3625 |
1 files changed, 3625 insertions, 0 deletions
diff --git a/trunk/src/mame/drivers/seibuspi.c b/trunk/src/mame/drivers/seibuspi.c new file mode 100644 index 00000000000..f1704a4964b --- /dev/null +++ b/trunk/src/mame/drivers/seibuspi.c @@ -0,0 +1,3625 @@ +/* + Seibu SPI Hardware + Seibu SYS386 + + Driver by Ville Linde + + + Games on this hardware: + + Raiden Fighters + Raiden Fighters 2 + Raiden Fighters Jet + Senkyu / Battle Balls + E-Jan High School + Viper Phase 1 + + Hardware: + + Intel 386 DX 25MHz + Z80 8MHz (sound) + YMF271F Sound chip + Seibu Custom GFX chip + + SYS386 seems like a lower-cost version of single-board SPI. + It has a 40MHz AMD 386 and a considerably weaker sound system (dual MSM6295). + +TODO: +- Alpha blending. Screen shot on www.system16.com show that during attract mode + in Viper Phase 1 the "Viper" part of the logo (the red part) should be partially + transparent. Same thing with the blu "Viper" logo when on the "push 1 or 2 + players button" screen. Note that the red logo is tiles, the blue logo is sprites. + Same thing with the lights on the ground at the beginning of the game. They are + opaque now, you should see the background tiles through. + +*/ + +/* +Information from Guru + +Seibu Kaihatsu SPI Hardware Overview +1995-1998 Seibu Kaihatsu Inc. + +This system (known as 'SPI') consists of a main board and a plug-in +cartridge containing the game software. The games on SPI hardware can +be swapped by changing the top cartridge and then moving a jumper +to the alternative position. This re-flashes some ROMs for a few minutes +(accompanied by a techno music track). Afterwards, a message tells you to +put the jumper back to the original position and reboot the PCB. The new +game then plays. + +There were a few revisions of this hardware, though most are the same with only +minor changes such as different IC revisions etc. + +Games on this system include..... +Raiden Fighters +Raiden Fighters 2 +Raiden Fighters Jet +Senkyu / Battle Balls +E-Jan High School +Viper Phase 1 + + +Main Board Layout +----------------- +Revision 1 +(C)1995 SXX2C-MAIN V2.0 + +Revision 2 +(C)1998 SXX2C-MAIN V2.1 +|-----------------------------------------------------------------------------| +| CN121 E28F008SA XC7336(1) Z80 | +| E28F008SA | +| JP072 | +| VOL_L VOL_R | +| 4560 |--------| LH5496D-50 | +| 4560 4560 |YMF271-F| XC7336(2) | +| | |16.9344MHz LH5496D-50 | +| YAC513-F | | | +| |--------| | +| JP121 PAL3 TC551001 | +| | +|--| |-------------------------| TC551001 | + | |-------------------------| | +|--| |------| | +| |SIE150| 61256 | +| | | | +| |------| 61256 |---------| TC551664BJ-15 | +| |SEI400 | | +| |SB07-3460| * | +|J | | | +|A | | | +|M |---------| TC551664BJ-15 | +|M JP071 | +|A PAL1 61256 | +| * | +| PAL2 61256 | +| | +| 28.63636MHz |-------------------------| | +| |-------------------------| | +|--| | + | BATT_3V |---------| |-------| PAL4 | +|--| |SEI600 | |AM386DX| 50MHz | +| |SB08-1513| | | | +| 32.768kHz | | |-------| | +| DS2404S | | | +| |---------| | +| | +|-----------------------------------------------------------------------------| +Notes: + AM386DX - Advanced Micro Devices AM386DX/DXL-25 (QFP132), running at 25.000MHz [50/2] + - Replaced with Intel NG80386DX25 on Revision 1 PCB + Z80 - Zilog Z84C0008PEC (DIP40), running at 7.15909MHz (28.63636/4) + YMF271-F - Yamaha YMF271-F running at 16.9344MHz + E28F008SA - Intel E28F008SA 8MBit FlashROM (TSOP40) + - Replaced with Sharp LH28F008 on Revision 1 PCB + XC7336(1) - Xilinx XC7336 CPLD (PLCC44, stamped 'MCTL02') + XC7336(2) - Xilinx XC7336 CPLD (PLCC44, stamped 'MCTL03') + TC551001 - Toshiba TC551001 128k x8 SRAM (SOP32) + - Replaced with Toshiba TC518128 on Revision 1 PCB + 61256 - 32k x8 SRAM (DIP28) + - Replaced with Sony CXK5863BP-30 on Revision 1 PCB + TC551664 - Toshiba TC551664BJ-15 64k x16 SRAM (SOJ44) + LH5496D-50- Sharp LH5496D-50 Asynchronous FIFO (DIP28) + DS2404S - Dallas DS2404S EconoRAM Time Chip (SOIC16) + PAL1 - ICT PEEL18CV8 (DIP20, stamped 'SXX005-5') + PAL2 - ICT PEEL18CV8 (DIP20, stamped 'SXX011B') + PAL3 - Lattice GAL16V8D (DIP20) + - Stamped 'MCTL01' on Revision 1 PCB + - no Seibu markings on Revision 2 PCB + PAL4 - Advanced Micro Devices PALCE20V8H (no Seibu markings, DIP24) + - Replaced with ICT PEEL18CV8 (DIP20, stamped 'SXX010B') on Revision 1 PCB + 3V_BATT - 3 Volt coin battery CR2032 for use with DS2404S + JRC4560 - Japan Radio Co. JRC4560 Op Amp IC (DIP8) + - All 3 IC's replaced with a custom ceramic SIL module stamped 'HB-46A1' on Revision 1 PCB + YAC513-M - Yamaha YAC513-M DAC (SOIC16) + JP072 - Jumper used when swapping game board cartridges + JP071 - Slide Switch to flip screen + JP121 - Jumper to set sound output to mono or stereo + CN121 - Output connector for left/right speakers + * - Unpopulated position for Toshiba TC551664BJ-15 64k x16 SRAM + + +(C)1996 SXX2D V2.1 +|----------------------------------------------------------| +|HA13118 CN121 Z80 | +| HA13118 |-------| TC518128 | +| 4560 4560 |SEI155 | | +| |SB09 | TC518128 PAL3 | +| VOL_L 4650 YAC513-W |-------| | +|--| VOL_R JP121 |-------------------------| | + | |-------------------------| | +|--| |--------| | +| 16.9344MHz |YMF271-F| 61256 |---------| 61256 | +| | | |SEI400 | | +| |------| | | 61256 |SB07-3460| 61256 | +|J |SIE150| |--------| | | | +|A | | | | | +|M |------| |---------| | +|M LH28F008 TC551664BJ-15 | +|A LH28F008 PAL2 PAL1 TC551664BJ-15 | +| |-------------------------| | +| |-------------------------| | +|--| 28.63636MHz | + | BATT_3V |---------| |-------| PAL4 | +|--|JP051 |SEI600 | |AM386DX| | +| |SB08-1513| | | 50MHz | +| 32.768kHz | | |-------| | +|EXCN1 DS2404S | | | +|EXCN2 |---------| | +|----------------------------------------------------------| +Notes: + This is a smaller (and perhaps cheaper) version of the SXX2C hardware. + AM386DX - Advanced Micro Devices AM386DX/DXL-25 (QFP132), running at 25.000MHz [50/2] + Z80 - Zilog Z84C0008PEC (DIP40), running at 7.15909MHz (28.63636/4) + YMF271-F - Yamaha YMF271-F running at 16.9344MHz + LH28F008 - Sharp LH28F008SAT-85 8MBit FlashROM (TSOP40) + TC518128 - Toshiba TC528128 128k x8 SRAM (SOP32) + 61256 - SBT SB61L256AS-12 32k x8 SRAM (SOJ28) + TC551664 - Toshiba TC551664BJ-15 64k x16 SRAM (SOJ44) + DS2404S - Dallas DS2404S EconoRAM Time Chip (SOIC16) + PAL1 - AMD PALCE16V8 (SOIC20, stamped 'SXX2002') + PAL2 - AMD PALCE16V8 (SOIC20, no markings) + PAL3 - AMD PALCE16V8 (SOIC20, no markings) + PAL4 - Lattice GAL20V8B (DIP24, stamped 'SXX2D01') + 3V_BATT - 3 Volt coin battery CR2032 for use with DS2404S + 4560 - Japan Radio Co. JRC4560 Op Amp IC (DIP8) + YAC513-W - Yamaha YAC513-M DAC (SOIC16) + HA13118 - Audio Power AMP IC (ZIP15) + JP121 - Jumper used when swapping game board cartridges + JP051 - Slide Switch to flip screen + CN121 - Output connector for left/right speakers + EXCN1/2 - Connectors for player 3 & 4 controls + + +ROM Board Layouts +----------------- + +SXX2C ROM SUB +------------------------------------- +| * * | +|+BG2-P.U049 5.U048 BG-1D.U0415 | +| | +| * * | +| BG-1P.U0410 6.U0413 +BG2-D.U0416| +| | +| |-------------------------| | +| |-------------------------| | +| | +| 5816 | +| |------------| | +| | | * | +| | |OBJ-3.U0323 | +| 5816 | SEI252 | | +| | SB05-106 | | +| | | | +| | | | +| 5816 |------------| | +| | +| * * | +| OBJ-2.U0324 OBJ-1.U0322 | +| | +| | +| |-------------------------| | +| |-------------------------| | +| | +| | +| 3.U0210 2.U0212 1.U0211 | +| | +| * | +| 4.U029 PCM-1.U0215 7.U0216 | +| | +------------------------------------- +Notes: +* : These ROMs are surface mounted ++ : These ROMs not populated on some games +5816 : SONY CXD5816SP-12L SRAM (x3) +SEI252: SEIBU custom stamped 'SEI252 SB05-106' (QFP208) + +This board is used by... + +Battle Balls/SenKyu (All Mask ROMs stamped 'F-BALLS') + Filename ROM Type + ---------------------------------- + OBJ-1.322 23C3210 (SOP44 MaskROM) + OBJ-2.324 23C3210 (SOP44 MaskROM) + OBJ-3.323 23C3210 (SOP44 MaskROM) + BG-1D.415 23C1610 (SOP44 MaskROM) + BG-1P.410 538100 (SOP32 MaskROM) + PCM-1.215 538100 (SOP32 MaskROM) + 1.211 27C2001 (DIP32 EPROM) + 2.212 27C020 (DIP32 EPROM) + 3.210 27C020 (DIP32 EPROM) + 4.029 27C2001 (DIP32 EPROM) + 5.048 27C512 (DIP28 EPROM) + 6.413 27C1024 (DIP40 EPROM) + 7.216 27C040 (DIP32 EPROM) + +E-Jan High School (All Mask ROMs stamped 'EJAN') + Filename ROM Type + ------------------------------------ + OBJ-1.U0322 23C3210 (SOP44 MaskROM) + OBJ-2.U0324 23C3210 (SOP44 MaskROM) + OBJ-3.U0323 23C3210 (SOP44 MaskROM) + BG-1D.U0415 23C1610 (SOP44 MaskROM) + BG-2D.U0416 538000 (SOP32 MaskROM) + BG-1P.U0410 538000 (SOP32 MaskROM) + BG-2P.U049 534000 (SOP32 MaskROM) + PCM-1.U0215 538000 (SOP32 MaskROM) + 1.U0211 27C2001 (DIP32 EPROM) + 2.U0212 27C020 (DIP32 EPROM) + 3.U0210 27C020 (DIP32 EPROM) + 4.U029 27C2001 (DIP32 EPROM) + 5.U048 27C512 (DIP28 EPROM) + 6.U0413 27C1024 (DIP40 EPROM) + 7.U0216 27C040 (DIP32 EPROM) + +Viper Phase 1 (All Mask ROMs stamped 'VIPER') +(Old and New Versions) Filename ROM Type + ------------------------------------ + OBJ-1.U0322 23C3210 (SOP44 MaskROM) + OBJ-2.U0324 23C3210 (SOP44 MaskROM) + OBJ-3.U0323 23C3210 (SOP44 MaskROM) + BG-11.U0415 23C1610 (SOP44 MaskROM) + BG21.U0416 538000 (SOP32 MaskROM) + BG-12.U0410 538000 (SOP32 MaskROM) + BG22.U049 534000 (SOP32 MaskROM) + PCM.U0215 538000 (SOP32 MaskROM) + 1.U0211 27C040 (DIP32 EPROM) + 2.U0212 27C040 (DIP32 EPROM) + 3.U0210 27C040 (DIP32 EPROM) + 4.U029 27C040 (DIP32 EPROM) + 5.U048 27C512 (DIP28 EPROM) + 6.U0413 27C1024 (DIP40 EPROM) + + +SXX2C ROM SUB2 +------------------------------------- +| * * | +|BG2-P.U049 7.U048 BG1-D.U0415 | +| | +| * 5.U0423 6.U0424 * | +|BG1-P.U0410 BG2-D.U0416 | +| | +| |-------------------------| | +| |-------------------------| | +| | +| 6116 | +| |------------| | +| | | * | +| | |OBJ-3.U0323 | +| 6116 | SEI252 | | +| | SB05-106 | | +| | | | +| | | | +| 6116 |------------| | +| | +| * * | +| OBJ-2.U0324 OBJ-1.U0322 | +| | +| | +| |-------------------------| | +| |-------------------------| | +| | +| | +| 3.U0210 2.U0212 1.U0211 | +| | +| * | +| 4.U029 PCM.U0217 8.U0216 | +| | +------------------------------------- +Notes: +* : These ROMs are surface mounted +6116 : HM6116LK-70 SRAM (x3) +SEI252: SEIBU custom stamped 'SEI252 SB05-106' (QFP208) + +This board is used by... +Raiden Fighters (All Mask ROMs stamped 'GUN DOGS') + Filename ROM Type + ---------------------------------- + OBJ-1.U0322 23C3210 (SOP44 MaskROM) + OBJ-2.U0324 23C3210 (SOP44 MaskROM) + OBJ-3.U0323 23C3210 (SOP44 MaskROM) + BG1-D.U0415 23C1610 (SOP44 MaskROM) + BG2-D.U0416 23C1610 (SOP44 MaskROM) + BG1-P.U0410 538100 (SOP32 MaskROM) + BG2-P.U0049 538100 (SOP32 MaskROM) + PCM.U0217 538100 (SOP32 MaskROM) + 1.U0211 27C040 (DIP32 EPROM) + 2.U0212 27C040 (DIP32 EPROM) + 3.U0210 27C040 (DIP32 EPROM) + 4.U0029 27C040 (DIP32 EPROM) + 5.U0423 27C512 (DIP28 EPROM) + 6.U0424 27C512 (DIP28 EPROM) + 7.U048 27C512 (DIP28 EPROM) + 8.U0216 27C040 (DIP32 EPROM) + + +SXX2C ROM SUB4 (C)1996 +------------------------------------- +| * BG1-P.U0410 *BG2-P.U049 | +|BG1-D.U0415 * *FIX.U0425| +| | +| * 7.U048 | +|BG2-D.U0424 | +| | +| |-------------------------| | +| |-------------------------| | +| | +| 6216 | +| |------------| | +| | | * | +| 6216 | |OBJ-3.U0323 | +| | SEI252 | | +| | SB05-106 | * | +| | |OBJ-2.U0324 | +| | | | +| |------------| * | +| 6216 OBJ-1.U0322 | +| | +| | +| | +| | +| |-------------------------| | +| |-------------------------| | +| | +| * | +| 1.U0211 * PCM2.U0217| +| PRG34.U0219 | +| | +| PRG2.U021 | +| | +------------------------------------- +Notes: +* : These ROMs are surface mounted +6216 : BR6216C-10LL SRAM (x3) +SEI252: SEIBU custom stamped 'SEI252 SB05-106' (QFP208) + +This board is used by... +Raiden Fighters (Asia) + Filename ROM Type + ---------------------------------- + OBJ-1.U0322 23C3210 (SOP44 MaskROM, stamped 'GUN DOGS') + OBJ-2.U0324 23C3210 (SOP44 MaskROM, stamped 'GUN DOGS') + OBJ-3.U0323 23C3210 (SOP44 MaskROM, stamped 'GUN DOGS') + BG1-D.U0415 23C1610 (SOP44 MaskROM, stamped 'GUN DOGS') + BG2-D.U0424 23C1610 (SOP44 MaskROM, stamped 'GUN DOGS') + BG1-P.U0410 538100 (SOP32 MaskROM, stamped 'GUN DOGS') + BG2-P.U0049 538100 (SOP32 MaskROM, stamped 'GUN DOGS') + FIX.U0425 LH531024(SOP40 MaskROM, stamped 'RAIDEN-F') + PCM2.U0217 23C1610 (SOP44 MaskROM, stamped 'RAIDEN-F') + PRG34.U0219 23C1610 (SOP44 MaskROM, stamped 'RAIDEN-F') + PRG2.U0212 534000 (DIP32 MaskROM, stamped 'RAIDEN-F') + 1.U0211 27C040 (DIP32 EPROM) + 7.U048 27C512 (DIP28 EPROM) + + +SXX2C ROM SUB8 (C)1997 +------------------------------------- +| | +| 7.U0514 6.U0518 5.U0524 | +| | +| *BG-2D.U0536 BG-1D.U0535| +|BG-2P.U0538 BG-1P.U0537 * | +| * * | +| |-------------------------| | +| |-------------------------| | +| | +| * PAL1 | +|OBJ-1.U0429 |------------| | +| * | | | +|OBJ-1B.U0430| | N341256 | +| * | RISE10 | | +|OBJ-2.U0431 | | N341256 | +| * | | | +|OBJ-2B.U0432| | | +| * |------------| | +|OBJ-3.U0434 PAL2 | +| * | +|OBJ-3B.U0433 | +| | +|PAL3 | +| |-------------------------| | +| |-------------------------| | +| | +| * | +| PCM.U0217| +|1.U0211 3.U0221 8.U0222 | +| | +| 2.U0212 4.U0220 | +| | +------------------------------------- +Notes: +* : These ROMs are surface mounted +N341256: NKK N341256SJ-15 32k x8 SRAM (x2) +RISE10 : SEIBU custom stamped 'RISE10' (QFP240) +PAL1 : PALCE 16V8 stamped 'RM83' +PAL2 : PALCE 16V8 stamped 'RM81' +PAL3 : PALCE 16V8 stamped 'RM82' + +This board is used by... + +Raiden Fighters 2 (All Mask ROMs stamped 'RAIDEN-F2') + Filename ROM Type + -------------------------------------- + BG-1D.U0535 MX23C3210 (SOP44 MaskROM) + BG-2D.U0536 MX23C3210 (SOP44 MaskROM) + BG-1P.U0537 MX23C1610 (SOP44 MaskROM) + BG-2P.U0538 MX23C1610 (SOP44 MaskROM) + OBJ1.U0429 MX23C3210 (TSOP48 MaskROM) + OBJ2.U0431 MX23C3210 (TSOP48 MaskROM) + OBJ3.U0434 MX23C3210 (TSOP48 MaskROM) + OBJ1B.U0430 MX23C1610 (TSOP48 MaskROM) + OBJ2B.U0432 MX23C1610 (TSOP48 MaskROM) + OBJ3B.U0433 MX23C1610 (TSOP48 MaskROM) + PCM.U0217 MX23C1610 (SOP44 MaskROM) + 1.U0211 27C040 (DIP32 EPROM) + 2.U0212 27C040 (DIP32 EPROM) + 3.U0221 27C040 (DIP32 EPROM) + 4.U0220 27C040 (DIP32 EPROM) + 5.U0524 27C512 (DIP28 EPROM) + 6.U0518 27C512 (DIP28 EPROM) + 7.U0514 27C512 (DIP28 EPROM) + 8.U0222 27C040 (DIP32 EPROM) + + +SXX2C ROM SUB10 (C)1998 +------------------------------------- +| | +|FIXP.U0514 FIX1.U0518 FIX0.U0524 | +| | +| *BG-2D.U0545 BG-1D.U0543| +|BG-2P.U0546 BG-1P.U0544 * | +| * * | +| |-------------------------| | +| |-------------------------| | +| | +| * | +|OBJ-1.U0442 |------------| | +| | | | +| | | 61256 | +| * | RISE11 | | +|OBJ-2.U0443 | | 61256 | +| | | | +| | | | +| * |------------| | +|OBJ-3.U0444 | +| PAL1 | +| PAL2 | +| | +| | +| |-------------------------| | +| |-------------------------| | +| | +| * | +|PRG2.U0221 PRG0.U0211 PCM-D.U0227| +| | +| | +|PRG3.U0220 PRG1.U0212 SOUND1.U0222| +| | +------------------------------------- +Notes: +* : These ROMs are surface mounted +61256 : 32k x8 SRAM (x2) +RISE11: SEIBU custom stamped 'RISE11' (QFP240) +PAL1 : PALCE 16V8 stamped 'SPI ROM 10-2' +PAL2 : PALCE 16V8 stamped 'SPI ROM 10-1' + +This board is used by... + +Raiden Fighters Jet (All Mask ROMs stamped 'RAIDEN-FJET') + Filename ROM Type + -------------------------------------- + FIXP.U0514 27C512 (DIP28 EPROM) + FIX1.U0518 27C512 (DIP28 EPROM) + FIX0.U0524 27C512 (DIP28 EPROM) + BG-2D.U0545 MX23C1610 (SOP44 MaskROM) + BG-1D.U0543 MX23C3210 (SOP44 MaskROM) + BG-1P.U0544 MX23C1610 (SOP44 MaskROM) + BG-2P.U0546 MX23C8000 (SOP32 MaskROM) + OBJ-1.U0442 MX23C6410 (SOP44 MaskROM) + OBJ-2.U0443 MX23C6410 (SOP44 MaskROM) + OBJ-3.U0444 MX23C6410 (SOP44 MaskROM) + PRG0.U0211 MX27C4000 (DIP32 EPROM) + PRG1.U0212 MX27C4000 (DIP32 EPROM) + PRG2.U0221 MX27C4000 (DIP32 EPROM) + PRG3.U0220 MX27C4000 (DIP32 EPROM) + PCM-D.U0227 MX23C1610 (SOP44 MaskROM) + SOUND1.U0222 MX27C4000 (DIP32 EPROM) + + +There were some single PCBs made that run just one game. These are shown below. + + +SXX2F V1.2 +|-----------------------------------------------------------------------------| +|HA13118 |--------| PCM SOUND1 | +| |YMF271-F| ZPRG OBJ1 OBJ2 OBJ3 | +| | |16.9344MHz OBJ1B OBJ2B OBJ3B | +| VOL | | | +| YAC516-M |--------| | +| Z84C0006PCS AE8256AJ-12 | +|--| LH5496D-50 | + | PAL | +|--| |------| PAL PAL PAL PAL | +| |SIE150| |---------| | +| | | |RISE10 | X | +| |------| AE8256AJ-12 |9741 GBZ1| 0 | X051 = 28.63636MHz OSC +|J |---------| AE8256AJ-12 | | 5 | +|A |SEI400 | AE8256AJ-12 | | 1 | +|M ST93C46 AE8256AJ-12 |SB07-3460| |---------| | +|M | | | +|A | | | +| JP031 AE8256AJ-12 |---------| | +| TC551664J-20 PRG0.U0259| +| TC551664J-20 | +|--| AE8256AJ-12 PRG1.U0258| + | |---------| |--------| | +|--| |SEI600 | | Intel | PRG2.U0265| +| |SB08-1513| | i386DX | | +| FIX0 BG-1P.U0537 BG-1D.U0535 | | |--------| PRG3.U0264| +| FIX1 | | | +| FIXP BG-2P.U0545 BG-2D.U0536 |---------| 50MHz PAL | +| | +|-----------------------------------------------------------------------------| +Notes: + i386DX - Intel i386DX (QFP132), running at 25.000MHz [50/2] + Z80 - Zilog Z84C0006PCS (DIP40) - Uknown clock + YMF271-F - Yamaha YMF271-F running at 16.9344MHz + TC551664 - Toshiba TC551664J-20 64k x16 SRAM (SOJ44) + YAC516-M - Yamaha YAC516-M DAC (SOP28) + JP031 - Slide Switch to flip screen (unpopulated) + ST93C46 - EEPROM (SOIC8) + +Name Size CRC32 +------------------------------- +fix0.bin 65536 0x6fdf4cf6 +fix1.bin 65536 0x69b7899b +fixp.bin 65536 0x99a5fece +prg0.bin 524288 0xff3eeec1 +prg1.bin 524288 0xe2cf77d6 +prg2.bin 524288 0xcae87e1f +prg3.bin 524288 0x83f4fb5f +sound1.bin 524288 0x20384b0e +zprg.bin 131072 0xcc543c4f + + +SXX2G +|-----------------------------------------------------------------------------| +|HA13118 |--------| PCM-D RFJ-04 | +| |YMF271-F| RFJ-05 OBJ-3 OBJ-2 OBJ-1 | +| | |16.3840MHz U075 U074 U073 | +| VOL | | | +| YAC516-M |--------| | +| Z84C0004PCS D43256BGU-70L | +|--| CY7C421-65PC | + | PAL | +|--| |------| PAL PAL PAL PAL | +| |SIE150| 4.9152MHz |---------| | +| | | |RISE11 | | +| |------| 61256 |9823 GAX1| | +|J |---------| D43256BGU-70L | | | +|A |SEI400 | D43256BGU-70L | | | +|M ST93C46 61256 |SB07-3460| |---------| | +|M | | | +|A | | 28.63636MHz | +| JP031 61256 |---------| | +| TC551664BJ-20 RFJ-06.U0259| +| TC551664BJ-20 | +|--| 61256 RFJ-07.U0258| + | |---------| |-------| | +|--| |SEI600 | |AM386DX| RFJ-08.U0265| +| |SB08-1513| | 40 | | +| RFJ-01 BG-1P.U0537 BG-1D.U0535 | | |-------| RFJ-09.U0264| +| RFJ-02 | | | +| RFJ-03 BG-2P.U0545 BG-2D.U0536 |---------| 28.63636MHz | +| SW1 PAL | +|-----------------------------------------------------------------------------| +Notes: + AM386DX - Advanced Micro Devices AM386DX/DX-40 running at 28.63636MHz (QFP132) + Z80 - Zilog Z84C0004PCS running at 4.9152MHz (DIP40) + YMF271-F - Yamaha YMF271-F running at 16.3840MHz + TC551664 - Toshiba TC551664BJ-15 64k x16 SRAM (SOJ44) + YAC516-M - Yamaha YAC516-M DAC (SOP28) + JP031 - Slide Switch to flip screen + ST93C46 - EEPROM (SOIC8) + + ROMs + ---- + RFJ-01 - FIX0 27C512 + RFJ-02 - FIX1 27C512 + RFJ-03 - FIXP 27C512 + RFJ-04 - SOUND1 27C040 + RFJ-05 - ZPRG 27C020 + RFJ-06 - PRG0 27C040 + RFJ-07 - PRG1 27C040 + RFJ-08 - PRG2 27C040 + RFJ-09 - PRG3 27C040 + Other ROMs not listed are surface mounted SOP44 except BG-2P + which is SOP32 + All surface mounted ROMs are stamped 'RAIDEN-FJET' and match + the same named ROMs from the SPI version. + + +E-Jan Sakurasou +Seibu Kaihatsu Inc. 1999 + +PCB Layout +---------- + +SYS386F V2.0 +|-----------------------------------------------------| +|TA7252 4560D | +| VOL YAC516 SOUND1 | +| |------------| | +| 16.384MHz YMZ280B SOUND2 | RISE11 | CHR3 | +| | | | +| SB61L256 | | CHR4 | +| SB61L256 | | | +|M SB61L256 |------------| CHR2 | +|A SB61L256 28.63636MHz | +|H CHR1 | +|J XC9536 | +|O PAL16(1) | +|N PAL16(2) GAL20V8 W26010A | +|G | +| 93C46 |---------| | +| | SEI600 | PRG3 | +| 50MHz |SB08-1513| W26010A | +| | | PRG2 | +| |---------| | +| PRG1 | +| i386DX | +| PRG0 | +|-----------------------------------------------------| +Notes: + i386DX - Intel i386DX-25MHz (QFP132), clock 25.000MHz [50/2] + YMZ280B - Yamaha YMZ280B-F, clock input 16.384MHz + YAC516-M - Yamaha YAC516-M Delta Sigma Modulation D/A Converter with 8 Times Over Sampling Filter (SOP28) + 4560D - JRC 4560D OP Amp (DIP8) + TA7252 - Toshiba TA7252AP Power Amp IC (SIL7) + GAL20V8 - Lattice GAL20V8B stamped 'S386F1' at location U0170 + PAL16(1) - AMD PAL16V8H stamped 'S386F2' at location U0069 + PAL16(2) - AMD PAL16V8H stamped 'S386F4' at location U0341 + XC9536 - Xilinx XC9536 CPLD (PLCC44) at location U0339 + W26010A - Winbond W26010AJ-15 64kx16 SRAM (SOJ44) + SB61L256 - Silicon-Based Technology Corporation SB61L256AS-12 32kx8 SRAM (SOJ28) + Custom - SEI600 SB08-1513 (QFP208) + RISE11 (QFP240) + ROMs - PRG0.U0211 \ + PRG1.U0212 | + PRG2.U0221 | 27C020 EPROM + PRG3.U0220 / + CHR1.U0442 \ + CHR2.U0443 | + CHR3.U0444 | 32MBit SOP44 mask ROM + CHR4.U0445 / + SOUND1.U083 \ + SOUND2.U084 / 64MBit SOP44 mask ROM + + Measurements + ------------ + OSC1 - 50.0003MHz + OSC2 - 28.6368MHz + OSC3 - 16.3837MHz + VSync - 57.5943Hz + HSync - 15.6656kHz + +*/ + +#include "emu.h" +#include "cpu/z80/z80.h" +#include "cpu/i386/i386.h" +#include "machine/ds2404.h" +#include "machine/eeprom.h" +#include "machine/intelfsh.h" +#include "sound/okim6295.h" +#include "sound/ymf271.h" +#include "sound/ymz280b.h" +#include "machine/seibuspi.h" +#include "includes/seibuspi.h" + +/********************************************************************/ + +static UINT8 z80_fifoout_pop(address_space *space) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + UINT8 r; + if (state->m_fifoout_wpos == state->m_fifoout_rpos) + { + logerror("Sound FIFOOUT underflow at %08X\n", cpu_get_pc(&space->device())); + } + r = state->m_fifoout_data[state->m_fifoout_rpos++]; + if(state->m_fifoout_rpos == FIFO_SIZE) + { + state->m_fifoout_rpos = 0; + } + + if (state->m_fifoout_wpos == state->m_fifoout_rpos) + { + state->m_fifoout_read_request = 0; + } + + return r; +} + +static void z80_fifoout_push(address_space *space, UINT8 data) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + state->m_fifoout_data[state->m_fifoout_wpos++] = data; + if (state->m_fifoout_wpos == FIFO_SIZE) + { + state->m_fifoout_wpos = 0; + } + if(state->m_fifoout_wpos == state->m_fifoout_rpos) + { + fatalerror("Sound FIFOOUT overflow at %08X", cpu_get_pc(&space->device())); + } + + state->m_fifoout_read_request = 1; +} + +static UINT8 z80_fifoin_pop(address_space *space) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + UINT8 r; + if (state->m_fifoin_wpos == state->m_fifoin_rpos) + { + fatalerror("Sound FIFOIN underflow at %08X", cpu_get_pc(&space->device())); + } + r = state->m_fifoin_data[state->m_fifoin_rpos++]; + if(state->m_fifoin_rpos == FIFO_SIZE) + { + state->m_fifoin_rpos = 0; + } + + if (state->m_fifoin_wpos == state->m_fifoin_rpos) + { + state->m_fifoin_read_request = 0; + } + + return r; +} + +static void z80_fifoin_push(address_space *space, UINT8 data) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + state->m_fifoin_data[state->m_fifoin_wpos++] = data; + if(state->m_fifoin_wpos == FIFO_SIZE) + { + state->m_fifoin_wpos = 0; + } + if(state->m_fifoin_wpos == state->m_fifoin_rpos) + { + fatalerror("Sound FIFOIN overflow at %08X", cpu_get_pc(&space->device())); + } + + state->m_fifoin_read_request = 1; +} + +static READ32_HANDLER( sb_coin_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + UINT8 r = state->m_sb_coin_latch; + + state->m_sb_coin_latch = 0; + return r; +} + +static WRITE8_HANDLER( sb_coin_w ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + if (data) + state->m_sb_coin_latch = 0xa0 | data; + else + state->m_sb_coin_latch = 0; +} + +static READ32_HANDLER( sound_fifo_r ) +{ + UINT8 r = z80_fifoout_pop(space); + + return r; +} + +static WRITE32_HANDLER( sound_fifo_w ) +{ + if( ACCESSING_BITS_0_7 ) { + z80_fifoin_push(space, data & 0xff); + } +} + +static READ32_HANDLER( sound_fifo_status_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + UINT32 r = 0; + if (state->m_fifoout_read_request) + { + r |= 2; + } + return r | 1; +} + +static READ32_HANDLER( spi_int_r ) +{ + cputag_set_input_line(space->machine(), "maincpu", 0,CLEAR_LINE ); + return 0xffffffff; +} + +static READ32_HANDLER( spi_unknown_r ) +{ + return 0xffffffff; +} + +static WRITE32_DEVICE_HANDLER( eeprom_w ) +{ + okim6295_device *oki2 = device->machine().device<okim6295_device>("oki2"); + + // tile banks + if( ACCESSING_BITS_16_23 ) { + rf2_set_layer_banks(device->machine(), data >> 16); + + eeprom_device *eeprom = downcast<eeprom_device *>(device); + eeprom->write_bit((data & 0x800000) ? 1 : 0); + eeprom->set_clock_line((data & 0x400000) ? ASSERT_LINE : CLEAR_LINE); + eeprom->set_cs_line((data & 0x200000) ? CLEAR_LINE : ASSERT_LINE); + } + + // oki banking + if (oki2 != NULL) + oki2->set_bank_base((data & 0x4000000) ? 0x40000 : 0); +} + +static WRITE32_HANDLER( z80_prg_fifo_w ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + if( ACCESSING_BITS_0_7 ) { + if (state->m_z80_prg_fifo_pos<0x40000) state->m_z80_rom[state->m_z80_prg_fifo_pos] = data & 0xff; + state->m_z80_prg_fifo_pos++; + } +} + +static WRITE32_HANDLER( z80_enable_w ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + // tile banks + if( ACCESSING_BITS_16_23 ) { + rf2_set_layer_banks(space->machine(), data >> 16); + } + +logerror("z80 data = %08x mask = %08x\n",data,mem_mask); + if( ACCESSING_BITS_0_7 ) { + if( data & 0x1 ) { + state->m_z80_prg_fifo_pos = 0; + cputag_set_input_line(space->machine(), "soundcpu", INPUT_LINE_RESET, CLEAR_LINE ); + } else { + cputag_set_input_line(space->machine(), "soundcpu", INPUT_LINE_RESET, ASSERT_LINE ); + } + } +} + +static READ32_HANDLER( spi_controls1_r ) +{ + if( ACCESSING_BITS_0_7 ) + { + return input_port_read(space->machine(), "INPUTS"); + } + return 0xffffffff; +} + +static READ32_HANDLER( spi_controls2_r ) +{ + if( ACCESSING_BITS_0_7 ) + { + return input_port_read(space->machine(), "SYSTEM"); + } + return 0xffffffff; +} + +static CUSTOM_INPUT( ejsakura_keyboard_r ) +{ + seibuspi_state *state = field.machine().driver_data<seibuspi_state>(); + switch(state->m_ejsakura_input_port) + { + case 0x01: + return input_port_read(field.machine(), "INPUT01"); + case 0x02: + return input_port_read(field.machine(), "INPUT02"); + case 0x04: + return input_port_read(field.machine(), "INPUT04"); + case 0x08: + return input_port_read(field.machine(), "INPUT08"); + case 0x10: + return input_port_read(field.machine(), "INPUT10"); + default: + return input_port_read(field.machine(), "SYSTEM"); + } + return 0xffffffff; +} +/********************************************************************/ + +static READ8_HANDLER( z80_soundfifo_r ) +{ + UINT8 r = z80_fifoin_pop(space); + + return r; +} + +static WRITE8_HANDLER( z80_soundfifo_w ) +{ + z80_fifoout_push(space, data); +} + +static READ8_HANDLER( z80_soundfifo_status_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + UINT8 r = 0; + if (state->m_fifoin_read_request) + { + r |= 2; + } + return r | 1; +} + +static WRITE8_HANDLER( z80_bank_w ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + if ((data & 7) != state->m_z80_lastbank) + { + state->m_z80_lastbank = (data & 7); + memory_set_bankptr(space->machine(), "bank4", state->m_z80_rom + (0x8000 * state->m_z80_lastbank)); + } +} + +static READ8_HANDLER( z80_jp1_r ) +{ + return input_port_read(space->machine(), "JP1"); +} + +static READ8_HANDLER( z80_coin_r ) +{ + return input_port_read(space->machine(), "COIN"); +} + +static READ32_HANDLER( soundrom_r ) +{ + UINT8 *sound = (UINT8*)space->machine().region("user2")->base(); + UINT16 *sound16 = (UINT16*)space->machine().region("user2")->base(); + + if (mem_mask == 0x000000ff) + { + return sound[offset]; + } + else if (mem_mask == 0xffffffff) + { + if (offset < 0x100000) + { + return sound16[offset]; + } + else if (offset < 0x200000) + { + return sound16[0x80000 + (offset & 0x7ffff)]; + } + else + { + return sound[offset]; + } + } + + + fatalerror("soundrom_r: %08X, %08X", offset, mem_mask); +} + +/********************************************************************/ + +static ADDRESS_MAP_START( spi_map, AS_PROGRAM, 32 ) + AM_RANGE(0x00000000, 0x00000417) AM_RAM + AM_RANGE(0x00000418, 0x0000041b) AM_READWRITE(spi_layer_bank_r, spi_layer_bank_w) + AM_RANGE(0x0000041c, 0x0000041f) AM_READNOP + AM_RANGE(0x0000041c, 0x0000041f) AM_WRITE(spi_layer_enable_w) + AM_RANGE(0x00000420, 0x0000042b) AM_RAM AM_BASE_MEMBER(seibuspi_state, m_spi_scrollram) + AM_RANGE(0x00000480, 0x00000483) AM_WRITE(tilemap_dma_start_w) + AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w) + AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w) + AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) + AM_RANGE(0x0000050c, 0x0000050f) AM_WRITE(sprite_dma_start_w) + AM_RANGE(0x00000600, 0x00000603) AM_READ(spi_int_r) /* Clear Interrupt */ + AM_RANGE(0x00000600, 0x00000603) AM_WRITENOP /* Unknown */ + AM_RANGE(0x00000604, 0x00000607) AM_READ(spi_controls1_r) /* Player controls */ + AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_unknown_r) /* Unknown */ + AM_RANGE(0x0000060c, 0x0000060f) AM_READ(spi_controls2_r) /* Player controls (start) */ + AM_RANGE(0x00000680, 0x00000683) AM_WRITE(sound_fifo_w) + AM_RANGE(0x00000684, 0x00000687) AM_READ(sound_fifo_status_r) + AM_RANGE(0x00000684, 0x00000687) AM_WRITENOP /* Unknown */ + AM_RANGE(0x000006d0, 0x000006d3) AM_DEVWRITE8("ds2404", ds2404_1w_reset_w, 0x000000ff) + AM_RANGE(0x000006d4, 0x000006d7) AM_DEVWRITE8("ds2404", ds2404_data_w, 0x000000ff) + AM_RANGE(0x000006d8, 0x000006db) AM_DEVWRITE8("ds2404", ds2404_clk_w, 0x000000ff) + AM_RANGE(0x000006dc, 0x000006df) AM_DEVREAD8("ds2404", ds2404_data_r, 0x000000ff) + AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_BASE_MEMBER(seibuspi_state, m_spimainram) + AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share2") + AM_RANGE(0x00a00000, 0x013fffff) AM_READ(soundrom_r) + AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* ROM location in real-mode */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( spisound_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank5") + AM_RANGE(0x4002, 0x4002) AM_WRITENOP /* ack RST 10 */ + AM_RANGE(0x4003, 0x4003) AM_WRITENOP /* Unknown */ + AM_RANGE(0x4004, 0x4004) AM_WRITE(sb_coin_w) /* single board systems */ + AM_RANGE(0x4008, 0x4008) AM_READWRITE(z80_soundfifo_r, z80_soundfifo_w) + AM_RANGE(0x4009, 0x4009) AM_READ(z80_soundfifo_status_r) + AM_RANGE(0x400a, 0x400a) AM_READ(z80_jp1_r) + AM_RANGE(0x400b, 0x400b) AM_WRITENOP /* Unknown */ + AM_RANGE(0x4013, 0x4013) AM_READ(z80_coin_r) + AM_RANGE(0x401b, 0x401b) AM_WRITE(z80_bank_w) /* control register: bits 0-2 = bank @ 8000, bit 3 = watchdog? */ + AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("ymf", ymf271_r, ymf271_w) + AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank4") +ADDRESS_MAP_END + +static READ8_DEVICE_HANDLER( flashrom_read ) +{ + seibuspi_state *state = device->machine().driver_data<seibuspi_state>(); + logerror("Flash Read: %08X\n", offset); + if( offset < 0x100000 ) + { + return state->m_flash[0]->read(offset); + } + else if( offset < 0x200000 ) + { + return state->m_flash[1]->read(offset - 0x100000 ); + } + return 0; +} + +static WRITE8_DEVICE_HANDLER( flashrom_write ) +{ + seibuspi_state *state = device->machine().driver_data<seibuspi_state>(); + logerror("Flash Write: %08X, %02X\n", offset, data); + if( offset < 0x100000 ) + { + state->m_flash[0]->write(offset + 1, data); + } + else if( offset < 0x200000 ) + { + state->m_flash[1]->write(offset - 0x100000 + 1, data); + } +} + +static void irqhandler(device_t *device, int state) +{ + if (state) + cputag_set_input_line_and_vector(device->machine(), "soundcpu", 0, ASSERT_LINE, 0xd7); // IRQ is RST10 + else + cputag_set_input_line(device->machine(), "soundcpu", 0, CLEAR_LINE); +} + +static WRITE32_DEVICE_HANDLER(sys386f2_eeprom_w) +{ + eeprom_device *eeprom = downcast<eeprom_device *>(device); + eeprom->write_bit((data & 0x80) ? 1 : 0); + eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); +} + +static const ymf271_interface ymf271_config = +{ + DEVCB_HANDLER(flashrom_read), + DEVCB_HANDLER(flashrom_write), + irqhandler +}; + +/********************************************************************/ + +static ADDRESS_MAP_START( seibu386_map, AS_PROGRAM, 32 ) + AM_RANGE(0x00000000, 0x00000417) AM_RAM + AM_RANGE(0x00000418, 0x0000041b) AM_READWRITE(spi_layer_bank_r, spi_layer_bank_w) + AM_RANGE(0x0000041c, 0x0000041f) AM_READNOP + AM_RANGE(0x0000041c, 0x0000041f) AM_WRITE(spi_layer_enable_w) + AM_RANGE(0x00000420, 0x0000042b) AM_RAM AM_BASE_MEMBER(seibuspi_state, m_spi_scrollram) + AM_RANGE(0x00000480, 0x00000483) AM_WRITE(tilemap_dma_start_w) + AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w) + AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w) + AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) + AM_RANGE(0x0000050c, 0x0000050f) AM_WRITE(sprite_dma_start_w) + AM_RANGE(0x00000600, 0x00000603) AM_READ(spi_int_r) /* Unknown */ + AM_RANGE(0x00000604, 0x00000607) AM_READ(spi_controls1_r) /* Player controls */ + AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_unknown_r) + AM_RANGE(0x0000060c, 0x0000060f) AM_READ(spi_controls2_r) /* Player controls (start) */ + AM_RANGE(0x0000068c, 0x0000068f) AM_DEVWRITE("eeprom", eeprom_w) + AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_BASE_MEMBER(seibuspi_state, m_spimainram) + AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share2") + AM_RANGE(0x01200000, 0x01200003) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x000000ff) + AM_RANGE(0x01200004, 0x01200007) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x000000ff) + AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* ROM location in real-mode */ +ADDRESS_MAP_END + +static WRITE32_HANDLER(input_select_w) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + state->m_ejsakura_input_port = data; +} + +static ADDRESS_MAP_START( sys386f2_map, AS_PROGRAM, 32 ) + AM_RANGE(0x00000000, 0x0000000f) AM_RAM + AM_RANGE(0x00000010, 0x00000013) AM_READ(spi_int_r) /* Unknown */ + AM_RANGE(0x00000090, 0x00000097) AM_RAM /* Unknown */ + AM_RANGE(0x00000400, 0x00000403) AM_READNOP AM_WRITE(input_select_w) + AM_RANGE(0x00000404, 0x00000407) AM_DEVWRITE("eeprom", sys386f2_eeprom_w) + AM_RANGE(0x00000408, 0x0000040f) AM_DEVWRITE8("ymz", ymz280b_w, 0x000000ff) + AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w) + AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w) + AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) + AM_RANGE(0x00000500, 0x0000054f) AM_RAM /* Unknown */ + AM_RANGE(0x00000560, 0x00000563) AM_WRITE(sprite_dma_start_w) + AM_RANGE(0x00000600, 0x00000607) AM_DEVREAD8("ymz", ymz280b_r, 0x000000ff) + AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_unknown_r) + AM_RANGE(0x0000060c, 0x0000060f) AM_READ(spi_controls1_r) /* Player controls */ + AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_BASE_MEMBER(seibuspi_state, m_spimainram) + AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share2") + AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* ROM location in real-mode */ +ADDRESS_MAP_END + + +/********************************************************************/ + +static INPUT_PORTS_START( spi_2button ) + PORT_START("INPUTS") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x00001000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("SYSTEM") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START2 ) + PORT_SERVICE_NO_TOGGLE( 0x00000004, IP_ACTIVE_LOW) /* Test Button */ + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Coin") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit) + PORT_BIT( 0x000000b0, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("JP1") + PORT_DIPNAME( 0x03, 0x03, "JP1" ) + PORT_DIPSETTING( 0x03, "Update" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("COIN") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +static INPUT_PORTS_START( spi_3button ) + PORT_INCLUDE( spi_2button ) + + PORT_MODIFY("INPUTS") + PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) +INPUT_PORTS_END + +static INPUT_PORTS_START( seibu386_2button ) + PORT_START("INPUTS") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x00001000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("SYSTEM") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START2 ) + PORT_SERVICE_NO_TOGGLE( 0x00000004, IP_ACTIVE_LOW) /* Test Button */ + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Coin") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit) + PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("JP1") + PORT_DIPNAME( 0x03, 0x03, "JP1" ) + PORT_DIPSETTING( 0x03, "Update" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_BUTTON4 ) +INPUT_PORTS_END + +/* E-Jan Highschool has a keyboard with the following keys + The keys are encoded with 6 bits + A - 000010 port 0 + B - 010000 port 0 + C - 000010 port 1 + D - 010000 port 1 + E - 000011 port 0 + F - 011000 port 0 + G - 000011 port 1 + H - 011000 port 1 + I - 000100 port 0 + J - 100000 port 0 + K - 000100 port 1 + L - 100000 port 1 + M - 000101 port 0 + N - 101000 port 0 + CHI - 000101 port 1 + PON - 101000 port 1 + KAN - 000110 port 0 + REACH - 110000 port 0 + RON - 000110 port 1 + Start - 000111 port 0 +*/ + +static CUSTOM_INPUT( ejanhs_encode ) +{ + static const UINT8 encoding[] = { 0x02, 0x10, 0x03, 0x18, 0x04, 0x20, 0x05, 0x28, 0x06, 0x30, 0x07 }; + input_port_value state = input_port_read(field.machine(), (const char *)param); + int bit; + + for (bit = 0; bit < ARRAY_LENGTH(encoding); bit++) + if (state & (1 << bit)) + return encoding[bit]; + return 0; +} + +static INPUT_PORTS_START( spi_ejanhs ) + PORT_START("INPUTS") + PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(ejanhs_encode, "IN0BITS") + PORT_BIT( 0x00003f00, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(ejanhs_encode, "IN1BITS") + PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("SYSTEM") + PORT_SERVICE_NO_TOGGLE( 0x00000004, IP_ACTIVE_LOW ) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Coin") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x000000f3, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("JP1") + PORT_DIPNAME( 0x03, 0x03, "JP1" ) + PORT_DIPSETTING( 0x03, "Update" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("COIN") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN0BITS") + PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_MAHJONG_A ) PORT_PLAYER(1) + PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_MAHJONG_B ) PORT_PLAYER(1) + PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_MAHJONG_E ) PORT_PLAYER(1) + PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_MAHJONG_F ) PORT_PLAYER(1) + PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_MAHJONG_I ) PORT_PLAYER(1) + PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_MAHJONG_J ) PORT_PLAYER(1) + PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_MAHJONG_M ) PORT_PLAYER(1) + PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_MAHJONG_N ) PORT_PLAYER(1) + PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_MAHJONG_KAN ) PORT_PLAYER(1) + PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_MAHJONG_REACH ) PORT_PLAYER(1) + PORT_BIT( 0x400, IP_ACTIVE_HIGH, IPT_START1 ) + + PORT_START("IN1BITS") + PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_MAHJONG_C ) PORT_PLAYER(1) + PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_MAHJONG_D ) PORT_PLAYER(1) + PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_MAHJONG_G ) PORT_PLAYER(1) + PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_MAHJONG_H ) PORT_PLAYER(1) + PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_MAHJONG_K ) PORT_PLAYER(1) + PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_MAHJONG_L ) PORT_PLAYER(1) + PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_MAHJONG_CHI ) PORT_PLAYER(1) + PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_MAHJONG_PON ) PORT_PLAYER(1) + PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_MAHJONG_RON ) PORT_PLAYER(1) +INPUT_PORTS_END + +static INPUT_PORTS_START( spi_ejsakura ) + PORT_START("INPUTS") + PORT_BIT( 0xffffffff, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM(ejsakura_keyboard_r, NULL) + + PORT_START("INPUT01") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(1) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(1) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(1) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(1) + PORT_BIT( 0xffffffe0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("INPUT02") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(1) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(1) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(1) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(1) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(1) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(1) + PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("INPUT04") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(1) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(1) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(1) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(1) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(1) + PORT_BIT( 0xffffffe0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("INPUT08") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(1) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(1) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(1) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(1) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(1) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("INPUT10") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(1) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(1) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(1) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(1) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(1) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(1) + PORT_SERVICE_NO_TOGGLE( 0x00000200, IP_ACTIVE_LOW) /* Test Button */ + PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Payout") PORT_CODE(KEYCODE_Q) + PORT_BIT( 0xfffff5c0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("SYSTEM") + PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x00004000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit) + PORT_BIT( 0xffffbf3f, IP_ACTIVE_LOW, IPT_UNUSED ) + +INPUT_PORTS_END +/********************************************************************/ + +#define PLANE_CHAR 0 +#define PLANE_TILE 0 +#define PLANE_SPRITE 0 + +static const gfx_layout spi_charlayout = +{ + 8,8, /* 8*8 characters */ + 4096, /* 4096 characters */ + 5, /* 6 bits per pixel */ + { 4, 8, 12, 16, 20 }, + { 3, 2, 1, 0, 27, 26, 25, 24 }, + { 0*48, 1*48, 2*48, 3*48, 4*48, 5*48, 6*48, 7*48 }, + 6*8*8 +}; + +#if PLANE_CHAR +static const gfx_layout spi_charlayout0 = +{ + 8,8, /* 8*8 characters */ + 4096, /* 4096 characters */ + 1, /* 6 bits per pixel */ + { 0 }, + { 3, 2, 1, 0, 27, 26, 25, 24 }, + { 0*48, 1*48, 2*48, 3*48, 4*48, 5*48, 6*48, 7*48 }, + 6*8*8 +}; + +static const gfx_layout spi_charlayout1 = +{ + 8,8, /* 8*8 characters */ + 4096, /* 4096 characters */ + 1, /* 6 bits per pixel */ + { 4 }, + { 3, 2, 1, 0, 27, 26, 25, 24 }, + { 0*48, 1*48, 2*48, 3*48, 4*48, 5*48, 6*48, 7*48 }, + 6*8*8 +}; + +static const gfx_layout spi_charlayout2 = +{ + 8,8, /* 8*8 characters */ + 4096, /* 4096 characters */ + 1, /* 6 bits per pixel */ + { 8 }, + { 3, 2, 1, 0, 27, 26, 25, 24 }, + { 0*48, 1*48, 2*48, 3*48, 4*48, 5*48, 6*48, 7*48 }, + 6*8*8 +}; + +static const gfx_layout spi_charlayout3 = +{ + 8,8, /* 8*8 characters */ + 4096, /* 4096 characters */ + 1, /* 6 bits per pixel */ + { 12 }, + { 3, 2, 1, 0, 27, 26, 25, 24 }, + { 0*48, 1*48, 2*48, 3*48, 4*48, 5*48, 6*48, 7*48 }, + 6*8*8 +}; + +static const gfx_layout spi_charlayout4 = +{ + 8,8, /* 8*8 characters */ + 4096, /* 4096 characters */ + 1, /* 6 bits per pixel */ + { 16 }, + { 3, 2, 1, 0, 27, 26, 25, 24 }, + { 0*48, 1*48, 2*48, 3*48, 4*48, 5*48, 6*48, 7*48 }, + 6*8*8 +}; + +static const gfx_layout spi_charlayout5 = +{ + 8,8, /* 8*8 characters */ + 4096, /* 4096 characters */ + 1, /* 6 bits per pixel */ + { 20 }, + { 3, 2, 1, 0, 27, 26, 25, 24 }, + { 0*48, 1*48, 2*48, 3*48, 4*48, 5*48, 6*48, 7*48 }, + 6*8*8 +}; +#endif + +static const gfx_layout spi_tilelayout = +{ + 16,16, + RGN_FRAC(1,1), + 6, + { 0, 4, 8, 12, 16, 20 }, + { + 3, 2, 1, 0, + 27,26,25,24, + 51,50,49,48, + 75,74,73,72 + }, + { 0*96, 1*96, 2*96, 3*96, 4*96, 5*96, 6*96, 7*96, + 8*96, 9*96, 10*96, 11*96, 12*96, 13*96, 14*96, 15*96 + }, + 6*16*16 +}; + +#if PLANE_TILE +static const gfx_layout spi_tilelayout0 = +{ + 16,16, + RGN_FRAC(1,1), + 1, + { 0 }, + { + 3, 2, 1, 0, + 27,26,25,24, + 51,50,49,48, + 75,74,73,72 + }, + { 0*96, 1*96, 2*96, 3*96, 4*96, 5*96, 6*96, 7*96, + 8*96, 9*96, 10*96, 11*96, 12*96, 13*96, 14*96, 15*96 + }, + 6*16*16 +}; + +static const gfx_layout spi_tilelayout1 = +{ + 16,16, + RGN_FRAC(1,1), + 1, + { 4 }, + { + 3, 2, 1, 0, + 27,26,25,24, + 51,50,49,48, + 75,74,73,72 + }, + { 0*96, 1*96, 2*96, 3*96, 4*96, 5*96, 6*96, 7*96, + 8*96, 9*96, 10*96, 11*96, 12*96, 13*96, 14*96, 15*96 + }, + 6*16*16 +}; + +static const gfx_layout spi_tilelayout2 = +{ + 16,16, + RGN_FRAC(1,1), + 1, + { 8 }, + { + 3, 2, 1, 0, + 27,26,25,24, + 51,50,49,48, + 75,74,73,72 + }, + { 0*96, 1*96, 2*96, 3*96, 4*96, 5*96, 6*96, 7*96, + 8*96, 9*96, 10*96, 11*96, 12*96, 13*96, 14*96, 15*96 + }, + 6*16*16 +}; + +static const gfx_layout spi_tilelayout3 = +{ + 16,16, + RGN_FRAC(1,1), + 1, + { 12 }, + { + 3, 2, 1, 0, + 27,26,25,24, + 51,50,49,48, + 75,74,73,72 + }, + { 0*96, 1*96, 2*96, 3*96, 4*96, 5*96, 6*96, 7*96, + 8*96, 9*96, 10*96, 11*96, 12*96, 13*96, 14*96, 15*96 + }, + 6*16*16 +}; + +static const gfx_layout spi_tilelayout4 = +{ + 16,16, + RGN_FRAC(1,1), + 1, + { 16 }, + { + 3, 2, 1, 0, + 27,26,25,24, + 51,50,49,48, + 75,74,73,72 + }, + { 0*96, 1*96, 2*96, 3*96, 4*96, 5*96, 6*96, 7*96, + 8*96, 9*96, 10*96, 11*96, 12*96, 13*96, 14*96, 15*96 + }, + 6*16*16 +}; + +static const gfx_layout spi_tilelayout5 = +{ + 16,16, + RGN_FRAC(1,1), + 1, + { 20 }, + { + 3, 2, 1, 0, + 27,26,25,24, + 51,50,49,48, + 75,74,73,72 + }, + { 0*96, 1*96, 2*96, 3*96, 4*96, 5*96, 6*96, 7*96, + 8*96, 9*96, 10*96, 11*96, 12*96, 13*96, 14*96, 15*96 + }, + 6*16*16 +}; +#endif + +static const gfx_layout spi_spritelayout = +{ + 16,16, + RGN_FRAC(1,3), + 6, + { 0,8, RGN_FRAC(1,3)+0,RGN_FRAC(1,3)+8,RGN_FRAC(2,3)+0,RGN_FRAC(2,3)+8 }, + { + 7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16 + }, + { + 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32 + }, + 16*32 +}; + +#if PLANE_SPRITE +static const gfx_layout spi_spritelayout0 = +{ + 16,16, + RGN_FRAC(1,3), + 1, + { 0 }, + { + 7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16 + }, + { + 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32 + }, + 16*32 +}; + +static const gfx_layout spi_spritelayout1 = +{ + 16,16, + RGN_FRAC(1,3), + 1, + { 8 }, + { + 7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16 + }, + { + 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32 + }, + 16*32 +}; + +static const gfx_layout spi_spritelayout2 = +{ + 16,16, + RGN_FRAC(1,3), + 1, + { RGN_FRAC(1,3)+0 }, + { + 7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16 + }, + { + 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32 + }, + 16*32 +}; + +static const gfx_layout spi_spritelayout3 = +{ + 16,16, + RGN_FRAC(1,3), + 1, + { RGN_FRAC(1,3)+8 }, + { + 7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16 + }, + { + 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32 + }, + 16*32 +}; + +static const gfx_layout spi_spritelayout4 = +{ + 16,16, + RGN_FRAC(1,3), + 1, + { RGN_FRAC(2,3)+0 }, + { + 7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16 + }, + { + 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32 + }, + 16*32 +}; + +static const gfx_layout spi_spritelayout5 = +{ + 16,16, + RGN_FRAC(1,3), + 1, + { RGN_FRAC(2,3)+8 }, + { + 7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16 + }, + { + 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32 + }, + 16*32 +}; +#endif + +static GFXDECODE_START( spi ) + GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout, 5632, 16 ) + GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout, 4096, 24 ) + GFXDECODE_ENTRY( "gfx3", 0, spi_spritelayout, 0, 96 ) +#if PLANE_CHAR + GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout0, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout1, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout2, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout3, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout4, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout5, 0x3ff, 1 ) +#endif +#if PLANE_TILE + GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout0, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout1, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout2, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout3, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout4, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout5, 0x3ff, 1 ) +#endif +#if PLANE_SPRITE + GFXDECODE_ENTRY( "gfx3", 0, spi_spritelayout0, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx3", 0, spi_spritelayout1, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx3", 0, spi_spritelayout2, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx3", 0, spi_spritelayout3, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx3", 0, spi_spritelayout4, 0x3ff, 1 ) + GFXDECODE_ENTRY( "gfx3", 0, spi_spritelayout5, 0x3ff, 1 ) +#endif +GFXDECODE_END + +static const gfx_layout sys386f2_spritelayout = +{ + 16,16, + RGN_FRAC(1,4), + 8, + { 0, 8, RGN_FRAC(1,4)+0, RGN_FRAC(1,4)+8, RGN_FRAC(2,4)+0, RGN_FRAC(2,4)+8, RGN_FRAC(3,4)+0, RGN_FRAC(3,4)+8 }, + { + 7,6,5,4,3,2,1,0,23,22,21,20,19,18,17,16 + }, + { + 0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32 + }, + 16*32 +}; + +static GFXDECODE_START( sys386f2) + GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout, 5632, 16 ) // Not used + GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout, 4096, 24 ) // Not used + GFXDECODE_ENTRY( "gfx3", 0, sys386f2_spritelayout, 0, 96 ) +GFXDECODE_END + +/********************************************************************************/ + +/* this is a 93C46 but with reset delay */ +static const eeprom_interface eeprom_intf = +{ + 6, /* address bits */ + 16, /* data bits */ + "*110", /* read command */ + "*101", /* write command */ + "*111", /* erase command */ + "*10000xxxx", /* lock command */ + "*10011xxxx", /* unlock command */ + 1, /* enable_multi_read */ + 1 /* reset_delay */ +}; + +static INTERRUPT_GEN( spi_interrupt ) +{ + device_set_input_line(device, 0, ASSERT_LINE ); +} + +static IRQ_CALLBACK(spi_irq_callback) +{ + return 0x20; +} + +/* SPI */ + +static MACHINE_START( spi ) +{ + seibuspi_state *state = machine.driver_data<seibuspi_state>(); + state->m_z80_rom = auto_alloc_array(machine, UINT8, 0x40000); +} + +static MACHINE_RESET( spi ) +{ + seibuspi_state *state = machine.driver_data<seibuspi_state>(); + int i; + UINT8 *sound = machine.region("ymf")->base(); + + UINT8 *rombase = machine.region("user1")->base(); + UINT8 flash_data = rombase[0x1ffffc]; + + cputag_set_input_line(machine, "soundcpu", INPUT_LINE_RESET, ASSERT_LINE ); + device_set_irq_callback(machine.device("maincpu"), spi_irq_callback); + + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x00000680, 0x00000683, FUNC(sound_fifo_r)); + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0x00000688, 0x0000068b, FUNC(z80_prg_fifo_w)); + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0x0000068c, 0x0000068f, FUNC(z80_enable_w)); + + memory_set_bankptr(machine, "bank4", state->m_z80_rom); + memory_set_bankptr(machine, "bank5", state->m_z80_rom); + + /* If the first value doesn't match, the game shows a checksum error */ + /* If any of the other values are wrong, the game goes to update mode */ + state->m_flash[0]->write(0, 0xff); + state->m_flash[0]->write(0, 0x10); + state->m_flash[0]->write(0, flash_data); /* country code */ + + for (i=0; i < 0x100000; i++) + { + state->m_flash[0]->write(0, 0xff); + sound[i] = state->m_flash[0]->read(i); + } + for (i=0; i < 0x100000; i++) + { + state->m_flash[1]->write(0, 0xff); + sound[0x100000+i] = state->m_flash[1]->read(i); + } +} + +static MACHINE_CONFIG_START( spi, seibuspi_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", I386, 50000000/2) /* Intel 386DX, 25MHz */ + MCFG_CPU_PROGRAM_MAP(spi_map) + MCFG_CPU_VBLANK_INT("screen", spi_interrupt) + + MCFG_CPU_ADD("soundcpu", Z80, 28636360/4) + MCFG_CPU_PROGRAM_MAP(spisound_map) + + MCFG_QUANTUM_TIME(attotime::from_hz(12000)) + + MCFG_MACHINE_START(spi) + MCFG_MACHINE_RESET(spi) + + MCFG_EEPROM_ADD("eeprom", eeprom_intf) + + MCFG_DS2404_ADD("ds2404", 1995, 1, 1) + + MCFG_INTEL_E28F008SA_ADD("flash0") + MCFG_INTEL_E28F008SA_ADD("flash1") + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(54) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32) + MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1) + MCFG_SCREEN_UPDATE(spi) + + MCFG_GFXDECODE(spi) + MCFG_PALETTE_LENGTH(6144) + + MCFG_VIDEO_START(spi) + + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_SOUND_ADD("ymf", YMF271, 16934400) + MCFG_SOUND_CONFIG(ymf271_config) + MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) + MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) +MACHINE_CONFIG_END + +static MACHINE_START( sxx2f ) +{ + seibuspi_state *state = machine.driver_data<seibuspi_state>(); + state->m_z80_rom = auto_alloc_array(machine, UINT8, 0x40000); +} + +static MACHINE_RESET( sxx2f ) +{ + seibuspi_state *state = machine.driver_data<seibuspi_state>(); + UINT8 *rom = machine.region("soundcpu")->base(); + + memory_set_bankptr(machine, "bank4", state->m_z80_rom); + memory_set_bankptr(machine, "bank5", state->m_z80_rom); + + memcpy(state->m_z80_rom, rom, 0x40000); + + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(*machine.device("eeprom"), 0x0000068c, 0x0000068f, FUNC(eeprom_w)); + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x00000680, 0x00000683, FUNC(sb_coin_r)); + + device_set_irq_callback(machine.device("maincpu"), spi_irq_callback); + + state->m_sb_coin_latch = 0; +} + +static MACHINE_CONFIG_DERIVED( sxx2f, spi ) /* Intel i386DX @ 25MHz, YMF271 @ 16.9344MHz, Z80 @ 7.159MHz(?) */ + + MCFG_MACHINE_START(sxx2f) + MCFG_MACHINE_RESET(sxx2f) + + MCFG_DEVICE_REMOVE("flash0") + MCFG_DEVICE_REMOVE("flash1") + +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( sxx2g, spi ) /* single board version using measured clocks */ + + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_CLOCK(28636360) /* AMD AM386DX/DX-40, 28.63636MHz */ + + MCFG_CPU_MODIFY("soundcpu") + MCFG_CPU_CLOCK(4915200) /* 4.9152MHz */ + + MCFG_SOUND_REPLACE("ymf", YMF271, 16384000) /* 16.3840MHz */ + MCFG_SOUND_CONFIG(ymf271_config) + + MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) + MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_MACHINE_START(sxx2f) + MCFG_MACHINE_RESET(sxx2f) + + MCFG_DEVICE_REMOVE("flash0") + MCFG_DEVICE_REMOVE("flash1") + +MACHINE_CONFIG_END + +static READ32_HANDLER ( senkyu_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + if (cpu_get_pc(&space->device())==0x00305bb2) device_spin_until_interrupt(&space->device()); // idle + return state->m_spimainram[(0x0018cb4-0x800)/4]; +} + +static READ32_HANDLER( senkyua_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + if (cpu_get_pc(&space->device())== 0x30582e) device_spin_until_interrupt(&space->device()); // idle + return state->m_spimainram[(0x0018c9c-0x800)/4]; +} + +static READ32_HANDLER ( batlball_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); +// printf("cpu_get_pc(&space->device()) %06x\n", cpu_get_pc(&space->device())); + + /* batlbalu */ + if (cpu_get_pc(&space->device())==0x00305996) device_spin_until_interrupt(&space->device()); // idle + + /* batlball */ + if (cpu_get_pc(&space->device())==0x003058aa) device_spin_until_interrupt(&space->device()); // idle + + return state->m_spimainram[(0x0018db4-0x800)/4]; +} + +static READ32_HANDLER ( rdft_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + /* rdft */ + if (cpu_get_pc(&space->device())==0x0203f0a) device_spin_until_interrupt(&space->device()); // idle + + /* rdftau */ + if (cpu_get_pc(&space->device())==0x0203f16) device_spin_until_interrupt(&space->device()); // idle + + /* rdftj */ + if (cpu_get_pc(&space->device())==0x0203f22) device_spin_until_interrupt(&space->device()); // idle + + /* rdftdi */ + if (cpu_get_pc(&space->device())==0x0203f46) device_spin_until_interrupt(&space->device()); // idle + + /* rdftu */ + if (cpu_get_pc(&space->device())==0x0203f3a) device_spin_until_interrupt(&space->device()); // idle + +// mame_printf_debug("%08x\n",cpu_get_pc(&space->device())); + + return state->m_spimainram[(0x00298d0-0x800)/4]; +} + +static READ32_HANDLER ( viprp1_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + /* viprp1 */ + if (cpu_get_pc(&space->device())==0x0202769) device_spin_until_interrupt(&space->device()); // idle + + /* viprp1s */ + if (cpu_get_pc(&space->device())==0x02027e9) device_spin_until_interrupt(&space->device()); // idle + + /* viprp1ot */ + if (cpu_get_pc(&space->device())==0x02026bd) device_spin_until_interrupt(&space->device()); // idle + +// mame_printf_debug("%08x\n",cpu_get_pc(&space->device())); + + return state->m_spimainram[(0x001e2e0-0x800)/4]; +} + +static READ32_HANDLER ( viprp1o_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + /* viperp1o */ + if (cpu_get_pc(&space->device())==0x0201f99) device_spin_until_interrupt(&space->device()); // idle +// mame_printf_debug("%08x\n",cpu_get_pc(&space->device())); + return state->m_spimainram[(0x001d49c-0x800)/4]; +} + +#ifdef UNUSED_FUNCTION +// causes input problems? +READ32_HANDLER ( ejanhs_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); +// mame_printf_debug("%08x\n",cpu_get_pc(&space->device())); + if (cpu_get_pc(&space->device())==0x03032c7) device_spin_until_interrupt(&space->device()); // idle + return state->m_spimainram[(0x002d224-0x800)/4]; +} +#endif + +static READ32_HANDLER ( rf2_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + + /* rdft22kc */ + if (cpu_get_pc(&space->device())==0x0203926) device_spin_until_interrupt(&space->device()); // idle + + /* rdft2, rdft2j */ + if (cpu_get_pc(&space->device())==0x0204372) device_spin_until_interrupt(&space->device()); // idle + + /* rdft2us */ + if (cpu_get_pc(&space->device())==0x020420e) device_spin_until_interrupt(&space->device()); // idle + + /* rdft2a */ + if (cpu_get_pc(&space->device())==0x0204366) device_spin_until_interrupt(&space->device()); // idle + +// mame_printf_debug("%08x\n",cpu_get_pc(&space->device())); + + return state->m_spimainram[(0x0282AC-0x800)/4]; +} + +static READ32_HANDLER ( rfjet_speedup_r ) +{ + seibuspi_state *state = space->machine().driver_data<seibuspi_state>(); + /* rfjet, rfjetu, rfjeta */ + if (cpu_get_pc(&space->device())==0x0206082) device_spin_until_interrupt(&space->device()); // idle + + /* rfjetus */ + if (cpu_get_pc(&space->device())==0x0205b39) + { + UINT32 r; + device_spin_until_interrupt(&space->device()); // idle + // Hack to enter test mode + r = state->m_spimainram[(0x002894c-0x800)/4] & (~0x400); + return r | (((input_port_read(space->machine(), "SYSTEM") ^ 0xff)<<8) & 0x400); + } + + /* rfjetj */ + if (cpu_get_pc(&space->device())==0x0205f2e) device_spin_until_interrupt(&space->device()); // idle + +// mame_printf_debug("%08x\n",cpu_get_pc(&space->device())); + + + return state->m_spimainram[(0x002894c-0x800)/4]; +} + +static void init_spi(running_machine &machine) +{ + seibuspi_state *state = machine.driver_data<seibuspi_state>(); + state->m_flash[0] = machine.device<intel_e28f008sa_device>("flash0"); + state->m_flash[1] = machine.device<intel_e28f008sa_device>("flash1"); + + seibuspi_text_decrypt(machine.region("gfx1")->base()); + seibuspi_bg_decrypt(machine.region("gfx2")->base(), machine.region("gfx2")->bytes()); + seibuspi_sprite_decrypt(machine.region("gfx3")->base(), 0x400000); +} + +static DRIVER_INIT( rdft ) +{ + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x00298d0, 0x00298d3, FUNC(rdft_speedup_r) ); + + init_spi(machine); +} + +static DRIVER_INIT( senkyu ) +{ + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0018cb4, 0x0018cb7, FUNC(senkyu_speedup_r) ); + + init_spi(machine); +} + +static DRIVER_INIT( senkyua ) +{ + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0018c9c, 0x0018c9f, FUNC(senkyua_speedup_r) ); + + init_spi(machine); +} + +static DRIVER_INIT( batlball ) +{ + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0018db4, 0x0018db7, FUNC(batlball_speedup_r) ); + + init_spi(machine); +} + +static DRIVER_INIT( ejanhs ) +{ +// idle skip doesn't work properly? +// machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x002d224, 0x002d227, FUNC(ejanhs_speedup_r) ); + + init_spi(machine); +} + +static DRIVER_INIT( viprp1 ) +{ + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x001e2e0, 0x001e2e3, FUNC(viprp1_speedup_r) ); + + init_spi(machine); +} + +static DRIVER_INIT( viprp1o ) +{ + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x001d49c, 0x001d49f, FUNC(viprp1o_speedup_r) ); + + init_spi(machine); +} + + + +static void init_rf2(running_machine &machine) +{ + seibuspi_state *state = machine.driver_data<seibuspi_state>(); + state->m_flash[0] = machine.device<intel_e28f008sa_device>("flash0"); + state->m_flash[1] = machine.device<intel_e28f008sa_device>("flash1"); + + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0282AC, 0x0282AF, FUNC(rf2_speedup_r) ); + seibuspi_rise10_text_decrypt(machine.region("gfx1")->base()); + seibuspi_rise10_bg_decrypt(machine.region("gfx2")->base(), machine.region("gfx2")->bytes()); + seibuspi_rise10_sprite_decrypt(machine.region("gfx3")->base(), 0x600000); + + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0x560, 0x563, FUNC(sprite_dma_start_w)); +} + +static DRIVER_INIT( rdft2 ) +{ + init_rf2(machine); +} + +static DRIVER_INIT( rdft2us ) +{ + init_rf2(machine); +} + + +static void init_rfjet(running_machine &machine) +{ + seibuspi_state *state = machine.driver_data<seibuspi_state>(); + state->m_flash[0] = machine.device<intel_e28f008sa_device>("flash0"); + state->m_flash[1] = machine.device<intel_e28f008sa_device>("flash1"); + + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x002894c, 0x002894f, FUNC(rfjet_speedup_r) ); + seibuspi_rise11_text_decrypt(machine.region("gfx1")->base()); + seibuspi_rise11_bg_decrypt(machine.region("gfx2")->base(), machine.region("gfx2")->bytes()); + seibuspi_rise11_sprite_decrypt_rfjet(machine.region("gfx3")->base(), 0x800000); + + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0x560, 0x563, FUNC(sprite_dma_start_w)); +} + +static DRIVER_INIT( rfjet ) +{ + init_rfjet(machine); +} + +/* SYS386 */ + +static DRIVER_INIT( rdft22kc ) +{ + init_rf2(machine); +} + +static DRIVER_INIT( rfjet2k ) +{ + init_rfjet(machine); +} + +static MACHINE_RESET( seibu386 ) +{ + device_set_irq_callback(machine.device("maincpu"), spi_irq_callback); +} + +static MACHINE_CONFIG_START( seibu386, seibuspi_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", I386, 40000000) /* AMD 386DX, 40MHz */ + MCFG_CPU_PROGRAM_MAP(seibu386_map) + MCFG_CPU_VBLANK_INT("screen", spi_interrupt) + + MCFG_MACHINE_RESET(seibu386) + + MCFG_EEPROM_ADD("eeprom", eeprom_intf) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(54) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32) + MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1) + + MCFG_GFXDECODE(spi) + MCFG_PALETTE_LENGTH(6144) + + MCFG_VIDEO_START(spi) + MCFG_SCREEN_UPDATE(spi) + + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_OKIM6295_ADD("oki1", 1431815, OKIM6295_PIN7_HIGH) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + + MCFG_OKIM6295_ADD("oki2", 1431815, OKIM6295_PIN7_HIGH) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) +MACHINE_CONFIG_END + +/* SYS386-F V2.0 */ +static DRIVER_INIT( sys386f2 ) +{ + int i, j; + UINT16 *src = (UINT16 *)machine.region("gfx3")->base(); + UINT16 tmp[0x40 / 2], Offset; + + // sprite_reorder() only + for(i = 0; i < machine.region("gfx3")->bytes() / 0x40; i++) + { + memcpy(tmp, src, 0x40); + + for(j = 0; j < 0x40 / 2; j++) + { + Offset = (j >> 1) | (j << 4 & 0x10); + *src++ = tmp[Offset]; + } + } +} + +static MACHINE_CONFIG_START( sys386f2, seibuspi_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", I386, 25000000) /* 25mhz */ + MCFG_CPU_PROGRAM_MAP(sys386f2_map) + MCFG_CPU_VBLANK_INT("screen", spi_interrupt) + + /* no z80? */ + + MCFG_MACHINE_RESET(seibu386) + + MCFG_EEPROM_ADD("eeprom", eeprom_intf) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(57.59) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32) + MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1) + + MCFG_GFXDECODE(sys386f2) + MCFG_PALETTE_LENGTH(8192) + + MCFG_VIDEO_START(sys386f2) + MCFG_SCREEN_UPDATE(sys386f2) + + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_SOUND_ADD("ymz", YMZ280B, 16934400) + MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) + MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) +MACHINE_CONFIG_END + + +/*******************************************************************/ +#define ROM_LOAD24_BYTE(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_SKIP(2)) +#define ROM_LOAD24_WORD(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_SKIP(1) | ROM_REVERSE) +#define ROM_LOAD24_WORD_SWAP(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_SKIP(1)) + +/* SPI games */ + +ROM_START( senkyu ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("fb_1.211", 0x100000, 0x40000, CRC(20a3e5db) SHA1(f1109aeceac7993abc9093d09429718ffc292c77) ) + ROM_LOAD32_BYTE("fb_2.212", 0x100001, 0x40000, CRC(38e90619) SHA1(451ab5f4a5935bb779f9c245c1c4358e80d93c15) ) + ROM_LOAD32_BYTE("fb_3.210", 0x100002, 0x40000, CRC(226f0429) SHA1(69d0fe6671278d7fe215e455bb50abf631cdb484) ) + ROM_LOAD32_BYTE("fb_4.29", 0x100003, 0x40000, CRC(b46d66b7) SHA1(1acd0fea9384e1488b44661e0c99b9672a3f9803) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) ) + ROM_LOAD24_BYTE("fb_5.48", 0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) ) + + ROM_REGION( 0x300000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("fb_bg-1d.415", 0x000000, 0x200000, CRC(eae7a1fc) SHA1(26d8a9f4e554848977ec1f6a8aad8751b558a8d4) ) + ROM_LOAD24_BYTE("fb_bg-1p.410", 0x000002, 0x100000, CRC(b46e774e) SHA1(00b6c1d0b0ea37f4354acab543b270c0bf45896d) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("fb_obj-1.322", 0x000000, 0x400000, CRC(29f86f68) SHA1(1afe809ce00a25f8b27543e4188edc3e3e604951) ) + ROM_LOAD("fb_obj-2.324", 0x400000, 0x400000, CRC(c9e3130b) SHA1(12b5d5363142e8efb3b7fc44289c0afffa5011c6) ) + ROM_LOAD("fb_obj-3.323", 0x800000, 0x400000, CRC(f6c3bc49) SHA1(d0eb9c6aa3954d94e3a442a48e0fe6cc279f5513) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("fb_pcm-1.215", 0x000000, 0x080000, CRC(1d83891c) SHA1(09502437562275c14c0f3a0e62b19e91bedb4693) ) + ROM_CONTINUE(0x100000,0x080000) + ROM_LOAD("fb_7.216", 0x200000, 0x080000, CRC(874d7b59) SHA1(0236753636c9a818780b23f5f506697b9f6d93c7) ) +ROM_END + +ROM_START( senkyua ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("1.bin", 0x100000, 0x40000, CRC(6102c3fb) SHA1(4a55b41d916768f9601513db973b82077bca47c5) ) + ROM_LOAD32_BYTE("2.bin", 0x100001, 0x40000, CRC(d5b8ce46) SHA1(f6e4b8f51146179efb52ecb2b72fdeaee10b7282) ) + ROM_LOAD32_BYTE("3.bin", 0x100002, 0x40000, CRC(e27ceccd) SHA1(3d6b8e97e89939c72d1a5a4a3856025b5f548645) ) + ROM_LOAD32_BYTE("4.bin", 0x100003, 0x40000, CRC(7c6d4549) SHA1(efc6920a2e518afe849fb6fe191e7cd0bc483be5) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) ) + ROM_LOAD24_BYTE("fb_5.48", 0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) ) + + ROM_REGION( 0x300000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("fb_bg-1d.415", 0x000000, 0x200000, CRC(eae7a1fc) SHA1(26d8a9f4e554848977ec1f6a8aad8751b558a8d4) ) + ROM_LOAD24_BYTE("fb_bg-1p.410", 0x000002, 0x100000, CRC(b46e774e) SHA1(00b6c1d0b0ea37f4354acab543b270c0bf45896d) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("fb_obj-1.322", 0x000000, 0x400000, CRC(29f86f68) SHA1(1afe809ce00a25f8b27543e4188edc3e3e604951) ) + ROM_LOAD("fb_obj-2.324", 0x400000, 0x400000, CRC(c9e3130b) SHA1(12b5d5363142e8efb3b7fc44289c0afffa5011c6) ) + ROM_LOAD("fb_obj-3.323", 0x800000, 0x400000, CRC(f6c3bc49) SHA1(d0eb9c6aa3954d94e3a442a48e0fe6cc279f5513) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("fb_pcm-1.215", 0x000000, 0x080000, CRC(1d83891c) SHA1(09502437562275c14c0f3a0e62b19e91bedb4693) ) + ROM_CONTINUE(0x100000,0x080000) + ROM_LOAD("fb_7.216", 0x200000, 0x080000, CRC(874d7b59) SHA1(0236753636c9a818780b23f5f506697b9f6d93c7) ) +ROM_END + +ROM_START( batlball ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("1.211", 0x100000, 0x40000, CRC(d4e48f89) SHA1(10e43a9ff3f6f169de6352280a8a06e7f482271a) ) + ROM_LOAD32_BYTE("2.212", 0x100001, 0x40000, CRC(3077720b) SHA1(b65c3d02ac75eb56e0c5dc1bf6bb6a4e445a41cf) ) + ROM_LOAD32_BYTE("3.210", 0x100002, 0x40000, CRC(520d31e1) SHA1(998ae968113ab5b2891044187d93793903c13452) ) + ROM_LOAD32_BYTE("4.029", 0x100003, 0x40000, CRC(22419b78) SHA1(67475a654d4ad94e5dfda88cbe2f9c1b5ba6d2cc) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) ) + ROM_LOAD24_BYTE("fb_5.48", 0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) ) + + ROM_REGION( 0x300000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("fb_bg-1d.415", 0x000000, 0x200000, CRC(eae7a1fc) SHA1(26d8a9f4e554848977ec1f6a8aad8751b558a8d4) ) + ROM_LOAD24_BYTE("fb_bg-1p.410", 0x000002, 0x100000, CRC(b46e774e) SHA1(00b6c1d0b0ea37f4354acab543b270c0bf45896d) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("fb_obj-1.322", 0x000000, 0x400000, CRC(29f86f68) SHA1(1afe809ce00a25f8b27543e4188edc3e3e604951) ) + ROM_LOAD("fb_obj-2.324", 0x400000, 0x400000, CRC(c9e3130b) SHA1(12b5d5363142e8efb3b7fc44289c0afffa5011c6) ) + ROM_LOAD("fb_obj-3.323", 0x800000, 0x400000, CRC(f6c3bc49) SHA1(d0eb9c6aa3954d94e3a442a48e0fe6cc279f5513) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("fb_pcm-1.215", 0x000000, 0x080000, CRC(1d83891c) SHA1(09502437562275c14c0f3a0e62b19e91bedb4693) ) + ROM_CONTINUE(0x100000,0x080000) + ROM_LOAD("fb_7.216", 0x200000, 0x080000, CRC(874d7b59) SHA1(0236753636c9a818780b23f5f506697b9f6d93c7) ) +ROM_END + +ROM_START( batlballa ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("senkyua1.bin", 0x100000, 0x40000, CRC(ec3c4d4d) SHA1(6c57b8fbb77ce1615850842d06c054e88e240eef) ) + ROM_LOAD32_BYTE("2.212", 0x100001, 0x40000, CRC(3077720b) SHA1(b65c3d02ac75eb56e0c5dc1bf6bb6a4e445a41cf) ) + ROM_LOAD32_BYTE("3.210", 0x100002, 0x40000, CRC(520d31e1) SHA1(998ae968113ab5b2891044187d93793903c13452) ) + ROM_LOAD32_BYTE("4.029", 0x100003, 0x40000, CRC(22419b78) SHA1(67475a654d4ad94e5dfda88cbe2f9c1b5ba6d2cc) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) ) + ROM_LOAD24_BYTE("fb_5.48", 0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) ) + + ROM_REGION( 0x300000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("fb_bg-1d.415", 0x000000, 0x200000, CRC(eae7a1fc) SHA1(26d8a9f4e554848977ec1f6a8aad8751b558a8d4) ) + ROM_LOAD24_BYTE("fb_bg-1p.410", 0x000002, 0x100000, CRC(b46e774e) SHA1(00b6c1d0b0ea37f4354acab543b270c0bf45896d) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("fb_obj-1.322", 0x000000, 0x400000, CRC(29f86f68) SHA1(1afe809ce00a25f8b27543e4188edc3e3e604951) ) + ROM_LOAD("fb_obj-2.324", 0x400000, 0x400000, CRC(c9e3130b) SHA1(12b5d5363142e8efb3b7fc44289c0afffa5011c6) ) + ROM_LOAD("fb_obj-3.323", 0x800000, 0x400000, CRC(f6c3bc49) SHA1(d0eb9c6aa3954d94e3a442a48e0fe6cc279f5513) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("fb_pcm-1.215", 0x000000, 0x080000, CRC(1d83891c) SHA1(09502437562275c14c0f3a0e62b19e91bedb4693) ) + ROM_CONTINUE(0x100000,0x080000) + ROM_LOAD("fb_7.216", 0x200000, 0x080000, CRC(874d7b59) SHA1(0236753636c9a818780b23f5f506697b9f6d93c7) ) +ROM_END + +ROM_START( batlballu ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("sen1.bin", 0x100000, 0x40000, CRC(13849bf0) SHA1(ffa829a8b8a05a8fbaf883a30759f2ad8071a85b) ) + ROM_LOAD32_BYTE("sen2.bin", 0x100001, 0x40000, CRC(2ae5f7e2) SHA1(cef9ddea8b1d21f20a48c2523c9420c1800720c8) ) + ROM_LOAD32_BYTE("sen3.bin", 0x100002, 0x40000, CRC(98e6f19f) SHA1(433f8463e63bba32730d3c098354f8c95257df3f) ) + ROM_LOAD32_BYTE("sen4.bin", 0x100003, 0x40000, CRC(1343ec56) SHA1(8ecc8d7b425ff6512ffa969a7f26423fa50ad258) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) ) + ROM_LOAD24_BYTE("fb_5.48", 0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) ) + + ROM_REGION( 0x300000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("fb_bg-1d.415", 0x000000, 0x200000, CRC(eae7a1fc) SHA1(26d8a9f4e554848977ec1f6a8aad8751b558a8d4) ) + ROM_LOAD24_BYTE("fb_bg-1p.410", 0x000002, 0x100000, CRC(b46e774e) SHA1(00b6c1d0b0ea37f4354acab543b270c0bf45896d) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("fb_obj-1.322", 0x000000, 0x400000, CRC(29f86f68) SHA1(1afe809ce00a25f8b27543e4188edc3e3e604951) ) + ROM_LOAD("fb_obj-2.324", 0x400000, 0x400000, CRC(c9e3130b) SHA1(12b5d5363142e8efb3b7fc44289c0afffa5011c6) ) + ROM_LOAD("fb_obj-3.323", 0x800000, 0x400000, CRC(f6c3bc49) SHA1(d0eb9c6aa3954d94e3a442a48e0fe6cc279f5513) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("fb_pcm-1.215", 0x000000, 0x080000, CRC(1d83891c) SHA1(09502437562275c14c0f3a0e62b19e91bedb4693) ) + ROM_CONTINUE(0x100000,0x080000) + ROM_LOAD("fb_7.216", 0x200000, 0x080000, CRC(874d7b59) SHA1(0236753636c9a818780b23f5f506697b9f6d93c7) ) +ROM_END + +ROM_START( ejanhs ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("ejan3_1.211", 0x100000, 0x40000, CRC(e626d3d2) SHA1(d23cb5e218a85e09de98fa966afbfd43090b396e) ) + ROM_LOAD32_BYTE("ejan3_2.212", 0x100001, 0x40000, CRC(83c39da2) SHA1(9526ffb5d5becccf0aa2e338ab4a3c873d575e6f) ) + ROM_LOAD32_BYTE("ejan3_3.210", 0x100002, 0x40000, CRC(46897b7d) SHA1(a22e0467c016e72bf99df2c1e6ecc792b2151b15) ) + ROM_LOAD32_BYTE("ejan3_4.29", 0x100003, 0x40000, CRC(b3187a2b) SHA1(7fc11ed5ceb2e45f784e75307fef8b850a981a2e) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("ejan3_6.413", 0x000000, 0x20000, CRC(837e012c) SHA1(815452083b65885d6e66dfc058ceec81bb3e6678) ) + ROM_LOAD24_BYTE("ejan3_5.48", 0x000002, 0x10000, CRC(d62db7bf) SHA1(c88f1bb6106c59179b914962ed8cdd4095fd9ce8) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("ej3_bg1d.415", 0x000000, 0x200000, CRC(bcacabe0) SHA1(b73581cf923196326b5b0b99e6aedb915bab0880) ) + ROM_LOAD24_BYTE("ej3_bg1p.410", 0x000002, 0x100000, CRC(1fd0eb5e) SHA1(ca64c8020b246128232f4f6c0a0a2dd9cd3efeae) ) + ROM_LOAD24_WORD("ej3_bg2d.416", 0x300000, 0x100000, CRC(ea2acd69) SHA1(b796e9e4b7342bf452f5ffdbce32cfefc603ba0f) ) + ROM_LOAD24_BYTE("ej3_bg2p.49", 0x300002, 0x080000, CRC(a4a9cb0f) SHA1(da177d13bb95bf6b987d3ca13bcdc86570807b2c) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("ej3_obj1.322", 0x000000, 0x400000, CRC(852f180e) SHA1(d4845dace45c05a68f3b38ccb301c5bf5dce4174) ) + ROM_LOAD("ej3_obj2.324", 0x400000, 0x400000, CRC(1116ad08) SHA1(d5c81383b3f9ede7dd03e6be35487b40740b1f8f) ) + ROM_LOAD("ej3_obj3.323", 0x800000, 0x400000, CRC(ccfe02b6) SHA1(368bc8efe9d6677ba3d0cfc0f450a4bda32988be) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("ej3_pcm1.215", 0x000000, 0x080000, CRC(a92a3a82) SHA1(b86c27c5a2831ddd2a1c2b071018a99afec14018) ) + ROM_CONTINUE(0x100000,0x080000) + ROM_LOAD("ejan3_7.216", 0x200000, 0x080000, CRC(c6fc6bcf) SHA1(d4d8c06d295f8eacfa10c21dbab5858f936121f3) ) +ROM_END + + +ROM_START( viprp1 ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("seibu1.211", 0x000000, 0x80000, CRC(e5caf4ff) SHA1(7c87a4e8e8dacfb7cc0be8f778352bce2801e59b) ) + ROM_LOAD32_BYTE("seibu2.212", 0x000001, 0x80000, CRC(688a998e) SHA1(0c48374b6800cd00e3ee96c0fb12119a680b091d) ) + ROM_LOAD32_BYTE("seibu3.210", 0x000002, 0x80000, CRC(990fa76a) SHA1(7619a631d6f83b3677eb47f984aff684e9518d6d) ) + ROM_LOAD32_BYTE("seibu4.29", 0x000003, 0x80000, CRC(13e3e343) SHA1(aac0c7450059847f53b5081e4abf26303a50f999) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) ) + ROM_LOAD24_BYTE("seibu6.u048", 0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("v_bg-11.415", 0x000000, 0x200000, CRC(6fc96736) SHA1(12df47d8af2c1febc1bce5bcf3218766447885bd) ) + ROM_LOAD24_BYTE("v_bg-12.415", 0x000002, 0x100000, CRC(d3c7281c) SHA1(340bca1f31486609b3c34dd7830362a216ff648e) ) + ROM_LOAD24_WORD("v_bg-21.410", 0x300000, 0x100000, CRC(d65b4318) SHA1(6522970d95ffa7fa2f32e0b5b4f0eb69e0286b36) ) + ROM_LOAD24_BYTE("v_bg-22.416", 0x300002, 0x080000, CRC(24a0a23a) SHA1(0b0330717620e3f3274a25845d9edaf8023b9db2) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("v_obj-1.322", 0x000000, 0x400000, CRC(3be5b631) SHA1(fd1064428d28ca166a9267b968c0ba846cfed656) ) + ROM_LOAD("v_obj-2.324", 0x400000, 0x400000, CRC(924153b4) SHA1(db5dadcfb4cd5e6efe9d995085936ce4f4eb4254) ) + ROM_LOAD("v_obj-3.323", 0x800000, 0x400000, CRC(e9fb9062) SHA1(18e97b4c5cced2b529e6e72d8041c6f78fcec76e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("v_pcm.215", 0x000000, 0x080000, CRC(e3111b60) SHA1(f7a7747f29c392876e43efcb4e6c0741454082f2) ) + ROM_CONTINUE(0x100000,0x80000) /* stops reading around 00ee8a6, rom is empty at this point, countdown continues anyway */ +ROM_END + +ROM_START( viprp1u ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("seibu1.u0211", 0x000000, 0x80000, CRC(3f412b80) SHA1(ccffce101d20971278c0f6c5f4efcf3ab687aba6) ) /* New version, "=U.S.A=" seems part of title */ + ROM_LOAD32_BYTE("seibu2.u0212", 0x000001, 0x80000, CRC(2e6c2376) SHA1(b6e660dc7c89cf565c6e055683e84ffcf8179709) ) + ROM_LOAD32_BYTE("seibu3.u0210", 0x000002, 0x80000, CRC(c38f7b4e) SHA1(d5bf2c7f2f6c812c65005facfd40ac6d3b61f29d) ) + ROM_LOAD32_BYTE("seibu4.u029", 0x000003, 0x80000, CRC(523cbef3) SHA1(5d15261b8fb108e0ba4dfd14d259984ef81ce877) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) ) + ROM_LOAD24_BYTE("seibu6.u048", 0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("v_bg-11.415", 0x000000, 0x200000, CRC(6fc96736) SHA1(12df47d8af2c1febc1bce5bcf3218766447885bd) ) + ROM_LOAD24_BYTE("v_bg-12.415", 0x000002, 0x100000, CRC(d3c7281c) SHA1(340bca1f31486609b3c34dd7830362a216ff648e) ) + ROM_LOAD24_WORD("v_bg-21.410", 0x300000, 0x100000, CRC(d65b4318) SHA1(6522970d95ffa7fa2f32e0b5b4f0eb69e0286b36) ) + ROM_LOAD24_BYTE("v_bg-22.416", 0x300002, 0x080000, CRC(24a0a23a) SHA1(0b0330717620e3f3274a25845d9edaf8023b9db2) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("v_obj-1.322", 0x000000, 0x400000, CRC(3be5b631) SHA1(fd1064428d28ca166a9267b968c0ba846cfed656) ) + ROM_LOAD("v_obj-2.324", 0x400000, 0x400000, CRC(924153b4) SHA1(db5dadcfb4cd5e6efe9d995085936ce4f4eb4254) ) + ROM_LOAD("v_obj-3.323", 0x800000, 0x400000, CRC(e9fb9062) SHA1(18e97b4c5cced2b529e6e72d8041c6f78fcec76e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("v_pcm.215", 0x000000, 0x080000, CRC(e3111b60) SHA1(f7a7747f29c392876e43efcb4e6c0741454082f2) ) + ROM_CONTINUE(0x100000,0x80000) /* stops reading around 00ee8a6, rom is empty at this point, countdown continues anyway */ +ROM_END + +ROM_START( viprp1j ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("v_1-n.211", 0x000000, 0x80000, CRC(55f10b72) SHA1(2a1ebaa969f346bf3659ed8b0f469dce9eaf3b4b) ) + ROM_LOAD32_BYTE("v_2-n.212", 0x000001, 0x80000, CRC(0f888283) SHA1(7e5ac81279b9c7a06f07cb8ae76938cdd5c9beee) ) + ROM_LOAD32_BYTE("v_3-n.210", 0x000002, 0x80000, CRC(842434ac) SHA1(982d219c1d329122789c552208db2f4aaa4af7e4) ) + ROM_LOAD32_BYTE("v_4-n.29", 0x000003, 0x80000, CRC(a3948824) SHA1(fe076951427126c8b7fe81be84ecf0699597225b) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) ) + ROM_LOAD24_BYTE("seibu6.u048", 0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("v_bg-11.415", 0x000000, 0x200000, CRC(6fc96736) SHA1(12df47d8af2c1febc1bce5bcf3218766447885bd) ) + ROM_LOAD24_BYTE("v_bg-12.415", 0x000002, 0x100000, CRC(d3c7281c) SHA1(340bca1f31486609b3c34dd7830362a216ff648e) ) + ROM_LOAD24_WORD("v_bg-21.410", 0x300000, 0x100000, CRC(d65b4318) SHA1(6522970d95ffa7fa2f32e0b5b4f0eb69e0286b36) ) + ROM_LOAD24_BYTE("v_bg-22.416", 0x300002, 0x080000, CRC(24a0a23a) SHA1(0b0330717620e3f3274a25845d9edaf8023b9db2) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("v_obj-1.322", 0x000000, 0x400000, CRC(3be5b631) SHA1(fd1064428d28ca166a9267b968c0ba846cfed656) ) + ROM_LOAD("v_obj-2.324", 0x400000, 0x400000, CRC(924153b4) SHA1(db5dadcfb4cd5e6efe9d995085936ce4f4eb4254) ) + ROM_LOAD("v_obj-3.323", 0x800000, 0x400000, CRC(e9fb9062) SHA1(18e97b4c5cced2b529e6e72d8041c6f78fcec76e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("v_pcm.215", 0x000000, 0x080000, CRC(e3111b60) SHA1(f7a7747f29c392876e43efcb4e6c0741454082f2) ) + ROM_CONTINUE(0x100000,0x80000) /* stops reading around 00ee8a6, rom is empty at this point, countdown continues anyway */ +ROM_END + +ROM_START( viprp1s ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("viper_prg0.bin", 0x000000, 0x80000, CRC(ed9980b8) SHA1(bc324e9121ee1e55237bd91681f163ec7790de4c) ) + ROM_LOAD32_BYTE("viper_prg1.bin", 0x000001, 0x80000, CRC(9d4d3486) SHA1(ded6fa32b973046e50c40c40c446590b5f6d0b76) ) + ROM_LOAD32_BYTE("viper_prg2.bin", 0x000002, 0x80000, CRC(d7ea460b) SHA1(aed10adacd073f7d2b35f12ba4b7876e5c99d142) ) + ROM_LOAD32_BYTE("viper_prg3.bin", 0x000003, 0x80000, CRC(ca6df094) SHA1(921eec141ce2d449047172fa9cdf39d459b5cc7b) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) ) + ROM_LOAD24_BYTE("seibu6.u048", 0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("v_bg-11.415", 0x000000, 0x200000, CRC(6fc96736) SHA1(12df47d8af2c1febc1bce5bcf3218766447885bd) ) + ROM_LOAD24_BYTE("v_bg-12.415", 0x000002, 0x100000, CRC(d3c7281c) SHA1(340bca1f31486609b3c34dd7830362a216ff648e) ) + ROM_LOAD24_WORD("v_bg-21.410", 0x300000, 0x100000, CRC(d65b4318) SHA1(6522970d95ffa7fa2f32e0b5b4f0eb69e0286b36) ) + ROM_LOAD24_BYTE("v_bg-22.416", 0x300002, 0x080000, CRC(24a0a23a) SHA1(0b0330717620e3f3274a25845d9edaf8023b9db2) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("v_obj-1.322", 0x000000, 0x400000, CRC(3be5b631) SHA1(fd1064428d28ca166a9267b968c0ba846cfed656) ) + ROM_LOAD("v_obj-2.324", 0x400000, 0x400000, CRC(924153b4) SHA1(db5dadcfb4cd5e6efe9d995085936ce4f4eb4254) ) + ROM_LOAD("v_obj-3.323", 0x800000, 0x400000, CRC(e9fb9062) SHA1(18e97b4c5cced2b529e6e72d8041c6f78fcec76e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("v_pcm.215", 0x000000, 0x080000, CRC(e3111b60) SHA1(f7a7747f29c392876e43efcb4e6c0741454082f2) ) + ROM_CONTINUE(0x100000,0x80000) +ROM_END + +ROM_START( viprp1hk ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("seibu_1", 0x000000, 0x80000, CRC(283ba7b7) SHA1(28122e04b72f1163c69f3f845f6a493fdb6ed652) ) /* Old Version, "=HONG KONG=" seems part of title */ + ROM_LOAD32_BYTE("seibu_2", 0x000001, 0x80000, CRC(2c4db249) SHA1(a6372c9a3cde5f262ec5ef446945f6d3ad506e88) ) + ROM_LOAD32_BYTE("seibu_3", 0x000002, 0x80000, CRC(91989503) SHA1(8c215fac200cc693396dbd57e0939e7efe883342) ) + ROM_LOAD32_BYTE("seibu_4", 0x000003, 0x80000, CRC(12c9582d) SHA1(a79e26514e5ab8703a7a8c3ac39b359cfa4117c1) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("seibu_5", 0x000000, 0x20000, CRC(80920fed) SHA1(b35ed080925f6d0a0b6d2d1ab4fa919f625b1e6a) ) /* Different from both "new" & "old" versions */ + ROM_LOAD24_BYTE("seibu_6", 0x000002, 0x10000, CRC(e71a8722) SHA1(3e0133fe1f85058ca6d9ac59d731f342c6b50e92) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("v_bg-11.415", 0x000000, 0x200000, CRC(6fc96736) SHA1(12df47d8af2c1febc1bce5bcf3218766447885bd) ) + ROM_LOAD24_BYTE("v_bg-12.415", 0x000002, 0x100000, CRC(d3c7281c) SHA1(340bca1f31486609b3c34dd7830362a216ff648e) ) + ROM_LOAD24_WORD("v_bg-21.410", 0x300000, 0x100000, CRC(d65b4318) SHA1(6522970d95ffa7fa2f32e0b5b4f0eb69e0286b36) ) + ROM_LOAD24_BYTE("v_bg-22.416", 0x300002, 0x080000, CRC(24a0a23a) SHA1(0b0330717620e3f3274a25845d9edaf8023b9db2) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("v_obj-1.322", 0x000000, 0x400000, CRC(3be5b631) SHA1(fd1064428d28ca166a9267b968c0ba846cfed656) ) + ROM_LOAD("v_obj-2.324", 0x400000, 0x400000, CRC(924153b4) SHA1(db5dadcfb4cd5e6efe9d995085936ce4f4eb4254) ) + ROM_LOAD("v_obj-3.323", 0x800000, 0x400000, CRC(e9fb9062) SHA1(18e97b4c5cced2b529e6e72d8041c6f78fcec76e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("v_pcm.215", 0x000000, 0x080000, CRC(e3111b60) SHA1(f7a7747f29c392876e43efcb4e6c0741454082f2) ) + ROM_CONTINUE(0x100000,0x80000) +ROM_END + +ROM_START( viprp1oj ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("v_1-o.211", 0x000000, 0x80000, CRC(4430be64) SHA1(96501a490042c289060d8510f6f79fbf64f79c1a) ) + ROM_LOAD32_BYTE("v_2-o.212", 0x000001, 0x80000, CRC(ffbd88f7) SHA1(cd7f291117dd18bd80fb1130eb87936ff7517ee3) ) + ROM_LOAD32_BYTE("v_3-o.210", 0x000002, 0x80000, CRC(6146db39) SHA1(04e68bfff320a3ffcb47686fa012a038538adc1a) ) + ROM_LOAD32_BYTE("v_4-o.29", 0x000003, 0x80000, CRC(dc8dd2b6) SHA1(20970706240c38c54084b4ae24b7ad23b31aa3de) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("v_5-o.413", 0x000000, 0x20000, CRC(6d863acc) SHA1(3e3e14f51b9394b24d7cbf562f1cfffc9ec2216d) ) + ROM_LOAD24_BYTE("v_6-o.48", 0x000002, 0x10000, CRC(fe7cb8f7) SHA1(55c7ab977c3666c8770deb62718d535673ffd4f8) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("v_bg-11.415", 0x000000, 0x200000, CRC(6fc96736) SHA1(12df47d8af2c1febc1bce5bcf3218766447885bd) ) + ROM_LOAD24_BYTE("v_bg-12.415", 0x000002, 0x100000, CRC(d3c7281c) SHA1(340bca1f31486609b3c34dd7830362a216ff648e) ) + ROM_LOAD24_WORD("v_bg-21.410", 0x300000, 0x100000, CRC(d65b4318) SHA1(6522970d95ffa7fa2f32e0b5b4f0eb69e0286b36) ) + ROM_LOAD24_BYTE("v_bg-22.416", 0x300002, 0x080000, CRC(24a0a23a) SHA1(0b0330717620e3f3274a25845d9edaf8023b9db2) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("v_obj-1.322", 0x000000, 0x400000, CRC(3be5b631) SHA1(fd1064428d28ca166a9267b968c0ba846cfed656) ) + ROM_LOAD("v_obj-2.324", 0x400000, 0x400000, CRC(924153b4) SHA1(db5dadcfb4cd5e6efe9d995085936ce4f4eb4254) ) + ROM_LOAD("v_obj-3.323", 0x800000, 0x400000, CRC(e9fb9062) SHA1(18e97b4c5cced2b529e6e72d8041c6f78fcec76e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("v_pcm.215", 0x000000, 0x080000, CRC(e3111b60) SHA1(f7a7747f29c392876e43efcb4e6c0741454082f2) ) + ROM_CONTINUE(0x100000,0x80000) +ROM_END + +ROM_START( viprp1ot ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("ov1.bin", 0x000000, 0x80000, CRC(cbad0e28) SHA1(fbc9b3b243ae0d556f41e8bef5f09489bb9e302b) ) + ROM_LOAD32_BYTE("ov2.bin", 0x000001, 0x80000, CRC(0e2bbcb5) SHA1(5e53d60357fb0f9efa441261fac79e153eb35f3d) ) + ROM_LOAD32_BYTE("ov3.bin", 0x000002, 0x80000, CRC(0e86686b) SHA1(0af207ea77ef378364d80d20ecbfba2f043f2405) ) + ROM_LOAD32_BYTE("ov4.bin", 0x000003, 0x80000, CRC(9d7dd325) SHA1(550a8b5ed60e7ac50c40ec3eaa2cd6462be4a619) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_WORD("v_5-o.413", 0x000000, 0x20000, CRC(6d863acc) SHA1(3e3e14f51b9394b24d7cbf562f1cfffc9ec2216d) ) + ROM_LOAD24_BYTE("v_6-o.48", 0x000002, 0x10000, CRC(fe7cb8f7) SHA1(55c7ab977c3666c8770deb62718d535673ffd4f8) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("v_bg-11.415", 0x000000, 0x200000, CRC(6fc96736) SHA1(12df47d8af2c1febc1bce5bcf3218766447885bd) ) + ROM_LOAD24_BYTE("v_bg-12.415", 0x000002, 0x100000, CRC(d3c7281c) SHA1(340bca1f31486609b3c34dd7830362a216ff648e) ) + ROM_LOAD24_WORD("v_bg-21.410", 0x300000, 0x100000, CRC(d65b4318) SHA1(6522970d95ffa7fa2f32e0b5b4f0eb69e0286b36) ) + ROM_LOAD24_BYTE("v_bg-22.416", 0x300002, 0x080000, CRC(24a0a23a) SHA1(0b0330717620e3f3274a25845d9edaf8023b9db2) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("v_obj-1.322", 0x000000, 0x400000, CRC(3be5b631) SHA1(fd1064428d28ca166a9267b968c0ba846cfed656) ) + ROM_LOAD("v_obj-2.324", 0x400000, 0x400000, CRC(924153b4) SHA1(db5dadcfb4cd5e6efe9d995085936ce4f4eb4254) ) + ROM_LOAD("v_obj-3.323", 0x800000, 0x400000, CRC(e9fb9062) SHA1(18e97b4c5cced2b529e6e72d8041c6f78fcec76e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("v_pcm.215", 0x000000, 0x080000, CRC(e3111b60) SHA1(f7a7747f29c392876e43efcb4e6c0741454082f2) ) + ROM_CONTINUE(0x100000,0x80000) +ROM_END + + +ROM_START( rdft ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("gd_1.211", 0x000000, 0x80000, CRC(f6b2cbdc) SHA1(040c4ff961c8be388c8279b06b777d528c2acc1b) ) + ROM_LOAD32_BYTE("gd_2.212", 0x000001, 0x80000, CRC(1982f812) SHA1(4f12fc3fd7f7a4beda4d29cc81e3a58d255e441f) ) + ROM_LOAD32_BYTE("gd_3.210", 0x000002, 0x80000, CRC(b0f59f44) SHA1(d44fe074ddab35cd0190535cd9fbd7f9e49312a4) ) + ROM_LOAD32_BYTE("gd_4.29", 0x000003, 0x80000, CRC(cd8705bd) SHA1(b19a1486d6b899a134d7b518863ddc8f07967e8b) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ + ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) ) + ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) ) + ROM_LOAD24_BYTE("gd_7.48", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("gd_bg1-d.415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) + ROM_LOAD24_BYTE("gd_bg1-p.410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) + ROM_LOAD24_WORD("gd_bg2-d.416", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) + ROM_LOAD24_BYTE("gd_bg2-p.49", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("gd_obj-1.322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) + ROM_LOAD("gd_obj-2.324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) + ROM_LOAD("gd_obj-3.323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("gd_pcm.217", 0x000000, 0x200000, CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_LOAD("gd_8.216", 0x200000, 0x080000, CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) +ROM_END + +ROM_START( rdftu ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("rdftu_gd_1.211", 0x000000, 0x80000, CRC(47810c48) SHA1(8dc8848d3e7467ea887c50fd5675fba2cc741121) ) + ROM_LOAD32_BYTE("rdftu_gd_2.212", 0x000001, 0x80000, CRC(13911750) SHA1(8899accb059ed84170924750bb39ae7383ebd959) ) + ROM_LOAD32_BYTE("rdftu_gd_3.210", 0x000002, 0x80000, CRC(10761b03) SHA1(e67db2e7c2176987419158fc4cee00fd9b99d03f) ) + ROM_LOAD32_BYTE("rdftu_gd_4.29", 0x000003, 0x80000, CRC(e5a3f01d) SHA1(5ca338f85a020d43d2618f88e798a076d13a5c7f) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ + ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) ) + ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) ) + ROM_LOAD24_BYTE("gd_7.48", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("gd_bg1-d.415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) + ROM_LOAD24_BYTE("gd_bg1-p.410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) + ROM_LOAD24_WORD("gd_bg2-d.416", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) + ROM_LOAD24_BYTE("gd_bg2-p.49", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("gd_obj-1.322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) + ROM_LOAD("gd_obj-2.324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) + ROM_LOAD("gd_obj-3.323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("gd_pcm.217", 0x000000, 0x200000, CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_LOAD("gd_8.216", 0x200000, 0x080000, CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) +ROM_END + + +ROM_START( rdftj ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("rf1.bin", 0x000000, 0x80000, CRC(46861b75) SHA1(079c589c490d49f7ec97a7e68c5b6e7e37872827) ) + ROM_LOAD32_BYTE("rf2.bin", 0x000001, 0x80000, CRC(6388ed11) SHA1(aebbccfb0f704cdceb45ea71216275dd83880e15) ) + ROM_LOAD32_BYTE("rf3.bin", 0x000002, 0x80000, CRC(beafcd24) SHA1(2dbc47ecef6f898a371a841df2c72151da9c5a8d) ) + ROM_LOAD32_BYTE("rf4.bin", 0x000003, 0x80000, CRC(5236f45f) SHA1(8b05d977d3d07796007a00a52d2396475dc2f7dc) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ + ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) ) + ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) ) + ROM_LOAD24_BYTE("gd_7.48", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("gd_bg1-d.415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) + ROM_LOAD24_BYTE("gd_bg1-p.410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) + ROM_LOAD24_WORD("gd_bg2-d.416", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) + ROM_LOAD24_BYTE("gd_bg2-p.49", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("gd_obj-1.322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) + ROM_LOAD("gd_obj-2.324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) + ROM_LOAD("gd_obj-3.323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("gd_pcm.217", 0x000000, 0x200000, CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_LOAD("gd_8.216", 0x200000, 0x080000, CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) +ROM_END + +ROM_START( rdftau ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("1.u0211", 0x000000, 0x80000, CRC(6339c60d) SHA1(871d5bc9fc695651ceb6fcfdab32084320fe239d) ) + ROM_LOAD32_BYTE("2.u0212", 0x000001, 0x80000, CRC(a88bda02) SHA1(27dc720d28f56cf443a4eb0bbaaf4bf3b194056d) ) + ROM_LOAD32_BYTE("3.u0210", 0x000002, 0x80000, CRC(a73e337e) SHA1(93323875c676f38eca3298fcf4a34911db2d78a8) ) + ROM_LOAD32_BYTE("4.u029", 0x000003, 0x80000, CRC(8cc628f0) SHA1(7534eae8a1ea461adad483002b3cecf132e0e325) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ + ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) ) + ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) ) + ROM_LOAD24_BYTE("gd_7.48", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("gd_bg1-d.415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) + ROM_LOAD24_BYTE("gd_bg1-p.410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) + ROM_LOAD24_WORD("gd_bg2-d.416", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) + ROM_LOAD24_BYTE("gd_bg2-p.49", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("gd_obj-1.322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) + ROM_LOAD("gd_obj-2.324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) + ROM_LOAD("gd_obj-3.323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("gd_pcm.217", 0x000000, 0x200000, CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_LOAD("gd_8.216", 0x200000, 0x080000, CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) +ROM_END + +ROM_START( rdftit ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("seibu1", 0x000000, 0x80000, CRC(de0c3e3c) SHA1(b00225bad282e46b5825608f76eea6670bfe5527) ) + ROM_LOAD32_BYTE("u212.bin", 0x000001, 0x80000, CRC(58ccb10c) SHA1(0cce4057bfada78121d9586574b98d46cdd7dd46) ) + ROM_LOAD32_BYTE("u210.bin", 0x000002, 0x80000, CRC(47fc3c96) SHA1(7378f8caa847f89f235b5be6779118721076873b) ) + ROM_LOAD32_BYTE("u29.bin", 0x000003, 0x80000, CRC(271bdd4b) SHA1(0a805568cbd6a9c18bdb755a41972ff6bba9e6eb) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ + ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) ) + ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) ) + ROM_LOAD24_BYTE("gd_7.48", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("gd_bg1-d.415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) + ROM_LOAD24_BYTE("gd_bg1-p.410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) + ROM_LOAD24_WORD("gd_bg2-d.416", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) + ROM_LOAD24_BYTE("gd_bg2-p.49", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("gd_obj-1.322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) + ROM_LOAD("gd_obj-2.324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) + ROM_LOAD("gd_obj-3.323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("gd_pcm.217", 0x000000, 0x200000, CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_LOAD("gd_8.216", 0x200000, 0x080000, CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) +ROM_END + +ROM_START( rdfta ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("seibu1a", 0x000000, 0x80000, CRC(c3bb2e58) SHA1(399ac4b387ba38f5fdad5c4172b2d3baeafd8773) ) + ROM_LOAD32_BYTE("u212.bin", 0x000001, 0x80000, CRC(58ccb10c) SHA1(0cce4057bfada78121d9586574b98d46cdd7dd46) ) + ROM_LOAD32_BYTE("u210.bin", 0x000002, 0x80000, CRC(47fc3c96) SHA1(7378f8caa847f89f235b5be6779118721076873b) ) + ROM_LOAD32_BYTE("u29.bin", 0x000003, 0x80000, CRC(271bdd4b) SHA1(0a805568cbd6a9c18bdb755a41972ff6bba9e6eb) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ + ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) ) + ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) ) + ROM_LOAD24_BYTE("gd_7.48", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("gd_bg1-d.415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) + ROM_LOAD24_BYTE("gd_bg1-p.410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) + ROM_LOAD24_WORD("gd_bg2-d.416", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) + ROM_LOAD24_BYTE("gd_bg2-p.49", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("gd_obj-1.322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) + ROM_LOAD("gd_obj-2.324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) + ROM_LOAD("gd_obj-3.323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("gd_pcm.217", 0x000000, 0x200000, CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_LOAD("gd_8.216", 0x200000, 0x080000, CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) +ROM_END + +ROM_START( rdftadi ) // Dream Island license + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("seibu__1.u0211", 0x000000, 0x080000, CRC(fc0e2885) SHA1(79621155d992d504e993bd3ee0d6ff3903bd5415) ) + ROM_LOAD32_BYTE("raiden-f_prg2.u0212", 0x000001, 0x080000, CRC(58ccb10c) SHA1(0cce4057bfada78121d9586574b98d46cdd7dd46) ) + ROM_LOAD32_WORD("raiden-f_prg34.u0219", 0x000002, 0x100000, CRC(63f01d17) SHA1(74dbd0417b974583da87fc6c7a081b03fd4e16b8) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ /* Do we need to specify an "endianess" so this works on all machines? */ + ROM_LOAD24_WORD_SWAP("raiden-f__fix.u0425", 0x000000, 0x20000, BAD_DUMP CRC(cc7acfde) SHA1(1f3c40b4d2009e011e135c89aebf2b4bd05fa861) ) // Need to verify ROM + ROM_LOAD24_BYTE("seibu__7.u048", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) // socket is silkscreened on pcb FIXP + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("gun_dogs__bg1-d.u0415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) // pads are silkscreened on pcb BG12 + ROM_LOAD24_BYTE("gun_dogs__bg1-p.u0410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) // pads are silkscreened on pcb BG12P + ROM_LOAD24_WORD("gun_dogs__bg2-d.u0424", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) // pads are silkscreened on pcb BG3 + ROM_LOAD24_BYTE("gun_dogs__bg2-p.u049", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) // pads are silkscreened on pcb BG3P + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("gun_dogs__obj-1.u0322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) // pads are silkscreened on pcb OBJ1 + ROM_LOAD("gun_dogs__obj-2.u0324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) // pads are silkscreened on pcb OBJ2 + ROM_LOAD("gun_dogs__obj-3.u0323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) // pads are silkscreened on pcb OBJ3 + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x400000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("raiden-f__pcm2.u0217", 0x000000, 0x400000, NO_DUMP )//the real rom used here is actually a 0x400000 long rom located at u0217 which contains the combined data of the two smaller roms on the older cart pcb at 217 and 216; pads are silkscreened SOUND0 + //u0222 (unpopulated) is silkscreend SOUND1 and would expect a 27040 similar to the old gd_8 rom. + ROM_LOAD("gun_dogs__pcm.217", 0x000000, 0x200000, BAD_DUMP CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_LOAD("gd_8.216", 0x200000, 0x080000, BAD_DUMP CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) +ROM_END + +ROM_START( rdftam ) // Metrotainment license + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("seibu_1.u0211", 0x000000, 0x080000, CRC(156D8DB0) SHA1(93662B3EE494E37A56428A7AA3DAD7A957835950) ) // socket is silkscreened on pcb PRG0 + ROM_LOAD32_BYTE("raiden-f_prg2.u0212", 0x000001, 0x080000, CRC(58ccb10c) SHA1(0cce4057bfada78121d9586574b98d46cdd7dd46) ) + ROM_LOAD32_WORD("raiden-f_prg34.u0219", 0x000002, 0x100000, CRC(63f01d17) SHA1(74dbd0417b974583da87fc6c7a081b03fd4e16b8) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ /* Do we need to specify an "endianess" so this works on all machines? */ + ROM_LOAD24_WORD_SWAP("raiden-f__fix.u0425", 0x000000, 0x20000, BAD_DUMP CRC(cc7acfde) SHA1(1f3c40b4d2009e011e135c89aebf2b4bd05fa861) ) // Need to verify ROM + ROM_LOAD24_BYTE("seibu__7.u048", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) // socket is silkscreened on pcb FIXP + + ROM_REGION( 0x600000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("gun_dogs__bg1-d.u0415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) // pads are silkscreened on pcb BG12 + ROM_LOAD24_BYTE("gun_dogs__bg1-p.u0410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) // pads are silkscreened on pcb BG12P + ROM_LOAD24_WORD("gun_dogs__bg2-d.u0424", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) // pads are silkscreened on pcb BG3 + ROM_LOAD24_BYTE("gun_dogs__bg2-p.u049", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) // pads are silkscreened on pcb BG3P + + ROM_REGION( 0xc00000, "gfx3", 0) /* sprites */ + ROM_LOAD("gun_dogs__obj-1.u0322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) // pads are silkscreened on pcb OBJ1 + ROM_LOAD("gun_dogs__obj-2.u0324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) // pads are silkscreened on pcb OBJ2 + ROM_LOAD("gun_dogs__obj-3.u0323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) // pads are silkscreened on pcb OBJ3 + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x400000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("raiden-f__pcm2.u0217", 0x000000, 0x400000, NO_DUMP )//the real rom used here is actually a 0x400000 long rom located at u0217 which contains the combined data of the two smaller roms on the older cart pcb at 217 and 216; pads are silkscreened SOUND0 + //u0222 (unpopulated) is silkscreend SOUND1 and would expect a 27040 similar to the old gd_8 rom. + ROM_LOAD("gun_dogs__pcm.217", 0x000000, 0x200000, BAD_DUMP CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_LOAD("gd_8.216", 0x200000, 0x080000, BAD_DUMP CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) +ROM_END + + +ROM_START( rdft2us ) /* Single board version SXX2F */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0.u0259", 0x000000, 0x80000, CRC(ff3eeec1) SHA1(88c1741e4936db9a5b13e562061b0f1cc6fa6b36) ) + ROM_LOAD32_BYTE("prg1.u0258", 0x000001, 0x80000, CRC(e2cf77d6) SHA1(173cc0e304c9dadea4ed0812ebb64c6c83549912) ) + ROM_LOAD32_BYTE("prg2.u0265", 0x000002, 0x80000, CRC(cae87e1f) SHA1(e460aad693eb2702ae11f758b11d37f852d00790) ) + ROM_LOAD32_BYTE("prg3.u0264", 0x000003, 0x80000, CRC(83f4fb5f) SHA1(73f58daa1aae0c4978db409cedd736fb49b15f1c) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) ) + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) ) + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(99a5fece) SHA1(44ae95d650ed6e00202d3438f5f91a5e52e319cb) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) + ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj3.u075", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) + ROM_LOAD("obj3b.u078", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) + ROM_LOAD("obj2.u074", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) + ROM_LOAD("obj2b.u077", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) + ROM_LOAD("obj1.u073", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) + ROM_LOAD("obj1b.u076", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) + + ROM_REGION(0x40000, "soundcpu", 0) /* 256k for the Z80 */ + ROM_LOAD("zprg.u091", 0x000000, 0x20000, CRC(cc543c4f) SHA1(6e5c93fd3d21c594571b071d4a830211e1f162b2) ) + + ROM_REGION(0x280000, "ymf", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm.u0103", 0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) ) + ROM_LOAD("sound1.u0107", 0x200000, 0x080000, CRC(20384b0e) SHA1(9c5d725418543df740f9145974ed6ffbbabee1d0) ) /* Different sound1 then SPI carts */ +ROM_END + +ROM_START( rdft2 ) /* SPI Cart, Europe */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0.tun", 0x000000, 0x80000, CRC(3cb3fdca) SHA1(4b472dfd65c7bbbcb92a295aa73b0fa70581455b) ) + ROM_LOAD32_BYTE("prg1.bin", 0x000001, 0x80000, CRC(cab55d88) SHA1(246e13880d34b6c7c3f4ab5e18fa8a0547c03d9d) ) + ROM_LOAD32_BYTE("prg2.bin", 0x000002, 0x80000, CRC(83758b0e) SHA1(63adb2d09e7bd7dba47a55b3b579d543dfb553e3) ) + ROM_LOAD32_BYTE("prg3.bin", 0x000003, 0x80000, CRC(084fb5e4) SHA1(588bfe091662b88f02f528181a2f1d9c67c7b280) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) ) + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) ) + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(99a5fece) SHA1(44ae95d650ed6e00202d3438f5f91a5e52e319cb) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) + ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) + ROM_LOAD("obj3b.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) + ROM_LOAD("obj2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) + ROM_LOAD("obj2b.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) + ROM_LOAD("obj1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) + ROM_LOAD("obj1b.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm.u0217", 0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) ) +ROM_END + +ROM_START( rdft2u ) /* SPI Cart, USA */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("1.bin", 0x000000, 0x80000, CRC(b7d6c866) SHA1(eefe63dfc641c3904dd150a10ffeb68137068725) ) + ROM_LOAD32_BYTE("2.bin", 0x000001, 0x80000, CRC(ff7747c5) SHA1(7481d0484001ff7367af56e8ea99f985cce405f2) ) + ROM_LOAD32_BYTE("3.bin", 0x000002, 0x80000, CRC(86e3d1a8) SHA1(2757cfda57c82dd0f66427caf54eb1f40e85740d) ) + ROM_LOAD32_BYTE("4.bin", 0x000003, 0x80000, CRC(2e409a76) SHA1(cf90aa14a07b5aa861f6f7cc9b1968171e532557) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) ) + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) ) + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(99a5fece) SHA1(44ae95d650ed6e00202d3438f5f91a5e52e319cb) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) + ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) + ROM_LOAD("obj3b.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) + ROM_LOAD("obj2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) + ROM_LOAD("obj2b.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) + ROM_LOAD("obj1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) + ROM_LOAD("obj1b.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm.u0217", 0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) ) +ROM_END + +ROM_START( rdft2j ) /* SPI Cart, Japan */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0.sei", 0x000000, 0x80000, CRC(a60c4e7c) SHA1(7789b029d0ac084c7e5e662a7168edaed8f11633) ) + ROM_LOAD32_BYTE("prg1.bin", 0x000001, 0x80000, CRC(cab55d88) SHA1(246e13880d34b6c7c3f4ab5e18fa8a0547c03d9d) ) + ROM_LOAD32_BYTE("prg2.bin", 0x000002, 0x80000, CRC(83758b0e) SHA1(63adb2d09e7bd7dba47a55b3b579d543dfb553e3) ) + ROM_LOAD32_BYTE("prg3.bin", 0x000003, 0x80000, CRC(084fb5e4) SHA1(588bfe091662b88f02f528181a2f1d9c67c7b280) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) ) + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) ) + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(99a5fece) SHA1(44ae95d650ed6e00202d3438f5f91a5e52e319cb) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) + ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) + ROM_LOAD("obj3b.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) + ROM_LOAD("obj2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) + ROM_LOAD("obj2b.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) + ROM_LOAD("obj1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) + ROM_LOAD("obj1b.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm.u0217", 0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) ) +ROM_END + +ROM_START( rdft2j2 ) /* SPI Cart, Japan */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("rf2.1", 0x000000, 0x80000, CRC(391d5057) SHA1(a1849142cbf7344ac1279781597e27b3b8ae6127) ) + ROM_LOAD32_BYTE("rf2_2.bin", 0x000001, 0x80000, CRC(ec73a767) SHA1(83f3905afe49401793c0ea0193cb31d3ba1e1739) ) + ROM_LOAD32_BYTE("rf2_3.bin", 0x000002, 0x80000, CRC(e66243b2) SHA1(54e67af37a4586fd1afc79085ed433d599e1bb87) ) + ROM_LOAD32_BYTE("rf2_4.bin", 0x000003, 0x80000, CRC(92b7b73e) SHA1(128649b2a6a0616113bd0f9846fb6cf814ae326d) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_BYTE("rf2_5.bin", 0x000001, 0x10000, CRC(377cac2f) SHA1(f7c9323d79b77f6c8c02ba2c6cdca127d6e5cb5c) ) + ROM_LOAD24_BYTE("rf2_6.bin", 0x000000, 0x10000, CRC(42bd5372) SHA1(c38df85b25070db9640eac541f71c0511bab0c98) ) + ROM_LOAD24_BYTE("rf2_7.bin", 0x000002, 0x10000, CRC(1efaac7e) SHA1(8252af56dcb7a6306dc3422070176778e3c511c2) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) + ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) + ROM_LOAD("obj3b.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) + ROM_LOAD("obj2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) + ROM_LOAD("obj2b.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) + ROM_LOAD("obj1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) + ROM_LOAD("obj1b.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm.u0217", 0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) ) +ROM_END + +ROM_START( rdft2a ) /* SPI Cart, Asia (Metrotainment license); SPI PCB is marked "(C)1997 SXX2C ROM SUB8" */ + // The SUB8 board is also capable of having two 23C8100 roms at U0223 and U0219 for PRG instead of the four roms below. + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program, all are 27C040 */ + ROM_LOAD32_BYTE("seibu__1.u0211", 0x000000, 0x80000, CRC(046b3f0e) SHA1(033898f658d6007f891828835734422d4af36321) ) // socket is silkscreened on pcb PRG1 + ROM_LOAD32_BYTE("seibu__2.u0212", 0x000001, 0x80000, CRC(cab55d88) SHA1(246e13880d34b6c7c3f4ab5e18fa8a0547c03d9d) ) // socket is silkscreened on pcb PRG2 + ROM_LOAD32_BYTE("seibu__3.u0221", 0x000002, 0x80000, CRC(83758b0e) SHA1(63adb2d09e7bd7dba47a55b3b579d543dfb553e3) ) // socket is silkscreened on pcb PRG3 + ROM_LOAD32_BYTE("seibu__4.u0220", 0x000003, 0x80000, CRC(084fb5e4) SHA1(588bfe091662b88f02f528181a2f1d9c67c7b280) ) // socket is silkscreened on pcb PRG4 + + ROM_REGION( 0x30000, "gfx1", 0) /* all are 27C512 */ + ROM_LOAD24_BYTE("seibu__5.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) ) // socket is silkscreened on pcb FIX0 + ROM_LOAD24_BYTE("seibu__6.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) ) // socket is silkscreened on pcb FIX1 + ROM_LOAD24_BYTE("seibu__7.u0514", 0x000002, 0x10000, CRC(99a5fece) SHA1(44ae95d650ed6e00202d3438f5f91a5e52e319cb) ) // socket is silkscreened on pcb FIXP + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms - half are MX semiconductor MX23C3210MC, half are some sort of 23C1610 equivalent with no visible manufacturer name */ + ROM_LOAD24_WORD("raiden-f2bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) // pads are silkscreened on pcb BG12 + ROM_LOAD24_BYTE("raiden-f2__bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) // pads are silkscreened on pcb BG12P + ROM_LOAD24_WORD("raiden-f2bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) // pads are silkscreened on pcb BG3 + ROM_LOAD24_BYTE("raiden-f2__bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) // pads are silkscreened on pcb BG3P + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites - all are paired MX semconductor MX23C3210TC and MX23C1610TC mask roms */ + ROM_LOAD("raiden-f2obj-3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) // pads are silkscreened on pcb OBJ3 + ROM_LOAD("raiden-f2obj-6.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) // pads are silkscreened on pcb OBJ3B + ROM_LOAD("raiden-f2obj-2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) // pads are silkscreened on pcb OBJ2 + ROM_LOAD("raiden-f2obj-5.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) // pads are silkscreened on pcb OBJ2B + ROM_LOAD("raiden-f2obj-1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) // pads are silkscreened on pcb OBJ1 + ROM_LOAD("raiden-f2obj-4.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) // pads are silkscreened on pcb OBJ1B + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms - sound0 is some sort of 23C1610 equivalent with no visible manufacturer name, sound1 is a 27C040 */ + ROM_LOAD("raiden-f2__pcm.u0217", 0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) ) // pads are silkscreened on pcb SOUND0 + ROM_LOAD("seibu__8.u0222", 0x200000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) ) // socket is silkscreened on pcb SOUND1 +ROM_END + +ROM_START( rdft2a2 ) /* SPI Cart, Asia (Dream Island license) */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("rf2_1.bin", 0x000000, 0x80000, CRC(72198410) SHA1(ca4bc858f6bf247a343b0fdae1d1a3cdabc4a3c3) ) + ROM_LOAD32_BYTE("rf2_2.bin", 0x000001, 0x80000, CRC(ec73a767) SHA1(83f3905afe49401793c0ea0193cb31d3ba1e1739) ) + ROM_LOAD32_BYTE("rf2_3.bin", 0x000002, 0x80000, CRC(e66243b2) SHA1(54e67af37a4586fd1afc79085ed433d599e1bb87) ) + ROM_LOAD32_BYTE("rf2_4.bin", 0x000003, 0x80000, CRC(92b7b73e) SHA1(128649b2a6a0616113bd0f9846fb6cf814ae326d) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_BYTE("rf2_5.bin", 0x000001, 0x10000, CRC(377cac2f) SHA1(f7c9323d79b77f6c8c02ba2c6cdca127d6e5cb5c) ) + ROM_LOAD24_BYTE("rf2_6.bin", 0x000000, 0x10000, CRC(42bd5372) SHA1(c38df85b25070db9640eac541f71c0511bab0c98) ) + ROM_LOAD24_BYTE("rf2_7.bin", 0x000002, 0x10000, CRC(1efaac7e) SHA1(8252af56dcb7a6306dc3422070176778e3c511c2) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) + ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) + ROM_LOAD("obj3b.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) + ROM_LOAD("obj2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) + ROM_LOAD("obj2b.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) + ROM_LOAD("obj1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) + ROM_LOAD("obj1b.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm.u0217", 0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) ) +ROM_END + +ROM_START( rdft2t ) /* SPI Cart, Asia */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0", 0x000000, 0x80000, CRC(7e8c3acc) SHA1(63f4f9f7df7fa028737d9f7dfae96795cde58541) ) + ROM_LOAD32_BYTE("prg1", 0x000001, 0x80000, CRC(22cb5b68) SHA1(35f86ad7771fe9aaac3904ed34a96d0cc10ef21c) ) + ROM_LOAD32_BYTE("prg2", 0x000002, 0x80000, CRC(3eca68dd) SHA1(98378654adf055d72ae685f90e36643c9d6419d7) ) + ROM_LOAD32_BYTE("prg3", 0x000003, 0x80000, CRC(4124daa4) SHA1(42f225c0328df59ffeacc215d37010f825bf507e) ) + + ROM_REGION( 0x30000, "gfx1", 0) + ROM_LOAD24_BYTE("rf2_5.bin", 0x000001, 0x10000, CRC(377cac2f) SHA1(f7c9323d79b77f6c8c02ba2c6cdca127d6e5cb5c) ) + ROM_LOAD24_BYTE("rf2_6.bin", 0x000000, 0x10000, CRC(42bd5372) SHA1(c38df85b25070db9640eac541f71c0511bab0c98) ) + ROM_LOAD24_BYTE("rf2_7.bin", 0x000002, 0x10000, CRC(1efaac7e) SHA1(8252af56dcb7a6306dc3422070176778e3c511c2) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) + ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) + ROM_LOAD("obj3b.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) + ROM_LOAD("obj2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) + ROM_LOAD("obj2b.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) + ROM_LOAD("obj1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) + ROM_LOAD("obj1b.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm.u0217", 0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) ) +ROM_END + +ROM_START( rfjet ) /* SPI Cart, Europe */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0.u0211", 0x000000, 0x80000, CRC(e5a3b304) SHA1(f7285f9c69c589fcc71082dc0b9225fdccec855f) ) + ROM_LOAD32_BYTE("prg1.u0212", 0x000001, 0x80000, CRC(395e6da7) SHA1(736f777cb1b6bf5541832b8ea89594738ca6d829) ) + ROM_LOAD32_BYTE("prg2.u0221", 0x000002, 0x80000, CRC(82f7a57e) SHA1(5300015e25d5f2f82eda3ed54bc105d645518498) ) + ROM_LOAD32_BYTE("prg3.u0220", 0x000003, 0x80000, CRC(cbdf100d) SHA1(c9efd11103429f7f36c1652cadb5384d925cb767) ) + + ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) ) + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) ) + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(015d0748) SHA1(b1e8eaeba63a7914f1dc27d7e3ca5d0b6db202ed) ) + + ROM_REGION( 0x900000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0543", 0x000000, 0x400000, CRC(edfd96da) SHA1(4813267f104619f569e5777e75b75304321abb49) ) + ROM_LOAD24_BYTE("bg-1p.u0544", 0x000002, 0x200000, CRC(a4cc4631) SHA1(cc1c4f4de8a078ca774f5a328a9a58291949b1fb) ) + ROM_LOAD24_WORD("bg-2d.u0545", 0x600000, 0x200000, CRC(731fbb59) SHA1(13cd29ec4d4c73582c5fb363218e737886826e5f) ) + ROM_LOAD24_BYTE("bg-2p.u0546", 0x600002, 0x100000, CRC(03652c25) SHA1(c0d77285111bc84e008362981ac02a246678ed0a) ) + + ROM_REGION( 0x1800000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj-1.u0442", 0x0000000, 0x800000, CRC(58a59896) SHA1(edeaaa69987bd5d08c47ed9bf47a3901e2dcc892) ) + ROM_LOAD("obj-2.u0443", 0x0800000, 0x800000, CRC(a121d1e3) SHA1(1851ae81f2ae9d3404aadd9fbc0ed7f9230290b9) ) + ROM_LOAD("obj-3.u0444", 0x1000000, 0x800000, CRC(bc2c0c63) SHA1(c8d395722f7012c3be366a0fc9b224c537afabae) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm-d.u0227", 0x000000, 0x200000, CRC(8ee3ff45) SHA1(2801b23495866c91c8f8bebd37d5fcae7a625838) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(d4fc3da1) SHA1(a03bd97e36a21d27a834b9691b27a7eb7ac51ff2) ) +ROM_END + +ROM_START( rfjetj ) /* SPI Cart, Japan */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0.bin", 0x000000, 0x80000, CRC(d82fb71f) SHA1(63a458fd007c353f4fae54a4882f5c565fe1efa4) ) + ROM_LOAD32_BYTE("prg1.bin", 0x000001, 0x80000, CRC(7e21c669) SHA1(731852e5925dccc9d0d1ae4bcafa238f157f4079) ) + ROM_LOAD32_BYTE("prg2.bin", 0x000002, 0x80000, CRC(2f402d55) SHA1(d0d852239abb6f4d73e263de5544fc0893e7a7ab) ) + ROM_LOAD32_BYTE("prg3.bin", 0x000003, 0x80000, CRC(d619e2ad) SHA1(9dbff1babf62c3c5478a84d2a82a428de5949154) ) + + ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) ) + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) ) + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(015d0748) SHA1(b1e8eaeba63a7914f1dc27d7e3ca5d0b6db202ed) ) + + ROM_REGION( 0x900000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0543", 0x000000, 0x400000, CRC(edfd96da) SHA1(4813267f104619f569e5777e75b75304321abb49) ) + ROM_LOAD24_BYTE("bg-1p.u0544", 0x000002, 0x200000, CRC(a4cc4631) SHA1(cc1c4f4de8a078ca774f5a328a9a58291949b1fb) ) + ROM_LOAD24_WORD("bg-2d.u0545", 0x600000, 0x200000, CRC(731fbb59) SHA1(13cd29ec4d4c73582c5fb363218e737886826e5f) ) + ROM_LOAD24_BYTE("bg-2p.u0546", 0x600002, 0x100000, CRC(03652c25) SHA1(c0d77285111bc84e008362981ac02a246678ed0a) ) + + ROM_REGION( 0x1800000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj-1.u0442", 0x0000000, 0x800000, CRC(58a59896) SHA1(edeaaa69987bd5d08c47ed9bf47a3901e2dcc892) ) + ROM_LOAD("obj-2.u0443", 0x0800000, 0x800000, CRC(a121d1e3) SHA1(1851ae81f2ae9d3404aadd9fbc0ed7f9230290b9) ) + ROM_LOAD("obj-3.u0444", 0x1000000, 0x800000, CRC(bc2c0c63) SHA1(c8d395722f7012c3be366a0fc9b224c537afabae) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm-d.u0227", 0x000000, 0x200000, CRC(8ee3ff45) SHA1(2801b23495866c91c8f8bebd37d5fcae7a625838) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(d4fc3da1) SHA1(a03bd97e36a21d27a834b9691b27a7eb7ac51ff2) ) +ROM_END + + +ROM_START( rfjetu ) /* SPI Cart, US */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0u.u0211", 0x000000, 0x80000, CRC(15ac2040) SHA1(7309a9dd9c91fef0e761dcf8639f421ce7abc97f) ) + ROM_LOAD32_BYTE("prg1.u0212", 0x000001, 0x80000, CRC(395e6da7) SHA1(736f777cb1b6bf5541832b8ea89594738ca6d829) ) + ROM_LOAD32_BYTE("prg2.u0221", 0x000002, 0x80000, CRC(82f7a57e) SHA1(5300015e25d5f2f82eda3ed54bc105d645518498) ) + ROM_LOAD32_BYTE("prg3.u0220", 0x000003, 0x80000, CRC(cbdf100d) SHA1(c9efd11103429f7f36c1652cadb5384d925cb767) ) + + ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) ) + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) ) + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(015d0748) SHA1(b1e8eaeba63a7914f1dc27d7e3ca5d0b6db202ed) ) + + ROM_REGION( 0x900000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0543", 0x000000, 0x400000, CRC(edfd96da) SHA1(4813267f104619f569e5777e75b75304321abb49) ) + ROM_LOAD24_BYTE("bg-1p.u0544", 0x000002, 0x200000, CRC(a4cc4631) SHA1(cc1c4f4de8a078ca774f5a328a9a58291949b1fb) ) + ROM_LOAD24_WORD("bg-2d.u0545", 0x600000, 0x200000, CRC(731fbb59) SHA1(13cd29ec4d4c73582c5fb363218e737886826e5f) ) + ROM_LOAD24_BYTE("bg-2p.u0546", 0x600002, 0x100000, CRC(03652c25) SHA1(c0d77285111bc84e008362981ac02a246678ed0a) ) + + ROM_REGION( 0x1800000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj-1.u0442", 0x0000000, 0x800000, CRC(58a59896) SHA1(edeaaa69987bd5d08c47ed9bf47a3901e2dcc892) ) + ROM_LOAD("obj-2.u0443", 0x0800000, 0x800000, CRC(a121d1e3) SHA1(1851ae81f2ae9d3404aadd9fbc0ed7f9230290b9) ) + ROM_LOAD("obj-3.u0444", 0x1000000, 0x800000, CRC(bc2c0c63) SHA1(c8d395722f7012c3be366a0fc9b224c537afabae) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm-d.u0227", 0x000000, 0x200000, CRC(8ee3ff45) SHA1(2801b23495866c91c8f8bebd37d5fcae7a625838) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(d4fc3da1) SHA1(a03bd97e36a21d27a834b9691b27a7eb7ac51ff2) ) +ROM_END + +ROM_START( rfjeta ) /* SPI Cart, Asia */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0a.u0211", 0x000000, 0x80000, CRC(3418d4f5) SHA1(f8766d7b3708a196de417ee757787220b2a9ced1) ) + ROM_LOAD32_BYTE("prg1.u0212", 0x000001, 0x80000, CRC(395e6da7) SHA1(736f777cb1b6bf5541832b8ea89594738ca6d829) ) + ROM_LOAD32_BYTE("prg2.u0221", 0x000002, 0x80000, CRC(82f7a57e) SHA1(5300015e25d5f2f82eda3ed54bc105d645518498) ) + ROM_LOAD32_BYTE("prg3.u0220", 0x000003, 0x80000, CRC(cbdf100d) SHA1(c9efd11103429f7f36c1652cadb5384d925cb767) ) + + ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) ) + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) ) + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(015d0748) SHA1(b1e8eaeba63a7914f1dc27d7e3ca5d0b6db202ed) ) + + ROM_REGION( 0x900000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0543", 0x000000, 0x400000, CRC(edfd96da) SHA1(4813267f104619f569e5777e75b75304321abb49) ) + ROM_LOAD24_BYTE("bg-1p.u0544", 0x000002, 0x200000, CRC(a4cc4631) SHA1(cc1c4f4de8a078ca774f5a328a9a58291949b1fb) ) + ROM_LOAD24_WORD("bg-2d.u0545", 0x600000, 0x200000, CRC(731fbb59) SHA1(13cd29ec4d4c73582c5fb363218e737886826e5f) ) + ROM_LOAD24_BYTE("bg-2p.u0546", 0x600002, 0x100000, CRC(03652c25) SHA1(c0d77285111bc84e008362981ac02a246678ed0a) ) + + ROM_REGION( 0x1800000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj-1.u0442", 0x0000000, 0x800000, CRC(58a59896) SHA1(edeaaa69987bd5d08c47ed9bf47a3901e2dcc892) ) + ROM_LOAD("obj-2.u0443", 0x0800000, 0x800000, CRC(a121d1e3) SHA1(1851ae81f2ae9d3404aadd9fbc0ed7f9230290b9) ) + ROM_LOAD("obj-3.u0444", 0x1000000, 0x800000, CRC(bc2c0c63) SHA1(c8d395722f7012c3be366a0fc9b224c537afabae) ) + + ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00) + + ROM_REGION(0x280000, "user2", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm-d.u0227", 0x000000, 0x200000, CRC(8ee3ff45) SHA1(2801b23495866c91c8f8bebd37d5fcae7a625838) ) + ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(d4fc3da1) SHA1(a03bd97e36a21d27a834b9691b27a7eb7ac51ff2) ) +ROM_END + +ROM_START( rfjets ) /* Single board version SXX2G */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("rfj-06.u0259", 0x000000, 0x80000, CRC(c835aa7a) SHA1(291eada97ceb907dfea15688ce6055e63b3aa675) ) /* PRG0 */ + ROM_LOAD32_BYTE("rfj-07.u0258", 0x000001, 0x80000, CRC(3b6ca1ca) SHA1(9db019c0ddecfb58e2be5c345d78352f700035bf) ) /* PRG1 */ + ROM_LOAD32_BYTE("rfj-08.u0265", 0x000002, 0x80000, CRC(1f5dd06c) SHA1(6f5a8c9035971a470212cd0a89b94181011602c3) ) /* PRG2 */ + ROM_LOAD32_BYTE("rfj-09.u0264", 0x000003, 0x80000, CRC(cc71c402) SHA1(b040e600744e7b3f52de0fa852ce3ae08ae49985) ) /* PRG3 */ + + ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF) + ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) ) /* rfj-01 */ + ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) ) /* rfj-02 */ + ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(015d0748) SHA1(b1e8eaeba63a7914f1dc27d7e3ca5d0b6db202ed) ) /* rfj-03 */ + + ROM_REGION( 0x900000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(edfd96da) SHA1(4813267f104619f569e5777e75b75304321abb49) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(a4cc4631) SHA1(cc1c4f4de8a078ca774f5a328a9a58291949b1fb) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x200000, CRC(731fbb59) SHA1(13cd29ec4d4c73582c5fb363218e737886826e5f) ) + ROM_LOAD24_BYTE("bg-2p.u0545", 0x600002, 0x100000, CRC(03652c25) SHA1(c0d77285111bc84e008362981ac02a246678ed0a) ) + + ROM_REGION( 0x1800000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj-1.u073", 0x0000000, 0x800000, CRC(58a59896) SHA1(edeaaa69987bd5d08c47ed9bf47a3901e2dcc892) ) + ROM_LOAD("obj-2.u074", 0x0800000, 0x800000, CRC(a121d1e3) SHA1(1851ae81f2ae9d3404aadd9fbc0ed7f9230290b9) ) + ROM_LOAD("obj-3.u075", 0x1000000, 0x800000, CRC(bc2c0c63) SHA1(c8d395722f7012c3be366a0fc9b224c537afabae) ) + + ROM_REGION(0x40000, "soundcpu", 0) /* 256k for the Z80 */ + ROM_LOAD("rfj-05.u091", 0x000000, 0x40000, CRC(a55e8799) SHA1(5d4ca9ae920ab54e23ee3b1b33db72711e744516) ) /* ZPRG */ + + ROM_REGION(0x280000, "ymf", ROMREGION_ERASE00) /* sound roms */ + ROM_LOAD("pcm-d.u0103", 0x000000, 0x200000, CRC(8ee3ff45) SHA1(2801b23495866c91c8f8bebd37d5fcae7a625838) ) + ROM_LOAD("rfj-04.u0107", 0x200000, 0x080000, CRC(c050da03) SHA1(1002dac51a3a4932c4f0074c1f3d97a597d98755) ) /* SOUND1 */ + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) + ROM_LOAD16_WORD( "93c46-rfjets.bin", 0x0000, 0x0080, CRC(8fe8063b) SHA1(afb0141580e1b2bd149092a9cc9e8b4072b1ef10) ) +ROM_END + + + +/*******************************************************************/ +/* SYS386 games */ + +/* +Raiden Fighters 2 - 2000 Operation Hell Dive +Seibu Kaihatsu Inc., 2000 + +This game runs on a single PCB, not the usual SPI hardware that the previous Raiden +Fighters games ran on. + +PCB Layout +---------- + +SYS386I +|-----------------------------------------------------| +|HA13118 6295 PCM0 OBJ4 OBJ5 OBJ6 | +| 4560D 6295 PCM1 71256 OBJ1 OBJ2 OBJ3 | +| | +| PAL PAL 71256 |----------| | +| | | | +| * PAL PAL 71256 | | | +| | RISE10 | | +| 71256 | (QFP240) | | +|J |--------| | | | +| |SIE150 | |---------| |----------| | +|A |(QFP100)| | | | +| |--------| 71256 |SEI400 | 28.6363MHz | +|M |SB07-3460| | +| 71256 |(QFP208) | | +|M |---------| TC551664 | +| | +|A 93C46 |---------| TC551664 | +| PAL | | | +| |SEI600 | PRG0-1 | +| |SB08-1513| |--------| | +| |(QFP208) | | AM386 | | +| |---------| | DX40 | | +| FIX0 BG-1P. BG-1D |(QFP132)| PRG2-3 | +| FIX1 |--------| | +| FIX2 BG-2P BG-2D | +| 40MHz PAL | +|-----------------------------------------------------| +Notes: + ROMs + ---- + OBJ1, OBJ2, OBJ3 - Objects, MX23C3210TC surface mounted 32MBit MaskROM (TSOP48) + OBJ4, OBJ5, OBJ6 - Objects, MX23C1610TC surface mounted 16MBit MaskROM (TSOP48) + Note - The PCB is wired to accept MX32C3210 32MBit MaskROMs in all OBJ positions. + + PRG0-1, PRG2-3 - Main program, LH28F800SU surface mounted 8MBit FlashROM (TSOP56) + Note - The PCB is wired to accept DIP32 27C040 4MBit EPROMs here also with positions + labelled PRG0, PRG1, PRG2 & PRG3 + + BG-1P, BG-2P - Backgrounds, MX29F1610MC surface mounted 16MBit FlashROM (SOP44) + BG-1D, BG-2D - Backgrounds, MX23C3210MC surface mounted 32MBit MaskROM (SOP44) + + PCM0, PCM1 - PCM sound samples, 27C4001 4MBit EPROM (DIP32) + + FIX0, FIX1, FIX2 - 27C512 EPROM (DIP28) + + Clocks + ------ + M6295 clock - 1.431815MHz (both, 28.6363MHz / 20), sample rate = M6295 clock / 132 (both) + AM386 clock - 40.000MHz + VSync - 54Hz + + RAM + --- + TC551664 - Toshiba TC551664J-15 1MBit SRAM (64k x16, SOJ44) + 71256 - 256k SRAM (32k x8, SOJ28) + + Custom IC's + ----------- + RISE10 (QFP240) + SEI400 (QFP208) + SEI600 (QFP208) + SIE150 (QFP100) + + Other + ----- + 93C46 - 128bytes EEPROM (SOIC8, not dumped) + HA13118 - 18W audio power AMP + 4560D - Op AMP (DIP8) + * - Unpopulated position for Xilinx XC9572 CPLD +*/ + +ROM_START( rdft22kc ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_WORD("prg0-1.267", 0x000000, 0x100000, CRC(0d7d6eb8) SHA1(3a71e1e0ba5bb500dc026debbb6189723c0c2890) ) + ROM_LOAD32_WORD("prg2-3.266", 0x000002, 0x100000, CRC(ead53e69) SHA1(b0e2e06f403317054ecb48d2747034424245f129) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ + ROM_LOAD24_BYTE("fix0.524", 0x000001, 0x10000, CRC(ed11d043) SHA1(fd3a5a33aa4d795941d64c0d23f9d6f8222843e3) ) + ROM_LOAD24_BYTE("fix1.518", 0x000000, 0x10000, CRC(7036d70a) SHA1(3535b52c0fa1a1158cacc041f8aba2b9a1b43af5) ) + ROM_LOAD24_BYTE("fix2.514", 0x000002, 0x10000, CRC(29b465da) SHA1(644454ab5e0dc1028e9512f85adfe5d8adb757de) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) ) + ROM_LOAD24_BYTE("bg-1p.544", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) ) + ROM_LOAD24_WORD("bg-2d.536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) ) + ROM_LOAD24_BYTE("bg-2p.545", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) ) + + ROM_REGION( 0x1200000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj3.075", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) ) + ROM_LOAD("obj6.078", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) ) + ROM_LOAD("obj2.074", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) ) + ROM_LOAD("obj5.077", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) ) + ROM_LOAD("obj1.073", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) ) + ROM_LOAD("obj4.076", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) ) + + ROM_REGION( 0x80000, "oki1", 0) /* sound data for MSM6295 */ + ROM_LOAD("pcm0.1022", 0x000000, 0x80000, CRC(fd599b35) SHA1(00c0307d1b503bd5ce02d7960ce5e1ad600a7290) ) + + ROM_REGION( 0x80000, "oki2", 0) /* sound data for MSM6295 */ + ROM_LOAD("pcm1.1023", 0x000000, 0x80000, CRC(8b716356) SHA1(42ee1896c02518cd1e9cb0dc130321834665a79e) ) +ROM_END + +ROM_START( rfjet2kc ) + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_WORD("prg01.u267", 0x000000, 0x100000, CRC(36019fa8) SHA1(28baf0ed4a53b818c1e6986d5d3491373524eca1) ) + ROM_LOAD32_WORD("prg23.u266", 0x000002, 0x100000, CRC(65695dde) SHA1(1b25dde03bc9319414144fc13b34c455112f4076) ) + + ROM_REGION( 0x30000, "gfx1", 0) /* text layer roms */ + ROM_LOAD24_BYTE("rfj-01.524", 0x000001, 0x10000, CRC(e9d53007) SHA1(29aa7b70d5d5eb5e31426ac84143be44bc0597aa) ) + ROM_LOAD24_BYTE("rfj-02.518", 0x000000, 0x10000, CRC(dd3eabd3) SHA1(31c8f7a0cd262096a77673b040326605db542ab8) ) + ROM_LOAD24_BYTE("rfj-03.514", 0x000002, 0x10000, CRC(0daa8aac) SHA1(08a98fb3079ea9f78aa5b950bfeb30b0a805bab7) ) + + ROM_REGION( 0xc00000, "gfx2", 0) /* background layer roms */ + ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(edfd96da) SHA1(4813267f104619f569e5777e75b75304321abb49) ) + ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(a4cc4631) SHA1(cc1c4f4de8a078ca774f5a328a9a58291949b1fb) ) + ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x200000, CRC(731fbb59) SHA1(13cd29ec4d4c73582c5fb363218e737886826e5f) ) + ROM_LOAD24_BYTE("bg-2p.u0547", 0x600002, 0x100000, CRC(03652c25) SHA1(c0d77285111bc84e008362981ac02a246678ed0a) ) + + ROM_REGION( 0x1800000, "gfx3", 0) /* sprites */ + ROM_LOAD("obj-1.u073", 0x0000000, 0x800000, CRC(58a59896) SHA1(edeaaa69987bd5d08c47ed9bf47a3901e2dcc892) ) + ROM_LOAD("obj-2.u074", 0x0800000, 0x800000, CRC(a121d1e3) SHA1(1851ae81f2ae9d3404aadd9fbc0ed7f9230290b9) ) + ROM_LOAD("obj-3.u0749", 0x1000000, 0x800000, CRC(bc2c0c63) SHA1(c8d395722f7012c3be366a0fc9b224c537afabae) ) + + ROM_REGION( 0x80000, "oki1", 0) /* sound data for MSM6295 */ + ROM_LOAD("rfj-05.u1022", 0x000000, 0x80000, CRC(fd599b35) SHA1(00c0307d1b503bd5ce02d7960ce5e1ad600a7290) ) + + ROM_REGION( 0x80000, "oki2", 0) /* sound data for MSM6295 */ + ROM_LOAD("rfj-04.u1023", 0x000000, 0x80000, CRC(1d10cd08) SHA1(c431d3f1a7b580024b083dafb76c53b771c88726) ) +ROM_END + +/* + +E-Jan Sakurasou +(c)1999 Seibu + +SYS386F V2.0 + +CPU: intel i386DX-25MHz +Sound: YMZ280B-F YAC516-M +OSC: 28.3751(H)-28.6363(L) 16.384MHz 50.000MHz +Custom: SEI600 RISE11 + +ROMs: +PRG0.BIN 211 +PRG1.BIN 212 +PRG2.BIN 221 +PRG3.BIN 220 + +CHR1.BIN 442 +CHR2.BIN 443 +CHR3.BIN 444 +CHR4.BIN 445 + +SOUND1.BIN 83 +SOUND2.BIN 84 + +*/ + +ROM_START( ejsakura ) /* SYS386F V2.0 */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0.211", 0x100000, 0x40000, CRC(199f2f08) SHA1(096afb23f2763b9aee5e8de3870fe47116a8d134) ) + ROM_LOAD32_BYTE("prg1.212", 0x100001, 0x40000, CRC(2cb636e6) SHA1(3524231a336de5acc93dff20b0b65ade31e27116) ) + ROM_LOAD32_BYTE("prg2.221", 0x100002, 0x40000, CRC(98a7b615) SHA1(ea34d8f3e9200a6d84efe9168e2f573ec5c2afd2) ) + ROM_LOAD32_BYTE("prg3.220", 0x100003, 0x40000, CRC(9c3c037a) SHA1(a802e13a0b827896342d9d34dbb00d1c36cabaff) ) + + ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF) + + ROM_REGION( 0x900000, "gfx2", ROMREGION_ERASEFF) /* background layer roms */ + + ROM_REGION( 0x1000000, "gfx3", 0) /* sprites */ + ROM_LOAD16_WORD_SWAP("chr4.445", 0x000000, 0x400000, CRC(40c6c238) SHA1(0d07b59e25632feb070ce0e572ae75f9bb939893) ) + ROM_LOAD16_WORD_SWAP("chr3.444", 0x400000, 0x400000, CRC(8e5d1de5) SHA1(c1ccb6b4341ee1e939958ec9e68280c6faa2ef1f) ) + ROM_LOAD16_WORD_SWAP("chr2.443", 0x800000, 0x400000, CRC(638dc9ae) SHA1(0c11b1e688733fbaeabf83b33410714c22ae53cd) ) + ROM_LOAD16_WORD_SWAP("chr1.442", 0xc00000, 0x400000, CRC(177e3139) SHA1(0385a831c141d59ec4e9c6d6fae9436dca123764) ) + + ROM_REGION(0x1000000, "ymz", 0) + ROM_LOAD("sound1.83", 0x000000, 0x800000, CRC(98783cfc) SHA1(f142429e0658a36e908cc135fe0e01ce853d071d) ) + ROM_LOAD("sound2.84", 0x800000, 0x800000, CRC(ff37e769) SHA1(eb6d260cbc4e4a925a5d8f604ec695e567ac6bb5) ) +ROM_END + +ROM_START( ejsakura12 ) /* SYS386F V1.2 */ + ROM_REGION32_LE(0x200000, "user1", 0) /* i386 program */ + ROM_LOAD32_BYTE("prg0v1.2.u0211", 0x100000, 0x40000, CRC(c734fde6) SHA1(d4256f0d2be624fc0e5340ae14679679e5e184c8) ) + ROM_LOAD32_BYTE("prg1v1.2.u0212", 0x100001, 0x40000, CRC(fb7a9e38) SHA1(5a2e02e1b8ed71ffc96dbda871618f5f9cccc8c6) ) + ROM_LOAD32_BYTE("prg2v1.2.u0221", 0x100002, 0x40000, CRC(e13098ad) SHA1(abf471afd25a08ba1848964c988112c86d1dcfaa) ) + ROM_LOAD32_BYTE("prg3v1.2.u0220", 0x100003, 0x40000, CRC(29b5460f) SHA1(c9cb0eb421a79b722bf5a0dc428d0f5f8499e170) ) + + ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF) + + ROM_REGION( 0x900000, "gfx2", ROMREGION_ERASEFF) /* background layer roms */ + + ROM_REGION( 0x1000000, "gfx3", 0) /* sprites */ + ROM_LOAD16_WORD_SWAP("chr4.445", 0x000000, 0x400000, CRC(40c6c238) SHA1(0d07b59e25632feb070ce0e572ae75f9bb939893) ) + ROM_LOAD16_WORD_SWAP("chr3.444", 0x400000, 0x400000, CRC(8e5d1de5) SHA1(c1ccb6b4341ee1e939958ec9e68280c6faa2ef1f) ) + ROM_LOAD16_WORD_SWAP("chr2.443", 0x800000, 0x400000, CRC(638dc9ae) SHA1(0c11b1e688733fbaeabf83b33410714c22ae53cd) ) + ROM_LOAD16_WORD_SWAP("chr1.442", 0xc00000, 0x400000, CRC(177e3139) SHA1(0385a831c141d59ec4e9c6d6fae9436dca123764) ) + + ROM_REGION(0x1000000, "ymz", 0) + ROM_LOAD("sound1.83", 0x000000, 0x800000, CRC(98783cfc) SHA1(f142429e0658a36e908cc135fe0e01ce853d071d) ) + ROM_LOAD("sound2.84", 0x800000, 0x800000, CRC(ff37e769) SHA1(eb6d260cbc4e4a925a5d8f604ec695e567ac6bb5) ) +ROM_END + +/*******************************************************************/ + + +/* SPI */ +GAME( 1995, senkyu, 0, spi, spi_3button, senkyu, ROT0, "Seibu Kaihatsu", "Senkyu (Japan, set 1)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1995, senkyua, senkyu, spi, spi_3button, senkyua, ROT0, "Seibu Kaihatsu", "Senkyu (Japan, set 2)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1995, batlball, senkyu, spi, spi_3button, batlball, ROT0, "Seibu Kaihatsu (Tuning license)", "Battle Balls (Germany)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1995, batlballa, senkyu, spi, spi_3button, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1995, batlballu, senkyu, spi, spi_3button, batlball, ROT0, "Seibu Kaihatsu (Fabtek license)", "Battle Balls (US)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) + +GAME( 1995, viprp1, 0, spi, spi_3button, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (World, New Version)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1995, viprp1u, viprp1, spi, spi_3button, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (USA, New Version)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) /* New version, "=U.S.A=" seems part of title */ +GAME( 1995, viprp1j, viprp1, spi, spi_3button, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan, New Version)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1995, viprp1s, viprp1, spi, spi_3button, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Switzerland, New Version)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) + +GAME( 1995, viprp1oj, viprp1, spi, spi_3button, viprp1o, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1995, viprp1ot, viprp1, spi, spi_3button, viprp1, ROT270, "Seibu Kaihatsu (Tuning license)", "Viper Phase 1 (Germany)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1995, viprp1hk, viprp1, spi, spi_3button, viprp1, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Viper Phase 1 (Hong Kong)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) /* "=HONG KONG=" seems part of title */ + +GAME( 1996, ejanhs, 0, spi, spi_ejanhs, ejanhs, ROT0, "Seibu Kaihatsu", "E-Jan High School (Japan)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) + +GAME( 1996, rdft, 0, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftu, rdft, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters (US)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftau, rdft, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Australia)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftj, rdft, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftadi, rdft, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Asia, Dream Island Co., LTD. license, SPI)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftam, rdft, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters (Asia, Metrotainment Network license, SPI)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftit, rdft, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Italy)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1996, rdfta, rdft, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Austria)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) + +GAME( 1997, rdft2, 0, spi, spi_2button, rdft2, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters 2", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1997, rdft2a2, rdft2, spi, spi_2button, rdft2, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters 2 (Asia, Dream Island Co., LTD. license, SPI)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1997, rdft2a, rdft2, spi, spi_2button, rdft2, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters 2 (Asia, Metrotainment Network license, SPI)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1997, rdft2j, rdft2, spi, spi_2button, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 (Japan, SPI)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1997, rdft2j2, rdft2, spi, spi_2button, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 (Japan set 2, SPI)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1997, rdft2t, rdft2, spi, spi_2button, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 (Taiwan, SPI)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1997, rdft2u, rdft2, spi, spi_2button, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 (USA, SPI)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) + +GAME( 1998, rfjet, 0, spi, spi_2button, rfjet, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1998, rfjetu, rfjet, spi, spi_2button, rfjet, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1998, rfjeta, rfjet, spi, spi_2button, rfjet, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters Jet (Asia)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) +GAME( 1998, rfjetj, rfjet, spi, spi_2button, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Japan)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) + +/* there is another rf dump rf_spi_asia.zip but it seems strange, 1 program rom, cart pic seems to show others as a different type of rom */ + +/* SXX2F */ +GAME( 1997, rdft2us, rdft2, sxx2f, spi_2button, rdft2us, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2.1 (US, Single Board)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) // title screen shows '2.1' + +/* SXX2G */ +GAME( 1999, rfjets, rfjet, sxx2g, spi_2button, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Single Board)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) // has 1998-99 copyright + planes unlocked + +/* SYS386 */ +GAME( 2000, rdft22kc, rdft2, seibu386, seibu386_2button, rdft22kc, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - 2000 (China)", GAME_IMPERFECT_GRAPHICS ) +GAME( 2000, rfjet2kc, rfjet, seibu386, seibu386_2button, rfjet2k, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet - 2000 (China)", GAME_IMPERFECT_GRAPHICS ) + +/* SYS386F V2.0 */ +GAME( 1999, ejsakura, 0, sys386f2, spi_ejsakura, sys386f2, ROT0, "Seibu Kaihatsu", "E-Jan Sakurasou (v2.0)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1999, ejsakura12, ejsakura, sys386f2, spi_ejsakura, sys386f2, ROT0, "Seibu Kaihatsu", "E-Jan Sakurasou (v1.2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |