summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2018-02-19 04:48:48 +0900
committer R. Belmont <rb6502@users.noreply.github.com>2018-02-18 14:48:48 -0500
commit543828eac2a8ca0d363abfdba88aae86695bf3a0 (patch)
treeb72eefc9519c761ef87398081932f0b7043e42ba
parent1ae84219fc4e5764235e19f2ac00b60639e18d7e (diff)
warriorb : Soundchip Type identified (#3230)
ninjaw, warriorb : Cleanup duplicates Demote Darius 2, Ninja Warriors with MACHINE_IMPERFECT_SOUND, because SSG Output isn't accurate
-rw-r--r--src/mame/drivers/ninjaw.cpp28
-rw-r--r--src/mame/drivers/warriorb.cpp28
-rw-r--r--src/mame/includes/ninjaw.h36
-rw-r--r--src/mame/includes/warriorb.h34
-rw-r--r--src/mame/video/ninjaw.cpp12
-rw-r--r--src/mame/video/warriorb.cpp9
6 files changed, 69 insertions, 78 deletions
diff --git a/src/mame/drivers/ninjaw.cpp b/src/mame/drivers/ninjaw.cpp
index 312847450ea..2cb80e4f49e 100644
--- a/src/mame/drivers/ninjaw.cpp
+++ b/src/mame/drivers/ninjaw.cpp
@@ -363,7 +363,7 @@ WRITE8_MEMBER(ninjaw_state::coin_control_w)
WRITE8_MEMBER(ninjaw_state::sound_bankswitch_w)
{
- membank("z80bank")->set_entry(data & 7);
+ m_z80bank->set_entry(data & 7);
}
WRITE16_MEMBER(ninjaw_state::sound_w)
@@ -397,10 +397,10 @@ WRITE8_MEMBER(ninjaw_state::pancontrol_w)
switch (offset)
{
- case 0: flt = m_2610_1l; break;
- case 1: flt = m_2610_1r; break;
- case 2: flt = m_2610_2l; break;
- case 3: flt = m_2610_2r; break;
+ case 0: flt = m_2610_l[0]; break;
+ case 1: flt = m_2610_r[0]; break;
+ case 2: flt = m_2610_l[1]; break;
+ case 3: flt = m_2610_r[1]; break;
}
m_pandata[offset] = (float)data * (100.f / 255.0f);
@@ -411,9 +411,9 @@ WRITE8_MEMBER(ninjaw_state::pancontrol_w)
WRITE16_MEMBER(ninjaw_state::tc0100scn_triple_screen_w)
{
- m_tc0100scn_1->word_w(space, offset, data, mem_mask);
- m_tc0100scn_2->word_w(space, offset, data, mem_mask);
- m_tc0100scn_3->word_w(space, offset, data, mem_mask);
+ m_tc0100scn[0]->word_w(space, offset, data, mem_mask);
+ m_tc0100scn[1]->word_w(space, offset, data, mem_mask);
+ m_tc0100scn[2]->word_w(space, offset, data, mem_mask);
}
/***********************************************************
@@ -712,7 +712,7 @@ void ninjaw_state::postload()
void ninjaw_state::machine_start()
{
- membank("z80bank")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
+ m_z80bank->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
save_item(NAME(m_cpua_ctrl));
save_item(NAME(m_pandata));
@@ -1245,8 +1245,8 @@ ROM_END
/* Working Games */
// YEAR, NAME, PARENT, MACHINE, INPUT, STATE INIT,MONITOR,COMPANY, FULLNAME,FLAGS
-GAME( 1987, ninjaw, 0, ninjaw, ninjaw, ninjaw_state, 0, ROT0, "Taito Corporation Japan", "The Ninja Warriors (World, later version)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, ninjaw1, ninjaw, ninjaw, ninjaw, ninjaw_state, 0, ROT0, "Taito Corporation Japan", "The Ninja Warriors (World, earlier version)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, ninjawj, ninjaw, ninjaw, ninjawj, ninjaw_state, 0, ROT0, "Taito Corporation", "The Ninja Warriors (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, ninjawu, ninjaw, ninjaw, ninjawj, ninjaw_state, 0, ROT0, "Taito Corporation America (licensed to Romstar)", "The Ninja Warriors (US, Romstar license)", MACHINE_SUPPORTS_SAVE ) /* Uses same coinage as World, see notes */
-GAME( 1989, darius2, 0, darius2, darius2, ninjaw_state, 0, ROT0, "Taito Corporation", "Darius II (triple screen) (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ninjaw, 0, ninjaw, ninjaw, ninjaw_state, 0, ROT0, "Taito Corporation Japan", "The Ninja Warriors (World, later version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1987, ninjaw1, ninjaw, ninjaw, ninjaw, ninjaw_state, 0, ROT0, "Taito Corporation Japan", "The Ninja Warriors (World, earlier version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1987, ninjawj, ninjaw, ninjaw, ninjawj, ninjaw_state, 0, ROT0, "Taito Corporation", "The Ninja Warriors (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1987, ninjawu, ninjaw, ninjaw, ninjawj, ninjaw_state, 0, ROT0, "Taito Corporation America (licensed to Romstar)", "The Ninja Warriors (US, Romstar license)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Uses same coinage as World, see notes */
+GAME( 1989, darius2, 0, darius2, darius2, ninjaw_state, 0, ROT0, "Taito Corporation", "Darius II (triple screen) (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/warriorb.cpp b/src/mame/drivers/warriorb.cpp
index 38596e98d4f..c8e63829079 100644
--- a/src/mame/drivers/warriorb.cpp
+++ b/src/mame/drivers/warriorb.cpp
@@ -174,7 +174,7 @@ WRITE8_MEMBER(warriorb_state::coin_control_w)
WRITE8_MEMBER(warriorb_state::sound_bankswitch_w)
{
- membank("z80bank")->set_entry(data & 7);
+ m_z80bank->set_entry(data & 7);
}
WRITE16_MEMBER(warriorb_state::sound_w)
@@ -194,17 +194,17 @@ READ16_MEMBER(warriorb_state::sound_r)
}
-WRITE8_MEMBER(warriorb_state::pancontrol)
+WRITE8_MEMBER(warriorb_state::pancontrol_w)
{
filter_volume_device *flt = nullptr;
offset &= 3;
switch (offset)
{
- case 0: flt = m_2610_1l; break;
- case 1: flt = m_2610_1r; break;
- case 2: flt = m_2610_2l; break;
- case 3: flt = m_2610_2r; break;
+ case 0: flt = m_2610_l[0]; break;
+ case 1: flt = m_2610_r[0]; break;
+ case 2: flt = m_2610_l[1]; break;
+ case 3: flt = m_2610_r[1]; break;
}
m_pandata[offset] = (data << 1) + data; /* original volume*3 */
@@ -215,8 +215,8 @@ WRITE8_MEMBER(warriorb_state::pancontrol)
WRITE16_MEMBER(warriorb_state::tc0100scn_dual_screen_w)
{
- m_tc0100scn_1->word_w(space, offset, data, mem_mask);
- m_tc0100scn_2->word_w(space, offset, data, mem_mask);
+ m_tc0100scn[0]->word_w(space, offset, data, mem_mask);
+ m_tc0100scn[1]->word_w(space, offset, data, mem_mask);
}
/***********************************************************
@@ -263,7 +263,7 @@ ADDRESS_MAP_START(warriorb_state::z80_sound_map)
AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITE(pancontrol) /* pan */
+ AM_RANGE(0xe400, 0xe403) AM_WRITE(pancontrol_w) /* pan */
AM_RANGE(0xea00, 0xea00) AM_READNOP
AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
@@ -421,7 +421,7 @@ GFXDECODE_END
void warriorb_state::machine_start()
{
- membank("z80bank")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
+ m_z80bank->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
save_item(NAME(m_pandata));
}
@@ -587,7 +587,7 @@ MACHINE_CONFIG_START(warriorb_state::warriorb)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ymsnd", YM2610, 16000000/2)
+ MCFG_SOUND_ADD("ymsnd", YM2610B, 16000000/2)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
MCFG_SOUND_ROUTE(0, "rspeaker", 0.25)
@@ -791,7 +791,7 @@ ROM_END
/* Working Games */
// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT,MONITOR,COMPANY,FULLNAME, FLAGS
-GAME( 1989, sagaia, darius2, darius2d, sagaia, warriorb_state, 0, ROT0, "Taito Corporation Japan", "Sagaia (dual screen) (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, darius2d, darius2, darius2d, darius2d, warriorb_state, 0, ROT0, "Taito Corporation", "Darius II (dual screen) (Japan, Rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, darius2do, darius2, darius2d, darius2d, warriorb_state, 0, ROT0, "Taito Corporation", "Darius II (dual screen) (Japan, Rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, sagaia, darius2, darius2d, sagaia, warriorb_state, 0, ROT0, "Taito Corporation Japan", "Sagaia (dual screen) (World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1989, darius2d, darius2, darius2d, darius2d, warriorb_state, 0, ROT0, "Taito Corporation", "Darius II (dual screen) (Japan, Rev 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1989, darius2do, darius2, darius2d, darius2d, warriorb_state, 0, ROT0, "Taito Corporation", "Darius II (dual screen) (Japan, Rev 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1991, warriorb, 0, warriorb, warriorb, warriorb_state, 0, ROT0, "Taito Corporation", "Warrior Blade - Rastan Saga Episode III (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/ninjaw.h b/src/mame/includes/ninjaw.h
index 50346126021..afac230d3c8 100644
--- a/src/mame/includes/ninjaw.h
+++ b/src/mame/includes/ninjaw.h
@@ -21,39 +21,31 @@ public:
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "sub"),
m_tc0140syt(*this, "tc0140syt"),
- m_tc0100scn_1(*this, "tc0100scn_1"),
- m_tc0100scn_2(*this, "tc0100scn_2"),
- m_tc0100scn_3(*this, "tc0100scn_3"),
- m_tc0110pcr_1(*this, "tc0110pcr_1"),
- m_tc0110pcr_2(*this, "tc0110pcr_2"),
- m_tc0110pcr_3(*this, "tc0110pcr_3"),
- m_2610_1l(*this, "2610.1.l"),
- m_2610_1r(*this, "2610.1.r"),
- m_2610_2l(*this, "2610.2.l"),
- m_2610_2r(*this, "2610.2.r"),
+ m_tc0100scn(*this, "tc0100scn_%u", 1),
+ m_tc0110pcr(*this, "tc0110pcr_%u", 1),
+ m_2610_l(*this, "2610.%u.l", 1),
+ m_2610_r(*this, "2610.%u.r", 1),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
- m_spriteram(*this, "spriteram") { }
+ m_spriteram(*this, "spriteram"),
+ m_z80bank(*this, "z80bank") { }
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
required_device<tc0140syt_device> m_tc0140syt;
- required_device<tc0100scn_device> m_tc0100scn_1;
- required_device<tc0100scn_device> m_tc0100scn_2;
- required_device<tc0100scn_device> m_tc0100scn_3;
- required_device<tc0110pcr_device> m_tc0110pcr_1;
- required_device<tc0110pcr_device> m_tc0110pcr_2;
- required_device<tc0110pcr_device> m_tc0110pcr_3;
- required_device<filter_volume_device> m_2610_1l;
- required_device<filter_volume_device> m_2610_1r;
- required_device<filter_volume_device> m_2610_2l;
- required_device<filter_volume_device> m_2610_2r;
+ required_device_array<tc0100scn_device, 3> m_tc0100scn;
+ required_device_array<tc0110pcr_device, 3> m_tc0110pcr;
+ required_device_array<filter_volume_device, 2> m_2610_l;
+ required_device_array<filter_volume_device, 2> m_2610_r;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
/* memory pointers */
required_shared_ptr<uint16_t> m_spriteram;
+
+ /* memory regions */
+ required_memory_bank m_z80bank;
/* misc */
uint16_t m_cpua_ctrl;
@@ -76,7 +68,7 @@ public:
void postload();
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs );
void parse_control( );
- uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, tc0100scn_device *tc0100scn);
+ uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip);
void darius2(machine_config &config);
void ninjaw(machine_config &config);
void darius2_master_map(address_map &map);
diff --git a/src/mame/includes/warriorb.h b/src/mame/includes/warriorb.h
index 02417967b65..acfe7f51f1b 100644
--- a/src/mame/includes/warriorb.h
+++ b/src/mame/includes/warriorb.h
@@ -20,38 +20,34 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_tc0140syt(*this, "tc0140syt"),
- m_tc0100scn_1(*this, "tc0100scn_1"),
- m_tc0100scn_2(*this, "tc0100scn_2"),
- m_tc0110pcr_1(*this, "tc0110pcr_1"),
- m_tc0110pcr_2(*this, "tc0110pcr_2"),
+ m_tc0100scn(*this, "tc0100scn_%u", 1),
+ m_tc0110pcr(*this, "tc0110pcr_%u", 1),
m_tc0220ioc(*this, "tc0220ioc"),
m_tc0510nio(*this, "tc0510nio"),
- m_2610_1l(*this, "2610.1.l"),
- m_2610_1r(*this, "2610.1.r"),
- m_2610_2l(*this, "2610.2.l"),
- m_2610_2r(*this, "2610.2.r"),
+ m_2610_l(*this, "2610.%u.l", 1),
+ m_2610_r(*this, "2610.%u.r", 1),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
- m_spriteram(*this, "spriteram") { }
+ m_spriteram(*this, "spriteram"),
+ m_z80bank(*this, "z80bank") { }
/* devices */
required_device<cpu_device> m_maincpu;
required_device<tc0140syt_device> m_tc0140syt;
- required_device<tc0100scn_device> m_tc0100scn_1;
- required_device<tc0100scn_device> m_tc0100scn_2;
- required_device<tc0110pcr_device> m_tc0110pcr_1;
- required_device<tc0110pcr_device> m_tc0110pcr_2;
+ required_device_array<tc0100scn_device, 2> m_tc0100scn;
+ required_device_array<tc0110pcr_device, 2> m_tc0110pcr;
optional_device<tc0220ioc_device> m_tc0220ioc;
optional_device<tc0510nio_device> m_tc0510nio;
- required_device<filter_volume_device> m_2610_1l;
- required_device<filter_volume_device> m_2610_1r;
- required_device<filter_volume_device> m_2610_2l;
- required_device<filter_volume_device> m_2610_2r;
+ required_device_array<filter_volume_device, 2> m_2610_l;
+ required_device_array<filter_volume_device, 2> m_2610_r;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
/* memory pointers */
required_shared_ptr<uint16_t> m_spriteram;
+
+ /* memory regions */
+ required_memory_bank m_z80bank;
/* misc */
int m_pandata[4];
@@ -60,7 +56,7 @@ public:
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
DECLARE_WRITE16_MEMBER(sound_w);
DECLARE_READ16_MEMBER(sound_r);
- DECLARE_WRITE8_MEMBER(pancontrol);
+ DECLARE_WRITE8_MEMBER(pancontrol_w);
DECLARE_WRITE16_MEMBER(tc0100scn_dual_screen_w);
virtual void machine_start() override;
@@ -69,7 +65,7 @@ public:
uint32_t screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs );
- uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, tc0100scn_device *tc0100scn);
+ uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip);
void warriorb(machine_config &config);
void darius2d(machine_config &config);
void darius2d_map(address_map &map);
diff --git a/src/mame/video/ninjaw.cpp b/src/mame/video/ninjaw.cpp
index 4e81487b86c..26d859cd716 100644
--- a/src/mame/video/ninjaw.cpp
+++ b/src/mame/video/ninjaw.cpp
@@ -86,13 +86,15 @@ void ninjaw_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
SCREEN REFRESH
**************************************************************/
-uint32_t ninjaw_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, tc0100scn_device *tc0100scn)
+uint32_t ninjaw_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip)
{
+ tc0100scn_device *tc0100scn = m_tc0100scn[chip];
+ xoffs *= chip;
uint8_t layer[3], nodraw;
tc0100scn->tilemap_update();
- layer[0] = m_tc0100scn_1->bottomlayer();
+ layer[0] = m_tc0100scn[0]->bottomlayer();
layer[1] = layer[0] ^ 1;
layer[2] = 2;
@@ -117,6 +119,6 @@ uint32_t ninjaw_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap
return 0;
}
-uint32_t ninjaw_state::screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 0, m_tc0100scn_1); }
-uint32_t ninjaw_state::screen_update_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 1, m_tc0100scn_2); }
-uint32_t ninjaw_state::screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 2, m_tc0100scn_3); }
+uint32_t ninjaw_state::screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8, 0); }
+uint32_t ninjaw_state::screen_update_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8, 1); }
+uint32_t ninjaw_state::screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8, 2); }
diff --git a/src/mame/video/warriorb.cpp b/src/mame/video/warriorb.cpp
index 7d505e09d96..2af06ebd4aa 100644
--- a/src/mame/video/warriorb.cpp
+++ b/src/mame/video/warriorb.cpp
@@ -73,8 +73,9 @@ void warriorb_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
SCREEN REFRESH
**************************************************************/
-uint32_t warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, tc0100scn_device *tc0100scn)
+uint32_t warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip)
{
+ tc0100scn_device *tc0100scn = m_tc0100scn[chip];
uint8_t layer[3], nodraw;
tc0100scn->tilemap_update();
@@ -98,12 +99,12 @@ uint32_t warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitm
tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 1);
/* Sprites can be under/over the layer below text layer */
- draw_sprites(screen, bitmap, cliprect, xoffs, 8); // draw sprites
+ draw_sprites(screen, bitmap, cliprect, xoffs * chip, 8); // draw sprites
// draw top(text) layer
tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 0);
return 0;
}
-uint32_t warriorb_state::screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 40 * 8 * 0, m_tc0100scn_1); }
-uint32_t warriorb_state::screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 40 * 8 * 1, m_tc0100scn_2); }
+uint32_t warriorb_state::screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 40 * 8, 0); }
+uint32_t warriorb_state::screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 40 * 8, 1); }