summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/cave.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/cave.h')
-rw-r--r--src/mame/includes/cave.h180
1 files changed, 93 insertions, 87 deletions
diff --git a/src/mame/includes/cave.h b/src/mame/includes/cave.h
index 3bae5ccb4c9..834041f0fc8 100644
--- a/src/mame/includes/cave.h
+++ b/src/mame/includes/cave.h
@@ -67,27 +67,9 @@ public:
, m_gfxdecode(*this, "gfxdecode")
, m_screen(*this, "screen")
, m_palette(*this, "palette")
- , m_soundlatch(*this, "soundlatch") { }
-
- /* memory pointers */
- optional_shared_ptr_array<uint16_t, 4> m_videoregs;
- optional_shared_ptr_array<uint16_t, 4> m_vram;
- optional_shared_ptr_array<uint16_t, 4> m_vctrl;
- optional_shared_ptr_array<uint16_t, 4> m_spriteram;
- optional_shared_ptr_array<uint16_t, 4> m_paletteram;
-
- /* memory regions */
- optional_memory_region_array<4> m_spriteregion;
- optional_memory_region_array<4> m_tileregion;
- optional_memory_region_array<2> m_okiregion;
- optional_memory_region m_z80region;
- optional_memory_bank m_z80bank;
- optional_memory_bank_array<2> m_okibank_lo;
- optional_memory_bank_array<2> m_okibank_hi;
-
- /* video-related */
- std::unique_ptr<sprite_cave []> m_sprite[4];
- sprite_cave *m_sprite_table[4][MAX_PRIORITY][MAX_SPRITE_NUM + 1];
+ , m_soundlatch(*this, "soundlatch")
+ , m_led(*this, "led%u", 0U)
+ { }
struct
{
@@ -102,71 +84,6 @@ public:
void (cave_state::*m_get_sprite_info)(int chip);
void (cave_state::*m_sprite_draw)(int chip, int priority);
- tilemap_t *m_tilemap[4];
- int m_tiledim[4];
- int m_old_tiledim[4];
-
- bitmap_ind16 m_sprite_zbuf;
- uint16_t m_sprite_zbuf_baseval;
-
- int m_num_sprites[4];
-
- int m_spriteram_bank[4];
- int m_spriteram_bank_delay[4];
-
- std::unique_ptr<uint16_t[]> m_palette_map[4];
-
- int m_layers_offs_x;
- int m_layers_offs_y;
- int m_row_effect_offs_n;
- int m_row_effect_offs_f;
- int m_background_pen;
-
- int m_spritetype[2];
- int m_kludge;
- emu_timer *m_vblank_end_timer;
-
-
- /* misc */
- int m_time_vblank_irq;
- uint8_t m_irq_level;
- uint8_t m_vblank_irq;
- uint8_t m_sound_irq;
- uint8_t m_unknown_irq;
- uint8_t m_agallet_vblank_irq;
-
- /* sound related */
- int m_soundbuf_wptr;
- int m_soundbuf_rptr;
- uint8_t m_soundbuf_data[32];
- bool m_soundbuf_empty;
- //uint8_t m_sound_flag1;
- //uint8_t m_sound_flag2;
-
- /* game specific */
- // sailormn
- int m_sailormn_tilebank;
- // korokoro
- uint16_t m_leds[2];
- int m_hopper;
- // ppsatan
- uint16_t m_ppsatan_io_mux;
-
- /* devices */
- required_device<cpu_device> m_maincpu;
- optional_device<cpu_device> m_audiocpu;
- optional_device_array<okim6295_device, 2> m_oki;
- required_device<timer_device> m_int_timer;
- optional_device<timer_device> m_int_timer_left;
- optional_device<timer_device> m_int_timer_right;
- optional_device<eeprom_serial_93cxx_device> m_eeprom;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
- optional_device<generic_latch_16_device> m_soundlatch;
-
- int m_rasflag;
- int m_old_rasflag;
DECLARE_READ16_MEMBER(cave_irq_cause_r);
DECLARE_READ8_MEMBER(soundflags_r);
DECLARE_READ16_MEMBER(soundflags_ack_r);
@@ -223,7 +140,6 @@ public:
void init_ppsatan();
TILE_GET_INFO_MEMBER(sailormn_get_tile_info_2);
template<int Chip> TILE_GET_INFO_MEMBER(get_tile_info);
- DECLARE_MACHINE_START(cave);
DECLARE_MACHINE_RESET(cave);
DECLARE_MACHINE_RESET(sailormn);
DECLARE_VIDEO_START(cave_2_layers);
@@ -314,6 +230,96 @@ public:
void tekkencw_map(address_map &map);
void tjumpman_map(address_map &map);
void uopoko_map(address_map &map);
+protected:
+ virtual void machine_start() override;
+
+ /* memory pointers */
+ optional_shared_ptr_array<uint16_t, 4> m_videoregs;
+ optional_shared_ptr_array<uint16_t, 4> m_vram;
+ optional_shared_ptr_array<uint16_t, 4> m_vctrl;
+ optional_shared_ptr_array<uint16_t, 4> m_spriteram;
+ optional_shared_ptr_array<uint16_t, 4> m_paletteram;
+
+ /* memory regions */
+ optional_memory_region_array<4> m_spriteregion;
+ optional_memory_region_array<4> m_tileregion;
+ optional_memory_region_array<2> m_okiregion;
+ optional_memory_region m_z80region;
+ optional_memory_bank m_z80bank;
+ optional_memory_bank_array<2> m_okibank_lo;
+ optional_memory_bank_array<2> m_okibank_hi;
+
+ /* video-related */
+ std::unique_ptr<sprite_cave []> m_sprite[4];
+ sprite_cave *m_sprite_table[4][MAX_PRIORITY][MAX_SPRITE_NUM + 1];
+
+ tilemap_t *m_tilemap[4];
+ int m_tiledim[4];
+ int m_old_tiledim[4];
+
+ bitmap_ind16 m_sprite_zbuf;
+ uint16_t m_sprite_zbuf_baseval;
+
+ int m_num_sprites[4];
+
+ int m_spriteram_bank[4];
+ int m_spriteram_bank_delay[4];
+
+ std::unique_ptr<uint16_t[]> m_palette_map[4];
+
+ int m_layers_offs_x;
+ int m_layers_offs_y;
+ int m_row_effect_offs_n;
+ int m_row_effect_offs_f;
+ int m_background_pen;
+
+ int m_spritetype[2];
+ int m_kludge;
+ emu_timer *m_vblank_end_timer;
+
+
+ /* misc */
+ int m_time_vblank_irq;
+ uint8_t m_irq_level;
+ uint8_t m_vblank_irq;
+ uint8_t m_sound_irq;
+ uint8_t m_unknown_irq;
+ uint8_t m_agallet_vblank_irq;
+
+ /* sound related */
+ int m_soundbuf_wptr;
+ int m_soundbuf_rptr;
+ uint8_t m_soundbuf_data[32];
+ bool m_soundbuf_empty;
+ //uint8_t m_sound_flag1;
+ //uint8_t m_sound_flag2;
+
+ /* game specific */
+ // sailormn
+ int m_sailormn_tilebank;
+ // korokoro
+ uint16_t m_leds[2];
+ int m_hopper;
+ // ppsatan
+ uint16_t m_ppsatan_io_mux;
+
+ /* devices */
+ required_device<cpu_device> m_maincpu;
+ optional_device<cpu_device> m_audiocpu;
+ optional_device_array<okim6295_device, 2> m_oki;
+ required_device<timer_device> m_int_timer;
+ optional_device<timer_device> m_int_timer_left;
+ optional_device<timer_device> m_int_timer_right;
+ optional_device<eeprom_serial_93cxx_device> m_eeprom;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ optional_device<generic_latch_16_device> m_soundlatch;
+ output_finder<9> m_led;
+
+ int m_rasflag;
+ int m_old_rasflag;
+
private:
inline void tilemap_draw( int chip, screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, uint32_t flags, uint32_t priority, uint32_t priority2, int GFX );
void set_pens(int chip);