diff options
Diffstat (limited to 'src/mame/includes/kaneko16.h')
-rw-r--r-- | src/mame/includes/kaneko16.h | 159 |
1 files changed, 85 insertions, 74 deletions
diff --git a/src/mame/includes/kaneko16.h b/src/mame/includes/kaneko16.h index e5714367bad..f54b6118282 100644 --- a/src/mame/includes/kaneko16.h +++ b/src/mame/includes/kaneko16.h @@ -34,9 +34,7 @@ public: kaneko16_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_audiocpu(*this, "audiocpu"), m_ym2149(*this, "ym2149_%u", 1), - m_ymsnd(*this, "ymsnd"), m_oki(*this, "oki%u", 1), m_view2(*this, "view2_%u", 0), m_kaneko_hit(*this, "kan_hit"), @@ -59,14 +57,24 @@ public: m_p2_port(*this, "P2"), m_fake_port(*this, "FAKE"), m_dsw_port(*this, "DSW1"), - m_wheel_port(*this, "WHEEL%u", 0U) + m_eepromout_port(*this, "EEPROMOUT"), + m_wheel_port(*this, "WHEEL%u", 0U), + m_audiocpu(*this, "audiocpu"), + m_ymsnd(*this, "ymsnd") { } + void init_kaneko16(); + void init_bakubrkr(); + + void bakubrkr(machine_config &config); + void wingforc(machine_config &config); + void blazeon(machine_config &config); + void mgcrystl(machine_config &config); + +protected: required_device<m68000_device> m_maincpu; - optional_device<z80_device> m_audiocpu; optional_device_array<ym2149_device, 2> m_ym2149; - optional_device<ym2151_device> m_ymsnd; optional_device_array<okim6295_device, 2> m_oki; optional_device_array<kaneko_view2_tilemap_device, 2> m_view2; optional_device<kaneko_hit_device> m_kaneko_hit; @@ -81,10 +89,10 @@ public: optional_device<generic_latch_8_device> m_soundlatch; optional_device<watchdog_timer_device> m_watchdog; - required_region_ptr<uint16_t> m_mainregion; - optional_shared_ptr<uint16_t> m_spriteram; - optional_shared_ptr<uint16_t> m_mainram; - optional_shared_ptr<uint16_t> m_mcuram; + required_region_ptr<u16> m_mainregion; + optional_shared_ptr<u16> m_spriteram; + optional_shared_ptr<u16> m_mainram; + optional_shared_ptr<u16> m_mcuram; optional_memory_region_array<2> m_okiregion; optional_memory_bank_array<2> m_okibank; @@ -92,48 +100,50 @@ public: optional_ioport m_p2_port; optional_ioport m_fake_port; optional_ioport m_dsw_port; + optional_ioport m_eepromout_port; optional_ioport_array<3> m_wheel_port; - uint16_t m_disp_enable; + u16 m_disp_enable; int m_VIEW2_2_pri; - void kaneko16_common_oki_bank_install(int bankno, size_t fixedsize, size_t bankedsize); - DECLARE_WRITE16_MEMBER(kaneko16_coin_lockout_w); - DECLARE_WRITE16_MEMBER(kaneko16_eeprom_w); - - DECLARE_WRITE16_MEMBER(kaneko16_display_enable); + virtual void common_oki_bank_install(int bankno, size_t fixedsize, size_t bankedsize); + void coin_lockout_w(u8 data); + void bloodwar_coin_lockout_w(u8 data); - template<int Chip> DECLARE_READ16_MEMBER(kaneko16_ay_YM2149_r); - template<int Chip> DECLARE_WRITE16_MEMBER(kaneko16_ay_YM2149_w); - template<int Mask> DECLARE_WRITE8_MEMBER(oki_bank0_w); - template<int Mask> DECLARE_WRITE8_MEMBER(oki_bank1_w); - - DECLARE_READ8_MEMBER(eeprom_r); - DECLARE_WRITE8_MEMBER(eeprom_w); - - void init_kaneko16(); - void init_bakubrkr(); + void display_enable_w(offs_t offset, u16 data, u16 mem_mask); // (u16 data, u16 mem_mask); + template<unsigned Chip> DECLARE_READ16_MEMBER(ym2149_r); + template<unsigned Chip> DECLARE_WRITE16_MEMBER(ym2149_w); + template<unsigned Mask> void oki_bank0_w(u8 data); + template<unsigned Mask> void oki_bank1_w(u8 data); DECLARE_MACHINE_RESET(gtmr); - DECLARE_VIDEO_START(kaneko16); DECLARE_MACHINE_RESET(mgcrystl); - uint32_t screen_update_kaneko16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + virtual void video_start() override; + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); template<class _BitmapClass> - uint32_t screen_update_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect); + u32 screen_update_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(kaneko16_interrupt); + TIMER_DEVICE_CALLBACK_MEMBER(interrupt); template<class _BitmapClass> - void kaneko16_fill_bitmap(_BitmapClass &bitmap, const rectangle &cliprect); + void fill_bitmap(_BitmapClass &bitmap, const rectangle &cliprect); + + void unscramble_tiles(const char *region); + + void gtmr_oki1_map(address_map &map); + void gtmr_oki2_map(address_map &map); + +private: + optional_device<z80_device> m_audiocpu; + optional_device<ym2151_device> m_ymsnd; + + u8 eeprom_r(); + void eeprom_w(u8 data); + void eeprom_cs_w(u8 data); - void kaneko16_unscramble_tiles(const char *region); - void bakubrkr(machine_config &config); - void wingforc(machine_config &config); - void blazeon(machine_config &config); - void mgcrystl(machine_config &config); void bakubrkr_map(address_map &map); void bakubrkr_oki1_map(address_map &map); void blazeon_map(address_map &map); @@ -141,8 +151,6 @@ public: void blazeon_soundport(address_map &map); void mgcrystl_map(address_map &map); void wingforc_soundport(address_map &map); - void gtmr_oki1_map(address_map &map); - void gtmr_oki2_map(address_map &map); }; class kaneko16_gtmr_state : public kaneko16_state @@ -153,68 +161,71 @@ public: { } - DECLARE_WRITE16_MEMBER(bloodwar_coin_lockout_w); - DECLARE_READ16_MEMBER(gtmr_wheel_r); - DECLARE_READ16_MEMBER(gtmr2_wheel_r); - DECLARE_READ16_MEMBER(gtmr2_IN1_r); void init_gtmr(); - void kaneko16_common_oki_bank_install(int bankno, size_t fixedsize, size_t bankedsize); - void bonkadv(machine_config &config); void gtmr(machine_config &config); void gtmr2(machine_config &config); void gtmre(machine_config &config); void bloodwar(machine_config &config); + +protected: + virtual void common_oki_bank_install(int bankno, size_t fixedsize, size_t bankedsize) override; + +private: + u16 gtmr_wheel_r(); + u16 gtmr2_wheel_r(); + u16 gtmr2_IN1_r(); + void bloodwar_map(address_map &map); void bonkadv_map(address_map &map); void gtmr2_map(address_map &map); void gtmr_map(address_map &map); }; - - class kaneko16_berlwall_state : public kaneko16_state { public: kaneko16_berlwall_state(const machine_config &mconfig, device_type type, const char *tag) : kaneko16_state(mconfig, type, tag), - m_bg15_select(*this, "bg15_select"), m_bg15_scroll(*this, "bg15_scroll"), - m_bg15_bright(*this, "bg15_bright"), m_bgpalette(*this, "bgpalette") { } - optional_shared_ptr<uint16_t> m_bg15_select; - optional_shared_ptr<uint16_t> m_bg15_scroll; - optional_shared_ptr<uint16_t> m_bg15_bright; + void init_berlwall(); + void init_berlwallk(); + void init_berlwallt(); + void init_berlwall_common(); + void berlwall(machine_config &config); + +protected: + virtual void video_start() override; + +private: + optional_shared_ptr<u16> m_bg15_scroll; required_device<palette_device> m_bgpalette; bitmap_ind16 m_bg15_bitmap[32]; - DECLARE_READ16_MEMBER(kaneko16_bg15_select_r); - DECLARE_WRITE16_MEMBER(kaneko16_bg15_select_w); - DECLARE_READ16_MEMBER(kaneko16_bg15_bright_r); - DECLARE_WRITE16_MEMBER(kaneko16_bg15_bright_w); + u8 bg15_select_r(); + void bg15_select_w(u8 data); + u8 bg15_bright_r(); + void bg15_bright_w(u8 data); - DECLARE_READ16_MEMBER(berlwall_oki_r); DECLARE_WRITE16_MEMBER(berlwall_oki_w); - DECLARE_READ16_MEMBER(berlwall_spriteram_r); - DECLARE_WRITE16_MEMBER(berlwall_spriteram_w); + u16 berlwall_spriteram_r(offs_t offset); + void berlwall_spriteram_w(offs_t offset, u16 data, u16 mem_mask); DECLARE_READ16_MEMBER(berlwall_spriteregs_r); DECLARE_WRITE16_MEMBER(berlwall_spriteregs_w); - void init_berlwall(); - void init_berlwallk(); - void init_berlwallt(); - void init_berlwall_common(); - DECLARE_VIDEO_START(berlwall); - uint32_t screen_update_berlwall(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void kaneko16_render_15bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect); + u8 m_bg15_select; + u8 m_bg15_bright; - void patch_protection(uint32_t bra_offset,uint16_t bra_value,uint16_t checksum); - void berlwall(machine_config &config); + u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + void render_15bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect); + + void patch_protection(u32 bra_offset,u16 bra_value,u16 checksum); void berlwall_map(address_map &map); }; @@ -226,21 +237,21 @@ public: m_calc3_prot(*this, "calc3_prot") { } - - DECLARE_WRITE16_MEMBER(shogwarr_oki_bank_w); - void init_shogwarr(); void init_brapboys(); - TIMER_DEVICE_CALLBACK_MEMBER(shogwarr_interrupt); - void shogwarr(machine_config &config); void brapboys(machine_config &config); - void brapboys_oki2_map(address_map &map); - void shogwarr_map(address_map &map); -private: +private: optional_device<kaneko_calc3_device> m_calc3_prot; + + TIMER_DEVICE_CALLBACK_MEMBER(shogwarr_interrupt); + + void shogwarr_oki_bank_w(u8 data); + + void brapboys_oki2_map(address_map &map); + void shogwarr_map(address_map &map); }; #endif |