diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp index 2564f7618e5..f7e4fee773e 100644 --- a/src/mame/drivers/airraid.cpp +++ b/src/mame/drivers/airraid.cpp @@ -5,6 +5,8 @@ this driver is for the single board version on the S-0087-011A-0 PCB for the version using a S-0086-002-B0 base PCB and separate video board see stfight.cpp + Video system is very similar to darkmist.cpp + Custom Modules note: The Air Raid / Cross Shooter PCB contains 3 custom modules. @@ -30,16 +32,15 @@ The above information is based off a development board which was unfortunately stripped of all ROMs. - --- +----------------------------------------------------------------------- - TS 01.05.2006: - - - added sprites, bgmap reading and few fixes here and there - airraid and cshootere are a bit "playable" ;) without gfx - -Haze's notes - - video system is very similar to darkmist.cpp + TODO: + - cshooter/airraid gfx, obviously + - is failgate a prototype? + - failgate usually doesn't play in-game bgm, comms/timing issue? + it does play if you overclock the main cpu +----------------------------------------------------------------------- Stephh's notes (based on the game Z80 code and some tests) : @@ -97,11 +98,7 @@ Stephh's notes (based on the game Z80 code and some tests) : * 0xe237 : lives for player 1 * 0xe238 : lives for player 2 -*/ - - - -/* +----------------------------------------------------------------------- Custom SIMM module placement @@ -176,16 +173,17 @@ public: { } void airraid(machine_config &config); + void airraide(machine_config &config); - void init_cshootere(); - void init_cshooter(); + void init_airraid(); + void init_airraide(); private: required_device m_maincpu; required_device m_seibu_sound; required_shared_ptr m_mainram; required_device m_palette; - required_shared_ptr m_decrypted_opcodes; + optional_shared_ptr m_decrypted_opcodes; required_device m_airraid_video; required_memory_bank m_mainbank; @@ -241,7 +239,6 @@ void airraid_state::bank_w(uint8_t data) - void airraid_state::main_map(address_map &map) { map(0x0000, 0x7fff).rom(); @@ -307,7 +304,7 @@ static INPUT_PORTS_START( airraid ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") // IN1 (0xc201) @@ -380,6 +377,47 @@ static INPUT_PORTS_START( airraid ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END +static INPUT_PORTS_START( failgate ) + PORT_INCLUDE( airraid ) + + PORT_MODIFY("DSW2") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1") + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x06, 0x06, "Energy Consumption" ) PORT_DIPLOCATION("SW2:2,3") + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x06, "2" ) + PORT_DIPSETTING( 0x04, "3" ) + PORT_DIPSETTING( 0x02, "4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW2:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW2:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW2:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" ) + + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3") + PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) + PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6") + PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW1:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" ) +INPUT_PORTS_END + void airraid_state::airraid(machine_config &config) @@ -387,7 +425,6 @@ void airraid_state::airraid(machine_config &config) // basic machine hardware Z80(config, m_maincpu, XTAL(12'000'000) / 2); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &airraid_state::main_map); - m_maincpu->set_addrmap(AS_OPCODES, &airraid_state::decrypted_opcodes_map); TIMER(config, "scantimer").configure_scanline(FUNC(airraid_state::scanline), "airraid_vid:screen", 0, 1); z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181) / 4)); // verified on PCB @@ -418,6 +455,12 @@ void airraid_state::airraid(machine_config &config) SEI80BU(config, "sei80bu", 0).set_device_rom_tag("audiocpu"); } +void airraid_state::airraide(machine_config &config) +{ + airraid(config); + m_maincpu->set_addrmap(AS_OPCODES, &airraid_state::decrypted_opcodes_map); +} + /* @@ -438,7 +481,6 @@ TMM2015 TMM2015 x SEI0030BU SEI0060BU sw1 xx xxxxx SEI80BU SEI0100BU(YM3931) YM3012 - */ ROM_START( airraid ) @@ -491,7 +533,6 @@ ROM_START( airraid ) ROM_END - /* Cross Shooter @@ -521,7 +562,6 @@ Note, all ROMs have official sticker, "(C) SEIBU KAIHATSU INC." and a number. 4.g8 TMM24256 Mask Sound (Samples?) 5.g6 TMM2764 Sound program - */ ROM_START( cshooter ) @@ -539,7 +579,6 @@ ROM_START( cshooter ) ROM_LOAD( "pr.c19", 0x0000, 0x0200, NO_DUMP ) ROM_LOAD( "6308.a13", 0x0000, 0x0100, NO_DUMP ) - ROM_REGION( 0x02000, "airraid_vid:tx_gfx", 0 ) // TX Layer ROM_LOAD( "3.f11", 0x00000, 0x02000, CRC(67b50a47) SHA1(b1f4aefc9437edbeefba5371149cc08c0b55c741) ) @@ -575,13 +614,64 @@ ROM_START( cshooter ) ROM_END +/* -void airraid_state::init_cshooter() +Fail Gate + +On Air Raid board, for black Seibu type only, not for green Taito type +Sold as conversion kit with install instructions (Japanese) + ROM chips + riser boards +3 large black packages on board are removed to install 3 riser boards SEI4BACK0 + SEI4BACK1 + SEI4OBJ +SEI004OBU pins bridged with flying wire + other wires on board reverse side + +*/ + +ROM_START( failgate ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "fail.k19", 0x00000, 0x08000, CRC(b8ed4b0d) SHA1(9e204b7213625f0e17f87061fdcbe79a056b0986) ) + + ROM_REGION( 0x10000, "maindata", 0 ) + ROM_LOAD( "fail.k20", 0x00000, 0x10000, CRC(893132a0) SHA1(2893d235130903b65be6a17e0f32b70e8c8fea73) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) // on main board + ROM_LOAD( "fail.f6", 0x00000, 0x02000, CRC(9cb6e402) SHA1(089c6c186dc4816cc33207e5762c2721012041fa) ) + ROM_LOAD( "fail.f7", 0x08000, 0x08000, CRC(9d74085e) SHA1(8309ec3258590beaec342b4689a0d36c26137ed1) ) + + ROM_REGION( 0x02000, "airraid_vid:tx_gfx", 0 ) + ROM_LOAD( "fail.f11", 0x00000, 0x02000, CRC(845047d0) SHA1(b39b402724ab2b486a4e32ca20e6cd289e354433) ) + ROM_REGION( 0x100, "airraid_vid:tx_clut", 0 ) + ROM_LOAD( "fail.d16", 0x00000, 0x00100, CRC(c784cc55) SHA1(acb053d5f353b68139456eac472dc9f7542df042) ) + + // on riser board SEI4BACK1 with SEI001OBU + buffer RAM + other component + ROM_REGION( 0x40000, "airraid_vid:bg_map", 0 ) + ROM_LOAD( "back1.fail.1c", 0x00000, 0x40000, CRC(de6bb59b) SHA1(ca991c7d0d4f30b6f499fb2133fc3054fa9d8953) ) + ROM_REGION( 0x40000, "airraid_vid:bg_gfx", 0 ) + ROM_LOAD( "back1.fail.1b", 0x00000, 0x40000, CRC(0421b0f7) SHA1(aeb78f05bb956cbec0ad9d45f24914177a48e15a) ) + ROM_REGION( 0x100, "airraid_vid:bg_clut", 0 ) + ROM_LOAD( "back1.fail.2b", 0x00000, 0x00100, CRC(36eead99) SHA1(cc934605c0cfc39abbab65bdc18fbb1d48ffdace) ) + + // on riser board SEI4BACK0 with SEI001OBU + buffer RAM + other component + ROM_REGION( 0x10000, "airraid_vid:fg_map", 0 ) + ROM_LOAD( "back0.fail.1c", 0x00000, 0x10000, CRC(71aae804) SHA1(d8c217364fede3db132849c76a09f28b701c045c) ) + ROM_REGION( 0x40000, "airraid_vid:fg_gfx", 0 ) + ROM_LOAD( "back0.fail.1b", 0x00000, 0x40000, CRC(a80066d6) SHA1(77a97b14b1f27f9b043e93f25dca427d6412bfdd) ) + ROM_REGION( 0x100, "airraid_vid:fg_clut", 0 ) + ROM_LOAD( "back0.fail.2b", 0x00000, 0x00100, CRC(dbb1709f) SHA1(4b82776bc0d852070a3187ee263513a73c03fac8) ) + + // on riser board SEI4OBJ with SEI001OBU + buffer RAM + other component + ROM_REGION( 0x20000, "airraid_vid:spr_gfx", 0 ) + ROM_LOAD( "obj.fail.1a", 0x00000, 0x20000, CRC(b32f1357) SHA1(92514eeb45ceef3463de741bc19da85737da8e1e) ) + ROM_REGION( 0x100, "airraid_vid:spr_clut", 0 ) + ROM_LOAD( "obj.fail.2a", 0x00000, 0x00100, CRC(5d11f0de) SHA1(c3d16395fd1b3f5501c73fd658a67a7ba91492ae) ) +ROM_END + + + +void airraid_state::init_airraid() { m_mainbank->configure_entries(0, 4, memregion("maindata")->base(), 0x4000); } -void airraid_state::init_cshootere() +void airraid_state::init_airraide() { uint8_t *rom = memregion("maincpu")->base(); @@ -610,12 +700,14 @@ void airraid_state::init_cshootere() rom[A] = bitswap<8>(rom[A], 7, 6, 1, 4, 3, 2, 5, 0); } - init_cshooter(); + init_airraid(); } } // Anonymous namespace // There's also an undumped International Games version -GAME( 1987, cshooter, airraid, airraid, airraid, airraid_state, init_cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (Single PCB)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, airraid, 0, airraid, airraid, airraid_state, init_cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1987, cshooter, airraid, airraide, airraid, airraid_state, init_airraide, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (Single PCB)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, airraid, 0, airraide, airraid, airraid_state, init_airraide, ROT270, "Seibu Kaihatsu", "Air Raid (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) + +GAME( 198?, failgate, 0, airraid, failgate,airraid_state, init_airraid, ROT270, "Seibu Kaihatsu", "Fail Gate", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 96437ebc4e2..850cfb03b60 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -11569,6 +11569,7 @@ wulybuly // @source:airraid.cpp airraid // (c) 1987 Seibu Kaihatsu cshooter // (c) 1987 JKH (bootleg) +failgate // (c) 198? Seibu Kaihatsu @source:csplayh5.cpp aimode // (c) 1999 diff --git a/src/mame/video/airraid_dev.cpp b/src/mame/video/airraid_dev.cpp index 4a25c6e99c7..fa947915cea 100644 --- a/src/mame/video/airraid_dev.cpp +++ b/src/mame/video/airraid_dev.cpp @@ -233,7 +233,6 @@ uint32_t airraid_video_device::screen_update_airraid(screen_device &screen, bitm mix_layer(screen, bitmap, cliprect, m_tx_clut, 0xc0); } - return 0; } @@ -250,7 +249,7 @@ void airraid_video_device::vregs_w(offs_t offset, uint8_t data) m_vregs[offset] = data; if ((offset != 0x2) && (offset != 0x01) && (offset != 0xa) && (offset != 0x09) && (offset != 0xe) && (offset != 0x0d) ) - printf("vregs_w %02x: %02x\n", offset, data); + logerror("vregs_w %02x: %02x\n", offset, data); } void airraid_video_device::layer_enable_w(uint8_t enable)