Ticket #9095: fix.patch
File fix.patch, 3.1 KB (added by , 14 years ago) |
---|
-
backends/platform/psp/osys_psp.cpp
109 109 }; 110 110 111 111 112 OSystem_PSP::OSystem_PSP() : _screenWidth(0), _screenHeight(0), _overlayWidth(0), _overlayHeight(0), _offscreen(0), _overlayBuffer(0), _overlayVisible(false), _shakePos(0), _lastScreenUpdate(0), _mouseBuf(0), _prevButtons(0), _lastPadCheck(0), _padAccel(0), _mixer(0) { 112 OSystem_PSP::OSystem_PSP() : _screenWidth(0), _screenHeight(0), _overlayWidth(0), _overlayHeight(0), 113 _offscreen(0), _overlayBuffer(0), _overlayVisible(false), _shakePos(0), _lastScreenUpdate(0), _mouseBuf(0), _prevButtons(0), _lastPadCheck(0), _padAccel(0), _mixer(0) { 114 113 115 memset(_palette, 0, sizeof(_palette)); 114 116 115 117 _cursorPaletteDisabled = true; … … 251 253 252 254 void OSystem_PSP::initSize(uint width, uint height, const Graphics::PixelFormat *format) { 253 255 PSPDebugTrace("initSize\n"); 256 254 257 _screenWidth = width; 255 258 _screenHeight = height; 256 259 … … 258 261 _overlayHeight = PSP_SCREEN_HEIGHT; //height; 259 262 260 263 // _offscreen = (byte *)offscreen256; 261 _overlayBuffer = (OverlayColor *)0x44000000 + PSP_FRAME_SIZE; 264 // _overlayBuffer = (OverlayColor *)0x44000000 + PSP_FRAME_SIZE; 265 if(_overlayBuffer) { 266 free(_overlayBuffer); 267 _overlayBuffer = 0; 268 } 269 _overlayBuffer = (OverlayColor *)memalign(16, _overlayWidth * _overlayHeight * sizeof(OverlayColor)); 262 270 263 _offscreen = (byte *)_overlayBuffer + _overlayWidth * _overlayHeight * sizeof(OverlayColor); 264 bzero(_offscreen, width * height); 271 // _offscreen = (byte *)_overlayBuffer + _overlayWidth * _overlayHeight * sizeof(OverlayColor); 272 if(_offscreen) { 273 free(_offscreen); 274 _offscreen = 0; 275 } 276 if(format) { 277 _offscreen = (byte *)memalign(16, _screenWidth * _screenHeight * format->bytesPerPixel); 278 bzero(_offscreen, _screenWidth * _screenHeight * format->bytesPerPixel); 279 } 280 else { // Assume maximum 281 _offscreen = (byte *)memalign(16, _screenWidth * _screenHeight * 4); 282 bzero(_offscreen, _screenWidth * _screenHeight * 4); 283 } 284 265 285 clearOverlay(); 266 286 memset(_palette, 0xFFFF, 256 * sizeof(unsigned short)); 267 287 _kbdClut[0] = 0xFFFF; … … 347 367 348 368 349 369 byte *dst = _offscreen + y * _screenWidth + x; 370 dst = (byte *)((unsigned int)dst | 0x40000000); // Make this an uncached write 350 371 351 372 if (_screenWidth == pitch && pitch == w) 352 373 { 353 374 memcpy(dst, buf, h * w); 354 /*355 sceGuStart(0, displayList);356 sceGuCopyImage( 3, 0, 0, w/2, h, w/2, (void *)buf, x/2, y, _screenWidth /2, _offscreen);357 sceGuFinish();358 sceGuSync(0,0);359 */360 375 } 361 376 else 362 377 { … … 367 382 dst += _screenWidth; 368 383 } while (--h); 369 384 } 385 370 386 } 371 387 372 388 Graphics::Surface *OSystem_PSP::lockScreen() { … … 647 663 sceGuDrawArray(GU_SPRITES, GU_TEXTURE_32BITF|GU_VERTEX_32BITF|GU_TRANSFORM_2D, 2, 0, vertKB); 648 664 sceGuDisable(GU_BLEND); 649 665 } 650 //sceKernelDcacheWritebackAll();651 666 652 667 sceGuFinish(); 653 668 sceGuSync(0,0); 654 669 655 670 sceDisplayWaitVblankStart(); 656 671 sceGuSwapBuffers(); 657 658 //sceKernelDcacheWritebackAll();659 672 } 660 673 661 674 void OSystem_PSP::setShakePos(int shakeOffset) {