RSC Format (F1 Manager Professional)
Format type | Archive |
---|---|
Max files | unlimited |
File Allocation Table (FAT) | None |
Filenames? | only B |
Metadata? | only B |
Supports compression? | No |
Supports encryption? | No |
Supports subdirectories? | No |
Hidden data? | No |
Games |
F1 Manager games by Software 2000 use the RSC Format to store various game assets.
File Format
There are 2 different formats used by Software 2000:
- Variant A: Stores VGA palettes, PCX images and sound files (f1_e.rsc and user_e.rsc)
- Variant B: Stores BRender assets: actors, models, materials, lights and cameras (3d.rsc)
Variant A: f1_e.rsc - palettes, PCX, sprites and sounds
Signature
Archive files start with a plain ASCII signature "PROLINE Resource File (c) 1997 by PROLINE Software GmbH". The archive file has no further header.
File Entry
The entries in the archive are described by their size followed by the actual unencoded contents of the entry:
Data type | Name | Description |
---|---|---|
UINT32LE | size | Size of entry |
BYTE[size] | data | Unencoded data of entry |
The archive itself holds no description of its contents, so the offsets must be deduced from the executable reading the archive. There is no compression or special encoding used.
Variant B: 3d.rsc - BRender actors, models, etc.
Header
Those files have no signature and start with a simple header:
Data type | Name | Description |
---|---|---|
UINT32LE | num_directories | Number of directories in the archive |
UINT32LE | num_files | Number of files in the archive |
File entry
A list of num_files file entries follows the header:
Data type | Name | Description |
---|---|---|
UINT32LE | offset | Offset of data in file |
UINT32LE | size | Size of data |
UINT16LE | directory | Index into directories |
char[14] | name | Name of file entry |
typedef struct { uint32_t offset; uint32_t size; uint16_t directory; char name[14]; } file_entry;
Directory Entry
A list of num_directories directory entries follows the file entries:
Data type | Name | Description |
---|---|---|
char[80] | name | Name of the directory |
typedef struct { char name[80]; } dir_entry;
After the directory entries the actual data as referenced by the file's offset field will start.