diff --git a/src/mame/midway/williams.cpp b/src/mame/midway/williams.cpp index 36609725bdc..b459082583c 100644 --- a/src/mame/midway/williams.cpp +++ b/src/mame/midway/williams.cpp @@ -1594,6 +1594,9 @@ void defender_state::defender(machine_config &config) ADDRESS_MAP_BANK(config, m_bankc000).set_map(&defender_state::bankc000_map).set_options(ENDIANNESS_BIG, 8, 16, 0x1000); m_screen->set_visarea(12, 304-1, 7, 247-1); + + m_blitter_config = WILLIAMS_BLITTER_NONE; + m_blitter_clip_address = 0x0000; } @@ -1605,6 +1608,22 @@ void defender_state::jin(machine_config &config) // needs a different screen si } +void williams_state::stargate(machine_config &config) +{ + williams_base(config); + m_blitter_config = WILLIAMS_BLITTER_NONE; + m_blitter_clip_address = 0x0000; +} + + +void williams_state::robotron(machine_config &config) +{ + williams_base(config); + m_blitter_config = WILLIAMS_BLITTER_SC1; + m_blitter_clip_address = 0xc000; +} + + void williams_muxed_state::williams_muxed(machine_config &config) { williams_base(config); @@ -1630,6 +1649,22 @@ void williams_muxed_state::williams_muxed(machine_config &config) } +void williams_muxed_state::joust(machine_config &config) +{ + williams_muxed(config); + m_blitter_config = WILLIAMS_BLITTER_SC1; + m_blitter_clip_address = 0xc000; +} + + +void williams_muxed_state::splat(machine_config &config) +{ + williams_muxed(config); + m_blitter_config = WILLIAMS_BLITTER_SC2; + m_blitter_clip_address = 0xc000; +} + + void spdball_state::spdball(machine_config &config) { williams_base(config); @@ -1641,6 +1676,9 @@ void spdball_state::spdball(machine_config &config) PIA6821(config, m_pia[3], 0); m_pia[3]->readpa_handler().set_ioport("IN3"); m_pia[3]->readpb_handler().set_ioport("IN4"); + + m_blitter_config = WILLIAMS_BLITTER_SC1; + m_blitter_clip_address = 0xc000; } @@ -1655,6 +1693,9 @@ void williams_state::lottofun(machine_config &config) m_pia[0]->ca2_handler().set(FUNC(williams_state::lottofun_coin_lock_w)); TICKET_DISPENSER(config, "ticket", attotime::from_msec(70), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH); + + m_blitter_config = WILLIAMS_BLITTER_SC1; + m_blitter_clip_address = 0xc000; } @@ -1673,6 +1714,9 @@ void sinistar_state::sinistar(machine_config &config) m_pia[2]->ca2_handler().set("cvsd", FUNC(hc55516_device::digit_w)); m_pia[2]->cb2_handler().set("cvsd", FUNC(hc55516_device::clock_w)); + + m_blitter_config = WILLIAMS_BLITTER_SC1; + m_blitter_clip_address = 0x7400; } @@ -1682,6 +1726,9 @@ void bubbles_state::bubbles(machine_config &config) // has a full 8-bit NVRAM e // basic machine hardware m_maincpu->set_addrmap(AS_PROGRAM, &bubbles_state::main_map); + + m_blitter_config = WILLIAMS_BLITTER_SC1; + m_blitter_clip_address = 0xc000; } @@ -1702,6 +1749,9 @@ void playball_state::playball(machine_config &config) m_pia[2]->ca2_handler().set("cvsd", FUNC(hc55516_device::digit_w)); m_pia[2]->cb2_handler().set("cvsd", FUNC(hc55516_device::clock_w)); + + m_blitter_config = WILLIAMS_BLITTER_SC1; + m_blitter_clip_address = 0xc000; } @@ -1724,6 +1774,9 @@ void blaster_state::blastkit(machine_config &config) LS157_X2(config, m_muxa, 0); m_muxa->a_in_callback().set_ioport("IN3"); m_muxa->b_in_callback().set(FUNC(williams_state::port_0_49way_r)); + + m_blitter_config = WILLIAMS_BLITTER_SC2; + m_blitter_clip_address = 0x9700; } @@ -1825,6 +1878,9 @@ void williams2_state::williams2_base(machine_config &config) m_pia[2]->ca2_handler().set(m_pia[1], FUNC(pia6821_device::cb1_w)); m_pia[2]->irqa_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<0>)); m_pia[2]->irqb_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>)); + + m_blitter_config = WILLIAMS_BLITTER_SC2; + m_blitter_clip_address = 0x9000; } @@ -3674,18 +3730,9 @@ ROM_END * *************************************/ -void defender_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_NONE; - m_blitter_clip_address = 0x0000; -} - - -void defndjeu_state::driver_init() +void defndjeu_state::driver_start() { uint8_t *rom = memregion("maincpu")->base(); - m_blitter_config = WILLIAMS_BLITTER_NONE; - m_blitter_clip_address = 0x0000; // apply simple decryption by swapping bits 0 and 7 for (int i = 0xd000; i < 0x19000; i++) @@ -3693,142 +3740,18 @@ void defndjeu_state::driver_init() } -void mayday_state::driver_init() +void mayday_state::driver_start() { - m_blitter_config = WILLIAMS_BLITTER_NONE; - m_blitter_clip_address = 0x0000; m_protection = m_videoram + 0xa190; } - -/************************************* - * - * Standard hardware driver init - * - *************************************/ - -void williams_state::init_stargate() -{ - m_blitter_config = WILLIAMS_BLITTER_NONE; - m_blitter_clip_address = 0x0000; -} - - -void williams_state::init_robotron() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; -} - - -void williams_muxed_state::init_joust() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; -} - - -void bubbles_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; -} - - -void williams_muxed_state::init_splat() -{ - m_blitter_config = WILLIAMS_BLITTER_SC2; - m_blitter_clip_address = 0xc000; -} - - -void sinistar_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0x7400; -} - - -void playball_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; -} - - -void blaster_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC2; - m_blitter_clip_address = 0x9700; -} - - -void spdball_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; -} - - void williams_muxed_state::init_alienar() { - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; m_maincpu->space(AS_PROGRAM).nop_write(0xcbff, 0xcbff); } -void williams_muxed_state::init_alienaru() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; - m_maincpu->space(AS_PROGRAM).nop_write(0xcbff, 0xcbff); -} - - -void williams_state::init_lottofun() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; -} - - - -/************************************* - * - * 2nd gen hardware driver init - * - *************************************/ - -void mysticm_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC2; - m_blitter_clip_address = 0x9000; -} - - -void tshoot_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC2; - m_blitter_clip_address = 0x9000; -} - - -void inferno_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC2; - m_blitter_clip_address = 0x9000; -} - - -void joust2_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC2; - m_blitter_clip_address = 0x9000; -} - - /************************************* * @@ -3867,26 +3790,26 @@ GAME( 1982, jin, 0, jin, jin, defender_state, // Standard Williams hardware -GAME( 1981, stargate, 0, williams_base, stargate, williams_state, init_stargate, ROT0, "Williams / Vid Kidz", "Stargate", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, stargate, 0, stargate, stargate, williams_state, empty_init, ROT0, "Williams / Vid Kidz", "Stargate", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, robotron, 0, williams_base, robotron, williams_state, init_robotron, ROT0, "Williams / Vid Kidz", "Robotron: 2084 (Solid Blue label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, robotronyo, robotron, williams_base, robotron, williams_state, init_robotron, ROT0, "Williams / Vid Kidz", "Robotron: 2084 (Yellow/Orange label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, robotronun, robotron, williams_base, robotron, williams_state, init_robotron, ROT0, "Williams / Vid Kidz (Unidesa license)", "Robotron: 2084 (Unidesa license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, robotron, 0, robotron, robotron, williams_state, empty_init, ROT0, "Williams / Vid Kidz", "Robotron: 2084 (Solid Blue label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, robotronyo, robotron, robotron, robotron, williams_state, empty_init, ROT0, "Williams / Vid Kidz", "Robotron: 2084 (Yellow/Orange label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, robotronun, robotron, robotron, robotron, williams_state, empty_init, ROT0, "Williams / Vid Kidz (Unidesa license)", "Robotron: 2084 (Unidesa license)", MACHINE_SUPPORTS_SAVE ) // the 3 below are all noteworthy hacks of the Solid BLue set -GAME( 1987, robotron87, robotron, williams_base, robotron, williams_state, init_robotron, ROT0, "hack", "Robotron: 2084 (1987 'shot-in-the-corner' bugfix)", MACHINE_SUPPORTS_SAVE ) // fixes a reset bug. -GAME( 2012, robotron12, robotron, williams_base, robotron, williams_state, init_robotron, ROT0, "hack", "Robotron: 2084 (2012 'wave 201 start' hack)", MACHINE_SUPPORTS_SAVE ) // includes sitc bug fix, used for competitive play. -GAME( 2015, robotrontd, robotron, williams_base, robotron, williams_state, init_robotron, ROT0, "hack", "Robotron: 2084 (2015 'tie-die V2' hack)", MACHINE_SUPPORTS_SAVE ) // inc. sitc fix, mods by some of the original developers, see backstory here http://www.robotron2084guidebook.com/gameplay/raceto100million/robo2k14_tie-die-romset/ (I guess there's a tie-die V1 before it was released to the public?) +GAME( 1987, robotron87, robotron, robotron, robotron, williams_state, empty_init, ROT0, "hack", "Robotron: 2084 (1987 'shot-in-the-corner' bugfix)", MACHINE_SUPPORTS_SAVE ) // fixes a reset bug. +GAME( 2012, robotron12, robotron, robotron, robotron, williams_state, empty_init, ROT0, "hack", "Robotron: 2084 (2012 'wave 201 start' hack)", MACHINE_SUPPORTS_SAVE ) // includes sitc bug fix, used for competitive play. +GAME( 2015, robotrontd, robotron, robotron, robotron, williams_state, empty_init, ROT0, "hack", "Robotron: 2084 (2015 'tie-die V2' hack)", MACHINE_SUPPORTS_SAVE ) // inc. sitc fix, mods by some of the original developers, see backstory here http://www.robotron2084guidebook.com/gameplay/raceto100million/robo2k14_tie-die-romset/ (I guess there's a tie-die V1 before it was released to the public?) -GAME( 1982, joust, 0, williams_muxed, joust, williams_muxed_state, init_joust, ROT0, "Williams", "Joust (Green label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, joustr, joust, williams_muxed, joust, williams_muxed_state, init_joust, ROT0, "Williams", "Joust (Red label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, jousty, joust, williams_muxed, joust, williams_muxed_state, init_joust, ROT0, "Williams", "Joust (Yellow label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, joust, 0, joust, joust, williams_muxed_state, empty_init, ROT0, "Williams", "Joust (Green label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, joustr, joust, joust, joust, williams_muxed_state, empty_init, ROT0, "Williams", "Joust (Red label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, jousty, joust, joust, joust, williams_muxed_state, empty_init, ROT0, "Williams", "Joust (Yellow label)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, bubbles, 0, bubbles, bubbles, bubbles_state, empty_init, ROT0, "Williams", "Bubbles", MACHINE_SUPPORTS_SAVE ) GAME( 1982, bubblesr, bubbles, bubbles, bubbles, bubbles_state, empty_init, ROT0, "Williams", "Bubbles (Solid Red label)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, bubblesp, bubbles, bubbles, bubbles, bubbles_state, empty_init, ROT0, "Williams", "Bubbles (prototype version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, splat, 0, williams_muxed, splat, williams_muxed_state, init_splat, ROT0, "Williams", "Splat!", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, splat, 0, splat, splat, williams_muxed_state, empty_init, ROT0, "Williams", "Splat!", MACHINE_SUPPORTS_SAVE ) GAME( 1982, sinistar, 0, sinistar, sinistar, sinistar_state, empty_init, ROT270, "Williams", "Sinistar (revision 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, sinistar2, sinistar, sinistar, sinistar, sinistar_state, empty_init, ROT270, "Williams", "Sinistar (revision 2)", MACHINE_SUPPORTS_SAVE ) @@ -3900,10 +3823,10 @@ GAME( 1983, blasterkit, blaster, blastkit, blastkit, blaster_state, GAME( 1985, spdball, 0, spdball, spdball, spdball_state, empty_init, ROT0, "Williams", "Speed Ball - Contest at Neonworld (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, alienar, 0, williams_muxed, alienar, williams_muxed_state, init_alienar, ROT0, "Duncan Brown", "Alien Arena", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, alienaru, alienar, williams_muxed, alienar, williams_muxed_state, init_alienaru, ROT0, "Duncan Brown", "Alien Arena (Stargate upgrade)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, alienar, 0, joust, alienar, williams_muxed_state, init_alienar, ROT0, "Duncan Brown", "Alien Arena", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, alienaru, alienar, joust, alienar, williams_muxed_state, init_alienar, ROT0, "Duncan Brown", "Alien Arena (Stargate upgrade)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, lottofun, 0, lottofun, lottofun, williams_state, init_lottofun, ROT0, "H.A.R. Management", "Lotto Fun", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, lottofun, 0, lottofun, lottofun, williams_state, empty_init, ROT0, "H.A.R. Management", "Lotto Fun", MACHINE_SUPPORTS_SAVE ) // 2nd Generation Williams hardware with tilemaps diff --git a/src/mame/midway/williams.h b/src/mame/midway/williams.h index baa556a346b..4ea7625ec2f 100644 --- a/src/mame/midway/williams.h +++ b/src/mame/midway/williams.h @@ -44,13 +44,9 @@ public: m_pia(*this, "pia_%u", 0U) { } + void stargate(machine_config &config); + void robotron(machine_config &config); void lottofun(machine_config &config); - void williams_base(machine_config &config); - - void init_stargate(); - void init_playball(); - void init_lottofun(); - void init_robotron(); u8 port_0_49way_r(); virtual u8 video_counter_r(); @@ -63,6 +59,8 @@ public: void palette_init(palette_device &palette) const; protected: + void williams_base(machine_config &config); + virtual void machine_start() override; virtual void video_start() override; @@ -132,8 +130,6 @@ public: void jin(machine_config &config); protected: - virtual void driver_init() override; - virtual void main_map(address_map &map); void video_control_w(u8 data); @@ -158,7 +154,7 @@ public: { } private: - virtual void driver_init() override; + virtual void driver_start() override; }; class mayday_state : public defender_state @@ -169,7 +165,7 @@ public: { } private: - virtual void driver_init() override; + virtual void driver_start() override; virtual void main_map(address_map &map) override; @@ -187,8 +183,6 @@ public: void sinistar(machine_config &config); private: - virtual void driver_init() override; - virtual void vram_select_w(u8 data) override; void main_map(address_map &map); @@ -204,8 +198,6 @@ public: void bubbles(machine_config &config); private: - virtual void driver_init() override; - void main_map(address_map &map); virtual void cmos_w(offs_t offset, u8 data) override; @@ -221,8 +213,6 @@ public: void playball(machine_config &config); private: - virtual void driver_init() override; - void snd_cmd_w(u8 data); }; @@ -235,14 +225,14 @@ public: m_mux1(*this, "mux_1") { } - void williams_muxed(machine_config &config); + void joust(machine_config &config); + void splat(machine_config &config); - void init_splat(); - void init_joust(); void init_alienar(); - void init_alienaru(); private: + void williams_muxed(machine_config &config); + required_device m_mux0; required_device m_mux1; }; @@ -257,8 +247,6 @@ public: void spdball(machine_config &config); private: - virtual void driver_init() override; - void main_map(address_map &map); }; @@ -279,7 +267,6 @@ public: private: virtual void machine_start() override; virtual void video_start() override; - virtual void driver_init() override; optional_device m_soundcpu_b; optional_memory_bank m_bankb; @@ -407,8 +394,6 @@ public: void inferno(machine_config &config); private: - virtual void driver_init() override; - required_device m_mux; }; @@ -429,8 +414,6 @@ protected: virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override; private: - virtual void driver_init() override; - virtual TILE_GET_INFO_MEMBER(get_tile_info) override; virtual void bg_select_w(u8 data) override; @@ -459,7 +442,6 @@ public: private: virtual void machine_start() override; - virtual void driver_init() override; DECLARE_WRITE_LINE_MEMBER(maxvol_w); void lamp_w(u8 data); @@ -485,7 +467,6 @@ public: private: virtual void machine_start() override; - virtual void driver_init() override; required_device m_mux; required_device m_bg; diff --git a/src/mame/midway/wmg.cpp b/src/mame/midway/wmg.cpp index 3a08d4a25cb..dfe2a74c48b 100644 --- a/src/mame/midway/wmg.cpp +++ b/src/mame/midway/wmg.cpp @@ -97,8 +97,6 @@ public: template DECLARE_CUSTOM_INPUT_MEMBER(wmg_mux_r); private: - virtual void driver_init() override; - u8 wmg_nvram_r(offs_t offset); void wmg_nvram_w(offs_t offset, u8 data); u8 wmg_pia_0_r(offs_t offset); @@ -495,17 +493,6 @@ u8 wmg_state::wmg_pia_0_r(offs_t offset) return data; } -/************************************* - * - * Driver Initialisation - * - *************************************/ -void wmg_state::driver_init() -{ - m_blitter_config = WILLIAMS_BLITTER_SC1; - m_blitter_clip_address = 0xc000; -} - /************************************* * * Machine Driver @@ -565,6 +552,9 @@ void wmg_state::wmg(machine_config &config) pia2.writepa_handler().set("dac", FUNC(dac_byte_interface::data_w)); pia2.irqa_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<0>)); pia2.irqb_handler().set("soundirq", FUNC(input_merger_any_high_device::in_w<1>)); + + m_blitter_config = WILLIAMS_BLITTER_SC1; + m_blitter_clip_address = 0xc000; } /*************************************