From 6af2a1ff60ccda89ae10002776ccaa13e0872a07 Mon Sep 17 00:00:00 2001 From: angelosa Date: Wed, 30 Aug 2017 20:23:56 +0200 Subject: [PATCH] gstriker.cpp: added rotation to mb60553 core, used by V Goal Soccer during display of football field [Angelo Salese] --- src/mame/video/mb60553.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/mame/video/mb60553.cpp b/src/mame/video/mb60553.cpp index 0fa843d5513..f24c8de2864 100644 --- a/src/mame/video/mb60553.cpp +++ b/src/mame/video/mb60553.cpp @@ -270,31 +270,32 @@ void mb60553_zooming_tilemap_device::draw( screen_device &screen, bitmap_ind16& { // int scrollx; // int scrolly; - uint32_t startx,starty; - uint32_t incxx,incyy; + int32_t incxx,incyy; + int32_t incxy,incyx; float xoffset; - - incxx = m_lineram[(line)*8+0]<<4; - incyy = m_lineram[(line)*8+3]<<4; + // confirmed on how ROZ is used + incyy = ((int16_t)m_lineram[(line)*8+0])<<4; + incxx = ((int16_t)m_lineram[(line)*8+3])<<4; // startx has an offset based off current x zoom value // This is confirmed by Tecmo World Cup '94 startx being 0xff40 (-192) when showing footballer pics on attract mode (incxx is 0x800) // TODO: slightly offset? - xoffset = ((float)incxx/(float)0x10000) * 384.0; + xoffset = ((float)incyy/(float)0x10000) * 384.0; - startx = m_regs[0] + (uint32_t)xoffset; + startx = m_regs[0] + (int32_t)xoffset; starty = m_regs[1]; // TODO: what's this? Used by Grand Striker playfield -// startx -= m_lineram[(line)*8+7]/2; - + incyx = ((int16_t)m_lineram[(line)*8+7])<<4; + // V Goal Soccer rotation + incxy = ((int16_t)m_lineram[(line)*8+4])<<4; clip.min_y = clip.max_y = line; draw_roz_core(screen, bitmap, clip, startx<<12,starty<<12, - incxx,0,0,incyy, + incxx,incxy,-incyx,incyy, 1 );