Page 1 of 1

Tutorial: Replace Menu Button Sounds (at least for consoles)

Posted: Mon Feb 28, 2022 11:12 pm
by angolandelegate
Recently, I've been working on a project for SWBF2 on Xbox Consoles. One of the things I wanted to do as part of it was change the button sounds (i.e. the sounds that play as you navigate through the menus). I had a bit of time figuring out how to do this, as I couldn't see where these sound effects would go in the usual places, like the sound lvls for shell and global. I figured it out, however, so hopefully this will safe someone else the same headache in the future. These sounds are stored in core.lvl.

Example:


PC Modders can just build a new core.lvl! Use the below information to help you figure out your process. Here's some help though, a new core.req:

Code: Select all

ucft
{
	REQN
	{
		"bnk"
		"align=2048"
		"global"
	}

	REQN
	{
		"config"
		"global"
	}

	REQN
	{
		"loc"
		"english"
		"spanish"
		"italian"
		"french"
		"german"
		"uk_english"
	}


	REQN
	{
		"texture"
	}


	REQN
	{
		"texture"
		"platform=ps2"
		"specular"
		"fogspread"
	}

	REQN
	{
		"texture"
		"platform=xbox"
		"cube_normalizationmap"
		"specularspot"
		"attenuation_volume"
		"specularcubemap"
	}

	REQN
	{
		"texture"
		"platform=pc"
		"cube_normalizationmap"
		"hemisphere_normalizationmap"
		"specularspot"
		"attenuation_volume"
		"linear_ramp"
		"specularcubemap"
	}

	REQN
	{
		"shader"
		"platform=xbox"
		"transform_unskinned"
		"transform_skinned"
		"transform_skinned_normals"
		"transform_skinned_binormals"
		"transform_hardskinned"
		"transform_hardskinned_normals"
		"transform_hardskinned_binormals"
		"lighting_vertex_diffuse"
		"lighting_vertex_spec"
		"lighting_vertex_diffuse_spec"
		"normal_shader"
		"stencilshadow_shader"
		"terrain_shader"
		"sprite_shader"
		"interface_bitmap_shader_notexture"
		"interface_bitmap_shader_texture"
		"interface_maskedbitmap_shader"
		"interface_vector_shader"
		"particle_shader"
		"lightbeam_shader"
		"skysun_shader"
		"dropshadow_shader"
		"staticshadow_shader"
		"water_shader"
		"sample_shader"
		"copy_shader"
		"screenspace_shader"
		"flare_shader"
		"skyfog_shader"
		"transparent_shader"
		"filtercopy_shader"
		"colorcontrol_shader"
		"foliage_shader"
		"prereflection_shader"
		"normalmapadder_shader"
		"focusblur_shader"
		"specular_shader"
		"ocean_shader"
		"detail_shader"
		"detail_transparent_shader"
		"refraction_shader"
		"decal_shader"
		"shield_shader"
		"bump_shader"
		"zpass_shader"
	}

	REQN
	{
		"shader"
		"platform=pc"
		"normal_shader"
		"interface_shader"
		"particle_shader"
		"terrain_shader"
		"sprite_shader"
		"skyfog_shader"
		"foliage_shader"
		"lightbeam_shader"
		"scroll_shader"
		"flare_shader"
		"sample_shader"
		"rain_shader"
		"normalmapadder_shader"
		"prereflection_shader"
		"water_shader"
		"stencilshadow_shader"
		"shadowquad_shader"
		"specular_shader"
		"detail_shader"
		"ocean_shader"
		"refraction_shader"
		"decal_shader"
		"filtercopy_shader"
		"shield_shader"
		"bump_shader"
		"zprepass_shader"
	}

}
Remember, you still need to use the below info to place your global.snd and global.sfx, as well as new sound files, where they need to go.

High level steps for replacing button sounds (for console or injecting into core.lvl without source):
1. Copy global.sfx and global.snd from 'modtools/assets/common/sound' to wherever you'd like to munge them, like your project's 'Common' folder or your project's sound/global folder. Make sure wherever you are munging from, your req has been updated with:

Code: Select all

```
    REQN
    {
        "bnk"
        "align=2048"
        "global"
    }
    REQN
    {
        "config"
        "global"
    }
```
or similar so the new bnk actually munges.
2. Place the following new files in the 'effects' folder in 'data_ABC/Sound/global':
--brnbeep1.wav
--ui_cancel.wav
--ui_keyboardtype.wav
--ui_menuBack.wav
--ui_menuMove.wav
--ui_planetzoom.wav
Most of those filenames are self explanatory, but a couple aren't. brnbeep1.wav is the rocket lock on sound effect, and *importantly* ui_planetzoom.wav is the sound effect for when you enter a menu button or hit accept.
3. Munge however you wish.
4. Check your munged folder (for example, under _BUILD/Sound/global/MUNGED/xbox) for your newly munged global.bnk and global.config. These are what you want. Make sure they're recent.
5. Use LVLTool (https://github.com/BAD-AL/LVLTool) to open up the core.lvl of your choice (make sure to keep a backup if needed!) and replace

Code: Select all

```.V"&^```
with your global.bnk and

Code: Select all

```global.snd_```
with your global.config. Save the lvl file.
6. Congrats, you should have new button sounds on your menus!

Again, I'm not sure if this works on PC, but I imagine it would be no different.
This would not be possible without BAD-AL's LVLTool making file injection into lvls possible, as otherwise we wouldn't be able to rebuild core.lvl for Xbox due to the absence of source files for the shaders!