[Scummvm-git-logs] scummvm master -> 0c92adc5f65d51b5604fad915284f5197813ed1e
neuromancer
noreply at scummvm.org
Tue Mar 28 18:46:32 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
0c92adc5f6 FREESCAPE: re-use loadGlobalObjects for different games
Commit: 0c92adc5f65d51b5604fad915284f5197813ed1e
https://github.com/scummvm/scummvm/commit/0c92adc5f65d51b5604fad915284f5197813ed1e
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-03-28T20:48:11+02:00
Commit Message:
FREESCAPE: re-use loadGlobalObjects for different games
Changed paths:
engines/freescape/freescape.h
engines/freescape/games/dark/dark.cpp
engines/freescape/games/dark/dos.cpp
engines/freescape/games/driller/amiga.cpp
engines/freescape/games/driller/atari.cpp
engines/freescape/games/driller/c64.cpp
engines/freescape/games/driller/cpc.cpp
engines/freescape/games/driller/dos.cpp
engines/freescape/games/driller/driller.cpp
engines/freescape/games/driller/zx.cpp
engines/freescape/loaders/8bitBinaryLoader.cpp
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index f8c7c95a376..ccb3af3942a 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -193,6 +193,7 @@ public:
void load8bitBinary(Common::SeekableReadStream *file, int offset, int ncolors);
Area *load8bitArea(Common::SeekableReadStream *file, uint16 ncolors);
Object *load8bitObject(Common::SeekableReadStream *file);
+ void loadGlobalObjects(Common::SeekableReadStream *file, int offset, int size);
void renderPixels8bitBinImage(Graphics::ManagedSurface *surface, int &i, int &j, uint8 pixels, int color);
void renderPixels8bitBinCGAImage(Graphics::ManagedSurface *surface, int &i, int &j, uint8 pixels, int color);
@@ -454,7 +455,6 @@ public:
Common::Error loadGameStreamExtended(Common::SeekableReadStream *stream) override;
private:
- void loadGlobalObjects(Common::SeekableReadStream *file, int offset);
bool drillDeployed(Area *area);
GeometricObject *_drillBase;
Math::Vector3d drillPosition();
@@ -537,7 +537,6 @@ public:
Common::Error loadGameStreamExtended(Common::SeekableReadStream *stream) override;
private:
- void loadGlobalObjects(Common::SeekableReadStream *file, int offset);
void addECDs(Area *area);
void addECD(Area *area, const Math::Vector3d position, int index);
void addWalls(Area *area);
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index b0d5a396340..1e17560ba1d 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -62,21 +62,6 @@ void DarkEngine::titleScreen() {
}
}
-void DarkEngine::loadGlobalObjects(Common::SeekableReadStream *file, int offset) {
- assert(!_areaMap.contains(255));
- ObjectMap *globalObjectsByID = new ObjectMap;
- file->seek(offset);
- for (int i = 0; i < 23; i++) {
- Object *gobj = load8bitObject(file);
- assert(gobj);
- assert(!globalObjectsByID->contains(gobj->getObjectID()));
- debugC(1, kFreescapeDebugParser, "Adding global object: %d", gobj->getObjectID());
- (*globalObjectsByID)[gobj->getObjectID()] = gobj;
- }
-
- _areaMap[255] = new Area(255, 0, globalObjectsByID, nullptr);
-}
-
void DarkEngine::addECDs(Area *area) {
if (!area->entranceWithID(255))
return;
diff --git a/engines/freescape/games/dark/dos.cpp b/engines/freescape/games/dark/dos.cpp
index b7b22563665..12881e46e46 100644
--- a/engines/freescape/games/dark/dos.cpp
+++ b/engines/freescape/games/dark/dos.cpp
@@ -44,7 +44,7 @@ void DarkEngine::loadAssetsDOSDemo() {
loadMessagesFixedSize(&file, 0x4525, 16, 27);
loadMessagesFixedSize(&file, 0x9959, 307, 5);
loadFonts(&file, 0xa598);
- loadGlobalObjects(&file, 0x3d04);
+ loadGlobalObjects(&file, 0x3d04, 23);
load8bitBinary(&file, 0xa700, 16);
_border = load8bitBinImage(&file, 0x210);
_border->setPalette((byte *)&kEGADefaultPaletteData, 0, 16);
@@ -81,7 +81,7 @@ void DarkEngine::loadAssetsDOSFullGame() {
loadFonts(&file, 0xa113);
loadMessagesFixedSize(&file, 0x4525, 16, 27);
- loadGlobalObjects(&file, 0x3d04);
+ loadGlobalObjects(&file, 0x3d04, 23);
load8bitBinary(&file, 0xa280, 16);
_border = load8bitBinImage(&file, 0x210);
_border->setPalette((byte *)&kEGADefaultPaletteData, 0, 16);
diff --git a/engines/freescape/games/driller/amiga.cpp b/engines/freescape/games/driller/amiga.cpp
index 28c1037ecc2..7402459aa18 100644
--- a/engines/freescape/games/driller/amiga.cpp
+++ b/engines/freescape/games/driller/amiga.cpp
@@ -44,7 +44,7 @@ void DrillerEngine::loadAssetsAmigaFullGame() {
loadFonts(&file, 0x8940);
loadMessagesFixedSize(&file, 0xc66e, 14, 20);
- loadGlobalObjects(&file, 0xbd62);
+ loadGlobalObjects(&file, 0xbd62, 8);
load8bitBinary(&file, 0x29c16, 16);
loadPalettes(&file, 0x297d4);
loadSoundsFx(&file, 0x30e80, 25);
@@ -69,7 +69,7 @@ void DrillerEngine::loadAssetsAmigaFullGame() {
loadFonts(&file, 0xa62);
loadMessagesFixedSize(&file, 0x499a, 14, 20);
- loadGlobalObjects(&file, 0x4098);
+ loadGlobalObjects(&file, 0x4098, 8);
load8bitBinary(&file, 0x21a3e, 16);
loadPalettes(&file, 0x215fc);
@@ -120,7 +120,7 @@ void DrillerEngine::loadAssetsAmigaDemo() {
loadFonts(&file, 0xa30);
loadMessagesFixedSize(&file, 0x3960, 14, 20);
- loadGlobalObjects(&file, 0x3716);
+ loadGlobalObjects(&file, 0x3716, 8);
file.close();
file.open("soundfx");
diff --git a/engines/freescape/games/driller/atari.cpp b/engines/freescape/games/driller/atari.cpp
index 6c2fe74a4ff..143920cb119 100644
--- a/engines/freescape/games/driller/atari.cpp
+++ b/engines/freescape/games/driller/atari.cpp
@@ -43,7 +43,7 @@ void DrillerEngine::loadAssetsAtariFullGame() {
loadFonts(&file, 0x8a32);
loadMessagesFixedSize(&file, 0xc5d8, 14, 20);
- loadGlobalObjects(&file, 0xbccc);
+ loadGlobalObjects(&file, 0xbccc, 8);
load8bitBinary(&file, 0x29b3c, 16);
loadPalettes(&file, 0x296fa);
loadSoundsFx(&file, 0x30da6, 25);
@@ -87,7 +87,7 @@ void DrillerEngine::loadAssetsAtariDemo() {
loadFonts(&file, 0x7bc);
loadMessagesFixedSize(&file, 0x3b90, 14, 20);
- loadGlobalObjects(&file, 0x3946);
+ loadGlobalObjects(&file, 0x3946, 8);
file.close();
file.open("soundfx");
diff --git a/engines/freescape/games/driller/c64.cpp b/engines/freescape/games/driller/c64.cpp
index 45c32204c1c..e52decdc5a7 100644
--- a/engines/freescape/games/driller/c64.cpp
+++ b/engines/freescape/games/driller/c64.cpp
@@ -38,13 +38,13 @@ void DrillerEngine::loadAssetsC64FullGame() {
loadMessagesFixedSize(&file, 0x167a, 14, 20);
//loadFonts(&file, 0xae54);
load8bitBinary(&file, 0x8e02, 4);
- loadGlobalObjects(&file, 0x1855);
+ loadGlobalObjects(&file, 0x1855, 8);
} else if (_targetName.hasPrefix("driller")) {
file.open("driller.c64.data");
loadMessagesFixedSize(&file, 0x167a - 0x400, 14, 20);
//loadFonts(&file, 0xae54);
load8bitBinary(&file, 0x8e02 - 0x400, 4);
- loadGlobalObjects(&file, 0x1855 - 0x400);
+ loadGlobalObjects(&file, 0x1855 - 0x400, 8);
} else
error("Unknown C64 release");
}
diff --git a/engines/freescape/games/driller/cpc.cpp b/engines/freescape/games/driller/cpc.cpp
index f441d8bc449..f9d95eef943 100644
--- a/engines/freescape/games/driller/cpc.cpp
+++ b/engines/freescape/games/driller/cpc.cpp
@@ -127,7 +127,7 @@ void DrillerEngine::loadAssetsCPCFullGame() {
loadMessagesFixedSize(&file, 0x214c, 14, 20);
loadFonts(&file, 0x5b69);
- loadGlobalObjects(&file, 0x1d07);
+ loadGlobalObjects(&file, 0x1d07, 8);
load8bitBinary(&file, 0x5ccb, 16);
}
diff --git a/engines/freescape/games/driller/dos.cpp b/engines/freescape/games/driller/dos.cpp
index cdd28d974c9..c96235196cf 100644
--- a/engines/freescape/games/driller/dos.cpp
+++ b/engines/freescape/games/driller/dos.cpp
@@ -286,7 +286,7 @@ void DrillerEngine::loadAssetsDOSFullGame() {
loadMessagesFixedSize(&file, 0x4135, 14, 20);
loadFonts(&file, 0x99dd);
- loadGlobalObjects(&file, 0x3b42);
+ loadGlobalObjects(&file, 0x3b42, 8);
load8bitBinary(&file, 0x9b40, 16);
_border = load8bitBinImage(&file, 0x210);
_border->setPalette((byte*)&kEGADefaultPaletteData, 0, 16);
@@ -311,7 +311,7 @@ void DrillerEngine::loadAssetsDOSFullGame() {
loadFonts(&file, 0x07a4a);
loadMessagesFixedSize(&file, 0x2585, 14, 20);
load8bitBinary(&file, 0x7bb0, 4);
- loadGlobalObjects(&file, 0x1fa2);
+ loadGlobalObjects(&file, 0x1fa2, 8);
_border = load8bitBinImage(&file, 0x210);
_border->setPalette((byte*)&kCGAPalettePinkBlueWhiteData, 0, 4);
} else
@@ -338,7 +338,7 @@ void DrillerEngine::loadAssetsDOSDemo() {
loadFonts(&file, 0x4eb0);
loadMessagesFixedSize(&file, 0x636, 14, 20);
load8bitBinary(&file, 0x55b0, 4);
- loadGlobalObjects(&file, 0x8c);
+ loadGlobalObjects(&file, 0x8c, 5);
_border = load8bitDemoImage(&file, 0x6220);
_border->setPalette((byte*)&kCGAPalettePinkBlueWhiteData, 0, 4);
diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 490912727d5..5144aa8ba11 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -186,25 +186,6 @@ void DrillerEngine::gotoArea(uint16 areaID, int entranceID) {
resetInput();
}
-void DrillerEngine::loadGlobalObjects(Common::SeekableReadStream *file, int offset) {
- assert(!_areaMap.contains(255));
- ObjectMap *globalObjectsByID = new ObjectMap;
- file->seek(offset);
- for (int i = 0; i < 8; i++) {
- if (isDOS() && isDemo()) // The DOS demo has a few missing objects
- if (i == 5)
- break;
-
- Object *gobj = load8bitObject(file);
- assert(gobj);
- assert(!globalObjectsByID->contains(gobj->getObjectID()));
- debugC(1, kFreescapeDebugParser, "Adding global object: %d", gobj->getObjectID());
- (*globalObjectsByID)[gobj->getObjectID()] = gobj;
- }
-
- _areaMap[255] = new Area(255, 0, globalObjectsByID, nullptr);
-}
-
void DrillerEngine::loadAssetsFullGame() {
FreescapeEngine::loadAssetsFullGame();
/*
diff --git a/engines/freescape/games/driller/zx.cpp b/engines/freescape/games/driller/zx.cpp
index 65e933b81dc..519832b5957 100644
--- a/engines/freescape/games/driller/zx.cpp
+++ b/engines/freescape/games/driller/zx.cpp
@@ -64,9 +64,9 @@ void DrillerEngine::loadAssetsZXFullGame() {
loadFonts(&file, 0x63f0);
if (_variant & GF_ZX_DISC)
- loadGlobalObjects(&file, 0x1d13);
+ loadGlobalObjects(&file, 0x1d13, 8);
else
- loadGlobalObjects(&file, 0x1c93);
+ loadGlobalObjects(&file, 0x1c93, 8);
if (_variant & GF_ZX_RETAIL)
load8bitBinary(&file, 0x642c, 4);
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index d9e1157be65..64fe016df02 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -801,4 +801,20 @@ void FreescapeEngine::loadMessagesVariableSize(Common::SeekableReadStream *file,
}
}
+void FreescapeEngine::loadGlobalObjects(Common::SeekableReadStream *file, int offset, int size) {
+ assert(!_areaMap.contains(255));
+ ObjectMap *globalObjectsByID = new ObjectMap;
+ file->seek(offset);
+ for (int i = 0; i < size; i++) {
+ Object *gobj = load8bitObject(file);
+ assert(gobj);
+ assert(!globalObjectsByID->contains(gobj->getObjectID()));
+ debugC(1, kFreescapeDebugParser, "Adding global object: %d", gobj->getObjectID());
+ (*globalObjectsByID)[gobj->getObjectID()] = gobj;
+ }
+
+ _areaMap[255] = new Area(255, 0, globalObjectsByID, nullptr);
+}
+
+
} // namespace Freescape
More information about the Scummvm-git-logs
mailing list