aboutsummaryrefslogtreecommitdiff
path: root/backends/psp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/psp')
-rw-r--r--backends/psp/osys_psp.cpp63
-rw-r--r--backends/psp/osys_psp.h5
-rw-r--r--backends/psp/osys_psp_gu.cpp30
3 files changed, 49 insertions, 49 deletions
diff --git a/backends/psp/osys_psp.cpp b/backends/psp/osys_psp.cpp
index 8b9242299f..56d7e270b1 100644
--- a/backends/psp/osys_psp.cpp
+++ b/backends/psp/osys_psp.cpp
@@ -59,7 +59,7 @@ const OSystem::GraphicsMode OSystem_PSP::s_supportedGraphicsModes[] = {
};
-OSystem_PSP::OSystem_PSP() : _screenWidth(0), _screenHeight(0), _offscreen(0), _overlayBuffer(0), _overlayVisible(false), _shakePos(0), _mouseBuf(0), _prevButtons(0), _lastPadCheck(0), _padAccel(0) {
+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) {
memset(_palette, 0, sizeof(_palette));
@@ -121,28 +121,25 @@ int OSystem_PSP::getGraphicsMode() const
}
void OSystem_PSP::initSize(uint width, uint height) {
- _screenWidth = width;
- _screenHeight = height;
+ _overlayWidth = _screenWidth = width;
+ _overlayHeight = _screenHeight = height;
_offscreen = (byte *)malloc(width * height);
- // TODO: Fixme. This is not neede anymore
- _overlayScale = 1;
-
- _overlayBuffer = (OverlayColor *)malloc(width * height * sizeof(OverlayColor));
+ _overlayBuffer = (OverlayColor *)malloc(_overlayWidth * _overlayHeight * sizeof(OverlayColor));
bzero(_offscreen, width * height);
- bzero(_overlayBuffer, width * height);
+ clearOverlay();
_mouseVisible = false;
}
-int16 OSystem_PSP::getHeight() {
- return _screenHeight;
-}
-
int16 OSystem_PSP::getWidth() {
return _screenWidth;
}
+int16 OSystem_PSP::getHeight() {
+ return _screenHeight;
+}
+
void OSystem_PSP::setPalette(const byte *colors, uint start, uint num) {
const byte *b = colors;
@@ -203,10 +200,10 @@ void OSystem_PSP::updateScreen() {
}
if(_overlayVisible) {
- for (int i = 0; i < _screenHeight * _overlayScale; ++i) {
- for (int j = 0; j < _screenWidth * _overlayScale; ++j) {
+ for (int i = 0; i < _screenHeight; ++i) {
+ for (int j = 0; j < _screenWidth; ++j) {
- OverlayColor pixel = _overlayBuffer[(i * _screenWidth +j)];
+ OverlayColor pixel = _overlayBuffer[(i * _overlayWidth +j)];
if(pixel & 0x8000)
putPixel(xStart + j, yStart + i, pixel);
@@ -257,14 +254,14 @@ void OSystem_PSP::hideOverlay ()
void OSystem_PSP::clearOverlay ()
{
PSPDebugTrace("clearOverlay\n");
- bzero(_overlayBuffer, _screenWidth * _overlayScale * _screenHeight * _overlayScale * sizeof(OverlayColor));
+ bzero(_overlayBuffer, _overlayWidth * _overlayHeight * sizeof(OverlayColor));
}
void OSystem_PSP::grabOverlay (OverlayColor *buf, int pitch)
{
}
-void OSystem_PSP::copyRectToOverlay (const OverlayColor *buf, int pitch, int x, int y, int w, int h)
+void OSystem_PSP::copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h)
{
PSPDebugTrace("copyRectToOverlay\n");
@@ -281,38 +278,38 @@ void OSystem_PSP::copyRectToOverlay (const OverlayColor *buf, int pitch, int x,
y = 0;
}
- if (w > _screenWidth*_overlayScale - x) {
- w = _screenWidth*_overlayScale - x;
+ if (w > _overlayWidth - x) {
+ w = _overlayWidth - x;
}
- if (h > _screenHeight*_overlayScale - y) {
- h = _screenHeight*_overlayScale - y;
+ if (h > _overlayHeight - y) {
+ h = _overlayHeight - y;
}
if (w <= 0 || h <= 0)
return;
- OverlayColor *dst = _overlayBuffer +( y * _screenWidth * _overlayScale + x);
+ OverlayColor *dst = _overlayBuffer + (y * _overlayWidth + x);
if (_screenWidth == pitch && pitch == w) {
- memcpy(dst, buf, h * _overlayScale * w * _overlayScale * sizeof(OverlayColor));
+ memcpy(dst, buf, h * w * sizeof(OverlayColor));
} else {
do {
- memcpy(dst, buf, w * _overlayScale * sizeof(OverlayColor));
+ memcpy(dst, buf, w * sizeof(OverlayColor));
buf += pitch;
- dst += _screenWidth * _overlayScale;
+ dst += _overlayWidth;
} while (--h);
}
}
-int16 OSystem_PSP::getOverlayHeight()
+int16 OSystem_PSP::getOverlayWidth()
{
- return getHeight() * _overlayScale;
+ return _overlayWidth;
}
-int16 OSystem_PSP::getOverlayWidth()
+int16 OSystem_PSP::getOverlayHeight()
{
- return getWidth() * _overlayScale;
+ return _overlayHeight;
}
OverlayColor OSystem_PSP::RGBToColor(uint8 r, uint8 g, uint8 b)
@@ -496,16 +493,16 @@ bool OSystem_PSP::pollEvent(Event &event) {
newY -= -analogStepAmountY - (-analogStepAmountY - 1);
}
else {
- newX += analogStepAmountX >> ((_screenWidth == 640 || (_overlayVisible && _overlayScale > 1)) ? 2 : 3);
- newY += analogStepAmountY >> ((_screenWidth == 640 || (_overlayVisible && _overlayScale > 1)) ? 2 : 3);
+ newX += analogStepAmountX >> ((_screenWidth == 640) ? 2 : 3);
+ newY += analogStepAmountY >> ((_screenWidth == 640) ? 2 : 3);
}
if (newX < 0) newX = 0;
if (newY < 0) newY = 0;
if(_overlayVisible)
{
- if (newX >= _screenWidth*_overlayScale) newX = _screenWidth*_overlayScale - 1;
- if (newY >= _screenHeight*_overlayScale) newY = _screenHeight*_overlayScale - 1;
+ if (newX >= _overlayWidth) newX = _overlayWidth - 1;
+ if (newY >= _overlayHeight) newY = _overlayHeight - 1;
}
else
{
diff --git a/backends/psp/osys_psp.h b/backends/psp/osys_psp.h
index b5e16df86d..937a6e1889 100644
--- a/backends/psp/osys_psp.h
+++ b/backends/psp/osys_psp.h
@@ -45,7 +45,8 @@ public:
protected:
uint16 _screenWidth;
uint16 _screenHeight;
- uint16 _overlayScale;
+ uint16 _overlayWidth;
+ uint16 _overlayHeight;
byte *_offscreen;
OverlayColor *_overlayBuffer;
uint16 _palette[256];
@@ -81,8 +82,8 @@ public:
bool setGraphicsMode(const char *name);
virtual int getGraphicsMode() const;
virtual void initSize(uint width, uint height);
- virtual int16 getHeight();
virtual int16 getWidth();
+ virtual int16 getHeight();
virtual void setPalette(const byte *colors, uint start, uint num);
virtual void copyRectToScreen(const byte *buf, int pitch, int x, int y, int w, int h);
virtual void updateScreen();
diff --git a/backends/psp/osys_psp_gu.cpp b/backends/psp/osys_psp_gu.cpp
index 1cee404655..8ba36bdc20 100644
--- a/backends/psp/osys_psp_gu.cpp
+++ b/backends/psp/osys_psp_gu.cpp
@@ -136,15 +136,16 @@ void OSystem_PSP_GU::initSize(uint width, uint height) {
PSPDebugTrace("initSize\n");
_screenWidth = width;
_screenHeight = height;
+
+ _overlayWidth = width; //PSP_SCREEN_WIDTH
+ _overlayHeight = height; //PSP_SCREEN_HEIGHT
+
// _offscreen = (byte *)offscreen256;
_overlayBuffer = (OverlayColor *)0x44000000 + PSP_FRAME_SIZE;
- // FIXME: This is not needed anymore
- _overlayScale = 1;
-
- _offscreen = (unsigned byte *)_overlayBuffer+_screenWidth*_screenHeight*sizeof(OverlayColor);
+ _offscreen = (unsigned byte *)_overlayBuffer + _overlayWidth * _overlayHeight * sizeof(OverlayColor);
bzero(_offscreen, width * height);
- bzero(_overlayBuffer, width * height);
+ clearOverlay();
_kbdClut[0] = 0xffff;
_kbdClut[246] = 0x4ccc;
_kbdClut[247] = 0x0000;
@@ -341,21 +342,22 @@ OSystem_PSP_GU::updateScreen()
vertices[0].x = 0; vertices[0].y = 0; vertices[0].z = 0;
vertices[1].x = PSP_SCREEN_WIDTH; vertices[1].y = PSP_SCREEN_HEIGHT; vertices[1].z = 0;
vertices[0].u = 0.5; vertices[0].v = 0.5;
- vertices[1].u = _screenWidth*_overlayScale-0.5; vertices[1].v = _screenHeight*_overlayScale-0.5;
+ vertices[1].u = _overlayWidth-0.5; vertices[1].v = _overlayHeight-0.5;
sceGuTexMode(GU_PSM_5551, 0, 0, 0); // 16-bit image
sceGuAlphaFunc(GU_GREATER,0,0xff);
sceGuEnable(GU_ALPHA_TEST);
- if(_overlayScale==2 || _screenWidth == 640)
- sceGuTexImage(0, 512, 512, _screenWidth*_overlayScale, _overlayBuffer);
+ if (_overlayWidth == 640)
+ sceGuTexImage(0, 512, 512, _overlayWidth, _overlayBuffer);
else
- sceGuTexImage(0, 512, 256, _screenWidth*_overlayScale, _overlayBuffer);
+ sceGuTexImage(0, 512, 256, _overlayWidth, _overlayBuffer);
+
sceGuTexFunc(GU_TFX_MODULATE, GU_TCC_RGBA);
sceGuDrawArray(GU_SPRITES,GU_TEXTURE_32BITF|GU_VERTEX_32BITF|GU_TRANSFORM_2D,2,0,vertices);
// need to render twice for textures > 512
- if(_overlayScale==2 || _screenWidth == 640)
+ if( _overlayWidth == 640)
{
- sceGuTexImage(0, 512, 512, _screenWidth*_overlayScale, _overlayBuffer+512);
- vertices[0].u = 512 + 0.5; vertices[1].v = _screenHeight * _overlayScale - 0.5;
+ sceGuTexImage(0, 512, 512, _overlayWidth, _overlayBuffer+512);
+ vertices[0].u = 512 + 0.5; vertices[1].v = _overlayHeight - 0.5;
vertices[0].x = PSP_SCREEN_WIDTH*512/640; vertices[0].y = 0; vertices[0].z = 0;
sceGuDrawArray(GU_SPRITES,GU_TEXTURE_32BITF|GU_VERTEX_32BITF|GU_TRANSFORM_2D,2,0,vertices);
}
@@ -384,8 +386,8 @@ OSystem_PSP_GU::updateScreen()
{
float scalex, scaley;
- scalex = (float)PSP_SCREEN_WIDTH/(_screenWidth*_overlayScale);
- scaley = (float)PSP_SCREEN_HEIGHT/(_screenHeight*_overlayScale);
+ scalex = (float)PSP_SCREEN_WIDTH/_overlayWidth;
+ scaley = (float)PSP_SCREEN_HEIGHT/_overlayHeight;
vertices[0].x = mX*scalex; vertices[0].y = mY*scaley; vertices[0].z = 0;
vertices[1].x = vertices[0].x+_mouseWidth*scalex; vertices[1].y = vertices[0].y + _mouseHeight*scaley; vertices[0].z = 0;