This is a copy of the MS-DOS Game God of Thunder. The intention of this project is to build and compile the game in order to preserve compatibility with its original system requirements.
This program is contains all of the code to play the first episode - Part I: Serpent Surprise.
/SAVEGAME:{save_filename}
- The name of the save game file to load from, given that the file has more than 32 bytes of data/JOY:{lx,hx,ly,hy}
- Joystick configuration/VOLSTAGG
- Sets thecheat
flag to1
, which enables additional functionality:- The
1
key will allow thor to walk through various tiles that he wouldn't otherwise be able to - The
2
key will sleep for 2500 milliseconds - The
3
key will invoke a block of assembly - The
4
key will prevent thor from being damaged - The
B
key will stop script execution when interacting with actors - The
K
key will dump the screen - The
X
key will prevent saving the game on exit. - The
Z
key will add 150 magic - The level number will be printed on the screen
- If a script runs into an error, the error message is printed to the screen, and a sound is played
- The
/NOJOY
- Sets thenojoy
flag to1
/GR
- Sets thegr
flag to1
. It is passed forward toGOT.EXE
./DEMO
- Sets thedemo
andcheat
flags to1
. Records keyboard input for demo playback writing todemo.got
./NOAL
- Sets thenoal
flag to1
, and setsmusic_flag
andsound_flag
to0
/NOSB
- Sets thenosb
flag to1
, thesound_flag
to0
and thepcsound_flag
to1
/RDEMO
- Setsrdemo
,demo
andcheat
flags to1
. It reads in thedemo.got
file, and uses this to automatically send commands into the game instead of taking keyboard input./IDE
- Sets theide_run
flag to1
. It influences whether or notGOT.EXE
should be called if the/SAVEGAME
argument was not passed./S:{current_level}
- Determines which screen to initially load within the game. For Episode I the first screen is 23.
This program is contains all of the code to play the first episode - Part II: Non-Stick Nognir.
_G2.EXE share the same arguments as _G1.EXE.
This program is contains all of the code to play the first episode - Part III: Lookin' for Loki.
_G3.EXE share the same arguments as _G1.EXE.
This contains all of the game assets necessary to play the game episodes.
This program is used to manipulate screen data within GOTRES.DAT
. By default it loads GOTRES.DAT
out of C:\GOT\GOTRES.DAT
and edits Episode 1's data (SDAT1
).
/AREA:num
- Overrides the Episode screen data to load, e.g., num=2 will loadSDAT2
/FILE:name
- Overrides the path to theGOTRES.DAT
file to load and save
- F1 - Save
- F2 - Load
- F3 - BGTILE
- F4 - Fill
- F5 - Quit
- CTRL+F1 - Add Actor
- CTRL+F2 - Del Actor
- CTRL+F3 - Flip
- CTRL+F4 - Val
- ALT+F1 - Inc
- ALT+F2 - Dec
- ALT+Left Click - Place
- ALT+Right Click - Delete
- SHIFT+F1 - Music
- SHIFT+F2 - Redraw
- SHIFT+F3 - Edit Warp
- SHIFT+F4 - Pack Warp
- Left - Shift Tile Palette Left
- Right - Shift Tile Palette Right
This program provides an interface for managing the GOTRES.DAT
archive.
RES.EXE is a command based program, which has dynamic arguments. All commands first argument is filename, e.g., RES.EXE [filename]
. When no arguments are passed, a help dialog is displayed. The following are the various argument combinations to run the program.
C
- Creates a new archive at[filename]
A [src_filename] [res_name] [encode_flag]
Adds a file on disk ([src_filename]
) to the archive with a name of[res_name]
. When the[encode_flag]
is non-zero, then the resource will be compressed using LZSS compression before adding to the archive.U [src_filename] [res_name] [encode_flag]
- Updates an existing entry ([res_name]
) within the archive from a file on disk ([src_filename]
). When the[encode_flag]
is non-zero, then the resource will be compressed using LZSS compression before adding to the archive.E [res_name] [dest_filename]
- Extracts a resource ([res_name]
) from the archive to disk at[dest_filename]
.D [res_name]
- Deletes a resource ([res_name]
) from the archive.P
- Rearranges the entries in the resource archive so that they're aligned at the start of the file.R [res_oldname] [res_newname]
- Renames a resource ([res_oldname]
) in the archive with a new name ([res_newname]
).B
- Extracts all resources with a .DAT file extension.L
- Lists all entries in the archive.
This is the source code for the 1994 DOS shareware game God of Thunder (Turbo C/Assembler).
It is a good example of how not to code in C. I was once told it was impressive that it actually worked, so that's something.
This is only the main source code here. I have released it to the public domain. Do whatever you want with it. It will not compile as-is. There is at least 1 3rd party compression file missing and the sound/music code was a licensed library that is not open source. The opening/high score/game select screens are also not included.
The game itself can be found for free on Steam. The graphics of the game are not open source and may not be used in any commercial projects. The music and sound effects are public domain but I would appreciate credit to "Roy Davis" if you use any of the music. He was my father and he passed away in 2011. The music and other stuff is in GOTstuff.zip.
Sorry, but I cannot offer any support.
- Very questionable C code (to put it nicely)
Original source: https://sourceforge.net/projects/god-of-thunder-1994-dos-game/
Released on: 2020-03-27 (source only), 2020-07-19 (sound/music/utility)