Home > How To > Hack Soul Reaver for the PC
Hack Soul Reaver for the PC
This article provides instructions on using WinHack to manipulate the PC version of Soul Reaver. Please be aware that using active memory editors like WinHex can cause serious problems with your PC if you are not careful.
The copy of WinHack available in the Software section includes two tag lists - the original one I created, and the improved version by Andrew Fradley.
These instructions are based on the 1.2 release of Soul Reaver. Other versions will not use the same memory locations.
Modifying the Load Parameters
There are two ways to alter Soul Reaver's key parameters. The first set can only be modified before the graphical part of the game has loaded, which means doing some work while the game is sitting at the video/sound driver select window. This means that step 1 is to start up the game and select your preferred resolution, but not click OK yet.
Leave the SR1 setup window open, and start up WinHack. In the Process: drop-down list, select either KAIN2.ICD if you see it listed, or KAIN2.EXE if the ICD file isn't there (this depends on your PC's configuration).
Click on the Edit Memory tab. If you're familiar with hex editors, you'll understand what's going on here. The left pane shows the values of each byte of memory in hexadecimal, and the right pane shows the same values but as text. The main difference is that instead of operating on a file, WinHack shows you this information for programs in memory.
We're not interested in the information at the beginning of the Soul Reaver memory block, so click into the Go to Address: field, and enter $00C651E0, then click the Go to Address: button.
This will advance WinHack to the portion of memory that holds the load parameters. A full list is available in the Technical Documents section. Most of them don't work on the PC version, but enough do for our purposes.
The default parameters ("under 1 -mainmenu -voice -inspectral") tell Soul Reaver to start out in the "under 1" room (The Elder God's chamber), with Raziel in the Spectral Realm, but to load the main menu first so the player can change settings, load saved games, and so forth. The -voice switch doesn't seem to do anything, and was actually left out of the Dreamcast version of the game altogether.
For this first example, let's make Raziel start in The Secret Passage room in Melchiah's territory. In the right pane, overtype under 1 with skinnr 18. Then click on the next byte to the right in the left pane, and start typing zeroes until the rest of the information on the right side is blank. When you're done, the screen should look like this. Finally, click the Save Changes button to commit the alterations to memory.
Minimize the WinHack window so you can see the Soul Reaver resolution-select screen. Click OK, and the game will start up. If you altered the load parameters correctly, after the Eidos and Crystal Dynamics logos, a "Loading" screen will display, and Raziel should appear in the "skinnr 18" chamber.
The only other load parameter I generally use is -allwarp (which activates all of the warpgates).
Modifying the load parameters allows for a few special effects like seeing the Underworld in the Material Realm.
Modifying the In-Game Parameters
The second set of variables that can be modified is those that are used while the game is actually running. This allows you to set which abilities Raziel has, and access several of the unused Reavers among other things.
Unlike the load parameters, this information is not in English. In order to save you the hassle of tracking the various memory locations down by hand (which is what I did), I created a taglist file for WinHack which lets you select various options from drop-down boxes. This taglist, and an improved version created by Andrew Fradley are included with the copy of WinHack in the Software section.
We'll continue this example from the "skinnr 18" room, since you'll already have it loaded up if you're following along.
Raziel is in a pretty weak state initially, and in fact he can't even get out of this chamber since he doesn't have the Reaver. Let's beef him up a bit.
First, pause the game. Then, on your keyboard hold alt and hit tab to switch back to Windows.
Bring up the WinHack window, and click on the Tag Lists tab. Click the Load a New TAG List button, and in the window that comes up, locate the SR1_Hack-afradley.tgl or SR1_Hack-blincoln.tgl file you unzipped from the archive. Depending on your PC's configuration, when you open it you may get a message that it was created for KAIN2.ICD. Tell WinHack to load it anyway - the memory locations are the same.
WinHack will now display a list of the most useful memory locations, and some drop-down boxes to select preset values.
Select Maximum Health (1-4) in the main list. This is the byte that tells Soul Reaver how many full "health pies" Raziel has completed. In the Set value for selected TAG drop-down list, select 4, then click the Poke this TAG button.
Now, select Current Health (0-200000 + 100000/upgrade). In the drop-down list, select 500000, and click the Poke this TAG button. You've just convinced the game that Raziel has as much health as he possibly can, but he still can't escape the "skinnr 18" chamber.
Choose Abilities Acquired (255 for all of them) in the main pane. In the drop-down list, choose All Abilities, and poke the tag. Now Raziel has all of his brother's gifts, as well as the Shift-at-Will ability.
As long as we're poking around, let's make Raziel essentially unstoppable. Select Glyphs Acquired (255 for all of them) in the list of variables. In the drop-down, select All Glyphs, and poke the tag.
Glyphs are useless without Eldritch Energy to power them, and using WinHack it is possible to give Raziel much more than he should be able to have. In the variable list, select Max Glyph Energy (0-255). In the drop-down, choose 255, and poke the tag. Then select Current Glyph Energy (0-255), choose 255 in the drop-down again, and poke the tag.
In the task bar, click on Soul Reaver to switch back to the game (of course you can alt-tab too if you prefer). Unpause, and Raziel should be very mighty indeed. But just for fun, let's give him the deleted Sunlight Reaver weapon.
Pause the game again, alt-tab back to Windows, and bring up WinHack. In the list, select Reaver Type (Primary). In the drop-down, choose Sunlight, and poke the tag.
Switch back to the game, and Raziel should now have the Sunlight Reaver in addition to his other abilities.
There are two Reavers that use the "secondary Reaver byte" - The Amplified Reaver and the Sound Reaver. To use these, select Use Secondary in the drop-down, poke that tag, then select Reaver Type (Secondary) in the list, choose either Amplified or Purple, and poke that tag. The tag list was created before The Elemental Reavers were properly researched, so the Sound Reaver is simply called "Purple," and there are two listed. The second one doesn't really work.
The last variable I'll discuss using is the one that determines the vertical position of Raziel in relation to his surroundings. This is the one I used to get way up high into various inaccessible areas of the game.
At this point, Raziel should still be near the entrance to the hidden chamber.
Pause the game again, and alt-tab back to Windows. In the variable list, select Player Zposition. In the drop-down should be a value of 63635. Because the target value is going to change depending on where you are, there are no presets for this variable. I generally try increasing it by about 10000 each time, unless there's a reason to use a lesser value. If it increases or decreases too much, Raziel will be thrown out of the map entirely, so be a bit careful.
Let's put Raziel on the otherwise-inaccessible roof of "skinnr 18". Overtype 63635 with 70000, and poke the tag. Switch back to the game, and Raziel will have disappeared from the screen. This is because the camera position and orientation is handled seperately from that of the player - Raziel is simply out of its field of view. Unpause the game, and the camera will automatically move way up into the air to track Raziel. Let him fall a ways, and he'll land on the roof.
This same technique allows for getting up onto the roofs in the Citadel, city 10/11 (part of The Undercity and The Temple, the unusued ledges outside the Oracle's Cave, and various other inaccessible areas of the game.
Final Words:
Remember, the information in this article is about forcing the game to do things it wasn't intended to do. It's easy to throw Raziel out of the area entirely, or to cause lockups during cinematics if you do something you shouldn't be able to. Be prepared to restart the game many times.