RSC Format (F1 Manager Professional)

From ModdingWiki
Jump to navigation Jump to search
RSC Format (F1 Manager Professional)
Format typeArchive
Max filesunlimited
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.