TO:R Data Map

scnf: sead's config, sound/sead.config

Source
docs/formats/scnf.md
SHA-256
ba1350f7…410cbdc6

The settings of Square Enix's sead sound engine: its sound categories, buses, effect presets, events and the like. One file, sound/sead.config (3,008 bytes), with no wrapping (no RotXor or ZIP). It is built like a sound bank (sabf): a 16-byte header, a table of chunks, and chunks that start with a header and a table of offsets to what they hold.

Based on sound/sead.config, 3,008 bytes; the unpacked executable, SHA-256 7b0230a11498f40396c9048345e7cfe0ef442cb7ca8faffc6f197920d2669599.
Checked 2026-10-11
Method A single-file C# program (scnf.cs, session scratchpad) that walks the header, chunk table and each chunk's offsets; hex inspection; static analysis with Ghidra 12.1.4 through the decompiled code in local/exe/decomp/ of the sound system's setup (0x1401a9020) and sead's config loader (0x1405e2560, and the readers 0x1405dbd50 and its siblings); ftsound.cs (the file table's sound/ records); the R31 review of names (2026-10-11). One file, so every value below is that file's. Not yet decoded or rebuilt by the toolchain, and no in-game tests.
Offset Size Type Name Meaning Confidence Source
0x00 4 raw[4] magic scnf. sead checks it. confirmed Hex; checked by 0x1405dca50.
0x04 1 u8 unk_0x04 0. The config reader ignores it and takes the chunk table at header_size; in a bank this byte is version. — scnf.cs; 0x1405dbd50.
0x05 1 u8 unk_0x05 0. — scnf.cs.
0x06 2 u16 header_size 0x10. confirmed scnf.cs.
0x08 1 u8 chunk_count 13. confirmed scnf.cs.
0x09 1 u8 unk_0x09 0. The config reader ignores it; in a bank this byte is name_length. — scnf.cs; 0x1405dbd50.
0x0A 2 u16 unk_0x0A 0. — scnf.cs.
0x0C 4 u32 file_size 3,008, the file's size. sead copies this many bytes of the file into its own buffer, so it must not be larger than the file. confirmed scnf.cs (= the size); its use: 0x1405e2560, likely.

Chunk table

At 0x10, 13 records of 16 bytes, laid out as a bank's (sabf.md): a 4-byte tag, three fields that are 0, 0 and 16, the chunk's offset from the start of the file, and 0. The chunks follow the table back to back, each at a 16-byte boundary, the last ending at the end of the file (confirmed, scnf.cs).

Chunk Tag Offset Count What it holds
0 ctgr 0xE0 6 Categories: music, se, voice, amb_se, sys_se, mouse_se.
1 bus 0x1D0 2 Buses: Master, SpeedChange.
2 mcr 0x290 2 Macros.
3 epsp 0x300 4 Effect preset packs: Speed_Normal, Speed_Double, Speed_Triple, Speed_Quad.
4 eps 0x460 22 Effect presets (bus-effect parameter blocks).
5 curv 0x980 1 Curves.
6 expr 0x9D0 0 External parameters (ExternalParameterChunk); none here.
7 hcam 0x9E0 — Not an offset table: 16 bytes, with 44100 at +0x4 (HCA-MX settings, by sead's ConfigFile names).
8 evt 0x9F0 4 Events: Play1xSpeed, Play2xSpeed, Play4xSpeed, Play3xSpeed (the battle-speed setting).
9 ctgl 0xB10 1 Category layers (CONFIGCATEGORYLAYER): default.
10 spka 0xB50 — Not an offset table: the speaker angles setting (CONFIGSPEAKERANGLESSETTING).
11 pext 0xBA0 0 Platform extra settings; none here.
12 zeon 0xBB0 0 Zero-one (sead's "zeroone"); none here.

The names in the last column are the items' own name strings (scnf.cs, hex), and for the chunks' kinds sead's class names in the executable (ConfigFile::CategoryChunk, ExternalParameterChunk, CONFIGBUSEFFECT*, CONFIGCATEGORYLAYER, CONFIGSPEAKERANGLESSETTING, …): likely. sead's list of config tags is at 0x1406a66b0.

How the game reads it

Leads