Outbreak's RDT Format

Table of Contents

Overview

In Resident Evil Outbreak, RDT files contain supplementary gameplay data related to a particular room in a given scenario. An RDT file contians information like the sound bank data for footstep sounds, sound bank data for environment sounds, camera definitions, lighting configuration, triggers, spawn points, pushable object grid information, etc...

Binary Format

Header of any given RDT file is as follows...

struct RDTSectionDef {
    u32 offset;
    s32 size;
}; // size: 8 bytes

struct RDTHeader {
    RDTSectionDef sections[32];
};

where in RDTSectionDef:

Section Table

Section ID Description
0
Camera set definitions
1
Room script
2
Footstep sound bank
3
Environment sound bank
4
Unknown
7
Spawn point definitions
10
Trigger definitions
11
Point light configuration
13
Fog and directional light configuration
14
Pushable object grid information
15
Route information
16
Background sound configuration

Section Information

Camera sets

Contained in section with index 0. TODO

Script

Contained in section with index 1. For more information see "Script Format".

Sound banks

TODO

Spawn points

Spawn points are contained in section with index 7.

When teleporting players from the script, often than not, these spawn points are used to determine where the player will end up. That includes initial player spawn.

NOTE: Certain script opcodes apply the teleportation only after a demo is played.

The section format can be described as follows...

struct SpawnPoint {
    s32 positionX;
    s32 positionZ;
    s32 rotationY;
    s32 unknown0;
    s32 unknown1;
    s32 positionY;
    s32 unknown2;
    s32 unknown3;
}; // size: 20 bytes

struct SpawnPointsSection {
    u32 count;
    SpawnPoint points[count];
};

where

Triggers

Contained in section with index 10. TODO

Lighting

Contained in section with index 11. TODO

Fog

Contained in section with index 13.

This section contains basic fog and directional light configurations. Which specific configuration is used is determined by the current camera set.

Format of this section can be described as follows...

struct Color32BGRA {
    u8 blue;
    u8 green;
    u8 red;
    u8 alpha;
}; // size: 4 bytes

struct ColorRGBAF {
    f32 red;
    f32 green;
    f32 blue;
    f32 alpha;
}; // size: 16 bytes

struct FogConfig {
    u32         enabled;
    f32         fogBegin;
    f32         fogEnd;
    Color32BGRA fogColor;
    Color32BGRA stageAmbient;
    Color32BGRA objectAmbient;
    u32         shadowConfig;
    s16         shadowRotation[4];
    ColorRGBAF  dirLightDiffuse;
    ColorRGBAF  dirLightAmbient;
    ColorRGBAF  dirLightSpecular;
    s32         dirLightRotation[2];
    s32         towardsCamera;
}; // size: 96 bytes

struct FogSection {
    u32         tag; // Always set to 2
    u32         count;
    u32         offsets[count];
    FogConfig   configurations[count];
    Color32BGRA backgroundColor;
};

where in FogConfig:

in FogSection:

NOTE: The alpha channel of colors inside fog structures is ignored and is there for padding purposes.

Shadow config description

Bits Meaning
0-1
Client player shadow mode
2-3
Other player shadow mode
4-5
NPC shadow mode
6-7
Enemy shadow mode

Shadow mode description

Mode ID Meaning
0
Silhouette shadow
1
No shadow
2
Round shadow
3
No shadow

Pushable object grid

Contained in section with index 14. TODO

Routes

Contained in section with index 15. TODO

Background sound

Contained in section with index 16.

struct ivec3 {
    s32 x, y, z;
};

struct vec3 {
    f32 x, y, z;
};

struct SoundWalkArea {
    u32   priority;
    ivec3 area[8];
    u8    material[2];
    u8    _padding[2];
}; // size: 104

struct SoundSource {
    u32  enabled;
    u32  sound;
    vec3 position;
    u32  curve;
    u32  behavior;
}; // size: 28

struct SoundConfSection {
    u32 walkAreaCount;
    u32 soundSrcCount;
    u32 offsets[walkAreaCount];

    SoundWalkArea walkAreas[walkAreaCount];
    SoundSource   sources[soundSrcCount];

    u8  defaultMaterial[2];
    u8  _padding[2];
    u32 unknown;
    u32 reverbDepth;
    u32 reverbDelay;
    u32 reverbFeedback;
};

where in SoundWalkArea:

in SoundSource:

in SoundConfSection:

Last updated on 2025-02-09.