[Scummvm-git-logs] scummvm master -> 259accebac45757b3a3e26c954cdd9e0f24943aa
dreammaster
dreammaster at scummvm.org
Mon Jun 21 02:16:18 UTC 2021
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
827efed918 AGS: Added detection entries
aec0a06700 AGS: Enable setting paletted graphics mode
259accebac AGS: Properly update palette in 8-bit paletted mode
Commit: 827efed9182201fd65eca02a226a3104c16dd3a5
https://github.com/scummvm/scummvm/commit/827efed9182201fd65eca02a226a3104c16dd3a5
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-06-20T19:15:55-07:00
Commit Message:
AGS: Added detection entries
Changed paths:
engines/ags/detection_tables.h
diff --git a/engines/ags/detection_tables.h b/engines/ags/detection_tables.h
index b1c184a6dd..ca77a4286d 100644
--- a/engines/ags/detection_tables.h
+++ b/engines/ags/detection_tables.h
@@ -1273,6 +1273,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "roccioquest", "Roccio Quest" },
{ "rockabillykid", "Rockabilly Kid" },
{ "rockburgerstreehouses", "Rock Burgers & Tree Houses" },
+ { "rockpaperscissors2", "Rock Paper Scissors Reboot" },
{ "rockrockrock", "Rock Rock Rock" },
{ "rockyroams", "Rocky roams" },
{ "rodequest2", "Rode Quest 2" },
@@ -1286,6 +1287,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "rowengoestowork", "Rowen Goes To Work" },
{ "rs15", "rs15" },
{ "rudeawakening", "Rude Awakening" },
+ { "runestones", "Runestones!" },
{ "ryansdayout", "Ryan's Day Out" },
{ "saddsonissein", "Saddson Issein" },
{ "salazarsevilplan", "Salazar's evil plan" },
@@ -3238,6 +3240,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY("roccioquest", "RoccioQuest.exe", "7727bf5360b00bfc1947455218137803", 5797284),
GAME_ENTRY("rockabillykid", "Rockabilly Kid.exe", "ff3358d8f2726d544aadfde4f1ec8407", 2650305),
GAME_ENTRY("rockburgerstreehouses", "RBTH.exe", "88cf59aad15ca331ab0f854e16c84df3", 1876674),
+ GAME_ENTRY("rockpaperscissors2", "Rock, Paper, Scissors 2.exe", "89a94326c8afd9e0234e269bd7330130", 2926218),
GAME_ENTRY("rockrockrock", "rrr.exe", "7dd36aa863ed40ede1b09ae505e478cc", 9362761),
GAME_ENTRY("rockyroams", "Rocky.exe", "a01a9639ce30bdcd5bf82e528b51fa06", 16978200),
GAME_ENTRY("rodequest2", "RQ2.exe", "12c03a3c782237821acd590fd91af4c5", 4192097),
@@ -3251,6 +3254,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY("rowengoestowork", "Rowen.exe", "a1cef60926235b85bd0e1866b19e0dc7", 3791058),
GAME_ENTRY("rs15", "rs15.exe", "3b7cceb3e4bdb031dc5d8f290936e94b", 13638597),
GAME_ENTRY("rudeawakening", "RudeAwakening.exe", "0710e2ec71042617f565c01824f0cf3c", 8038257),
+ GAME_ENTRY("runestones", "Project Forsetti.exe", "c0d48dcc2003d4de0410cb8612d1c3e6", 37111243),
GAME_ENTRY("ryansdayout", "Ryan's Day out.exe", "06a03fe35791b0578068ab1873455463", 2573584),
GAME_ENTRY("saddsonissein", "Issein.exe", "3e8667bab45f2e5d7237db53ab376400", 4070795),
GAME_ENTRY("salazarsevilplan", "Jonny Smallvalley.exe", "a524cbb1c51589903c4043b98917f1d9", 64646627),
Commit: aec0a06700cb694bb505f02c2201bec11bdd4b15
https://github.com/scummvm/scummvm/commit/aec0a06700cb694bb505f02c2201bec11bdd4b15
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-06-20T19:15:56-07:00
Commit Message:
AGS: Enable setting paletted graphics mode
Changed paths:
engines/ags/ags.cpp
engines/ags/ags.h
engines/ags/engine/gfx/ali_3d_scummvm.cpp
engines/ags/lib/allegro/color.cpp
engines/ags/lib/allegro/color.h
engines/ags/lib/allegro/gfx.cpp
engines/ags/lib/allegro/gfx.h
diff --git a/engines/ags/ags.cpp b/engines/ags/ags.cpp
index 3423127085..e18565689b 100644
--- a/engines/ags/ags.cpp
+++ b/engines/ags/ags.cpp
@@ -181,13 +181,33 @@ SaveStateList AGSEngine::listSaves() const {
return getMetaEngine()->listSaves(_targetName.c_str());
}
-void AGSEngine::setGraphicsMode(size_t w, size_t h) {
+bool AGSEngine::getPixelFormat(int depth, Graphics::PixelFormat &format) const {
+ Common::List<Graphics::PixelFormat> supportedFormatsList = g_system->getSupportedFormats();
+
+ if (depth == 8) {
+ format = Graphics::PixelFormat::createFormatCLUT8();
+ return true;
+ }
+
+ for (Common::List<Graphics::PixelFormat>::iterator it =
+ supportedFormatsList.begin(); it != supportedFormatsList.end(); ++it) {
+ if (it->bpp() == depth) {
+ format = *it;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+
+void AGSEngine::setGraphicsMode(size_t w, size_t h, int colorDepth) {
Common::List<Graphics::PixelFormat> supportedFormatsList = g_system->getSupportedFormats();
Graphics::PixelFormat format;
- if (!supportedFormatsList.empty())
- format = supportedFormatsList.front();
- else
- format = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0);
+ if (!getPixelFormat(colorDepth, format))
+ error("Unsupported color depth %d", colorDepth);
+ //Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0);
+
initGraphics(w, h, &format);
_rawScreen = new Graphics::Screen();
diff --git a/engines/ags/ags.h b/engines/ags/ags.h
index ddc55e7507..a55b8047d6 100644
--- a/engines/ags/ags.h
+++ b/engines/ags/ags.h
@@ -117,9 +117,14 @@ public:
}
/**
- * Setse up the graphics mode
+ * Returns a pixel format for the given color depth.
*/
- void setGraphicsMode(size_t w, size_t h);
+ bool getPixelFormat(int depth, Graphics::PixelFormat &format) const;
+
+ /**
+ * Sets up the graphics mode
+ */
+ void setGraphicsMode(size_t w, size_t h, int depth);
bool hasFeature(EngineFeature f) const override {
return
diff --git a/engines/ags/engine/gfx/ali_3d_scummvm.cpp b/engines/ags/engine/gfx/ali_3d_scummvm.cpp
index baa4cd31ce..8325d98952 100644
--- a/engines/ags/engine/gfx/ali_3d_scummvm.cpp
+++ b/engines/ags/engine/gfx/ali_3d_scummvm.cpp
@@ -58,15 +58,14 @@ ScummVMRendererGraphicsDriver::ScummVMRendererGraphicsDriver() {
}
bool ScummVMRendererGraphicsDriver::IsModeSupported(const DisplayMode &mode) {
- if (mode.Width <= 0 || mode.Height <= 0) {
- warning("Invalid resolution parameters: %d x %d", mode.Width, mode.Height);
+ if (mode.Width <= 0 || mode.Height <= 0 || mode.ColorDepth <= 0) {
+ warning("Invalid resolution parameters: %d x %d x %d",
+ mode.Width, mode.Height, mode.ColorDepth);
return false;
}
- if (mode.ColorDepth != 32) {
- warning("Display colour depth not supported: %d", mode.ColorDepth);
- return false;
- }
- return true;
+
+ Graphics::PixelFormat format;
+ return ::AGS::g_vm->getPixelFormat(mode.ColorDepth, format);
}
int ScummVMRendererGraphicsDriver::GetDisplayDepthForNativeDepth(int native_color_depth) const {
@@ -112,7 +111,7 @@ bool ScummVMRendererGraphicsDriver::SetDisplayMode(const DisplayMode &mode) {
return false;
const int driver = mode.Windowed ? GFX_SCUMMVM : GFX_SCUMMVM_FULLSCREEN;
- if (set_gfx_mode(driver, mode.Width, mode.Height, 0, 0) != 0)
+ if (set_gfx_mode(driver, mode.Width, mode.Height, mode.ColorDepth) != 0)
return false;
OnInit();
diff --git a/engines/ags/lib/allegro/color.cpp b/engines/ags/lib/allegro/color.cpp
index 05e208950a..8520226044 100644
--- a/engines/ags/lib/allegro/color.cpp
+++ b/engines/ags/lib/allegro/color.cpp
@@ -48,11 +48,6 @@ void color::writeToFile(AGS::Shared::Stream *file) const {
file->WriteByte(filler);
}
-
-void set_color(int idx, const RGB *p) {
- _G(current_palette)[idx] = *p;
-}
-
void set_palette(const PALETTE p) {
for (int idx = 0; idx < PAL_SIZE; ++idx)
_G(current_palette)[idx] = p[idx];
diff --git a/engines/ags/lib/allegro/color.h b/engines/ags/lib/allegro/color.h
index 2b8c79849e..aca8250b12 100644
--- a/engines/ags/lib/allegro/color.h
+++ b/engines/ags/lib/allegro/color.h
@@ -48,11 +48,11 @@ class Stream;
#include "common/pack-start.h" // START STRUCT PACKING
struct color {
-byte r, g, b;
-byte filler;
+ byte r, g, b;
+ byte filler;
-void readFromFile(AGS::Shared::Stream *file);
-void writeToFile(AGS::Shared::Stream *file) const;
+ void readFromFile(AGS::Shared::Stream *file);
+ void writeToFile(AGS::Shared::Stream *file) const;
} PACKED_STRUCT;
typedef color RGB;
@@ -61,30 +61,29 @@ typedef RGB PALETTE[PAL_SIZE];
#include "common/pack-end.h" // END STRUCT PACKING
struct RGB_MAP {
-byte data[32][32][32];
+ byte data[32][32][32];
};
struct COLOR_MAP {
-byte data[PAL_SIZE][PAL_SIZE];
+ byte data[PAL_SIZE][PAL_SIZE];
};
enum BlenderMode {
-kSourceAlphaBlender,
-kArgbToArgbBlender,
-kArgbToRgbBlender,
-kRgbToArgbBlender,
-kRgbToRgbBlender,
-kAlphaPreservedBlenderMode,
-kOpaqueBlenderMode,
-kAdditiveBlenderMode,
-kTintBlenderMode,
-kTintLightBlenderMode
+ kSourceAlphaBlender,
+ kArgbToArgbBlender,
+ kArgbToRgbBlender,
+ kRgbToArgbBlender,
+ kRgbToRgbBlender,
+ kAlphaPreservedBlenderMode,
+ kOpaqueBlenderMode,
+ kAdditiveBlenderMode,
+ kTintBlenderMode,
+ kTintLightBlenderMode
};
AL_ARRAY(const int, _rgb_scale_5);
AL_ARRAY(const int, _rgb_scale_6);
-AL_FUNC(void, set_color, (int idx, AL_CONST RGB *p));
AL_FUNC(void, set_palette, (AL_CONST PALETTE p));
AL_FUNC(void, set_palette_range, (AL_CONST PALETTE p, int from, int to, int retracesync));
diff --git a/engines/ags/lib/allegro/gfx.cpp b/engines/ags/lib/allegro/gfx.cpp
index 9534c81673..dc601afc94 100644
--- a/engines/ags/lib/allegro/gfx.cpp
+++ b/engines/ags/lib/allegro/gfx.cpp
@@ -44,11 +44,11 @@ int get_color_conversion() {
return color_conversion;
}
-int set_gfx_mode(int card, int w, int h, int v_w, int v_h) {
+int set_gfx_mode(int card, int w, int h, int depth) {
// Graphics shutdown can be ignored
if (card != -1) {
assert(card == SCUMMVM_ID);
- ::AGS::g_vm->setGraphicsMode(w, h);
+ ::AGS::g_vm->setGraphicsMode(w, h, depth);
}
return 0;
}
diff --git a/engines/ags/lib/allegro/gfx.h b/engines/ags/lib/allegro/gfx.h
index b42b8e4ff3..80c68620e5 100644
--- a/engines/ags/lib/allegro/gfx.h
+++ b/engines/ags/lib/allegro/gfx.h
@@ -176,7 +176,7 @@ namespace AGS3 {
AL_FUNC(void, set_color_conversion, (int mode));
AL_FUNC(int, get_color_conversion, ());
-AL_FUNC(int, set_gfx_mode, (int card, int w, int h, int v_w, int v_h));
+AL_FUNC(int, set_gfx_mode, (int card, int w, int h, int depth));
AL_FUNC(void, set_clip_rect, (BITMAP *bitmap, int x1, int y1, int x2, int y2));
AL_FUNC(void, get_clip_rect, (BITMAP *bitmap, int *x1, int *y1, int *x2, int *y2));
Commit: 259accebac45757b3a3e26c954cdd9e0f24943aa
https://github.com/scummvm/scummvm/commit/259accebac45757b3a3e26c954cdd9e0f24943aa
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-06-20T19:15:56-07:00
Commit Message:
AGS: Properly update palette in 8-bit paletted mode
Changed paths:
engines/ags/engine/gfx/ali_3d_scummvm.cpp
engines/ags/lib/allegro/color.cpp
diff --git a/engines/ags/engine/gfx/ali_3d_scummvm.cpp b/engines/ags/engine/gfx/ali_3d_scummvm.cpp
index 8325d98952..17edbce59a 100644
--- a/engines/ags/engine/gfx/ali_3d_scummvm.cpp
+++ b/engines/ags/engine/gfx/ali_3d_scummvm.cpp
@@ -249,13 +249,23 @@ int ScummVMRendererGraphicsDriver::GetCompatibleBitmapFormat(int color_depth) {
IDriverDependantBitmap *ScummVMRendererGraphicsDriver::CreateDDBFromBitmap(Bitmap *bitmap, bool hasAlpha, bool opaque) {
ALSoftwareBitmap *newBitmap = new ALSoftwareBitmap(bitmap, opaque, hasAlpha);
+ UpdateDDBFromBitmap(newBitmap, bitmap, hasAlpha);
return newBitmap;
}
void ScummVMRendererGraphicsDriver::UpdateDDBFromBitmap(IDriverDependantBitmap *bitmapToUpdate, Bitmap *bitmap, bool hasAlpha) {
- ALSoftwareBitmap *alSwBmp = (ALSoftwareBitmap *)bitmapToUpdate;
- alSwBmp->_bmp = bitmap;
- alSwBmp->_hasAlpha = hasAlpha;
+ ALSoftwareBitmap *target = (ALSoftwareBitmap *)bitmapToUpdate;
+ if (target->GetWidth() != bitmap->GetWidth() || target->GetHeight() != bitmap->GetHeight())
+ error("UpdateDDBFromBitmap: mismatched bitmap size");
+ const int color_depth = bitmap->GetColorDepth();
+ if (color_depth != target->GetColorDepth())
+ error("UpdateDDBFromBitmap: mismatched colour depths");
+
+ if (color_depth == 8) {
+ select_palette(_G(palette));
+
+ unselect_palette();
+ }
}
void ScummVMRendererGraphicsDriver::DestroyDDB(IDriverDependantBitmap *bitmap) {
diff --git a/engines/ags/lib/allegro/color.cpp b/engines/ags/lib/allegro/color.cpp
index 8520226044..1125fd78a2 100644
--- a/engines/ags/lib/allegro/color.cpp
+++ b/engines/ags/lib/allegro/color.cpp
@@ -48,15 +48,34 @@ void color::writeToFile(AGS::Shared::Stream *file) const {
file->WriteByte(filler);
}
+static void convertPalette(const PALETTE src, byte dest[PALETTE_SIZE]) {
+ const color *cSrc = (const color *)src;
+ for (int i = 0; i < PALETTE_COUNT; ++i, cSrc++, dest += 3) {
+ dest[0] = VGA_COLOR_TRANS(cSrc->r);
+ dest[1] = VGA_COLOR_TRANS(cSrc->g);
+ dest[2] = VGA_COLOR_TRANS(cSrc->b);
+ }
+}
+
+static void applyPalette() {
+ byte pal[PALETTE_SIZE];
+ convertPalette(_G(current_palette), pal);
+ g_system->getPaletteManager()->setPalette(pal, 0, PALETTE_COUNT);
+}
+
void set_palette(const PALETTE p) {
for (int idx = 0; idx < PAL_SIZE; ++idx)
_G(current_palette)[idx] = p[idx];
+
+ applyPalette();
}
void set_palette_range(const PALETTE p, int from, int to, int retracesync) {
for (int i = from; i <= to; ++i) {
_G(current_palette)[i] = p[i];
}
+
+ applyPalette();
}
int makecol15(int r, int g, int b) {
@@ -163,15 +182,15 @@ int makecol8(byte r, byte g, byte b) {
}
void get_color(int idx, RGB *p) {
- warning("TODO: get_color");
+ *p = _G(current_palette)[idx];
}
void get_palette(PALETTE p) {
- warning("TODO: get_palette");
+ *p = *_G(current_palette);
}
void get_palette_range(PALETTE p, int from, int to) {
- warning("TODO: get_palette_range");
+ Common::copy(&_G(current_palette)[from], &_G(current_palette)[to + 1], &p[from]);
}
void fade_interpolate(AL_CONST PALETTE source, AL_CONST PALETTE dest, PALETTE output, int pos, int from, int to) {
@@ -186,7 +205,7 @@ void select_palette(AL_CONST PALETTE p) {
_G(current_palette)[c] = p[c];
}
- // TODO: See if the remainder of Allegro's select_palette method is needed for AGS
+ applyPalette();
}
void unselect_palette(void) {
@@ -194,6 +213,8 @@ void unselect_palette(void) {
for (c = 0; c < PAL_SIZE; c++)
_G(current_palette)[c] = _G(prev_current_palette)[c];
+
+ applyPalette();
}
void set_blender_mode(BlenderMode m, int r, int g, int b, int a) {
More information about the Scummvm-git-logs
mailing list