xexex.cpp : Minor cleanup, Add object finder instead runtime tag lookup, Add notes (#3329)

Demote Xexex/Orius with MACHINE_IMPERFECT_GRAPHICS, because it has alpha blending issue.
Add MACHINE_NO_COCKTAIL flag too, because tilemap scroll is wrong when cocktail mode
This commit is contained in:
cam900 2018-03-15 02:59:00 +09:00 committed by Olivier Galibert
parent 8c85589982
commit 4fe45e51cc
2 changed files with 47 additions and 44 deletions

View File

@ -128,6 +128,8 @@ Unresolved Issues:
- the stage 4 boss(tentacles) sometimes appears darker (palette update timing?) - the stage 4 boss(tentacles) sometimes appears darker (palette update timing?)
- the furthest layer in stage 5 shakes when scrolling up or down (needs verification) - the furthest layer in stage 5 shakes when scrolling up or down (needs verification)
- Elaine's end-game graphics has wrong masking effect (known non-zoomed pdrawgfx issue) - Elaine's end-game graphics has wrong masking effect (known non-zoomed pdrawgfx issue)
- intro screen at wrong alpha effect; it has K054157 flag-per-tile for alpha blending?
- Tilemap scroll is wrong at cocktail mode
***************************************************************************/ ***************************************************************************/
@ -269,15 +271,16 @@ WRITE16_MEMBER(xexex_state::sound_irq_w)
WRITE8_MEMBER(xexex_state::sound_bankswitch_w) WRITE8_MEMBER(xexex_state::sound_bankswitch_w)
{ {
membank("z80bank")->set_entry(data & 0x07); m_z80bank->set_entry(data & 0x07);
} }
K054539_CB_MEMBER(xexex_state::ym_set_mixing) K054539_CB_MEMBER(xexex_state::ym_set_mixing)
{ {
m_filter1l->flt_volume_set_volume((71.0 * left) / 55.0); for (int out = 0; out < 2; out++)
m_filter1r->flt_volume_set_volume((71.0 * right) / 55.0); {
m_filter2l->flt_volume_set_volume((71.0 * left) / 55.0); m_filter_l[out]->flt_volume_set_volume((71.0 * left) / 55.0);
m_filter2r->flt_volume_set_volume((71.0 * right) / 55.0); m_filter_r[out]->flt_volume_set_volume((71.0 * right) / 55.0);
}
} }
TIMER_CALLBACK_MEMBER(xexex_state::dmaend_callback) TIMER_CALLBACK_MEMBER(xexex_state::dmaend_callback)
@ -431,8 +434,8 @@ void xexex_state::xexex_postload()
void xexex_state::machine_start() void xexex_state::machine_start()
{ {
membank("z80bank")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000); m_z80bank->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
membank("z80bank")->set_entry(0); m_z80bank->set_entry(0);
save_item(NAME(m_cur_alpha)); save_item(NAME(m_cur_alpha));
save_item(NAME(m_sprite_colorbase)); save_item(NAME(m_sprite_colorbase));
@ -520,10 +523,10 @@ MACHINE_CONFIG_START(xexex_state::xexex)
MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker")
MCFG_YM2151_ADD("ymsnd", XTAL(32'000'000)/8) // 4MHz MCFG_YM2151_ADD("ymsnd", XTAL(32'000'000)/8) // 4MHz
MCFG_SOUND_ROUTE(0, "filter1l", 0.50) MCFG_SOUND_ROUTE(0, "filter1_l", 0.50)
MCFG_SOUND_ROUTE(0, "filter1r", 0.50) MCFG_SOUND_ROUTE(0, "filter1_r", 0.50)
MCFG_SOUND_ROUTE(1, "filter2l", 0.50) MCFG_SOUND_ROUTE(1, "filter2_l", 0.50)
MCFG_SOUND_ROUTE(1, "filter2r", 0.50) MCFG_SOUND_ROUTE(1, "filter2_r", 0.50)
MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000)) MCFG_DEVICE_ADD("k054539", K054539, XTAL(18'432'000))
MCFG_K054539_APAN_CB(xexex_state, ym_set_mixing) MCFG_K054539_APAN_CB(xexex_state, ym_set_mixing)
@ -532,13 +535,13 @@ MACHINE_CONFIG_START(xexex_state::xexex)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_FILTER_VOLUME_ADD("filter1l", 0) MCFG_FILTER_VOLUME_ADD("filter1_l", 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_FILTER_VOLUME_ADD("filter1r", 0) MCFG_FILTER_VOLUME_ADD("filter1_r", 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MCFG_FILTER_VOLUME_ADD("filter2l", 0) MCFG_FILTER_VOLUME_ADD("filter2_l", 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_FILTER_VOLUME_ADD("filter2r", 0) MCFG_FILTER_VOLUME_ADD("filter2_r", 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -574,8 +577,6 @@ ROM_START( xexex ) /* Europe, Version AA */
ROM_LOAD( "er5911.19b", 0x0000, 0x0080, CRC(155624cc) SHA1(457f921e3a5d053c53e4f1a44941eb0a1f22e1b2) ) ROM_LOAD( "er5911.19b", 0x0000, 0x0080, CRC(155624cc) SHA1(457f921e3a5d053c53e4f1a44941eb0a1f22e1b2) )
ROM_END ROM_END
ROM_START( orius ) /* USA, Version AA */ ROM_START( orius ) /* USA, Version AA */
ROM_REGION( 0x180000, "maincpu", 0 ) ROM_REGION( 0x180000, "maincpu", 0 )
ROM_LOAD16_BYTE( "067uaa01.16d", 0x000000, 0x040000, CRC(f1263d3e) SHA1(c8a10b90e754ec7a72a23ac85b888f071ca40bb1) ) ROM_LOAD16_BYTE( "067uaa01.16d", 0x000000, 0x040000, CRC(f1263d3e) SHA1(c8a10b90e754ec7a72a23ac85b888f071ca40bb1) )
@ -683,7 +684,7 @@ DRIVER_INIT_MEMBER(xexex_state,xexex)
} }
} }
GAME( 1991, xexex, 0, xexex, xexex, xexex_state, xexex, ROT0, "Konami", "Xexex (ver EAA)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, xexex, 0, xexex, xexex, xexex_state, xexex, ROT0, "Konami", "Xexex (ver EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, orius, xexex, xexex, xexex, xexex_state, xexex, ROT0, "Konami", "Orius (ver UAA)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, orius, xexex, xexex, xexex, xexex_state, xexex, ROT0, "Konami", "Orius (ver UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, xexexa, xexex, xexex, xexex, xexex_state, xexex, ROT0, "Konami", "Xexex (ver AAA)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, xexexa, xexex, xexex, xexex, xexex_state, xexex, ROT0, "Konami", "Xexex (ver AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, xexexj, xexex, xexex, xexex, xexex_state, xexex, ROT0, "Konami", "Xexex (ver JAA)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, xexexj, xexex, xexex, xexex, xexex_state, xexex, ROT0, "Konami", "Xexex (ver JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )

View File

@ -23,30 +23,34 @@ class xexex_state : public driver_device
{ {
public: public:
xexex_state(const machine_config &mconfig, device_type type, const char *tag) xexex_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_workram(*this, "workram"), , m_workram(*this, "workram")
m_spriteram(*this, "spriteram"), , m_spriteram(*this, "spriteram")
m_maincpu(*this, "maincpu"), , m_z80bank(*this, "z80bank")
m_audiocpu(*this, "audiocpu"), , m_maincpu(*this, "maincpu")
m_k054539(*this, "k054539"), , m_audiocpu(*this, "audiocpu")
m_filter1l(*this, "filter1l"), , m_k054539(*this, "k054539")
m_filter1r(*this, "filter1r"), , m_filter_l(*this, "filter%u_l", 1)
m_filter2l(*this, "filter2l"), , m_filter_r(*this, "filter%u_r", 1)
m_filter2r(*this, "filter2r"), , m_k056832(*this, "k056832")
m_k056832(*this, "k056832"), , m_k053246(*this, "k053246")
m_k053246(*this, "k053246"), , m_k053250(*this, "k053250")
m_k053250(*this, "k053250"), , m_k053251(*this, "k053251")
m_k053251(*this, "k053251"), , m_k053252(*this, "k053252")
m_k053252(*this, "k053252"), , m_k054338(*this, "k054338")
m_k054338(*this, "k054338"), , m_palette(*this, "palette")
m_palette(*this, "palette"), , m_screen(*this, "screen")
m_screen(*this, "screen"), , m_k054321(*this, "k054321")
m_k054321(*this, "k054321") { } {
}
/* memory pointers */ /* memory pointers */
required_shared_ptr<uint16_t> m_workram; required_shared_ptr<uint16_t> m_workram;
required_shared_ptr<uint16_t> m_spriteram; required_shared_ptr<uint16_t> m_spriteram;
/* memory regions */
required_memory_bank m_z80bank;
/* video-related */ /* video-related */
int m_layer_colorbase[4]; int m_layer_colorbase[4];
int m_sprite_colorbase; int m_sprite_colorbase;
@ -65,10 +69,8 @@ public:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<k054539_device> m_k054539; required_device<k054539_device> m_k054539;
required_device<filter_volume_device> m_filter1l; required_device_array<filter_volume_device, 2> m_filter_l;
required_device<filter_volume_device> m_filter1r; required_device_array<filter_volume_device, 2> m_filter_r;
required_device<filter_volume_device> m_filter2l;
required_device<filter_volume_device> m_filter2r;
required_device<k056832_device> m_k056832; required_device<k056832_device> m_k056832;
required_device<k053247_device> m_k053246; required_device<k053247_device> m_k053246;
required_device<k053250_device> m_k053250; required_device<k053250_device> m_k053250;