1 // license:BSD-3-Clause 2 // copyright-holders:Stefan Jokisch 3 /************************************************************************* 4 5 Atari Triple Hunt hardware 6 7 *************************************************************************/ 8 #ifndef MAME_INCLUDES_TRIPLHNT_H 9 #define MAME_INCLUDES_TRIPLHNT_H 10 11 #pragma once 12 13 #include "machine/74259.h" 14 #include "machine/watchdog.h" 15 #include "sound/discrete.h" 16 #include "sound/samples.h" 17 #include "emupal.h" 18 #include "screen.h" 19 #include "tilemap.h" 20 21 22 /* Discrete Sound Input Nodes */ 23 #define TRIPLHNT_BEAR_ROAR_DATA NODE_01 24 #define TRIPLHNT_BEAR_EN NODE_02 25 #define TRIPLHNT_SHOT_DATA NODE_03 26 #define TRIPLHNT_SCREECH_EN NODE_04 27 #define TRIPLHNT_LAMP_EN NODE_05 28 29 30 class triplhnt_state : public driver_device 31 { 32 public: triplhnt_state(const machine_config & mconfig,device_type type,const char * tag)33 triplhnt_state(const machine_config &mconfig, device_type type, const char *tag) : 34 driver_device(mconfig, type, tag), 35 m_maincpu(*this, "maincpu"), 36 m_latch(*this, "latch"), 37 m_watchdog(*this, "watchdog"), 38 m_discrete(*this, "discrete"), 39 m_samples(*this, "samples"), 40 m_gfxdecode(*this, "gfxdecode"), 41 m_screen(*this, "screen"), 42 m_palette(*this, "palette"), 43 m_playfield_ram(*this, "playfield_ram"), 44 m_vpos_ram(*this, "vpos_ram"), 45 m_hpos_ram(*this, "hpos_ram"), 46 m_orga_ram(*this, "orga_ram"), 47 m_code_ram(*this, "code_ram"), 48 m_lamp(*this, "lamp0") 49 { } 50 51 void triplhnt(machine_config &config); 52 53 void init_triplhnt(); 54 55 private: 56 enum 57 { 58 TIMER_HIT 59 }; 60 61 DECLARE_WRITE_LINE_MEMBER(coin_lockout_w); 62 DECLARE_WRITE_LINE_MEMBER(tape_control_w); 63 64 uint8_t cmos_r(offs_t offset); 65 uint8_t input_port_4_r(); 66 uint8_t misc_r(offs_t offset); 67 uint8_t da_latch_r(offs_t offset); 68 69 TILE_GET_INFO_MEMBER(get_tile_info); 70 virtual void video_start() override; 71 void triplhnt_palette(palette_device &palette) const; 72 73 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 74 void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); 75 void set_collision(int code); 76 77 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 78 virtual void machine_start() override; 79 void triplhnt_map(address_map &map); 80 81 required_device<cpu_device> m_maincpu; 82 required_device<f9334_device> m_latch; 83 required_device<watchdog_timer_device> m_watchdog; 84 required_device<discrete_sound_device> m_discrete; 85 required_device<samples_device> m_samples; 86 required_device<gfxdecode_device> m_gfxdecode; 87 required_device<screen_device> m_screen; 88 required_device<palette_device> m_palette; 89 90 required_shared_ptr<uint8_t> m_playfield_ram; 91 required_shared_ptr<uint8_t> m_vpos_ram; 92 required_shared_ptr<uint8_t> m_hpos_ram; 93 required_shared_ptr<uint8_t> m_orga_ram; 94 required_shared_ptr<uint8_t> m_code_ram; 95 output_finder<> m_lamp; 96 97 uint8_t m_cmos[16]; 98 uint8_t m_da_latch; 99 uint8_t m_cmos_latch; 100 uint8_t m_hit_code; 101 int m_sprite_zoom; 102 int m_sprite_bank; 103 bitmap_ind16 m_helper; 104 emu_timer *m_hit_timer; 105 tilemap_t* m_bg_tilemap; 106 }; 107 108 /*----------- defined in audio/triplhnt.cpp -----------*/ 109 DISCRETE_SOUND_EXTERN( triplhnt_discrete ); 110 extern const char *const triplhnt_sample_names[]; 111 112 #endif // MAME_INCLUDES_TRIPLHNT_H 113