diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp index a439f84ee01..3a61710eae0 100644 --- a/src/mame/drivers/pgm2.cpp +++ b/src/mame/drivers/pgm2.cpp @@ -73,8 +73,8 @@ 02 - bg scroll y 04 - zoom something, 0F-7F, default 1F 06 - zoom something, 0F-7F, default 1F - 08 - fg? scroll x - 0a - fg? scroll y + 08 - fg scroll x + 0a - fg scroll y 0e - ? 1 at init (sprite related?) 10 - ? orleg2 - 0x13, kov2nl - 0x14 at init (sprite related?) 14 - sprite enable ? set to 0 before spriteram update, to 1 after @@ -355,6 +355,7 @@ static ADDRESS_MAP_START( pgm2_map, AS_PROGRAM, 32, pgm2_state ) AM_RANGE(0x30100000, 0x301000ff) AM_READWRITE8(shareram_r, shareram_w, 0x00ff00ff) AM_RANGE(0x30120000, 0x30120003) AM_RAM AM_SHARE("bgscroll") // scroll + AM_RANGE(0x30120008, 0x3012000b) AM_RAM AM_SHARE("fgscroll") AM_RANGE(0x30120030, 0x30120033) AM_WRITE16(share_bank_w, 0xffff0000) AM_RANGE(0x30120038, 0x3012003b) AM_WRITE(sprite_encryption_w) // there are other 0x301200xx regs diff --git a/src/mame/includes/pgm2.h b/src/mame/includes/pgm2.h index 1447a5d6fc6..de986d1b5a3 100644 --- a/src/mame/includes/pgm2.h +++ b/src/mame/includes/pgm2.h @@ -32,6 +32,7 @@ public: m_bg_videoram(*this, "bg_videoram"), m_sp_videoram(*this, "sp_videoram"), m_bgscroll(*this, "bgscroll"), + m_fgscroll(*this, "fgscroll"), m_gfxdecode2(*this, "gfxdecode2"), m_gfxdecode3(*this, "gfxdecode3"), m_arm_aic(*this, "arm_aic"), @@ -130,6 +131,7 @@ private: required_shared_ptr m_bg_videoram; required_shared_ptr m_sp_videoram; required_shared_ptr m_bgscroll; + required_shared_ptr m_fgscroll; required_device m_gfxdecode2; required_device m_gfxdecode3; required_device m_arm_aic; diff --git a/src/mame/video/pgm2.cpp b/src/mame/video/pgm2.cpp index 64ce9901cf7..dcd56aff64f 100644 --- a/src/mame/video/pgm2.cpp +++ b/src/mame/video/pgm2.cpp @@ -258,6 +258,8 @@ void pgm2_state::copy_sprites_from_bitmap(screen_device &screen, bitmap_rgb32 &b uint32_t pgm2_state::screen_update_pgm2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { + m_fg_tilemap->set_scrollx(0, m_fgscroll[0] & 0xffff); + m_fg_tilemap->set_scrolly(0, m_fgscroll[0] >> 16); m_bg_tilemap->set_scrolly(0, (m_bgscroll[0x0/4] & 0xffff0000)>>16 ); for (int y = 0; y < 224; y++)