X Tutup
Skip to content

Commit 712d0cc

Browse files
committed
FREESCAPE: Reduce pixel format conversion when loading images
1 parent 8bd68d9 commit 712d0cc

File tree

11 files changed

+45
-35
lines changed

11 files changed

+45
-35
lines changed

engines/freescape/freescape.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,7 +1151,7 @@ Graphics::ManagedSurface *FreescapeEngine::loadAndConvertNeoImage(Common::Seekab
11511151
decoder.loadStream(*stream);
11521152
Graphics::ManagedSurface *surface = new Graphics::ManagedSurface();
11531153
surface->copyFrom(*decoder.getSurface());
1154-
surface->convertToInPlace(_gfx->_currentPixelFormat, decoder.getPalette().data(), decoder.getPalette().size());
1154+
surface->convertToInPlace(_gfx->_texturePixelFormat, decoder.getPalette().data(), decoder.getPalette().size());
11551155
return surface;
11561156
}
11571157

@@ -1160,18 +1160,18 @@ Graphics::ManagedSurface *FreescapeEngine::loadAndConvertDoodleImage(Common::See
11601160
decoder.loadStreams(*bitmap, *color1, *color2);
11611161
Graphics::ManagedSurface *surface = new Graphics::ManagedSurface();
11621162
surface->copyFrom(*decoder.getSurface());
1163-
surface->convertToInPlace(_gfx->_currentPixelFormat, decoder.getPalette().data(), decoder.getPalette().size());
1163+
surface->convertToInPlace(_gfx->_texturePixelFormat, decoder.getPalette().data(), decoder.getPalette().size());
11641164
return surface;
11651165
}
11661166

11671167

