1 // license:BSD-3-Clause 2 // copyright-holders:Ernesto Corvi 3 #ifndef MAME_INCLUDES_SIMPSONS_H 4 #define MAME_INCLUDES_SIMPSONS_H 5 6 #pragma once 7 8 #include "cpu/m6809/konami.h" // for the callback and the firq irq definition 9 #include "machine/bankdev.h" 10 #include "video/k052109.h" 11 #include "video/k053251.h" 12 #include "video/k053246_k053247_k055673.h" 13 #include "video/konami_helper.h" 14 15 class simpsons_state : public driver_device 16 { 17 public: simpsons_state(const machine_config & mconfig,device_type type,const char * tag)18 simpsons_state(const machine_config &mconfig, device_type type, const char *tag) : 19 driver_device(mconfig, type, tag), 20 m_maincpu(*this, "maincpu"), 21 m_audiocpu(*this, "audiocpu"), 22 m_bank0000(*this, "bank0000"), 23 m_bank2000(*this, "bank2000"), 24 m_k052109(*this, "k052109"), 25 m_k053246(*this, "k053246"), 26 m_k053251(*this, "k053251") 27 { } 28 29 void simpsons(machine_config &config); 30 31 private: 32 enum 33 { 34 TIMER_DMASTART, 35 TIMER_DMAEND 36 }; 37 38 /* memory pointers */ 39 std::unique_ptr<uint16_t[]> m_spriteram; 40 41 /* video-related */ 42 int m_sprite_colorbase; 43 int m_layer_colorbase[3]; 44 int m_layerpri[3]; 45 46 /* misc */ 47 int m_firq_enabled; 48 u64 m_nmi_enabled; 49 50 /* devices */ 51 required_device<konami_cpu_device> m_maincpu; 52 required_device<cpu_device> m_audiocpu; 53 required_device<address_map_bank_device> m_bank0000; 54 required_device<address_map_bank_device> m_bank2000; 55 required_device<k052109_device> m_k052109; 56 required_device<k053247_device> m_k053246; 57 required_device<k053251_device> m_k053251; 58 void z80_bankswitch_w(uint8_t data); 59 void z80_arm_nmi_w(uint8_t data); 60 void simpsons_eeprom_w(uint8_t data); 61 void simpsons_coin_counter_w(uint8_t data); 62 uint8_t simpsons_sound_interrupt_r(); 63 uint8_t simpsons_k052109_r(offs_t offset); 64 void simpsons_k052109_w(offs_t offset, uint8_t data); 65 uint8_t simpsons_k053247_r(offs_t offset); 66 void simpsons_k053247_w(offs_t offset, uint8_t data); 67 virtual void machine_start() override; 68 virtual void machine_reset() override; 69 uint32_t screen_update_simpsons(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 70 INTERRUPT_GEN_MEMBER(simpsons_irq); 71 void simpsons_video_banking(int bank); 72 void simpsons_objdma(); 73 void z80_nmi_w(int state); 74 K052109_CB_MEMBER(tile_callback); 75 void banking_callback(u8 data); 76 K053246_CB_MEMBER(sprite_callback); 77 78 void bank0000_map(address_map &map); 79 void bank2000_map(address_map &map); 80 void main_map(address_map &map); 81 void z80_map(address_map &map); 82 83 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 84 }; 85 86 #endif // MAME_INCLUDES_SIMPSONS_H 87