1 // license:BSD-3-Clause 2 // copyright-holders:Dan Boris 3 4 #ifndef MAME_INCLUDES_ADVISION_H 5 #define MAME_INCLUDES_ADVISION_H 6 7 #pragma once 8 9 #include "bus/generic/slot.h" 10 #include "bus/generic/carts.h" 11 #include "cpu/cop400/cop400.h" 12 #include "cpu/mcs48/mcs48.h" 13 #include "sound/dac.h" 14 #include "emupal.h" 15 16 #define SCREEN_TAG "screen" 17 #define I8048_TAG "i8048" 18 #define COP411_TAG "cop411" 19 20 class advision_state : public driver_device 21 { 22 public: advision_state(const machine_config & mconfig,device_type type,const char * tag)23 advision_state(const machine_config &mconfig, device_type type, const char *tag) 24 : driver_device(mconfig, type, tag) 25 , m_maincpu(*this, I8048_TAG) 26 , m_soundcpu(*this, COP411_TAG) 27 , m_dac(*this, "dac") 28 , m_cart(*this, "cartslot") 29 , m_bank1(*this, "bank1") 30 , m_joy(*this, "joystick") 31 , m_palette(*this, "palette") 32 { } 33 34 required_device<i8048_device> m_maincpu; 35 required_device<cop411_cpu_device> m_soundcpu; 36 required_device<dac_byte_interface> m_dac; 37 required_device<generic_slot_device> m_cart; 38 required_memory_bank m_bank1; 39 required_ioport m_joy; 40 required_device<palette_device> m_palette; 41 42 virtual void machine_start() override; 43 virtual void machine_reset() override; 44 45 virtual void video_start() override; 46 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 47 48 void update_dac(); 49 void vh_write(int data); 50 void vh_update(int x); 51 52 uint8_t rom_r(offs_t offset); 53 uint8_t ext_ram_r(offs_t offset); 54 void ext_ram_w(offs_t offset, uint8_t data); 55 uint8_t controller_r(); 56 void bankswitch_w(uint8_t data); 57 void av_control_w(uint8_t data); 58 DECLARE_READ_LINE_MEMBER( vsync_r ); 59 60 TIMER_CALLBACK_MEMBER( sound_cmd_sync ); 61 uint8_t sound_cmd_r(); 62 void sound_g_w(uint8_t data); 63 void sound_d_w(uint8_t data); 64 65 memory_region *m_cart_rom; 66 67 int m_ea_bank; 68 69 /* external RAM state */ 70 std::vector<uint8_t> m_ext_ram; 71 int m_rambank; 72 73 /* video state */ 74 int m_frame_count; 75 int m_frame_start; 76 int m_video_enable; 77 int m_video_bank; 78 int m_video_hpos; 79 uint8_t m_led_latch[8]; 80 std::unique_ptr<uint8_t []> m_display; 81 82 /* sound state */ 83 int m_sound_cmd; 84 int m_sound_d; 85 int m_sound_g; 86 void advision_palette(palette_device &palette) const; 87 void advision(machine_config &config); 88 void io_map(address_map &map); 89 void program_map(address_map &map); 90 }; 91 92 #endif 93