SaveMgr: Difference between revisions

From ZeldaMods (Breath of the Wild)
Jump to navigation Jump to search
imported>Leoetlino
(create stubs for all known subsystems)
 
(Added Wii U init address)
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Subsystem infobox|name=SaveMgr|is_name_official=1|description=Loads game data into GameDataMgr or writes it to saves.|init_addr_switch150=0000007100E03214}}
{{Subsystem infobox|name=SaveMgr|is_name_official=1|description=Loads game data into GameDataMgr or writes it to saves.|init_addr_switch150=0000007100E03214|init_addr_wiiu150=0324E6AC}}
{{stub}}
{{stub}}
== savedataformat loading ==
Similarly to GameDataMgr, SaveMgr loads every file that is in the [[savedataformat]] archive and assumes it is a [[bgsvdata]] resource<ref>SaveMgr code: 0x7100E0EE24</ref>. The file name does not matter.
SaveMgr can only load up to 0x20 files<ref>SaveMgr code: 0x7100E0EE50</ref>.
For each file, one Bgsvdata resource object is created and save information is loaded from the resource. SaveMgr only supports a single file entry in the "file_list"<ref>Bgsvdata resource code: 0x710127B060</ref>. The HashValue is ignored; the game always uses CRC32(DataName).
After all resources have been loaded, a different Bgsvdata resource object is created and internally populated with N file entries, where N is the number of distinct file_name values<ref>0x7100E0F22C</ref> in all previously loaded resources.
The flag array for each file in that Bgsvdata object is then sorted<ref>0x7100E0F270</ref><ref>0x710127B664</ref><ref>0x710127B6D4</ref><ref>0x710127BB5C</ref>{{check}}.


[[Category: Internals]]
[[Category: Internals]]
[[Category: Subsystems (BotW)]]
[[Category: Subsystems (BotW)]]

Latest revision as of 02:58, 8 April 2021

SaveMgr
Subsystem
Official name Yes
Description Loads game data into GameDataMgr or writes it to saves.
Init function Switch 1.5.0: 0000007100E03214
Wii U 1.5.0: 0324E6AC
Debug only No


savedataformat loading

Similarly to GameDataMgr, SaveMgr loads every file that is in the savedataformat archive and assumes it is a bgsvdata resource[1]. The file name does not matter.

SaveMgr can only load up to 0x20 files[2].

For each file, one Bgsvdata resource object is created and save information is loaded from the resource. SaveMgr only supports a single file entry in the "file_list"[3]. The HashValue is ignored; the game always uses CRC32(DataName).

After all resources have been loaded, a different Bgsvdata resource object is created and internally populated with N file entries, where N is the number of distinct file_name values[4] in all previously loaded resources.

The flag array for each file in that Bgsvdata object is then sorted[5][6][7][8][check].

  1. SaveMgr code: 0x7100E0EE24
  2. SaveMgr code: 0x7100E0EE50
  3. Bgsvdata resource code: 0x710127B060
  4. 0x7100E0F22C
  5. 0x7100E0F270
  6. 0x710127B664
  7. 0x710127B6D4
  8. 0x710127BB5C