You are on page 1of 12

RE4UHD FSE & ESE Tool

Tutorial by Mr.Curious
Tools by Son of Persia
When we are dealing with sound in RE4UHD there are numerous files that come into play and it can often
be a very complicated part of the game to mod. In this tutorial we will overview some of the functions of
the files associated with modding sound in RE4UHD and then discuss some of the tools we have at our
disposal.

File types associated with Sound in Resident evil 4 UHD

FSE - FootStepEnvironment file that handles the trigger areas, volumes, muting and placement of
environmental sounds like wind, rain, lightning etc. This file is also responsible for determining which
footsteps sounds are used in specific areas of the rooms

ESE - like the FSE this file controls the placement of certain sounds, most often sounds we hear that are
specific to a particular location and usually constant. Examples include the buzzing of insects, the sound of
fire burning etc.

XWB - XactWaveBank file that contains the .wav files that are heard in the game. These files can be
opened with the UnXWB tools (not by Son of Persia). Once the .wav files are extracted they can be edited
how we see fit and then placed in Microsoft's XACT program where they can be collected and remade into
XWB files. XWB files work hand in hand with the XSB file.

XSB - XactSoundBank file that is responsible for the cueing of the .wav files located in the XWB file.
There are no present tools to edit these files, however it is possible to generate new XSB files with the
XACT program mentioned above. -
XSB contains infos/commands, when and how to play the wavs. There are 4 types of such commands:

events, tracks, sounds and cues:

A track contains a "link" to ONE wave and events. The simplest case is: the event "play" followed by a link
to the wavebank (e.g. "MUS 420.xwb") and the wave number in the wavebank.
A sound contains one or more tracks and properties (volume, category...)
A cue contains one or more Sounds and properties (e.g.playing possibility for each sound, crossfading,...)

Usually, each cue has a cuename - so to speak the "interface" between game and .xsb files: the game
calls the XACT engine with the cuename, the XACT engine looks up the .xsb files and plays the cue..

