GOB: Mark Adibou1 CD as 640x400 instead of 640x480

The game is mostly scaled from the 320x200 version and never makes use of the space beyond height 400, so we can get rid of it.
This commit is contained in:
Simon Delamarre 2023-08-17 06:51:51 +02:00
parent 0263447aa1
commit 2022f871a2
5 changed files with 20 additions and 3 deletions

View File

@ -67,7 +67,8 @@ enum Features {
kFeatures640x480 = 1 << 5,
kFeatures800x600 = 1 << 6,
kFeaturesTrueColor = 1 << 7,
kFeatures16Colors = 1 << 8
kFeatures16Colors = 1 << 8,
kFeatures640x400 = 1 << 9,
};
enum AdditionalGameFlags {

View File

@ -85,7 +85,7 @@
GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH)
},
kGameTypeAdibou1,
kFeaturesAdLib | kFeatures640x480,
kFeaturesAdLib | kFeatures640x400,
0, 0, 0
},
{
@ -100,7 +100,7 @@
GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH)
},
kGameTypeAdibou1,
kFeaturesAdLib | kFeatures640x480,
kFeaturesAdLib | kFeatures640x400,
0 ,0 , 0
},

View File

@ -213,6 +213,10 @@ bool GobEngine::isBATDemo() const {
return (_features & kFeaturesBATDemo) != 0;
}
bool GobEngine::is640x400() const {
return (_features & kFeatures640x400) != 0;
}
bool GobEngine::is640x480() const {
return (_features & kFeatures640x480) != 0;
}
@ -702,6 +706,10 @@ Common::Error GobEngine::initGraphics() {
_width = 640;
_height = 480;
_mode = 0x18;
} else if (is640x400()) {
_width = 640;
_height = 400;
_mode = 0x18;
} else {
_width = 320;
_height = 200;

View File

@ -210,6 +210,7 @@ public:
bool hasAdLib() const;
bool isSCNDemo() const;
bool isBATDemo() const;
bool is640x400() const;
bool is640x480() const;
bool is800x600() const;
bool is16Colors() const;

View File

@ -823,6 +823,13 @@ void Inter_v2::o2_initScreen() {
}
}
else if (_vm->getGameType() == kGameTypeAdibou1) {
if (_vm->is640x400() && width == 640 && height == 480) {
// Force height to 400: the game is mostly scaled from the 320x200 version and
// never makes use of the space beyond height 400, so we can get rid of it.
height = 400;
}
}
_vm->_global->_fakeVideoMode = videoMode;