1 // license:GPL-2.0+ 2 // copyright-holders:Jarek Burczynski 3 #ifndef MAME_INCLUDES_40LOVE_H 4 #define MAME_INCLUDES_40LOVE_H 5 6 #pragma once 7 8 #include "machine/taito68705interface.h" 9 #include "machine/gen_latch.h" 10 #include "sound/msm5232.h" 11 #include "sound/ay8910.h" 12 #include "sound/ta7630.h" 13 #include "emupal.h" 14 #include "tilemap.h" 15 16 class fortyl_state : public driver_device 17 { 18 public: fortyl_state(const machine_config & mconfig,device_type type,const char * tag)19 fortyl_state(const machine_config &mconfig, device_type type, const char *tag) 20 : driver_device(mconfig, type, tag) 21 , m_audiocpu(*this, "audiocpu") 22 , m_maincpu(*this, "maincpu") 23 , m_bmcu(*this, "bmcu") 24 , m_msm(*this, "msm") 25 , m_ay(*this,"aysnd") 26 , m_ta7630(*this,"ta7630") 27 , m_gfxdecode(*this, "gfxdecode") 28 , m_palette(*this, "palette") 29 , m_soundlatch2(*this, "soundlatch2") 30 , m_videoram(*this, "videoram") 31 , m_video_ctrl(*this, "video_ctrl") 32 , m_spriteram(*this, "spriteram") 33 , m_colorram(*this, "colorram") 34 , m_spriteram2(*this, "spriteram2") 35 , m_mcu_ram(*this, "mcu_ram") 36 { } 37 38 virtual void driver_init() override; 39 40 uint32_t screen_update_fortyl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 41 void redraw_pixels(); 42 void fortyl_set_scroll_x( int offset ); 43 void fortyl_plot_pix( int offset ); 44 void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); 45 void draw_pixram( bitmap_ind16 &bitmap, const rectangle &cliprect ); 46 47 void common(machine_config &config); 48 void _40love(machine_config &config); 49 void undoukai(machine_config &config); 50 51 void _40love_map(address_map &map); 52 void sound_map(address_map &map); 53 void undoukai_map(address_map &map); 54 55 private: 56 virtual void machine_start() override; 57 virtual void machine_reset() override; 58 virtual void video_start() override; 59 60 void bank_select_w(uint8_t data); 61 uint8_t snd_flag_r(); 62 uint8_t fortyl_mcu_status_r(); 63 void fortyl_pixram_sel_w(uint8_t data); 64 uint8_t fortyl_pixram_r(offs_t offset); 65 void fortyl_pixram_w(offs_t offset, uint8_t data); 66 void fortyl_bg_videoram_w(offs_t offset, uint8_t data); 67 uint8_t fortyl_bg_videoram_r(offs_t offset); 68 void fortyl_bg_colorram_w(offs_t offset, uint8_t data); 69 uint8_t fortyl_bg_colorram_r(offs_t offset); 70 void sound_control_0_w(uint8_t data); 71 void sound_control_1_w(uint8_t data); 72 void sound_control_2_w(uint8_t data); 73 void sound_control_3_w(uint8_t data); 74 TILE_GET_INFO_MEMBER(get_bg_tile_info); 75 76 /* devices */ 77 required_device<cpu_device> m_audiocpu; 78 required_device<cpu_device> m_maincpu; 79 optional_device<taito68705_mcu_device> m_bmcu; 80 required_device<msm5232_device> m_msm; 81 required_device<ym2149_device> m_ay; 82 required_device<ta7630_device> m_ta7630; 83 required_device<gfxdecode_device> m_gfxdecode; 84 required_device<palette_device> m_palette; 85 required_device<generic_latch_8_device> m_soundlatch2; 86 87 /* memory pointers */ 88 required_shared_ptr<uint8_t> m_videoram; 89 required_shared_ptr<uint8_t> m_video_ctrl; 90 required_shared_ptr<uint8_t> m_spriteram; 91 required_shared_ptr<uint8_t> m_colorram; 92 required_shared_ptr<uint8_t> m_spriteram2; 93 optional_shared_ptr<uint8_t> m_mcu_ram; 94 95 /* video-related */ 96 std::unique_ptr<bitmap_ind16> m_tmp_bitmap1; 97 std::unique_ptr<bitmap_ind16> m_tmp_bitmap2; 98 tilemap_t *m_bg_tilemap; 99 uint8_t m_flipscreen; 100 uint8_t m_pix_redraw; 101 uint8_t m_xoffset; 102 std::unique_ptr<uint8_t[]> m_pixram1; 103 std::unique_ptr<uint8_t[]> m_pixram2; 104 bitmap_ind16 *m_pixel_bitmap1; 105 bitmap_ind16 *m_pixel_bitmap2; 106 int m_pixram_sel; 107 bool m_color_bank; 108 bool m_screen_disable; 109 110 /* misc */ 111 int m_pix_color[4]; 112 int m_vol_ctrl[16]; 113 uint8_t m_snd_ctrl0; 114 uint8_t m_snd_ctrl1; 115 uint8_t m_snd_ctrl2; 116 uint8_t m_snd_ctrl3; 117 }; 118 119 #endif // MAME_INCLUDES_40LOVE_H 120