diff options
Diffstat (limited to 'src/mame/video/cave.cpp')
-rw-r--r-- | src/mame/video/cave.cpp | 97 |
1 files changed, 40 insertions, 57 deletions
diff --git a/src/mame/video/cave.cpp b/src/mame/video/cave.cpp index 4850caf1e1b..a0273c9a098 100644 --- a/src/mame/video/cave.cpp +++ b/src/mame/video/cave.cpp @@ -68,7 +68,7 @@ Note: if MAME_DEBUG is defined, pressing: ***************************************************************************/ -PALETTE_INIT_MEMBER(cave_state,cave) +void cave_state::palette_init_cave(palette_device &palette) { for (int chip = 0; chip < 4; chip++) { @@ -84,7 +84,7 @@ PALETTE_INIT_MEMBER(cave_state,cave) } } -PALETTE_INIT_MEMBER(cave_state,dfeveron) +void cave_state::palette_init_dfeveron(palette_device &palette) { int color, pen; @@ -93,34 +93,18 @@ PALETTE_INIT_MEMBER(cave_state,dfeveron) multiplies the color code by $100 (for consistency). That's why we need this function. */ - PALETTE_INIT_NAME(cave)(palette); + palette_init_cave(palette); for (color = 0; color < 0x40; color++) for (pen = 0; pen < 0x10; pen++) m_palette_map[0][(color << 8) | pen] = (color << 4) | pen; } -PALETTE_INIT_MEMBER(cave_state,ddonpach) +void cave_state::palette_init_mazinger(palette_device &palette) { int color, pen; - /* Fill the 8000-83ff range ($40 color codes * $10 pens) for - layers 0 & 1 which are 4 bits deep rather than 8 bits deep - like layer 2, but use the first 16 color of every 256 for - any given color code. */ - - PALETTE_INIT_NAME(cave)(palette); - - for (color = 0; color < 0x40; color++) - for (pen = 0; pen < 0x10; pen++) - m_palette_map[0][0x8000 | (color << 4) | pen] = 0x4000 | (color << 8) | pen; -} - -PALETTE_INIT_MEMBER(cave_state,mazinger) -{ - int color, pen; - - PALETTE_INIT_NAME(cave)(palette); + palette_init_cave(palette); /* sprites (encrypted) are 4 bit deep */ for (color = 0; color < 0x40; color++) @@ -134,11 +118,11 @@ PALETTE_INIT_MEMBER(cave_state,mazinger) m_palette_map[0][0x4400 + ((color << 6) | pen)] = 0x400 | ((color & 0x0f) << 6) | pen; } -PALETTE_INIT_MEMBER(cave_state,sailormn) +void cave_state::palette_init_sailormn(palette_device &palette) { int color, pen; - PALETTE_INIT_NAME(cave)(palette); + palette_init_cave(palette); /* sprites (encrypted) are 4 bit deep */ for (color = 0; color < 0x40; color++) @@ -152,11 +136,11 @@ PALETTE_INIT_MEMBER(cave_state,sailormn) m_palette_map[0][0x4c00 + ((color << 6) | pen)] = 0xc00 | ((color & 0x0f) << 6) | pen; } -PALETTE_INIT_MEMBER(cave_state,pwrinst2) +void cave_state::palette_init_pwrinst2(palette_device &palette) { int color, pen; - PALETTE_INIT_NAME(cave)(palette); + palette_init_cave(palette); for (color = 0; color < 0x80; color++) for (pen = 0; pen < 0x10; pen++) @@ -166,11 +150,11 @@ PALETTE_INIT_MEMBER(cave_state,pwrinst2) m_palette_map[0][pen] = pen - 0x8000; } -PALETTE_INIT_MEMBER(cave_state,korokoro) +void cave_state::palette_init_korokoro(palette_device &palette) { int color, pen; - PALETTE_INIT_NAME(cave)(palette); + palette_init_cave(palette); for (color = 0; color < 0x40; color++) for (pen = 0; pen < 0x10; pen++) @@ -302,7 +286,7 @@ TILE_GET_INFO_MEMBER(cave_state::sailormn_get_tile_info_2) ***************************************************************************/ -void cave_state::cave_vh_start( int num ) +void cave_state::vh_start( int num ) { assert(m_palette_map != nullptr); @@ -360,7 +344,7 @@ void cave_state::cave_vh_start( int num ) break; } - sprite_init_cave(); + sprite_init(); m_layers_offs_x = 0x13; m_layers_offs_y = -0x12; @@ -388,15 +372,15 @@ void cave_state::cave_vh_start( int num ) } } -VIDEO_START_MEMBER(cave_state,cave_1_layer){ cave_vh_start(1); } -VIDEO_START_MEMBER(cave_state,cave_2_layers){ cave_vh_start(2); } -VIDEO_START_MEMBER(cave_state,cave_3_layers){ cave_vh_start(3); } -VIDEO_START_MEMBER(cave_state,cave_4_layers){ cave_vh_start(4); } +VIDEO_START_MEMBER(cave_state,cave_1_layer){ vh_start(1); } +VIDEO_START_MEMBER(cave_state,cave_2_layers){ vh_start(2); } +VIDEO_START_MEMBER(cave_state,cave_3_layers){ vh_start(3); } +VIDEO_START_MEMBER(cave_state,cave_4_layers){ vh_start(4); } VIDEO_START_MEMBER(cave_state,sailormn_3_layers) { - cave_vh_start(2); + vh_start(2); /* Layer 2 (8x8) needs to be handled differently */ m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cave_state::sailormn_get_tile_info_2),this), TILEMAP_SCAN_ROWS, 8, 8, 512 / 8, 512 / 8 ); @@ -646,7 +630,7 @@ void cave_state::get_sprite_info_donpachi(int chip) } -void cave_state::sprite_init_cave() +void cave_state::sprite_init() { if (m_spritetype[0] == 0 || m_spritetype[0] == 2) // most of the games { @@ -684,11 +668,9 @@ void cave_state::sprite_init_cave() save_item(NAME(m_blit.clip_right)); save_item(NAME(m_blit.clip_top)); save_item(NAME(m_blit.clip_bottom)); - - machine().save().register_postload(save_prepost_delegate(FUNC(cave_state::cave_get_sprite_info_all), this)); } -void cave_state::cave_sprite_check(int chip, screen_device &screen, const rectangle &clip) +void cave_state::sprite_check(int chip, screen_device &screen, const rectangle &clip) { { /* set clip */ int left = clip.min_x; @@ -764,7 +746,7 @@ void cave_state::cave_sprite_check(int chip, screen_device &screen, const rectan } } -void cave_state::do_blit_zoom32_cave( int chip, const sprite_cave *sprite ) +void cave_state::do_blit_zoom32( int chip, const sprite_cave *sprite ) { /* assumes SPRITE_LIST_RAW_DATA flag is set */ int x1, x2, y1, y2, dx, dy; @@ -896,7 +878,7 @@ void cave_state::do_blit_zoom32_cave( int chip, const sprite_cave *sprite ) } -void cave_state::do_blit_zoom32_cave_zb( int chip, const sprite_cave *sprite ) +void cave_state::do_blit_zoom32_zb( int chip, const sprite_cave *sprite ) { /* assumes SPRITE_LIST_RAW_DATA flag is set */ int x1, x2, y1, y2, dx, dy; @@ -1031,7 +1013,7 @@ void cave_state::do_blit_zoom32_cave_zb( int chip, const sprite_cave *sprite ) } } -void cave_state::do_blit_32_cave( int chip, const sprite_cave *sprite ) +void cave_state::do_blit_32( int chip, const sprite_cave *sprite ) { /* assumes SPRITE_LIST_RAW_DATA flag is set */ int x1, x2, y1, y2, dx, dy; @@ -1126,7 +1108,7 @@ void cave_state::do_blit_32_cave( int chip, const sprite_cave *sprite ) } -void cave_state::do_blit_32_cave_zb( int chip, const sprite_cave *sprite ) +void cave_state::do_blit_32_zb( int chip, const sprite_cave *sprite ) { /* assumes SPRITE_LIST_RAW_DATA flag is set */ int x1, x2, y1, y2, dx, dy; @@ -1236,9 +1218,9 @@ void cave_state::sprite_draw_cave( int chip, int priority ) { const sprite_cave *sprite = m_sprite_table[chip][priority][i++]; if ((sprite->tile_width == sprite->total_width) && (sprite->tile_height == sprite->total_height)) - do_blit_32_cave(chip, sprite); + do_blit_32(chip, sprite); else - do_blit_zoom32_cave(chip, sprite); + do_blit_zoom32(chip, sprite); } } @@ -1249,9 +1231,9 @@ void cave_state::sprite_draw_cave_zbuf( int chip, int priority ) { const sprite_cave *sprite = m_sprite_table[chip][priority][i++]; if ((sprite->tile_width == sprite->total_width) && (sprite->tile_height == sprite->total_height)) - do_blit_32_cave_zb(chip, sprite); + do_blit_32_zb(chip, sprite); else - do_blit_zoom32_cave_zb(chip, sprite); + do_blit_zoom32_zb(chip, sprite); } } @@ -1259,14 +1241,14 @@ void cave_state::sprite_draw_donpachi( int chip, int priority ) { int i = 0; while (m_sprite_table[chip][priority][i]) - do_blit_32_cave(chip, m_sprite_table[chip][priority][i++]); + do_blit_32(chip, m_sprite_table[chip][priority][i++]); } void cave_state::sprite_draw_donpachi_zbuf( int chip, int priority ) { int i = 0; while (m_sprite_table[chip][priority][i]) - do_blit_32_cave_zb(chip, m_sprite_table[chip][priority][i++]); + do_blit_32_zb(chip, m_sprite_table[chip][priority][i++]); } @@ -1448,7 +1430,7 @@ inline void cave_state::tilemap_draw( int chip, } -uint32_t cave_state::screen_update_cave(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +uint32_t cave_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { int pri, pri2, GFX; int layers_ctrl = -1; @@ -1528,7 +1510,7 @@ uint32_t cave_state::screen_update_cave(screen_device &screen, bitmap_rgb32 &bit } #endif - cave_sprite_check(0, screen, cliprect); + sprite_check(0, screen, cliprect); bitmap.fill(m_palette->pen_color(m_background_pen), cliprect); @@ -1563,12 +1545,13 @@ uint32_t cave_state::screen_update_cave(screen_device &screen, bitmap_rgb32 &bit /**************************************************************/ -void cave_state::cave_get_sprite_info(int chip) +void cave_state::get_sprite_info(int chip) { - int spriteram_bankmax = m_spriteram[chip].bytes() / 0x4000; if (m_videoregs[chip] == nullptr) return; + int spriteram_bankmax = m_spriteram[chip].bytes() / 0x4000; + if (m_kludge == 3) /* mazinger metmqstr */ { if (machine().video().skip_this_frame() == 0) @@ -1587,20 +1570,20 @@ void cave_state::cave_get_sprite_info(int chip) } } } -void cave_state::cave_get_sprite_info_all() +void cave_state::device_post_load() { for (int chip = 0; chip < 4; chip++) - cave_get_sprite_info(chip); + get_sprite_info(chip); } // Poka Poka Satan: 3 screens * (1 Sprite chip + 1 Tilemap chip) -PALETTE_INIT_MEMBER(cave_state,ppsatan) +void cave_state::palette_init_ppsatan(palette_device &palette) { int color, pen; - PALETTE_INIT_NAME(cave)(palette); + palette_init_cave(palette); for (int chip = 0; chip < 3; chip++) { @@ -1630,7 +1613,7 @@ uint32_t cave_state::screen_update_ppsatan_core(screen_device &screen, bitmap_rg m_tilemap[chip]->mark_all_dirty(); m_old_tiledim[chip] = m_tiledim[chip]; - cave_sprite_check(chip, screen, cliprect); + sprite_check(chip, screen, cliprect); bitmap.fill(m_palette->pen_color(m_background_pen), cliprect); |