1 // license:BSD-3-Clause 2 // copyright-holders:Phil Stroffolino 3 /************************************************************************* 4 5 DJ Boy 6 7 *************************************************************************/ 8 9 #include "cpu/mcs51/mcs51.h" 10 #include "machine/gen_latch.h" 11 #include "machine/timer.h" 12 #include "video/kan_pand.h" 13 #include "emupal.h" 14 #include "tilemap.h" 15 16 #define PROT_OUTPUT_BUFFER_SIZE 8 17 18 class djboy_state : public driver_device 19 { 20 public: djboy_state(const machine_config & mconfig,device_type type,const char * tag)21 djboy_state(const machine_config &mconfig, device_type type, const char *tag) 22 : driver_device(mconfig, type, tag) 23 , m_videoram(*this, "videoram") 24 , m_paletteram(*this, "paletteram") 25 , m_masterbank(*this, "master_bank") 26 , m_slavebank(*this, "slave_bank") 27 , m_soundbank(*this, "sound_bank") 28 , m_masterbank_l(*this, "master_bank_l") 29 , m_port_in(*this, "IN%u", 0) 30 , m_port_dsw(*this, "DSW%u", 1) 31 , m_mastercpu(*this, "mastercpu") 32 , m_slavecpu(*this, "slavecpu") 33 , m_soundcpu(*this, "soundcpu") 34 , m_beast(*this, "beast") 35 , m_pandora(*this, "pandora") 36 , m_gfxdecode(*this, "gfxdecode") 37 , m_palette(*this, "palette") 38 , m_soundlatch(*this, "soundlatch") 39 , m_slavelatch(*this, "slavelatch") 40 , m_beastlatch(*this, "beastlatch") 41 { 42 } 43 44 void djboy(machine_config &config); 45 46 void init_djboy(); 47 void init_djboyj(); 48 49 private: 50 /* memory pointers */ 51 required_shared_ptr<uint8_t> m_videoram; 52 required_shared_ptr<uint8_t> m_paletteram; 53 54 /* ROM banking */ 55 uint8_t m_bankxor; 56 57 required_memory_bank m_masterbank; 58 required_memory_bank m_slavebank; 59 required_memory_bank m_soundbank; 60 required_memory_bank m_masterbank_l; 61 62 required_ioport_array<3> m_port_in; 63 required_ioport_array<2> m_port_dsw; 64 65 /* video-related */ 66 tilemap_t *m_background; 67 uint8_t m_videoreg; 68 uint8_t m_scrollx; 69 uint8_t m_scrolly; 70 71 /* Kaneko BEAST state */ 72 uint8_t m_beast_p0; 73 uint8_t m_beast_p1; 74 uint8_t m_beast_p2; 75 uint8_t m_beast_p3; 76 77 /* devices */ 78 required_device<cpu_device> m_mastercpu; 79 required_device<cpu_device> m_slavecpu; 80 required_device<cpu_device> m_soundcpu; 81 required_device<i80c51_device> m_beast; 82 required_device<kaneko_pandora_device> m_pandora; 83 required_device<gfxdecode_device> m_gfxdecode; 84 required_device<palette_device> m_palette; 85 required_device<generic_latch_8_device> m_soundlatch; 86 required_device<generic_latch_8_device> m_slavelatch; 87 required_device<generic_latch_8_device> m_beastlatch; 88 89 uint8_t beast_status_r(); 90 void trigger_nmi_on_mastercpu(uint8_t data); 91 void mastercpu_bankswitch_w(uint8_t data); 92 void slavecpu_bankswitch_w(uint8_t data); 93 void coin_count_w(uint8_t data); 94 void soundcpu_bankswitch_w(uint8_t data); 95 uint8_t beast_p0_r(); 96 void beast_p0_w(uint8_t data); 97 uint8_t beast_p1_r(); 98 void beast_p1_w(uint8_t data); 99 uint8_t beast_p2_r(); 100 void beast_p2_w(uint8_t data); 101 uint8_t beast_p3_r(); 102 void beast_p3_w(uint8_t data); 103 void djboy_scrollx_w(uint8_t data); 104 void djboy_scrolly_w(uint8_t data); 105 void djboy_videoram_w(offs_t offset, uint8_t data); 106 void djboy_paletteram_w(offs_t offset, uint8_t data); 107 TILE_GET_INFO_MEMBER(get_bg_tile_info); 108 virtual void machine_start() override; 109 virtual void machine_reset() override; 110 virtual void video_start() override; 111 uint32_t screen_update_djboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 112 DECLARE_WRITE_LINE_MEMBER(screen_vblank_djboy); 113 TIMER_DEVICE_CALLBACK_MEMBER(djboy_scanline); 114 void mastercpu_am(address_map &map); 115 void mastercpu_port_am(address_map &map); 116 void slavecpu_am(address_map &map); 117 void slavecpu_port_am(address_map &map); 118 void soundcpu_am(address_map &map); 119 void soundcpu_port_am(address_map &map); 120 }; 121