summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/seibuspi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/seibuspi.c')
-rw-r--r--src/mame/drivers/seibuspi.c3063
1 files changed, 3063 insertions, 0 deletions
diff --git a/src/mame/drivers/seibuspi.c b/src/mame/drivers/seibuspi.c
new file mode 100644
index 00000000000..fb3b9d05f80
--- /dev/null
+++ b/src/mame/drivers/seibuspi.c
@@ -0,0 +1,3063 @@
+/*
+ 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.
+
+*/
+
+#include "driver.h"
+#include "machine/ds2404.h"
+#include "machine/eeprom.h"
+#include "machine/intelfsh.h"
+#include "sound/okim6295.h"
+#include "sound/ymf271.h"
+
+void seibuspi_text_decrypt(UINT8 *rom);
+void seibuspi_bg_decrypt(UINT8 *rom, int size);
+void seibuspi_sprite_decrypt(UINT8 *src, int romsize);
+
+void seibuspi_rise10_text_decrypt(UINT8 *rom);
+void seibuspi_rise10_bg_decrypt(UINT8 *rom, int size);
+void seibuspi_rise10_sprite_decrypt(UINT8 *rom, int romsize);
+
+void seibuspi_rise11_text_decrypt(UINT8 *rom);
+void seibuspi_rise11_bg_decrypt(UINT8 *rom, int size);
+void seibuspi_rise11_sprite_decrypt(UINT8 *rom, int romsize);
+
+VIDEO_START( spi );
+VIDEO_UPDATE( spi );
+WRITE32_HANDLER( spi_textlayer_w );
+WRITE32_HANDLER( spi_back_layer_w );
+WRITE32_HANDLER( spi_mid_layer_w );
+WRITE32_HANDLER( spi_fore_layer_w );
+WRITE32_HANDLER( spi_paletteram32_xBBBBBGGGGGRRRRR_w );
+READ32_HANDLER( spi_layer_bank_r );
+WRITE32_HANDLER( spi_layer_bank_w );
+void rf2_set_layer_banks(int banks);
+READ32_HANDLER( spi_layer_enable_r );
+WRITE32_HANDLER( spi_layer_enable_w );
+
+WRITE32_HANDLER( tilemap_dma_start_w );
+WRITE32_HANDLER( palette_dma_start_w );
+WRITE32_HANDLER( video_dma_length_w );
+WRITE32_HANDLER( video_dma_address_w );
+WRITE32_HANDLER( sprite_dma_start_w );
+
+extern UINT32 *spi_scrollram;
+UINT32 *spimainram;
+
+static UINT8 *z80_rom;
+
+/********************************************************************/
+static int z80_prg_fifo_pos = 0;
+static int z80_lastbank;
+
+#define FIFO_SIZE 512
+static int fifoin_rpos, fifoin_wpos;
+static UINT8 fifoin_data[FIFO_SIZE];
+static int fifoin_read_request = 0;
+
+static int fifoout_rpos, fifoout_wpos;
+static UINT8 fifoout_data[FIFO_SIZE];
+static int fifoout_read_request = 0;
+
+static UINT8 sb_coin_latch = 0;
+
+static UINT8 z80_fifoout_pop(void)
+{
+ UINT8 r;
+ if (fifoout_wpos == fifoout_rpos)
+ {
+ logerror("Sound FIFOOUT underflow at %08X\n", activecpu_get_pc());
+ }
+ r = fifoout_data[fifoout_rpos++];
+ if(fifoout_rpos == FIFO_SIZE)
+ {
+ fifoout_rpos = 0;
+ }
+
+ if (fifoout_wpos == fifoout_rpos)
+ {
+ fifoout_read_request = 0;
+ }
+
+ return r;
+}
+
+static void z80_fifoout_push(UINT8 data)
+{
+ fifoout_data[fifoout_wpos++] = data;
+ if (fifoout_wpos == FIFO_SIZE)
+ {
+ fifoout_wpos = 0;
+ }
+ if(fifoout_wpos == fifoout_rpos)
+ {
+ fatalerror("Sound FIFOOUT overflow at %08X", activecpu_get_pc());
+ }
+
+ fifoout_read_request = 1;
+}
+
+static UINT8 z80_fifoin_pop(void)
+{
+ UINT8 r;
+ if (fifoin_wpos == fifoin_rpos)
+ {
+ fatalerror("Sound FIFOIN underflow at %08X", activecpu_get_pc());
+ }
+ r = fifoin_data[fifoin_rpos++];
+ if(fifoin_rpos == FIFO_SIZE)
+ {
+ fifoin_rpos = 0;
+ }
+
+ if (fifoin_wpos == fifoin_rpos)
+ {
+ fifoin_read_request = 0;
+ }
+
+ return r;
+}
+
+static void z80_fifoin_push(UINT8 data)
+{
+ fifoin_data[fifoin_wpos++] = data;
+ if(fifoin_wpos == FIFO_SIZE)
+ {
+ fifoin_wpos = 0;
+ }
+ if(fifoin_wpos == fifoin_rpos)
+ {
+ fatalerror("Sound FIFOIN overflow at %08X", activecpu_get_pc());
+ }
+
+ fifoin_read_request = 1;
+}
+
+static READ32_HANDLER( sb_coin_r )
+{
+ UINT8 r = sb_coin_latch;
+
+ sb_coin_latch = 0;
+ return r;
+}
+
+static WRITE8_HANDLER( sb_coin_w )
+{
+ if (data)
+ sb_coin_latch = 0xa0 | data;
+ else
+ sb_coin_latch = 0;
+}
+
+static READ32_HANDLER( sound_fifo_r )
+{
+ UINT8 r = z80_fifoout_pop();
+
+ return r;
+}
+
+static WRITE32_HANDLER( sound_fifo_w )
+{
+ if( (mem_mask & 0xff) == 0 ) {
+ z80_fifoin_push(data & 0xff);
+ }
+}
+
+static READ32_HANDLER( sound_fifo_status_r )
+{
+ UINT32 r = 0;
+ if (fifoout_read_request)
+ {
+ r |= 2;
+ }
+ return r | 1;
+}
+
+static READ32_HANDLER( spi_int_r )
+{
+ cpunum_set_input_line( 0, 0,CLEAR_LINE );
+ return 0xffffffff;
+}
+
+static READ32_HANDLER( spi_unknown_r )
+{
+ return 0xffffffff;
+}
+
+static WRITE32_HANDLER( ds2404_reset_w )
+{
+ if( ACCESSING_LSB32 ) {
+ DS2404_1W_reset_w(offset, data);
+ }
+}
+
+static READ32_HANDLER( ds2404_data_r )
+{
+ if( ACCESSING_LSB32 ) {
+ return DS2404_data_r(offset);
+ }
+ return 0;
+}
+
+static WRITE32_HANDLER( ds2404_data_w )
+{
+ if( ACCESSING_LSB32 ) {
+ DS2404_data_w(offset, data);
+ }
+}
+
+static WRITE32_HANDLER( ds2404_clk_w )
+{
+ if( ACCESSING_LSB32 ) {
+ DS2404_clk_w(offset, data);
+ }
+}
+
+static WRITE32_HANDLER( eeprom_w )
+{
+ // tile banks
+ if( !(mem_mask & 0x00ff0000) ) {
+ rf2_set_layer_banks(data >> 16);
+ 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 (sndti_exists(SOUND_OKIM6295, 1))
+ OKIM6295_set_bank_base(1, (data & 0x4000000) ? 0x40000 : 0);
+}
+
+static WRITE32_HANDLER( z80_prg_fifo_w )
+{
+ if( ACCESSING_LSB32 ) {
+ if (z80_prg_fifo_pos<0x40000) z80_rom[z80_prg_fifo_pos] = data & 0xff;
+ z80_prg_fifo_pos++;
+ }
+}
+
+static WRITE32_HANDLER( z80_enable_w )
+{
+ // tile banks
+ if( !(mem_mask & 0x00ff0000) ) {
+ rf2_set_layer_banks(data >> 16);
+ }
+
+logerror("z80 data = %08x mask = %08x\n",data,mem_mask);
+ if( !(mem_mask & 0x000000ff) ) {
+ if( data & 0x1 ) {
+ z80_prg_fifo_pos = 0;
+ cpunum_set_input_line(1, INPUT_LINE_RESET, CLEAR_LINE );
+ } else {
+ cpunum_set_input_line(1, INPUT_LINE_RESET, ASSERT_LINE );
+ }
+ }
+}
+
+static READ32_HANDLER( spi_controls1_r )
+{
+ if( ACCESSING_LSB32 ) {
+ return (readinputport(1) << 8) | readinputport(0) | 0xffff0000;
+ }
+ return 0xffffffff;
+}
+
+static READ32_HANDLER( spi_controls2_r )
+{
+ if( ACCESSING_LSB32 ) {
+ return ((readinputport(2) | 0xffffff00) & ~0x40) | (EEPROM_read_bit() << 6);
+ }
+ return 0xffffffff;
+}
+
+static READ32_HANDLER( spi_6295_0_r )
+{
+ return OKIM6295_status_0_r(0);
+}
+
+static READ32_HANDLER( spi_6295_1_r )
+{
+ return OKIM6295_status_1_r(0);
+}
+
+static WRITE32_HANDLER( spi_6295_0_w )
+{
+ if( ACCESSING_LSB32 ) {
+ OKIM6295_data_0_w(0, data & 0xff);
+ }
+}
+
+static WRITE32_HANDLER( spi_6295_1_w )
+{
+ if( ACCESSING_LSB32 ) {
+ OKIM6295_data_1_w(0, data & 0xff);
+ }
+}
+
+/********************************************************************/
+
+static READ8_HANDLER( z80_soundfifo_r )
+{
+ UINT8 r = z80_fifoin_pop();
+
+ return r;
+}
+
+static WRITE8_HANDLER( z80_soundfifo_w )
+{
+ z80_fifoout_push(data);
+}
+
+static READ8_HANDLER( z80_soundfifo_status_r )
+{
+ UINT8 r = 0;
+ if (fifoin_read_request)
+ {
+ r |= 2;
+ }
+ return r | 1;
+}
+
+static WRITE8_HANDLER( z80_bank_w )
+{
+ if ((data & 7) != z80_lastbank)
+ {
+ z80_lastbank = (data & 7);
+ memory_set_bankptr(4, z80_rom + (0x8000 * z80_lastbank));
+ }
+}
+
+static READ8_HANDLER( z80_jp1_r )
+{
+ return readinputport(3);
+}
+
+static READ8_HANDLER( z80_coin_r )
+{
+ return readinputport(4);
+}
+
+static READ32_HANDLER( soundrom_r )
+{
+ UINT8 *sound = (UINT8*)memory_region(REGION_USER2);
+ UINT16 *sound16 = (UINT16*)memory_region(REGION_USER2);
+
+ if (mem_mask == 0xffffff00)
+ {
+ return sound[offset];
+ }
+ else if (mem_mask == 0x00000000)
+ {
+ 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, ADDRESS_SPACE_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(&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_WRITE(ds2404_reset_w)
+ AM_RANGE(0x000006d4, 0x000006d7) AM_WRITE(ds2404_data_w)
+ AM_RANGE(0x000006d8, 0x000006db) AM_WRITE(ds2404_clk_w)
+ AM_RANGE(0x000006dc, 0x000006df) AM_READ(ds2404_data_r)
+ AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_BASE(&spimainram)
+ AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE(2)
+ AM_RANGE(0x00a00000, 0x013fffff) AM_READ(soundrom_r)
+ AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION(REGION_USER1, 0) AM_SHARE(2) /* ROM location in real-mode */
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( spisound_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x3fff) AM_RAMBANK(5)
+ 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_READWRITE(YMF271_0_r, YMF271_0_w)
+ AM_RANGE(0x8000, 0xffff) AM_ROMBANK(4)
+ADDRESS_MAP_END
+
+static READ8_HANDLER( flashrom_read )
+{
+ logerror("Flash Read: %08X\n", offset);
+ if( offset < 0x100000 )
+ {
+ return intelflash_read(0, offset);
+ }
+ else if( offset < 0x200000 )
+ {
+ return intelflash_read(1, offset - 0x100000 );
+ }
+ return 0;
+}
+
+static WRITE8_HANDLER( flashrom_write )
+{
+ logerror("Flash Write: %08X, %02X\n", offset, data);
+ if( offset < 0x100000 )
+ {
+ intelflash_write(0, offset + 1, data);
+ }
+ else if( offset < 0x200000 )
+ {
+ intelflash_write(1, offset - 0x100000 + 1, data);
+ }
+}
+
+static void irqhandler(int state)
+{
+ if (state)
+ {
+ cpunum_set_input_line_and_vector(1, 0, ASSERT_LINE, 0xd7); // IRQ is RST10
+ }
+ else
+ {
+ cpunum_set_input_line(1, 0, CLEAR_LINE);
+ }
+}
+
+static struct YMF271interface ymf271_interface =
+{
+ REGION_SOUND1,
+ flashrom_read,
+ flashrom_write,
+ irqhandler
+};
+
+/********************************************************************/
+
+static ADDRESS_MAP_START( seibu386_map, ADDRESS_SPACE_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(&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_WRITE(eeprom_w)
+ AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_BASE(&spimainram)
+ AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE(2)
+ AM_RANGE(0x01200000, 0x01200003) AM_READWRITE(spi_6295_0_r, spi_6295_0_w)
+ AM_RANGE(0x01200004, 0x01200007) AM_READWRITE(spi_6295_1_r, spi_6295_1_w)
+ AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION(REGION_USER1, 0) AM_SHARE(2) /* ROM location in real-mode */
+ADDRESS_MAP_END
+
+/********************************************************************/
+
+static INPUT_PORTS_START( spi_2button )
+ PORT_START_TAG("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_START_TAG("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START_TAG("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW) /* Test Button */
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Coin") PORT_CODE(KEYCODE_7)
+ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START_TAG("JP1") /* 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_TAG("IN3")
+ 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_START_TAG("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_START_TAG("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START_TAG("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME( DEF_STR( Service_Mode )) PORT_CODE(KEYCODE_F2) /* Test Button */
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Coin") PORT_CODE(KEYCODE_7)
+ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START_TAG("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_TAG("IN3")
+ 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( seibu386_2button )
+ PORT_START_TAG("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_START_TAG("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START_TAG("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW) /* Test Button */
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Coin") PORT_CODE(KEYCODE_7)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START_TAG("JP1") /* 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 INPUT_PORTS_START( spi_ejanhs )
+ PORT_START_TAG("IN0")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 A") PORT_CODE(KEYCODE_A)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 B") PORT_CODE(KEYCODE_B)
+ PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 E") PORT_CODE(KEYCODE_E)
+ PORT_BIT( 0x18, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 F") PORT_CODE(KEYCODE_F)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 I") PORT_CODE(KEYCODE_I)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 J") PORT_CODE(KEYCODE_J)
+ PORT_BIT( 0x05, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 M") PORT_CODE(KEYCODE_M)
+ PORT_BIT( 0x28, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 N") PORT_CODE(KEYCODE_N)
+ PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Kan") PORT_CODE(KEYCODE_LCONTROL)
+ PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Reach") PORT_CODE(KEYCODE_LSHIFT)
+ PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_START1 ) PORT_PLAYER(1)
+
+ PORT_START_TAG("IN1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 C") PORT_CODE(KEYCODE_C)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 D") PORT_CODE(KEYCODE_D)
+ PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 G") PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x18, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 H") PORT_CODE(KEYCODE_H)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 K") PORT_CODE(KEYCODE_K)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 L") PORT_CODE(KEYCODE_L)
+ PORT_BIT( 0x05, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Chi") PORT_CODE(KEYCODE_SPACE)
+ PORT_BIT( 0x28, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Pon") PORT_CODE(KEYCODE_LALT)
+ PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Ron") PORT_CODE(KEYCODE_Z)
+
+ PORT_START_TAG("IN2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME( DEF_STR( Service_Mode )) PORT_CODE(KEYCODE_F2) /* Test Button */
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Coin") PORT_CODE(KEYCODE_7)
+ PORT_BIT( 0xf3, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START_TAG("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_TAG("IN3")
+ 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
+
+/********************************************************************/
+
+#define PLANE_CHAR 0
+#define PLANE_TILE 0
+#define PLANE_SPRITE 1
+
+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( REGION_GFX1, 0, spi_charlayout, 5632, 16 )
+ GFXDECODE_ENTRY( REGION_GFX2, 0, spi_tilelayout, 4096, 24 )
+ GFXDECODE_ENTRY( REGION_GFX3, 0, spi_spritelayout, 0, 96 )
+#if PLANE_CHAR
+ GFXDECODE_ENTRY( REGION_GFX1, 0, spi_charlayout0, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, spi_charlayout1, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, spi_charlayout2, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, spi_charlayout3, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, spi_charlayout4, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, spi_charlayout5, 0x3ff, 1 )
+#endif
+#if PLANE_TILE
+ GFXDECODE_ENTRY( REGION_GFX2, 0, spi_tilelayout0, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX2, 0, spi_tilelayout1, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX2, 0, spi_tilelayout2, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX2, 0, spi_tilelayout3, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX2, 0, spi_tilelayout4, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX2, 0, spi_tilelayout5, 0x3ff, 1 )
+#endif
+#if PLANE_SPRITE
+ GFXDECODE_ENTRY( REGION_GFX3, 0, spi_spritelayout0, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX3, 0, spi_spritelayout1, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX3, 0, spi_spritelayout2, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX3, 0, spi_spritelayout3, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX3, 0, spi_spritelayout4, 0x3ff, 1 )
+ GFXDECODE_ENTRY( REGION_GFX3, 0, spi_spritelayout5, 0x3ff, 1 )
+#endif
+GFXDECODE_END
+
+/********************************************************************************/
+
+static NVRAM_HANDLER( spi )
+{
+ if( read_or_write ) {
+ DS2404_save(file);
+ } else {
+ DS2404_init(1995, 1, 1);
+
+ if(file) {
+ DS2404_load(file);
+ }
+ }
+
+ nvram_handler_intelflash(machine, 0, file, read_or_write);
+ nvram_handler_intelflash(machine, 1, file, read_or_write);
+}
+
+/* this is a 93C46 but with reset delay */
+static struct EEPROM_interface eeprom_interface =
+{
+ 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 NVRAM_HANDLER( sxx2f )
+{
+ if( read_or_write ) {
+ EEPROM_save(file);
+ } else {
+ EEPROM_init(&eeprom_interface);
+
+ if(file)
+ EEPROM_load(file);
+ }
+}
+
+static INTERRUPT_GEN( spi_interrupt )
+{
+ cpunum_set_input_line( 0, 0, ASSERT_LINE );
+}
+
+static int spi_irq_callback(int irq)
+{
+ return 0x20;
+}
+
+/* SPI */
+
+static MACHINE_RESET( spi )
+{
+ int i;
+ UINT8 *sound = memory_region(REGION_SOUND1);
+
+ UINT8 *rombase = memory_region(REGION_USER1);
+ UINT8 flash_data = rombase[0x1ffffc];
+
+ cpunum_set_input_line(1, INPUT_LINE_RESET, ASSERT_LINE );
+ cpunum_set_irq_callback(0, spi_irq_callback);
+
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x00000680, 0x00000683, 0, 0, sound_fifo_r);
+ memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x00000688, 0x0000068b, 0, 0, z80_prg_fifo_w);
+ memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000068c, 0x0000068f, 0, 0, z80_enable_w);
+
+ z80_rom = auto_malloc(0x40000);
+ memory_set_bankptr(4, z80_rom);
+ memory_set_bankptr(5, 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 */
+ intelflash_write(0, 0, 0xff);
+ intelflash_write(0, 0, 0x10);
+ intelflash_write(0, 0, flash_data); /* country code */
+
+ for (i=0; i < 0x100000; i++)
+ {
+ intelflash_write(0, 0, 0xff);
+ sound[i] = intelflash_read(0, i);
+ }
+ for (i=0; i < 0x100000; i++)
+ {
+ intelflash_write(1, 0, 0xff);
+ sound[0x100000+i] = intelflash_read(1, i);
+ }
+}
+
+static MACHINE_DRIVER_START( spi )
+
+ /* basic machine hardware */
+ MDRV_CPU_ADD_TAG("main",I386, 50000000/2) /* Intel 386DX, 25MHz */
+ MDRV_CPU_PROGRAM_MAP(spi_map, 0)
+ MDRV_CPU_VBLANK_INT(spi_interrupt, 1)
+
+ MDRV_CPU_ADD_TAG("sound", Z80, 28636360/4)
+ /* audio CPU */
+ MDRV_CPU_PROGRAM_MAP(spisound_map, 0)
+
+ MDRV_SCREEN_REFRESH_RATE(54)
+ MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MDRV_INTERLEAVE(200)
+
+ MDRV_MACHINE_RESET(spi)
+ MDRV_NVRAM_HANDLER(spi)
+
+ /* video hardware */
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER )
+ MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
+ MDRV_SCREEN_SIZE(64*8, 32*8)
+ MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
+ MDRV_GFXDECODE(spi)
+ MDRV_PALETTE_LENGTH(6144)
+
+ MDRV_VIDEO_START(spi)
+ MDRV_VIDEO_UPDATE(spi)
+
+ MDRV_SPEAKER_STANDARD_STEREO("left", "right")
+
+ MDRV_SOUND_ADD_TAG("audio", YMF271, 16934400)
+ MDRV_SOUND_CONFIG(ymf271_interface)
+ MDRV_SOUND_ROUTE(0, "left", 1.0)
+ MDRV_SOUND_ROUTE(1, "right", 1.0)
+MACHINE_DRIVER_END
+
+static MACHINE_RESET( sxx2f )
+{
+ UINT8 *rom = memory_region(REGION_CPU2);
+
+ z80_rom = auto_malloc(0x40000);
+ memory_set_bankptr(4, z80_rom);
+ memory_set_bankptr(5, z80_rom);
+
+ memcpy(z80_rom, rom, 0x40000);
+
+ memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000068c, 0x0000068f, 0, 0, eeprom_w);
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x00000680, 0x00000683, 0, 0, sb_coin_r);
+ cpunum_set_irq_callback(0, spi_irq_callback);
+
+ sb_coin_latch = 0;
+}
+
+static MACHINE_DRIVER_START( sxx2f ) /* Intel i386DX @ 25MHz, YMF271 @ 16.9344MHz, Z80 @ 7.159MHz(?) */
+
+ MDRV_IMPORT_FROM(spi)
+
+ MDRV_MACHINE_RESET(sxx2f)
+ MDRV_NVRAM_HANDLER(sxx2f)
+
+MACHINE_DRIVER_END
+
+static MACHINE_DRIVER_START( sxx2g ) /* single board version using measured clocks */
+
+ MDRV_IMPORT_FROM(spi)
+
+ MDRV_CPU_REPLACE("main", I386, 28636360) /* AMD AM386DX/DX-40, 28.63636MHz */
+
+ MDRV_CPU_REPLACE("sound", Z80, 4915200) /* 4.9152MHz */
+
+ MDRV_SOUND_REPLACE("audio", YMF271, 16384000) /* 16.3840MHz */
+ MDRV_SOUND_CONFIG(ymf271_interface)
+
+ MDRV_SOUND_ROUTE(0, "left", 1.0)
+ MDRV_SOUND_ROUTE(1, "right", 1.0)
+
+ MDRV_MACHINE_RESET(sxx2f)
+ MDRV_NVRAM_HANDLER(sxx2f)
+
+MACHINE_DRIVER_END
+
+static READ32_HANDLER ( senkyu_speedup_r )
+{
+ if (activecpu_get_pc()==0x00305bb2) cpu_spinuntil_int(); // idle
+ return spimainram[(0x0018cb4-0x800)/4];
+}
+
+static READ32_HANDLER( senkyua_speedup_r )
+{
+ if (activecpu_get_pc()== 0x30582e) cpu_spinuntil_int(); // idle
+ return spimainram[(0x0018c9c-0x800)/4];
+}
+
+static READ32_HANDLER ( batlball_speedup_r )
+{
+// printf("activecpu_get_pc() %06x\n", activecpu_get_pc());
+
+ /* batlbalu */
+ if (activecpu_get_pc()==0x00305996) cpu_spinuntil_int(); // idle
+
+ /* batlball */
+ if (activecpu_get_pc()==0x003058aa) cpu_spinuntil_int(); // idle
+
+ return spimainram[(0x0018db4-0x800)/4];
+}
+
+static READ32_HANDLER ( rdft_speedup_r )
+{
+ /* rdft */
+ if (activecpu_get_pc()==0x0203f0a) cpu_spinuntil_int(); // idle
+
+ /* rdftau */
+ if (activecpu_get_pc()==0x0203f16) cpu_spinuntil_int(); // idle
+
+ /* rdftj */
+ if (activecpu_get_pc()==0x0203f22) cpu_spinuntil_int(); // idle
+
+ /* rdftdi */
+ if (activecpu_get_pc()==0x0203f46) cpu_spinuntil_int(); // idle
+
+ /* rdftu */
+ if (activecpu_get_pc()==0x0203f3a) cpu_spinuntil_int(); // idle
+
+// mame_printf_debug("%08x\n",activecpu_get_pc());
+
+ return spimainram[(0x00298d0-0x800)/4];
+}
+
+static READ32_HANDLER ( viprp1_speedup_r )
+{
+ /* viprp1 */
+ if (activecpu_get_pc()==0x0202769) cpu_spinuntil_int(); // idle
+
+ /* viprp1s */
+ if (activecpu_get_pc()==0x02027e9) cpu_spinuntil_int(); // idle
+
+ /* viprp1ot */
+ if (activecpu_get_pc()==0x02026bd) cpu_spinuntil_int(); // idle
+
+// mame_printf_debug("%08x\n",activecpu_get_pc());
+
+ return spimainram[(0x001e2e0-0x800)/4];
+}
+
+static READ32_HANDLER ( viprp1o_speedup_r )
+{
+ /* viperp1o */
+ if (activecpu_get_pc()==0x0201f99) cpu_spinuntil_int(); // idle
+// mame_printf_debug("%08x\n",activecpu_get_pc());
+ return spimainram[(0x001d49c-0x800)/4];
+}
+
+/*
+// causes input problems?
+READ32_HANDLER ( ejanhs_speedup_r )
+{
+// mame_printf_debug("%08x\n",activecpu_get_pc());
+ if (activecpu_get_pc()==0x03032c7) cpu_spinuntil_int(); // idle
+ return spimainram[(0x002d224-0x800)/4];
+}
+*/
+
+static READ32_HANDLER ( rf2_speedup_r )
+{
+
+ /* rdft22kc */
+ if (activecpu_get_pc()==0x0203926) cpu_spinuntil_int(); // idle
+
+ /* rdft2, rdft2j */
+ if (activecpu_get_pc()==0x0204372) cpu_spinuntil_int(); // idle
+
+ /* rdft2us */
+ if (activecpu_get_pc()==0x020420e) cpu_spinuntil_int(); // idle
+
+ /* rdft2a */
+ if (activecpu_get_pc()==0x0204366) cpu_spinuntil_int(); // idle
+
+// mame_printf_debug("%08x\n",activecpu_get_pc());
+
+ return spimainram[(0x0282AC-0x800)/4];
+}
+
+static READ32_HANDLER ( rfjet_speedup_r )
+{
+ /* rfjet, rfjetu, rfjeta */
+ if (activecpu_get_pc()==0x0206082) cpu_spinuntil_int(); // idle
+
+ /* rfjetus */
+ if (activecpu_get_pc()==0x0205b39)
+ {
+ UINT32 r;
+ cpu_spinuntil_int(); // idle
+ // Hack to enter test mode
+ r = spimainram[(0x002894c-0x800)/4] & (~0x400);
+ return r | (((readinputport(2) ^ 0xFF)<<8) & 0x400);
+ }
+
+ /* rfjetj */
+ if (activecpu_get_pc()==0x0205f2e) cpu_spinuntil_int(); // idle
+
+// mame_printf_debug("%08x\n",activecpu_get_pc());
+
+
+ return spimainram[(0x002894c-0x800)/4];
+}
+
+static void init_spi(running_machine *machine)
+{
+ intelflash_init( 0, FLASH_INTEL_E28F008SA, NULL );
+ intelflash_init( 1, FLASH_INTEL_E28F008SA, NULL );
+
+ seibuspi_text_decrypt(memory_region(REGION_GFX1));
+ seibuspi_bg_decrypt(memory_region(REGION_GFX2), memory_region_length(REGION_GFX2));
+ seibuspi_sprite_decrypt(memory_region(REGION_GFX3), 0x400000);
+}
+
+static DRIVER_INIT( rdft )
+{
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x00298d0, 0x00298d3, 0, 0, rdft_speedup_r );
+
+ init_spi(machine);
+}
+
+static DRIVER_INIT( senkyu )
+{
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x0018cb4, 0x0018cb7, 0, 0, senkyu_speedup_r );
+
+ init_spi(machine);
+}
+
+static DRIVER_INIT( senkyua )
+{
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x0018c9c, 0x0018c9f, 0, 0, senkyua_speedup_r );
+
+ init_spi(machine);
+}
+
+static DRIVER_INIT( batlball )
+{
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x0018db4, 0x0018db7, 0, 0, batlball_speedup_r );
+
+ init_spi(machine);
+}
+
+static DRIVER_INIT( ejanhs )
+{
+// idle skip doesn't work properly?
+// memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x002d224, 0x002d227, 0, 0, ejanhs_speedup_r );
+
+ init_spi(machine);
+}
+
+static DRIVER_INIT( viprp1 )
+{
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x001e2e0, 0x001e2e3, 0, 0, viprp1_speedup_r );
+
+ init_spi(machine);
+}
+
+static DRIVER_INIT( viprp1o )
+{
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x001d49c, 0x001d49f, 0, 0, viprp1o_speedup_r );
+
+ init_spi(machine);
+}
+
+
+
+static void init_rf2(running_machine *machine)
+{
+ intelflash_init( 0, FLASH_INTEL_E28F008SA, NULL );
+ intelflash_init( 1, FLASH_INTEL_E28F008SA, NULL );
+
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x0282AC, 0x0282AF, 0, 0, rf2_speedup_r );
+ seibuspi_rise10_text_decrypt(memory_region(REGION_GFX1));
+ seibuspi_rise10_bg_decrypt(memory_region(REGION_GFX2), memory_region_length(REGION_GFX2));
+ seibuspi_rise10_sprite_decrypt(memory_region(REGION_GFX3), 0x600000);
+
+ memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x560, 0x563, 0, 0, sprite_dma_start_w);
+}
+
+static DRIVER_INIT( rdft2 )
+{
+ init_rf2(machine);
+}
+
+static DRIVER_INIT( rdft2us )
+{
+ init_rf2(machine);
+}
+
+
+static DRIVER_INIT( rfjet )
+{
+ intelflash_init( 0, FLASH_INTEL_E28F008SA, NULL );
+ intelflash_init( 1, FLASH_INTEL_E28F008SA, NULL );
+
+ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x002894c, 0x002894f, 0, 0, rfjet_speedup_r );
+ seibuspi_rise11_text_decrypt(memory_region(REGION_GFX1));
+ seibuspi_rise11_bg_decrypt(memory_region(REGION_GFX2), memory_region_length(REGION_GFX2));
+ seibuspi_rise11_sprite_decrypt(memory_region(REGION_GFX3), 0x800000);
+
+ memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x560, 0x563, 0, 0, sprite_dma_start_w);
+}
+
+/* SYS386 */
+
+static DRIVER_INIT( rdft22kc )
+{
+ init_rf2(machine);
+}
+
+static MACHINE_RESET( seibu386 )
+{
+ cpunum_set_irq_callback(0, spi_irq_callback);
+}
+
+static MACHINE_DRIVER_START( seibu386 )
+
+ /* basic machine hardware */
+ MDRV_CPU_ADD(I386, 40000000) /* AMD 386DX, 40MHz */
+ MDRV_CPU_PROGRAM_MAP(seibu386_map, 0)
+ MDRV_CPU_VBLANK_INT(spi_interrupt, 1)
+
+ MDRV_SCREEN_REFRESH_RATE(54)
+ MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+
+ MDRV_NVRAM_HANDLER(sxx2f)
+ MDRV_MACHINE_RESET(seibu386)
+
+ /* video hardware */
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER )
+ MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
+ MDRV_SCREEN_SIZE(64*8, 32*8)
+ MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
+ MDRV_GFXDECODE(spi)
+ MDRV_PALETTE_LENGTH(6144)
+
+ MDRV_VIDEO_START(spi)
+ MDRV_VIDEO_UPDATE(spi)
+
+ MDRV_SPEAKER_STANDARD_MONO("mono")
+
+ MDRV_SOUND_ADD(OKIM6295, 1431815)
+ MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MDRV_SOUND_ADD(OKIM6295, 1431815)
+ MDRV_SOUND_CONFIG(okim6295_interface_region_2_pin7high)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_DRIVER_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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(batlbala)
+ ROM_REGION32_LE(0x200000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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(batlbalu)
+ ROM_REGION32_LE(0x200000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_GFX1, 0)
+ ROM_LOAD24_WORD("v_5-n.413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) )
+ ROM_LOAD24_BYTE("v_6-n.48", 0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) )
+
+ ROM_REGION( 0x600000, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_GFX1, 0)
+ ROM_LOAD24_WORD("v_5-n.413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) )
+ ROM_LOAD24_BYTE("v_6-n.48", 0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) )
+
+ ROM_REGION( 0x600000, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_GFX1, 0)
+ ROM_LOAD24_WORD("v_5-n.413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) )
+ ROM_LOAD24_BYTE("v_6-n.48", 0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) )
+
+ ROM_REGION( 0x600000, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_USER2, ROMREGION_ERASE00) /* sound roms */
+ ROM_LOAD("v_pcm.215", 0x000000, 0x080000, CRC(e3111b60) SHA1(f7a7747f29c392876e43efcb4e6c0741454082f2) )
+ ROM_CONTINUE(0x100000,0x80000)
+ROM_END
+
+ROM_START(viprp1o)
+ ROM_REGION32_LE(0x200000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_USER1, 0) /* i386 program */
+ ROM_LOAD32_BYTE("seibu_1", 0x000000, 0x80000, CRC(283ba7b7) SHA1(28122e04b72f1163c69f3f845f6a493fdb6ed652) )
+ 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, REGION_GFX1, 0)
+ ROM_LOAD24_WORD("seibu_5", 0x000000, 0x20000, CRC(80920fed) SHA1(b35ed080925f6d0a0b6d2d1ab4fa919f625b1e6a) )
+ ROM_LOAD24_BYTE("seibu_6", 0x000002, 0x10000, CRC(e71a8722) SHA1(3e0133fe1f85058ca6d9ac59d731f342c6b50e92) )
+
+ ROM_REGION( 0x600000, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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(rdftdi)
+ ROM_REGION32_LE(0x200000, REGION_USER1, 0) /* i386 program */
+ ROM_LOAD32_BYTE("u211.bin", 0x000000, 0x80000, CRC(fc0e2885) SHA1(79621155d992d504e993bd3ee0d6ff3903bd5415) )
+ 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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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(rdft2us) /* Single board version SXX2F */
+ ROM_REGION32_LE(0x200000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_CPU2, 0) /* 256k for the Z80 */
+ ROM_LOAD("zprg.u091", 0x000000, 0x20000, CRC(cc543c4f) SHA1(6e5c93fd3d21c594571b071d4a830211e1f162b2) )
+
+ ROM_REGION(0x280000, REGION_SOUND1, 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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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) */
+ ROM_REGION32_LE(0x200000, REGION_USER1, 0) /* i386 program */
+ ROM_LOAD32_BYTE("prg0.met", 0x000000, 0x80000, CRC(046b3f0e) SHA1(033898f658d6007f891828835734422d4af36321) )
+ 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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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(rdft2a2) /* SPI Cart, Asia (Dream Island license) */
+ ROM_REGION32_LE(0x200000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, ROMREGION_ERASE00)
+
+ ROM_REGION(0x280000, REGION_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(rfjetus) /* Single board version SXX2G */
+ ROM_REGION32_LE(0x200000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_CPU2, 0) /* 256k for the Z80 */
+ ROM_LOAD("rfj-05.u091", 0x000000, 0x40000, CRC(a55e8799) SHA1(5d4ca9ae920ab54e23ee3b1b33db72711e744516) ) /* ZPRG */
+
+ ROM_REGION(0x280000, REGION_SOUND1, 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_END
+
+
+
+/*******************************************************************/
+/* SYS386 games */
+
+ROM_START(rdft22kc)
+ ROM_REGION32_LE(0x200000, REGION_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, REGION_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, REGION_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, REGION_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, REGION_SOUND1, 0) /* sound data for MSM6295 */
+ ROM_LOAD("pcm0.1022", 0x000000, 0x80000, CRC(fd599b35) SHA1(00c0307d1b503bd5ce02d7960ce5e1ad600a7290) )
+
+ ROM_REGION( 0x80000, REGION_SOUND2, 0) /* sound data for MSM6295 */
+ ROM_LOAD("pcm1.1023", 0x000000, 0x80000, CRC(8b716356) SHA1(42ee1896c02518cd1e9cb0dc130321834665a79e) )
+ROM_END
+
+/*******************************************************************/
+
+
+/* SPI */
+GAME( 1995, senkyu, 0, spi, spi_3button, senkyu, ROT0, "Seibu Kaihatsu", "Senkyu (Japan)", 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, batlbala, senkyu, spi, spi_3button, batlball, ROT0, "Seibu Kaihatsu (Metrotainment License)", "Battle Balls (Asia)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 1995, batlbalu, 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, 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, viprp1o, 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, Metrotainment license)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+
+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, rdftdi, rdft, spi, spi_3button, rdft, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Dream Island Co. license)", 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( 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 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 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( 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, rfjetus, rfjet, sxx2g, spi_2button, rfjet, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US, 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 )