From 8e0a5e6cb4f9a7ecc90d1cef192cd1dfbb612ade Mon Sep 17 00:00:00 2001 From: dinkc64 <12570148+dinkc64@users.noreply.github.com> Date: Mon, 5 May 2014 06:52:59 +0000 Subject: [PATCH] Fix for the graphical glitches on the volcano level in Caveman Ninja --- src/burn/drv/dataeast/d_cninja.cpp | 3 +++ src/burn/drv/dataeast/deco16ic.cpp | 7 ++++++- src/burn/drv/dataeast/deco16ic.h | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/burn/drv/dataeast/d_cninja.cpp b/src/burn/drv/dataeast/d_cninja.cpp index f2de8c61b..6cf182a60 100644 --- a/src/burn/drv/dataeast/d_cninja.cpp +++ b/src/burn/drv/dataeast/d_cninja.cpp @@ -1185,6 +1185,8 @@ static INT32 CninjaInit() deco16SoundInit(DrvHucROM, DrvHucRAM, 8055000, 1, DrvYM2151WritePort, 0.45, 1006875, 0.75, 2013750, 0.60); BurnYM2203SetAllRoutes(0, 0.60, BURN_SND_ROUTE_BOTH); + deco16ic_cninja_scrolly = 1; + GenericTilesInit(); DrvDoReset(); @@ -1751,6 +1753,7 @@ static INT32 DrvExit() BurnFree (AllMem); MSM6295ROM = NULL; + deco16ic_cninja_scrolly = 0; return 0; } diff --git a/src/burn/drv/dataeast/deco16ic.cpp b/src/burn/drv/dataeast/deco16ic.cpp index ed1339470..9dcb243b7 100644 --- a/src/burn/drv/dataeast/deco16ic.cpp +++ b/src/burn/drv/dataeast/deco16ic.cpp @@ -53,6 +53,7 @@ UINT8 *deco16_prio_map; UINT8 *deco16_sprite_prio_map; // boogwing INT32 deco16_vblank; +UINT16 deco16ic_cninja_scrolly = 0; // use different indexing of scroll_y for Caveman Ninja void deco16ProtScan(); void deco16ProtReset(); @@ -270,7 +271,11 @@ void deco16_draw_layer(INT32 tmap, UINT16 *dest, INT32 flags) for (INT32 x = 0; x < nScreenWidth + size; x+=size) { - INT32 yoff = deco16_scroll_y[tmap][x] & hmask; + INT32 yoff; + if (deco16ic_cninja_scrolly) + yoff = deco16_scroll_y[tmap][x + deco16_scroll_x[tmap][y]] & hmask; + else + yoff = deco16_scroll_y[tmap][x] & hmask; INT32 yy = (y + yoff) & hmask; INT32 xx = (x + xoff) & wmask; diff --git a/src/burn/drv/dataeast/deco16ic.h b/src/burn/drv/dataeast/deco16ic.h index af86b3108..a33dc23dd 100644 --- a/src/burn/drv/dataeast/deco16ic.h +++ b/src/burn/drv/dataeast/deco16ic.h @@ -6,6 +6,7 @@ extern UINT8 *deco16_pf_ram[4]; extern UINT8 *deco16_pf_rowscroll[4]; extern UINT16 deco16_priority; +extern UINT16 deco16ic_cninja_scrolly; // use different indexing of scroll_y for Caveman Ninja void deco16_set_bank_callback(INT32 tmap, INT32 (*callback)(const INT32 bank)); void deco16_set_color_base(INT32 tmap, INT32 base);