From: Maarten t. H. <mth...@us...> - 2004-04-27 22:59:08
|
Update of /cvsroot/openmsx/openMSX/src/video In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30448/src/video Modified Files: SDLRenderer.cc SDLRenderer.hh VDP.cc Log Message: Fixed per-line administration of scale factor. Index: SDLRenderer.cc =================================================================== RCS file: /cvsroot/openmsx/openMSX/src/video/SDLRenderer.cc,v retrieving revision 1.72 retrieving revision 1.73 diff -u -d -r1.72 -r1.73 --- SDLRenderer.cc 21 Apr 2004 20:44:30 -0000 1.72 +++ SDLRenderer.cc 27 Apr 2004 22:58:59 -0000 1.73 @@ -728,9 +728,7 @@ // Call superclass implementation. PixelRenderer::frameStart(time); - // TODO: getEvenOdd is negated, because VDP still has old frame's - // version when doing the frameStart call. - calcWorkScreen(!vdp->getEvenOdd()); + calcWorkScreen(vdp->getEvenOdd()); // Calculate line to render at top of screen. // Make sure the display area is centered. @@ -745,15 +743,6 @@ precalcPalette(gamma); resetPalette(); } - - // TODO: Do this in drawBorder instead? - if (LINE_ZOOM == 2) { - LineContent lineType = - vdp->getDisplayMode().getLineWidth() == 256 ? LINE_256 : LINE_512; - for (unsigned y = 0; y < HEIGHT; y++) { - lineContent[y] = lineType; //LINE_BLANK; - } - } } template <class Pixel, Renderer::Zoom zoom> @@ -954,6 +943,15 @@ rect.h = limitY - fromY; // Note: return code ignored. SDL_FillRect(workScreen, &rect, getBorderColour()); + + if (LINE_ZOOM == 2 && !vdp->isDisplayEnabled()) { + LineContent lineType = vdp->getDisplayMode().getLineWidth() == 256 + ? LINE_256 : LINE_512; + int endY = rect.y + rect.h; + for (int y = rect.y; y < endY; y++) { + lineContent[y] = lineType; + } + } } template <class Pixel, Renderer::Zoom zoom> Index: SDLRenderer.hh =================================================================== RCS file: /cvsroot/openmsx/openMSX/src/video/SDLRenderer.hh,v retrieving revision 1.33 retrieving revision 1.34 diff -u -d -r1.33 -r1.34 --- SDLRenderer.hh 10 Apr 2004 01:01:22 -0000 1.33 +++ SDLRenderer.hh 27 Apr 2004 22:58:59 -0000 1.34 @@ -197,7 +197,7 @@ */ LINE_DONTTOUCH }; - LineContent lineContent[HEIGHT]; + LineContent lineContent[HEIGHT / LINE_ZOOM]; /** Is the last completed frame interlaced? * This is a copy of the VDP's interlace status, Index: VDP.cc =================================================================== RCS file: /cvsroot/openmsx/openMSX/src/video/VDP.cc,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- VDP.cc 2 Apr 2004 19:24:56 -0000 1.46 +++ VDP.cc 27 Apr 2004 22:58:59 -0000 1.47 @@ -447,11 +447,6 @@ { //cerr << "VDP::frameStart @ " << time << "\n"; - // Inform VDP subcomponents. - // TODO: Do this via VDPVRAM? - renderer->frameStart(time); - spriteChecker->frameStart(time); - // Tell renderer to sync with render settings. if (!renderer->checkSettings()) { // Renderer failed to sync; replace it. @@ -496,6 +491,11 @@ // Schedule DISPLAY_START, VSCAN and HSCAN. scheduleDisplayStart(time); + // Inform VDP subcomponents. + // TODO: Do this via VDPVRAM? + renderer->frameStart(time); + spriteChecker->frameStart(time); + /* cout << "--> frameStart = " << frameStartTime << ", frameEnd = " << (frameStartTime + getTicksPerFrame()) |