mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
New working machines
-------------------- Fail Gate [Jonas Jago]
This commit is contained in:
parent
a93be41cd1
commit
89860227b4
@ -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<cpu_device> m_maincpu;
|
||||
required_device<seibu_sound_device> m_seibu_sound;
|
||||
required_shared_ptr<uint8_t> m_mainram;
|
||||
required_device<palette_device> m_palette;
|
||||
required_shared_ptr<uint8_t> m_decrypted_opcodes;
|
||||
optional_shared_ptr<uint8_t> m_decrypted_opcodes;
|
||||
required_device<airraid_video_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 )
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user