Skip to content

Audio and SLink

SLink connects gameplay events, animation actions, and property changes to sounds. Its database is SLink2/SLink2DB.szs, which contains SLink2DB.bslnk. The audio assets themselves are stored in .bars archives under Sound/Resource, including its Stream subdirectory.

This catalog was extracted from Animal Crossing: New Horizons 3.0.0. It contains 20,799 audio asset entries in 1,696 BARS files, with 7,072 distinct sound names explicitly referenced by SLink.

Like ELink, SLink organizes its database into users such as furniture, characters, and UI objects. A user has named asset call tables that can play a sound or select/combine child calls through containers. Calls can be requested by game code or activated through action, property, and always triggers.

A sound asset’s RuntimeAssetName identifies the audio resource to play. SLink also supplies playback settings such as volume, pitch, delay, fade-in time, sound group, and attachment bone. The BARS file contains the sound’s metadata and audio payload; .barslist resource lists refer to BARS archives.

See the xlink2 documentation for users, triggers, and call tables, and the BARS format documentation for the resource lookup tables.

Audio assets use a CRC32 hash of their name in the BARS lookup table. This table is sorted by hash; each entry points to an archive-local index. Every exported name was checked against its stored hash.

Identifier Meaning
Runtime asset name The sound resource name, such as UI_Point_Get.
Name hash (CRC32) The 32-bit name hash stored in BARS, such as 0xC8556DD8.
BARS index The zero-based position in that archive’s hash/offset tables. It is not a global sound ID.
Call-table key The name a particular SLink user uses to select a call, such as In.
Call-table GUID The identifier for a call table within that user, such as 0x18c6896d. It is separate from the sound’s CRC32 hash.

Use the name/hash and BARS file when locating an audio asset. Use the user and call-table key/GUID when investigating what triggers it. Archive indices may change when assets are added or removed.

This shortened entry comes from the UI_SonkatsuResultDialog user in the decoded SLink database:

In[0x18c6896d] {
EmitCount = 1
Oneshot = false
NoPause = false
UserFlags = 0b0
Execute = Asset {
AssetName = "In"
RuntimeAssetName = "UI_Point_Get"
GroupName = "UI_Default"
Delay = 4.0
Priority = 0.860000014
BitFlag = 0b1101
UIPanningEnable = false
}
}

The In call selects UI_Point_Get. Its audio is in Sound/Resource/UI_SonkatsuResultDialog.bars at index 2, with name hash 0xC8556DD8. Changing RuntimeAssetName changes the selected sound; replacing the corresponding audio payload changes the recording itself.

Search by sound name, hexadecimal hash, or BARS filename. All BARS paths below are relative to Sound/Resource/. Select a SLink calls count to see the users, call-table keys, and GUIDs that explicitly reference that sound. The count represents distinct user/key/GUID mappings, not how often a sound plays.

A count of 0 means there is no explicit nonblank RuntimeAssetName reference in this SLink export. It does not establish that the sound is unused: other playback paths and runtime name selection have not been exhaustively traced. @Blank is excluded because it is a placeholder rather than a sound asset.

Loading search… Showing the first 50 of 20,799 entries.

Sound nameName hash (CRC32)BARS fileIndexSLink calls
$BGM_DJ0x025F262DBgm_DJ.bars0713
$Ftr_Slide0xD38D6360Furniture_Base.bars62397
$Melody_Humming_Key000x533C65F7Npc.bars5890
$Melody_Humming_Key010x243B5561Npc.bars2590
$Melody_Humming_Key020xBD3204DBNpc.bars13190
$Melody_Humming_Key030xCA35344DNpc.bars13990
$Melody_Humming_Key040x5451A1EENpc.bars5990
$Melody_Humming_Key050x23569178Npc.bars2090
$Melody_Humming_Key060xBA5FC0C2Npc.bars12890
$Melody_Humming_Key070xCD58F054Npc.bars14490
$Melody_Humming_Key080x5DE7EDC5Npc.bars6690
$Melody_Humming_Key090x2AE0DD53Npc.bars3190
$Melody_Humming_Key100x4A2754B6Npc.bars5390
$Melody_Humming_Key110x3D206420Npc.bars4490
$Melody_Humming_Key120xA429359ANpc.bars11090
$Melody_Humming_KeyRandom000xAF75E4D4Npc.bars11790
$Melody_Humming_KeyRandom010xD872D442Npc.bars15290
$Melody_Humming_KeyRandom020x417B85F8Npc.bars4990
$Melody_Humming_KeyRandom030x367CB56ENpc.bars3990
$Melody_Humming_KeyRandom040xA81820CDNpc.bars11390
$Melody_Humming_KeyRandom050xDF1F105BNpc.bars15590
$Melody_Npc_Key000xD7A4C25ENpc.bars15145
$Melody_Npc_Key00_Steps0x9045B631Npc.bars9445
$Melody_Npc_Key010xA0A3F2C8Npc.bars10745
$Melody_Npc_Key01_Steps0x3632BD85Npc.bars3845
$Melody_Npc_Key020x39AAA372Npc.bars4345
$Melody_Npc_Key02_Steps0x07DAA718Npc.bars645
$Melody_Npc_Key030x4EAD93E4Npc.bars5445
$Melody_Npc_Key03_Steps0xA1ADACACNpc.bars10845
$Melody_Npc_Key040xD0C90647Npc.bars14845
$Melody_Npc_Key04_Steps0x640A9222Npc.bars7045
$Melody_Npc_Key050xA7CE36D1Npc.bars11245
$Melody_Npc_Key05_Steps0xC27D9996Npc.bars13545
$Melody_Npc_Key060x3EC7676BNpc.bars4545
$Melody_Npc_Key06_Steps0xF395830BNpc.bars16945
$Melody_Npc_Key070x49C057FDNpc.bars5245
$Melody_Npc_Key07_Steps0x55E288BFNpc.bars6345
$Melody_Npc_Key080xD97F4A6CNpc.bars15445
$Melody_Npc_Key08_Steps0xA3AAF856Npc.bars10945
$Melody_Npc_Key090xAE787AFANpc.bars11645
$Melody_Npc_Key09_Steps0x05DDF3E2Npc.bars245
$Melody_Npc_Key100xCEBFF31FNpc.bars14745
$Melody_Npc_Key10_Steps0x5CEFB6AFNpc.bars6545
$Melody_Npc_Key110xB9B8C389Npc.bars12545
$Melody_Npc_Key11_Steps0xFA98BD1BNpc.bars17245
$Melody_Npc_Key120x20B19233Npc.bars1745
$Melody_Npc_Key12_Steps0xCB70A786Npc.bars14245
$Melody_Npc_KeyRandom000xCDA99D63Npc.bars14645
$Melody_Npc_KeyRandom00_Steps0x71390423Npc.bars7745
$Melody_Npc_KeyRandom010xBAAEADF5Npc.bars13045

These downloads contain identifiers and references only. Each BARS asset is listed separately, including assets whose names may appear in more than one archive.

Unpack SLink2/SLink2DB.szs to obtain SLink2DB.bslnk, then use xlink2 with the Park game profile:

Terminal window
.\xlink.exe -i SLink2DB.bslnk -o SLink2DB.txt --game Park --output-type Text

Convert the edited text back to binary with:

Terminal window
.\xlink.exe -i SLink2DB.txt -o SLink2DB.bslnk --game Park --output-type Binary

Repack the resulting binary into SLink2DB.szs for the game to load it.