From 38b5cf1efe0ab75c7100714fb886a704a4661fda Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 24 Oct 2012 22:49:32 +1100 Subject: HOPKINS: Created new SaveFileManager class to handle save file related code --- engines/hopkins/saveload.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 engines/hopkins/saveload.cpp (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp new file mode 100644 index 0000000000..ed4e3f1596 --- /dev/null +++ b/engines/hopkins/saveload.cpp @@ -0,0 +1,61 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/system.h" +#include "common/savefile.h" +#include "hopkins/saveload.h" +#include "hopkins/files.h" +#include "hopkins/globals.h" + +namespace Hopkins { + +void SaveLoadManager::setParent(HopkinsEngine *vm) { + _vm = vm; +} + +bool SaveLoadManager::bsave(const Common::String &file, const void *buf, size_t n) { + Common::OutSaveFile *f = g_system->getSavefileManager()->openForSaving(file); + + if (f) { + size_t bytesWritten = f->write(buf, n); + f->finalize(); + delete f; + + return bytesWritten == n; + } else + return false; +} + +// Save File +bool SaveLoadManager::SAUVE_FICHIER(const Common::String &file, const void *buf, size_t n) { + return bsave(file, buf, n); +} + +void SaveLoadManager::initSaves() { + Common::String dataFilename = "HISCORE.DAT"; + byte data[100]; + Common::fill(&data[0], &data[100], 0); + + SAUVE_FICHIER(dataFilename, data, 100); +} + +} // End of namespace Hopkins -- cgit v1.2.3 From 7441e0e8d78edd8cb8af051fd773b0f998bd9520 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 24 Oct 2012 23:20:26 +1100 Subject: HOPKINS: bugfixes to conversation code --- engines/hopkins/saveload.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index ed4e3f1596..1c29eca36f 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -58,4 +58,14 @@ void SaveLoadManager::initSaves() { SAUVE_FICHIER(dataFilename, data, 100); } +void SaveLoadManager::bload(const Common::String &file, byte *buf) { + Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(file); + if (f == NULL) + error("Error openinig file - %s", file.c_str()); + + int32 filesize = f->size(); + f->read(buf, filesize); + delete f; +} + } // End of namespace Hopkins -- cgit v1.2.3 From 1651bb07d9d3dedb643eb2ac2cb4070980f33ba5 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 27 Oct 2012 20:19:21 +1100 Subject: HOPKINS: Move Save/Load dialog code from menu.cpp to dialogs.cpp --- engines/hopkins/saveload.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 1c29eca36f..364a02ae67 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -22,12 +22,20 @@ #include "common/system.h" #include "common/savefile.h" +#include "graphics/surface.h" +#include "graphics/scaler.h" +#include "graphics/thumbnail.h" #include "hopkins/saveload.h" #include "hopkins/files.h" #include "hopkins/globals.h" +#include "hopkins/graphics.h" +#include "hopkins/hopkins.h" namespace Hopkins { +const char *SAVEGAME_STR = "HOPKINS"; +#define SAVEGAME_STR_SIZE 13 + void SaveLoadManager::setParent(HopkinsEngine *vm) { _vm = vm; } @@ -68,4 +76,65 @@ void SaveLoadManager::bload(const Common::String &file, byte *buf) { delete f; } +bool SaveLoadManager::readSavegameHeader(Common::InSaveFile *in, hopkinsSavegameHeader &header) { + char saveIdentBuffer[SAVEGAME_STR_SIZE + 1]; + header.thumbnail = NULL; + + // Validate the header Id + in->read(saveIdentBuffer, SAVEGAME_STR_SIZE + 1); + if (strncmp(saveIdentBuffer, SAVEGAME_STR, SAVEGAME_STR_SIZE)) + return false; + + header.version = in->readByte(); + if (header.version > HOPKINS_SAVEGAME_VERSION) + return false; + + // Read in the string + header.saveName.clear(); + char ch; + while ((ch = (char)in->readByte()) != '\0') header.saveName += ch; + + // Get the thumbnail + header.thumbnail = Graphics::loadThumbnail(*in); + if (!header.thumbnail) + return false; + + // Read in save date/time + header.saveYear = in->readSint16LE(); + header.saveMonth = in->readSint16LE(); + header.saveDay = in->readSint16LE(); + header.saveHour = in->readSint16LE(); + header.saveMinutes = in->readSint16LE(); + header.totalFrames = in->readUint32LE(); + + return true; +} + +void SaveLoadManager::writeSavegameHeader(Common::OutSaveFile *out, hopkinsSavegameHeader &header) { + // Write out a savegame header + out->write(SAVEGAME_STR, SAVEGAME_STR_SIZE + 1); + + out->writeByte(HOPKINS_SAVEGAME_VERSION); + + // Write savegame name + out->write(header.saveName.c_str(), header.saveName.size() + 1); + + // Create a thumbnail and save it + Graphics::Surface *thumb = new Graphics::Surface(); +// ::createThumbnail(thumb, _vm->_graphicsManager.VESA_SCREEN, SCREEN_WIDTH, SCREEN_HEIGHT, NULL); + Graphics::saveThumbnail(*out, *thumb); + thumb->free(); + delete thumb; + + // Write out the save date/time + TimeDate td; + g_system->getTimeAndDate(td); + out->writeSint16LE(td.tm_year + 1900); + out->writeSint16LE(td.tm_mon + 1); + out->writeSint16LE(td.tm_mday); + out->writeSint16LE(td.tm_hour); + out->writeSint16LE(td.tm_min); + out->writeUint32LE(_vm->_eventsManager._gameCounter); +} + } // End of namespace Hopkins -- cgit v1.2.3 From ec0a33b9493e88a759870c9c998b1e32660dcfbb Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 27 Oct 2012 22:16:54 +1100 Subject: HOPKINS: Beginnings of save/load implementation --- engines/hopkins/saveload.cpp | 98 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 364a02ae67..427e2d9fce 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -121,7 +121,7 @@ void SaveLoadManager::writeSavegameHeader(Common::OutSaveFile *out, hopkinsSaveg // Create a thumbnail and save it Graphics::Surface *thumb = new Graphics::Surface(); -// ::createThumbnail(thumb, _vm->_graphicsManager.VESA_SCREEN, SCREEN_WIDTH, SCREEN_HEIGHT, NULL); + createThumbnail(thumb); Graphics::saveThumbnail(*out, *thumb); thumb->free(); delete thumb; @@ -137,4 +137,100 @@ void SaveLoadManager::writeSavegameHeader(Common::OutSaveFile *out, hopkinsSaveg out->writeUint32LE(_vm->_eventsManager._gameCounter); } +Common::Error SaveLoadManager::save(int slot, const Common::String &saveName) { + // Try and create the save file + Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving( + _vm->generateSaveName(slot)); + if (!saveFile) + return Common::kCreatingFileFailed; + + // Set up the serializer + Common::Serializer serializer(NULL, saveFile); + + // Write out the savegame header + hopkinsSavegameHeader header; + header.saveName = saveName; + header.version = HOPKINS_SAVEGAME_VERSION; + writeSavegameHeader(saveFile, header); + + // Write out the savegame data + syncSavegameData(serializer); + + // Save file complete + saveFile->finalize(); + delete saveFile; + + return Common::kNoError; +} + +Common::Error SaveLoadManager::restore(int slot) { + // Try and open the save file for reading + Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading( + _vm->generateSaveName(slot)); + if (!saveFile) + return Common::kReadingFailed; + + // Set up the serializer + Common::Serializer serializer(saveFile, NULL); + + // Read in the savegame header + hopkinsSavegameHeader header; + readSavegameHeader(saveFile, header); + if (header.thumbnail) + header.thumbnail->free(); + delete header.thumbnail; + + // Read in the savegame data + syncSavegameData(serializer); + + // Loading save file complete + delete saveFile; + + return Common::kNoError; +} + +bool SaveLoadManager::readSavegameHeader(int slot, hopkinsSavegameHeader &header) { + // Try and open the save file for reading + Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading( + g_vm->generateSaveName(slot)); + if (!saveFile) + return false; + + bool result = readSavegameHeader(saveFile, header); + delete saveFile; + return result; +} + +#define REDUCE_AMOUNT 80 + +void SaveLoadManager::createThumbnail(Graphics::Surface *s) { + int w = _vm->_graphicsManager.Reel_Reduc(SCREEN_WIDTH, REDUCE_AMOUNT); + int h = _vm->_graphicsManager.Reel_Reduc(SCREEN_HEIGHT - 40, REDUCE_AMOUNT); + + s->create(w, h, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); + + _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager.VESA_BUFFER, (byte *)s->pixels, + _vm->_eventsManager.start_x, 20, SCREEN_WIDTH, SCREEN_HEIGHT - 40, 80); + _vm->_graphicsManager.INIT_TABLE(45, 80, _vm->_graphicsManager.Palette); + _vm->_graphicsManager.Trans_bloc2((byte *)s->pixels, _vm->_graphicsManager.TABLE_COUL, 11136); +} + +void SaveLoadManager::syncSavegameData(Common::Serializer &s) { + s.syncBytes(&_vm->_globals.SAUVEGARDE->data[0], 0x802); + syncSauvegarde1(s, _vm->_globals.SAUVEGARDE->field360); + syncSauvegarde1(s, _vm->_globals.SAUVEGARDE->field370); + syncSauvegarde1(s, _vm->_globals.SAUVEGARDE->field380); + + for (int i = 0; i < 35; ++i) + s.syncAsSint16LE(_vm->_globals.SAUVEGARDE->inventory[i]); +} + +void SaveLoadManager::syncSauvegarde1(Common::Serializer &s, Sauvegarde1 &item) { + s.syncAsSint16LE(item.field0); + s.syncAsSint16LE(item.field1); + s.syncAsSint16LE(item.field2); + s.syncAsSint16LE(item.field3); + s.syncAsSint16LE(item.field4); +} + } // End of namespace Hopkins -- cgit v1.2.3 From d7277c3a307a24fb557cfe412d60a0a5cd723785 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 28 Oct 2012 10:45:54 +1100 Subject: HOPKINS: Disable greyscaling of savegame thumbnails --- engines/hopkins/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 427e2d9fce..04cb2b3169 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -212,7 +212,7 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager.VESA_BUFFER, (byte *)s->pixels, _vm->_eventsManager.start_x, 20, SCREEN_WIDTH, SCREEN_HEIGHT - 40, 80); _vm->_graphicsManager.INIT_TABLE(45, 80, _vm->_graphicsManager.Palette); - _vm->_graphicsManager.Trans_bloc2((byte *)s->pixels, _vm->_graphicsManager.TABLE_COUL, 11136); +// _vm->_graphicsManager.Trans_bloc2((byte *)s->pixels, _vm->_graphicsManager.TABLE_COUL, 11136); } void SaveLoadManager::syncSavegameData(Common::Serializer &s) { -- cgit v1.2.3 From 0930151e21b8fadb98569c17dee4615007618772 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 28 Oct 2012 11:01:30 +1100 Subject: HOPKINS: Implemented save restore functionality --- engines/hopkins/saveload.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 04cb2b3169..023257ede0 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -186,6 +186,16 @@ Common::Error SaveLoadManager::restore(int slot) { // Loading save file complete delete saveFile; + // Unpack the inventory + for (int i = 0; i < 35; ++i) + _vm->_globals.INVENTAIRE[i] = _vm->_globals.SAUVEGARDE->inventory[i]; + + // Set variables from loaded data as necessary + _vm->_globals.SAUVEGARDE->data[svField10] = slot; + _vm->_globals.SORTIE = _vm->_globals.SAUVEGARDE->data[svField5]; + _vm->_globals.SAUVEGARDE->data[svField6] = 0; + _vm->_globals.ECRAN = 0; + return Common::kNoError; } -- cgit v1.2.3 From 367f0aac7ed8c205deb6294ceb8b2367118fbc04 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 28 Oct 2012 15:46:52 +1100 Subject: HOPKINS: Remove duplicate GOACTION variable. This fixes arriving at destinations from the map view. --- engines/hopkins/saveload.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 023257ede0..cd7c32c345 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -138,7 +138,15 @@ void SaveLoadManager::writeSavegameHeader(Common::OutSaveFile *out, hopkinsSaveg } Common::Error SaveLoadManager::save(int slot, const Common::String &saveName) { - // Try and create the save file + /* Pack any necessary data into the savegame data structure */ + // Set the selected slot number + _vm->_globals.SAUVEGARDE->data[svField10] = slot; + + // Set up the inventory + for (int i = 0; i < 35; ++i) + _vm->_globals.SAUVEGARDE->inventory[i] = _vm->_globals.INVENTAIRE[i]; + + /* Create the savegame */ Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving( _vm->generateSaveName(slot)); if (!saveFile) -- cgit v1.2.3 From d52ae2f47be379172ba63810d8c83cd33585ffe6 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 24 Nov 2012 22:25:19 +1100 Subject: HOPKINS: Clean-up of CHANGE_TETE to fix switching characters --- engines/hopkins/saveload.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index cd7c32c345..958737d773 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -235,19 +235,19 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { void SaveLoadManager::syncSavegameData(Common::Serializer &s) { s.syncBytes(&_vm->_globals.SAUVEGARDE->data[0], 0x802); - syncSauvegarde1(s, _vm->_globals.SAUVEGARDE->field360); - syncSauvegarde1(s, _vm->_globals.SAUVEGARDE->field370); - syncSauvegarde1(s, _vm->_globals.SAUVEGARDE->field380); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->field360); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->field370); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->field380); for (int i = 0; i < 35; ++i) s.syncAsSint16LE(_vm->_globals.SAUVEGARDE->inventory[i]); } -void SaveLoadManager::syncSauvegarde1(Common::Serializer &s, Sauvegarde1 &item) { - s.syncAsSint16LE(item.field0); - s.syncAsSint16LE(item.field1); +void SaveLoadManager::syncCharacterLocation(Common::Serializer &s, CharacterLocation &item) { + s.syncAsSint16LE(item.xp); + s.syncAsSint16LE(item.yp); s.syncAsSint16LE(item.field2); - s.syncAsSint16LE(item.field3); + s.syncAsSint16LE(item.location); s.syncAsSint16LE(item.field4); } -- cgit v1.2.3 From 9f9bf34ffd112893ea62b0cf0905f8109d3ef5a4 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 25 Nov 2012 20:56:47 +1100 Subject: HOPKINS: Renamed CharcaterInfo fields of SAUVEGARDE --- engines/hopkins/saveload.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 958737d773..47fc140290 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -235,9 +235,9 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { void SaveLoadManager::syncSavegameData(Common::Serializer &s) { s.syncBytes(&_vm->_globals.SAUVEGARDE->data[0], 0x802); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->field360); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->field370); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->field380); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->cloneHopkins); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->realHopkins); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->samantha); for (int i = 0; i < 35; ++i) s.syncAsSint16LE(_vm->_globals.SAUVEGARDE->inventory[i]); -- cgit v1.2.3 From b230dff1e9631cd61775685a9676ec5ab04ff19e Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Nov 2012 23:15:47 +1100 Subject: HOPKINS: Fix savegame thumbnails --- engines/hopkins/saveload.cpp | 67 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 4 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 47fc140290..0abd519a81 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -225,12 +225,30 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { int w = _vm->_graphicsManager.Reel_Reduc(SCREEN_WIDTH, REDUCE_AMOUNT); int h = _vm->_graphicsManager.Reel_Reduc(SCREEN_HEIGHT - 40, REDUCE_AMOUNT); - s->create(w, h, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); + Graphics::Surface thumb8; + thumb8.create(w, h, Graphics::PixelFormat::createFormatCLUT8()); - _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager.VESA_BUFFER, (byte *)s->pixels, + _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager.VESA_BUFFER, (byte *)thumb8.pixels, _vm->_eventsManager.start_x, 20, SCREEN_WIDTH, SCREEN_HEIGHT - 40, 80); - _vm->_graphicsManager.INIT_TABLE(45, 80, _vm->_graphicsManager.Palette); -// _vm->_graphicsManager.Trans_bloc2((byte *)s->pixels, _vm->_graphicsManager.TABLE_COUL, 11136); + + // Convert the 8-bit pixel to 16 bit surface + s->create(w, h, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); + + const byte *srcP = (const byte *)thumb8.pixels; + uint16 *destP = (uint16 *)s->pixels; + + for (int yp = 0; yp < h; ++yp) { + // Copy over the line, using the source pixels as lookups into the pixels palette + const byte *lineSrcP = srcP; + uint16 *lineDestP = destP; + + for (int xp = 0; xp < w; ++xp) + *lineDestP++ = *(uint16 *)&_vm->_graphicsManager.PAL_PIXELS[*lineSrcP++ * 2]; + + // Move to the start of the next line + srcP += w; + destP += w; + } } void SaveLoadManager::syncSavegameData(Common::Serializer &s) { @@ -251,4 +269,45 @@ void SaveLoadManager::syncCharacterLocation(Common::Serializer &s, CharacterLoca s.syncAsSint16LE(item.field4); } +void SaveLoadManager::convertThumb16To8(Graphics::Surface *thumb16, Graphics::Surface *thumb8) { + thumb8->create(thumb16->w, thumb16->h, Graphics::PixelFormat::createFormatCLUT8()); + Graphics::PixelFormat pixelFormat16(2, 5, 6, 5, 0, 11, 5, 0, 0); + + uint16 palette[PALETTE_SIZE]; + for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) + palette[palIndex] = READ_LE_UINT16(&_vm->_graphicsManager.PAL_PIXELS[palIndex * 2]); + + const uint16 *srcP = (const uint16 *)thumb16->pixels; + byte *destP = (byte *)thumb8->pixels; + + for (int yp = 0; yp < thumb16->h; ++yp) { + const uint16 *lineSrcP = srcP; + byte *lineDestP = destP; + + for (int xp = 0; xp < thumb16->w; ++xp) { + byte r, g, b; + pixelFormat16.colorToRGB(*lineSrcP++, r, g, b); + + // Scan the palette for the closest match + int difference = 99999, foundIndex = 0; + for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) { + byte rCurrent, gCurrent, bCurrent; + pixelFormat16.colorToRGB(palette[palIndex], rCurrent, gCurrent, bCurrent); + + int diff = ABS((int)r - (int)rCurrent) + ABS((int)g - (int)gCurrent) + ABS((int)b - (int)bCurrent); + if (diff < difference) { + difference = diff; + foundIndex = palIndex; + } + } + + *lineDestP++ = foundIndex; + } + + // Move to the start of the next line + srcP += thumb16->w; + destP += thumb16->w; + } +} + } // End of namespace Hopkins -- cgit v1.2.3 From a8c7f7025186b0c4615fc589c708b1ce88cc7713 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 8 Dec 2012 22:45:11 +1100 Subject: HOPKINS: Apply second memory leak patch --- engines/hopkins/saveload.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 0abd519a81..a7e36ebbca 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -249,6 +249,7 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { srcP += w; destP += w; } + thumb8.free(); } void SaveLoadManager::syncSavegameData(Common::Serializer &s) { -- cgit v1.2.3 From 299fbfc7c7558cd8275b86ef746ba73ea5ecbee2 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 11 Dec 2012 01:53:50 +0100 Subject: HOPKINS: Start renaming EventsManager functions --- engines/hopkins/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index a7e36ebbca..5eab0c05bf 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -229,7 +229,7 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { thumb8.create(w, h, Graphics::PixelFormat::createFormatCLUT8()); _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager.VESA_BUFFER, (byte *)thumb8.pixels, - _vm->_eventsManager.start_x, 20, SCREEN_WIDTH, SCREEN_HEIGHT - 40, 80); + _vm->_eventsManager._startPos.x, 20, SCREEN_WIDTH, SCREEN_HEIGHT - 40, 80); // Convert the 8-bit pixel to 16 bit surface s->create(w, h, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); -- cgit v1.2.3 From 95025312a7c3b184fef3818ece1f1d55b7fb19d1 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 14 Dec 2012 01:49:22 +0100 Subject: HOPKINS: Janitorial - Remove trailing space and double semi columns --- engines/hopkins/saveload.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 5eab0c05bf..a7771cd97d 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -49,7 +49,7 @@ bool SaveLoadManager::bsave(const Common::String &file, const void *buf, size_t delete f; return bytesWritten == n; - } else + } else return false; } @@ -62,7 +62,7 @@ void SaveLoadManager::initSaves() { Common::String dataFilename = "HISCORE.DAT"; byte data[100]; Common::fill(&data[0], &data[100], 0); - + SAUVE_FICHIER(dataFilename, data, 100); } @@ -195,7 +195,7 @@ Common::Error SaveLoadManager::restore(int slot) { delete saveFile; // Unpack the inventory - for (int i = 0; i < 35; ++i) + for (int i = 0; i < 35; ++i) _vm->_globals.INVENTAIRE[i] = _vm->_globals.SAUVEGARDE->inventory[i]; // Set variables from loaded data as necessary @@ -223,16 +223,16 @@ bool SaveLoadManager::readSavegameHeader(int slot, hopkinsSavegameHeader &header void SaveLoadManager::createThumbnail(Graphics::Surface *s) { int w = _vm->_graphicsManager.Reel_Reduc(SCREEN_WIDTH, REDUCE_AMOUNT); - int h = _vm->_graphicsManager.Reel_Reduc(SCREEN_HEIGHT - 40, REDUCE_AMOUNT); + int h = _vm->_graphicsManager.Reel_Reduc(SCREEN_HEIGHT - 40, REDUCE_AMOUNT); Graphics::Surface thumb8; thumb8.create(w, h, Graphics::PixelFormat::createFormatCLUT8()); - _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager.VESA_BUFFER, (byte *)thumb8.pixels, + _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager.VESA_BUFFER, (byte *)thumb8.pixels, _vm->_eventsManager._startPos.x, 20, SCREEN_WIDTH, SCREEN_HEIGHT - 40, 80); // Convert the 8-bit pixel to 16 bit surface - s->create(w, h, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); + s->create(w, h, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); const byte *srcP = (const byte *)thumb8.pixels; uint16 *destP = (uint16 *)s->pixels; @@ -294,7 +294,7 @@ void SaveLoadManager::convertThumb16To8(Graphics::Surface *thumb16, Graphics::Su for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) { byte rCurrent, gCurrent, bCurrent; pixelFormat16.colorToRGB(palette[palIndex], rCurrent, gCurrent, bCurrent); - + int diff = ABS((int)r - (int)rCurrent) + ABS((int)g - (int)gCurrent) + ABS((int)b - (int)bCurrent); if (diff < difference) { difference = diff; -- cgit v1.2.3 From d7d8c19dae1a8ca586851892da406a3b4025f4c8 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 15 Dec 2012 22:46:09 +0100 Subject: HOPKINS: Merge two zoom in and out functions --- engines/hopkins/saveload.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index a7771cd97d..4b08f18f67 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -222,8 +222,8 @@ bool SaveLoadManager::readSavegameHeader(int slot, hopkinsSavegameHeader &header #define REDUCE_AMOUNT 80 void SaveLoadManager::createThumbnail(Graphics::Surface *s) { - int w = _vm->_graphicsManager.Reel_Reduc(SCREEN_WIDTH, REDUCE_AMOUNT); - int h = _vm->_graphicsManager.Reel_Reduc(SCREEN_HEIGHT - 40, REDUCE_AMOUNT); + int w = _vm->_graphicsManager.zoomOut(SCREEN_WIDTH, REDUCE_AMOUNT); + int h = _vm->_graphicsManager.zoomOut(SCREEN_HEIGHT - 40, REDUCE_AMOUNT); Graphics::Surface thumb8; thumb8.create(w, h, Graphics::PixelFormat::createFormatCLUT8()); -- cgit v1.2.3 From 38437c4efeae05a093adbcc23f21bbe109658a07 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 16 Dec 2012 02:11:36 +0100 Subject: HOPKINS: Some more renaming --- engines/hopkins/saveload.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 4b08f18f67..f56706a44e 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -263,10 +263,10 @@ void SaveLoadManager::syncSavegameData(Common::Serializer &s) { } void SaveLoadManager::syncCharacterLocation(Common::Serializer &s, CharacterLocation &item) { - s.syncAsSint16LE(item.xp); - s.syncAsSint16LE(item.yp); + s.syncAsSint16LE(item._pos.x); + s.syncAsSint16LE(item._pos.y); s.syncAsSint16LE(item.field2); - s.syncAsSint16LE(item.location); + s.syncAsSint16LE(item._location); s.syncAsSint16LE(item.field4); } -- cgit v1.2.3 From 385d097167a6aaa0a2c1edc0e23c4b55cbd41230 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 16 Dec 2012 14:22:24 +0100 Subject: HOPKINS: Some more renaming --- engines/hopkins/saveload.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index f56706a44e..18cb26e002 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -144,7 +144,7 @@ Common::Error SaveLoadManager::save(int slot, const Common::String &saveName) { // Set up the inventory for (int i = 0; i < 35; ++i) - _vm->_globals.SAUVEGARDE->inventory[i] = _vm->_globals.INVENTAIRE[i]; + _vm->_globals.SAUVEGARDE->inventory[i] = _vm->_globals._inventory[i]; /* Create the savegame */ Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving( @@ -196,7 +196,7 @@ Common::Error SaveLoadManager::restore(int slot) { // Unpack the inventory for (int i = 0; i < 35; ++i) - _vm->_globals.INVENTAIRE[i] = _vm->_globals.SAUVEGARDE->inventory[i]; + _vm->_globals._inventory[i] = _vm->_globals.SAUVEGARDE->inventory[i]; // Set variables from loaded data as necessary _vm->_globals.SAUVEGARDE->data[svField10] = slot; -- cgit v1.2.3 From e99d5b320a3e2737d0bb6aa9d4c401b2c3116beb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 17 Dec 2012 00:16:49 +0100 Subject: HOPKINS: Renaming of members of Globals and ObjectsManager --- engines/hopkins/saveload.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 18cb26e002..75c69cc87f 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -144,7 +144,7 @@ Common::Error SaveLoadManager::save(int slot, const Common::String &saveName) { // Set up the inventory for (int i = 0; i < 35; ++i) - _vm->_globals.SAUVEGARDE->inventory[i] = _vm->_globals._inventory[i]; + _vm->_globals.SAUVEGARDE->_inventory[i] = _vm->_globals._inventory[i]; /* Create the savegame */ Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving( @@ -196,7 +196,7 @@ Common::Error SaveLoadManager::restore(int slot) { // Unpack the inventory for (int i = 0; i < 35; ++i) - _vm->_globals._inventory[i] = _vm->_globals.SAUVEGARDE->inventory[i]; + _vm->_globals._inventory[i] = _vm->_globals.SAUVEGARDE->_inventory[i]; // Set variables from loaded data as necessary _vm->_globals.SAUVEGARDE->data[svField10] = slot; @@ -254,12 +254,12 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { void SaveLoadManager::syncSavegameData(Common::Serializer &s) { s.syncBytes(&_vm->_globals.SAUVEGARDE->data[0], 0x802); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->cloneHopkins); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->realHopkins); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->samantha); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_cloneHopkins); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_realHopkins); + syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_samantha); for (int i = 0; i < 35; ++i) - s.syncAsSint16LE(_vm->_globals.SAUVEGARDE->inventory[i]); + s.syncAsSint16LE(_vm->_globals.SAUVEGARDE->_inventory[i]); } void SaveLoadManager::syncCharacterLocation(Common::Serializer &s, CharacterLocation &item) { -- cgit v1.2.3 From c1aafc9b47f21608c19a686f4eeab243cea036fe Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 19 Dec 2012 02:15:32 +0100 Subject: HOPKINS: Rename methods in ObjectsManager, Globals and GraphicsManager --- engines/hopkins/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 75c69cc87f..66afa9fcdf 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -228,7 +228,7 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { Graphics::Surface thumb8; thumb8.create(w, h, Graphics::PixelFormat::createFormatCLUT8()); - _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager.VESA_BUFFER, (byte *)thumb8.pixels, + _vm->_graphicsManager.Reduc_Ecran(_vm->_graphicsManager._vesaBuffer, (byte *)thumb8.pixels, _vm->_eventsManager._startPos.x, 20, SCREEN_WIDTH, SCREEN_HEIGHT - 40, 80); // Convert the 8-bit pixel to 16 bit surface -- cgit v1.2.3 From 687b7f97df666c392af6f0f4ff3eca7832b1b313 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 20 Dec 2012 00:30:01 +0100 Subject: HOPKINS: Remane functions and variables from Globals --- engines/hopkins/saveload.cpp | 52 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 66afa9fcdf..1510e8e248 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -40,7 +40,7 @@ void SaveLoadManager::setParent(HopkinsEngine *vm) { _vm = vm; } -bool SaveLoadManager::bsave(const Common::String &file, const void *buf, size_t n) { +bool SaveLoadManager::save(const Common::String &file, const void *buf, size_t n) { Common::OutSaveFile *f = g_system->getSavefileManager()->openForSaving(file); if (f) { @@ -54,8 +54,8 @@ bool SaveLoadManager::bsave(const Common::String &file, const void *buf, size_t } // Save File -bool SaveLoadManager::SAUVE_FICHIER(const Common::String &file, const void *buf, size_t n) { - return bsave(file, buf, n); +bool SaveLoadManager::saveFile(const Common::String &file, const void *buf, size_t n) { + return save(file, buf, n); } void SaveLoadManager::initSaves() { @@ -63,10 +63,10 @@ void SaveLoadManager::initSaves() { byte data[100]; Common::fill(&data[0], &data[100], 0); - SAUVE_FICHIER(dataFilename, data, 100); + saveFile(dataFilename, data, 100); } -void SaveLoadManager::bload(const Common::String &file, byte *buf) { +void SaveLoadManager::load(const Common::String &file, byte *buf) { Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(file); if (f == NULL) error("Error openinig file - %s", file.c_str()); @@ -78,34 +78,34 @@ void SaveLoadManager::bload(const Common::String &file, byte *buf) { bool SaveLoadManager::readSavegameHeader(Common::InSaveFile *in, hopkinsSavegameHeader &header) { char saveIdentBuffer[SAVEGAME_STR_SIZE + 1]; - header.thumbnail = NULL; + header._thumbnail = NULL; // Validate the header Id in->read(saveIdentBuffer, SAVEGAME_STR_SIZE + 1); if (strncmp(saveIdentBuffer, SAVEGAME_STR, SAVEGAME_STR_SIZE)) return false; - header.version = in->readByte(); - if (header.version > HOPKINS_SAVEGAME_VERSION) + header._version = in->readByte(); + if (header._version > HOPKINS_SAVEGAME_VERSION) return false; // Read in the string - header.saveName.clear(); + header._saveName.clear(); char ch; - while ((ch = (char)in->readByte()) != '\0') header.saveName += ch; + while ((ch = (char)in->readByte()) != '\0') header._saveName += ch; // Get the thumbnail - header.thumbnail = Graphics::loadThumbnail(*in); - if (!header.thumbnail) + header._thumbnail = Graphics::loadThumbnail(*in); + if (!header._thumbnail) return false; // Read in save date/time - header.saveYear = in->readSint16LE(); - header.saveMonth = in->readSint16LE(); - header.saveDay = in->readSint16LE(); - header.saveHour = in->readSint16LE(); - header.saveMinutes = in->readSint16LE(); - header.totalFrames = in->readUint32LE(); + header._year = in->readSint16LE(); + header._month = in->readSint16LE(); + header._day = in->readSint16LE(); + header._hour = in->readSint16LE(); + header._minute = in->readSint16LE(); + header._totalFrames = in->readUint32LE(); return true; } @@ -117,7 +117,7 @@ void SaveLoadManager::writeSavegameHeader(Common::OutSaveFile *out, hopkinsSaveg out->writeByte(HOPKINS_SAVEGAME_VERSION); // Write savegame name - out->write(header.saveName.c_str(), header.saveName.size() + 1); + out->write(header._saveName.c_str(), header._saveName.size() + 1); // Create a thumbnail and save it Graphics::Surface *thumb = new Graphics::Surface(); @@ -137,7 +137,7 @@ void SaveLoadManager::writeSavegameHeader(Common::OutSaveFile *out, hopkinsSaveg out->writeUint32LE(_vm->_eventsManager._gameCounter); } -Common::Error SaveLoadManager::save(int slot, const Common::String &saveName) { +Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName) { /* Pack any necessary data into the savegame data structure */ // Set the selected slot number _vm->_globals.SAUVEGARDE->data[svField10] = slot; @@ -157,8 +157,8 @@ Common::Error SaveLoadManager::save(int slot, const Common::String &saveName) { // Write out the savegame header hopkinsSavegameHeader header; - header.saveName = saveName; - header.version = HOPKINS_SAVEGAME_VERSION; + header._saveName = saveName; + header._version = HOPKINS_SAVEGAME_VERSION; writeSavegameHeader(saveFile, header); // Write out the savegame data @@ -171,7 +171,7 @@ Common::Error SaveLoadManager::save(int slot, const Common::String &saveName) { return Common::kNoError; } -Common::Error SaveLoadManager::restore(int slot) { +Common::Error SaveLoadManager::loadGame(int slot) { // Try and open the save file for reading Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading( _vm->generateSaveName(slot)); @@ -184,9 +184,9 @@ Common::Error SaveLoadManager::restore(int slot) { // Read in the savegame header hopkinsSavegameHeader header; readSavegameHeader(saveFile, header); - if (header.thumbnail) - header.thumbnail->free(); - delete header.thumbnail; + if (header._thumbnail) + header._thumbnail->free(); + delete header._thumbnail; // Read in the savegame data syncSavegameData(serializer); -- cgit v1.2.3 From d80790a8d848a69acc6809885a6d9663012cae05 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 21 Dec 2012 08:12:02 +0100 Subject: HOPKINS: Remove remaining hexa values --- engines/hopkins/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 1510e8e248..0b95f11e5a 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -253,7 +253,7 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { } void SaveLoadManager::syncSavegameData(Common::Serializer &s) { - s.syncBytes(&_vm->_globals.SAUVEGARDE->data[0], 0x802); + s.syncBytes(&_vm->_globals.SAUVEGARDE->data[0], 2050); syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_cloneHopkins); syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_realHopkins); syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_samantha); -- cgit v1.2.3 From 4ab60c43c0834d568b7c21ed9b45a2beab9e5815 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 24 Dec 2012 13:32:39 +0100 Subject: HOPKINS: Refactor handleGoto and handleIf, some renaming --- engines/hopkins/saveload.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 0b95f11e5a..dafde79dc5 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -140,11 +140,11 @@ void SaveLoadManager::writeSavegameHeader(Common::OutSaveFile *out, hopkinsSaveg Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName) { /* Pack any necessary data into the savegame data structure */ // Set the selected slot number - _vm->_globals.SAUVEGARDE->data[svField10] = slot; + _vm->_globals._saveData->data[svField10] = slot; // Set up the inventory for (int i = 0; i < 35; ++i) - _vm->_globals.SAUVEGARDE->_inventory[i] = _vm->_globals._inventory[i]; + _vm->_globals._saveData->_inventory[i] = _vm->_globals._inventory[i]; /* Create the savegame */ Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving( @@ -196,13 +196,13 @@ Common::Error SaveLoadManager::loadGame(int slot) { // Unpack the inventory for (int i = 0; i < 35; ++i) - _vm->_globals._inventory[i] = _vm->_globals.SAUVEGARDE->_inventory[i]; + _vm->_globals._inventory[i] = _vm->_globals._saveData->_inventory[i]; // Set variables from loaded data as necessary - _vm->_globals.SAUVEGARDE->data[svField10] = slot; - _vm->_globals.SORTIE = _vm->_globals.SAUVEGARDE->data[svField5]; - _vm->_globals.SAUVEGARDE->data[svField6] = 0; - _vm->_globals.ECRAN = 0; + _vm->_globals._saveData->data[svField10] = slot; + _vm->_globals._exitId = _vm->_globals._saveData->data[svField5]; + _vm->_globals._saveData->data[svField6] = 0; + _vm->_globals._screenId = 0; return Common::kNoError; } @@ -253,13 +253,13 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { } void SaveLoadManager::syncSavegameData(Common::Serializer &s) { - s.syncBytes(&_vm->_globals.SAUVEGARDE->data[0], 2050); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_cloneHopkins); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_realHopkins); - syncCharacterLocation(s, _vm->_globals.SAUVEGARDE->_samantha); + s.syncBytes(&_vm->_globals._saveData->data[0], 2050); + syncCharacterLocation(s, _vm->_globals._saveData->_cloneHopkins); + syncCharacterLocation(s, _vm->_globals._saveData->_realHopkins); + syncCharacterLocation(s, _vm->_globals._saveData->_samantha); for (int i = 0; i < 35; ++i) - s.syncAsSint16LE(_vm->_globals.SAUVEGARDE->_inventory[i]); + s.syncAsSint16LE(_vm->_globals._saveData->_inventory[i]); } void SaveLoadManager::syncCharacterLocation(Common::Serializer &s, CharacterLocation &item) { -- cgit v1.2.3 From 7c88b9c54e8e5f45132b6211f2ef5c0268f1f532 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 2 Jan 2013 16:04:15 +0100 Subject: HOPKINS: Silence some GCC warning (thanks to eriktorbjorn) --- engines/hopkins/saveload.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index dafde79dc5..bed7a0d6b6 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -147,43 +147,42 @@ Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName _vm->_globals._saveData->_inventory[i] = _vm->_globals._inventory[i]; /* Create the savegame */ - Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving( - _vm->generateSaveName(slot)); - if (!saveFile) + Common::OutSaveFile *savefile = g_system->getSavefileManager()->openForSaving(_vm->generateSaveName(slot)); + if (!savefile) return Common::kCreatingFileFailed; // Set up the serializer - Common::Serializer serializer(NULL, saveFile); + Common::Serializer serializer(NULL, savefile); // Write out the savegame header hopkinsSavegameHeader header; header._saveName = saveName; header._version = HOPKINS_SAVEGAME_VERSION; - writeSavegameHeader(saveFile, header); + writeSavegameHeader(savefile, header); // Write out the savegame data syncSavegameData(serializer); // Save file complete - saveFile->finalize(); - delete saveFile; + savefile->finalize(); + delete savefile; return Common::kNoError; } Common::Error SaveLoadManager::loadGame(int slot) { // Try and open the save file for reading - Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading( + Common::InSaveFile *savefile = g_system->getSavefileManager()->openForLoading( _vm->generateSaveName(slot)); - if (!saveFile) + if (!savefile) return Common::kReadingFailed; // Set up the serializer - Common::Serializer serializer(saveFile, NULL); + Common::Serializer serializer(savefile, NULL); // Read in the savegame header hopkinsSavegameHeader header; - readSavegameHeader(saveFile, header); + readSavegameHeader(savefile, header); if (header._thumbnail) header._thumbnail->free(); delete header._thumbnail; @@ -192,7 +191,7 @@ Common::Error SaveLoadManager::loadGame(int slot) { syncSavegameData(serializer); // Loading save file complete - delete saveFile; + delete savefile; // Unpack the inventory for (int i = 0; i < 35; ++i) -- cgit v1.2.3 From 65c61ab6d7958ee91328d470cb97127bf2ca986d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 14 Jan 2013 07:52:24 +0100 Subject: HOPKINS: Add synchronization of car position on the city map --- engines/hopkins/saveload.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index bed7a0d6b6..179145d20d 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -146,6 +146,9 @@ Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName for (int i = 0; i < 35; ++i) _vm->_globals._saveData->_inventory[i] = _vm->_globals._inventory[i]; + _vm->_globals._saveData->PLANX = _vm->_globals.PLANX; + _vm->_globals._saveData->PLANY = _vm->_globals.PLANY; + /* Create the savegame */ Common::OutSaveFile *savefile = g_system->getSavefileManager()->openForSaving(_vm->generateSaveName(slot)); if (!savefile) @@ -161,7 +164,7 @@ Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName writeSavegameHeader(savefile, header); // Write out the savegame data - syncSavegameData(serializer); + syncSavegameData(serializer, header._version); // Save file complete savefile->finalize(); @@ -188,7 +191,7 @@ Common::Error SaveLoadManager::loadGame(int slot) { delete header._thumbnail; // Read in the savegame data - syncSavegameData(serializer); + syncSavegameData(serializer, header._version); // Loading save file complete delete savefile; @@ -202,6 +205,8 @@ Common::Error SaveLoadManager::loadGame(int slot) { _vm->_globals._exitId = _vm->_globals._saveData->data[svField5]; _vm->_globals._saveData->data[svField6] = 0; _vm->_globals._screenId = 0; + _vm->_globals.PLANX = _vm->_globals._saveData->PLANX; + _vm->_globals.PLANY = _vm->_globals._saveData->PLANY; return Common::kNoError; } @@ -251,7 +256,7 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { thumb8.free(); } -void SaveLoadManager::syncSavegameData(Common::Serializer &s) { +void SaveLoadManager::syncSavegameData(Common::Serializer &s, int version) { s.syncBytes(&_vm->_globals._saveData->data[0], 2050); syncCharacterLocation(s, _vm->_globals._saveData->_cloneHopkins); syncCharacterLocation(s, _vm->_globals._saveData->_realHopkins); @@ -259,6 +264,14 @@ void SaveLoadManager::syncSavegameData(Common::Serializer &s) { for (int i = 0; i < 35; ++i) s.syncAsSint16LE(_vm->_globals._saveData->_inventory[i]); + + if (version > 1) { + s.syncAsSint16LE(_vm->_globals._saveData->PLANX); + s.syncAsSint16LE(_vm->_globals._saveData->PLANY); + } else { + _vm->_globals._saveData->PLANX = _vm->_globals._saveData->PLANY = 0; + } + } void SaveLoadManager::syncCharacterLocation(Common::Serializer &s, CharacterLocation &item) { -- cgit v1.2.3 From 75ba8bfb88a8e62a588747184fa341d20b52fa79 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 14 Jan 2013 07:58:06 +0100 Subject: HOPKINS: Rename car related fields, remove map car sprite index --- engines/hopkins/saveload.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 179145d20d..35d52005bb 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -146,8 +146,8 @@ Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName for (int i = 0; i < 35; ++i) _vm->_globals._saveData->_inventory[i] = _vm->_globals._inventory[i]; - _vm->_globals._saveData->PLANX = _vm->_globals.PLANX; - _vm->_globals._saveData->PLANY = _vm->_globals.PLANY; + _vm->_globals._saveData->_mapCarPosX = _vm->_globals._mapCarPosX; + _vm->_globals._saveData->_mapCarPosY = _vm->_globals._mapCarPosY; /* Create the savegame */ Common::OutSaveFile *savefile = g_system->getSavefileManager()->openForSaving(_vm->generateSaveName(slot)); @@ -205,8 +205,8 @@ Common::Error SaveLoadManager::loadGame(int slot) { _vm->_globals._exitId = _vm->_globals._saveData->data[svField5]; _vm->_globals._saveData->data[svField6] = 0; _vm->_globals._screenId = 0; - _vm->_globals.PLANX = _vm->_globals._saveData->PLANX; - _vm->_globals.PLANY = _vm->_globals._saveData->PLANY; + _vm->_globals._mapCarPosX = _vm->_globals._saveData->_mapCarPosX; + _vm->_globals._mapCarPosY = _vm->_globals._saveData->_mapCarPosY; return Common::kNoError; } @@ -266,10 +266,10 @@ void SaveLoadManager::syncSavegameData(Common::Serializer &s, int version) { s.syncAsSint16LE(_vm->_globals._saveData->_inventory[i]); if (version > 1) { - s.syncAsSint16LE(_vm->_globals._saveData->PLANX); - s.syncAsSint16LE(_vm->_globals._saveData->PLANY); + s.syncAsSint16LE(_vm->_globals._saveData->_mapCarPosX); + s.syncAsSint16LE(_vm->_globals._saveData->_mapCarPosY); } else { - _vm->_globals._saveData->PLANX = _vm->_globals._saveData->PLANY = 0; + _vm->_globals._saveData->_mapCarPosX = _vm->_globals._saveData->_mapCarPosY = 0; } } -- cgit v1.2.3 From 33636f0d63d4eb2fdb20a2e73c8c6392426365c9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 21 Jan 2013 18:59:17 +0100 Subject: HOPKINS: More renaming in ObjectsManager --- engines/hopkins/saveload.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 35d52005bb..2db3cce3ee 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -140,7 +140,7 @@ void SaveLoadManager::writeSavegameHeader(Common::OutSaveFile *out, hopkinsSaveg Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName) { /* Pack any necessary data into the savegame data structure */ // Set the selected slot number - _vm->_globals._saveData->data[svField10] = slot; + _vm->_globals._saveData->_data[svField10] = slot; // Set up the inventory for (int i = 0; i < 35; ++i) @@ -201,9 +201,9 @@ Common::Error SaveLoadManager::loadGame(int slot) { _vm->_globals._inventory[i] = _vm->_globals._saveData->_inventory[i]; // Set variables from loaded data as necessary - _vm->_globals._saveData->data[svField10] = slot; - _vm->_globals._exitId = _vm->_globals._saveData->data[svField5]; - _vm->_globals._saveData->data[svField6] = 0; + _vm->_globals._saveData->_data[svField10] = slot; + _vm->_globals._exitId = _vm->_globals._saveData->_data[svField5]; + _vm->_globals._saveData->_data[svField6] = 0; _vm->_globals._screenId = 0; _vm->_globals._mapCarPosX = _vm->_globals._saveData->_mapCarPosX; _vm->_globals._mapCarPosY = _vm->_globals._saveData->_mapCarPosY; @@ -257,7 +257,7 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) { } void SaveLoadManager::syncSavegameData(Common::Serializer &s, int version) { - s.syncBytes(&_vm->_globals._saveData->data[0], 2050); + s.syncBytes(&_vm->_globals._saveData->_data[0], 2050); syncCharacterLocation(s, _vm->_globals._saveData->_cloneHopkins); syncCharacterLocation(s, _vm->_globals._saveData->_realHopkins); syncCharacterLocation(s, _vm->_globals._saveData->_samantha); -- cgit v1.2.3 From 2cd0d1f4a1440bbd7d56ab8317cbc3f0fad7eb30 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 21 Jan 2013 19:15:37 +0100 Subject: Hopkins: More renaming --- engines/hopkins/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 2db3cce3ee..b90a7a0436 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -279,7 +279,7 @@ void SaveLoadManager::syncCharacterLocation(Common::Serializer &s, CharacterLoca s.syncAsSint16LE(item._pos.y); s.syncAsSint16LE(item.field2); s.syncAsSint16LE(item._location); - s.syncAsSint16LE(item.field4); + s.syncAsSint16LE(item._zoomFactor); } void SaveLoadManager::convertThumb16To8(Graphics::Surface *thumb16, Graphics::Surface *thumb8) { -- cgit v1.2.3 From 704a36d1fb6567cdcbe0b985f745bd6d6c871dcb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 21 Jan 2013 22:25:12 +0100 Subject: HOPKINS: More renaming in ObjectsManager and globals --- engines/hopkins/saveload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index b90a7a0436..e692aef81c 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -277,7 +277,7 @@ void SaveLoadManager::syncSavegameData(Common::Serializer &s, int version) { void SaveLoadManager::syncCharacterLocation(Common::Serializer &s, CharacterLocation &item) { s.syncAsSint16LE(item._pos.x); s.syncAsSint16LE(item._pos.y); - s.syncAsSint16LE(item.field2); + s.syncAsSint16LE(item._startSpriteIndex); s.syncAsSint16LE(item._location); s.syncAsSint16LE(item._zoomFactor); } -- cgit v1.2.3 From a836676312c611dba197eebeba1f82890af2acad Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 7 Feb 2013 22:30:40 +0100 Subject: HOPKINS:Move some variables from globals to ObjectManager --- engines/hopkins/saveload.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index e692aef81c..7f0dd9cd60 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -146,8 +146,8 @@ Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName for (int i = 0; i < 35; ++i) _vm->_globals._saveData->_inventory[i] = _vm->_globals._inventory[i]; - _vm->_globals._saveData->_mapCarPosX = _vm->_globals._mapCarPosX; - _vm->_globals._saveData->_mapCarPosY = _vm->_globals._mapCarPosY; + _vm->_globals._saveData->_mapCarPosX = _vm->_objectsManager._mapCarPosX; + _vm->_globals._saveData->_mapCarPosY = _vm->_objectsManager._mapCarPosY; /* Create the savegame */ Common::OutSaveFile *savefile = g_system->getSavefileManager()->openForSaving(_vm->generateSaveName(slot)); @@ -205,8 +205,8 @@ Common::Error SaveLoadManager::loadGame(int slot) { _vm->_globals._exitId = _vm->_globals._saveData->_data[svField5]; _vm->_globals._saveData->_data[svField6] = 0; _vm->_globals._screenId = 0; - _vm->_globals._mapCarPosX = _vm->_globals._saveData->_mapCarPosX; - _vm->_globals._mapCarPosY = _vm->_globals._saveData->_mapCarPosY; + _vm->_objectsManager._mapCarPosX = _vm->_globals._saveData->_mapCarPosX; + _vm->_objectsManager._mapCarPosY = _vm->_globals._saveData->_mapCarPosY; return Common::kNoError; } -- cgit v1.2.3 From 84e290eade13bfdff1e866d058af447893bee321 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 15 Feb 2013 22:20:24 +0100 Subject: HOPKINS: Reorder includes --- engines/hopkins/saveload.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 7f0dd9cd60..ab9ff33b1d 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -20,16 +20,18 @@ * */ +#include "hopkins/saveload.h" + +#include "hopkins/files.h" +#include "hopkins/globals.h" +#include "hopkins/hopkins.h" + + #include "common/system.h" #include "common/savefile.h" #include "graphics/surface.h" #include "graphics/scaler.h" #include "graphics/thumbnail.h" -#include "hopkins/saveload.h" -#include "hopkins/files.h" -#include "hopkins/globals.h" -#include "hopkins/graphics.h" -#include "hopkins/hopkins.h" namespace Hopkins { -- cgit v1.2.3 From 5d36b5fb6ea01dbff27e7c7ae67a4e8ddf02bf6e Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Thu, 21 Feb 2013 18:37:15 +0100 Subject: HOPKINS: Pre-convert palette --- engines/hopkins/saveload.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'engines/hopkins/saveload.cpp') diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index ab9ff33b1d..f934c4c018 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -288,9 +288,13 @@ void SaveLoadManager::convertThumb16To8(Graphics::Surface *thumb16, Graphics::Su thumb8->create(thumb16->w, thumb16->h, Graphics::PixelFormat::createFormatCLUT8()); Graphics::PixelFormat pixelFormat16(2, 5, 6, 5, 0, 11, 5, 0, 0); - uint16 palette[PALETTE_SIZE]; - for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) - palette[palIndex] = READ_LE_UINT16(&_vm->_graphicsManager.PAL_PIXELS[palIndex * 2]); + byte paletteR[PALETTE_SIZE]; + byte paletteG[PALETTE_SIZE]; + byte paletteB[PALETTE_SIZE]; + for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) { + uint16 p = READ_LE_UINT16(&_vm->_graphicsManager.PAL_PIXELS[palIndex * 2]); + pixelFormat16.colorToRGB(p, paletteR[palIndex], paletteG[palIndex], paletteB[palIndex]); + } const uint16 *srcP = (const uint16 *)thumb16->pixels; byte *destP = (byte *)thumb8->pixels; @@ -306,8 +310,9 @@ void SaveLoadManager::convertThumb16To8(Graphics::Surface *thumb16, Graphics::Su // Scan the palette for the closest match int difference = 99999, foundIndex = 0; for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) { - byte rCurrent, gCurrent, bCurrent; - pixelFormat16.colorToRGB(palette[palIndex], rCurrent, gCurrent, bCurrent); + byte rCurrent = paletteR[palIndex]; + byte gCurrent = paletteG[palIndex]; + byte bCurrent = paletteB[palIndex]; int diff = ABS((int)r - (int)rCurrent) + ABS((int)g - (int)gCurrent) + ABS((int)b - (int)bCurrent); if (diff < difference) { -- cgit v1.2.3