A very short guide to editing the WCP/SO EXE file
Although for the most part, hex editing the EXE is likely to cause more damage than benefits, there are several locations in the EXE which can be edited safely. These are generally very useful for any serious WCP/SO mod.
What I'm listing below are the addresses at which the data we want to edit begins. I don't bother to list the ending addresses, since they'll be obvious enough. Once you find the address of whatever you want to change, it's simply a matter of replacing the data there with whatever you want. For example, to change the name of the series file (the address is shown further down) from mission\covert.srs to mission\cow.srs, you'd simply change 'covert' to 'cow' at the right address.
It is acceptable for the data to be shorter than what you're replacing; in such a case however, you need to 'wipe' the remains of the original data by replacing each character with a blank character (hex value 00). On the other hand, in most cases it is not a good idea to go beyond the end of the original data...in most cases. If the original data was followed by two or more blank 00 characters, you can safely replace some of them and thus insert more data than had been there previously. You must, however, always leave at least one 00 character between the replaced data and whatever comes next in the EXE. Otherwise, the game won't realise that the data string had ended and will keep reading it until the next 00 character in the EXE.
And now, the data addresses. We will begin with the most important one: 0E1B24 - the name of the series (srs- the file containing the mission tree) file to be used. If you look at this address inside SO, you will find the word 'covert', which stands for the file \mission\covert.srs.
Then there is a number of addresses which deal with the player data (savegames, highscores, and so on): 0D34D0 - the name of the history folder 0D34E0 - the name of the save folder 0D34E8 - the name of the autosave file 0D34F8 - the name of the replay file 0ED39C - the name of the sim score file 0ED3A8 - the name of the sim score file (again? Apparently so. I changed both just to be sure).
The above are useful if you want your mod to use a separate EXE file and to coexist with the original SO without overwriting SO's own savegames. And if we were to offer coexistence with your kind, would you not accept?
And here's the rest - all of the EXE's ship-related data: 0E3914 - the name of the mesh (mesh - not ship) used for the friendly SAR scene. 0E3918 - the name of the mesh used for the alien pickup scene. 0E7E44 - the names of the sim ships (same order as in viewobj.iff). The bug ships are what you see with the alswantsmoreships cheat, of course. This address is actually just the first address for several separate data items (since there is more than one ship in the sim). Note also that these are followed immediately by the next address listed below... 0E7EC0 - the names of the ships used by the ship selector option (ie., when you let the player choose between two ships for a mission). As with sim ships, what the player sees in the selector screen is based on viewobj.iff, not on this data. Therefore, the ship selector ships should be identical to the sim ships above. 0EC3A8 - the name of the mesh that is used in the refuelling scene.
Tutorial by Quarto