God of Thunder
God of Thunder is a strategy game, where the player walks between a number of separate screens, typically solving a puzzle before the next screen can be reached.
The following tools are able to work with this game.
|Grom PE's unpacker||Windows console||Extract||No||No||Convert||No||No||No||No|
The following file formats are used by this game.
|gotres.dat||DAT Format (God of Thunder)||Main data file holding most of the other files below|
|_g.exe||Standard .exe, compressed with LZEXE||Episode-specific code|
|actor*||16×16 8bpp tiles||Frames for creatures/enemies, trailing data unknown but includes tile names|
|bossv*||VOC Format||Sound effects|
|God of Thunder Tileset Format||Various tiles and images|
|VGA Palette||8-bit (0-255)|
|sdat||God of Thunder Level Format||Level screens|
|God of Thunder Music Format||Background music is raw OPL, in a slightly different arrangement to other common formats|
|ASCII text (CRLF)||Various game texts|
The game supports a handful of command-line parameters.
|/VERSION||Print game and front end versions|
|/GRAPHICS||Skip detection and assume VGA card present|
|/NOAL||Disable Adlib detection?|
|/NOSB||Disable SoundBlaster support (use PC speaker sound effects)|
|/FORCESB||Force use of SoundBlaster even if not detected|
|/NOJOY||Disable Joystick support|
|/RETURN||Skip intro, start at title|
|/KEYRETURN||Skip intro and title, start at menu|
|/SCORE:n||Set high score to name given by /SAVEGAME|
|/SAVEGAME:SAVEGAMx.yyy||Pass to _G.EXE to load and play given saved game file|
|/EXIT||Show exit screen only|
|/LOCKDEMO||Lock until demo - run intro/credits/highscores/demo, ignoring keypresses until the demo starts|
Some data inside the .exe is compressed with the same LZSS algorithm used in the .DAT file, while others are simply RLE-encoded with this algorithm:
- Read a byte from the input (decompressed) data
- If the byte is zero, finish
If the most significant bit is 1:
- Take the lower seven bits and treat this value as the "count"
- Read another byte from the input
- Write that byte "count" times to the output
Otherwise the most significant bit is 0:
- Treat the byte as the "count"
- Copy "count" bytes unchanged from the input to the output
- Go back to step 1