Ok, so we skipped 2018...
============================================= Shadow Warrior (1997) and bonus Build Engine Source Codes Release - 2019 =============================================
|
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.
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.