aboutsummaryrefslogtreecommitdiff
path: root/backends/ps2/Gs2dScreen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/ps2/Gs2dScreen.cpp')
-rw-r--r--backends/ps2/Gs2dScreen.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/backends/ps2/Gs2dScreen.cpp b/backends/ps2/Gs2dScreen.cpp
index 274367847e..7c108d6174 100644
--- a/backends/ps2/Gs2dScreen.cpp
+++ b/backends/ps2/Gs2dScreen.cpp
@@ -137,7 +137,7 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode tvMode) {
// set screen size, 640x544 for pal, 640x448 for ntsc
_tvWidth = 640;
- _tvHeight = ((_videoMode == TV_PAL) ? 544 : 448);
+ _tvHeight = ((_videoMode == TV_PAL) ? 544 : 448); // PAL => 512?
kFullScreen[0].z = kFullScreen[1].z = 0;
kFullScreen[0].x = ORIGIN_X;
kFullScreen[0].y = ORIGIN_Y;
@@ -304,6 +304,15 @@ void Gs2dScreen::setPalette(const uint32 *pal, uint8 start, uint16 num) {
SignalSema(g_DmacSema);
}
+void Gs2dScreen::grabPalette(uint32 *pal, uint8 start, uint16 num) {
+ assert(start + num <= 256);
+ for (uint16 cnt = 0; cnt < num; cnt++) {
+ uint16 src = start + cnt;
+ src = (src & 0xE7) | ((src & 0x8) << 1) | ((src & 0x10) >> 1);
+ pal[cnt] = _clut[src];
+ }
+}
+
void Gs2dScreen::updateScreen(void) {
WaitSema(_screenSema);