StageSelect and Help:Resolving mod conflicts: Difference between pages

From ZeldaMods (Breath of the Wild)
(Difference between pages)
Jump to navigation Jump to search
imported>Leoetlino
No edit summary
 
imported>NiceneNerd
mNo edit summary
 
Line 1: Line 1:
'''StageSelect''' (uking::StageSelect) is a development-only feature that allows the user to select and load a stage directly.
Because of the way '''Breath of the Wild''' game content is structured, multiple mods often have to make incompatible changes to the same files or groups of files. Not all of this can be helped—some mods will always conflict—but many of the most common mod conflicts can be resolved. There are seven major areas of concern in resolving mod conflicts: the [[Resource_system#Resource_size_table|RSTB]], [[SARC|SARC packs]], [[Message archives|game texts]], [[gamedata.ssarc|game data]], [[SaveMgr|save data]], [[ActorInfo.product.sbyml|actor info]], and the contents generally of [[BYML]] and [[AAMP]] files.


In release builds, code for the stage select screen is still present in the [[executable]] to a certain extent; however its functionality is entirely unused. Furthermore, it is completely broken because of the following reasons:
== RSTB Conflicts ==
RSTB conflicts occur when two or more mods modify [[ResourceSizeTable.product.rsizetable]]. Unless the changes are merged, you may experience the general symptoms of RSTB problems when trying to use such mods together, which may include crashes, invisible models, missing actors, or hanging on the loading screen. Note especially that crashes which come immediately on loading the game often involve the RSTB entry for [[Bootup.pack]] or one of the message archives [[Help:Resolving_mod_conflicts#Game_text_conflicts|described below]].


* When [[GameScene]] constructs uking::StageSelect<ref>0x71007B1200 in Switch 1.5.0</ref>, a nullptr heap is passed to it because the code that would normally create the StageSelect heap is no longer present.  
To resolve RSTB conflicts, you must identify the RSTB changes made by each mod, which can be compared using [[Help:Tools/rstb|rstbtool]] or [[Help:Tools/Wild_Bits|Wild Bits]]. For help with this, see [[Help:Updating the RSTB]].
* The list of stages the user can choose from is loaded from a subsystem that is missing from release executables<ref>The instance pointer for that subsystem is stored at 0x00000071025CE6D8 in .bss. It is never written to.</ref>. When StageSelect is initialized, it attempts to access the global subsystem instance<ref>0x71007CD4DC</ref>, which promptly causes the game to dereference a null pointer and crash.
* Revision information (i.e. versions, build info, etc.) will not show up properly because the Revision subsystem is also stubbed in release builds. Moreover, the game will also crash when it tries to dereference Revision::sInstance, as Revision is not initialized at all when not in debug mode<ref>0x7100F3ADC8</ref>.
* The game attempts to use the SeadMenu subsystem, which also does not exist anymore in release builds<ref>SeadMenu::sInstance @ 0x00000071025F8A88 (.bss) is never set.</ref>


Restoring its functionality is technically possible but difficult.
== SARC Conflicts ==
SARC conflicts occur when two or more mods modify the same [[SARC]] file, most frequently [[TitleBG.pack]], [[Bootup.pack]], or an [[Sbactorpack|actor pack]]. For example, if one mod changes Link's appearance and one mod changes the texture of the paraglider, each mod will contain an entire TitleBG.pack file, and they will not cooperate.


[[Category:Internals]]
To resolve SARC conflicts, you must identify the changed files in each SARC and manually copy the changed files in each to a single SARC. You can extract and modify SARC archives using [[Help:Tools/sarc|sarc]] or [[Help:Tools/Wild_Bits|Wild Bits]].
 
== Game Text Conflicts ==
 
== Game Data and Save Data Conflicts ==
 
== Actor Info Conflicts ==
 
== BYML and AAMP Conflicts ==
 
[[Category:Guides]]

Revision as of 18:54, 26 July 2019

Because of the way Breath of the Wild game content is structured, multiple mods often have to make incompatible changes to the same files or groups of files. Not all of this can be helped—some mods will always conflict—but many of the most common mod conflicts can be resolved. There are seven major areas of concern in resolving mod conflicts: the RSTB, SARC packs, game texts, game data, save data, actor info, and the contents generally of BYML and AAMP files.

RSTB Conflicts

RSTB conflicts occur when two or more mods modify ResourceSizeTable.product.rsizetable. Unless the changes are merged, you may experience the general symptoms of RSTB problems when trying to use such mods together, which may include crashes, invisible models, missing actors, or hanging on the loading screen. Note especially that crashes which come immediately on loading the game often involve the RSTB entry for Bootup.pack or one of the message archives described below.

To resolve RSTB conflicts, you must identify the RSTB changes made by each mod, which can be compared using rstbtool or Wild Bits. For help with this, see Help:Updating the RSTB.

SARC Conflicts

SARC conflicts occur when two or more mods modify the same SARC file, most frequently TitleBG.pack, Bootup.pack, or an actor pack. For example, if one mod changes Link's appearance and one mod changes the texture of the paraglider, each mod will contain an entire TitleBG.pack file, and they will not cooperate.

To resolve SARC conflicts, you must identify the changed files in each SARC and manually copy the changed files in each to a single SARC. You can extract and modify SARC archives using sarc or Wild Bits.

Game Text Conflicts

Game Data and Save Data Conflicts

Actor Info Conflicts

BYML and AAMP Conflicts