-
Notifications
You must be signed in to change notification settings - Fork 0
Modding resources
This page provides resources to assist in modding Riverworld including:
This section outlines what is known about the various files in Riverworld's installation. Custom ImHex patterns are provided for files which are at least partially understood.
Legend:
| ๐ฏ | The file's full purpose and contents have been verified against the game executable's code (ie all hidden features, quirks, etc not used by the files shipped with the game are known) |
| โ๏ธ | The file's purpose and contents are understood with respect to the files shipped with the game |
| ๐ก | The file's purpose and/or contents are partially known |
| ๐ง | The purpose and/or contents of the file are assumed but not yet proven |
| โ | The file's purpose and contents are unknown |
| File(s) | Analysis |
|---|---|
๐*.ASM |
๐ก |
๐*.BAK |
๐ก |
๐*.COL |
๐ก |
๐*.EXE |
๐ก |
๐*.HNS |
โ๏ธ |
๐*.LIN |
โ |
๐*.MAP |
๐ง |
๐*.ME |
โ๏ธ |
๐*.PNG |
๐ก |
๐*.RAW |
๐ก |
๐*.SPR |
๐ก |
๐*.TRK |
๐ง |
๐*.WAV |
๐ก |
๐*.WWW |
๐ง |
๐*.XXX |
๐ก |
๐*.XY |
๐ก |
๐*.ZON |
๐ง |
๐*.ZZZ |
๐ง |
๐CONFIG.L* |
โ |
๐GAME.DEF |
๐ก |
๐MAP0*.SAV |
๐ก |
๐MORPHOLO |
๐ง |
๐phrase*.txt |
โ๏ธ |
๐river.htm |
โ๏ธ |
๐RIVER0*0.SAV |
๐ก |
๐Riverworld.ini |
๐ก |
๐TOTALMAP.L* |
๐ก |
๐Uninst.isu |
โ๏ธ |
๐BORD/ |
๐ก |
๐DATA/ |
๐ก |
๐EDITOR/ |
๐ง |
๐GFX/ |
๐ก |
๐GIFS/ |
๐ก |
๐River/ |
โ๏ธ |
๐SCPE/ |
โ๏ธ |
๐Setup5/ |
๐ก |
๐Setup6/ |
๐ก |
๐TABS/ |
๐ง |
๐WAV/ |
๐ก |
๐xxx/ |
๐ก |
Despite the name, these are not assembly files. Stores human-readable definitions for one of the game's 4 levels. Levels are one-indexed with the digit following the L indicating the level number (ex LEVEL2.ASM is the terrain data for level 2).
Most of this file's contents are not understood; however, it is known to set specify which TOTALMAP.L* file will be used for the level's terrain, the list of textures to paint the terrain with, and which sky texture to load.
Some additional details from testing:
- You can change which character the player controls by changing the
TYPEPERSOfield of anyone toPLAYERand changing Burton's toIAorIAFREE - You can change the starting health of NPCs
- You can change the model used for the grailstone per territory
- You can change who owns each territory
- You can change the models used for a resource
- You can change weapons/worker/vehicle costs
- You can change the cost of research
The "S" in "ASM" is suspected to stand for "script" as all files are referenced from a list called "SCRIPTS" in the GAME.DEF file.
The file appears to be encoded using OEM 863 or one of the similar variants (the box drawing characters used in comments are corrupted otherwise).
GIFS/L1.bak is the only file with this extension in the game and it appears to be an almost exact copy of GIFS/L1.PNG but formatted as a .GIF and slightly darker. This is very likely to be a standard backup file created by a text editor (likely Multi-Edit, see .ME) that was never intended to be included with the game. It is not believed to be used by the game.
Believed to contain a color palette containing an arbitrary number of RGB colors using 8-bit channels. If true, it is suspected that such files are used to replace the colors of another image at runtime.
The format between the .COL files in the GIFS directory and those in the game's root directory appear to be different. Those in the GIFS directory appear to contain an 8 byte header followed by an array of 24-bit colors while those in the root directory do not seem to follow this pattern.
XWORLD.EXE is the build of Riverworld using DirectX for rendering. Details of the game's memory and code are not known. WWORLD.EXE is the build of Riverworld using Glide/3DFX for rendering. Details of the game's memory and code are not known.
At least XWORLD.EXE (WWORLD.EXE not tested) contains strings implying the game has a cheat menu with, at minimum, the ability to switch levels. It is not currently known how, if at all, this menu can be accessed.
Custscene files formatted using Cryo's HNM6 format. While complex and proprietary to Cryo, others have already reverse-engineered it and fully documented how it works. During gameplay, these files are streamed directly from the Riverworld CD from the hnm/ directory.
The purpose of these files is unknown; however, their inclusion in the TABS/ directory implies they may be related to fonts.
One file exists for each game level using the naming scheme MAPLEV[1-4].MAP. Interpreting each byte of the image as a greyscale pixel value produces a 512x512 pixel rendition of the level; however, it is unclear whether this is an image or data table.
These files are related to a programming text editor called Multi-Edit. They were almost certainly included in the game installer by mistake and are not likely to be used.
Typical PNG images. Spot checking some files has led to the assumption that all of Riverworld's PNGs use 8-bit color channels in indexed color mode with no interlacing or alpha channel. It is unknown if Riverworld supports any other PNG format.
Believed to be a square grid of data whose bytes index into a corresponding .COL file. Rendering the .RAW file as a greyscale image where each byte is a shade of grey reveals a representation of the corresponding level's map but with different territory boundaries than what is displayed in game. Based on this, it is suspected that that these files may be used by the game as data tables rather than literal images.
It is suspected that the L[1-4]MER.RAW and L[1-4]TER.RAW files define some kind of input to the game's AI for sea and terrain travel respectively.
๐ ImHex pattern
A sequence of indexed-color mode sprites encoded in a proprietary binary format. The sprite files included with the game are exclusively used for fonts and cursors; however, some of the game's fonts and cursors are provided in .PNGformat instead.
DATA/ESSAI.TRK is the only file with this extension. It is assumed to contain metadata for the game's character animation tracks based on the name and location.
Standard Waveform audio file used for the game's sound effects. Spot checks imply all files are mono, sampled at 22050Hz, and 16-bit PCM encoding; however, this has not been verified and is unknown if Riverworld supports any other configurations.
These files are believed to contain the game's characters and their skeletal rigging.
Theorized to contain similar data to a DirectX .x file.
๐ ImHex pattern
These files store most, if not all, of the game's 3D models and are known to include vertices, faces, normals, and material data. It is not currently known how animation data for these models is stored.
Most models are split into many smaller sub-objects within a single file; however, some files also contain multiple copies of what appears to be the same set of geometry but shifted slightly off-center in a separate element. The purpose of this duplicated geometry is unknown but theorized to be related to animations.
Theorized to contain similar data to a DirectX .x file.
๐ ImHex pattern
One of four files defining entity position data for each level. The files are named in the format L[1-4].XY.
Known to contain the starting positions of each faction leader defined in the LEVEL*.ASM file and the grailstones for each territory.
Suspected to defining the boundaries for each territory in a level.
Based on the file names, these are suspected to contain the game's character animations.
Implied to contain level configuration data but its contents and purpose are unknown.
Appears to be the game's main config file. Seeming in the same, or similar, format as a .ASM file. Includes several references to a "MIDI" directory which does not appear to exist in the released game.
๐ ImHex pattern
Terrain save data for one of the game's 10 save slots in the same format as the TOTALMAP.L* files. Save slots are zero-indexed with each index corresponding to a slot on the game's save/load screen with the top slot being 0. The second digit of the filename indicates the slot number (ex MAP04.SAV for slot 5). Each file is accompanied by a RIVER0*0.SAV file of the same slot number which contains the rest of the slot's save data.
When loading a save, the contents of this file are used instead of the corresponding map's TOTALMAP.L* file.
The only instance of this file is included in the GIFS/ directory. Its name implies a connection to animation. Its contents are a list of files with a .gif extension; however, no such files exist. That said, files with the same base names do exist in .COL format. For example, the file references boisexpl.gif and while that does not exist, the files BOISEXP0.COL, BOISEXP1.COL, BOISEXP2.COL, BOISEXP3.COL, and BOISEXP4.COL do.
Stores the game's dialogue and UI strings, presumably for i18n. Strings are grouped under sections and assigned an id number. Despite containing common strings for things like "Grail Stone", a separate file exists for each level using the format phrasel[1-4].txt.
The entry-point for the game's HTML manual. This page links to various pages in the River/ directory.
๐ ImHex pattern
Primary save data for one of the game's 10 save slots. Save slots are zero-indexed with each index corresponding to a slot on the game's save/load screen with the top slot being 0. The middle digit of the filename indicates the slot number (ex RIVER040.SAV for slot 5). Each file is accompanied by a MAP0*.SAV file of the same slot number which contains the terrain data not included in this file.
How to read the majority of this file's contents is unknown.
๐ ImHex pattern
Created dynamically by the installer and tells the game which drive to check for it's CD. The purpose of one byte in the file is unknown.
๐ ImHex pattern
Stores terrain data for one of the game's 4 levels. Levels are one-indexed with the digit following the L indicating the level number (ex TOTALMAP.L2 is the terrain data for level 2).
The game's terrain is represented as a 512x512 grid of cells. Each cell is a quad split into two triangles from the top-left vertex to the bottom-right allowing each vertex of the quad to be at a different height; however, the terrain file only contains the height of one corner of each cell with the rest being computed (see Vertex height calculation). Each cell is also assigned a texture using an zero-based index into the list of textures defined in the LEVEL*.ASM file which references this terrain file. Additionally, each cell is assigned several flags; however, the exact purpose of each flag is not fully understood.
The terrain's height does not appear to impact gameplay in any way. Characters and ground-based vehicles are snapped to the surface of the the terrain under them and are capable of traversing vertical cliffs with no side-effects. Additionally, the game does not set any automatic boundaries at the edges of the terrain. Assuming the edge cells are flagged as traversable in this file, characters are capable of walking past the edges of the terrain and wrapping around to the opposite side of the level (see Vertex height calculation).
The height value of a terrain cell stored in this file is backwards. A value of 0 indicates the maximum height while a value of 255 is the lowest. The unit of height and scale relative to the game's models is not known.
The grid of cells form a 513x513 mesh of vertices with each height value calculated as follows:
- The left and right top vertices of every cell on the first row are 0
- The bottom-left vertex of the first cell in the first row is also 0
- The bottom-left vertex of every other cell in the first column is set to the height of the bottom-right vertex of the last cell in the previous row
- The bottom-right vertex of every cell is set to the height defined in the file
In-game, the terrain is repeated horizontally with a one row offset so the vertices align. The game also displays infinite cells before and after the first and last rows respectively; however, these cells are rendered as though their heights were set to 0 and always use a texture index of 0 with exception of the the first cell after the last row which gets its bottom-right vertex height from the last cell of the last row (ie following the same logic as if it were a normal row).
The game's uninstaller.
Stores the first-person overlays for the game's vehicles as .PNGs with various sizes. None of the PNG's use transparency but are rather color-keyed with either solid red, green, or blue to represent which areas will be transparent in-game.
The name "BORD" is likely an abbreviation of the French word for "onboard", "ร bord".
Appears to contain the game's animated models and their animation tracks in the form of .WWW and .ZZZ files respectively.
The purpose of these files is unclear but suspected to either be remnants of a level editor not included in the final game or part of the final game's UI.
Appears to contain the in-game UI elements. Menu UI elements appear to be within Setup5 and Setup6.
Misleadingly, this directory primarily contains .PNG files for the game's models. No .GIF files are present. UV-mapped PNGs in this directory all appear to be 256x256.
There are also many sequentially named .COL files that appear to be intended for color palette animation.
It is speculated that Cryo used "GIFS" for the directory name since PNG was a relatively new format at the time.
Appears to define which areas of the minimap will be highlighted when an area is captured. Each color seems to correspond to an area id within the game. Does not control the territory outlines.
These files appear to be greyscale representations of each level; however, changing or deleting these files does not appear to impact the game so it is theorized they are unused assets.
Swapping these files with that from another level doesn't immediately appear to change anything in-game but deleting them causes the game not to load so they are used. Their purpose is unknown.
Contains the game's HTML manual. The contents of the manual are different from the printed manual included with the game. The river.htm file in the top-level directory of the game's installation is the entry-point for the manual and links to other HTML files in this directory.
Contains the textures for each level's terrain. All textures are 64x64 .PNGs. Solid black pixels appear to be color-keyed for where water will be rendered instead of the literal texture data. Regardless of the colors in the file, the PNG will be rendered using a 256 color palette specific to each level. It is not currently clear where the palette is defined.
Which textures are used by each level is defined in the level's LEVEL*.ASM file.
The game will use the color of the first pixel of a cell's texture (using the level's color palette) to determine the base color of that cell on the map.
The "PE" in the directory name is suspected to be an abbreviation of the French word for landscape, "Paysage".
The contents of this directory primarily contain menu UI elements for the game including those seemingly for the advertised multiplayer mode; however, there is no menu option within the game to start a multiplayer session and it is believed to have been cancelled before release. That said, early reviews of the game claim that Cryo did release a standalone multiplayer version.
Appears to contain menu UI buttons. It is unclear why these are separate from similar files in Setup5/.
Appears to primarily contain the game's fonts. The purpose of the included *.LIN files is unknown.
The name "TABS" is believed to be an abbreviation for "tables" and likely refers to font tables.
Contains the game's sound effects. The game's music is streamed directly from the game's CD audio tracks.
Contains the majority of the game's models in .XXX format. Models for characters are stored in DATA/.
It can sometimes be helpful to override the game's assets to help isolate and observe certain characteristics. To help, various test assets have been created:
The assets in these directories are organized into sub-folders to match where they should be placed in the game's installation. Once added, you can then either rename these files to overrite files you wish to replace or modify the game's config/model files to use the debug textures instead.
Being developed by a French studio, most of the game's files are written using French abbreviations. To aid in modding, translations for common abbreviations are provided as a reference.
- bois: wood
- boi: wood
- pier: stone
- pie: stone
- bron: bronze
- ferr: iron
- fer: iron
- poud: gun powder
- char: coal
- elec: electrical
- petr: oil
- pet: oil
- uran: uranium
- cybe: cyber
- stel: stellar
- brut: raw
- gise: deposit
- pois: fish
- ress: resource
- graal: grailstone
- depo: store
- forge: workshop
- forg: workshop
- atel: armory
- hang: civil port
- garde: watchtower
- gard: watchtower
- aero: airport
- ecol: laboratory
- hutp: house
- vila: house
- usin: civil factory
- usim: military factory
- mura: wall
- jave: javelin
- bouc: shield
- mass: club
- armu: armor
- fusi: rifle
- boulet: bullet
- rado: raft
- avio: plane
- fort: fortress
- freg: frigate
- soni: super-sonic aircraft
- grav: anti-grav vehicle
- vais: transporter
- moye: medium weight
- inte: bold?
- peti: light weight?
- smal: light weight?
See a mistake? Know something we don't? Contributions are always welcome! Check out the contributing guide to get started.