1 // license:BSD-3-Clause 2 // copyright-holders:Luca Elia 3 #ifndef MAME_INCLUDES_GALPANI2_H 4 #define MAME_INCLUDES_GALPANI2_H 5 6 #pragma once 7 8 #include "video/kaneko_spr.h" 9 #include "sound/okim6295.h" 10 #include "machine/eepromser.h" 11 #include "machine/timer.h" 12 #include "emupal.h" 13 14 class galpani2_state : public driver_device 15 { 16 public: galpani2_state(const machine_config & mconfig,device_type type,const char * tag)17 galpani2_state(const machine_config &mconfig, device_type type, const char *tag) : 18 driver_device(mconfig, type, tag), 19 m_maincpu(*this,"maincpu"), 20 m_subcpu(*this,"sub"), 21 m_kaneko_spr(*this, "kan_spr"), 22 m_oki2(*this, "oki2"), 23 m_eeprom(*this, "eeprom"), 24 m_palette(*this, "palette"), 25 m_bg15palette(*this, "bgpalette"), 26 m_bg8palette(*this, "bg8palette"), 27 m_bg8(*this, "bg8.%u", 0), 28 m_palette_val(*this, "palette.%u", 0), 29 m_bg8_scrollx(*this, "bg8_scrollx.%u", 0), 30 m_bg8_scrolly(*this, "bg8_scrolly.%u", 0), 31 m_bg15(*this, "bg15"), 32 m_ram(*this, "ram"), 33 m_ram2(*this, "ram2"), 34 m_spriteram(*this, "spriteram") 35 { } 36 37 void galpani2(machine_config &config); 38 39 private: 40 required_device<cpu_device> m_maincpu; 41 required_device<cpu_device> m_subcpu; 42 optional_device<kaneko16_sprite_device> m_kaneko_spr; 43 required_device<okim6295_device> m_oki2; 44 required_device<eeprom_serial_93cxx_device> m_eeprom; 45 required_device<palette_device> m_palette; 46 required_device<palette_device> m_bg15palette; 47 required_device<palette_device> m_bg8palette; 48 49 required_shared_ptr_array<uint16_t, 2> m_bg8; 50 optional_shared_ptr_array<uint16_t, 2> m_palette_val; 51 required_shared_ptr_array<uint16_t, 2> m_bg8_scrollx; 52 required_shared_ptr_array<uint16_t, 2> m_bg8_scrolly; 53 required_shared_ptr<uint16_t> m_bg15; 54 required_shared_ptr<uint16_t> m_ram; 55 required_shared_ptr<uint16_t> m_ram2; 56 optional_shared_ptr<uint16_t> m_spriteram; 57 58 uint16_t m_eeprom_word; 59 uint16_t m_old_mcu_nmi1; 60 uint16_t m_old_mcu_nmi2; 61 62 void galpani2_mcu_init_w(uint8_t data); 63 void galpani2_mcu_nmi1_w(uint8_t data); 64 void galpani2_mcu_nmi2_w(uint8_t data); 65 void galpani2_coin_lockout_w(uint8_t data); 66 uint16_t galpani2_eeprom_r(); 67 void galpani2_eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 68 void galpani2_oki1_bank_w(uint8_t data); 69 void galpani2_oki2_bank_w(uint8_t data); 70 void subdatabank_select_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 71 virtual void machine_start() override; 72 virtual void machine_reset() override; 73 uint32_t screen_update_galpani2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); 74 void copybg8(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer); 75 void copybg15(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); 76 77 TIMER_DEVICE_CALLBACK_MEMBER(galpani2_interrupt1); 78 TIMER_DEVICE_CALLBACK_MEMBER(galpani2_interrupt2); 79 void galpani2_mcu_nmi1(); 80 void galpani2_mcu_nmi2(); 81 void galpani2_mem1(address_map &map); 82 void galpani2_mem2(address_map &map); 83 }; 84 85 #endif // MAME_INCLUDES_GALPANI2_H 86