SND - While the research on this file is incomplete, study of this file suggests that it works in tandem with
XWB & XSB files as a secondary cue file. It is worth mentioning that many of these files (despite that we
don't have tools for all of them) often work in tandem with other files.

Working with the FSE Tool


Like many of Son of Persia's tools the FSE tool can extract files into 2 working files; .txt file that is
accompanied by an .obj file that we can edit in 3dsMax. The .txt file contains some of the sound
parameters (like filters, sound type etc) while the .obj file handles the triggerzone areas for their relative .txt
file entries.

File Extraction
To extract an FSE file simply place the file in the same folder as the RE4UHD_FSE_Tool.exe and .bat
files. Double click on the FSE_Extract.bat file. Once this is complete you will see that a new folder has
been generated. Inside this new working directory are the aforementioned .txt file and .obj files. We are
now able to edit the parameters in the .txt file and/or edit the locations of the triggerzones in the .obj file.
For more information on this part of the process please see read the ‘Understanding the extracted OBJ
files’ section of the ‘Universal Concepts’ document that is provided with this release.

Functions of the FSE file


There are numerous functions of the FSE file that we will observe in this tutorial. The first is that of the
Sounds of Footsteps. The second is the Environmental sounds. Lastly we will have a look at placing music
in certain rooms.

1 - Sounds of Footsteps
This part of modding the FSE file is fairly straightforward. We simply use a triggerzone to determine which
type of foot step sounds are going to be played when the player walks through the triggerzone. This is an
effective way of creating a more realistic feel, like when we are walking over bricks and then suddenly we
are walking over a wooden floor. The sound's activation are controlled by the FSE triggerzones.

It should be noted that we do not have access to all types of floor sounds with each room. Since every
room is different, there are only certain sounds that are capable of being be triggered for the room we are
working on. For example, if we are modding room r100 there are no metallic floor sounds which we can
trigger with the FSE file. If we wish to add sounds that are not native to a room we must replace one of the
existing floor sounds in the XWB file located in the Resident Evil 4\BIO4\snd \foot\Stx using the UnWXB
tool described at the begging of this tutorial.

There are 4 offsets used in each .txt file that can change the footstep sound:

Offset[68] = 0x2 (footstep sound)


Offset[69] = 0x0 (footstep appearance)
Offset[70] = 0x0
Offset[71] = 0x7

As the research is not complete we are still unsure of what these 4 offset values actually mean, but we can
simply copy/paste these values from other entries to get instant results. Try to experiment with each file to
see what results you get. Sometimes when we don’t have definitive data all we can do is experiment.

2 – Environmental Sounds
The second function of the FSE file is that which controls the Environmental Sounds which includes wind,
rain, lightning etc. With the FSE tool we can use triggerzones & hte .txt file to either start/stop these sounds
completely or we can use filters to change their overall volume as heard in the game.

It should be noted however again that not all sounds are at our disposal for each room. While the
sounds for the footsteps are located in Resident Evil 4\BIO4\snd \foot\Stx some of the weather sound
files themselves are located in the \Resident Evil 4\BIO4\snd\bio4midi.xwb file. There are other times
when some of the environmental sounds are located in the Resident Evil 4\BIO4\snd \room\ folder so we
have to pay strict attention where the sounds we wish to controll are located.

Even though all the sounds for the environment are inside this file it doesn’t mean that we can simply use
them for any room. For reasons I suspect are linked to scripts in the EXE file, we are only able to trigger
environment sounds that are native to the room we are editing. It seems that the \bio4midi.xwb file sounds
can not be changed.

UNDERSTANDING THE FSE .txt FILE


Now that we have an extracted FSE file, let's look at an example of a few entries from this extracted file
from r10f. Please note that any text in parenthesis are only my notes, not actually part of the extracted .txt
file) While the data on these file types is still incomplete we do know some things about the offsets below,
however there may more types than what is presented in this tutorial:
ID = 0x203 (type)
Index = 0x81 (index number of entry)
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = 0.006042 (all purple is triggerzone area)
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = -7039.867188
FootStepZoneCorner0_Y = -39021.031250
FootStepZoneCorner1_X = -4608.020996
FootStepZoneCorner1_Y = -37648.964844
FootStepZoneCorner2_X = -3673.585205
FootStepZoneCorner2_Y = -39163.562500
FootStepZoneCorner3_X = -6310.171875
FootStepZoneCorner3_Y = -40246.636719
Offset[68] = 0x13 (RAIN unknown value)
Offset[69] = 0x13 (WIND unknown value)
Offset[70] = 0x1 (filters wind (0xYY is filter for sound) lower the value = stronger filter
Offset[71] = 0x1 (filters rain (0xYY is filter for sound) lower the value = stronger filter
Offset[72..75] = 0x258 (FILTER)
Offset[76..79] = 0x258 (FILTER)
Offset[80..83] = 0x190000 (unknown)
Offset[84..87] = 0x…..

Above are some of the offsets that control different aspects of an environmental change of sound. In this
example we have a triggerzone that stops the sounds of certain weather when the player walks through the
triggerzone. This type is useful for scenarios where the player is walking outside from inside a building. In
this example we have the file cancelling the Rain & Wind while preserving the sound of the lightning. The 4
rows of offsets that are seen in red (Offset[68] - Offset[71] are of particular interest as these are the
values that determine which environment sound is affected ,and by how it is affected. I have found
varying results form copying/pasting these 4 rows of offsets form other entries (or from other files) to see
how this file behaves.

When we are dealing with the starting/cancelling of weather sounds (usually when entering or leaving a
building) there are always 2 sets of triggers that re side by side; one to start the weather sounds, the other
to disable them.

Below are some more examples that were found from different rooms in the game. You can use these as
templates to experiment with depending on the room you are modding:

STOPS Rain, allows Wind & Lightning


(ID = 0x303 STOPS lightning)
ID = 0x203
Index = 0x86
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = 187.553192
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = 61222.996094
FootStepZoneCorner0_Y = 43010.824219
FootStepZoneCorner1_X = 63062.753906
FootStepZoneCorner1_Y = 42987.406250
FootStepZoneCorner2_X = 63270.816406
FootStepZoneCorner2_Y = 41561.531250
FootStepZoneCorner3_X = 61175.285156
FootStepZoneCorner3_Y = 41597.378906
Offset[68] = 0x1
Offset[69] = 0x1
Offset[70] = 0x1
Offset[71] = 0x0
Offset[72..75] = 0x258 FILTER
Offset[76..79] = 0x0
Offset[80..83] = 0x….

Makes Lightning quieter


ID = 0x303
Index = 0x13
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = - 6644.315918
FootStepZoneHeightBoundary2 = 5856.899902
UnknownValue = 500.000000
FootStepZoneCorner0_X = 73511.484375
FootStepZoneCorner0_Y = 63672.792969
FootStepZoneCorner1_X = 86968.835938
FootStepZoneCorner1_Y = 62473.625000
FootStepZoneCorner2_X = 88157.320313
FootStepZoneCorner2_Y = 42933.222656
FootStepZoneCorner3_X = 66717.734375
FootStepZoneCorner3_Y = 44558.367188
Offset[68] = 0x0
Offset[69] = 0x0
Offset[70] = 0x0
Offset[71] = 0x7
Offset[72..75] = 0x64 FILTER
Offset[76..79] = 0x0
Offset[80..83] = 0x….

Cancel Rain
ID = 0x203
Index = 0x81
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = 187.560303
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = -941.808594
FootStepZoneCorner0_Y = 65722.765625
FootStepZoneCorner1_X = 774.109375
FootStepZoneCorner1_Y = 65804.812500
FootStepZoneCorner2_X = 806.206970
FootStepZoneCorner2_Y = 61914.164063
FootStepZoneCorner3_X = -718.148376
FootStepZoneCorner3_Y = 61870.023438
Offset[68] = 0x1
Offset[69] = 0x1
Offset[70] = 0x1 (0xYY is filter for rain) lower the value = stronger filter
Offset[71] = 0x0
Offset[72..75] = 0x258
Offset[76..79] = 0x….

Cancel Rain & Wind (keeps Lightning) from r10f


ID = 0x203
Index = 0x81
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = 0.006042
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = -7039.867188
FootStepZoneCorner0_Y = -39021.031250
FootStepZoneCorner1_X = -4608.020996
FootStepZoneCorner1_Y = -37648.964844
FootStepZoneCorner2_X = -3673.585205
FootStepZoneCorner2_Y = -39163.562500
FootStepZoneCorner3_X = -6310.171875
FootStepZoneCorner3_Y = -40246.636719
Offset[68] = 0x13 (RAIN) unknown value
Offset[69] = 0x13 (WIND) unknown value
Offset[70] = 0x1 (filters wind (0xYY is filter for sound) lower the value = stronger filter
Offset[71] = 0x1 (filters rain (0xYY is filter for sound) lower the value = stronger filter
Offset[72..75] = 0x258
Offset[76..79] = 0x258
Offset[80..83] = 0x190000
Offset[84..87] = 0x0
Offset[88..91] = 0x…..

Restart Rain
ID = 0x203
Index = 0x80
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = 111.498497
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = -7789.617188
FootStepZoneCorner0_Y = 65299.503906
FootStepZoneCorner1_X = -4801.250000
FootStepZoneCorner1_Y = 65727.218750
FootStepZoneCorner2_X = -5091.085938
FootStepZoneCorner2_Y = 61820.796875
FootStepZoneCorner3_X = -8068.593750
FootStepZoneCorner3_Y = 62232.222656
Offset[68] = 0x1
Offset[69] = 0x0
Offset[70] = 0x0
Offset[71] = 0x0
Offset[72..75] = 0x64
Offset[76..79] = 0x0
Offset[80..83] = 0x….

Restart Rain & Wind (keeps lightning) from r10f


ID = 0x203
Index = 0x80
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = -0.005249
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = -8428.497070
FootStepZoneCorner0_Y = -37677.218750
FootStepZoneCorner1_X = -6225.331055
FootStepZoneCorner1_Y = -36464.179688
FootStepZoneCorner2_X = -4986.394043
FootStepZoneCorner2_Y = -37658.207031
FootStepZoneCorner3_X = -7728.833984
FootStepZoneCorner3_Y = -39011.265625
Offset[68] = 0x13
Offset[69] = 0x0
Offset[70] = 0x0
Offset[71] = 0x0
Offset[72..75] = 0x64
Offset[76..79] = 0x64
Offset[80..83] = 0x190000
Offset[84..87] = 0x190
Offset[88..91] = 0x0
Offset[92..95] = 0x….

Stop Rain & Wind (from r118)


ID = 0x203
Index = 0x81
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = 226.123566
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = -47435.648438
FootStepZoneCorner0_Y = 13809.881836
FootStepZoneCorner1_X = -44970.332031
FootStepZoneCorner1_Y = 15745.849609
FootStepZoneCorner2_X = -43364.933594
FootStepZoneCorner2_Y = 13624.481445
FootStepZoneCorner3_X = -46054.750000
FootStepZoneCorner3_Y = 11662.750000
Offset[68] = 0x13
Offset[69] = 0x13
Offset[70] = 0x12
Offset[71] = 0x12
Offset[72..75] = 0x258
Offset[76..79] = 0x158
Offset[80..83] = 0x10000
Offset[84..87] = 0x0
Offset[88..91] = 0x….

The above examples were taken from various rooms that had environmental changes. Feel free to
experiment with these examples and try to find new ones from other rooms on your own.

MUSIC IN THE AIR


It should be noted that in certain rooms we hear music playing. These songs are triggered by the FSE
which calls on the files from the bio4bgm.xwb file. We are free to edit this file to use any songs we want
using the XACT tools.

The following FSE entry will generate a song (in some rooms) when entering the triggerzone
NOTE* Offset[80..83] = determines which song file plays (see full list below for file names)

# Entry 5 Data
# starts music

ID = 0x203
Index = 0x82
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = -0.001831
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = -13879.056641
FootStepZoneCorner0_Y = 17291.673828
FootStepZoneCorner1_X = -12603.895508
FootStepZoneCorner1_Y = 16900.998047
FootStepZoneCorner2_X = -13556.769531
FootStepZoneCorner2_Y = 14822.679688
FootStepZoneCorner3_X = -14687.317383
FootStepZoneCorner3_Y = 15348.590820
Offset[68] = 0x10
Offset[69] = 0x10
Offset[70] = 0x0
Offset[71] = 0x0
Offset[72..75] = 0x0
Offset[76..79] = 0x0
Offset[80..83] = 0x190000 (song id)
Offset[84..87] = 0x0
Offset[88..91] = 0x0
Offset[92..95] = 0x0
Offset[96..99] = 0x0
Offset[100..103] = 0x0
Offset[104..107] = 0x0
Offset[108..111] = 0x0
Offset[112..115] = 0x0
Offset[116..119] = 0x0
Offset[120..123] = 0x0
Offset[124..127] = 0x0
Offset[128..131] = 0x0

# Entry 6 Data -0
# ends music

ID = 0x203
Index = 0x6
Offset[4..7] = 0x8
Offset[20] = 0x1
Offset[21] = 0x1
FootStepZoneHeightBoundary1 = -8500.002930
FootStepZoneHeightBoundary2 = 1000.000000
UnknownValue = 500.000000
FootStepZoneCorner0_X = 22277.080078
FootStepZoneCorner0_Y = 40427.246094
FootStepZoneCorner1_X = 23908.900391
FootStepZoneCorner1_Y = 40301.847656
FootStepZoneCorner2_X = 23893.089844
FootStepZoneCorner2_Y = 37561.863281
FootStepZoneCorner3_X = 22210.984375
FootStepZoneCorner3_Y = 37535.929688
Offset[68] = 0x10
Offset[69] = 0x0
Offset[70] = 0x0
Offset[71] = 0x0
Offset[72..75] = 0x0
Offset[76..79] = 0x0
Offset[80..83] = 0x280000 (song ID)
Offset[84..87] = 0x190 (fade time)
Offset[88..91] = 0x0
Offset[92..95] = 0x0
Offset[96..99] = 0x0
Offset[100..103] = 0x0
Offset[104..107] = 0x0
Offset[108..111] = 0x0
Offset[112..115] = 0x0
Offset[116..119] = 0x0
Offset[120..123] = 0x0
Offset[124..127] = 0x0
Offset[128..131] = 0x0

List of song files from bio4bgm.xwb


and their Offset[80..83] values:

0x10000 - 00000001.wav
0x20000 - 00000001.wav (Same as above)
0x30000 - 00000002.wav
0x40000 - 00000003.wav
0x50000 - 00000004.wav
0x60000 - 00000005.wav
0x70000 - 00000006.wav
0x80000 - 00000007.wav
0x90000 - 00000008.wav
0xA0000 - 00000009.wav (r11d camp)
0xB0000 - 0000000a.wav
0xC0000 - 0000000b.wav
0xD0000 - 0000000c.wav
0xE0000 - 0000000d.wav
0xF0000 - 0000000e.wav
0x100000 - 0000000f.wav
0x110000 - 00000010.wav
0x120000 - 00000011.wav
0x130000 - 00000012.wav use for r204
0x140000 - 00000013.wav
0x150000 - 00000014.wav (beginging of r11d)
0x160000 - 00000015.wav (beginging of r11d) same music as file above
0x170000 - 0000000f.wav (same as 0x100000)
0x180000 - 00000015.wav (r11d)
0x190000 = 00000017.wav - merhcant music
0x1A0000 = 00000018.wav
0x1B0000 = 00000019.wav
0x1C0000 = 0000001a.wav
0x1D0000 = 0000001b.wav (typewriter music)
0x1E0000 = 0000001c .wav
0x1F0000 = 0000001d.wav
0x200000 - 0000001e.wav
0x210000 - 0000001f.wav
0x220000 - 00000020.wav
0x230000 - 00000021.wav
0x240000 - 00000022.wav
0x250000 - 00000023.wav
0x260000 - 00000024.wav
0x270000 - 00000025.wav (island)
0x280000 - 00000026.wav (regenrators r30d)
0x290000 - 00000027.wav (regenrators r30d) same song as above
0x2A0000 - 00000028.wav
0x2B0000 - 00000029.wav
0x2C0000 - 0000002a.wav
0x2D0000 - 0000002b.wav
0x2E0000 - 0000002c.wav
0x2F0000 - unknown?
0x300000 - 0000002d.wav
0x310000 - 0000002e.wav
0x320000 - 0000002f.wav (shooting gallery r22c)
0x330000 - 00000030.wav (short intro drone r11d opening)
0x340000 - 00000031.wav (short intro drone)
0x350000 - 00000032.wav
0x360000 - 00000033.wav
0x370000 - 00000034.wav (Mercs Menu)
0x380000 - 00000035.wav
0x390000 - 00000036.wav
0x3A0000 - 00000037.wav (Mercs score)
0x3B0000 - 00000038.wav
0x3C0000 - 00000039.wav (Assinement Ada menu)
0x3D0000 - 0000003a.wav (Wesker Mercs)
0x3E0000 - 0000003b.wav (shooting gallery)?
0x3F0000 - 0000003c.wav (Leon Mercs)
0x400000 - 0000003d.wav (Ada Mercs)
0x410000 - 0000003e.wav (Krauser Mercs)
0x420000 - 0000003f.wav (Hunk Mercs)
0x430000 - 00000040.wav (Separate Ways menu)
0x440000 - 00000041.wav (short intro drone)
0x450000 - 00000042.wav (Assignment Ada 1)
0x460000 - 00000043.wav
0x470000 - 00000044.wav
0x480000 - 00000045.wav
0x490000 - 00000046.wav
0x4A0000 - 00000047.wav
0x4B0000 - 00000048.wav
0x4C0000 - 00000049.wav
0x4D0000 - 0000004a.wav
0x4E0000 - 0000004b.wav
0x4F0000 - 0000004c.wav
0x500000 - 0000004d.wav
It is important to know also that we can have multiple songs in the same room, but we should be careful how
we place our triggerzones to start/stop these so that the music does not overlap (unless we wish to make sone
kind of unique composition.. we could trigger drums to play and htne walk to another area to trigger the
bassline)XD !

In any case, if we have a triggerzone that stars the music and want to use another song for a different area of
the room, we should then also have a triggerzone to stop the first song before trigger the next song.
I am usnure why we cant add msuic to all rooms, and this may be ebcuase of somethign we have not
discovered yet. I will continue my research in hopes to shed more light on this part of the game.

FUNCTIONS OF THE ESE FILE


Another file that was mentioned above is the ESE file. This file is responsible for the placement of static
sounds in the environment (sounds that we hear emanating form one particular area that fade when we
walk away from their source).These sound sources are those that often repeat. An example of this would
be the sound of insects buzzing in a corner of a room or the sound of fire burning near some flames.

Although this file does handle the coordinates of these sound sources it does not itself contain any of the
sound files, nor does it allow us to create new instances of sounds. We are basically stuck with what the
room has allotted to it, meaning that if the room file does not already have ESE sources we cant add them.

This file actually really only handles the coordinates of the sounds that are already embedded in one of the
aforementioned sound files, (either the SND file or the XSB). While the research on sound files is still
inconclusive my guess is that the data flow of sounds is something like this:

ESE calls the SND file


SND calls XACT engine with the cuename
XACT engine looks up the .XSB file and plays the cue
XSB cue calls the .wav file from the XWB file.

Below we have an example of the entry for r101 which contains two static sounds; fire and flies.

# Effect Sound Entry 0 Data

ID = 0x3
Index = 0x1
Position_X = -4592.437988
Position_Y = -12622.872070
Position_Z = 1563.218384
Offset[16..19] = 0x6
Type = 0x57 (FIRE)
Offset[24..27] = 0x0
Offset[28..31] = 0x10000
Offset[32..33] = 0x0
Offset[34..35] = 0x0
Offset[36..39] = 0x0
Offset[40..43] = 0x0

# Effect Sound Entry 1 Data

ID = 0x3
Index = 0x2
Position_X = 528.330811
Position_Y = 14211.007813
Position_Z = 1811.329102
Offset[16..19] = 0x6
Type = 0x5A (FLIES)
Offset[24..27] = 0x0
Offset[28..31] = 0x10000
Offset[32..33] = 0x0
Offset[34..35] = 0x0
Offset[36..39] = 0x0
Offset[40..43] = 0x0

Working with the ESE file


Working with the ESE file is fairly straightforward. All we can really do is change the coordinates of the
sound. We may be able to change the Type to another that already exists in the file (like using 2 fire
sounds instead of 1 fire and 1 flies sound), but we cannot add new Types as these are directly linked to the
SND or XSB files to which we have no tools.

What would be needed to add new sound cues would require either a working XSB tool or a SND tool (or
both). It is one of these files (or both) that provide the ‘cues’ that are called on by the ESE. Without these
tools we are limited to how many cues already exist in those files. We can create new XSB files with cues
in the XACT program, but how they relate to the SND file is still unknown.

Please note the .obj file function as described in the in the 'Universal Concepts' guide does not fucntion
with this tool, therefore we msut use the .txt file to input the coordinates. The .obj file that is generated is
for refference only.

ADDING SOUNDS FROM OTHER ROOMS


As mentioned above, at this point I am unsure if it is possible to add ESE functions to rooms that do not
have them natively. It is possible to do if the room we are wanted to mod alrady has a working ESE file, but
if the room has an empty ESE file we might be out of luck. More research is required.

If we want to add a different static sound that exists in another room we do have the option to use the ESE
entry from another room and then use the SND file from that room to go with it. For example, if we wanted
to put the fire sound in a room that originally had no fire we would have to:

1 - Copy the SND file from a room that does the fire sound and rename the copied SND file to the name of
the room file we want to put it in (for this example we are going to be moving the sound to room r21b so we
need to:

Rename r400_46.SND to r21b_42.SND (we rename it to the same udas index number as the room we are
moving it to…in this example the r400 SND file is # _46 but in r21b the SND is file #_42)

2 – Extract the original ESE (in this case r400_21.ESE and observe the entries)
3 – Paste entries into extracted r21b_21.ESE .txt file (or use r400_21.ESE and rename as above in step 1)
4 – change coordinates to where we want the sound to be using .txt file (.obj doesnt work with this tool)
5 – repack ESE

We also have the option of actually editing the room sound wav files if we wish. For example if we had fire
in our room, but wanted a rushing river sound instead we could simply edit the XWB file with the UnXWB
tools and replace the fire sound with rushing river .wav file. Doing things this way allows us to skip
replacing SND files and copying/pasting ESE entries from other rooms. Either way works.

What would be good (and something I have not done yet) would be to search & find the room in RE4UHD
that has the MOST STATIC sounds and MOST ENTRIES (that is to say the most diverse set of sounds
and the most cues) and use this as the master file that we would use in all rooms (using the methods
described above). This way we would always have the most cues at our disposal.

This concludes the FSE & ESE tutorial. I am deeply saddened that there are not more sound tools at our
disposal at this time. We can only hope that in the future there will be more dedicated modders who will
take the time to research the files & develop tools for these complicated sets of files that work together.

Happy Modding!

Mr.Curious
12 - 2018
https://www.youtube.com/user/kalamalkakid/
http://residentevilmodding.boards.net/user/5592