Skip to content

The Environment

blu-dev edited this page Apr 16, 2021 · 1 revision

Like previous entries in the Super Smash Bros. series, Super Smash Bros. Ultimate uses scripts to manipulate fighters, articles, weapons, and other agents and to control how they interact with the game environment. Unlike previous entries, however, these scripts are not stored in the game's ROM and have instead been transpiled from Lua to C++ and then compiled into executable code. This makes interacting with the game's scripts a bit more challenging, but luckily the Skyline + Smashline environment have been developed to allow edits to these scripts using Rust.

Skyline

Skyline is a modding environment for the Nintendo Switch and allows the loading of "plugins" from the game's ROM using Atmosphère and its layered-fs capabilities.

The most important thing that you need to understand about Skyline is that it allows plugin developers to hook into the game's executable code and redirect it to our own code (this is massively oversimplified). With the proper research into the game and associated dependencies, this gives us a large amount of control over the game's execution and allows us to completely change core parts of the game.

Smashline

Smashline is a Skyline plugin and a Rust crate which have been created with Smash modding, specifically script mods, in mind. It allows for the replacement of both of Ultimate's kinds of scripts while providing other useful utilities for developing what the community has come to refer to as "code mods".

The symbol hooking functionality in Smashline (while still not complete) was only possible due to the great work done by Thog and her work on oss-rtld, an open-source re-implementation of Nintendo's runtime linker.

The script replacing functionality in Smashline was inspired by the following:

  • skyline-acmd, and the associated plugin acmd_hook originally written by the Ultimate Research team, for interacting (and attempting to replace) Ultimate's ACMD scripts.
  • skyline-status, and the associated plugin status_hook originally written by Peter, for interacting and replacing Ultimate's status scripts.

The rest of this Wiki will feature explanations of each of the core features in Smashline, as well as an introductory tutorial for using Smashline by FaultyPine