[Scummvm-cvs-logs] SF.net SVN: scummvm:[54389] scummvm/trunk/engines/hugo
strangerke at users.sourceforge.net
strangerke at users.sourceforge.net
Sat Nov 20 00:49:06 CET 2010
Revision: 54389
http://scummvm.svn.sourceforge.net/scummvm/?rev=54389&view=rev
Author: strangerke
Date: 2010-11-19 23:49:04 +0000 (Fri, 19 Nov 2010)
Log Message:
-----------
HUGO: Start using endianness-safe read/write functions
Modified Paths:
--------------
scummvm/trunk/engines/hugo/display.cpp
scummvm/trunk/engines/hugo/file.cpp
scummvm/trunk/engines/hugo/file.h
scummvm/trunk/engines/hugo/game.h
scummvm/trunk/engines/hugo/schedule_v1d.cpp
scummvm/trunk/engines/hugo/schedule_v1w.cpp
Modified: scummvm/trunk/engines/hugo/display.cpp
===================================================================
--- scummvm/trunk/engines/hugo/display.cpp 2010-11-19 21:25:36 UTC (rev 54388)
+++ scummvm/trunk/engines/hugo/display.cpp 2010-11-19 23:49:04 UTC (rev 54389)
@@ -40,7 +40,6 @@
namespace Hugo {
-#define NUM_COLORS 16 // Num colors to save in palette
#define DMAX 16 // Size of add/restore rect lists
#define BMAX (DMAX * 2) // Size of dirty rect blit list
@@ -126,15 +125,15 @@
void Screen::savePal(Common::WriteStream *f) {
debugC(1, kDebugDisplay, "savePal");
- warning("STUB: savePal()");
- //fwrite(bminfo.bmiColors, sizeof(bminfo.bmiColors), 1, f);
+ for (int i = 0; i < _paletteSize; i++)
+ f->writeByte(_palette[i]);
}
void Screen::restorePal(Common::SeekableReadStream *f) {
debugC(1, kDebugDisplay, "restorePal");
- warning("STUB: restorePal()");
- //fread(bminfo.bmiColors, sizeof(bminfo.bmiColors), 1, f);
+ for (int i = 0; i < _paletteSize; i++)
+ _palette[i] = f->readByte();
}
Modified: scummvm/trunk/engines/hugo/file.cpp
===================================================================
--- scummvm/trunk/engines/hugo/file.cpp 2010-11-19 21:25:36 UTC (rev 54388)
+++ scummvm/trunk/engines/hugo/file.cpp 2010-11-19 23:49:04 UTC (rev 54389)
@@ -285,11 +285,7 @@
*/
bool FileManager::fileExists(char *filename) {
Common::File f;
- if (f.open(filename)) {
- f.close();
- return true;
- }
- return false;
+ return(f.exists(filename));
}
/**
@@ -313,7 +309,7 @@
}
// Write version. We can't restore from obsolete versions
- out->write(&kSavegameVersion, sizeof(kSavegameVersion));
+ out->writeByte(kSavegameVersion);
// Save description of saved game
out->write(descrip, DESCRIPLEN);
@@ -323,26 +319,29 @@
const status_t &gameStatus = _vm->getGameStatus();
// Save whether hero image is swapped
- out->write(&_vm->_heroImage, sizeof(_vm->_heroImage));
+ out->writeByte(_vm->_heroImage);
// Save score
- int score = _vm->getScore();
- out->write(&score, sizeof(score));
+ out->writeSint16BE(_vm->getScore());
// Save story mode
- out->write(&gameStatus.storyModeFl, sizeof(gameStatus.storyModeFl));
+ out->writeByte((gameStatus.storyModeFl) ? 1 : 0);
// Save jumpexit mode
- out->write(&gameStatus.jumpExitFl, sizeof(gameStatus.jumpExitFl));
+ out->writeByte((gameStatus.jumpExitFl) ? 1 : 0);
// Save gameover status
- out->write(&gameStatus.gameOverFl, sizeof(gameStatus.gameOverFl));
+ out->writeByte((gameStatus.gameOverFl) ? 1 : 0);
// Save screen states
- out->write(_vm->_screenStates, sizeof(*_vm->_screenStates) * _vm->_numScreens);
+ for (int i = 0; i < _vm->_numScreens; i++)
+ out->writeByte(_vm->_screenStates[i]);
// Save points table
- out->write(_vm->_points, sizeof(point_t) * _vm->_numBonuses);
+ for (int i = 0; i < _vm->_numBonuses; i++) {
+ out->writeByte(_vm->_points[i].score);
+ out->writeByte((_vm->_points[i].scoredFl) ? 1 : 0);
+ }
// Now save current time and all current events in event queue
_vm->_scheduler->saveEvents(out);
@@ -351,7 +350,15 @@
_vm->_screen->savePal(out);
// Save maze status
- out->write(&_maze, sizeof(maze_t));
+ out->writeByte((_maze.enabledFl) ? 1 : 0);
+ out->writeByte(_maze.size);
+ out->writeSint16BE(_maze.x1);
+ out->writeSint16BE(_maze.y1);
+ out->writeSint16BE(_maze.x2);
+ out->writeSint16BE(_maze.y2);
+ out->writeSint16BE(_maze.x3);
+ out->writeSint16BE(_maze.x4);
+ out->writeByte(_maze.firstScreenIndex);
out->finalize();
@@ -380,8 +387,7 @@
return;
// Check version, can't restore from different versions
- int saveVersion;
- in->read(&saveVersion, sizeof(saveVersion));
+ int saveVersion = in->readByte();
if (saveVersion != kSavegameVersion) {
error("Savegame of incompatible version");
return;
@@ -396,27 +402,30 @@
_vm->_object->restoreObjects(in);
- in->read(&_vm->_heroImage, sizeof(_vm->_heroImage));
+ _vm->_heroImage = in->readByte();
// If hero swapped in saved game, swap it
- int heroImg = _vm->_heroImage;
+ byte heroImg = _vm->_heroImage;
if (heroImg != HERO)
_vm->_object->swapImages(HERO, _vm->_heroImage);
_vm->_heroImage = heroImg;
status_t &gameStatus = _vm->getGameStatus();
- int score;
- in->read(&score, sizeof(score));
+ int score = in->readSint16LE();
_vm->setScore(score);
- in->read(&gameStatus.storyModeFl, sizeof(gameStatus.storyModeFl));
- in->read(&gameStatus.jumpExitFl, sizeof(gameStatus.jumpExitFl));
- in->read(&gameStatus.gameOverFl, sizeof(gameStatus.gameOverFl));
- in->read(_vm->_screenStates, sizeof(*_vm->_screenStates) * _vm->_numScreens);
+ gameStatus.storyModeFl = (in->readByte() == 1);
+ gameStatus.jumpExitFl = (in->readByte() == 1);
+ gameStatus.gameOverFl = (in->readByte() == 1);
+ for (int i = 0; i < _vm->_numScreens; i++)
+ _vm->_screenStates[i] = in->readByte();
// Restore points table
- in->read(_vm->_points, sizeof(point_t) * _vm->_numBonuses);
+ for (int i = 0; i < _vm->_numBonuses; i++) {
+ _vm->_points[i].score = in->readByte();
+ _vm->_points[i].scoredFl = (in->readByte() == 1);
+ }
_vm->_object->restoreAllSeq();
@@ -427,7 +436,15 @@
_vm->_screen->restorePal(in);
// Restore maze status
- in->read(&_maze, sizeof(maze_t));
+ _maze.enabledFl = (in->readByte() == 1);
+ _maze.size = in->readByte();
+ _maze.x1 = in->readSint16BE();
+ _maze.y1 = in->readSint16BE();
+ _maze.x2 = in->readSint16BE();
+ _maze.y2 = in->readSint16BE();
+ _maze.x3 = in->readSint16BE();
+ _maze.x4 = in->readSint16BE();
+ _maze.firstScreenIndex = in->readByte();
delete in;
}
Modified: scummvm/trunk/engines/hugo/file.h
===================================================================
--- scummvm/trunk/engines/hugo/file.h 2010-11-19 21:25:36 UTC (rev 54388)
+++ scummvm/trunk/engines/hugo/file.h 2010-11-19 23:49:04 UTC (rev 54389)
@@ -41,7 +41,7 @@
byte mfctr, vers, enc, bpx;
uint16 x1, y1, x2, y2; // bounding box
uint16 xres, yres;
- byte palette[48]; // EGA color palette
+ byte palette[3 * NUM_COLORS]; // EGA color palette
byte vmode, planes;
uint16 bytesPerLine; // Bytes per line
byte fill2[60];
Modified: scummvm/trunk/engines/hugo/game.h
===================================================================
--- scummvm/trunk/engines/hugo/game.h 2010-11-19 21:25:36 UTC (rev 54388)
+++ scummvm/trunk/engines/hugo/game.h 2010-11-19 23:49:04 UTC (rev 54389)
@@ -106,6 +106,7 @@
// Macros:
#define TPS ((_config.turboFl) ? TURBO_TPS : NORMAL_TPS)
+#define NUM_COLORS 16 // Num colors to save in palette
#define MAX_UIFS 32 // Max possible uif items in hdr
#define NUM_FONTS 3 // Number of dib fonts
#define FIRST_FONT U_FONT5
Modified: scummvm/trunk/engines/hugo/schedule_v1d.cpp
===================================================================
--- scummvm/trunk/engines/hugo/schedule_v1d.cpp 2010-11-19 21:25:36 UTC (rev 54388)
+++ scummvm/trunk/engines/hugo/schedule_v1d.cpp 2010-11-19 23:49:04 UTC (rev 54389)
@@ -157,10 +157,11 @@
break;
case PROMPT: { // act3: Prompt user for key phrase
response = Utils::Box(BOX_PROMPT, "%s", _vm->_file->fetchString(action->a3.promptIndex));
+ strcpy(response, _vm->_file->fetchString(action->a3.promptIndex));
if (action->a3.encodedFl)
decodeString(response);
- warning("STUB: doAction(act3), expecting answer %s", _vm->_file->fetchString(action->a3.responsePtr[0]));
+ warning("STUB: doAction(act3), expecting answer %s", response);
// TODO: The answer of the player is not handled currently! Once it'll be read in the messageBox, uncomment this block
#if 0
@@ -350,11 +351,12 @@
int16 headIndex = (_headEvent == 0) ? -1 : _headEvent - _events;
int16 tailIndex = (_tailEvent == 0) ? -1 : _tailEvent - _events;
- f->write(&curTime, sizeof(curTime));
- f->write(&freeIndex, sizeof(freeIndex));
- f->write(&headIndex, sizeof(headIndex));
- f->write(&tailIndex, sizeof(tailIndex));
+ f->writeUint32BE(curTime);
+ f->writeSint16BE(freeIndex);
+ f->writeSint16BE(headIndex);
+ f->writeSint16BE(tailIndex);
f->write(saveEventArr, sizeof(saveEventArr));
+ warning("TODO: serialize saveEventArr");
}
/**
@@ -369,10 +371,10 @@
int16 tailIndex; // Tail of list index
event_t savedEvents[kMaxEvents]; // Convert event ptrs to indexes
- f->read(&saveTime, sizeof(saveTime)); // time of save
- f->read(&freeIndex, sizeof(freeIndex));
- f->read(&headIndex, sizeof(headIndex));
- f->read(&tailIndex, sizeof(tailIndex));
+ saveTime = f->readUint32BE(); // time of save
+ freeIndex = f->readSint16BE();
+ headIndex = f->readSint16BE();
+ tailIndex = f->readSint16BE();
f->read(savedEvents, sizeof(savedEvents));
event_t *wrkEvent;
Modified: scummvm/trunk/engines/hugo/schedule_v1w.cpp
===================================================================
--- scummvm/trunk/engines/hugo/schedule_v1w.cpp 2010-11-19 21:25:36 UTC (rev 54388)
+++ scummvm/trunk/engines/hugo/schedule_v1w.cpp 2010-11-19 23:49:04 UTC (rev 54389)
@@ -377,11 +377,12 @@
int16 headIndex = (_headEvent == 0) ? -1 : _headEvent - _events;
int16 tailIndex = (_tailEvent == 0) ? -1 : _tailEvent - _events;
- f->write(&curTime, sizeof(curTime));
- f->write(&freeIndex, sizeof(freeIndex));
- f->write(&headIndex, sizeof(headIndex));
- f->write(&tailIndex, sizeof(tailIndex));
+ f->writeUint32BE(curTime);
+ f->writeSint16BE(freeIndex);
+ f->writeSint16BE(headIndex);
+ f->writeSint16BE(tailIndex);
f->write(saveEventArr, sizeof(saveEventArr));
+ warning("TODO: serialize saveEventArr");
}
/**
@@ -396,10 +397,11 @@
int16 tailIndex; // Tail of list index
event_t savedEvents[kMaxEvents]; // Convert event ptrs to indexes
- f->read(&saveTime, sizeof(saveTime)); // time of save
- f->read(&freeIndex, sizeof(freeIndex));
- f->read(&headIndex, sizeof(headIndex));
- f->read(&tailIndex, sizeof(tailIndex));
+ saveTime = f->readUint32BE(); // time of save
+ freeIndex = f->readSint16BE();
+ headIndex = f->readSint16BE();
+ tailIndex = f->readSint16BE();
+
f->read(savedEvents, sizeof(savedEvents));
event_t *wrkEvent;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list