1 // license:BSD-3-Clause 2 // copyright-holders:Tomasz Slanina 3 #include "sound/dac.h" 4 #include <algorithm> 5 6 #define RLT_NUM_BLITTER_REGS 8 7 #define RLT_NUM_BITMAPS 8 8 9 class rltennis_state : public driver_device 10 { 11 public: rltennis_state(const machine_config & mconfig,device_type type,const char * tag)12 rltennis_state(const machine_config &mconfig, device_type type, const char *tag) : 13 driver_device(mconfig, type, tag), 14 m_maincpu(*this, "maincpu"), 15 m_dac(*this, "dac%u", 1U), 16 m_samples(*this, "samples%u", 1U), 17 m_gfx(*this, "gfx"), 18 m_data760000(0), m_data740000(0), m_dac_counter(0), 19 m_offset_shift(0) 20 { 21 std::fill(std::begin(m_sample_rom_offset), std::end(m_sample_rom_offset), 0); 22 } 23 24 void rltennis(machine_config &config); 25 26 private: 27 required_device<cpu_device> m_maincpu; 28 required_device_array<dac_byte_interface, 2> m_dac; 29 required_region_ptr_array<uint8_t, 2> m_samples; 30 required_region_ptr<uint8_t> m_gfx; 31 32 uint16_t m_blitter[RLT_NUM_BLITTER_REGS]; 33 int32_t m_data760000; 34 int32_t m_data740000; 35 int32_t m_dac_counter; 36 int32_t m_sample_rom_offset[2]; 37 int32_t m_offset_shift; 38 int32_t m_unk_counter; 39 std::unique_ptr<bitmap_ind16> m_tmp_bitmap[RLT_NUM_BITMAPS]; 40 emu_timer *m_timer; 41 42 uint16_t io_r(); 43 void snd1_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 44 void snd2_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 45 void blitter_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 46 47 virtual void machine_start() override; 48 virtual void machine_reset() override; 49 virtual void video_start() override; 50 51 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 52 53 INTERRUPT_GEN_MEMBER(interrupt); 54 TIMER_CALLBACK_MEMBER(sample_player); 55 void ramdac_map(address_map &map); 56 void rltennis_main(address_map &map); 57 }; 58