Overview: Difference between revisions

From WonderWiki
Jump to navigation Jump to search
mNo edit summary
(Added information about the game’s release date.)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
''Super Mario Bros. Wonder'''s internal project name is 'Secred'.
'''''Super Mario Bros. Wonder''''' is a side-scrolling platform game released worldwide for the Nintendo Switch on October 20, 2023. It was first announced during the June 2023 Nintendo Direct, and is also the twenty-second installment in the ''Super Mario'' series and the first new full-fledged 2D ''Super Mario'' game since ''New Super Mario Bros. U'' released almost 11 years prior. In addition, it is the first game to feature Kevin Afghani as the voice of Mario and Luigi, succeeding Charles Martinet, as well as the first game in the ''Super Mario'' franchise as a whole to be released since the initial release of ''Mario + Rabbids Sparks of Hope'' exactly one year prior.
 
''Super Mario Bros. Wonder''<nowiki/>'s internal project name is '''Secred'''.


== Framework ==
== Framework ==
Line 5: Line 7:


=== Code ===
=== 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 [https://en.wikipedia.org/wiki/Profile-guided_optimization 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|ModuleSystem]] games to not use [https://www.llvm.org/docs/LinkTimeOptimization.html Link Time Optimization], which acts much more aggressively for a bigger boost in performance.
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 [https://en.wikipedia.org/wiki/Profile-guided_optimization 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|ModuleSystem]] games to not use [https://www.llvm.org/docs/LinkTimeOptimization.html 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 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.
The game was compiled with '''NintendoSDK 16.2.0''', linking in '''NintendoWare''' and several middleware libraries in relation to online.

Latest revision as of 12:59, 11 October 2024

Super Mario Bros. Wonder is a side-scrolling platform game released worldwide for the Nintendo Switch on October 20, 2023. It was first announced during the June 2023 Nintendo Direct, and is also the twenty-second installment in the Super Mario series and the first new full-fledged 2D Super Mario game since New Super Mario Bros. U released almost 11 years prior. In addition, it is the first game to feature Kevin Afghani as the voice of Mario and Luigi, succeeding Charles Martinet, as well as the first game in the Super Mario franchise as a whole to be released since the initial release of Mario + Rabbids Sparks of Hope exactly one year prior.

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

Framework[edit | edit source]

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[edit | edit source]

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.