1 // license:BSD-3-Clause 2 // copyright-holders:Aaron Giles 3 /************************************************************************* 4 5 Atari GX2 hardware 6 7 *************************************************************************/ 8 #ifndef MAME_INCLUDES_ATARIGX2_H 9 #define MAME_INCLUDES_ATARIGX2_H 10 11 #pragma once 12 13 #include "audio/atarijsa.h" 14 #include "machine/adc0808.h" 15 #include "machine/atarigen.h" 16 #include "machine/atarixga.h" 17 #include "machine/timer.h" 18 #include "video/atarirle.h" 19 #include "tilemap.h" 20 21 22 class atarigx2_state : public atarigen_state 23 { 24 public: atarigx2_state(const machine_config & mconfig,device_type type,const char * tag)25 atarigx2_state(const machine_config &mconfig, device_type type, const char *tag) 26 : atarigen_state(mconfig, type, tag) 27 , m_jsa(*this, "jsa") 28 , m_xga(*this, "xga") 29 , m_mo_command(*this, "mo_command") 30 , m_playfield_tilemap(*this, "playfield") 31 , m_alpha_tilemap(*this, "alpha") 32 , m_rle(*this, "rle") 33 , m_adc(*this, "adc") 34 { } 35 36 void init_spclords(); 37 void init_rrreveng(); 38 void init_motofren(); 39 void atarigx2_0x200(machine_config &config); 40 void atarigx2_0x400(machine_config &config); 41 42 protected: 43 virtual void video_start() override; 44 void video_int_ack_w(uint32_t data = 0); 45 TIMER_DEVICE_CALLBACK_MEMBER(scanline_update); 46 uint32_t special_port2_r(); 47 uint32_t special_port3_r(); 48 uint8_t a2d_data_r(offs_t offset); 49 void latch_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 50 void mo_command_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 51 void atarigx2_protection_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 52 uint32_t atarigx2_protection_r(offs_t offset, uint32_t mem_mask = ~0); 53 uint32_t rrreveng_prot_r(); 54 TILE_GET_INFO_MEMBER(get_alpha_tile_info); 55 TILE_GET_INFO_MEMBER(get_playfield_tile_info); 56 TILEMAP_MAPPER_MEMBER(atarigx2_playfield_scan); 57 uint32_t screen_update_atarigx2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 58 void atarigx2_mo_control_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 59 60 void atarigx2(machine_config &config); 61 void main_map(address_map &map); 62 63 private: 64 uint16_t m_playfield_base; 65 66 required_device<atari_jsa_iiis_device> m_jsa; 67 optional_device<atari_xga_device> m_xga; 68 69 required_shared_ptr<uint32_t> m_mo_command; 70 71 required_device<tilemap_device> m_playfield_tilemap; 72 required_device<tilemap_device> m_alpha_tilemap; 73 required_device<atari_rle_objects_device> m_rle; 74 75 required_device<adc0808_device> m_adc; 76 77 uint16_t m_current_control; 78 uint8_t m_playfield_tile_bank; 79 uint8_t m_playfield_color_bank; 80 uint16_t m_playfield_xscroll; 81 uint16_t m_playfield_yscroll; 82 83 // LEGACY PROTECTION 84 uint16_t m_last_write; 85 uint16_t m_last_write_offset; 86 uint32_t m_protection_ram[0x1000]; 87 }; 88 89 #endif // MAME_INCLUDES_ATARIGX2_H 90