SAV Format (Hocus Pocus)

From ModdingWiki
Jump to: navigation, search

Information from the shareware episode:

Contents

File format

The file HOCUS.SAV:

Save Game part

Offset Data type Description
0x1E SINT16LE valid[9] field indicating whether the each savegame can be loaded. -1 = no 0 = yes
0x30 INT16LE level[9] saved level of each savegame. 0 = first level. 1 = second level etc.
0x42 INT16LE difficulty[9] difficulty of each savegame 0 = easy, 1 = moderate, 2 = hard
0x54 ASCIZ [9][26] name of each savegame with trailing zero. (maximum 25 characters + trailing zero)
? ?? some rubbish 9 times 1 and 1 time zero. Episode number ?
0x148 INT32LE score[9] score of each savegame.

Example

Small sample program(C++) to show information about the savegames: (start like this: app HOCUS.SAV) int assumed to be 32 bit, short to be 16 bit. Only for little endian machines.

#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char* argv[]) {
   if(argc != 2) return 1;

   ifstream input(argv[1]);
   input.seekg(0x1E,ios::beg);
   short signed int valid[9];
   input.read(reinterpret_cast<char*>(&valid),2*9);
   short level[9];
   input.read(reinterpret_cast<char*>(&level),2*9);
   short difficulty[9];
   input.read(reinterpret_cast<char*>(&difficulty),2*9);
   char name[9][26];
   input.read(&name[0][0],9*26);

   input.seekg(0x148,ios::beg);
   int score[9];
   input.read(reinterpret_cast<char*>(&score),4*9);

   for(int i = 0;i < 9;i++) {
      cout << "save " << i+1 << " valid " << valid[i]
           << " level " << level[i] << " difficulty " << difficulty[i]
           << " name: "<< name[i] << " score " << score[i] << endl;
     }
   return 0;
}

Highscore part

Offset Data type Description
0x16C ASCIZ Name1[5][26] Names of the people with highscores for episode 1
0x1EE ASCIZ Name2[5][26] Names of the people with highscores for episode 2
0x270 ASCIZ Name3[5][26] Names of the people with highscores for episode 3
0x2F2 ASCIZ Name4[5][26] Names of the people with highscores for episode 4
0x374 INT32LE Score[4][5] Highscores themselves. Listed by episode.

Sound Configuration

Stored at the bottom of the file. (less interesting as setup.exe can change those)

Credits

User:Qbix

Personal tools
programming