aboutsummaryrefslogtreecommitdiff
path: root/engines/hopkins/computer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/hopkins/computer.cpp')
-rw-r--r--engines/hopkins/computer.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/engines/hopkins/computer.cpp b/engines/hopkins/computer.cpp
index 82e0dd0a06..489e7e1133 100644
--- a/engines/hopkins/computer.cpp
+++ b/engines/hopkins/computer.cpp
@@ -578,7 +578,11 @@ void ComputerManager::displayGamesSubMenu() {
* Load Highscore from file
*/
void ComputerManager::loadHiscore() {
- const byte *ptr = _vm->_globals->_highScoreData;
+ byte *ptr = _vm->_globals->allocMemory(100);
+ memset(ptr, 0, 100);
+
+ if (_vm->_saveLoad->saveExists(_vm->targetName() + "-highscore.dat"))
+ _vm->_saveLoad->load(_vm->targetName() + "-highscore.dat", ptr);
for (int scoreIndex = 0; scoreIndex < 6; ++scoreIndex) {
_score[scoreIndex]._name = " ";
@@ -600,6 +604,7 @@ void ComputerManager::loadHiscore() {
}
_lowestHiScore = atol(_score[5]._score.c_str());
+ _vm->_globals->freeMemory(ptr);
}
/**
@@ -985,8 +990,8 @@ void ComputerManager::saveScore() {
}
}
- byte *ptr = _vm->_globals->_highScoreData;
- memset(ptr, 0, 99);
+ byte *ptr = _vm->_globals->allocMemory(100);
+ memset(ptr, 0, 100);
for (int scorePlaceIdx = 0; scorePlaceIdx <= 5; scorePlaceIdx++) {
int curBufPtr = 16 * scorePlaceIdx;
for (int namePos = 0; namePos < 6; namePos++) {
@@ -1006,6 +1011,9 @@ void ComputerManager::saveScore() {
};
ptr[curBufPtr + 15] = 0;
}
+
+ _vm->_saveLoad->saveFile(_vm->targetName() + "-highscore.dat", ptr, 100);
+ _vm->_globals->freeMemory(ptr);
}
/**