This is a table of commonly used phrases in either folder names, files names, or stdat parameters
normal: The vanilla, normal version of the stage. When talking about stage collisions, this can also refer to a vector perpendicular to the collision’s face (ie if a collision is a flat ground, the normal would be 0,1) |
battle and bnsmy: The omega, as well as the battlefield forms of the stage. bnsmy is a common prefix for textures related to models found in the omega form |
ring: The primary platform or ground of the stage |
ashiba / plate: Platforms |
sub_set: Shadows for platforms or other models |
hikari: Lights |
dokan: (Warp) Pipes |
Having trouble with alpha channels? Try making sure that “Alpha Sample to Coverage” is set True. You might have to play around with Source and Destination color, too. Most PRM shaders on PS2’s main ring are weird. Their Blue channel, normally dedicated to Ambient Occlusion, actually affects their baked lighting. I recommend avoiding these shaders unless you want to utilize the baked lighting affect.
Here’s a few shaders that I like to use, what they could be used for, and where to find them.
Original Name | Location | Description |
---|---|---|
Standard Shaders | ||
ShaderfxShader219 | far_ground_set, Northern Cave | A simple emissive shader for background elements that don’t need shadows |
DK_WaterFall_a_tree02 | bg_set, Kongo Falls | An emissive shader with alpha testing. Used for fake objects in the background like trees |
SFX_shadow_maru | dyr_bg_village_set, Town and City | An emissive shader that supports alpha, used for shadows or lights |
sfx_naturereal00 | dyr_bg_village_set, Town and City | The most bare bones stage shader. A diffuse channel that supports vertex colors, but doesn’t support shadows |
SFX_cliff_edge01 | dyr_ring_village_set, Town and City | A bare bones shader that supports alpha testing, great for static plants and leaves. Pro tip: disable culling on tree leaves that are close to the camera. |
guest_rcc_b | dys_guest_rcc_set, Town and City | A shader that only has a diffuse channel. No vertex colors, but supports shadows |
SFX_ring_citymetal | dyr_ring_village_set, Town and City | A simple shader that supports PRM. This unique PRM shader doesn’t require a baked lighting map, but still supports shadows |
Specialized Standard Shaders | ||
---|---|---|
sfx_NOOK__jp | dyr_bg_village_set, Town and City | Has a col channel and a AO channel, but does not support shadows. Great for background detail |
sfx_39_moss_bl | s65_base, Distant Planet | Has a diffuse and baked AO channel, and supports shadows. You can use defaultwhite on the baked AO channel if you don’t have any AO |
a_ring_ironaC | dyr_ring_set, Norfair | A simple shader that supports PRM and shadows. This does require a baked GAO channel that the default white texture can be used to ignore it |
HouseWall | skyloft, Skyloft | Has a diffuse and a baked lighting channel. This material somehow keeps the performance steady despite Skyloft’s 100k+ polygons! |
Scrolling Textures | ||
---|---|---|
NoBake_Taki_01_mat | chikei, Gaur Plains | A diffuse shader with scrolling uv channel |
spark | magma wall, Norfair | An emissive shader with scrolling uv channel |
sfx_phonh6_phong3… | far_set, Windy Hill | Emissive Skybox with a scrolling texture |
Misc Shaders | ||
---|---|---|
sea_01 | skysea, Tortimer | A great water shader that can support transparency, too! |
sfx_chikei3_18_water | chikei03_set, SMW Yoshi’s | Water shader that supports shadows |
light04 | ring, PS2 | Useful for most lighting effects that involve a texture with a black background |
rock_multi | remains, Rathalos Stage | Supports two blended textures, ie grass and rock |
fire | candel fire set, Dracula’s Castle | A standard sprite sheet |
ChandelierFire | lobby_chandelier, Garreg Mach | An emissive shader with distortion. Great for fire! |
ShaderfxShader218 | only_shadow, New Donk City | This shader doesn’t render the model, only the shadow it casts, similar to Bayonetta’s butterfly wings |
Wifi-Safety usually refers to being able to run a mod online while playing with people that are on vanilla. Movesets and collision edits are obviously not wifi-safe, but some random changes to stage elements can cause desyncs. I’ve found that this often occurs when you use a blank numatb
or numdlb
with an object that has materials animated in a motion folder (ie Animal Crossing villagers). There’s also several other random instances, like the ufo and pelican on Smashville can’t be replaced with different models for whatever reason, and certain effects (like the Town and City bubbles) have their effect locator removed might also cause desyncs. We can never know for sure what causes desyncs, but if you need to “remove” an object, and it has an animation, use a blank numshb
instead.
This contains common issues with stages that are unfixable at the moment.
Many retro-styled stages (Mario Bros, Flat Zone) use a Fixed Camera, instead of the default camera that will zoom in and out for fighters. Unfortunately, most camera-related issues are hardcoded.
Extremely common with Melee, Brawl and 3DS stages. Whether it be a damaging plane, a plane that deletes items, or even just the placement of common objects like a block: many objects in this game are hardcoded to specific positions. The ol’ reliable way of dealing with this is to just move the stage and everything parameter related to it up by 200, however if you want to actually use some of these assets, you’ll have to dig into the code of this game.
Some stages’ lvd require specific collision groups to exists, and they cannot be removed without crashing the game. A possible fix is to delete all but two vertices and move them down 400.
These stages are affectionately known as the Superbosses of the stage dev community, for their problems are either extremely complicated, or extremely specific, and required internal code edits that are not known about
Mushroomy Kingdom | Fighters’ positions will always scroll to the left. The camera on this stage is actually static, and every element has a motion file to move it to the left, or something internal (ie every block) to move it towards the left. Without understanding the internals of this stage, fighters will always scroll to the left |
Summit | Similar issue to the Fixed Camera problem, except this issue only occurs during the “sliding down” portion of the stage |
Spirit Tracks | Similar issue to the Fixed Camera problem, except there are several internal mechanisms that govern how fast the camera should scroll. |
Pacland | Similar issue to Spirit Tracks |
Mario Maker | WAY too many files, and editing the position of randomly placed blocks is unknown at the moment |
KOF Stadium | Wall break mechanic is handled internally |
Minecraft World | If you want to fix all the UVs and rearrange this stage voxel by voxel…be my guest! |
battlefield
Most of the info here applies to Small and Large Battlefield
Not a day/night cycle. If you want to remove this cycle, you’ll want to edit the stdat file located in the param folder. Each entry under color_correction_entries
changes the color grading of the stage. If you delete all but one entry that corresponds to the lighting you want to use, it will never change.
You might notice that the main ring is called ring_nocastshadow_set
, this is because Battlefield is one of the few stages that uses a separate model folder for the main mesh, and a shadow mesh. A shadow mesh is a less complicated mesh that is used to cast shadows. You’ll see this on stages whose main ring is separated into several different models (Battlefield has models for the ring, plants and water. Hollow Bastion has models for the ring and pipes. Pirate Ship has models for the ship, cannon, flag). This means that the folders ring_* don’t actually cast a shadow. This is important to note for the platforms. floating_plate_set
does not cast a shadow, but floating_plate_sub_set
has a shadow mesh and casts a shadow! The main ring, in Battlefield’s cast, doesn’t need a shadow mesh.
Luckily, the motion and model folders are all named the same. However, the main difference between SBF and BF are the platforms. For floating_plate_set
, you will need to edit the mesh in Blender to remove the top platform. I recommend not including floating_plate_sub_set
in your mod folder, but if you want to have more accurate shadows, you can create your own shadow mesh in Blender. Simply create a mesh, export it to the sub_set folder, and assign the mesh the one, and only, material in that sub_set folder.
end
You might notice this stage has a whole transition effect. Most Smash FDs have this but this one is unqiue where it is not one long animation. Model folders are split up into dark, space and light. The stage parameters can control which models show up during which scene. This is useful for if you want every model to be visible at once. You can also control how long a scene lasts.
The lvd file for this stage is actually not found within the end folder! You’ll want to look into the common folder to find the LVD for this stage
poke_stadium2
The most common type of PS2 involves changing the pokeball in the center. There is a full guide in the modding discord in the pinned messages under #stages
The location for the aurora vision text can be found in ui/message/msg_melee. You’ll want to scroll down to mel_info_stage_poke_stadium.
animal_village
For some reason, this stage can cause a desync if certain files are blanked. While not everything is understood, here is what I’ve found
Can desync if using a blank numatb or numdlb. Use a blank numshb or an invisible xmb instead
Can desync if the models are changed for…whatever reason. These models include the ufo and pelican
This stage cycles through 4 different lights which occur at different times than T&C. There’s windowlight and sky models that correspond to the time of day, as well as decoration, stage, taxi, and platform lights that only spawn during night.
Unlike T&C, the clock hand’s position is handled internally. Man I hate brawl stages…
All villagers (with Brewster and a few small exceptions) use animations from the common motion folder to animate. Pretty handy if you want to make custom villagers, but they’ll have to be the same skeleton. Here’s some things to look out for:
icarus_skyworld
Unfortunately, platform positions are hard coded. The good news is you can change the hurtbox position of the platforms, but the platforms themselves will always snap to one location no matter what.
The game will crash if there aren’t vertices for each of the damageable platforms, but feel free to put said verticies to -400 or something if you want to “remove” the platform
zelda_pirates
So someone forgot to give these models actual informative names…here’s what I’ve pieced together:
Folder Name | Description |
---|---|
w | Warning |
da,db | Ocean Debris |
kh | Pirate Ship Water Trail |
k | Pirate Ship |
r | King of Red Lions |
s | Ship Cannon |
t | Tornado |
ts | Tornado Wind |
u_nami | Wind |
u | Sky and Sea |
yb | Tornado Bottom? |
y | Pirate Lookout |
z | Rock Island you crash on |
k_flag | Pirate Lookout Flag |
r_seil | KoRL Sail |
b | Bomb |
ea | Clouds |
eb | Unknown background element |
ec | Background Islands |
yh | Cannon? |
mariobros
0x172fb2f3df
controls where a player is sent, but does not control where the boundary is. This can be set to a negative number.
The platforms (yuka) are rendered from the render folder. The take the vertices from the LVD file, which partially explains why there’s so many different vertices for a group. Not sure at the moment what controls where the yuka are positioned atm, the skeleton of main_ground_set
DOES control the POW block’s location, however.
Enemies are located in item/st_shell and item/st_crab
poke_tower
While this is a “touring” stage, unfortunately it does not work at all like Mario Circuit, Northern Cave, Hollow Bastion, etc. The ring AND the camera are actually animated together, which makes creating a custom path a nightmare. The motion file dictates the entire cycle, so you can’t slow it down via the stdat. What’s worse: there’s a weird quirk with the LVD file where if you give a collision more than 2 vertices, it unloads. What a shame, this could have been a really cool stage…
fzero_mutecity3ds
This stage plays out a lap of Mute City. The Course motion file controls which part of the track is being played. It will select A and B randomly. If the course animation finishes before any other animation (ie flyingplate), then it will proceed to the next part of the course. There’s 4 parts, where “s” motion files are for the starting lap, and “l” for every lap after that (it needs an extra ~325 for the initial match countdown). The Blue Falcon and the other racers have extra animations for when the Falcon needs to get hit or a rival car needs to explode.
All items will disappear when they hit Y=0
animal_island
This stage cycles through 4 different layouts. The 5th LVD file is for various common info, like tree collision.
Luckily, several different gimmicks can be controlled through here, including the water height! You can disable Kapn, Sharks, Trees and Fruit through this file
animal_city
For some reason, this stage can cause a desync if certain files are blanked. While not everything is understood, here is what I’ve found
Can desync if using a blank numatb or numdlb. Use a blank numshb or an invisible xmb instead
Can desync if the models are changed for…whatever reason. These models include the bus
This stage cycles through 5 different lights which occur at different times than Smashville. There’s windowlight and sky models that correspond to the time of day, as well as decoration, stage, taxi, and platform lights that only spawn during night.
All villagers use animations from their own dedicated motion folder.
brave_altar
Ig-dro-sil (the d is normally some mix between d and th though)
Like Spiral Mountain, this stage uses item spawners to control where platforms will move to once they are loaded in
buddy_spiral
This is quite the stage! Want to know how the spinning effect works? Well, there’s some motion files associated with “cliffs”. These actually animate the LVD vertices! Each key-frame corresponds to a degree. You should be able to use an empty (but valid) numatb file to get rid of the spinning effect.
The LVD file cannot be modified with yamlvd unfortunately, but you can use a hex editor or studioSB. There’s a few extra item spawners that actually don’t spawn items. These are the locations that a given platform will move to. These are often denoted by stop+the degree of the mountain. I do believe some of these platforms might ignore these spawners, or perhaps reference them but have an internal offset (Floor50’s item spawners are towards the center of the stage, even though platforms spawn on the outer edges of the stage)
Not all of these have been decoded, but here’s some rough notes that I took when making my mod:
fe_shrine
Hazards Off forces the stage to load everything in the Church scene (sometimes referred to as cathedral
within stdat files). Hazards Off also loads the platforms that move in and out during the church scene. Also note that this means that lvd shrine_03
will load on startup for Hazards Off, as oppose to 00. This can be used to create two different layouts based on the hazards toggle.
Like most unique DLC stages, this contains a visual stdat file that lets you control whether models are active/inactive based on the scene. A select few models that are not apart of the list might be visible regardless of the current scene. Guests positions are randomized through both the positions_list
and the locations_list
. Positions is an array of random locations in pairs of three (one for each character, additional characters will stay at 0,0). Each location is denoted as “(scene)(id)” (ie m01 for market01). The yRotation, as well as the vector of a given location can be changed via locations_list
.
Guests can be added to the list (by default, only 3 appear per scene), however adding multiples might cause the hazards off version to not load any characters at all.
Collision groups should not be removed from the LVDs, lest you want the stage to crash on load up. Collision groups can be added,however! There is also a parameter in the visual file that controls which lvd to load for which scene, so you are able to load cathedral’s lvd, despite the game internally thinking you are in the market scene.
ff_cave
Everything from sound effect sequences, to animations, to visibility is controlled by what frame the Camera animation is currently on. This means if your camera animation only has 1 frame, then the background will only loop that one frame, and then reset to the beginning. The visual stdat contains information for when an animation should be played, and when a model should be visible or not.
trail_castle
Dive to the Heart, the scene during Hazards On that this stage transitions to, is abbreviated as DtH
Similar to the Animal Crossing stages, certain models cause desyncs if their numshb, numatb, or numdlb are “blanked out”. I’m currently unsure which specific models and files affect this, so for safety, try using a model.xmb that disables visibility. These models are:
Similar to Northern Cave’s, but the visual stdat has several new structs related to Diving (transition to DtH) and Climax (DtH). These include the model settings to determine which model is visible during which scene, as well as when to delay/play fade effects and animations.
0 - Unloads/Loads almost instantly (ie the shadow caster model) 1 - Fades to black (ie the background) 2 - Fades to white (ie the ring)
What tools should I use?
CrossMod or SSBH_Editor for previewing models and assigning materials
StudioSB for importing models and changing level collision
SwitchToolbox for changing textures
Blender (and carlos’ tools) for editing models
Smush Material Research for material/light/xml info. Contains links for XML(exe) and ssbh_data_json for additional editing
PRCEditor and Parcel for editing stdat,stprm and prc files
What makes a mod not wifi safe?
Anything that changes gameplay is not wifi safe. Things like changing motion files of a moving platform, the lvd file or an stdat parameter can lead to desyncs.