diff options
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 |
commit | 543828eac2a8ca0d363abfdba88aae86695bf3a0 (patch) | |
tree | b72eefc9519c761ef87398081932f0b7043e42ba | |
parent | 1ae84219fc4e5764235e19f2ac00b60639e18d7e (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.cpp | 28 | ||||
-rw-r--r-- | src/mame/drivers/warriorb.cpp | 28 | ||||
-rw-r--r-- | src/mame/includes/ninjaw.h | 36 | ||||
-rw-r--r-- | src/mame/includes/warriorb.h | 34 | ||||
-rw-r--r-- | src/mame/video/ninjaw.cpp | 12 | ||||
-rw-r--r-- | src/mame/video/warriorb.cpp | 9 |
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); } |