summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2021-12-22 16:58:41 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2021-12-22 16:58:41 +0100
commited67a79f37a11a8707b9d5d45da62cb7db3c0b26 (patch)
treec30285ff0d952d52788724241420cff845fd8f7f
parentf02e37489f0978949587dbb9d84f33b5d427eef4 (diff)
New working clones
------------------ Chouji Meikyuu Legion (Japan ver 1.05, set 2) [system11] - taito_o.cpp: merged everything in the driver file
-rw-r--r--scripts/target/mame/arcade.lua2
-rw-r--r--src/mame/drivers/armedf.cpp40
-rw-r--r--src/mame/drivers/taito_o.cpp100
-rw-r--r--src/mame/includes/taito_o.h52
-rw-r--r--src/mame/mame.lst1
-rw-r--r--src/mame/video/taito_o.cpp45
6 files changed, 126 insertions, 114 deletions
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index 7eea5036039..3c26b80871c 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -4163,8 +4163,6 @@ files {
MAME_DIR .. "src/mame/includes/taito_z.h",
MAME_DIR .. "src/mame/video/taito_z.cpp",
MAME_DIR .. "src/mame/drivers/taito_o.cpp",
- MAME_DIR .. "src/mame/includes/taito_o.h",
- MAME_DIR .. "src/mame/video/taito_o.cpp",
MAME_DIR .. "src/mame/drivers/taitoair.cpp",
MAME_DIR .. "src/mame/includes/taitoair.h",
MAME_DIR .. "src/mame/video/taitoair.cpp",
diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp
index dd21af451e8..914c5cdf180 100644
--- a/src/mame/drivers/armedf.cpp
+++ b/src/mame/drivers/armedf.cpp
@@ -27,7 +27,7 @@ actually bootlegs.
TODO:
- identify and decap the NB1414M4 chip, it could be either a MCU or a fancy blitter chip;
-- Fix Armed F and Tatakae Big Fighter text tilemap usage, they both doesn't use the NB1414M4
+- Fix Armed F and Tatakae Big Fighter text tilemap usage, they both don't use the NB1414M4
(as shown by the per-game kludge)
- kozure: time over doesn't kill the player, check (1) note for further details (kludged to work for now);
- kozure: POST screen should have green as backdrop, this is actually drawn by the text layer but not seen
@@ -309,7 +309,7 @@ Notes:
YM3014B - Yamaha YM3014B Serial Input Floating D/A Converter
2018 - 2kx8 SRAM
LM324 - Texas Instruments LM324 Quad Operational Amplifier with True Differential Inputs
- MB3730 - Fujitsi MB3730 12W BTL Single Channel Amplifier
+ MB3730 - Fujitsu MB3730 12W BTL Single Channel Amplifier
***********************************************************************/
@@ -318,8 +318,8 @@ Notes:
#include "includes/armedf.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/z80/z80.h"
#include "cpu/mcs51/mcs51.h"
+#include "cpu/z80/z80.h"
#include "sound/dac.h"
#include "sound/ymopl.h"
#include "speaker.h"
@@ -1344,7 +1344,7 @@ ROM_START( legion )
ROM_LOAD ( "lg7.bin", 0x0000, 0x4000, CRC(533e2b58) SHA1(a13ea4a530038760ffa87713903c59a932452717) )
ROM_END
-ROM_START( legionj )
+ROM_START( legionj ) // this has the ROM checksum test circumvented like the bootlegs? Or maybe just a bug that was later fixed?
ROM_REGION( 0x60000, "maincpu", ROMREGION_ERASEFF ) /* 64K*8 for 68000 code */
ROM_LOAD16_BYTE( "legion.e1", 0x000001, 0x010000, CRC(977fa324) SHA1(04432ecb0cab61731e17bcf665ca66fe34b2d75c) )
ROM_LOAD16_BYTE( "legion.e5", 0x000000, 0x010000, CRC(49e8e1b7) SHA1(ed0b38aae3f46f689fe9d2c96c383d375716e77e) )
@@ -1373,6 +1373,35 @@ ROM_START( legionj )
ROM_LOAD ( "lg7.bin", 0x0000, 0x4000, CRC(533e2b58) SHA1(a13ea4a530038760ffa87713903c59a932452717) )
ROM_END
+ROM_START( legionj2 ) // this has the ROM checksum test working
+ ROM_REGION( 0x60000, "maincpu", ROMREGION_ERASEFF ) /* 64K*8 for 68000 code */
+ ROM_LOAD16_BYTE( "legion.e1", 0x000001, 0x010000, CRC(b890da35) SHA1(3c12b80aca7e4389c8e98f8891a9e620419d613f) )
+ ROM_LOAD16_BYTE( "legion.e5", 0x000000, 0x010000, CRC(d7efe310) SHA1(664e6f2b92670e9a32a56b4df3a7c99a99e4515d) )
+ ROM_LOAD16_BYTE( "legion.1b", 0x020001, 0x010000, CRC(c306660a) SHA1(31c6b868ba07677b5110c577335873354bff596f) )
+ ROM_LOAD16_BYTE( "legion.1d", 0x020000, 0x010000, CRC(c2e45e1e) SHA1(95cc359145b1b03123262891feed358407ba105a) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */
+ ROM_LOAD( "legion.1h", 0x00000, 0x04000, CRC(2ca4f7f0) SHA1(7cf997af9dd74ced9d28c047069ccfb67d72e257) )
+ ROM_LOAD( "legion.1i", 0x04000, 0x08000, CRC(79f4a827) SHA1(25e4c1b5b8466627244b7226310e67e4261333b6) )
+
+ ROM_REGION( 0x08000, "text", 0 )
+ ROM_LOAD( "legion.1g", 0x00000, 0x08000, CRC(c50b0125) SHA1(83b5e9707152d97777fb65fa8820ba34ec2fac8d) )
+
+ ROM_REGION( 0x20000, "foreground", 0 )
+ ROM_LOAD( "legion.1e", 0x00000, 0x10000, CRC(a9d70faf) SHA1(8b8b60ae49c55e931d6838e863463f6b2bf7adb0) )
+ ROM_LOAD( "legion.1f", 0x18000, 0x08000, CRC(f018313b) SHA1(860bc9937202dc3a40c9fa7caad11c2c2aa19f5c) )
+
+ ROM_REGION( 0x20000, "background", 0 )
+ ROM_LOAD( "legion.1l", 0x00000, 0x10000, CRC(29b8adaa) SHA1(10338ebe7324960683de1f796dd311ed662e42b4) )
+
+ ROM_REGION( 0x20000, "sprite", 0 )
+ ROM_LOAD16_BYTE( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) )
+ ROM_LOAD16_BYTE( "legion.1j", 0x000001, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) )
+
+ ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */
+ ROM_LOAD ( "lg7.bin", 0x0000, 0x4000, CRC(533e2b58) SHA1(a13ea4a530038760ffa87713903c59a932452717) )
+ROM_END
+
ROM_START( legionjb )
ROM_REGION( 0x60000, "maincpu", ROMREGION_ERASEFF ) /* 64K*8 for 68000 code */
ROM_LOAD16_BYTE( "legion.1a", 0x000001, 0x010000, CRC(8c0cda1d) SHA1(14b93d4fb4381ebc6a4ccdb480089bf69c6f474b) )
@@ -1926,7 +1955,8 @@ void armedf_state::init_cclimbr2()
/* YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY, FULLNAME, FLAGS */
GAME( 1987, legion, 0, legion, legion, armedf_state, init_legion, ROT270, "Nichibutsu", "Legion - Spinner-87 (World ver 2.03)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, legionj, legion, legion, legion, armedf_state, init_legion, ROT270, "Nichibutsu", "Chouji Meikyuu Legion (Japan ver 1.05)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, legionj, legion, legion, legion, armedf_state, init_legion, ROT270, "Nichibutsu", "Chouji Meikyuu Legion (Japan ver 1.05, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, legionj2, legion, legion, legion, armedf_state, init_legion, ROT270, "Nichibutsu", "Chouji Meikyuu Legion (Japan ver 1.05, set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, legionjb, legion, legionjb, legion, armedf_state, init_legionjb, ROT270, "bootleg", "Chouji Meikyuu Legion (Japan ver 1.05, bootleg set 1)", MACHINE_SUPPORTS_SAVE) /* blitter protection removed */
GAME( 1987, legionjb2, legion, legionjb2, legion, armedf_state, init_legionjb, ROT270, "bootleg", "Chouji Meikyuu Legion (Japan ver 1.05, bootleg set 2)", MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/taito_o.cpp b/src/mame/drivers/taito_o.cpp
index 8245f412187..1e7cd943853 100644
--- a/src/mame/drivers/taito_o.cpp
+++ b/src/mame/drivers/taito_o.cpp
@@ -31,15 +31,92 @@ TODO:
*****************************************************************/
#include "emu.h"
-#include "includes/taito_o.h"
+
+#include "video/tc0080vco.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
+#include "machine/timer.h"
+#include "machine/watchdog.h"
#include "sound/ymopn.h"
+
+#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+namespace {
+
+class taitoo_state : public driver_device
+{
+public:
+ taitoo_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_watchdog(*this, "watchdog"),
+ m_tc0080vco(*this, "tc0080vco"),
+ m_palette(*this, "palette"),
+ m_io_in(*this, "IN%u", 0U)
+ { }
+
+ void parentj(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+
+private:
+ // devices
+ required_device<cpu_device> m_maincpu;
+ required_device<watchdog_timer_device> m_watchdog;
+ required_device<tc0080vco_device> m_tc0080vco;
+ required_device<palette_device> m_palette;
+
+ required_ioport_array<2> m_io_in;
+
+ void io_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ u16 io_r(offs_t offset, u16 mem_mask = ~0);
+ u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority);
+ void prg_map(address_map &map);
+};
+
+
+void taitoo_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
+{
+ for (int offs = 0x03f8 / 2; offs >= 0; offs -= 0x008 / 2)
+ {
+ if (offs < 0x01b0 && priority == 0) continue;
+ if (offs >= 0x01b0 && priority == 1) continue;
+
+ m_tc0080vco->get_sprite_params(offs, true);
+
+ if (m_tc0080vco->get_sprite_tile_offs())
+ {
+ m_tc0080vco->draw_single_sprite(bitmap, cliprect);
+ }
+ }
+}
+
+
+u32 taitoo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ m_tc0080vco->tilemap_update();
+
+ bitmap.fill(0, cliprect);
+
+ m_tc0080vco->tilemap_draw(screen, bitmap, cliprect, 0, TILEMAP_DRAW_OPAQUE, 0);
+
+ draw_sprites(bitmap, cliprect, 0);
+ draw_sprites(bitmap, cliprect, 1);
+
+ m_tc0080vco->tilemap_draw(screen, bitmap, cliprect, 1, 0, 0);
+ m_tc0080vco->tilemap_draw(screen, bitmap, cliprect, 2, 0, 0);
+
+ return 0;
+}
+
+
static const int clear_hack = 1;
void taitoo_state::io_w(offs_t offset, u16 data, u16 mem_mask)
@@ -65,11 +142,11 @@ u16 taitoo_state::io_r(offs_t offset, u16 mem_mask)
return retval;
}
-void taitoo_state::parentj_map(address_map &map)
+void taitoo_state::prg_map(address_map &map)
{
map(0x000000, 0x01ffff).rom();
map(0x100000, 0x10ffff).mirror(0x010000).ram();
- map(0x200000, 0x20000f).rw(FUNC(taitoo_state::io_r), FUNC(taitoo_state::io_w)); /* TC0220IOC ? */
+ map(0x200000, 0x20000f).rw(FUNC(taitoo_state::io_r), FUNC(taitoo_state::io_w)); // TC0220IOC ?
map(0x300000, 0x300003).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff);
map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w));
map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
@@ -193,8 +270,8 @@ static INPUT_PORTS_START( parentj )
INPUT_PORTS_END
-/* unknown sources ... */
-TIMER_DEVICE_CALLBACK_MEMBER(taitoo_state::parentj_interrupt)
+// unknown sources ...
+TIMER_DEVICE_CALLBACK_MEMBER(taitoo_state::interrupt)
{
int scanline = param;
@@ -211,9 +288,9 @@ void taitoo_state::machine_start()
void taitoo_state::parentj(machine_config &config)
{
- M68000(config, m_maincpu, 12000000); /*?? MHz */
- m_maincpu->set_addrmap(AS_PROGRAM, &taitoo_state::parentj_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(taitoo_state::parentj_interrupt), "screen", 0, 1);
+ M68000(config, m_maincpu, 12000000); //?? MHz
+ m_maincpu->set_addrmap(AS_PROGRAM, &taitoo_state::prg_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(taitoo_state::interrupt), "screen", 0, 1);
WATCHDOG_TIMER(config, m_watchdog);
@@ -234,14 +311,14 @@ void taitoo_state::parentj(machine_config &config)
SPEAKER(config, "mono").front_center();
- ym2203_device &ymsnd(YM2203(config, "ymsnd", 2000000)); /* ?? MHz */
+ ym2203_device &ymsnd(YM2203(config, "ymsnd", 2000000)); // ?? MHz
ymsnd.port_a_read_callback().set_ioport("DSWA");
ymsnd.port_b_read_callback().set_ioport("DSWB");
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
}
ROM_START( parentj )
- ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 Code */
+ ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "c42-13.21", 0x00000, 0x10000, CRC(823623eb) SHA1(7302cc0ac532f6190ae35218ea05bf8cf11fd687) )
ROM_LOAD16_BYTE( "c42-12.20", 0x00001, 0x10000, CRC(8654b0ab) SHA1(edd23a731c1c60cab353e51ef5e66d33bc3fde61) )
@@ -259,4 +336,7 @@ ROM_START( parentj )
ROM_LOAD( "ampal22v10a-0233.c42", 0x000, 0x2dd, CRC(0c030a81) SHA1(0f8198df2cb046683d2db9ac8e609cdff53083ed) )
ROM_END
+} // Anonymous namespace
+
+
GAME( 1989, parentj, 0, parentj, parentj, taitoo_state, driver_init, ROT0, "Taito", "Parent Jack (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/taito_o.h b/src/mame/includes/taito_o.h
deleted file mode 100644
index 5870c575c0d..00000000000
--- a/src/mame/includes/taito_o.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Tomasz Slanina
-/*************************************************************************
-
- Taito O system
-
-*************************************************************************/
-#ifndef MAME_INCLUDES_TAITO_O_H
-#define MAME_INCLUDES_TAITO_O_H
-
-#pragma once
-
-#include "machine/timer.h"
-#include "machine/watchdog.h"
-#include "video/tc0080vco.h"
-#include "emupal.h"
-
-class taitoo_state : public driver_device
-{
-public:
- taitoo_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_watchdog(*this, "watchdog"),
- m_tc0080vco(*this, "tc0080vco"),
- m_palette(*this, "palette"),
- m_io_in(*this, "IN%u", 0U)
- { }
-
- void parentj(machine_config &config);
-
-protected:
- virtual void machine_start() override;
-
-private:
- /* devices */
- required_device<cpu_device> m_maincpu;
- required_device<watchdog_timer_device> m_watchdog;
- required_device<tc0080vco_device> m_tc0080vco;
- required_device<palette_device> m_palette;
-
- required_ioport_array<2> m_io_in;
-
- void io_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- u16 io_r(offs_t offset, u16 mem_mask = ~0);
- u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(parentj_interrupt);
- void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority);
- void parentj_map(address_map &map);
-};
-
-#endif // MAME_INCLUDES_TAITO_O_H
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index f6442de654a..e4867a1137f 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -2151,6 +2151,7 @@ cclimbr2a // (c) 1988 (Japan)
kozure // (c) 1987 (Japan)
legion // (c) 1986
legionj // (c) 1986
+legionj2 // (c) 1986
legionjb // (c) 1986
legionjb2 // (c) 1986
skyrobo // (c) 1989
diff --git a/src/mame/video/taito_o.cpp b/src/mame/video/taito_o.cpp
deleted file mode 100644
index aa97db1028a..00000000000
--- a/src/mame/video/taito_o.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Tomasz Slanina
-/***************************************************************************
-
-Based on taito_h.cpp
-
-***************************************************************************/
-
-#include "emu.h"
-#include "includes/taito_o.h"
-
-
-void taitoo_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
-{
- for (int offs = 0x03f8 / 2; offs >= 0; offs -= 0x008 / 2)
- {
- if (offs < 0x01b0 && priority == 0) continue;
- if (offs >= 0x01b0 && priority == 1) continue;
-
- m_tc0080vco->get_sprite_params(offs, true);
-
- if (m_tc0080vco->get_sprite_tile_offs())
- {
- m_tc0080vco->draw_single_sprite(bitmap, cliprect);
- }
- }
-}
-
-
-u32 taitoo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- m_tc0080vco->tilemap_update();
-
- bitmap.fill(0, cliprect);
-
- m_tc0080vco->tilemap_draw(screen, bitmap, cliprect, 0, TILEMAP_DRAW_OPAQUE, 0);
-
- draw_sprites(bitmap, cliprect, 0);
- draw_sprites(bitmap, cliprect, 1);
-
- m_tc0080vco->tilemap_draw(screen, bitmap, cliprect, 1, 0, 0);
- m_tc0080vco->tilemap_draw(screen, bitmap, cliprect, 2, 0, 0);
-
- return 0;
-}