Overview

From WonderWiki
Revision as of 05:03, 15 October 2023 by GRAnimated (talk | contribs)
Jump to navigation Jump to search

Super Mario Bros. Wonder's internal project name is Secred.

Framework

Super Mario Bros. Wonder is a first-party game developed by Nintendo EPD. This wiki refers to the game's engine as ModuleSystem, based on one of the heaps created by the executable. This engine has also been used in Splatoon 3, Nintendo Switch Sports, and The Legend of Zelda: Tears of the Kingdom. It's currently unknown where this game's development lies in a timeline of these games.

Code

The game's executable is stripped, only containing symbols for exported functions and typeinfo for a statically linked nn::pia. The game also makes use of clang's Profile Guided Optimization to optimize function calls. This makes Super Mario Bros. Wonder and The Legend of Zelda: Tears of the Kingdom the only ModuleSystem games to not use Link Time Optimization, which acts much more aggressively for a bigger boost in performance.

The optimization applied to the recent games may be in response to the influx of modding and reverse engineering on Nintendo's most important switch games. PGO and LTO act as a layer of obfuscation, which is a total opposite from the earliest switch games like `Splatoon 2` and `Super Mario Odyssey` releasing with full symbols and typeinfo.

The game was compiled with NintendoSDK 16.2.0, linking in NintendoWare and several middleware libraries in relation to online.

Linked in middleware
Libraries Package Usage
NPLN

NPLN-1_16_4-Release

Google_APIs_For_NPLN-1_16_4-Release

gRPC_For_NPLN-0_0_0-Release

OpenSSL_For_NPLN-0_0_0-Release

libcurl libcurl-16_2_0-Release
Pia

PiaClone-6_30_0

PiaCommon-6_30_0

Pia-6_30_0

PiaLocal-6_30_0

PiaLan-6_30_0

PiaSession-6_30_0

PiaSync-6_30_0

PiaTransport-6_30_0

PiaNpln-6_30_0

NintendoWare

NintendoWare_Vfx2-16_2_0-Release

NintendoWare_Font-16_2_0-Release

NintendoWare_Ui2d-16_2_0-Release

NintendoWare_G3d2-16_2_0-Release

libz libz-16_2_0-Release

In addition to middleware, the game's engine also links in some notorious libraries used in a majority of first-party Nintendo games, like sead, agl, gsys, and XLink2.

In the refactoring that created the engine, several classes were moved from BOTW into their own namespaces. al::ByamlIter, a class borrowed from Super Mario Odyssey, was present in Breath of the Wild and exists in this game as byaml::ByamlIter.

The namespace pp was introduced in Super Mario 3D All Stars as hardcoded parameters in pp::TypedParam classes within .bgyml files (and are BYAMLs), generated by an intermediate format .gyml. The library continues to be used in this game.