MM NES fixes:
o Fixed crash when in-game GUI was displayed o Support for save/load o Savegame version bumped svn-id: r17232
This commit is contained in:
parent
9a4bc8ce16
commit
a9c2e6ecbf
4 changed files with 17 additions and 4 deletions
|
@ -83,7 +83,8 @@ void NewGui::updateScaleFactor() {
|
||||||
kDefaultGUIHeight = 200
|
kDefaultGUIHeight = 200
|
||||||
};
|
};
|
||||||
|
|
||||||
_scaleFactor = MIN(_system->getOverlayWidth() / kDefaultGUIWidth, _system->getOverlayHeight() / kDefaultGUIHeight);
|
// NES has 256 pixels width which makes MIN() return 0 here.
|
||||||
|
_scaleFactor = MAX(MIN(_system->getOverlayWidth() / kDefaultGUIWidth, _system->getOverlayHeight() / kDefaultGUIHeight), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pick the font depending on the scale factor.
|
// Pick the font depending on the scale factor.
|
||||||
|
|
|
@ -272,7 +272,7 @@ void ScummEngine::initScreens(int b, int h) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_features & GF_NES) {
|
if ((_features & GF_NES) && (h != _screenHeight)) {
|
||||||
adj = 16;
|
adj = 16;
|
||||||
initVirtScreen(kUnkVirtScreen, 0, 0, _screenWidth, adj, false, false);
|
initVirtScreen(kUnkVirtScreen, 0, 0, _screenWidth, adj, false, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,7 +248,10 @@ bool ScummEngine::loadState(int slot, bool compat) {
|
||||||
// ever add options for using different 16-colour palettes.
|
// ever add options for using different 16-colour palettes.
|
||||||
if (_version == 1) {
|
if (_version == 1) {
|
||||||
if (_gameId == GID_MANIAC)
|
if (_gameId == GID_MANIAC)
|
||||||
setupV1ManiacPalette();
|
if (_features & GF_NES)
|
||||||
|
setupNESPalette();
|
||||||
|
else
|
||||||
|
setupV1ManiacPalette();
|
||||||
else
|
else
|
||||||
setupV1ZakPalette();
|
setupV1ZakPalette();
|
||||||
} else if (_features & GF_16COLOR) {
|
} else if (_features & GF_16COLOR) {
|
||||||
|
@ -296,6 +299,7 @@ bool ScummEngine::loadState(int slot, bool compat) {
|
||||||
|
|
||||||
// Restore the virtual screens and force a fade to black.
|
// Restore the virtual screens and force a fade to black.
|
||||||
initScreens(kMainVirtScreen, _screenHeight);
|
initScreens(kMainVirtScreen, _screenHeight);
|
||||||
|
|
||||||
VirtScreen *vs = &virtscr[kMainVirtScreen];
|
VirtScreen *vs = &virtscr[kMainVirtScreen];
|
||||||
memset(vs->getPixels(0, 0), 0, vs->pitch * vs->h);
|
memset(vs->getPixels(0, 0), 0, vs->pitch * vs->h);
|
||||||
vs->setDirtyRange(0, vs->h);
|
vs->setDirtyRange(0, vs->h);
|
||||||
|
@ -594,6 +598,8 @@ void ScummEngine::saveOrLoad(Serializer *s, uint32 savegameVersion) {
|
||||||
MKLINE(ScummEngine, _screenB, sleUint16, VER(8)),
|
MKLINE(ScummEngine, _screenB, sleUint16, VER(8)),
|
||||||
MKLINE(ScummEngine, _screenH, sleUint16, VER(8)),
|
MKLINE(ScummEngine, _screenH, sleUint16, VER(8)),
|
||||||
|
|
||||||
|
MKLINE(ScummEngine, _NESCostumeSet, sleUint16, VER(47)),
|
||||||
|
|
||||||
MK_OBSOLETE(ScummEngine, _cd_track, sleInt16, VER(9), VER(9)),
|
MK_OBSOLETE(ScummEngine, _cd_track, sleInt16, VER(9), VER(9)),
|
||||||
MK_OBSOLETE(ScummEngine, _cd_loops, sleInt16, VER(9), VER(9)),
|
MK_OBSOLETE(ScummEngine, _cd_loops, sleInt16, VER(9), VER(9)),
|
||||||
MK_OBSOLETE(ScummEngine, _cd_frame, sleInt16, VER(9), VER(9)),
|
MK_OBSOLETE(ScummEngine, _cd_frame, sleInt16, VER(9), VER(9)),
|
||||||
|
@ -746,6 +752,12 @@ void ScummEngine::saveOrLoad(Serializer *s, uint32 savegameVersion) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_features & GF_NES)
|
||||||
|
if (savegameVersion < VER(47))
|
||||||
|
NES_loadCostumeSet(_NESCostumeSet = 0);
|
||||||
|
else
|
||||||
|
NES_loadCostumeSet(_NESCostumeSet);
|
||||||
|
|
||||||
if (_heversion >= 71) {
|
if (_heversion >= 71) {
|
||||||
Wiz *wiz = &((ScummEngine_v70he *)this)->_wiz;
|
Wiz *wiz = &((ScummEngine_v70he *)this)->_wiz;
|
||||||
s->saveLoadArrayOf(wiz->_polygons, ARRAYSIZE(wiz->_polygons), sizeof(wiz->_polygons[0]), polygonEntries);
|
s->saveLoadArrayOf(wiz->_polygons, ARRAYSIZE(wiz->_polygons), sizeof(wiz->_polygons[0]), polygonEntries);
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace Scumm {
|
||||||
// Can be useful for other ports too :)
|
// Can be useful for other ports too :)
|
||||||
|
|
||||||
#define VER(x) x
|
#define VER(x) x
|
||||||
#define CURRENT_VER 46
|
#define CURRENT_VER 47
|
||||||
|
|
||||||
// To work around a warning in GCC 3.2 (and 3.1 ?) regarding non-POD types,
|
// To work around a warning in GCC 3.2 (and 3.1 ?) regarding non-POD types,
|
||||||
// we use a small trick: instead of 0 we use 42. Why? Well, it seems newer GCC
|
// we use a small trick: instead of 0 we use 42. Why? Well, it seems newer GCC
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue