Chasm: The Rift
Chasm: The Rift is an FPS game from the twilight of the DOS era, developed by Action Forms Ltd. and released in 1997. The engine, contrary to popularly spread misinformation, is not based on Quake but appears to be an original, and has some interesting features but is also, for its time, somewhat limited regarding the level geometry that can be created.
A level editor is included on the game CD, and some enemy and weapon stats can be modified using a plain text configuration, but certain other aspects of modifying the game (such as the 3D models) remain poorly understood.
The following file formats are used by this game.
|csm.bin||BIN Format (Chasm)||Main data archive|
|chasm2.pal||VGA Palette (6-bit version)||Game palette|
|chasm.inf||CHASM.INF||Configures enemy and weapon stats|
|*.rgb||256x255 color index array||Translucency tables|
|*.3o||3O Format||3D models (weapons, scenery)|
|*.ani||ANI Format (Chasm)||Data to animate models|
|*.car||CAR Format||Contain data for "living" entities (player, monsters)|
|*.obj||OBJ Format (Chasm)||Sprites Possibly multiple frames per file|
|*.cel||CEL Format (Chasm)||Textures and raster graphics|
|resource.**||RESOURCE (Chasm)||Level data (definitions)|
|process.**||PROCESS (Chasm)||Level data (action scripts)|
|floors.**||FLOORS (Chasm)||Floor graphics associated with level|
|map.**||MAP (Chasm)||Level data|
|script.**||SCRIPT (Chasm)||Level data (cutscene scripts, not present in every level)|
|*.raw||Raw PCM audio, unsigned 8-bit PCM, mono, little-endian, 11025 Hz||Sound effects|
|*.pcm||Raw PCM audio, unsigned 8-bit PCM, mono, little-endian, 11025 Hz||Sound effects|
|*.sfx||Raw PCM audio, unsigned 8-bit PCM, mono, little-endian, 11025 Hz||Sound effects|
|chasm.r??||Likely recorded gameplay with ?? corresponding to level number|
|chasm.key||Appears to be related to keyboard layout|
|menu.txt||Plain Text||Appears to configure aspects of the game menu (possibly useful for translation only?)|
Archive and addons
Most of the files listed above are normally stored inside CSM.BIN. However, an addon loaded with the "-addon:<addon_dir>" game parameter can read replacement files from an open directory structure, provided that they are placed in the correctly named subdirectory.
Levels are not stored in a single file, but several files with an extension .01, .02 etc. corresponding to the level number. The process.**, script.** and resource.** files are in plain text; process defines action scripts using a scripting language explained in the level editor documentation, script defines a cutscene for the level and resource defines level settings such as title, CD track to play for background music, 3O, CEL and WAV files used, etc. The map.** and floors.** files contain binary data; floors contains graphics for the floors (and probably ceilings) and appears to use a mipmap system.
Level 99 exists in CSM.BIN, but is not a playable level and cannot be warped to. Instead, it is a special case use of the map format whose purpose is to provide the background scenes for the mission briefing cutscenes. The "room" numbers in the script.** files correspond to the numbered player starts in level 99.
CHASM.RGB and CHASM60.RGB are almost identical in construction to the TINTTAB format used in Heretic and Hexen except that there is no 256th row for the final color (which in Chasm is a dummy/transparent color). CHASM.RGB appears to be a 50-50 blend while CHASM60.RGB appears to have a stronger influence from one of the colors (perhaps 60-40, judging by the file name?)
The .CAR format is believed to be an early iteration of the format used by the Carnivores games for Windows (however, Chasm's .CAR data might be more closely related to the Chasm .3O files). Part of the data contained are sounds for the entity that the .CAR defines.
A project to reverse-engineer and re-implement the game's engine is being worked on by Artöm "Panzerschrek" Kunz and can be found here: