summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/capcom/vulgus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/capcom/vulgus.cpp')
-rw-r--r--src/mame/capcom/vulgus.cpp113
1 files changed, 96 insertions, 17 deletions
diff --git a/src/mame/capcom/vulgus.cpp b/src/mame/capcom/vulgus.cpp
index 5c3c0459b00..90ae128426a 100644
--- a/src/mame/capcom/vulgus.cpp
+++ b/src/mame/capcom/vulgus.cpp
@@ -74,13 +74,15 @@ public:
m_bgvideoram(*this, "bgvideoram")
{ }
- void vulgus(machine_config &config);
+ void vulgus(machine_config &config) ATTR_COLD;
protected:
- virtual void video_start() override;
+ required_device<cpu_device> m_maincpu;
+
+ virtual void video_start() override ATTR_COLD;
+ void main_map(address_map &map) ATTR_COLD;
private:
- required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
@@ -97,25 +99,41 @@ private:
void fgvideoram_w(offs_t offset, uint8_t data);
void bgvideoram_w(offs_t offset, uint8_t data);
- void c804_w(uint8_t data);
+ void control_w(uint8_t data);
void palette_bank_w(uint8_t data);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
- void palette(palette_device &palette) const;
+ void palette(palette_device &palette) const ATTR_COLD;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
- void main_map(address_map &map);
- void sound_map(address_map &map);
+ void sound_map(address_map &map) ATTR_COLD;
};
+class _1942iti_state : public vulgus_state
+{
+public:
+ _1942iti_state(const machine_config &mconfig, device_type type, const char *tag) :
+ vulgus_state(mconfig, type, tag),
+ m_rombank(*this, "rombank")
+ { }
+
+ void _1942iti(machine_config &config) ATTR_COLD;
+
+protected:
+ virtual void machine_start() override ATTR_COLD;
+
+private:
+ required_memory_bank m_rombank;
+
+ void _1942iti_main_map(address_map &map) ATTR_COLD;
+};
-// video
/***************************************************************************
@@ -223,6 +241,13 @@ void vulgus_state::video_start()
save_item(NAME(m_palette_bank));
}
+void _1942iti_state::machine_start()
+{
+ vulgus_state::machine_start();
+
+ m_rombank->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x4000);
+}
+
/***************************************************************************
@@ -243,7 +268,7 @@ void vulgus_state::bgvideoram_w(offs_t offset, uint8_t data)
}
-void vulgus_state::c804_w(uint8_t data)
+void vulgus_state::control_w(uint8_t data)
{
// bits 0 and 1 are coin counters
machine().bookkeeping().coin_counter_w(0, data & 0x01);
@@ -315,8 +340,6 @@ uint32_t vulgus_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
}
-// machine
-
INTERRUPT_GEN_MEMBER(vulgus_state::vblank_irq)
{
device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xd7); // Z80 - RST 10h - vblank
@@ -333,7 +356,7 @@ void vulgus_state::main_map(address_map &map)
map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0xc801, 0xc801).nopw(); // ?
map(0xc802, 0xc803).ram().share(m_scroll_low);
- map(0xc804, 0xc804).w(FUNC(vulgus_state::c804_w));
+ map(0xc804, 0xc804).w(FUNC(vulgus_state::control_w));
map(0xc805, 0xc805).w(FUNC(vulgus_state::palette_bank_w));
map(0xc902, 0xc903).ram().share(m_scroll_high);
map(0xcc00, 0xcc7f).ram().share(m_spriteram);
@@ -342,6 +365,14 @@ void vulgus_state::main_map(address_map &map)
map(0xe000, 0xefff).ram();
}
+void _1942iti_state::_1942iti_main_map(address_map &map)
+{
+ main_map(map);
+
+ map(0x8000, 0xbfff).bankr(m_rombank);
+ map(0xc806, 0xc806).lw8(NAME([this] (uint8_t data) { m_rombank->set_entry(data & 0x03); }));
+}
+
void vulgus_state::sound_map(address_map &map)
{
map(0x0000, 0x1fff).rom();
@@ -479,7 +510,6 @@ GFXDECODE_END
-
void vulgus_state::vulgus(machine_config &config)
{
// basic machine hardware
@@ -511,6 +541,12 @@ void vulgus_state::vulgus(machine_config &config)
AY8910(config, "ay2", XTAL(12'000'000) / 8).add_route(ALL_OUTPUTS, "mono", 0.25); // 1.5 MHz
}
+void _1942iti_state::_1942iti(machine_config &config)
+{
+ vulgus(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &_1942iti_state::_1942iti_main_map);
+}
/***************************************************************************
@@ -675,10 +711,53 @@ ROM_START( mach9 )
ROM_LOAD( "82s129_8n.bin", 0x0700, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) ) // video timing? (not used)
ROM_END
+// Same PCB as 'mach9'
+ROM_START( 1942iti )
+ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "2764.n4", 0x00000, 0x2000, CRC(0720ef77) SHA1(59466c22f8c37b80762c95049521fc5d31cf0932) )
+ ROM_LOAD( "2764.n5", 0x02000, 0x2000, CRC(9353a860) SHA1(4ed19fc1f4f87e95bcad988b2f9851ed7604e586) )
+ ROM_LOAD( "2764.n6", 0x04000, 0x2000, CRC(2b2faee6) SHA1(bcd2e5675b863df8be8bc813e25f4aa65a969359) )
+ ROM_LOAD( "2764.n7", 0x06000, 0x2000, CRC(bd3cbb4c) SHA1(9da177d68d39b56375975b8700cc0cc8b48211fe) )
+ ROM_LOAD( "daugther_27128.3", 0x10000, 0x4000, CRC(835f7b24) SHA1(24b66827f08c43fbf5b9517d638acdfc38e1b1e7) )
+ ROM_LOAD( "daugther_2764.2", 0x14000, 0x2000, CRC(9eca91e1) SHA1(48ccb608519debb681fa4f78985a074e05040edc) )
+ ROM_LOAD( "daugther_27128.1", 0x18000, 0x4000, CRC(c661c8eb) SHA1(d5acf045d5773b01430bb54bc92ccd291318d2d7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "27128.c11", 0x00000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) )
+
+ ROM_REGION( 0x2000, "chars", 0 )
+ ROM_LOAD( "2764.d3", 0x00000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) )
+
+ ROM_REGION( 0xc000, "tiles", 0 )
+ ROM_LOAD( "bottom_2764.a2", 0x00000, 0x2000, CRC(3884d9eb) SHA1(5cbd9215fa5ba5a61208b383700adc4428521aed) )
+ ROM_LOAD( "bottom_2764.a3", 0x02000, 0x2000, CRC(999cf6e0) SHA1(5b8b685038ec98b781908b92eb7fb9506db68544) )
+ ROM_LOAD( "bottom_2764.a4", 0x04000, 0x2000, CRC(8edb273a) SHA1(85fdd4c690ed31e6396e3c16aa02140ee7ea2d61) )
+ ROM_LOAD( "bottom_2764.a5", 0x06000, 0x2000, CRC(3a2726c3) SHA1(187c92ef591febdcbd1d42ab850e0cbb62c00873) )
+ ROM_LOAD( "bottom_2764.a6", 0x08000, 0x2000, CRC(1bd3d8bb) SHA1(ef4dce605eb4dc8035985a415315ec61c21419c6) )
+ ROM_LOAD( "bottom_2764.a7", 0x0a000, 0x2000, CRC(658f02c4) SHA1(f087d69e49e38cf3107350cde18fcf85a8fa04f0) )
+
+ ROM_REGION( 0x10000, "sprites", 0 )
+ ROM_LOAD( "bottom_27128.n2", 0x00000, 0x4000, CRC(2528bec6) SHA1(29f7719f18faad6bd1ec6735cc24e69168361470) )
+ ROM_LOAD( "bottom_27128.n3", 0x04000, 0x4000, CRC(f89287aa) SHA1(136fff6d2a4f48a488fc7c620213761459c3ada0) )
+ ROM_LOAD( "bottom_27128.n4", 0x08000, 0x4000, CRC(024418f8) SHA1(145b8d5d6c8654cd090955a98f6dd8c8dbafe7c1) )
+ ROM_LOAD( "bottom_27128.n5", 0x0c000, 0x4000, CRC(e2c7e489) SHA1(d4b5d575c021f58f6966df189df94e08c5b3621c) )
+
+ ROM_REGION( 0x0800, "proms", 0 )
+ ROM_LOAD( "bottom_tbp24s10n.e8", 0x00000, 0x0100, CRC(6dbdf73c) SHA1(d335c9a0aa5ada2cd75f6e7125956536afde1b4c) ) // red component
+ ROM_LOAD( "bottom_tbp24s10n.e9", 0x00100, 0x0100, CRC(e5c2e1d0) SHA1(a9bd1e0cc330e8174b9a064fba45a5a4c9ecb5c0) ) // green component
+ ROM_LOAD( "tbp24s10n.e10", 0x00200, 0x0100, CRC(dc7312a1) SHA1(810174ba1266de83fb238be786a6244229fc30f5) ) // blue component
+ ROM_LOAD( "tbp24s10n.d1", 0x00300, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) ) // char lookup table
+ ROM_LOAD( "bottom_tbp24s10n.j2", 0x00400, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) ) // sprite lookup table
+ ROM_LOAD( "bottom_tbp24s10n.c9", 0x00500, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) ) // tile lookup table
+ ROM_LOAD( "tbp24s10n.j9", 0x00600, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) // interrupt timing? (not used)
+ ROM_LOAD( "bottom_82s129.n8", 0x00700, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) ) // video timing? (not used)
+ROM_END
+
} // anonymous namespace
-GAME( 1984, vulgus, 0, vulgus, vulgus, vulgus_state, empty_init, ROT270, "Capcom", "Vulgus (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, vulgusa, vulgus, vulgus, vulgus, vulgus_state, empty_init, ROT90, "Capcom", "Vulgus (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, vulgusj, vulgus, vulgus, vulgus, vulgus_state, empty_init, ROT270, "Capcom", "Vulgus (Japan?)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, mach9, vulgus, vulgus, vulgus, vulgus_state, empty_init, ROT270, "bootleg (ITISA)", "Mach-9 (bootleg of Vulgus)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, vulgus, 0, vulgus, vulgus, vulgus_state, empty_init, ROT270, "Capcom", "Vulgus (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, vulgusa, vulgus, vulgus, vulgus, vulgus_state, empty_init, ROT90, "Capcom", "Vulgus (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, vulgusj, vulgus, vulgus, vulgus, vulgus_state, empty_init, ROT270, "Capcom", "Vulgus (Japan?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, mach9, vulgus, vulgus, vulgus, vulgus_state, empty_init, ROT270, "bootleg (Itisa)", "Mach-9 (bootleg of Vulgus)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, 1942iti, 1942, _1942iti, vulgus, _1942iti_state, empty_init, ROT270, "bootleg (Itisa)", "1942 (Itisa bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )