UINT32 chance32_state::screen_update_chance32(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
UINT32 pkscram_state::screen_update_pkscramble(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(bitmap, cliprect, 0,0); m_md_tilemap->draw(bitmap, cliprect, 0,0); m_fg_tilemap->draw(bitmap, cliprect, 0,0); return 0; }
UINT32 fresh_state::screen_update_fresh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_2_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
UINT32 cultures_state::screen_update_cultures(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int attr; // tilemaps attributes attr = (m_bg0_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (m_bg0_regs_y[3] & 1 ? TILEMAP_FLIPY : 0); m_bg0_tilemap->set_flip(attr); attr = (m_bg1_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (m_bg1_regs_y[3] & 1 ? TILEMAP_FLIPY : 0); m_bg1_tilemap->set_flip(attr); attr = (m_bg2_regs_x[3] & 1 ? TILEMAP_FLIPX : 0) | (m_bg2_regs_y[3] & 1 ? TILEMAP_FLIPY : 0); m_bg2_tilemap->set_flip(attr); // tilemaps scrolls m_bg0_tilemap->set_scrollx(0, (m_bg0_regs_x[2] << 8) + m_bg0_regs_x[0]); m_bg1_tilemap->set_scrollx(0, (m_bg1_regs_x[2] << 8) + m_bg1_regs_x[0]); m_bg2_tilemap->set_scrollx(0, (m_bg2_regs_x[2] << 8) + m_bg2_regs_x[0]); m_bg0_tilemap->set_scrolly(0, (m_bg0_regs_y[2] << 8) + m_bg0_regs_y[0]); m_bg1_tilemap->set_scrolly(0, (m_bg1_regs_y[2] << 8) + m_bg1_regs_y[0]); m_bg2_tilemap->set_scrolly(0, (m_bg2_regs_y[2] << 8) + m_bg2_regs_y[0]); m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_bg0_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
UINT32 lbeach_state::screen_update_lbeach(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { // draw bg layer (road) m_bg_tilemap->set_scrolly(0, *m_scroll_y); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); // check collision int sprite_code = *m_sprite_code & 0xf; int sprite_x = *m_sprite_x * 2 - 4; int sprite_y = 160; m_colmap_car.fill(0, cliprect); m_gfxdecode->gfx(2)->transpen(m_palette,m_colmap_car,cliprect, sprite_code, 0, 0, 0, sprite_x, sprite_y, 0); bitmap_ind16 &fg_bitmap = m_fg_tilemap->pixmap(); m_collision_bg_car = 0; m_collision_fg_car = 0; for (int y = sprite_y; y < (sprite_y + 16); y++) { for (int x = sprite_x; x < (sprite_x + 16) && cliprect.contains(x, y); x++) { m_collision_bg_car |= (bitmap.pix16(y, x) & m_colmap_car.pix16(y, x) & 1); m_collision_fg_car |= (fg_bitmap.pix16(y, x) & m_colmap_car.pix16(y, x) & 1); } } // draw fg layer (tiles) m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); // draw player car m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, sprite_code, 0, 0, 0, sprite_x, sprite_y, 0); return 0; }
UINT32 dunhuang_state::screen_update_dunhuang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int layers_ctrl = -1; #if DUNHUANG_DEBUG if (machine().input().code_pressed(KEYCODE_Z)) { int msk = 0; if (machine().input().code_pressed(KEYCODE_Q)) msk |= 1; if (machine().input().code_pressed(KEYCODE_W)) msk |= 2; if (msk != 0) layers_ctrl &= msk; } #endif bitmap.fill(m_palette->black_pen(), cliprect); switch (m_layers) { case 0x04: // girl select: bg over fg if (layers_ctrl & 2) m_tmap2->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); if (layers_ctrl & 1) m_tmap->draw(screen, bitmap, cliprect, 0, 0); break; case 0x05: // dips: must hide fg if (layers_ctrl & 1) m_tmap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); break; case 0x07: // game,demo: fg over bg default: if (layers_ctrl & 1) m_tmap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); if (layers_ctrl & 2) m_tmap2->draw(screen, bitmap, cliprect, 0, 0); break; } return 0; }
UINT32 majorpkr_state::screen_update_majorpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0); m_fg_tilemap->draw(screen, bitmap, cliprect, 0); return 0; }
uint32_t drtomy_state::screen_update_drtomy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_tilemap_bg->draw(screen, bitmap, cliprect, 0, 0); m_tilemap_fg->draw(screen, bitmap, cliprect, 0, 0); draw_sprites(bitmap, cliprect); return 0; }
uint32_t quizpun2_state::screen_update_quizpun2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int layers_ctrl = -1; #ifdef MAME_DEBUG if (machine().input().code_pressed(KEYCODE_Z)) { int msk = 0; if (machine().input().code_pressed(KEYCODE_Q)) msk |= 1; if (machine().input().code_pressed(KEYCODE_W)) msk |= 2; if (msk != 0) layers_ctrl &= msk; } #endif int bg_scroll = (m_scroll & 0x3) >> 0; int fg_scroll = (m_scroll & 0xc) >> 2; m_bg_tmap->set_scrolly(0, bg_scroll * 0x100); m_fg_tmap->set_scrolly(0, fg_scroll * 0x100); if (layers_ctrl & 1) m_bg_tmap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); else bitmap.fill(m_palette->black_pen(), cliprect); if (layers_ctrl & 2) m_fg_tmap->draw(screen, bitmap, cliprect, 0, 0); // popmessage("BG: %x FG: %x", bg_scroll, fg_scroll); return 0; }
UINT32 skylncr_state::screen_update_skylncr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i; bitmap.fill(0, cliprect); m_reel_1_tilemap->draw(screen, bitmap, cliprect, 0, 0); // are these hardcoded, or registers? const rectangle visible1(0*8, (20+48)*8-1, 4*8, (4+7)*8-1); const rectangle visible2(0*8, (20+48)*8-1, 12*8, (12+7)*8-1); const rectangle visible3(0*8, (20+48)*8-1, 20*8, (20+7)*8-1); for (i= 0;i < 64;i++) { m_reel_2_tilemap->set_scrolly(i, m_reelscroll2[i]); m_reel_3_tilemap->set_scrolly(i, m_reelscroll3[i]); m_reel_4_tilemap->set_scrolly(i, m_reelscroll4[i]); } m_reel_2_tilemap->draw(screen, bitmap, visible1, 0, 0); m_reel_3_tilemap->draw(screen, bitmap, visible2, 0, 0); m_reel_4_tilemap->draw(screen, bitmap, visible3, 0, 0); m_tmap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
UINT32 joystand_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect ) { int layers_ctrl = -1; #ifdef MAME_DEBUG if (machine().input().code_pressed(KEYCODE_Z)) { int msk = 0; if (machine().input().code_pressed(KEYCODE_Q)) msk |= 1; if (machine().input().code_pressed(KEYCODE_W)) msk |= 2; if (machine().input().code_pressed(KEYCODE_A)) msk |= 4; if (machine().input().code_pressed(KEYCODE_S)) msk |= 8; if (msk != 0) layers_ctrl &= msk; } #endif m_bg1_tmap->set_scrollx(0, 0); m_bg1_tmap->set_scrolly(0, 0); m_bg2_tmap->set_scrollx(0, m_scroll[0] - 0xa); m_bg2_tmap->set_scrolly(0, m_scroll[1]); draw_bg15_tilemap(); bitmap.fill(m_palette->black_pen(), cliprect); if (layers_ctrl & 4) copybitmap_trans(bitmap, m_bg15_bitmap[0], 0, 0, 1, 0, cliprect, BG15_TRANSPARENT); if (layers_ctrl & 8) copybitmap_trans(bitmap, m_bg15_bitmap[1], 0, 0, 0, 0, cliprect, BG15_TRANSPARENT); if (layers_ctrl & 1) m_bg1_tmap->draw(screen, bitmap, cliprect, 0, 0); if (layers_ctrl & 2) m_bg2_tmap->draw(screen, bitmap, cliprect, 0, 0); popmessage("S0: %04X S1: %04X EN: %04X OUT: %04X", m_scroll[0], m_scroll[1], m_enable[0], m_outputs[0]); return 0; }
UINT32 galaxi_state::screen_update_galaxi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg3_tmap->set_scrollx(m_bg3_xscroll); m_bg3_tmap->set_scrolly(m_bg3_yscroll); int layers_ctrl = -1; #ifdef MAME_DEBUG if (machine().input().code_pressed(KEYCODE_R)) // remapped due to inputs changes. { int msk = 0; if (machine().input().code_pressed(KEYCODE_T)) msk |= 1; if (machine().input().code_pressed(KEYCODE_Y)) msk |= 2; if (machine().input().code_pressed(KEYCODE_U)) msk |= 4; if (machine().input().code_pressed(KEYCODE_I)) msk |= 8; if (machine().input().code_pressed(KEYCODE_O)) msk |= 16; if (msk != 0) layers_ctrl &= msk; } #endif if (layers_ctrl & 1) m_bg1_tmap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); else bitmap.fill(m_palette->black_pen(), cliprect); if (layers_ctrl & 2) m_bg2_tmap->draw(screen, bitmap, cliprect, 0, 0); if (layers_ctrl & 4) m_bg3_tmap->draw(screen, bitmap, cliprect, 0, 0); if (layers_ctrl & 8) m_bg4_tmap->draw(screen, bitmap, cliprect, 0, 0); if (layers_ctrl & 16) m_fg_tmap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
UINT32 chanbara_state::screen_update_chanbara(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg2_tilemap->set_scrolly(0, m_scroll | (m_scrollhi << 8)); m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 0); draw_sprites(bitmap, cliprect); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
UINT32 mil4000_state::screen_update_mil4000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_sc0_tilemap->draw(screen, bitmap, cliprect, 0,0); m_sc1_tilemap->draw(screen, bitmap, cliprect, 0,0); m_sc2_tilemap->draw(screen, bitmap, cliprect, 0,0); m_sc3_tilemap->draw(screen, bitmap, cliprect, 0,0); return 0; }
UINT32 pzletime_state::screen_update_pzletime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int count; int y, x; bitmap.fill(machine().pens[0], cliprect); //bg pen m_txt_tilemap->set_scrolly(0, m_tilemap_regs[0] - 3); m_txt_tilemap->set_scrollx(0, m_tilemap_regs[1]); m_mid_tilemap->set_scrolly(0, m_tilemap_regs[2] - 3); m_mid_tilemap->set_scrollx(0, m_tilemap_regs[3] - 7); if (m_video_regs[2] & 1) { count = 0; for (y = 255; y >= 0; y--) { for (x = 0; x < 512; x++) { if (m_bg_videoram[count] & 0x8000) bitmap.pix16((y - 18) & 0xff, (x - 32) & 0x1ff) = 0x300 + (m_bg_videoram[count] & 0x7fff); count++; } } } m_mid_tilemap->draw(screen, bitmap, cliprect, 0, 0); { UINT16 *spriteram = m_spriteram; int offs, spr_offs, colour, sx, sy; for(offs = 0; offs < 0x2000 / 2; offs += 4) { if(spriteram[offs + 0] == 8) break; spr_offs = spriteram[offs + 3] & 0x0fff; sy = 0x200 - (spriteram[offs + 0] & 0x1ff) - 35; sx = (spriteram[offs + 1] & 0x1ff) - 30; colour = (spriteram[offs + 0] & 0xf000) >> 12; // is spriteram[offs + 0] & 0x200 flipy? it's always set drawgfx_transpen(bitmap, cliprect, machine().gfx[1], spr_offs, colour, 0, 1, sx, sy, 0); } } m_txt_tilemap->draw(screen, bitmap, cliprect, 0, 0); if ((screen.frame_number() % 16) != 0) m_txt_tilemap->draw(screen, bitmap, cliprect, 1, 0); return 0; }
UINT32 cabaret_state::screen_update_cabaret(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(get_black_pen(machine()), cliprect); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
uint32_t cabaret_state::screen_update_cabaret(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(m_palette->black_pen(), cliprect); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
UINT32 safarir_state::screen_update_safarir(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, *m_bg_scroll); m_bg_tilemap->draw(bitmap, cliprect, 0, 0); m_fg_tilemap->draw(bitmap, cliprect, 0, 0); return 0; }
uint32_t supduck_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(m_palette->black_pen(), cliprect); m_back_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_fore_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_spritegen->draw_sprites(bitmap, cliprect, m_gfxdecode, 3, m_spriteram->buffer(), m_spriteram->bytes(), flip_screen(), 1 ); m_text_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; }
uint32_t witch_state::screen_update_witch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_gfx1_tilemap->set_scrollx(0, m_scrollx-7 ); //offset to have it aligned with the sprites m_gfx1_tilemap->set_scrolly(0, m_scrolly+8 ); m_gfx1_tilemap->draw(screen, bitmap, cliprect, 0,0); m_gfx0a_tilemap->draw(screen, bitmap, cliprect, 0,0); draw_sprites(bitmap, cliprect); m_gfx0b_tilemap->draw(screen, bitmap, cliprect, 0,0); return 0; }
uint32_t stuntair_state::screen_update_stuntair(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_bg_xscroll); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_fg_tilemap->draw(screen, bitmap, cliprect, 0, TILEMAP_PIXEL_LAYER0); draw_sprites(bitmap, cliprect); m_fg_tilemap->draw(screen, bitmap, cliprect, 0, TILEMAP_PIXEL_LAYER1|TILEMAP_DRAW_OPAQUE); return 0; }
uint32_t calorie_state::screen_update_calorie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int x; if (m_bg_bank & 0x10) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); } else { m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); } for (x = 0x400; x >= 0; x -= 4) { int xpos, ypos, tileno, color, flipx, flipy; tileno = m_sprites[x + 0]; color = m_sprites[x + 1] & 0x0f; flipx = m_sprites[x + 1] & 0x40; flipy = 0; ypos = 0xff - m_sprites[x + 2]; xpos = m_sprites[x + 3]; if (flip_screen()) { if (m_sprites[x + 1] & 0x10) ypos = 0xff - ypos + 32; else ypos = 0xff - ypos + 16; xpos = 0xff - xpos - 16; flipx = !flipx; flipy = !flipy; } if (m_sprites[x + 1] & 0x10) { /* 32x32 sprites */ m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, tileno | 0x40, color, flipx, flipy, xpos, ypos - 31, 0); } else { /* 16x16 sprites */ m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, tileno, color, flipx, flipy, xpos, ypos - 15, 0); } } return 0; }
UINT32 chance32_state::screen_update_chance32(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* TODO: wtf? */ m_bg_tilemap->set_scrollx(0, 352); m_bg_tilemap->set_scrolly(0, 160); m_fg_tilemap->set_scrollx(0, 352); m_fg_tilemap->set_scrolly(0, 160); m_bg_tilemap->draw(bitmap, cliprect, 0, 0); m_fg_tilemap->draw(bitmap, cliprect, 0, 0); return 0; }
UINT32 bestleag_state::screen_update_bestleaw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0,m_vregs[0x08/2]); m_bg_tilemap->set_scrolly(0,m_vregs[0x0a/2]); m_tx_tilemap->set_scrollx(0,m_vregs[0x00/2]); m_tx_tilemap->set_scrolly(0,m_vregs[0x02/2]); m_fg_tilemap->set_scrollx(0,m_vregs[0x04/2]); m_fg_tilemap->set_scrolly(0,m_vregs[0x06/2]); m_bg_tilemap->draw(bitmap, cliprect, 0,0); m_fg_tilemap->draw(bitmap, cliprect, 0,0); draw_sprites(bitmap,cliprect); m_tx_tilemap->draw(bitmap, cliprect, 0,0); return 0; }
UINT32 igs_m027_state::screen_update_igs_majhong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { //?????????? bitmap.fill(get_black_pen(machine()), cliprect); //?????? m_igs_bg_tilemap->draw(bitmap, cliprect, 0,0); //CG?????? //?????? m_igs_tx_tilemap->draw(bitmap, cliprect, 0,0); //fprintf(stdout,"Video UPDATE OK!\n"); return 0; }
uint32_t sbowling_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(0x18, cliprect); m_tilemap->draw(screen, bitmap, cliprect, 0, 0); copybitmap_trans(bitmap, *m_tmpbitmap, 0, 0, 0, 0, cliprect, m_color_prom_address); return 0; }
UINT32 mgolf_state::screen_update_mgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i; /* draw playfield */ m_bg_tilemap->draw(bitmap, cliprect, 0, 0); /* draw sprites */ for (i = 0; i < 2; i++) { drawgfx_transpen(bitmap, cliprect, machine().gfx[1], m_video_ram[0x399 + 4 * i], i, 0, 0, m_video_ram[0x390 + 2 * i] - 7, m_video_ram[0x398 + 4 * i] - 16, 0); drawgfx_transpen(bitmap, cliprect, machine().gfx[1], m_video_ram[0x39b + 4 * i], i, 0, 0, m_video_ram[0x390 + 2 * i] - 15, m_video_ram[0x39a + 4 * i] - 16, 0); } return 0; }
UINT32 mgolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i; /* draw playfield */ m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); /* draw sprites */ for (i = 0; i < 2; i++) { m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, m_video_ram[0x399 + 4 * i], i, 0, 0, m_video_ram[0x390 + 2 * i] - 7, m_video_ram[0x398 + 4 * i] - 16, 0); m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, m_video_ram[0x39b + 4 * i], i, 0, 0, m_video_ram[0x390 + 2 * i] - 15, m_video_ram[0x39a + 4 * i] - 16, 0); } return 0; }
UINT32 umipoker_state::screen_update_umipoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_tilemap_0->set_scrolly(0, m_umipoker_scrolly[0]); m_tilemap_1->set_scrolly(0, m_umipoker_scrolly[1]); m_tilemap_2->set_scrolly(0, m_umipoker_scrolly[2]); m_tilemap_3->set_scrolly(0, m_umipoker_scrolly[3]); bitmap.fill(get_black_pen(machine()), cliprect); m_tilemap_0->draw(screen, bitmap, cliprect, 0,0); m_tilemap_1->draw(screen, bitmap, cliprect, 0,0); m_tilemap_2->draw(screen, bitmap, cliprect, 0,0); m_tilemap_3->draw(screen, bitmap, cliprect, 0,0); return 0; }
uint32_t carjmbre_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(m_bgcolor, cliprect); m_tilemap->draw(screen, bitmap, cliprect, 0, 0); draw_sprites(bitmap, cliprect); return 0; }