diff options
Diffstat (limited to 'src/mame/video/mb60553.cpp')
-rw-r--r-- | src/mame/video/mb60553.cpp | 21 |
1 files 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 ); |