trunk/src/mame/drivers/seibuspi.c
| r23502 | r23503 | |
| 1 | 1 | /* |
| 2 | 2 | Seibu SPI Hardware |
| 3 | | Seibu SYS386 |
| 3 | Seibu SYS386I |
| 4 | Seibu SYS386F |
| 4 | 5 | |
| 5 | 6 | Driver by Ville Linde |
| 6 | 7 | |
| r23502 | r23503 | |
| 21 | 22 | YMF271F Sound chip |
| 22 | 23 | Seibu Custom GFX chip |
| 23 | 24 | |
| 24 | | SYS386 seems like a lower-cost version of single-board SPI. |
| 25 | SYS386I seems like a lower-cost version of single-board SPI. |
| 25 | 26 | It has a 40MHz AMD 386 and a considerably weaker sound system (dual MSM6295). |
| 26 | 27 | |
| 27 | 28 | TODO: |
| r23502 | r23503 | |
| 45 | 46 | put the jumper back to the original position and reboot the PCB. The new |
| 46 | 47 | game then plays. |
| 47 | 48 | |
| 49 | The SPI mainboard is region locked. You can only play cartridges that are |
| 50 | from the same region, otherwise the updater will give a checksum error. |
| 51 | |
| 48 | 52 | There were a few revisions of this hardware, though most are the same with only |
| 49 | 53 | minor changes such as different IC revisions etc. |
| 50 | 54 | |
| r23502 | r23503 | |
| 1029 | 1033 | |
| 1030 | 1034 | /********************************************************************/ |
| 1031 | 1035 | |
| 1032 | | static ADDRESS_MAP_START( seibu386_map, AS_PROGRAM, 32, seibuspi_state ) |
| 1036 | static ADDRESS_MAP_START( sys386i_map, AS_PROGRAM, 32, seibuspi_state ) |
| 1033 | 1037 | AM_RANGE(0x00000000, 0x000003ff) AM_RAM |
| 1034 | 1038 | AM_RANGE(0x00000414, 0x00000417) AM_WRITENOP |
| 1035 | 1039 | AM_RANGE(0x00000418, 0x0000041b) AM_READWRITE(spi_layer_bank_r, spi_layer_bank_w) |
| r23502 | r23503 | |
| 1061 | 1065 | |
| 1062 | 1066 | /********************************************************************/ |
| 1063 | 1067 | |
| 1064 | | static ADDRESS_MAP_START( sys386f2_map, AS_PROGRAM, 32, seibuspi_state ) |
| 1068 | static ADDRESS_MAP_START( sys386f_map, AS_PROGRAM, 32, seibuspi_state ) |
| 1065 | 1069 | AM_RANGE(0x00000000, 0x0000000f) AM_RAM |
| 1066 | 1070 | AM_RANGE(0x00000010, 0x00000013) AM_READ(spi_int_r) // ? |
| 1067 | 1071 | AM_RANGE(0x00000090, 0x000003ff) AM_RAM |
| r23502 | r23503 | |
| 1087 | 1091 | READ8_MEMBER(seibuspi_state::flashrom_read) |
| 1088 | 1092 | { |
| 1089 | 1093 | offset &= 0x1fffff; |
| 1090 | | if (offset < 0x100000) |
| 1094 | |
| 1095 | // offset 0 goes directly to the SPI mainboard region code |
| 1096 | // this data is not stored on the flashrom itself |
| 1097 | if (offset == 0) |
| 1098 | return m_region_code; |
| 1099 | |
| 1100 | else if (offset < 0x100000) |
| 1091 | 1101 | return m_soundflash1->read(offset); |
| 1092 | 1102 | else |
| 1093 | 1103 | return m_soundflash2->read(offset & 0x0fffff); |
| r23502 | r23503 | |
| 1166 | 1176 | PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) |
| 1167 | 1177 | INPUT_PORTS_END |
| 1168 | 1178 | |
| 1169 | | static INPUT_PORTS_START( seibu386_2button ) |
| 1179 | static INPUT_PORTS_START( sys386i_2button ) |
| 1170 | 1180 | PORT_START("INPUTS") |
| 1171 | 1181 | PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) |
| 1172 | 1182 | PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) |
| r23502 | r23503 | |
| 1317 | 1327 | return 0xffffffff; |
| 1318 | 1328 | } |
| 1319 | 1329 | |
| 1320 | | static INPUT_PORTS_START( spi_ejsakura ) |
| 1330 | static INPUT_PORTS_START( sys386f_ejsakura ) |
| 1321 | 1331 | PORT_START("INPUTS") |
| 1322 | 1332 | PORT_BIT( 0xffffffff, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, seibuspi_state,ejsakura_keyboard_r, NULL) |
| 1323 | 1333 | |
| r23502 | r23503 | |
| 1727 | 1737 | #endif |
| 1728 | 1738 | GFXDECODE_END |
| 1729 | 1739 | |
| 1730 | | static const gfx_layout sys386f2_spritelayout = |
| 1740 | static const gfx_layout sys386f_spritelayout = |
| 1731 | 1741 | { |
| 1732 | 1742 | 16,16, |
| 1733 | 1743 | RGN_FRAC(1,4), |
| r23502 | r23503 | |
| 1742 | 1752 | 16*32 |
| 1743 | 1753 | }; |
| 1744 | 1754 | |
| 1745 | | static GFXDECODE_START( sys386f2) |
| 1755 | static GFXDECODE_START( sys386f) |
| 1746 | 1756 | GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout, 5632, 16 ) // Not used |
| 1747 | 1757 | GFXDECODE_ENTRY( "gfx2", 0, spi_tilelayout, 4096, 24 ) // Not used |
| 1748 | | GFXDECODE_ENTRY( "gfx3", 0, sys386f2_spritelayout, 0, 96 ) |
| 1758 | GFXDECODE_ENTRY( "gfx3", 0, sys386f_spritelayout, 0, 96 ) |
| 1749 | 1759 | GFXDECODE_END |
| 1750 | 1760 | |
| 1751 | 1761 | /********************************************************************************/ |
| r23502 | r23503 | |
| 1755 | 1765 | { |
| 1756 | 1766 | 6, /* address bits */ |
| 1757 | 1767 | 16, /* data bits */ |
| 1758 | | "*110", /* read command */ |
| 1768 | "*110", /* read command */ |
| 1759 | 1769 | "*101", /* write command */ |
| 1760 | 1770 | "*111", /* erase command */ |
| 1761 | 1771 | "*10000xxxx", /* lock command */ |
| r23502 | r23503 | |
| 1811 | 1821 | MACHINE_START_MEMBER(seibuspi_state,spi) |
| 1812 | 1822 | { |
| 1813 | 1823 | m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this)); |
| 1824 | |
| 1825 | // Where is the region code located? hardcoded on the pcb maybe? or on a PAL? |
| 1826 | // Luckily for us, it's also on a fixed location in the PRG ROM... |
| 1827 | m_region_code = memregion("maincpu")->base()[0x1ffffc]; |
| 1828 | logerror("Game region code: %02X\n", m_region_code); |
| 1829 | |
| 1830 | /* |
| 1831 | regions known: |
| 1832 | |
| 1833 | 0x01 Japan |
| 1834 | 0x10 US |
| 1835 | 0x20 Taiwan |
| 1836 | 0x22 Asia / Hong Kong |
| 1837 | 0x24 Korea |
| 1838 | 0x28 China |
| 1839 | 0x80 Europe / Germany |
| 1840 | 0x82 Austria |
| 1841 | 0x92 Italy |
| 1842 | 0x9c Switzerland |
| 1843 | 0x9e Australia |
| 1844 | 0xbe World? |
| 1845 | |
| 1846 | On SPI, 0xff will give a Hardware Error 81, |
| 1847 | an unmatched region will give a checksum error |
| 1848 | */ |
| 1814 | 1849 | } |
| 1815 | 1850 | |
| 1816 | 1851 | MACHINE_RESET_MEMBER(seibuspi_state,spi) |
| r23502 | r23503 | |
| 1820 | 1855 | membank("bank1")->set_entry(0); |
| 1821 | 1856 | m_z80_lastbank = 0; |
| 1822 | 1857 | m_z80_prg_transfer_pos = 0; |
| 1823 | | |
| 1824 | | /* If the first value doesn't match, the game shows a checksum error */ |
| 1825 | | /* If any of the other values are wrong, the game goes to update mode */ |
| 1826 | | UINT8 *rombase = memregion("maincpu")->base(); |
| 1827 | | UINT8 country_code = rombase[0x1ffffc]; |
| 1828 | | |
| 1829 | | m_soundflash1->write(0, 0xff); |
| 1830 | | m_soundflash1->write(0, 0x10); |
| 1831 | | m_soundflash1->write(0, country_code); |
| 1832 | | |
| 1833 | | m_soundflash1->write(0, 0xff); |
| 1834 | | m_soundflash2->write(0, 0xff); |
| 1835 | 1858 | } |
| 1836 | 1859 | |
| 1837 | 1860 | static MACHINE_CONFIG_START( spi, seibuspi_state ) |
| r23502 | r23503 | |
| 1853 | 1876 | |
| 1854 | 1877 | MCFG_DS2404_ADD("ds2404", 1995, 1, 1) |
| 1855 | 1878 | |
| 1856 | | MCFG_INTEL_E28F008SA_ADD("soundflash1") |
| 1857 | | MCFG_INTEL_E28F008SA_ADD("soundflash2") |
| 1879 | MCFG_INTEL_E28F008SA_ADD("soundflash1") // Sharp LH28F008 on newer mainboard revision |
| 1880 | MCFG_INTEL_E28F008SA_ADD("soundflash2") // " |
| 1858 | 1881 | |
| 1859 | 1882 | MCFG_FIFO7200_ADD("soundfifo1", 0x200) // LH5496D, but on single board hw it's one CY7C421 |
| 1860 | 1883 | MCFG_FIFO7200_ADD("soundfifo2", 0x200) // " |
| r23502 | r23503 | |
| 1887 | 1910 | |
| 1888 | 1911 | /* single boards */ |
| 1889 | 1912 | |
| 1890 | | MACHINE_START_MEMBER(seibuspi_state,sxx2e) |
| 1891 | | { |
| 1892 | | m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this)); |
| 1893 | | } |
| 1894 | | |
| 1895 | 1913 | MACHINE_RESET_MEMBER(seibuspi_state,sxx2e) |
| 1896 | 1914 | { |
| 1897 | 1915 | membank("bank1")->set_entry(0); |
| r23502 | r23503 | |
| 1908 | 1926 | MCFG_CPU_MODIFY("audiocpu") |
| 1909 | 1927 | MCFG_CPU_PROGRAM_MAP(sbsound_map) |
| 1910 | 1928 | |
| 1911 | | MCFG_MACHINE_START_OVERRIDE(seibuspi_state, sxx2e) |
| 1929 | MCFG_MACHINE_START_OVERRIDE(seibuspi_state, spi) |
| 1912 | 1930 | MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, sxx2e) |
| 1913 | 1931 | |
| 1914 | 1932 | MCFG_DEVICE_REMOVE("soundflash1") |
| r23502 | r23503 | |
| 1952 | 1970 | MACHINE_CONFIG_END |
| 1953 | 1971 | |
| 1954 | 1972 | |
| 1955 | | /* SYS386 */ |
| 1973 | /* SYS386I */ |
| 1956 | 1974 | |
| 1957 | | MACHINE_START_MEMBER(seibuspi_state,seibu386) |
| 1958 | | { |
| 1959 | | m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this)); |
| 1960 | | } |
| 1975 | static MACHINE_CONFIG_START( sys386i, seibuspi_state ) |
| 1961 | 1976 | |
| 1962 | | MACHINE_RESET_MEMBER(seibuspi_state,seibu386) |
| 1963 | | { |
| 1964 | | } |
| 1965 | | |
| 1966 | | static MACHINE_CONFIG_START( seibu386, seibuspi_state ) |
| 1967 | | |
| 1968 | 1977 | /* basic machine hardware */ |
| 1969 | 1978 | MCFG_CPU_ADD("maincpu", I386, XTAL_40MHz) // AMD 386DX, 40MHz |
| 1970 | | MCFG_CPU_PROGRAM_MAP(seibu386_map) |
| 1979 | MCFG_CPU_PROGRAM_MAP(sys386i_map) |
| 1971 | 1980 | MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt) |
| 1972 | 1981 | |
| 1973 | | MCFG_MACHINE_START_OVERRIDE(seibuspi_state, seibu386) |
| 1974 | | MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, seibu386) |
| 1982 | MCFG_MACHINE_START_OVERRIDE(seibuspi_state, spi) |
| 1975 | 1983 | |
| 1976 | 1984 | MCFG_EEPROM_ADD("eeprom", eeprom_intf) |
| 1977 | 1985 | |
| r23502 | r23503 | |
| 1999 | 2007 | MACHINE_CONFIG_END |
| 2000 | 2008 | |
| 2001 | 2009 | |
| 2002 | | /* SYS386-F V2.0 */ |
| 2010 | /* SYS386F */ |
| 2003 | 2011 | |
| 2004 | | DRIVER_INIT_MEMBER(seibuspi_state,sys386f2) |
| 2012 | DRIVER_INIT_MEMBER(seibuspi_state,sys386f) |
| 2005 | 2013 | { |
| 2006 | 2014 | int i, j; |
| 2007 | 2015 | UINT16 *src = (UINT16 *)memregion("gfx3")->base(); |
| r23502 | r23503 | |
| 2020 | 2028 | } |
| 2021 | 2029 | } |
| 2022 | 2030 | |
| 2023 | | static MACHINE_CONFIG_START( sys386f2, seibuspi_state ) |
| 2031 | static MACHINE_CONFIG_START( sys386f, seibuspi_state ) |
| 2024 | 2032 | |
| 2025 | 2033 | /* basic machine hardware */ |
| 2026 | 2034 | MCFG_CPU_ADD("maincpu", I386, XTAL_50MHz/2) // Intel i386DX, 25MHz |
| 2027 | | MCFG_CPU_PROGRAM_MAP(sys386f2_map) |
| 2035 | MCFG_CPU_PROGRAM_MAP(sys386f_map) |
| 2028 | 2036 | MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt) |
| 2029 | 2037 | |
| 2030 | | MCFG_MACHINE_START_OVERRIDE(seibuspi_state, seibu386) |
| 2031 | | MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, seibu386) |
| 2038 | MCFG_MACHINE_START_OVERRIDE(seibuspi_state, spi) |
| 2032 | 2039 | |
| 2033 | 2040 | MCFG_EEPROM_ADD("eeprom", eeprom_intf) |
| 2034 | 2041 | |
| r23502 | r23503 | |
| 2039 | 2046 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 2040 | 2047 | MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1) |
| 2041 | 2048 | |
| 2042 | | MCFG_GFXDECODE(sys386f2) |
| 2049 | MCFG_GFXDECODE(sys386f) |
| 2043 | 2050 | MCFG_PALETTE_LENGTH(8192) |
| 2044 | 2051 | |
| 2045 | | MCFG_VIDEO_START_OVERRIDE(seibuspi_state, sys386f2) |
| 2046 | | MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_sys386f2) |
| 2052 | MCFG_VIDEO_START_OVERRIDE(seibuspi_state, sys386f) |
| 2053 | MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_sys386f) |
| 2047 | 2054 | |
| 2048 | 2055 | /* sound hardware */ |
| 2049 | 2056 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| r23502 | r23503 | |
| 3468 | 3475 | /*******************************************************************/ |
| 3469 | 3476 | /* SYS386 games */ |
| 3470 | 3477 | |
| 3471 | | ROM_START( rdft22kc ) |
| 3478 | ROM_START( rdft22kc ) /* SYS386I */ |
| 3472 | 3479 | ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */ |
| 3473 | 3480 | ROM_LOAD32_WORD("prg0-1.267", 0x000000, 0x100000, CRC(0d7d6eb8) SHA1(3a71e1e0ba5bb500dc026debbb6189723c0c2890) ) |
| 3474 | 3481 | ROM_LOAD32_WORD("prg2-3.266", 0x000002, 0x100000, CRC(ead53e69) SHA1(b0e2e06f403317054ecb48d2747034424245f129) ) |
| r23502 | r23503 | |
| 3499 | 3506 | ROM_LOAD("pcm1.1023", 0x000000, 0x80000, CRC(8b716356) SHA1(42ee1896c02518cd1e9cb0dc130321834665a79e) ) |
| 3500 | 3507 | ROM_END |
| 3501 | 3508 | |
| 3502 | | ROM_START( rfjet2kc ) |
| 3509 | ROM_START( rfjet2kc ) /* SYS386I */ |
| 3503 | 3510 | ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */ |
| 3504 | 3511 | ROM_LOAD32_WORD("prg01.u267", 0x000000, 0x100000, CRC(36019fa8) SHA1(28baf0ed4a53b818c1e6986d5d3491373524eca1) ) |
| 3505 | 3512 | ROM_LOAD32_WORD("prg23.u266", 0x000002, 0x100000, CRC(65695dde) SHA1(1b25dde03bc9319414144fc13b34c455112f4076) ) |
| r23502 | r23503 | |
| 3575 | 3582 | /*******************************************************************/ |
| 3576 | 3583 | |
| 3577 | 3584 | /* SPI */ |
| 3578 | | GAME( 1995, senkyu, 0, spi, spi_3button, seibuspi_state, senkyu, ROT0, "Seibu Kaihatsu", "Senkyu (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3579 | | GAME( 1995, senkyua, senkyu, spi, spi_3button, seibuspi_state, senkyua, ROT0, "Seibu Kaihatsu", "Senkyu (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3580 | | GAME( 1995, batlball, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Tuning license)", "Battle Balls (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3581 | | GAME( 1995, batlballu, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Fabtek license)", "Battle Balls (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3582 | | GAME( 1995, batlballa, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3583 | | GAME( 1995, batlballe, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia, earlier)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3585 | GAME( 1995, senkyu, 0, spi, spi_3button, seibuspi_state, senkyu, ROT0, "Seibu Kaihatsu", "Senkyu (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3586 | GAME( 1995, senkyua, senkyu, spi, spi_3button, seibuspi_state, senkyua, ROT0, "Seibu Kaihatsu", "Senkyu (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3587 | GAME( 1995, batlball, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Tuning license)", "Battle Balls (Germany)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3588 | GAME( 1995, batlballu, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Fabtek license)", "Battle Balls (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3589 | GAME( 1995, batlballa, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3590 | GAME( 1995, batlballe, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia, earlier)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3584 | 3591 | |
| 3585 | | GAME( 1995, viprp1, 0, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, World)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3586 | | GAME( 1995, viprp1u, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (New Version, US set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* New version, "=U.S.A=" seems part of title */ |
| 3587 | | GAME( 1995, viprp1ua, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (New Version, US set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* New version, "=U.S.A=" seems part of title */ |
| 3588 | | GAME( 1995, viprp1j, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3589 | | GAME( 1995, viprp1s, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Switzerland)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3592 | GAME( 1995, viprp1, 0, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, World)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3593 | GAME( 1995, viprp1u, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (New Version, US set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* New version, "=U.S.A=" seems part of title */ |
| 3594 | GAME( 1995, viprp1ua, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (New Version, US set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* New version, "=U.S.A=" seems part of title */ |
| 3595 | GAME( 1995, viprp1j, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3596 | GAME( 1995, viprp1s, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Switzerland)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3590 | 3597 | |
| 3591 | | GAME( 1995, viprp1ot, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Tuning license)", "Viper Phase 1 (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3592 | | GAME( 1995, viprp1oj, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3593 | | GAME( 1995, viprp1hk, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Viper Phase 1 (Hong Kong)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* "=HONG KONG=" seems part of title */ |
| 3598 | GAME( 1995, viprp1ot, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Tuning license)", "Viper Phase 1 (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3599 | GAME( 1995, viprp1oj, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3600 | GAME( 1995, viprp1hk, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Viper Phase 1 (Hong Kong)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* "=HONG KONG=" seems part of title */ |
| 3594 | 3601 | |
| 3595 | | GAME( 1996, ejanhs, 0, spi, spi_ejanhs, seibuspi_state, ejanhs, ROT0, "Seibu Kaihatsu", "E-Jan High School (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3602 | GAME( 1996, ejanhs, 0, spi, spi_ejanhs, seibuspi_state, ejanhs, ROT0, "Seibu Kaihatsu", "E-Jan High School (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3596 | 3603 | |
| 3597 | | GAME( 1996, rdft, 0, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3598 | | GAME( 1996, rdftj, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3599 | | GAME( 1996, rdftu, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3600 | | GAME( 1996, rdftam, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3601 | | GAME( 1996, rdftadi, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3602 | | GAME( 1996, rdftau, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Australia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3603 | | GAME( 1996, rdftit, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Italy)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3604 | | GAME( 1996, rdfta, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Austria)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3604 | GAME( 1996, rdft, 0, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3605 | GAME( 1996, rdftj, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3606 | GAME( 1996, rdftu, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3607 | GAME( 1996, rdftam, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3608 | GAME( 1996, rdftadi, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3609 | GAME( 1996, rdftau, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Australia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3610 | GAME( 1996, rdftit, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Italy)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3611 | GAME( 1996, rdfta, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Austria)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3605 | 3612 | |
| 3606 | | GAME( 1997, rdft2, 0, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters 2 - Operation Hell Dive (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3607 | | GAME( 1997, rdft2u, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3608 | | GAME( 1997, rdft2j, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3609 | | GAME( 1997, rdft2j2, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3610 | | GAME( 1997, rdft2a, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters 2 - Operation Hell Dive (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3611 | | GAME( 1997, rdft2a2, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters 2 - Operation Hell Dive (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3612 | | GAME( 1997, rdft2t, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Taiwan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3613 | GAME( 1997, rdft2, 0, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters 2 - Operation Hell Dive (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3614 | GAME( 1997, rdft2u, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3615 | GAME( 1997, rdft2j, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3616 | GAME( 1997, rdft2j2, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3617 | GAME( 1997, rdft2a, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters 2 - Operation Hell Dive (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3618 | GAME( 1997, rdft2a2, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters 2 - Operation Hell Dive (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3619 | GAME( 1997, rdft2t, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Taiwan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3613 | 3620 | |
| 3614 | | GAME( 1998, rfjet, 0, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3615 | | GAME( 1998, rfjetu, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3616 | | GAME( 1998, rfjetj, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3617 | | GAME( 1998, rfjeta, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters Jet (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3618 | | GAME( 1998, rfjett, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Taiwan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3621 | GAME( 1998, rfjet, 0, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3622 | GAME( 1998, rfjetu, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3623 | GAME( 1998, rfjetj, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3624 | GAME( 1998, rfjeta, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters Jet (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3625 | GAME( 1998, rfjett, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Taiwan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3619 | 3626 | |
| 3620 | 3627 | /* SXX2E */ |
| 3621 | | GAME( 1996, rdfts, rdft, sxx2e, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Explorer System Corp. license)", "Raiden Fighters (Taiwan, single board)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3628 | GAME( 1996, rdfts, rdft, sxx2e, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Explorer System Corp. license)", "Raiden Fighters (Taiwan, single board)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3622 | 3629 | |
| 3623 | 3630 | /* SXX2F */ |
| 3624 | | GAME( 1997, rdft2us, rdft2, sxx2f, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US, single board)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) // title screen shows small '.1' |
| 3631 | GAME( 1997, rdft2us, rdft2, sxx2f, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US, single board)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) // title screen shows small '.1' |
| 3625 | 3632 | |
| 3626 | 3633 | /* SXX2G */ |
| 3627 | | GAME( 1999, rfjets, rfjet, sxx2g, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (US, single board set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) // has 1998-99 copyright + planes unlocked |
| 3628 | | GAME( 1999, rfjetsa, rfjet, sxx2g, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (US, single board set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) // has 1998-99 copyright + planes unlocked |
| 3634 | GAME( 1999, rfjets, rfjet, sxx2g, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (US, single board set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) // has 1998-99 copyright + planes unlocked |
| 3635 | GAME( 1999, rfjetsa, rfjet, sxx2g, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (US, single board set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) // has 1998-99 copyright + planes unlocked |
| 3629 | 3636 | |
| 3630 | 3637 | /* SYS386I */ |
| 3631 | | GAME( 2000, rdft22kc, rdft2, seibu386, seibu386_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive 2000 (China, SYS386I)", GAME_IMPERFECT_GRAPHICS ) |
| 3632 | | GAME( 2000, rfjet2kc, rfjet, seibu386, seibu386_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet 2000 (China, SYS386I)", GAME_IMPERFECT_GRAPHICS ) |
| 3638 | GAME( 2000, rdft22kc, rdft2, sys386i, sys386i_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive 2000 (China, SYS386I)", GAME_IMPERFECT_GRAPHICS ) |
| 3639 | GAME( 2000, rfjet2kc, rfjet, sys386i, sys386i_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet 2000 (China, SYS386I)", GAME_IMPERFECT_GRAPHICS ) |
| 3633 | 3640 | |
| 3634 | | /* SYS386F V2.0 */ |
| 3635 | | GAME( 1999, ejsakura, 0, sys386f2, spi_ejsakura, seibuspi_state, sys386f2, ROT0, "Seibu Kaihatsu", "E-Jan Sakurasou (v2.0)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3636 | | GAME( 1999, ejsakura12, ejsakura, sys386f2, spi_ejsakura, seibuspi_state, sys386f2, ROT0, "Seibu Kaihatsu", "E-Jan Sakurasou (v1.2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3641 | /* SYS386F */ |
| 3642 | GAME( 1999, ejsakura, 0, sys386f, sys386f_ejsakura, seibuspi_state, sys386f, ROT0, "Seibu Kaihatsu", "E-Jan Sakurasou (Japan, SYS386F V2.0)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 3643 | GAME( 1999, ejsakura12, ejsakura, sys386f, sys386f_ejsakura, seibuspi_state, sys386f, ROT0, "Seibu Kaihatsu", "E-Jan Sakurasou (Japan, SYS386F V1.2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |