fix qbertqub coincounter

This commit is contained in:
Michaël Banaan Ananas 2012-10-12 15:38:54 +00:00
parent f3c9a43acf
commit ff30fb8394
3 changed files with 26 additions and 8 deletions

View File

@ -324,19 +324,30 @@ WRITE8_MEMBER(gottlieb_state::general_output_w)
/* bit 7 controls the optional coin lockout; it appears that no games used this */
}
// custom overrides
WRITE8_MEMBER(gottlieb_state::reactor_output_w)
{
general_output_w(space, offset, data & ~0xe0);
set_led_status(machine(), 0, data & 0x20);
set_led_status(machine(), 1, data & 0x40);
set_led_status(machine(), 2, data & 0x80);
}
WRITE8_MEMBER(gottlieb_state::qbertqub_output_w)
{
// coincounter is on bit 5 instead
general_output_w(space, offset, (data >> 1 & 0x10) | (data & ~0x30));
// bit 4 controls the sprite bank
m_spritebank = (data & 0x10) >> 4;
}
WRITE8_MEMBER(gottlieb_state::stooges_output_w)
{
general_output_w(space, offset, data & ~0x60);
// bit 5,6: joystick input multiplexer
m_joystick_select = (data >> 5) & 0x03;
}
@ -2430,10 +2441,17 @@ DRIVER_INIT_MEMBER(gottlieb_state,romtiles)
}
DRIVER_INIT_MEMBER(gottlieb_state,qbertqub)
{
DRIVER_INIT_CALL(romtiles);
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, write8_delegate(FUNC(gottlieb_state::qbertqub_output_w),this));
}
DRIVER_INIT_MEMBER(gottlieb_state,stooges)
{
DRIVER_INIT_CALL(ramtiles);
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x05803, 0x05803, 0, 0x07f8, write8_delegate(FUNC(gottlieb_state::stooges_output_w),this));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, write8_delegate(FUNC(gottlieb_state::stooges_output_w),this));
}
@ -2474,7 +2492,7 @@ GAME( 1983, mplanetsuk,mplanets, gottlieb1, mplanets, gottlieb_state, romtiles,
GAME( 1983, krull, 0, gottlieb1, krull, gottlieb_state, ramtiles, ROT270, "Gottlieb", "Krull", 0 )
GAME( 1983, kngtmare, 0, gottlieb1, kngtmare, gottlieb_state, romtiles, ROT0, "Gottlieb", "Knightmare (prototype)", GAME_NO_SOUND )
GAME( 1983, sqbert, 0, qbert, qbert, gottlieb_state, romtiles, ROT270, "Mylstar", "Faster, Harder, More Challenging Q*bert (prototype)", GAME_IMPERFECT_SOUND )
GAME( 1983, qbertqub, 0, qbert, qbertqub, gottlieb_state, romtiles, ROT270, "Mylstar", "Q*bert's Qubes", GAME_IMPERFECT_SOUND )
GAME( 1983, qbertqub, 0, qbert, qbertqub, gottlieb_state, qbertqub, ROT270, "Mylstar", "Q*bert's Qubes", GAME_IMPERFECT_SOUND )
GAME( 1984, curvebal, 0, gottlieb1, curvebal, gottlieb_state, romtiles, ROT270, "Mylstar", "Curve Ball", 0 )
/* games using rev 2 sound board */

View File

@ -241,7 +241,8 @@ public:
m_r2_sound(*this, "r2sound"),
m_videoram(*this, "videoram"),
m_charram(*this, "charram"),
m_spriteram(*this, "spriteram") { }
m_spriteram(*this, "spriteram")
{ }
// devices
required_device<i8088_device> m_maincpu;
@ -275,10 +276,12 @@ public:
UINT8 m_transparent0;
tilemap_t *m_bg_tilemap;
double m_weights[4];
DECLARE_WRITE8_MEMBER(gottlieb_analog_reset_w);
DECLARE_WRITE8_MEMBER(general_output_w);
DECLARE_WRITE8_MEMBER(reactor_output_w);
DECLARE_WRITE8_MEMBER(stooges_output_w);
DECLARE_WRITE8_MEMBER(qbertqub_output_w);
DECLARE_READ8_MEMBER(laserdisc_status_r);
DECLARE_WRITE8_MEMBER(laserdisc_select_w);
DECLARE_WRITE8_MEMBER(laserdisc_command_w);
@ -295,6 +298,7 @@ public:
DECLARE_DRIVER_INIT(vidvince);
DECLARE_DRIVER_INIT(ramtiles);
DECLARE_DRIVER_INIT(stooges);
DECLARE_DRIVER_INIT(qbertqub);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_screwloo_bg_tile_info);
virtual void machine_start();

View File

@ -63,15 +63,11 @@ WRITE8_MEMBER(gottlieb_state::gottlieb_video_control_w)
flip_screen_y_set(data & 0x04);
machine().tilemap().mark_all_dirty();
}
/* in Q*Bert Qubes only, bit 4 controls the sprite bank */
m_spritebank = (data & 0x10) >> 4;
}
WRITE8_MEMBER(gottlieb_state::gottlieb_laserdisc_video_control_w)
{
/* bit 0 works like the other games */
gottlieb_video_control_w(space, offset, data & 0x01);