summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/taito_f3.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/taito_f3.h')
-rw-r--r--src/mame/includes/taito_f3.h439
1 files changed, 215 insertions, 224 deletions
diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h
index fff482d847c..787d2ca8554 100644
--- a/src/mame/includes/taito_f3.h
+++ b/src/mame/includes/taito_f3.h
@@ -60,19 +60,28 @@ public:
taito_f3_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "taito_en:audiocpu"),
- m_taito_en(*this, "taito_en"),
m_watchdog(*this, "watchdog"),
- m_oki(*this, "oki"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_eeprom(*this, "eeprom"),
- m_f3_ram(*this,"f3_ram"),
- m_paletteram32(*this, "paletteram"),
+ m_spriterom_hi(*this, "sprites_hi"),
+ m_tilemaprom_hi(*this, "tilemap_hi"),
+ m_textram(*this, "textram", 0),
+ m_spriteram(*this, "spriteram", 0),
+ m_charram(*this, "charram", 0),
+ m_line_ram(*this, "line_ram", 0),
+ m_pf_ram(*this, "pf_ram", 0),
+ m_pivot_ram(*this, "pivot_ram", 0),
m_input(*this, "IN.%u", 0),
m_dial(*this, "DIAL.%u", 0),
- m_eepromin(*this, "EEPROMIN")
+ m_eepromin(*this, "EEPROMIN"),
+ m_eepromout(*this, "EEPROMOUT"),
+ m_audiocpu(*this, "taito_en:audiocpu"),
+ m_taito_en(*this, "taito_en"),
+ m_oki(*this, "oki"),
+ m_paletteram32(*this, "paletteram"),
+ m_okibank(*this, "okibank")
{ }
void f3_eeprom(machine_config &config);
@@ -132,75 +141,103 @@ protected:
TIMER_F3_INTERRUPT3
};
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void device_post_load(void) override;
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+
required_device<cpu_device> m_maincpu;
- optional_device<cpu_device> m_audiocpu;
- optional_device<taito_en_device> m_taito_en;
optional_device<watchdog_timer_device> m_watchdog;
- optional_device<okim6295_device> m_oki;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<eeprom_serial_base_device> m_eeprom;
- optional_shared_ptr<uint32_t> m_f3_ram;
- optional_shared_ptr<uint32_t> m_paletteram32;
+ optional_region_ptr<u8> m_spriterom_hi; // all but 2mindril, bubsymphb
+ optional_region_ptr<u8> m_tilemaprom_hi;
+
+ required_shared_ptr<u16> m_textram;
+ required_shared_ptr<u16> m_spriteram;
+ required_shared_ptr<u16> m_charram;
+ required_shared_ptr<u16> m_line_ram;
+ required_shared_ptr<u16> m_pf_ram;
+ required_shared_ptr<u16> m_pivot_ram;
+
optional_ioport_array<6> m_input;
optional_ioport_array<2> m_dial;
optional_ioport m_eepromin;
+ optional_ioport m_eepromout;
+ emu_timer *m_interrupt3_timer;
+ u32 m_coin_word[2];
- std::unique_ptr<uint16_t[]> m_videoram;
- std::unique_ptr<uint16_t[]> m_spriteram;
- std::unique_ptr<uint16_t[]> m_f3_vram;
- std::unique_ptr<uint16_t[]> m_f3_line_ram;
- std::unique_ptr<uint16_t[]> m_f3_pf_data;
- std::unique_ptr<uint16_t[]> m_f3_pivot_ram;
+ struct tempsprite
+ {
+ int code, color;
+ int flipx, flipy;
+ int x, y;
+ int zoomx, zoomy;
+ int pri;
+ };
- emu_timer *m_interrupt3_timer;
- uint32_t m_coin_word[2];
- int m_f3_game;
- tilemap_t *m_pf1_tilemap;
- tilemap_t *m_pf2_tilemap;
- tilemap_t *m_pf3_tilemap;
- tilemap_t *m_pf4_tilemap;
- tilemap_t *m_pf5_tilemap;
- tilemap_t *m_pf6_tilemap;
- tilemap_t *m_pf7_tilemap;
- tilemap_t *m_pf8_tilemap;
+ struct f3_playfield_line_inf
+ {
+ int alpha_mode[256];
+ int pri[256];
+
+ /* use for draw_scanlines */
+ u16 *src[256], *src_s[256], *src_e[256];
+ u8 *tsrc[256], *tsrc_s[256];
+ int x_count[256];
+ u32 x_zoom[256];
+ u32 clip0[256];
+ u32 clip1[256];
+ };
+
+ struct f3_spritealpha_line_inf
+ {
+ u16 alpha_level[256];
+ u16 spri[256];
+ u16 sprite_alpha[256];
+ u32 sprite_clip0[256];
+ u32 sprite_clip1[256];
+ s16 clip0_l[256];
+ s16 clip0_r[256];
+ s16 clip1_l[256];
+ s16 clip1_r[256];
+ };
+
+ int m_game;
+ tilemap_t *m_tilemap[8];
tilemap_t *m_pixel_layer;
tilemap_t *m_vram_layer;
- std::unique_ptr<uint16_t[]> m_spriteram16_buffered;
- uint16_t m_f3_control_0[8];
- uint16_t m_f3_control_1[8];
+ std::unique_ptr<u16[]> m_spriteram16_buffered;
+ u16 m_control_0[8];
+ u16 m_control_1[8];
int m_flipscreen;
- uint8_t m_sprite_extra_planes;
- uint8_t m_sprite_pen_mask;
- uint16_t *m_f3_pf_data_1;
- uint16_t *m_f3_pf_data_2;
- uint16_t *m_f3_pf_data_3;
- uint16_t *m_f3_pf_data_4;
- uint16_t *m_f3_pf_data_5;
- uint16_t *m_f3_pf_data_6;
- uint16_t *m_f3_pf_data_7;
- uint16_t *m_f3_pf_data_8;
+ u8 m_sprite_extra_planes;
+ u8 m_sprite_pen_mask;
+ u16 *m_pf_data[8];
int m_sprite_lag;
- uint8_t m_sprite_pri_usage;
+ u8 m_sprite_pri_usage;
bitmap_ind8 m_pri_alp_bitmap;
- int m_f3_alpha_level_2as;
- int m_f3_alpha_level_2ad;
- int m_f3_alpha_level_3as;
- int m_f3_alpha_level_3ad;
- int m_f3_alpha_level_2bs;
- int m_f3_alpha_level_2bd;
- int m_f3_alpha_level_3bs;
- int m_f3_alpha_level_3bd;
+ int m_alpha_level_2as;
+ int m_alpha_level_2ad;
+ int m_alpha_level_3as;
+ int m_alpha_level_3ad;
+ int m_alpha_level_2bs;
+ int m_alpha_level_2bd;
+ int m_alpha_level_3bs;
+ int m_alpha_level_3bd;
int m_alpha_level_last;
int m_width_mask;
int m_twidth_mask;
int m_twidth_mask_bit;
- std::unique_ptr<uint8_t[]> m_tile_opaque_sp;
- std::unique_ptr<uint8_t[]> m_tile_opaque_pf[8];
- uint8_t m_add_sat[256][256];
+ std::unique_ptr<u8[]> m_tile_opaque_sp;
+ std::unique_ptr<u8[]> m_tile_opaque_pf[8];
+ u8 m_add_sat[256][256];
int m_alpha_s_1_1;
int m_alpha_s_1_2;
int m_alpha_s_1_4;
@@ -221,197 +258,151 @@ protected:
int m_alpha_s_3b_0;
int m_alpha_s_3b_1;
int m_alpha_s_3b_2;
- uint32_t m_dval;
- uint8_t m_pval;
- uint8_t m_tval;
- uint8_t m_pdest_2a;
- uint8_t m_pdest_2b;
+ u32 m_dval;
+ u8 m_pval;
+ u8 m_tval;
+ u8 m_pdest_2a;
+ u8 m_pdest_2b;
int m_tr_2a;
int m_tr_2b;
- uint8_t m_pdest_3a;
- uint8_t m_pdest_3b;
+ u8 m_pdest_3a;
+ u8 m_pdest_3b;
int m_tr_3a;
int m_tr_3b;
- uint16_t *m_src0;
- uint16_t *m_src_s0;
- uint16_t *m_src_e0;
- uint16_t m_clip_al0;
- uint16_t m_clip_ar0;
- uint16_t m_clip_bl0;
- uint16_t m_clip_br0;
- uint8_t *m_tsrc0;
- uint8_t *m_tsrc_s0;
- uint32_t m_x_count0;
- uint32_t m_x_zoom0;
- uint16_t *m_src1;
- uint16_t *m_src_s1;
- uint16_t *m_src_e1;
- uint16_t m_clip_al1;
- uint16_t m_clip_ar1;
- uint16_t m_clip_bl1;
- uint16_t m_clip_br1;
- uint8_t *m_tsrc1;
- uint8_t *m_tsrc_s1;
- uint32_t m_x_count1;
- uint32_t m_x_zoom1;
- uint16_t *m_src2;
- uint16_t *m_src_s2;
- uint16_t *m_src_e2;
- uint16_t m_clip_al2;
- uint16_t m_clip_ar2;
- uint16_t m_clip_bl2;
- uint16_t m_clip_br2;
- uint8_t *m_tsrc2;
- uint8_t *m_tsrc_s2;
- uint32_t m_x_count2;
- uint32_t m_x_zoom2;
- uint16_t *m_src3;
- uint16_t *m_src_s3;
- uint16_t *m_src_e3;
- uint16_t m_clip_al3;
- uint16_t m_clip_ar3;
- uint16_t m_clip_bl3;
- uint16_t m_clip_br3;
- uint8_t *m_tsrc3;
- uint8_t *m_tsrc_s3;
- uint32_t m_x_count3;
- uint32_t m_x_zoom3;
- uint16_t *m_src4;
- uint16_t *m_src_s4;
- uint16_t *m_src_e4;
- uint16_t m_clip_al4;
- uint16_t m_clip_ar4;
- uint16_t m_clip_bl4;
- uint16_t m_clip_br4;
- uint8_t *m_tsrc4;
- uint8_t *m_tsrc_s4;
- uint32_t m_x_count4;
- uint32_t m_x_zoom4;
+ u16 *m_src[5];
+ u16 *m_src_s[5];
+ u16 *m_src_e[5];
+ u16 m_clip_al[5];
+ u16 m_clip_ar[5];
+ u16 m_clip_bl[5];
+ u16 m_clip_br[5];
+ u8 *m_tsrc[5];
+ u8 *m_tsrc_s[5];
+ u32 m_x_count[5];
+ u32 m_x_zoom[5];
struct tempsprite *m_spritelist;
const struct tempsprite *m_sprite_end;
struct f3_playfield_line_inf *m_pf_line_inf;
struct f3_spritealpha_line_inf *m_sa_line_inf;
- const struct F3config *m_f3_game_config;
- int (taito_f3_state::*m_dpix_n[8][16])(uint32_t s_pix);
- int (taito_f3_state::**m_dpix_lp[5])(uint32_t s_pix);
- int (taito_f3_state::**m_dpix_sp[9])(uint32_t s_pix);
-
- DECLARE_READ32_MEMBER(f3_control_r);
- DECLARE_WRITE32_MEMBER(f3_control_w);
- DECLARE_WRITE32_MEMBER(f3_sound_reset_0_w);
- DECLARE_WRITE32_MEMBER(f3_sound_reset_1_w);
- DECLARE_WRITE32_MEMBER(f3_sound_bankswitch_w);
- DECLARE_WRITE16_MEMBER(f3_unk_w);
- DECLARE_READ32_MEMBER(bubsympb_oki_r);
- DECLARE_WRITE32_MEMBER(bubsympb_oki_w);
- DECLARE_READ16_MEMBER(f3_pf_data_r);
- DECLARE_WRITE16_MEMBER(f3_pf_data_w);
- DECLARE_WRITE16_MEMBER(f3_control_0_w);
- DECLARE_WRITE16_MEMBER(f3_control_1_w);
- DECLARE_READ16_MEMBER(f3_spriteram_r);
- DECLARE_WRITE16_MEMBER(f3_spriteram_w);
- DECLARE_READ16_MEMBER(f3_videoram_r);
- DECLARE_WRITE16_MEMBER(f3_videoram_w);
- DECLARE_READ16_MEMBER(f3_vram_r);
- DECLARE_WRITE16_MEMBER(f3_vram_w);
- DECLARE_READ16_MEMBER(f3_pivot_r);
- DECLARE_WRITE16_MEMBER(f3_pivot_w);
- DECLARE_READ16_MEMBER(f3_lineram_r);
- DECLARE_WRITE16_MEMBER(f3_lineram_w);
- DECLARE_WRITE32_MEMBER(f3_palette_24bit_w);
-
- TILE_GET_INFO_MEMBER(get_tile_info1);
- TILE_GET_INFO_MEMBER(get_tile_info2);
- TILE_GET_INFO_MEMBER(get_tile_info3);
- TILE_GET_INFO_MEMBER(get_tile_info4);
- TILE_GET_INFO_MEMBER(get_tile_info5);
- TILE_GET_INFO_MEMBER(get_tile_info6);
- TILE_GET_INFO_MEMBER(get_tile_info7);
- TILE_GET_INFO_MEMBER(get_tile_info8);
- TILE_GET_INFO_MEMBER(get_tile_info_vram);
+ const struct F3config *m_game_config;
+ int (taito_f3_state::*m_dpix_n[8][16])(u32 s_pix);
+ int (taito_f3_state::**m_dpix_lp[5])(u32 s_pix);
+ int (taito_f3_state::**m_dpix_sp[9])(u32 s_pix);
+
+ u16 pf_ram_r(offs_t offset);
+ void pf_ram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void control_0_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void control_1_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ u16 spriteram_r(offs_t offset);
+ void spriteram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ u16 textram_r(offs_t offset);
+ void textram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ u16 charram_r(offs_t offset);
+ void charram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ u16 pivot_r(offs_t offset);
+ void pivot_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ u16 lineram_r(offs_t offset);
+ void lineram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+
+ template<unsigned Layer> TILE_GET_INFO_MEMBER(get_tile_info);
+ TILE_GET_INFO_MEMBER(get_tile_info_text);
TILE_GET_INFO_MEMBER(get_tile_info_pixel);
- uint32_t screen_update_f3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(screen_vblank_f3);
- INTERRUPT_GEN_MEMBER(f3_interrupt2);
+ u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE_LINE_MEMBER(screen_vblank);
void bubsympb_map(address_map &map);
void f3_map(address_map &map);
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void video_start() override;
+ void tile_decode();
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- virtual void device_post_load(void) override;
-
- inline void get_tile_info(tile_data &tileinfo, int tile_index, uint16_t *gfx_base);
- inline void f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx,int code,int color,int flipx,int flipy,int sx,int sy,uint8_t pri_dst);
- inline void f3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx,int code,int color,int flipx,int flipy,int sx,int sy,int scalex,int scaley,uint8_t pri_dst);
+ inline void f3_drawgfx(bitmap_rgb32 &dest_bmp, const rectangle &clip, gfx_element *gfx, int code, int color, int flipx, int flipy, int sx, int sy, u8 pri_dst);
+ inline void f3_drawgfxzoom(bitmap_rgb32 &dest_bmp, const rectangle &clip, gfx_element *gfx, int code, int color, int flipx, int flipy, int sx, int sy, int scalex, int scaley, u8 pri_dst);
void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect);
- void get_sprite_info(const uint16_t *spriteram16_ptr);
+ void get_sprite_info(const u16 *spriteram16_ptr);
void print_debug_info(bitmap_rgb32 &bitmap);
- inline void f3_alpha_set_level();
- inline void f3_alpha_blend32_s(int alphas, uint32_t s);
- inline void f3_alpha_blend32_d(int alphas, uint32_t s);
- inline void f3_alpha_blend_1_1(uint32_t s);
- inline void f3_alpha_blend_1_2(uint32_t s);
- inline void f3_alpha_blend_1_4(uint32_t s);
- inline void f3_alpha_blend_1_5(uint32_t s);
- inline void f3_alpha_blend_1_6(uint32_t s);
- inline void f3_alpha_blend_1_8(uint32_t s);
- inline void f3_alpha_blend_1_9(uint32_t s);
- inline void f3_alpha_blend_1_a(uint32_t s);
- inline void f3_alpha_blend_2a_0(uint32_t s);
- inline void f3_alpha_blend_2a_4(uint32_t s);
- inline void f3_alpha_blend_2a_8(uint32_t s);
- inline void f3_alpha_blend_2b_0(uint32_t s);
- inline void f3_alpha_blend_2b_4(uint32_t s);
- inline void f3_alpha_blend_2b_8(uint32_t s);
- inline void f3_alpha_blend_3a_0(uint32_t s);
- inline void f3_alpha_blend_3a_1(uint32_t s);
- inline void f3_alpha_blend_3a_2(uint32_t s);
- inline void f3_alpha_blend_3b_0(uint32_t s);
- inline void f3_alpha_blend_3b_1(uint32_t s);
- inline void f3_alpha_blend_3b_2(uint32_t s);
- int dpix_1_noalpha(uint32_t s_pix);
- int dpix_ret1(uint32_t s_pix);
- int dpix_ret0(uint32_t s_pix);
- int dpix_1_1(uint32_t s_pix);
- int dpix_1_2(uint32_t s_pix);
- int dpix_1_4(uint32_t s_pix);
- int dpix_1_5(uint32_t s_pix);
- int dpix_1_6(uint32_t s_pix);
- int dpix_1_8(uint32_t s_pix);
- int dpix_1_9(uint32_t s_pix);
- int dpix_1_a(uint32_t s_pix);
- int dpix_2a_0(uint32_t s_pix);
- int dpix_2a_4(uint32_t s_pix);
- int dpix_2a_8(uint32_t s_pix);
- int dpix_3a_0(uint32_t s_pix);
- int dpix_3a_1(uint32_t s_pix);
- int dpix_3a_2(uint32_t s_pix);
- int dpix_2b_0(uint32_t s_pix);
- int dpix_2b_4(uint32_t s_pix);
- int dpix_2b_8(uint32_t s_pix);
- int dpix_3b_0(uint32_t s_pix);
- int dpix_3b_1(uint32_t s_pix);
- int dpix_3b_2(uint32_t s_pix);
- int dpix_2_0(uint32_t s_pix);
- int dpix_2_4(uint32_t s_pix);
- int dpix_2_8(uint32_t s_pix);
- int dpix_3_0(uint32_t s_pix);
- int dpix_3_1(uint32_t s_pix);
- int dpix_3_2(uint32_t s_pix);
- inline void dpix_1_sprite(uint32_t s_pix);
- inline void dpix_bg(uint32_t bgcolor);
+ inline void alpha_set_level();
+ inline void alpha_blend32_s(int alphas, u32 s);
+ inline void alpha_blend32_d(int alphas, u32 s);
+ inline void alpha_blend_1_1(u32 s);
+ inline void alpha_blend_1_2(u32 s);
+ inline void alpha_blend_1_4(u32 s);
+ inline void alpha_blend_1_5(u32 s);
+ inline void alpha_blend_1_6(u32 s);
+ inline void alpha_blend_1_8(u32 s);
+ inline void alpha_blend_1_9(u32 s);
+ inline void alpha_blend_1_a(u32 s);
+ inline void alpha_blend_2a_0(u32 s);
+ inline void alpha_blend_2a_4(u32 s);
+ inline void alpha_blend_2a_8(u32 s);
+ inline void alpha_blend_2b_0(u32 s);
+ inline void alpha_blend_2b_4(u32 s);
+ inline void alpha_blend_2b_8(u32 s);
+ inline void alpha_blend_3a_0(u32 s);
+ inline void alpha_blend_3a_1(u32 s);
+ inline void alpha_blend_3a_2(u32 s);
+ inline void alpha_blend_3b_0(u32 s);
+ inline void alpha_blend_3b_1(u32 s);
+ inline void alpha_blend_3b_2(u32 s);
+ int dpix_1_noalpha(u32 s_pix);
+ int dpix_ret1(u32 s_pix);
+ int dpix_ret0(u32 s_pix);
+ int dpix_1_1(u32 s_pix);
+ int dpix_1_2(u32 s_pix);
+ int dpix_1_4(u32 s_pix);
+ int dpix_1_5(u32 s_pix);
+ int dpix_1_6(u32 s_pix);
+ int dpix_1_8(u32 s_pix);
+ int dpix_1_9(u32 s_pix);
+ int dpix_1_a(u32 s_pix);
+ int dpix_2a_0(u32 s_pix);
+ int dpix_2a_4(u32 s_pix);
+ int dpix_2a_8(u32 s_pix);
+ int dpix_3a_0(u32 s_pix);
+ int dpix_3a_1(u32 s_pix);
+ int dpix_3a_2(u32 s_pix);
+ int dpix_2b_0(u32 s_pix);
+ int dpix_2b_4(u32 s_pix);
+ int dpix_2b_8(u32 s_pix);
+ int dpix_3b_0(u32 s_pix);
+ int dpix_3b_1(u32 s_pix);
+ int dpix_3b_2(u32 s_pix);
+ int dpix_2_0(u32 s_pix);
+ int dpix_2_4(u32 s_pix);
+ int dpix_2_8(u32 s_pix);
+ int dpix_3_0(u32 s_pix);
+ int dpix_3_1(u32 s_pix);
+ int dpix_3_2(u32 s_pix);
+ inline void dpix_1_sprite(u32 s_pix);
+ inline void dpix_bg(u32 bgcolor);
void init_alpha_blend_func();
- inline void draw_scanlines(bitmap_rgb32 &bitmap, int xsize, int16_t *draw_line_num, const struct f3_playfield_line_inf **line_t, const int *sprite, uint32_t orient, int skip_layer_num);
- void visible_tile_check(struct f3_playfield_line_inf *line_t, int line, uint32_t x_index_fx,uint32_t y_index, uint16_t *f3_pf_data_n);
- void calculate_clip(int y, uint16_t pri, uint32_t* clip0, uint32_t* clip1, int* line_enable);
+ inline void draw_scanlines(bitmap_rgb32 &bitmap, int xsize, s16 *draw_line_num, const struct f3_playfield_line_inf **line_t, const int *sprite, u32 orient, int skip_layer_num);
+ void visible_tile_check(struct f3_playfield_line_inf *line_t, int line, u32 x_index_fx, u32 y_index, u16 *pf_data_n);
+ void calculate_clip(int y, u16 pri, u32* clip0, u32* clip1, int *line_enable);
void get_spritealphaclip_info();
- void get_line_ram_info(tilemap_t *tmap, int sx, int sy, int pos, uint16_t *f3_pf_data_n);
+ void get_line_ram_info(tilemap_t *tmap, int sx, int sy, int pos, u16 *pf_data_n);
void get_vram_info(tilemap_t *vram_tilemap, tilemap_t *pixel_tilemap, int sx, int sy);
void scanline_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+private:
+ optional_device<cpu_device> m_audiocpu;
+ optional_device<taito_en_device> m_taito_en;
+ optional_device<okim6295_device> m_oki;
+
+ optional_shared_ptr<u32> m_paletteram32;
+ optional_memory_bank m_okibank;
+
+ void bubsympb_oki_w(u8 data);
+ u32 f3_control_r(offs_t offset);
+ void f3_control_w(offs_t offset, u32 data, u32 mem_mask = ~0);
+ void f3_unk_w(offs_t offset, u16 data);
+ void sound_reset_0_w(u32 data);
+ void sound_reset_1_w(u32 data);
+ void sound_bankswitch_w(offs_t offset, u32 data, u32 mem_mask = ~0);
+ void palette_24bit_w(offs_t offset, u32 data, u32 mem_mask = ~0);
+
+ INTERRUPT_GEN_MEMBER(interrupt2);
+
+ void bubsympb_oki_map(address_map &map);
};
#endif // MAME_INCLUDES_TAITO_F3_H