Previous 199869 Revisions Next

r23503 Thursday 6th June, 2013 at 18:59:20 UTC by hap
less hacky implementation of region protection, with some help from Haze
[src/mame/drivers]seibuspi.c
[src/mame/includes]seibuspi.h
[src/mame/video]seibuspi.c

trunk/src/mame/drivers/seibuspi.c
r23502r23503
11/*
22      Seibu SPI Hardware
3      Seibu SYS386
3      Seibu SYS386I
4      Seibu SYS386F
45
56      Driver by Ville Linde
67
r23502r23503
2122          YMF271F Sound chip
2223          Seibu Custom GFX chip
2324
24      SYS386 seems like a lower-cost version of single-board SPI.
25      SYS386I seems like a lower-cost version of single-board SPI.
2526      It has a 40MHz AMD 386 and a considerably weaker sound system (dual MSM6295).
2627
2728TODO:
r23502r23503
4546put the jumper back to the original position and reboot the PCB. The new
4647game then plays.
4748
49The SPI mainboard is region locked. You can only play cartridges that are
50from the same region, otherwise the updater will give a checksum error.
51
4852There were a few revisions of this hardware, though most are the same with only
4953minor changes such as different IC revisions etc.
5054
r23502r23503
10291033
10301034/********************************************************************/
10311035
1032static ADDRESS_MAP_START( seibu386_map, AS_PROGRAM, 32, seibuspi_state )
1036static ADDRESS_MAP_START( sys386i_map, AS_PROGRAM, 32, seibuspi_state )
10331037   AM_RANGE(0x00000000, 0x000003ff) AM_RAM
10341038   AM_RANGE(0x00000414, 0x00000417) AM_WRITENOP
10351039   AM_RANGE(0x00000418, 0x0000041b) AM_READWRITE(spi_layer_bank_r, spi_layer_bank_w)
r23502r23503
10611065
10621066/********************************************************************/
10631067
1064static ADDRESS_MAP_START( sys386f2_map, AS_PROGRAM, 32, seibuspi_state )
1068static ADDRESS_MAP_START( sys386f_map, AS_PROGRAM, 32, seibuspi_state )
10651069   AM_RANGE(0x00000000, 0x0000000f) AM_RAM
10661070   AM_RANGE(0x00000010, 0x00000013) AM_READ(spi_int_r) // ?
10671071   AM_RANGE(0x00000090, 0x000003ff) AM_RAM
r23502r23503
10871091READ8_MEMBER(seibuspi_state::flashrom_read)
10881092{
10891093   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)
10911101      return m_soundflash1->read(offset);
10921102   else
10931103      return m_soundflash2->read(offset & 0x0fffff);
r23502r23503
11661176   PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
11671177INPUT_PORTS_END
11681178
1169static INPUT_PORTS_START( seibu386_2button )
1179static INPUT_PORTS_START( sys386i_2button )
11701180   PORT_START("INPUTS")
11711181   PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
11721182   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
r23502r23503
13171327   return 0xffffffff;
13181328}
13191329
1320static INPUT_PORTS_START( spi_ejsakura )
1330static INPUT_PORTS_START( sys386f_ejsakura )
13211331   PORT_START("INPUTS")
13221332   PORT_BIT( 0xffffffff, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, seibuspi_state,ejsakura_keyboard_r, NULL)
13231333
r23502r23503
17271737#endif
17281738GFXDECODE_END
17291739
1730static const gfx_layout sys386f2_spritelayout =
1740static const gfx_layout sys386f_spritelayout =
17311741{
17321742   16,16,
17331743   RGN_FRAC(1,4),
r23502r23503
17421752   16*32
17431753};
17441754
1745static GFXDECODE_START( sys386f2)
1755static GFXDECODE_START( sys386f)
17461756   GFXDECODE_ENTRY( "gfx1", 0, spi_charlayout,          5632, 16 ) // Not used
17471757   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 )
17491759GFXDECODE_END
17501760
17511761/********************************************************************************/
r23502r23503
17551765{
17561766   6,              /* address bits */
17571767   16,             /* data bits */
1758   "*110",         /* read command */
1768   "*110",         /* read command */
17591769   "*101",         /* write command */
17601770   "*111",         /* erase command */
17611771   "*10000xxxx",   /* lock command */
r23502r23503
18111821MACHINE_START_MEMBER(seibuspi_state,spi)
18121822{
18131823   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   */
18141849}
18151850
18161851MACHINE_RESET_MEMBER(seibuspi_state,spi)
r23502r23503
18201855   membank("bank1")->set_entry(0);
18211856   m_z80_lastbank = 0;
18221857   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);
18351858}
18361859
18371860static MACHINE_CONFIG_START( spi, seibuspi_state )
r23502r23503
18531876
18541877   MCFG_DS2404_ADD("ds2404", 1995, 1, 1)
18551878
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") // "
18581881
18591882   MCFG_FIFO7200_ADD("soundfifo1", 0x200) // LH5496D, but on single board hw it's one CY7C421
18601883   MCFG_FIFO7200_ADD("soundfifo2", 0x200) // "
r23502r23503
18871910
18881911/* single boards */
18891912
1890MACHINE_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
18951913MACHINE_RESET_MEMBER(seibuspi_state,sxx2e)
18961914{
18971915   membank("bank1")->set_entry(0);
r23502r23503
19081926   MCFG_CPU_MODIFY("audiocpu")
19091927   MCFG_CPU_PROGRAM_MAP(sbsound_map)
19101928
1911   MCFG_MACHINE_START_OVERRIDE(seibuspi_state, sxx2e)
1929   MCFG_MACHINE_START_OVERRIDE(seibuspi_state, spi)
19121930   MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, sxx2e)
19131931
19141932   MCFG_DEVICE_REMOVE("soundflash1")
r23502r23503
19521970MACHINE_CONFIG_END
19531971
19541972
1955/* SYS386 */
1973/* SYS386I */
19561974
1957MACHINE_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}
1975static MACHINE_CONFIG_START( sys386i, seibuspi_state )
19611976
1962MACHINE_RESET_MEMBER(seibuspi_state,seibu386)
1963{
1964}
1965
1966static MACHINE_CONFIG_START( seibu386, seibuspi_state )
1967
19681977   /* basic machine hardware */
19691978   MCFG_CPU_ADD("maincpu", I386, XTAL_40MHz) // AMD 386DX, 40MHz
1970   MCFG_CPU_PROGRAM_MAP(seibu386_map)
1979   MCFG_CPU_PROGRAM_MAP(sys386i_map)
19711980   MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
19721981
1973   MCFG_MACHINE_START_OVERRIDE(seibuspi_state, seibu386)
1974   MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, seibu386)
1982   MCFG_MACHINE_START_OVERRIDE(seibuspi_state, spi)
19751983
19761984   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
19771985
r23502r23503
19992007MACHINE_CONFIG_END
20002008
20012009
2002/* SYS386-F V2.0 */
2010/* SYS386F */
20032011
2004DRIVER_INIT_MEMBER(seibuspi_state,sys386f2)
2012DRIVER_INIT_MEMBER(seibuspi_state,sys386f)
20052013{
20062014   int i, j;
20072015   UINT16 *src = (UINT16 *)memregion("gfx3")->base();
r23502r23503
20202028   }
20212029}
20222030
2023static MACHINE_CONFIG_START( sys386f2, seibuspi_state )
2031static MACHINE_CONFIG_START( sys386f, seibuspi_state )
20242032
20252033   /* basic machine hardware */
20262034   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)
20282036   MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
20292037
2030   MCFG_MACHINE_START_OVERRIDE(seibuspi_state, seibu386)
2031   MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, seibu386)
2038   MCFG_MACHINE_START_OVERRIDE(seibuspi_state, spi)
20322039
20332040   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
20342041
r23502r23503
20392046   MCFG_SCREEN_SIZE(64*8, 32*8)
20402047   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
20412048
2042   MCFG_GFXDECODE(sys386f2)
2049   MCFG_GFXDECODE(sys386f)
20432050   MCFG_PALETTE_LENGTH(8192)
20442051
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)
20472054
20482055   /* sound hardware */
20492056   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r23502r23503
34683475/*******************************************************************/
34693476/* SYS386 games */
34703477
3471ROM_START( rdft22kc )
3478ROM_START( rdft22kc ) /* SYS386I */
34723479   ROM_REGION32_LE( 0x200000, "maincpu", 0 )   /* i386 program */
34733480   ROM_LOAD32_WORD("prg0-1.267", 0x000000, 0x100000, CRC(0d7d6eb8) SHA1(3a71e1e0ba5bb500dc026debbb6189723c0c2890) )
34743481   ROM_LOAD32_WORD("prg2-3.266", 0x000002, 0x100000, CRC(ead53e69) SHA1(b0e2e06f403317054ecb48d2747034424245f129) )
r23502r23503
34993506   ROM_LOAD("pcm1.1023", 0x000000, 0x80000, CRC(8b716356) SHA1(42ee1896c02518cd1e9cb0dc130321834665a79e) )
35003507ROM_END
35013508
3502ROM_START( rfjet2kc )
3509ROM_START( rfjet2kc ) /* SYS386I */
35033510   ROM_REGION32_LE( 0x200000, "maincpu", 0 )   /* i386 program */
35043511   ROM_LOAD32_WORD("prg01.u267", 0x000000, 0x100000, CRC(36019fa8) SHA1(28baf0ed4a53b818c1e6986d5d3491373524eca1) )
35053512   ROM_LOAD32_WORD("prg23.u266", 0x000002, 0x100000, CRC(65695dde) SHA1(1b25dde03bc9319414144fc13b34c455112f4076) )
r23502r23503
35753582/*******************************************************************/
35763583
35773584/* SPI */
3578GAME( 1995, senkyu,     0,        spi,      spi_3button,      seibuspi_state, senkyu,   ROT0,   "Seibu Kaihatsu", "Senkyu (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3579GAME( 1995, senkyua,    senkyu,   spi,      spi_3button,      seibuspi_state, senkyua,  ROT0,   "Seibu Kaihatsu", "Senkyu (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3580GAME( 1995, batlball,   senkyu,   spi,      spi_3button,      seibuspi_state, batlball, ROT0,   "Seibu Kaihatsu (Tuning license)", "Battle Balls (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3581GAME( 1995, batlballu,  senkyu,   spi,      spi_3button,      seibuspi_state, batlball, ROT0,   "Seibu Kaihatsu (Fabtek license)", "Battle Balls (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3582GAME( 1995, batlballa,  senkyu,   spi,      spi_3button,      seibuspi_state, batlball, ROT0,   "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3583GAME( 1995, batlballe,  senkyu,   spi,      spi_3button,      seibuspi_state, batlball, ROT0,   "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia, earlier)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3585GAME( 1995, senkyu,     0,        spi,     spi_3button, seibuspi_state, senkyu,   ROT0,   "Seibu Kaihatsu", "Senkyu (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3586GAME( 1995, senkyua,    senkyu,   spi,     spi_3button, seibuspi_state, senkyua,  ROT0,   "Seibu Kaihatsu", "Senkyu (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3587GAME( 1995, batlball,   senkyu,   spi,     spi_3button, seibuspi_state, batlball, ROT0,   "Seibu Kaihatsu (Tuning license)", "Battle Balls (Germany)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3588GAME( 1995, batlballu,  senkyu,   spi,     spi_3button, seibuspi_state, batlball, ROT0,   "Seibu Kaihatsu (Fabtek license)", "Battle Balls (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3589GAME( 1995, batlballa,  senkyu,   spi,     spi_3button, seibuspi_state, batlball, ROT0,   "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3590GAME( 1995, batlballe,  senkyu,   spi,     spi_3button, seibuspi_state, batlball, ROT0,   "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Asia, earlier)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
35843591
3585GAME( 1995, viprp1,     0,        spi,      spi_3button,      seibuspi_state, viprp1,   ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, World)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3586GAME( 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 */
3587GAME( 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 */
3588GAME( 1995, viprp1j,    viprp1,   spi,      spi_3button,      seibuspi_state, viprp1,   ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3589GAME( 1995, viprp1s,    viprp1,   spi,      spi_3button,      seibuspi_state, viprp1,   ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Switzerland)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3592GAME( 1995, viprp1,     0,        spi,     spi_3button, seibuspi_state, viprp1,   ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, World)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3593GAME( 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 */
3594GAME( 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 */
3595GAME( 1995, viprp1j,    viprp1,   spi,     spi_3button, seibuspi_state, viprp1,   ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3596GAME( 1995, viprp1s,    viprp1,   spi,     spi_3button, seibuspi_state, viprp1,   ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Switzerland)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
35903597
3591GAME( 1995, viprp1ot,   viprp1,   spi,      spi_3button,      seibuspi_state, viprp1,   ROT270, "Seibu Kaihatsu (Tuning license)", "Viper Phase 1 (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3592GAME( 1995, viprp1oj,   viprp1,   spi,      spi_3button,      seibuspi_state, viprp1o,  ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3593GAME( 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 */
3598GAME( 1995, viprp1ot,   viprp1,   spi,     spi_3button, seibuspi_state, viprp1,   ROT270, "Seibu Kaihatsu (Tuning license)", "Viper Phase 1 (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3599GAME( 1995, viprp1oj,   viprp1,   spi,     spi_3button, seibuspi_state, viprp1o,  ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3600GAME( 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 */
35943601
3595GAME( 1996, ejanhs,     0,        spi,      spi_ejanhs,       seibuspi_state, ejanhs,   ROT0,   "Seibu Kaihatsu", "E-Jan High School (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3602GAME( 1996, ejanhs,     0,        spi,     spi_ejanhs,  seibuspi_state, ejanhs,   ROT0,   "Seibu Kaihatsu", "E-Jan High School (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
35963603
3597GAME( 1996, rdft,       0,        spi,      spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3598GAME( 1996, rdftj,      rdft,     spi,      spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3599GAME( 1996, rdftu,      rdft,     spi,      spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3600GAME( 1996, rdftam,     rdft,     spi,      spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3601GAME( 1996, rdftadi,    rdft,     spi,      spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3602GAME( 1996, rdftau,     rdft,     spi,      spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Australia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3603GAME( 1996, rdftit,     rdft,     spi,      spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Italy)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3604GAME( 1996, rdfta,      rdft,     spi,      spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Austria)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3604GAME( 1996, rdft,       0,        spi,     spi_3button, seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3605GAME( 1996, rdftj,      rdft,     spi,     spi_3button, seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3606GAME( 1996, rdftu,      rdft,     spi,     spi_3button, seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3607GAME( 1996, rdftam,     rdft,     spi,     spi_3button, seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters (Asia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3608GAME( 1996, rdftadi,    rdft,     spi,     spi_3button, seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3609GAME( 1996, rdftau,     rdft,     spi,     spi_3button, seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Australia)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3610GAME( 1996, rdftit,     rdft,     spi,     spi_3button, seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Italy)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3611GAME( 1996, rdfta,      rdft,     spi,     spi_3button, seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu", "Raiden Fighters (Austria)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
36053612
3606GAME( 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 )
3607GAME( 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 )
3608GAME( 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 )
3609GAME( 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 )
3610GAME( 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 )
3611GAME( 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 )
3612GAME( 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 )
3613GAME( 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 )
3614GAME( 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 )
3615GAME( 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 )
3616GAME( 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 )
3617GAME( 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 )
3618GAME( 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 )
3619GAME( 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 )
36133620
3614GAME( 1998, rfjet,      0,        spi,      spi_2button,      seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3615GAME( 1998, rfjetu,     rfjet,    spi,      spi_2button,      seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3616GAME( 1998, rfjetj,     rfjet,    spi,      spi_2button,      seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3617GAME( 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 )
3618GAME( 1998, rfjett,     rfjet,    spi,      spi_2button,      seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Taiwan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3621GAME( 1998, rfjet,      0,        spi,     spi_2button, seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3622GAME( 1998, rfjetu,     rfjet,    spi,     spi_2button, seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3623GAME( 1998, rfjetj,     rfjet,    spi,     spi_2button, seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3624GAME( 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 )
3625GAME( 1998, rfjett,     rfjet,    spi,     spi_2button, seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Taiwan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
36193626
36203627/* SXX2E */
3621GAME( 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 )
3628GAME( 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 )
36223629
36233630/* SXX2F */
3624GAME( 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'
3631GAME( 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'
36253632
36263633/* SXX2G */
3627GAME( 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
3628GAME( 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
3634GAME( 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
3635GAME( 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
36293636
36303637/* SYS386I */
3631GAME( 2000, rdft22kc,   rdft2,    seibu386, seibu386_2button, seibuspi_state, rdft2,    ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive 2000 (China, SYS386I)", GAME_IMPERFECT_GRAPHICS )
3632GAME( 2000, rfjet2kc,   rfjet,    seibu386, seibu386_2button, seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet 2000 (China, SYS386I)", GAME_IMPERFECT_GRAPHICS )
3638GAME( 2000, rdft22kc,   rdft2,    sys386i, sys386i_2button,  seibuspi_state, rdft2,   ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive 2000 (China, SYS386I)", GAME_IMPERFECT_GRAPHICS )
3639GAME( 2000, rfjet2kc,   rfjet,    sys386i, sys386i_2button,  seibuspi_state, rfjet,   ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet 2000 (China, SYS386I)", GAME_IMPERFECT_GRAPHICS )
36333640
3634/* SYS386F V2.0 */
3635GAME( 1999, ejsakura,   0,        sys386f2, spi_ejsakura,     seibuspi_state, sys386f2, ROT0,   "Seibu Kaihatsu", "E-Jan Sakurasou (v2.0)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
3636GAME( 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 */
3642GAME( 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 )
3643GAME( 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 )
trunk/src/mame/includes/seibuspi.h
r23502r23503
4343
4444   int m_z80_prg_transfer_pos;
4545   int m_z80_lastbank;
46   UINT8 m_region_code;
4647   UINT8 m_sb_coin_latch;
4748   UINT8 m_ejsakura_input_port;
4849   tilemap_t *m_text_layer;
r23502r23503
110111   DECLARE_DRIVER_INIT(senkyua);
111112   DECLARE_DRIVER_INIT(rdft2);
112113   DECLARE_DRIVER_INIT(ejanhs);
113   DECLARE_DRIVER_INIT(sys386f2);
114   DECLARE_DRIVER_INIT(sys386f);
114115   TILE_GET_INFO_MEMBER(get_text_tile_info);
115116   TILE_GET_INFO_MEMBER(get_back_tile_info);
116117   TILE_GET_INFO_MEMBER(get_mid_tile_info);
r23502r23503
118119   DECLARE_MACHINE_START(spi);
119120   DECLARE_MACHINE_RESET(spi);
120121   DECLARE_VIDEO_START(spi);
121   DECLARE_MACHINE_START(seibu386);
122   DECLARE_MACHINE_RESET(seibu386);
123   DECLARE_VIDEO_START(sys386f2);
124   DECLARE_MACHINE_START(sxx2e);
122   DECLARE_VIDEO_START(sys386f);
125123   DECLARE_MACHINE_RESET(sxx2e);
126124   UINT32 screen_update_spi(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
127   UINT32 screen_update_sys386f2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
125   UINT32 screen_update_sys386f(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
128126   INTERRUPT_GEN_MEMBER(spi_interrupt);
129127   IRQ_CALLBACK_MEMBER(spi_irq_callback);
130128   DECLARE_WRITE_LINE_MEMBER(ymf_irqhandler);
trunk/src/mame/video/seibuspi.c
r23502r23503
666666   return 0;
667667}
668668
669VIDEO_START_MEMBER(seibuspi_state,sys386f2)
669VIDEO_START_MEMBER(seibuspi_state,sys386f)
670670{
671671   int i;
672672
r23502r23503
685685   memset(m_alpha_table, 0, 8192 * sizeof(UINT8));
686686}
687687
688UINT32 seibuspi_state::screen_update_sys386f2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
688UINT32 seibuspi_state::screen_update_sys386f(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
689689{
690690   bitmap.fill(0, cliprect);
691691   draw_sprites(bitmap, cliprect, 0);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team