diff options
-rw-r--r-- | backends/platform/psp/osys_psp.cpp | 2 | ||||
-rw-r--r-- | backends/platform/psp/osys_psp.h | 1 | ||||
-rw-r--r-- | backends/platform/psp/osys_psp_gu.cpp | 9 |
3 files changed, 11 insertions, 1 deletions
diff --git a/backends/platform/psp/osys_psp.cpp b/backends/platform/psp/osys_psp.cpp index 566db3014b..5e461f45e0 100644 --- a/backends/platform/psp/osys_psp.cpp +++ b/backends/platform/psp/osys_psp.cpp @@ -75,7 +75,7 @@ const OSystem::GraphicsMode OSystem_PSP::s_supportedGraphicsModes[] = { }; -OSystem_PSP::OSystem_PSP() : _screenWidth(0), _screenHeight(0), _overlayWidth(0), _overlayHeight(0), _offscreen(0), _overlayBuffer(0), _overlayVisible(false), _shakePos(0), _mouseBuf(0), _prevButtons(0), _lastPadCheck(0), _padAccel(0), _mixer(0) { +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) { memset(_palette, 0, sizeof(_palette)); diff --git a/backends/platform/psp/osys_psp.h b/backends/platform/psp/osys_psp.h index 310efdc7d4..94488a92ce 100644 --- a/backends/platform/psp/osys_psp.h +++ b/backends/platform/psp/osys_psp.h @@ -59,6 +59,7 @@ protected: uint16 _palette[256]; bool _overlayVisible; uint32 _shakePos; + uint32 _lastScreenUpdate; Graphics::Surface _framebuffer; diff --git a/backends/platform/psp/osys_psp_gu.cpp b/backends/platform/psp/osys_psp_gu.cpp index 0fb1b4aded..1c83aa4abf 100644 --- a/backends/platform/psp/osys_psp_gu.cpp +++ b/backends/platform/psp/osys_psp_gu.cpp @@ -38,6 +38,8 @@ #define MOUSE_SIZE 128 #define KBD_DATA_SIZE 130560 +#define MAX_FPS 30 + unsigned int __attribute__((aligned(16))) list[262144]; unsigned short __attribute__((aligned(16))) clut256[256]; unsigned short __attribute__((aligned(16))) mouseClut[256]; @@ -295,6 +297,13 @@ void OSystem_PSP_GU::copyRectToScreen(const byte *buf, int pitch, int x, int y, } void OSystem_PSP_GU::updateScreen() { + u32 now = getMillis(); + if (now - _lastScreenUpdate < 1000 / MAX_FPS) + return; + + _lastScreenUpdate = now; + + sceGuStart(0,list); sceGuClearColor(0xff000000); |