From 989e9a5ee7777fb9e46d49d8398e218a0c2090a2 Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Mon, 17 May 2021 11:20:22 +0200 Subject: capcom: Adjust the common screen timings on old capcom games [O. Galibert, Jotego] --- src/emu/screen.h | 2 +- src/mame/drivers/1942.cpp | 10 ++-------- src/mame/drivers/1943.cpp | 6 +----- src/mame/drivers/bionicc.cpp | 10 ++++++++-- src/mame/drivers/blktiger.cpp | 5 +---- src/mame/drivers/commando.cpp | 7 ++----- src/mame/drivers/gng.cpp | 5 +---- src/mame/drivers/gunsmoke.cpp | 7 ++----- src/mame/drivers/supduck.cpp | 11 +++++++---- src/mame/drivers/tigeroad.cpp | 11 +++-------- src/mame/drivers/vulgus.cpp | 5 +---- src/mame/video/1942.cpp | 16 +++++++++++++--- src/mame/video/1943.cpp | 9 ++++++++- src/mame/video/blktiger.cpp | 9 ++++++++- src/mame/video/commando.cpp | 7 ++++++- src/mame/video/gng.cpp | 7 ++++++- src/mame/video/gunsmoke.cpp | 7 ++++++- src/mame/video/tigeroad.cpp | 5 +++++ src/mame/video/tigeroad_spr.cpp | 2 +- src/mame/video/vulgus.cpp | 7 ++++++- 20 files changed, 88 insertions(+), 60 deletions(-) diff --git a/src/emu/screen.h b/src/emu/screen.h index d3f4ce418b1..bfff28d0f6f 100644 --- a/src/emu/screen.h +++ b/src/emu/screen.h @@ -238,7 +238,7 @@ public: m_vblank = m_refresh / vtotal * (vtotal - (vbstart - vbend)); m_width = htotal; m_height = vtotal; - m_visarea.set(hbend, hbstart - 1, vbend, vbstart - 1); + m_visarea.set(hbend, hbstart ? hbstart - 1 : htotal - 1, vbend, vbstart - 1); return *this; } screen_device &set_raw(const XTAL &xtal, u16 htotal, u16 hbend, u16 hbstart, u16 vtotal, u16 vbend, u16 vbstart) diff --git a/src/mame/drivers/1942.cpp b/src/mame/drivers/1942.cpp index ee44a0caaf0..ec9451f6fa8 100644 --- a/src/mame/drivers/1942.cpp +++ b/src/mame/drivers/1942.cpp @@ -513,10 +513,7 @@ void _1942_state::_1942(machine_config &config) PALETTE(config, m_palette, FUNC(_1942_state::_1942_palette), 64*4+4*32*8+16*16, 256); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_refresh_hz(60); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - m_screen->set_size(32*8, 32*8); - m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_raw(MASTER_CLOCK/2, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 m_screen->set_screen_update(FUNC(_1942_state::screen_update)); m_screen->set_palette(m_palette); @@ -576,10 +573,7 @@ void _1942p_state::_1942p(machine_config &config) PALETTE(config, m_palette, FUNC(_1942p_state::_1942p_palette), 0x500, 0x400); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_refresh_hz(60); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - m_screen->set_size(32*8, 32*8); - m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_raw(MASTER_CLOCK/2, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 m_screen->set_screen_update(FUNC(_1942p_state::screen_update)); m_screen->set_palette(m_palette); diff --git a/src/mame/drivers/1943.cpp b/src/mame/drivers/1943.cpp index 4736273669e..57ae008bbfa 100644 --- a/src/mame/drivers/1943.cpp +++ b/src/mame/drivers/1943.cpp @@ -28,7 +28,6 @@ - use priority PROM for drawing sprites - find and dump an unmodified bme01.12d to correct the 1943 Euro set - Accurate interrupt handling - - Screen raw parameters Notes: @@ -297,10 +296,7 @@ void _1943_state::_1943(machine_config &config) // video hardware SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_refresh_hz(60); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - m_screen->set_size(32*8, 32*8); - m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_raw(XTAL(24'000'000)/4, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 m_screen->set_screen_update(FUNC(_1943_state::screen_update)); m_screen->set_palette(m_palette); diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp index 9d8bea6d046..c26cf9f0c71 100644 --- a/src/mame/drivers/bionicc.cpp +++ b/src/mame/drivers/bionicc.cpp @@ -401,6 +401,13 @@ void bionicc_state::video_start() m_fg_tilemap->set_transmask(0, 0xffff, 0x8000); /* split type 0 is completely transparent in front half */ m_fg_tilemap->set_transmask(1, 0xffc1, 0x803e); /* split type 1 has pens 1-5 opaque in front half */ m_bg_tilemap->set_transparent_pen(15); + + m_tx_tilemap->set_scrolldx(128, 128); + m_tx_tilemap->set_scrolldy( 6, 6); + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); } @@ -649,8 +656,7 @@ void bionicc_state::bionicc(machine_config &config) // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - /* FIXME: should be 257 visible horizontal pixels, first visible pixel should be repeated, back porch/front porch should be separated */ - screen.set_raw(24_MHz_XTAL / 4, 386, 0, 256, 260, 16, 240); + screen.set_raw(24_MHz_XTAL / 4, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(bionicc_state::screen_update)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.set_palette(m_palette); diff --git a/src/mame/drivers/blktiger.cpp b/src/mame/drivers/blktiger.cpp index 134aba50ace..2de5018d2c0 100644 --- a/src/mame/drivers/blktiger.cpp +++ b/src/mame/drivers/blktiger.cpp @@ -310,10 +310,7 @@ void blktiger_state::blktiger(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_raw(24_MHz_XTAL / 4, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(blktiger_state::screen_update_blktiger)); screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram8_device::vblank_copy_rising)); screen.set_palette(m_palette); diff --git a/src/mame/drivers/commando.cpp b/src/mame/drivers/commando.cpp index 1841ef4761a..6137c7df8e3 100644 --- a/src/mame/drivers/commando.cpp +++ b/src/mame/drivers/commando.cpp @@ -46,7 +46,7 @@ Note : there is an ingame typo bug that doesn't display the bonus life values // Notes by Jose Tejada (jotego): // The main CPU frequency is 3 MHz, after a two-stage FF clock divider. -// The CPU clock is gated by bus arbitrion logic. The CPU clock is halted until +// The CPU clock is gated by bus arbitration logic. The CPU clock is halted until // video hardware has an opening in memory access, then the CPU is allowed to // access common memory. This slows down the CPU but doesn't alter its basic 3MHz frequency. // @@ -278,10 +278,7 @@ void commando_state::commando(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_raw(XTAL / 2, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(commando_state::screen_update_commando)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); screen.screen_vblank().append(FUNC(commando_state::vblank_irq)); diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp index 19f8d380928..8e86dae7aa6 100644 --- a/src/mame/drivers/gng.cpp +++ b/src/mame/drivers/gng.cpp @@ -408,10 +408,7 @@ void gng_state::gng(machine_config &config) BUFFERED_SPRITERAM8(config, m_spriteram); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(59.59); /* verified on pcb */ - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_raw(XTAL(12'000'000)/2, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(gng_state::screen_update_gng)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); screen.set_palette(m_palette); diff --git a/src/mame/drivers/gunsmoke.cpp b/src/mame/drivers/gunsmoke.cpp index 57e41045361..b4b9d797310 100644 --- a/src/mame/drivers/gunsmoke.cpp +++ b/src/mame/drivers/gunsmoke.cpp @@ -316,14 +316,11 @@ void gunsmoke_state::gunsmoke(machine_config &config) z80_device &audiocpu(Z80(config, "audiocpu", 3000000)); // 3 MHz audiocpu.set_addrmap(AS_PROGRAM, &gunsmoke_state::sound_map); - audiocpu.set_periodic_int(FUNC(gunsmoke_state::irq0_line_hold), attotime::from_hz(4*59.63)); + audiocpu.set_periodic_int(FUNC(gunsmoke_state::irq0_line_hold), attotime::from_ticks(384*262/4, 6000000)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(59.63); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_raw(6000000, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(gunsmoke_state::screen_update_gunsmoke)); screen.set_palette(m_palette); diff --git a/src/mame/drivers/supduck.cpp b/src/mame/drivers/supduck.cpp index b2e87589d6f..34f5a062f41 100644 --- a/src/mame/drivers/supduck.cpp +++ b/src/mame/drivers/supduck.cpp @@ -131,6 +131,12 @@ void supduck_state::video_start() m_text_tilemap->set_transparent_pen(0x3); m_fore_tilemap->set_transparent_pen(0xf); + m_text_tilemap->set_scrolldx(128, 128); + m_text_tilemap->set_scrolldy( 6, 6); + m_fore_tilemap->set_scrolldx(128, 128); + m_fore_tilemap->set_scrolldy( 6, 6); + m_back_tilemap->set_scrolldx(128, 128); + m_back_tilemap->set_scrolldy( 6, 6); } uint32_t supduck_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -425,11 +431,8 @@ void supduck_state::supduck(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + screen.set_raw(6000000, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(supduck_state::screen_update)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); screen.set_palette(m_palette); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); diff --git a/src/mame/drivers/tigeroad.cpp b/src/mame/drivers/tigeroad.cpp index 49b83e36797..d91a1baecd0 100644 --- a/src/mame/drivers/tigeroad.cpp +++ b/src/mame/drivers/tigeroad.cpp @@ -632,11 +632,9 @@ void tigeroad_state::tigeroad(machine_config &config) // video hardware BUFFERED_SPRITERAM16(config, "spriteram"); + // Timings may be different, driver originally had 60.08Hz vblank. screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60.08); // verified on pcb - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_raw(6000000, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(tigeroad_state::screen_update)); screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.set_palette(m_palette); @@ -715,10 +713,7 @@ void tigeroad_state::f1dream_comad(machine_config &config) BUFFERED_SPRITERAM16(config, "spriteram"); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60.08); // verified on pcb - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_raw(6000000, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(tigeroad_state::screen_update)); screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.set_palette(m_palette); diff --git a/src/mame/drivers/vulgus.cpp b/src/mame/drivers/vulgus.cpp index da67ca433dd..97c7dd8189a 100644 --- a/src/mame/drivers/vulgus.cpp +++ b/src/mame/drivers/vulgus.cpp @@ -229,10 +229,7 @@ void vulgus_state::vulgus(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(59.59); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_raw(XTAL(12'000'000)/2, 384, 128, 0, 262, 22, 246); // hsync is 50..77, vsync is 257..259 screen.set_screen_update(FUNC(vulgus_state::screen_update)); screen.set_palette(m_palette); diff --git a/src/mame/video/1942.cpp b/src/mame/video/1942.cpp index 926bc59d0c3..8cb3cc11e65 100644 --- a/src/mame/video/1942.cpp +++ b/src/mame/video/1942.cpp @@ -135,6 +135,11 @@ void _1942_state::video_start() m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1942_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 16); m_fg_tilemap->set_transparent_pen(0); + + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); } void _1942p_state::video_start() @@ -143,6 +148,11 @@ void _1942p_state::video_start() m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1942_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 16); m_fg_tilemap->set_transparent_pen(3); + + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); } @@ -225,7 +235,7 @@ void _1942_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { const rectangle cliprecty(cliprect.min_x, cliprect.max_x, y, y); uint8_t objdata[4]; - uint8_t v = flip_screen() ? ~(y - 1) : y - 1; + uint8_t v = flip_screen() ? ~(y - 1 - 6) : y - 1 - 6; for (int h = 496; h >= 128; h -= 16) { const bool objcnt4 = BIT(h, 8) != BIT(~h, 7); @@ -283,7 +293,7 @@ void _1942_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { do { - m_gfxdecode->gfx(2)->transpen(bitmap, cliprecty, code + i, col, flip_screen(), flip_screen(), sx, sy + 16 * i * dir, 15); + m_gfxdecode->gfx(2)->transpen(bitmap, cliprecty, code + i, col, flip_screen(), flip_screen(), sx+128, sy + 6 + 16 * i * dir, 15); } while (i-- > 0); } } @@ -319,7 +329,7 @@ void _1942p_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) sy = 240 - sy; } - m_gfxdecode->gfx(2)->transpen(bitmap, cliprect, code, col, flip_screen(), flip_screen(), sx, sy, 15); + m_gfxdecode->gfx(2)->transpen(bitmap, cliprect, code, col, flip_screen(), flip_screen(), sx+128, sy+6, 15); } } diff --git a/src/mame/video/1943.cpp b/src/mame/video/1943.cpp index 0ecc0adc192..32437c08769 100644 --- a/src/mame/video/1943.cpp +++ b/src/mame/video/1943.cpp @@ -202,6 +202,13 @@ void _1943_state::video_start() m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0x0f); m_fg_tilemap->set_transparent_pen(0); + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_bg2_tilemap->set_scrolldx(128, 128); + m_bg2_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); + save_item(NAME(m_char_on)); save_item(NAME(m_obj_on)); save_item(NAME(m_bg1_on)); @@ -298,7 +305,7 @@ void _1943_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) sy = 240 - sy; } - _1943_drawgfx(bitmap,cliprect, m_gfxdecode->gfx(3), code, color, flip_screen(), flip_screen(), sx, sy, 0); + _1943_drawgfx(bitmap,cliprect, m_gfxdecode->gfx(3), code, color, flip_screen(), flip_screen(), sx+128, sy+6, 0); } } diff --git a/src/mame/video/blktiger.cpp b/src/mame/video/blktiger.cpp index 4f5c245bee4..004c4863606 100644 --- a/src/mame/video/blktiger.cpp +++ b/src/mame/video/blktiger.cpp @@ -86,6 +86,13 @@ void blktiger_state::video_start() m_bg_tilemap4x8->set_transmask(2, 0xff00, 0x80ff); m_bg_tilemap4x8->set_transmask(3, 0xf000, 0x8fff); + m_tx_tilemap->set_scrolldx(128, 128); + m_tx_tilemap->set_scrolldy( 6, 6); + m_bg_tilemap8x4->set_scrolldx(128, 128); + m_bg_tilemap8x4->set_scrolldy( 6, 6); + m_bg_tilemap4x8->set_scrolldx(128, 128); + m_bg_tilemap4x8->set_scrolldy( 6, 6); + save_pointer(NAME(m_scroll_ram), BGRAM_BANK_SIZE * BGRAM_BANKS); } @@ -207,7 +214,7 @@ void blktiger_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre code, color, flipx,flip_screen(), - sx,sy,15); + sx+128,sy+6,15); } } diff --git a/src/mame/video/commando.cpp b/src/mame/video/commando.cpp index 0297de67b10..92fd2e65112 100644 --- a/src/mame/video/commando.cpp +++ b/src/mame/video/commando.cpp @@ -86,6 +86,11 @@ void commando_state::video_start() m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(commando_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(commando_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_transparent_pen(3); } @@ -115,7 +120,7 @@ void commando_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre } if (bank < 3) - m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 15); + m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx+128, sy+6, 15); } } diff --git a/src/mame/video/gng.cpp b/src/mame/video/gng.cpp index 5770e6ff1bd..d0513344f6e 100644 --- a/src/mame/video/gng.cpp +++ b/src/mame/video/gng.cpp @@ -53,6 +53,11 @@ void gng_state::video_start() m_fg_tilemap->set_transparent_pen(3); m_bg_tilemap->set_transmask(0, 0xff, 0x00); // split type 0 is totally transparent in front half m_bg_tilemap->set_transmask(1, 0x41, 0xbe); // split type 1 has pens 0 and 6 transparent in front half + + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); } @@ -128,7 +133,7 @@ void gng_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) buffered_spriteram[offs] + ((attributes << 2) & 0x300), (attributes >> 4) & 3, flipx,flipy, - sx,sy,15); + sx+128,sy+6,15); } } diff --git a/src/mame/video/gunsmoke.cpp b/src/mame/video/gunsmoke.cpp index 9e46d5b4ad5..036afa552c0 100644 --- a/src/mame/video/gunsmoke.cpp +++ b/src/mame/video/gunsmoke.cpp @@ -128,6 +128,11 @@ void gunsmoke_state::video_start() m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gunsmoke_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 32, 32, 2048, 8); m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gunsmoke_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x4f); } @@ -160,7 +165,7 @@ void gunsmoke_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre flipy = !flipy; } - m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0); + m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx+128, sy+6, 0); } } diff --git a/src/mame/video/tigeroad.cpp b/src/mame/video/tigeroad.cpp index 647355588dc..adf1dc542d5 100644 --- a/src/mame/video/tigeroad.cpp +++ b/src/mame/video/tigeroad.cpp @@ -108,6 +108,11 @@ void tigeroad_state::video_start() m_fg_tilemap->set_transparent_pen(3); + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); + save_item(NAME(m_bgcharbank)); } diff --git a/src/mame/video/tigeroad_spr.cpp b/src/mame/video/tigeroad_spr.cpp index f636d40a767..dab1db5c7b5 100644 --- a/src/mame/video/tigeroad_spr.cpp +++ b/src/mame/video/tigeroad_spr.cpp @@ -102,7 +102,7 @@ void tigeroad_spr_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl tile_number, color, flipx, flipy, - sx, sy, 15); + sx+128, sy+6, 15); source -= 4; } diff --git a/src/mame/video/vulgus.cpp b/src/mame/video/vulgus.cpp index e94e0254abd..0971a709e47 100644 --- a/src/mame/video/vulgus.cpp +++ b/src/mame/video/vulgus.cpp @@ -114,6 +114,11 @@ void vulgus_state::video_start() m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 47); + m_bg_tilemap->set_scrolldx(128, 128); + m_bg_tilemap->set_scrolldy( 6, 6); + m_fg_tilemap->set_scrolldx(128, 128); + m_fg_tilemap->set_scrolldy( 6, 6); + save_item(NAME(m_palette_bank)); } @@ -192,7 +197,7 @@ void vulgus_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) if (row == 2) row = 3; for (; row >= 0; row--) - gfx->transpen(bitmap, cliprect, code + row, color, flip, flip, sx, sy + 16 * row * dir, 15); + gfx->transpen(bitmap, cliprect, code + row, color, flip, flip, sx+128, sy + 6 + 16 * row * dir, 15); } } -- cgit v1.2.3