1 // license:BSD-3-Clause 2 // copyright-holders:Aaron Giles,Nicola Salmoria 3 #define NVRAM_UNLOCK_SEQ_LEN 10 4 5 #include "cpu/tms34010/tms34010.h" 6 #include "machine/gen_latch.h" 7 #include "machine/timer.h" 8 #include "video/tlc34076.h" 9 10 class coolpool_state : public driver_device 11 { 12 public: coolpool_state(const machine_config & mconfig,device_type type,const char * tag)13 coolpool_state(const machine_config &mconfig, device_type type, const char *tag) 14 : driver_device(mconfig, type, tag) 15 , m_maincpu(*this, "maincpu") 16 , m_dsp(*this, "dsp") 17 , m_tlc34076(*this, "tlc34076") 18 , m_main2dsp(*this, "main2dsp") 19 , m_dsp2main(*this, "dsp2main") 20 , m_nvram_timer(*this, "nvram_timer") 21 , m_vram_base(*this, "vram_base") 22 , m_nvram(*this, "nvram") 23 , m_dsp_rom(*this, "dspdata") 24 { } 25 26 required_device<tms34010_device> m_maincpu; 27 required_device<cpu_device> m_dsp; 28 optional_device<tlc34076_device> m_tlc34076; 29 30 required_device<generic_latch_16_device> m_main2dsp; 31 required_device<generic_latch_16_device> m_dsp2main; 32 33 required_device<timer_device> m_nvram_timer; 34 35 required_shared_ptr<uint16_t> m_vram_base; 36 required_shared_ptr<uint16_t> m_nvram; 37 required_region_ptr<uint8_t> m_dsp_rom; 38 39 int m_iop_romaddr; 40 41 uint8_t m_newx[3]; 42 uint8_t m_newy[3]; 43 uint8_t m_oldx[3]; 44 uint8_t m_oldy[3]; 45 int m_dx[3]; 46 int m_dy[3]; 47 48 uint16_t m_result; 49 uint16_t m_lastresult; 50 51 uint16_t m_nvram_write_seq[NVRAM_UNLOCK_SEQ_LEN]; 52 uint8_t m_nvram_write_enable; 53 bool m_old_cmd; 54 uint8_t m_same_cmd_count; 55 void nvram_thrash_w(offs_t offset, uint16_t data); 56 void nvram_data_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 57 void nvram_thrash_data_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 58 void amerdart_misc_w(uint16_t data); 59 DECLARE_READ_LINE_MEMBER(amerdart_dsp_bio_line_r); 60 uint16_t amerdart_trackball_r(offs_t offset); 61 void coolpool_misc_w(uint16_t data); 62 uint16_t dsp_bio_line_r(); 63 uint16_t dsp_hold_line_r(); 64 uint16_t dsp_rom_r(); 65 void dsp_romaddr_w(offs_t offset, uint16_t data); 66 uint16_t coolpool_input_r(offs_t offset); 67 TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg); 68 TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg); 69 TMS340X0_SCANLINE_RGB32_CB_MEMBER(amerdart_scanline); 70 TMS340X0_SCANLINE_RGB32_CB_MEMBER(coolpool_scanline); 71 void init_coolpool(); 72 void init_amerdart(); 73 void init_9ballsht(); 74 DECLARE_MACHINE_RESET(amerdart); 75 DECLARE_MACHINE_RESET(coolpool); 76 TIMER_DEVICE_CALLBACK_MEMBER(nvram_write_timeout); 77 TIMER_DEVICE_CALLBACK_MEMBER(amerdart_audio_int_gen); 78 void register_state_save(); 79 int amerdart_trackball_direction(int num, int data); 80 void _9ballsht(machine_config &config); 81 void coolpool(machine_config &config); 82 void amerdart(machine_config &config); 83 void amerdart_dsp_io_map(address_map &map); 84 void amerdart_dsp_pgm_map(address_map &map); 85 void amerdart_map(address_map &map); 86 void coolpool_dsp_io_map(address_map &map); 87 void coolpool_dsp_io_base_map(address_map &map); 88 void coolpool_dsp_pgm_map(address_map &map); 89 void coolpool_map(address_map &map); 90 void nballsht_dsp_io_map(address_map &map); 91 void nballsht_map(address_map &map); 92 }; 93