diff options
Diffstat (limited to 'src/mame/includes/williams.h')
-rw-r--r-- | src/mame/includes/williams.h | 514 |
1 files changed, 0 insertions, 514 deletions
diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h deleted file mode 100644 index 2054be06828..00000000000 --- a/src/mame/includes/williams.h +++ /dev/null @@ -1,514 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/************************************************************************* - - Driver for early Williams games - -**************************************************************************/ -#ifndef MAME_INCLUDES_WILLIAMS_H -#define MAME_INCLUDES_WILLIAMS_H - -#pragma once - -#include "audio/williams.h" -#include "audio/s11c_bg.h" -#include "cpu/m6800/m6800.h" -#include "cpu/m6809/m6809.h" -#include "machine/6821pia.h" -#include "machine/74157.h" -#include "machine/bankdev.h" -#include "machine/ticket.h" -#include "machine/timer.h" -#include "machine/watchdog.h" -#include "sound/hc55516.h" -#include "emupal.h" -#include "screen.h" -#include "tilemap.h" - -class williams_state : public driver_device -{ -public: - williams_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_nvram(*this, "nvram"), - m_videoram(*this, "videoram"), - m_mainbank(*this, "mainbank"), - m_maincpu(*this, "maincpu"), - m_soundcpu(*this, "soundcpu"), - m_watchdog(*this, "watchdog"), - m_screen(*this, "screen"), - m_palette(*this, "palette"), - m_paletteram(*this, "paletteram"), - m_pia(*this, "pia_%u", 0U) - { } - - 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(); - virtual void watchdog_reset_w(u8 data); - - virtual TIMER_DEVICE_CALLBACK_MEMBER(va11_callback); - TIMER_DEVICE_CALLBACK_MEMBER(count240_callback); - - virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void palette_init(palette_device &palette) const; - -protected: - virtual void machine_start() override; - virtual void video_start() override; - - enum - { - //controlbyte (0xCA00) bit definitions - WMS_BLITTER_CONTROLBYTE_NO_EVEN = 0x80, - WMS_BLITTER_CONTROLBYTE_NO_ODD = 0x40, - WMS_BLITTER_CONTROLBYTE_SHIFT = 0x20, - WMS_BLITTER_CONTROLBYTE_SOLID = 0x10, - WMS_BLITTER_CONTROLBYTE_FOREGROUND_ONLY = 0x08, - WMS_BLITTER_CONTROLBYTE_SLOW = 0x04, //2us blits instead of 1us - WMS_BLITTER_CONTROLBYTE_DST_STRIDE_256 = 0x02, - WMS_BLITTER_CONTROLBYTE_SRC_STRIDE_256 = 0x01 - }; - - required_shared_ptr<uint8_t> m_nvram; - required_shared_ptr<uint8_t> m_videoram; - optional_memory_bank m_mainbank; - uint8_t m_blitter_config; - uint16_t m_blitter_clip_address; - uint8_t m_blitter_window_enable; - uint8_t m_cocktail; - std::unique_ptr<rgb_t[]> m_palette_lookup; - uint8_t m_blitterram[8]; - uint8_t m_blitter_xor; - uint8_t m_blitter_remap_index; - const uint8_t *m_blitter_remap; - std::unique_ptr<uint8_t[]> m_blitter_remap_lookup; - virtual void vram_select_w(u8 data); - virtual void cmos_w(offs_t offset, u8 data); - void sinistar_vram_select_w(u8 data); - void blitter_w(address_space &space, offs_t offset, u8 data); - - TIMER_CALLBACK_MEMBER(deferred_snd_cmd_w); - - void snd_cmd_w(u8 data); - - DECLARE_WRITE_LINE_MEMBER(lottofun_coin_lock_w); - - void state_save_register(); - void blitter_init(int blitter_config, const uint8_t *remap_prom); - inline void blit_pixel(address_space &space, int dstaddr, int srcdata, int controlbyte); - int blitter_core(address_space &space, int sstart, int dstart, int w, int h, int data); - - required_device<cpu_device> m_maincpu; - required_device<cpu_device> m_soundcpu; - required_device<watchdog_timer_device> m_watchdog; - required_device<screen_device> m_screen; - optional_device<palette_device> m_palette; - optional_shared_ptr<uint8_t> m_paletteram; - optional_device_array<pia6821_device, 4> m_pia; - - virtual void sound_map(address_map &map); - void base_map(address_map &map); -}; - -class defender_state : public williams_state -{ -public: - defender_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_state(mconfig, type, tag), - m_bankc000(*this, "bankc000") - { } - - void defender(machine_config &config); - void jin(machine_config &config); - -protected: - virtual void driver_init() override; - - virtual void main_map(address_map &map); - - void video_control_w(u8 data); - - required_device<address_map_bank_device> m_bankc000; - -private: - virtual void machine_start() override { } - virtual void machine_reset() override; - - void bankc000_map(address_map &map); - virtual void sound_map(address_map &map) override; - - void bank_select_w(u8 data); -}; - -class defndjeu_state : public defender_state -{ -public: - defndjeu_state(const machine_config &mconfig, device_type type, const char *tag) : - defender_state(mconfig, type, tag) - { } - -private: - virtual void driver_init() override; -}; - -class mayday_state : public defender_state -{ -public: - mayday_state(const machine_config &mconfig, device_type type, const char *tag) : - defender_state(mconfig, type, tag) - { } - -private: - virtual void driver_init() override; - - virtual void main_map(address_map &map) override; - - uint8_t *m_protection; - u8 protection_r(offs_t offset); -}; - -class sinistar_state : public williams_state -{ -public: - sinistar_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_state(mconfig, type, tag) - { } - - 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); -}; - -class bubbles_state : public williams_state -{ -public: - bubbles_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_state(mconfig, type, tag) - { } - - 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; -}; - -class playball_state : public williams_state -{ -public: - playball_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_state(mconfig, type, tag) - { } - - void playball(machine_config &config); - -private: - virtual void driver_init() override; - - void snd_cmd_w(u8 data); -}; - -class williams_muxed_state : public williams_state -{ -public: - williams_muxed_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_state(mconfig, type, tag), - m_mux0(*this, "mux_0"), - m_mux1(*this, "mux_1") - { } - - void williams_muxed(machine_config &config); - - void init_splat(); - void init_joust(); - void init_alienar(); - void init_alienaru(); - -private: - required_device<ls157_device> m_mux0; - required_device<ls157_device> m_mux1; -}; - -class spdball_state : public williams_state -{ -public: - spdball_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_state(mconfig, type, tag) - { } - - void spdball(machine_config &config); - -private: - virtual void driver_init() override; - - void main_map(address_map &map); -}; - -class blaster_state : public williams_state -{ -public: - blaster_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_state(mconfig, type, tag), - m_soundcpu_b(*this, "soundcpu_b"), - m_palette_0(*this, "blaster_pal0"), - m_scanline_control(*this, "blaster_scan"), - m_bankb(*this, "blaster_bankb"), - m_muxa(*this, "mux_a"), - m_muxb(*this, "mux_b") - { } - - void blastkit(machine_config &config); - void blaster(machine_config &config); - -private: - virtual void machine_start() override; - virtual void video_start() override; - virtual void driver_init() override; - - optional_device<cpu_device> m_soundcpu_b; - required_shared_ptr<uint8_t> m_palette_0; - required_shared_ptr<uint8_t> m_scanline_control; - optional_memory_bank m_bankb; - required_device<ls157_x2_device> m_muxa; - optional_device<ls157_device> m_muxb; - - rgb_t m_color0; - uint8_t m_video_control; - uint8_t m_vram_bank; - uint8_t m_rom_bank; - - virtual void vram_select_w(u8 data) override; - void bank_select_w(u8 data); - void remap_select_w(u8 data); - void video_control_w(u8 data); - TIMER_CALLBACK_MEMBER(deferred_snd_cmd_w); - void snd_cmd_w(u8 data); - - virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override; - - inline void update_blaster_banking(); - - void main_map(address_map &map); - void sound2_map(address_map &map); -}; - -class williams2_state : public williams_state -{ -public: - williams2_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_state(mconfig, type, tag), - m_bank8000(*this, "bank8000"), - m_gfxdecode(*this, "gfxdecode"), - m_tileram(*this, "williams2_tile"), - m_gain( { 0.25f, 0.25f, 0.25f }), - m_offset({ 0.00f, 0.00f, 0.00f }) - { } - - void williams2_base(machine_config &config); - - INPUT_CHANGED_MEMBER(rgb_gain) - { - if (param < 3) - m_gain[param] = float(newval) / 100.0f; - else - m_offset[param - 3] = (float(newval) / 100.0f) - 1.0f; - rebuild_palette(); - } - -protected: - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - - required_device<address_map_bank_device> m_bank8000; - required_device<gfxdecode_device> m_gfxdecode; - required_shared_ptr<uint8_t> m_tileram; - - tilemap_t *m_bg_tilemap; - uint16_t m_tilemap_xscroll; - uint8_t m_fg_color; - std::array<float, 3> m_gain; - std::array<float, 3> m_offset; - - virtual u8 video_counter_r() override; - - virtual TILE_GET_INFO_MEMBER(get_tile_info); - void bank_select_w(u8 data); - virtual void watchdog_reset_w(u8 data) override; - void segments_w(u8 data); - - rgb_t calc_col(uint16_t lo, uint16_t hi); - void paletteram_w(offs_t offset, u8 data); - void rebuild_palette(); - void fg_select_w(u8 data); - virtual void bg_select_w(u8 data); - void tileram_w(offs_t offset, u8 data); - void xscroll_low_w(u8 data); - void xscroll_high_w(u8 data); - void blit_window_enable_w(u8 data); - virtual TIMER_DEVICE_CALLBACK_MEMBER(va11_callback) override; - TIMER_DEVICE_CALLBACK_MEMBER(endscreen_callback); - TIMER_CALLBACK_MEMBER(deferred_snd_cmd_w); - void snd_cmd_w(u8 data); - - virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override; - - void bank8000_map(address_map &map); - void common_map(address_map &map); - virtual void sound_map(address_map &map) override; - - void video_control_w(u8 data); -}; - -class williams_d000_rom_state : public williams2_state -{ -public: - williams_d000_rom_state(const machine_config &mconfig, device_type type, const char *tag) : - williams2_state(mconfig, type, tag) - { } - -protected: - void d000_map(address_map &map); -}; - -class williams_d000_ram_state : public williams2_state -{ -public: - williams_d000_ram_state(const machine_config &mconfig, device_type type, const char *tag) : - williams2_state(mconfig, type, tag) - { } - -protected: - void d000_map(address_map &map); -}; - -class inferno_state : public williams_d000_ram_state -{ -public: - inferno_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_d000_ram_state(mconfig, type, tag), - m_mux(*this, "mux") - { } - - void inferno(machine_config &config); - -private: - virtual void driver_init() override; - - required_device<ls157_device> m_mux; -}; - -class mysticm_state : public williams_d000_ram_state -{ -public: - mysticm_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_d000_ram_state(mconfig, type, tag) - { - // overwrite defaults for mysticm - m_gain = { 0.8f, 0.73f, 0.81f }; - m_offset = { -0.27f, 0.00f, -0.22f }; - } - - void mysticm(machine_config &config); - -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; - - int color_decode(uint8_t base_col, int sig_J1, int y); - - uint8_t m_bg_color; - -}; - -class tshoot_state : public williams_d000_rom_state -{ -public: - tshoot_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_d000_rom_state(mconfig, type, tag), - m_mux(*this, "mux"), - m_gun(*this, {"GUNX", "GUNY"}), - m_grenade_lamp(*this, "Grenade_lamp"), - m_gun_lamp(*this, "Gun_lamp"), - m_p1_gun_recoil(*this, "Player1_Gun_Recoil"), - m_feather_blower(*this, "Feather_Blower") - { } - - void tshoot(machine_config &config); - - template <int P> DECLARE_CUSTOM_INPUT_MEMBER(gun_r); - -private: - virtual void machine_start() override; - virtual void driver_init() override; - - DECLARE_WRITE_LINE_MEMBER(maxvol_w); - void lamp_w(u8 data); - - required_device<ls157_device> m_mux; - required_ioport_array<2> m_gun; - output_finder<> m_grenade_lamp; - output_finder<> m_gun_lamp; - output_finder<> m_p1_gun_recoil; - output_finder<> m_feather_blower; -}; - -class joust2_state : public williams_d000_rom_state -{ -public: - joust2_state(const machine_config &mconfig, device_type type, const char *tag) : - williams_d000_rom_state(mconfig, type, tag), - m_mux(*this, "mux"), - m_bg(*this, "bg") - { } - - void joust2(machine_config &config); - -private: - virtual void machine_start() override; - virtual void driver_init() override; - - required_device<ls157_device> m_mux; - required_device<s11_obg_device> m_bg; - uint16_t m_current_sound_data; - - virtual TILE_GET_INFO_MEMBER(get_tile_info) override; - virtual void bg_select_w(u8 data) override; - - TIMER_CALLBACK_MEMBER(deferred_snd_cmd_w); - void snd_cmd_w(u8 data); - DECLARE_WRITE_LINE_MEMBER(pia_s11_bg_strobe_w); -}; - -/*----------- defined in video/williams.cpp -----------*/ - -#define WILLIAMS_BLITTER_NONE 0 /* no blitter */ -#define WILLIAMS_BLITTER_SC1 1 /* Special Chip 1 blitter */ -#define WILLIAMS_BLITTER_SC2 2 /* Special Chip 2 "bugfixed" blitter */ - -#define WILLIAMS_TILEMAP_MYSTICM 0 /* IC79 is a 74LS85 comparator */ -#define WILLIAMS_TILEMAP_TSHOOT 1 /* IC79 is a 74LS157 selector jumpered to be enabled */ -#define WILLIAMS_TILEMAP_JOUST2 2 /* IC79 is a 74LS157 selector jumpered to be disabled */ - -#endif // MAME_INCLUDES_WILLIAMS_H |