Shadow Caster Isometric Mapper and Resource Extractor

About and Dependencies

This is a series of Python scripts to generate Isometric views of Shadow Caster maps, as well as extract most of the Shadow Caster Resources. These scripts require the Pillow fork of the Python Imaging Library (PIL) and Python 3.x. This was tested with Python 3.9.2, but it does not use any recently-introduced features. As such, it should run with just about any version of Python 3. At the time of Python 3 in 2021, the oldest version of Python still receiving updates is 3.6, so I do not recommend anything older.

Windows and macOS users should be able to download Python from the above links and use pip to install Pillow. Most Linux/Unix varients should be able to install Python and Pillow via your package manager of choice; Ubuntu users can install the python3 and python3-pil libraries.

The scripts also obviously require Shadow Caster (CD version), which can be a bit hard to find nowadays. Purchasing a used copy on eBay or other used game source appears to be the only option.

Special thanks to the SLADE Editor and everyone on the ShadowCaster modding thread at Doomworld. Both sources were instrumental in the development of these tools.

Please note the sample.png image file is used to obtain the Shadow Caster colour palette and is required for this tool to work.

Usage

There are three scripts included in the package that are intended to be executed directly.
isomap.py is the main isometric mapper script,
shadowdat.py is a script to extract the contents of a Shadow Caster .dat file, and shadowlib.py is a script to extract the contents of a Shadow Caster .lib file. In addition to the three scripts above, several supplimentary scripts can be run to gather debug outputs of one form or another, and are listed under the Other Scripts heading.

isomap.py

Usage: python isomap.py [LIB FILE] [cd_castr.dat] [hd_castr.dat]

Generates a isometric map for each level in the specified Shadow Caster
LIB file (typically shadow.lib). The DAT files are used for image data.

shadowdat.py

Usage: python shadowdat.py [DAT FILE]

Extracts the complete contents of a give Shadowcaster dat file.
Does not support the cutscene dat files from the CD version, only
cd_castr.dat and hd_castr.dat. The .dat file from the floppy version may
also work, although it is unknown how frequently the floppy version uses
the RLE flag.

shadowlib.py

Usage: python shadowlib.py [LIB FILE]

Extracts the complete contents of a given Shadowcaster lib file. Resources are not interpreted and are written as-is.

Other Scripts

shadowdebugmapper.py

Usage: python shadowdebugmapper.py [LIB FILE]...

Generates a debug HTML file for each level in the specified LIB file.
Each index in the map is output into a cell in an HTML table
containing the following information:

The map index

the value for each of the map layers, in order

shadowsimplemapper.py

Usage: python shadowsimplemapper.py [LIB FILE]...

Generates a debug HTML file for each level in the specified LIB file.
Each index in the map is output into a cell in an HTML table
with lines representing walls.

shadowmap.py

I didn't even write any usage instructions for this, but this
can generate image files for each layer of each map in a given lib file,
as well as CSV files for the data from each supplementary data file.

Download

ShadowCaster Mapper.tar.gz (163.1 kB)
ShadowCaster Mapper.zip (166.4 kB)

Source is available in GitHub, including the legacy Python 2.x version (under the v1.0 and v1.0a tags).

Comments

There are no comments yet.

Add a Comment
Comment Atom Feed