This archive covers differing source snapshots of Shadow Warrior (1997), a few Build Engine sources, and other files. The Build Engine sources are licensed under the terms of the Build Source Code License. They can be found in BUILDLIC.TXT. The Shadow Warrior (1997) code is licensed under the terms of the GNU GPL (General Public License) version 2 or later. See GPL-2.0.TXT for the details. In addition to the terms of the GNU GPL referenced above, you are granted a linking exception, for the purpose of linking any of the aforementioned Shadow Warrior (1997) sources with other code used in the original EXEs from 1997. This also covers derivatives of the same code, like modern ports of the Build Engine. Be warned that in general, the terms of the GNU GPL do *NOT* apply to any such additional code. The Build Engine is a good example of this. In particular, commercial exploitation of the additional code is *NOT* allowed unless specifically permitted. Please do not contact us for help with using the source code. We cannot assist with getting this running and there is no guarantee of any kind. Use at your own risk. Any following mention of "Shadow Warrior" or "SW" will refer to the 1997 game. ACKNOWLEDGEMENTS ---------------- This release is dedicated to the memory of Terence Colligan. Further known as Terry, he was the founder of Tenberry Software (previously Rational Systems). A notable product of this company for the time was DOS/4G, a DOS extender used for a myriad of 32-bit DOS programs, and games in particular. These include games made with the Build engine, Shadow Warrior being no exception. Many thanks go to 3D Realms for digging up old materials found in this archive, including the Shadow Warrior source codes, and Ken Silverman for his consent to release the older Build Engine sources. Further thanks go to Ken Silverman for open-sourcing the Build Engine on 2000, and to anybody involved in open-sourcing Shadow Warrior on 2005. This includes Frank Maddin (one of the original Shadow Warrior programmers) for digging up the sources and assisting with their release, Jonathon Fowler (responsible for the JonoF ports of Build, Duke3D and SW) using his experience for technical assistance, Charlie Wiederhold for preparing the sources for release and 3D Realms for paving the way. Finally, thanks to all fans of 3D Realms, Devolver Digital, General Arcade, Shadow Warrior and the Build engine! Building any of the Shadow Warrior EXEs or the SW Build editor EXE ------------------------------------------------------------------ The Shadow Warrior sources found in this archive were prepared in such a way that with the right tools, you can create EXEs functionally equivalent to the ones released on 1997, up to the following differences: - Adding MemCheck (MC) 3.5 library code in the linking stage. - Binding the DOS/4GW Professional 1.97 extender. The SW EXEs in question can be found under the "exes" subdirectory, all being named SWNMC.EXE. The SWB.EXE files are the originals from 1997, while the SW.EXE ones are essentially SWB.EXE with the DOS/4GW extender removed. For the Build editor, the relevant EXE is BUILDNMC.EXE. As in the case of SW, BUILDB.EXE is the original EXE from 1997, while BUILD.EXE is simply BUILDB.EXE without the extender. For the behaviors to be as close to the originals as possible, it is important to use Watcom C32 10.6, and no other version. If you don't mind the accuracy, you can still try to use a different version, but this has *NOT* been tested. The following build directories are recommended if you want to further increase the accuracy of the recreation (mostly for debugging information): - Shareware versions 1.0 and 1.1, as well as the registered and parental locked releases (1.2): C:\DEV\SW. - Version 1.2, shareware and UK releases: H:\DEV\SW. - The Build editor (as originally distributed with the game): C:\JIM\SW\CODE. Additionally, for SW 1.2, it's recommended that the copy of Watcom C32 in use is found exactly at C:\WATCOM. In particular, this includes setting the INCLUDE environment variable's value to C:\WATCOM\H, in an uppercase (well, UPPERCASE) form. Side-note: For SW 1.0 and 1.1, the Watcom path is shown in the original SW.MAP files in the lowercase form of c:\watcom (as a part of c:\watcom\lib386). Steps for building any of the EXEs: 1. Make sure you have a compatible DOS environment with a ready installation of Watcom C32. As stated above, version 10.6 is (highly) recommended. 2. Further ensure there's no existing directory named DEV in the same location as this README.TXT file and the PREP.BAT file. 3. Run PREP.BAT and then select the SW EXE you want to make. If you want to make the editor EXE, choose any of the SW 1.2 EXEs. 4. Wait for PREP.BAT's run to complete. You should end up with files ready for building under DEV\SW. As stated above, you may wish to set the exact location appropriately (e.g., to H:\DEV\SW for the UK version), but this is optional. 5. Change to this same directory. To make the SW EXE, run MAKESW.BAT. 6. If you have previously chosen to prepare the files for any EXE matching version 1.2, you can further make the Build Editor EXE by running MAKEBLD.BAT. 7. Please be warned that you may wish to ensure the DEV\SW\OBJ directory does *not* include any of the following files first: MDASTR.OBJ, COLORMAP.OBJ. Otherwise, the layout of any involved EXE may change, at least if you're trying to build the game and editor EXEs altogether. Faithfully recreating any EXE, given access to additional files --------------------------------------------------------------- Please note that any output EXE file might still differ from the original, depending on the specific MemCheck and DOS/4GW Professional files in use. You should first prepare a modification of the PREP.BAT file: 1. Comment out this command: "call tools\striphdr DEV\SW newstuff\HOOKS.C" 2. Uncomment the next line: "REM copy source\CODE\OBJ\HOOKS.OBJ DEV\SW\OBJ" 3. Make sure the original unmodified make files are copied. In particular, replace newstuff\sws10\MAKEFILE with source\sws10\MAKEFILE, newstuff\SWV11\MAKEFILE with source\SWV11\MAKEFILE and/or newstuff\SWV12ADD\MAKEFILE with source\CODE\MAKEFILE, depending on the SW EXEs you want to recreate. For the Build editor, replace newstuff\SWV12ADD\makebld with source\CODE\makebld. Afterwards, you may create a source tree with the modified PREP.BAT file (under DEV\SW) as previously described. You should then follow these steps: 1. Optionally edit the make file to omit the dependencies on MC35A3S.LIB and RXA3S.LIB. 2. Make sure the following files from MemCheck 3.5 are present in the same source tree: MC35A3R.LIB, RXA3R.LIB. If you don't edit the make file, you'll also have to add MC35A3S.LIB and RXA3S.LIB. 3. Build the EXE as previously described. 4. To bind the DOS/4GW Professional 1.97 stub, make sure the files 4GWPRO.EXE and 4GWBIND.EXE are present in the same directory. Use them like this: "4gwpro 4gwbind sw.exe swb.exe -v" Bonus addendum - Making the ENGINE.OBJ file (SW 1.1 & 1.2) ---------------------------------------------------------- As stated above, a few older Build Engine sources were released. These include an old CACHE1D.TXT file from 1995, as well as a "blddbg" subdir that has the required source files for ENGINE.OBJ as originally used for Shadow Warrior versions 1.1 and 1.2. To make sure the created file is sufficiently close to the original (and even has the exact same file size): - Use Watcom C32 10.6, and no other version. It should be installed to c:\watcom. In particular, the INCLUDE environment variable should be set to c:\watcom\h. Be warned that unlike the case of the SW 1.2 game code, here, "c:\watcom\h" should be fully lowercase (which is actually matching SW 1.1's SW.MAP). - Ensure the ENGINE.OBJ sources are ready under the "D:" path. Use this command to create ENGINE.OBJ: wcc386 engine /4r /s /or If done correctly, the output file will be the same as the original, up to differences related to the timestamps of the source files. Description of the contents of this archive ------------------------------------------- For a little background, there were originally a few directories found in 3D Realms' archives, with their contents later being split across differing directories for this release. In particular, there was this directory named "CODE" that had not just a Shadow Warrior source snapshot, but also additional files required for making the EXEs. It also turned out to have a backup of a few older Build engine sources. If you want to have a really short summary, then basically, source\sws10 has the code for SW 1.0, source\SWV11 covers 1.1, and for 1.2 you need to combine source\REGCODE with the correct files from source\SWV12ADD. It is possible that this package will be updated in the future, provided that more work is done on additional contents. A summary of the included contents is following. README.TXT: This file. FILESLST.TXT: A list of old files with their original line counts (for textual files), sizes and timestamps, before modifications were applied (like the addition of GNU GPL headers). PREP.BAT: A helper Batch file that can be used for preparing a source code tree, eventually letting you make a working EXE with Watcom C. tools: Helper batch files and an extra tool, each of these being copied/used by PREP.BAT. build\CODE: This includes a few Build Engine source materials. BUILD.TXT and BUILD2.TXT are earlier revisions of the documents released by Ken to the public on 2000. CACHE1D.TXT is an old renamed version of CACHE1D.C from 1995. The blddbg subdir includes the code for ENGINE.OBJ as originally used in versions 1.1 and 1.2 of Shadow Warrior. F_OBJS: The contents of a miscellaneous OBJS.ZIP file which was found. Out of these files, ENGINE.OBJ was used for version 1.0 of Shadow Warrior. newstuff: Some new or recreated files. For one, this includes OBJ files made out of proprietary code, for which the sources are not included. As stated above, the terms of the GNU GPL do *NOT* apply to this code. These files are provided for the purpose of recreating SW EXEs as close to the originals as possible. There are also MAKEFILEs edited from the originals, found under the "source" subdirs of sws10, SWV11, CODE and REGCODE, in order to remove the dependencies on MC. As a bonus, static symbols are now added to the linker's output MAP files. Another file added is HOOKS.C, recreated from HOOKS.OBJ as used in SW 1.0-1.2. Reason is that the original HOOKS.OBJ file depends on the MC library. In particular, it is guessed that the same HOOKS.OBJ file was built using headers from SWC0507B, including GAME.H, which had DEBUG defined to 1 (and thus, leading to a dependency on MC). exes: A collection consisting of the original SW and Build editor EXEs, in binded and unbinded forms. The latter lack the binded DOS/4GW extender. There are also alternative unbinded EXEs excluding the MC libraries' code that you may use for comparisons. source: Differing snapshots of the Shadow Warrior sources. source\sws10: Version 1.0. source\SWV11: Version 1.1. source\REGCODE: A revision earlier than 1.2 by not more than a few days. This revision is the closest to version 1.2 out of what was found. source\SWV12ADD: A list of changes on top of REGCODE intended for the recreation of the code in 1.2. While some of these come from the GPLed release of 2005, other missing code pieces had to be re-filled in GAME.C. source\SWV12ADD\ALT: Alternative files for the registered and parental locked versions. Compared to the shareware and UK versions, the differences are a bit silly: A few global variables were shuffled around in order to recreate the original EXEs' layouts. There are good chances this wasn't the way the EXEs were originally created; Maybe about 1-3 header files were modified instead. source\SWC0507: A source snapshot added for the simple reason we also have SWC0507B covered... source\SWC0507B: A source snapshot that is assumed to be the one used for building HOOKS.OBJ as present in SW 1.0-1.2. source\SWC0511: A source snapshot originally used while trying to recreate the EXE from version 1.0, in conjunction with sws10. It isn't in use by PREP.BAT, but it's provided for reference. source\SWC0519: A source snapshot similarly used while attempting to recreate SWV11's EXE. It's also not in use by PREP.BAT. source\CODE: A snapshot of contents from the "CODE" dir, covering not just a Shadow Warrior source snapshot (earlier than REGCODE by about 3 days), but also additional files used for building all EXEs. extras: Unused files from the above-mentioned source code subdirs (like SWV11), as well as additional files not in direct use by PREP.BAT. -Yoav N.