1 // license:BSD-3-Clause 2 // copyright-holders:Mike Balfour, Patrick Lawrence, Brad Oliver 3 /************************************************************************* 4 5 Atari Football hardware 6 7 *************************************************************************/ 8 9 #ifndef MAME_INCLUDES_ATARIFB_H 10 #define MAME_INCLUDES_ATARIFB_H 11 12 #pragma once 13 14 #include "machine/timer.h" 15 #include "sound/discrete.h" 16 #include "video/pwm.h" 17 18 #include "emupal.h" 19 #include "screen.h" 20 #include "tilemap.h" 21 22 23 /* Discrete Sound Input Nodes */ 24 #define ATARIFB_WHISTLE_EN NODE_01 25 #define ATARIFB_CROWD_DATA NODE_02 26 #define ATARIFB_ATTRACT_EN NODE_03 27 #define ATARIFB_NOISE_EN NODE_04 28 #define ATARIFB_HIT_EN NODE_05 29 30 31 class atarifb_state : public driver_device 32 { 33 public: atarifb_state(const machine_config & mconfig,device_type type,const char * tag)34 atarifb_state(const machine_config &mconfig, device_type type, const char *tag) : 35 driver_device(mconfig, type, tag), 36 m_maincpu(*this, "maincpu"), 37 m_discrete(*this, "discrete"), 38 m_gfxdecode(*this, "gfxdecode"), 39 m_screen(*this, "screen"), 40 m_palette(*this, "palette"), 41 m_led_pwm(*this, "led_pwm"), 42 m_leds(*this, "led%u", 0U), 43 m_alphap1_videoram(*this, "p1_videoram"), 44 m_alphap2_videoram(*this, "p2_videoram"), 45 m_field_videoram(*this, "field_videoram"), 46 m_spriteram(*this, "spriteram"), 47 m_scroll_register(*this, "scroll_register") 48 { } 49 50 void intack_w(uint8_t data); 51 void atarifb_out1_w(uint8_t data); 52 void atarifb4_out1_w(uint8_t data); 53 void abaseb_out1_w(uint8_t data); 54 void soccer_out1_w(uint8_t data); 55 void atarifb_out2_w(uint8_t data); 56 void soccer_out2_w(uint8_t data); 57 void atarifb_out3_w(uint8_t data); 58 uint8_t atarifb_in0_r(); 59 uint8_t atarifb_in2_r(); 60 uint8_t atarifb4_in0_r(); 61 uint8_t atarifb4_in2_r(); 62 void atarifb_alpha1_videoram_w(offs_t offset, uint8_t data); 63 void atarifb_alpha2_videoram_w(offs_t offset, uint8_t data); 64 void atarifb_field_videoram_w(offs_t offset, uint8_t data); 65 TILE_GET_INFO_MEMBER(alpha1_get_tile_info); 66 TILE_GET_INFO_MEMBER(alpha2_get_tile_info); 67 TILE_GET_INFO_MEMBER(field_get_tile_info); 68 void atarifb_palette(palette_device &palette) const; 69 uint32_t screen_update_atarifb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 70 uint32_t screen_update_abaseb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 71 uint32_t screen_update_soccer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 72 void get_tile_info_common( tile_data &tileinfo, tilemap_memory_index tile_index, uint8_t *alpha_videoram ); 73 void draw_playfield_and_alpha( bitmap_ind16 &bitmap, const rectangle &cliprect, int playfield_x_offset, int playfield_y_offset ); 74 void draw_sprites_atarifb( bitmap_ind16 &bitmap, const rectangle &cliprect ); 75 void draw_sprites_soccer( bitmap_ind16 &bitmap, const rectangle &cliprect ); 76 void atarifb4(machine_config &config); 77 void atarifb(machine_config &config); 78 void soccer(machine_config &config); 79 void abaseb(machine_config &config); 80 void abaseb_map(address_map &map); 81 void atarifb4_map(address_map &map); 82 void atarifb_map(address_map &map); 83 void soccer_map(address_map &map); 84 85 protected: 86 virtual void machine_start() override; 87 virtual void machine_reset() override; 88 virtual void video_start() override; 89 90 /* devices */ 91 required_device<cpu_device> m_maincpu; 92 required_device<discrete_device> m_discrete; 93 required_device<gfxdecode_device> m_gfxdecode; 94 required_device<screen_device> m_screen; 95 required_device<palette_device> m_palette; 96 required_device<pwm_display_device> m_led_pwm; 97 98 output_finder<2> m_leds; 99 100 TIMER_DEVICE_CALLBACK_MEMBER(interrupt); 101 102 /* video-related */ 103 required_shared_ptr<uint8_t> m_alphap1_videoram; 104 required_shared_ptr<uint8_t> m_alphap2_videoram; 105 required_shared_ptr<uint8_t> m_field_videoram; 106 required_shared_ptr<uint8_t> m_spriteram; 107 required_shared_ptr<uint8_t> m_scroll_register; 108 109 tilemap_t *m_alpha1_tilemap; 110 tilemap_t *m_alpha2_tilemap; 111 tilemap_t *m_field_tilemap; 112 113 /* sound-related */ 114 int m_ctrld; 115 int m_sign_x_1; 116 int m_sign_y_1; 117 int m_sign_x_2; 118 int m_sign_y_2; 119 int m_sign_x_3; 120 int m_sign_y_3; 121 int m_sign_x_4; 122 int m_sign_y_4; 123 int m_counter_x_in0; 124 int m_counter_y_in0; 125 int m_counter_x_in0b; 126 int m_counter_y_in0b; 127 int m_counter_x_in2; 128 int m_counter_y_in2; 129 int m_counter_x_in2b; 130 int m_counter_y_in2b; 131 }; 132 133 //----------- defined in audio/atarifb.cpp ----------- 134 DISCRETE_SOUND_EXTERN( atarifb_discrete ); 135 DISCRETE_SOUND_EXTERN( abaseb_discrete ); 136 137 #endif // MAME_INCLUDES_ATARIFB_H 138