1 // license:BSD-3-Clause 2 // copyright-holders:Mike Balfour 3 /************************************************************************* 4 5 Atari Night Driver hardware 6 7 *************************************************************************/ 8 #ifndef MAME_INCLUDES_NITEDRVR_H 9 #define MAME_INCLUDES_NITEDRVR_H 10 11 #pragma once 12 13 #include "machine/timer.h" 14 #include "sound/discrete.h" 15 #include "emupal.h" 16 17 /* Discrete Sound Input Nodes */ 18 #define NITEDRVR_BANG_DATA NODE_01 19 #define NITEDRVR_SKID1_EN NODE_02 20 #define NITEDRVR_SKID2_EN NODE_03 21 #define NITEDRVR_MOTOR_DATA NODE_04 22 #define NITEDRVR_CRASH_EN NODE_05 23 #define NITEDRVR_ATTRACT_EN NODE_06 24 25 26 class nitedrvr_state : public driver_device 27 { 28 public: nitedrvr_state(const machine_config & mconfig,device_type type,const char * tag)29 nitedrvr_state(const machine_config &mconfig, device_type type, const char *tag) : 30 driver_device(mconfig, type, tag), 31 m_videoram(*this, "videoram"), 32 m_hvc(*this, "hvc"), 33 m_maincpu(*this, "maincpu"), 34 m_discrete(*this, "discrete"), 35 m_gfxdecode(*this, "gfxdecode"), 36 m_palette(*this, "palette"), 37 m_led(*this, "led") 38 { } 39 40 void nitedrvr(machine_config &config); 41 42 private: 43 uint8_t nitedrvr_steering_reset_r(); 44 void nitedrvr_steering_reset_w(uint8_t data); 45 uint8_t nitedrvr_in0_r(offs_t offset); 46 uint8_t nitedrvr_in1_r(offs_t offset); 47 void nitedrvr_out0_w(uint8_t data); 48 void nitedrvr_out1_w(uint8_t data); 49 virtual void machine_start() override; 50 virtual void machine_reset() override; 51 uint32_t screen_update_nitedrvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 52 TIMER_DEVICE_CALLBACK_MEMBER(nitedrvr_crash_toggle_callback); 53 void draw_box(bitmap_ind16 &bitmap, const rectangle &cliprect, int bx, int by, int ex, int ey); 54 void draw_roadway(bitmap_ind16 &bitmap, const rectangle &cliprect); 55 void draw_tiles(bitmap_ind16 &bitmap, const rectangle &cliprect); 56 int nitedrvr_steering(); 57 void nitedrvr_map(address_map &map); 58 59 /* memory pointers */ 60 required_shared_ptr<uint8_t> m_videoram; 61 required_shared_ptr<uint8_t> m_hvc; 62 63 /* input */ 64 uint8_t m_gear; 65 uint8_t m_track; 66 int32_t m_steering_buf; 67 int32_t m_steering_val; 68 uint8_t m_crash_en; 69 uint8_t m_crash_data; 70 uint8_t m_crash_data_en; // IC D8 71 uint8_t m_ac_line; 72 int32_t m_last_steering_val; 73 74 /* devices */ 75 required_device<cpu_device> m_maincpu; 76 required_device<discrete_device> m_discrete; 77 required_device<gfxdecode_device> m_gfxdecode; 78 required_device<palette_device> m_palette; 79 output_finder<> m_led; 80 }; 81 82 /*----------- defined in audio/nitedrvr.c -----------*/ 83 DISCRETE_SOUND_EXTERN( nitedrvr_discrete ); 84 85 #endif // MAME_INCLUDES_NITEDRVR_H 86