1168-
Graphics::ManagedSurface *FreescapeEngine::loadAndCenterScrImage(Common::SeekableReadStream *stream) {
1168+
Graphics::ManagedSurface *FreescapeEngine::loadAndConvertScrImage(Common::SeekableReadStream *stream) {
11691169
Image::ScrDecoder decoder;
11701170
decoder.loadStream(*stream);
11711171
Graphics::ManagedSurface *surface = new Graphics::ManagedSurface();
11721172
const Graphics::Surface *decoded = decoder.getSurface();
1173-
surface->create(320, 200, decoded->format);
1174-
surface->copyRectToSurface(*decoded, (320 - decoded->w) / 2, (200 - decoded->h) / 2, Common::Rect(decoded->w, decoded->h));
1173+
surface->create(320, 200, _gfx->_texturePixelFormat);
1174+
surface->simpleBlitFrom(*decoded, Common::Point((320 - decoded->w) / 2, (200 - decoded->h) / 2), &decoder.getPalette());
11751175
return surface;
11761176
}
11771177

engines/freescape/freescape.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ class FreescapeEngine : public Engine {
259259
Graphics::Surface *loadBundledImage(const Common::String &name, bool appendRenderMode = true);
260260
byte *getPaletteFromNeoImage(Common::SeekableReadStream *stream, int offset);
261261
Graphics::ManagedSurface *loadAndConvertNeoImage(Common::SeekableReadStream *stream, int offset, byte *palette = nullptr);
262-
Graphics::ManagedSurface *loadAndCenterScrImage(Common::SeekableReadStream *stream);
262+
Graphics::ManagedSurface *loadAndConvertScrImage(Common::SeekableReadStream *stream);
263263
Graphics::ManagedSurface *loadAndConvertDoodleImage(Common::SeekableReadStream *bitmap, Common::SeekableReadStream *color1, Common::SeekableReadStream *color2, byte *palette);
264264

265265
void loadPalettes(Common::SeekableReadStream *file, int offset);

engines/freescape/games/castle/zx.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,14 @@ void CastleEngine::loadAssetsZXFullGame() {
9292

9393
file.open("castlemaster.zx.title");
9494
if (file.isOpen()) {
95-
_title = loadAndCenterScrImage(&file);
95+
_title = loadAndConvertScrImage(&file);
9696
} else
9797
error("Unable to find castlemaster.zx.title");
9898

9999
file.close();
100100
file.open("castlemaster.zx.border");
101101
if (file.isOpen()) {
102-
_border = loadAndCenterScrImage(&file);
102+
_border = loadAndConvertScrImage(&file);
103103
} else
104104
error("Unable to find castlemaster.zx.border");
105105
file.close();

engines/freescape/games/dark/zx.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@ void DarkEngine::loadAssetsZXFullGame() {
5555

5656
file.open("darkside.zx.title");
5757
if (file.isOpen()) {
58-
_title = loadAndCenterScrImage(&file);
58+
_title = loadAndConvertScrImage(&file);
5959
} else
6060
error("Unable to find darkside.zx.title");
6161

6262
file.close();
6363
file.open("darkside.zx.border");
6464
if (file.isOpen()) {
65-
_border = loadAndCenterScrImage(&file);
65+
_border = loadAndConvertScrImage(&file);
6666
} else
6767
error("Unable to find driller.zx.border");
6868
file.close();
@@ -92,14 +92,14 @@ void DarkEngine::loadAssetsZXDemo() {
9292

9393
file.open("darkside.zx.title");
9494
if (file.isOpen()) {
95-
_title = loadAndCenterScrImage(&file);
95+
_title = loadAndConvertScrImage(&file);
9696
} else
9797
error("Unable to find darkside.zx.title");
9898

9999
file.close();
100100
file.open("darkside.zx.border");
101101
if (file.isOpen()) {
102-
_border = loadAndCenterScrImage(&file);
102+
_border = loadAndConvertScrImage(&file);
103103
} else
104104
error("Unable to find driller.zx.border");
105105
file.close();

engines/freescape/games/driller/zx.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ void DrillerEngine::loadAssetsZXFullGame() {
3535
Common::File file;
3636
file.open("driller.zx.title");
3737
if (file.isOpen()) {
38-
_title = loadAndCenterScrImage(&file);
38+
_title = loadAndConvertScrImage(&file);
3939
} else
4040
error("Unable to find driller.zx.title");
4141

4242
file.close();
4343

4444
file.open("driller.zx.border");
4545
if (file.isOpen()) {
46-
_border = loadAndCenterScrImage(&file);
46+
_border = loadAndConvertScrImage(&file);
4747
} else
4848
error("Unable to find driller.zx.border");
4949
file.close();
@@ -157,4 +157,4 @@ void DrillerEngine::drawZXUI(Graphics::Surface *surface) {
157157
drawCompass(surface, 220 - 3, 160, _pitch - 30, 10, 60, front);
158158
}
159159

160-
} // End of namespace Freescape
160+
} // End of namespace Freescape

engines/freescape/games/eclipse/zx.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@ void EclipseEngine::loadAssetsZXFullGame() {
5757

5858
file.open("totaleclipse.zx.title");
5959
if (file.isOpen()) {
60-
_title = loadAndCenterScrImage(&file);
60+
_title = loadAndConvertScrImage(&file);
6161
} else
6262
error("Unable to find totaleclipse.zx.title");
6363

6464
file.close();
6565
file.open("totaleclipse.zx.border");
6666
if (file.isOpen()) {
67-
_border = loadAndCenterScrImage(&file);
67+
_border = loadAndConvertScrImage(&file);
6868
} else
6969
error("Unable to find totaleclipse.zx.border");
7070
file.close();
@@ -100,14 +100,14 @@ void EclipseEngine::loadAssetsZXDemo() {
100100

101101
file.open("totaleclipse.zx.title");
102102
if (file.isOpen()) {
103-
_title = loadAndCenterScrImage(&file);
103+
_title = loadAndConvertScrImage(&file);
104104
} else
105105
error("Unable to find totaleclipse.zx.title");
106106

107107
file.close();
108108
file.open("totaleclipse.zx.border");
109109
if (file.isOpen()) {
110-
_border = loadAndCenterScrImage(&file);
110+
_border = loadAndConvertScrImage(&file);
111111
} else
112112
error("Unable to find totaleclipse.zx.border");
113113
file.close();

engines/freescape/gfx.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ const Graphics::PixelFormat getRGBAPixelFormat() {
4141
Renderer::Renderer(int screenW, int screenH, Common::RenderMode renderMode, bool authenticGraphics) {
4242
_screenW = screenW;
4343
_screenH = screenH;
44-
_currentPixelFormat = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0);
4544
_keyColor = -1;
4645
_inkColor = -1;
4746
_paperColor = -1;

engines/freescape/gfx.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ class Renderer {
6262
Renderer(int screenW, int screenH, Common::RenderMode renderMode, bool authenticGraphics);
6363
virtual ~Renderer();
6464

65-
Graphics::PixelFormat _currentPixelFormat;
6665
Graphics::PixelFormat _texturePixelFormat;
6766
bool _isAccelerated;
6867
bool _authenticGraphics;

engines/freescape/gfx_tinygl.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Renderer *CreateGfxTinyGL(int screenW, int screenH, Common::RenderMode renderMod
4040
TinyGLRenderer::TinyGLRenderer(int screenW, int screenH, Common::RenderMode renderMode) : Renderer(screenW, screenH, renderMode, true) {
4141
_verts = (Vertex *)malloc(sizeof(Vertex) * kVertexArraySize);
4242
_texCoord = (Coord *)malloc(sizeof(Coord) * kVertexArraySize);
43+
// TODO: Select this based on the screen format
4344
_texturePixelFormat = getRGBAPixelFormat();
4445
_variableStippleArray = nullptr;
4546
}

engines/freescape/gfx_tinygl_texture.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ TinyGL2DTexture::~TinyGL2DTexture() {
4242
}
4343

4444
void TinyGL2DTexture::update(const Graphics::Surface *surface) {
45-
uint32 keyColor = getRGBAPixelFormat().RGBToColor(0xA0, 0xA0, 0xA0);
45+
uint32 keyColor = surface->format.RGBToColor(0xA0, 0xA0, 0xA0);
4646
tglUploadBlitImage(_blitImage, *surface, keyColor, true);
4747
}
4848

0 commit comments

Comments
 (0)
X Tutup