1 // license:BSD-3-Clause 2 // copyright-holders:Zsolt Vasvari 3 #ifndef MAME_INCLUDES_ROUTE16_H 4 #define MAME_INCLUDES_ROUTE16_H 5 6 #pragma once 7 8 #include "sound/sn76477.h" 9 #include "emupal.h" 10 #include "screen.h" 11 12 class route16_state : public driver_device 13 { 14 public: route16_state(const machine_config & mconfig,device_type type,const char * tag)15 route16_state(const machine_config &mconfig, device_type type, const char *tag) 16 : driver_device(mconfig, type, tag) 17 , m_cpu1(*this, "cpu1") 18 , m_cpu2(*this, "cpu2") 19 , m_sn(*this, "snsnd") 20 , m_sharedram(*this, "sharedram") 21 , m_videoram1(*this, "videoram1") 22 , m_videoram2(*this, "videoram2") 23 , m_decrypted_opcodes(*this, "decrypted_opcodes") 24 , m_palette(*this, "palette") 25 , m_screen(*this, "screen") 26 , m_key(*this, "KEY%u", 0U) 27 , m_protection_data(0) 28 {} 29 30 void routex(machine_config &config); 31 void jongpute(machine_config &config); 32 void spacecho(machine_config &config); 33 void speakres(machine_config &config); 34 void stratvox(machine_config &config); 35 void route16(machine_config &config); 36 void vscompmj(machine_config &config); 37 38 void init_route16(); 39 void init_route16a(); 40 void init_route16c(); 41 void init_vscompmj(); 42 43 protected: 44 virtual void video_start() override; 45 46 private: 47 void out0_w(uint8_t data); 48 void out1_w(uint8_t data); 49 template<bool cpu1> void route16_sharedram_w(offs_t offset, uint8_t data); 50 uint8_t route16_prot_read(); 51 uint8_t routex_prot_read(); 52 void jongpute_input_port_matrix_w(uint8_t data); 53 uint8_t jongpute_p1_matrix_r(); 54 uint8_t jongpute_p2_matrix_r(); 55 uint8_t speakres_in3_r(); 56 void speakres_out2_w(uint8_t data); 57 void stratvox_sn76477_w(uint8_t data); 58 DECLARE_MACHINE_START(speakres); 59 DECLARE_MACHINE_START(jongpute); 60 61 uint32_t screen_update_route16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); 62 uint32_t screen_update_jongpute(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); 63 64 void cpu1_io_map(address_map &map); 65 void route16_cpu1_map(address_map &map); 66 void route16_cpu2_map(address_map &map); 67 void routex_cpu1_map(address_map &map); 68 void speakres_cpu1_map(address_map &map); 69 void stratvox_cpu1_map(address_map &map); 70 void stratvox_cpu2_map(address_map &map); 71 void jongpute_cpu1_map(address_map &map); 72 void vscompmj_cpu1_map(address_map &map); 73 void vscompmj_decrypted_opcodes(address_map &map); 74 75 required_device<cpu_device> m_cpu1; 76 required_device<cpu_device> m_cpu2; 77 optional_device<sn76477_device> m_sn; 78 79 required_shared_ptr<uint8_t> m_sharedram; 80 required_shared_ptr<uint8_t> m_videoram1; 81 required_shared_ptr<uint8_t> m_videoram2; 82 optional_shared_ptr<uint8_t> m_decrypted_opcodes; 83 required_device<palette_device> m_palette; 84 required_device<screen_device> m_screen; 85 optional_ioport_array<8> m_key; 86 uint8_t m_protection_data; 87 88 uint8_t m_jongpute_port_select; 89 int m_speakres_vrx; 90 uint8_t m_flipscreen; 91 uint8_t m_palette_1; 92 uint8_t m_palette_2; 93 }; 94 95 #endif // MAME_INCLUDES_ROUTE16_H 96