Difference between revisions of "User:JayFoxRox"
(Add file which can be used to debug savegame localization) |
(→Savegame notes) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
= Unfinished information = | = Unfinished information = | ||
− | == | + | == Savegame notes == |
− | Put this into a file and move it to "E:/UDATA/13371337/TitleMeta.xbx" and check which languages your MS dashboard supports | + | ''Most of this had already been documented in [[Xbox Savegame System]]'' |
+ | |||
+ | There's no database or anything for savegames - the directory-listing APIs are used to enumerate all savegames. | ||
+ | The data is obviously in E:/UDATA/. | ||
+ | Each XBE has a subdirectory for it's title-id. | ||
+ | Then each save is a subdirectory (I'm not sure about the name; but it's some 48-bit hex value). | ||
+ | |||
+ | XAPI would normally initialize title-images before `main()` of the XBE. | ||
+ | The data is copied from sections "$$XTIMAGE" (TitleImage.xbx) and "$XSIMAGE" (saveimage.xbx in savegame folder). | ||
+ | I believe the saveimage can differ for different save-games, which implies that they probably have another API. | ||
+ | I'm also not sure where it would put saveimages, because no savegame exists then. | ||
+ | The images are [[XPR]], and could theoretically be any format supported by the GPU. | ||
+ | The dashboard expects them to be swizzled (checks on load imply this), but linear textures might still work. | ||
+ | |||
+ | Metadata is stored in TitleMeta.xbx and SaveMeta.xbx (in savegame folder). | ||
+ | I'm not sure when / how they are initialized. | ||
+ | I'm not sure if they are already shown in the dashboard, even if metadata is missing. | ||
+ | |||
+ | Metadata are INI files, which are implicitly prefixed with `[default]`. | ||
+ | I don't think there's any comments allowed. | ||
+ | I believe that XAPI has a hardcoded emitter. Whereas the dashboard has some INI parser. | ||
+ | I'm not sure about the parser in XAPI (or if it even has one). | ||
+ | |||
+ | I believe metadata also supports keys without values. | ||
+ | |||
+ | When reading, it will try to read a localized version first, before reading from the `[default]` section. | ||
+ | I have looked at many savegames, but had never seen this. I'm not sure if this was ever used. | ||
+ | |||
+ | I believe the metadata files can be ASCII or Unicode (using [https://en.wikipedia.org/wiki/Byte_order_mark Unicode BOM prefix]) | ||
+ | |||
+ | Titledata in E:/TDATA is similar. | ||
+ | The user soundtrack / music collection is using a database file. See [[Soundtracks]]. | ||
+ | |||
+ | === NoCopy flag === | ||
+ | |||
+ | https://www.reddit.com/r/originalxbox/comments/c6pvi2/modify_xbox_game_saves/esb7omf/ | ||
+ | |||
+ | === TitleMeta.xbx locales === | ||
+ | |||
+ | Put this into a file and move it to "E:/UDATA/13371337/TitleMeta.xbx" and check which languages your MS dashboard supports. | ||
+ | I have dumped the locales from a list in xboxdash.xbe in dashboard version 1.00.5960.01 from Germany. | ||
+ | I've then tried all languages that my Xbox dashboard supported in NTSC mode. | ||
<pre> | <pre> | ||
Line 246: | Line 287: | ||
TitleName=#Known locale [TW] - (taiwanese) | TitleName=#Known locale [TW] - (taiwanese) | ||
[BR] | [BR] | ||
− | TitleName=#Known locale [BR] - | + | TitleName=#Known locale [BR] - portugues |
</pre> | </pre> | ||
Latest revision as of 12:50, 16 April 2020
For contact details, see http://jannikvogel.de/
Unfinished information
Savegame notes
Most of this had already been documented in Xbox Savegame System
There's no database or anything for savegames - the directory-listing APIs are used to enumerate all savegames. The data is obviously in E:/UDATA/. Each XBE has a subdirectory for it's title-id. Then each save is a subdirectory (I'm not sure about the name; but it's some 48-bit hex value).
XAPI would normally initialize title-images before `main()` of the XBE. The data is copied from sections "$$XTIMAGE" (TitleImage.xbx) and "$XSIMAGE" (saveimage.xbx in savegame folder). I believe the saveimage can differ for different save-games, which implies that they probably have another API. I'm also not sure where it would put saveimages, because no savegame exists then. The images are XPR, and could theoretically be any format supported by the GPU. The dashboard expects them to be swizzled (checks on load imply this), but linear textures might still work.
Metadata is stored in TitleMeta.xbx and SaveMeta.xbx (in savegame folder). I'm not sure when / how they are initialized. I'm not sure if they are already shown in the dashboard, even if metadata is missing.
Metadata are INI files, which are implicitly prefixed with `[default]`. I don't think there's any comments allowed. I believe that XAPI has a hardcoded emitter. Whereas the dashboard has some INI parser. I'm not sure about the parser in XAPI (or if it even has one).
I believe metadata also supports keys without values.
When reading, it will try to read a localized version first, before reading from the `[default]` section. I have looked at many savegames, but had never seen this. I'm not sure if this was ever used.
I believe the metadata files can be ASCII or Unicode (using Unicode BOM prefix)
Titledata in E:/TDATA is similar. The user soundtrack / music collection is using a database file. See Soundtracks.
NoCopy flag
https://www.reddit.com/r/originalxbox/comments/c6pvi2/modify_xbox_game_saves/esb7omf/
TitleMeta.xbx locales
Put this into a file and move it to "E:/UDATA/13371337/TitleMeta.xbx" and check which languages your MS dashboard supports. I have dumped the locales from a list in xboxdash.xbe in dashboard version 1.00.5960.01 from Germany. I've then tried all languages that my Xbox dashboard supported in NTSC mode.
TitleName=#Known locale - (fallback, same as [default]) [ZW] TitleName=#Unknown locale [zw] [ZA] TitleName=#Unknown locale [za] [YE] TitleName=#Unknown locale [ye] [VN] TitleName=#Unknown locale [vn] [VE] TitleName=#Unknown locale [ve] [UZ] TitleName=#Unknown locale [uz] [UY] TitleName=#Unknown locale [uy] [US] TitleName=#Unknown locale [us] [UA] TitleName=#Unknown locale [ua] [TW] TitleName=#Unknown locale [tw] [TT] TitleName=#Unknown locale [tt] [TR] TitleName=#Unknown locale [tr] [TN] TitleName=#Unknown locale [tn] [TH] TitleName=#Unknown locale [th] [SY] TitleName=#Unknown locale [sy] [SV] TitleName=#Unknown locale [sv] [SK] TitleName=#Unknown locale [sk] [SI] TitleName=#Unknown locale [si] [SG] TitleName=#Unknown locale [sg] [SE] TitleName=#Unknown locale [se] [SA] TitleName=#Unknown locale [sa] [RU] TitleName=#Unknown locale [ru] [RO] TitleName=#Unknown locale [ro] [QA] TitleName=#Unknown locale [qa] [PY] TitleName=#Unknown locale [py] [PT] TitleName=#Unknown locale [pt] [PR] TitleName=#Unknown locale [pr] [PL] TitleName=#Unknown locale [pl] [PK] TitleName=#Unknown locale [pk] [PH] TitleName=#Unknown locale [ph] [PE] TitleName=#Unknown locale [pe] [PA] TitleName=#Unknown locale [pa] [OM] TitleName=#Unknown locale [om] [NZ] TitleName=#Unknown locale [nz] [NO] TitleName=#Unknown locale [no] [NL] TitleName=#Unknown locale [nl] [NI] TitleName=#Unknown locale [ni] [MY] TitleName=#Unknown locale [my] [MX] TitleName=#Unknown locale [mx] [MV] TitleName=#Unknown locale [mv] [MO] TitleName=#Unknown locale [mo] [MN] TitleName=#Unknown locale [mn] [MK] TitleName=#Unknown locale [mk] [MC] TitleName=#Unknown locale [mc] [MA] TitleName=#Unknown locale [ma] [LY] TitleName=#Unknown locale [ly] [LV] TitleName=#Unknown locale [lv] [LU] TitleName=#Unknown locale [lu] [LT] TitleName=#Unknown locale [lt] [LI] TitleName=#Unknown locale [li] [LB] TitleName=#Unknown locale [lb] [KZ] TitleName=#Unknown locale [kz] [KW] TitleName=#Unknown locale [kw] [KR] TitleName=#Unknown locale [kr] [KG] TitleName=#Unknown locale [kg] [KE] TitleName=#Unknown locale [ke] [JP] TitleName=#Unknown locale [jp] [JO] TitleName=#Unknown locale [jo] [JM] TitleName=#Unknown locale [jm] [IT] TitleName=#Unknown locale [it] [IS] TitleName=#Unknown locale [is] [IR] TitleName=#Unknown locale [ir] [IQ] TitleName=#Unknown locale [iq] [IN] TitleName=#Unknown locale [in] [IL] TitleName=#Unknown locale [il] [IE] TitleName=#Unknown locale [ie] [ID] TitleName=#Unknown locale [id] [HU] TitleName=#Unknown locale [hu] [HR] TitleName=#Unknown locale [hr] [HN] TitleName=#Unknown locale [hn] [HK] TitleName=#Unknown locale [hk] [GT] TitleName=#Unknown locale [gt] [GR] TitleName=#Unknown locale [gr] [GE] TitleName=#Unknown locale [ge] [GB] TitleName=#Unknown locale [gb] [FR] TitleName=#Unknown locale [fr] [FO] TitleName=#Unknown locale [fo] [FI] TitleName=#Unknown locale [fi] [ES] TitleName=#Unknown locale [es] [EG] TitleName=#Unknown locale [eg] [EE] TitleName=#Unknown locale [ee] [EC] TitleName=#Unknown locale [ec] [DZ] TitleName=#Unknown locale [dz] [DO] TitleName=#Unknown locale [do] [DK] TitleName=#Unknown locale [dk] [DE] TitleName=#Unknown locale [de] [CZ] TitleName=#Unknown locale [cz] [CR] TitleName=#Unknown locale [cr] [CO] TitleName=#Unknown locale [co] [CN] TitleName=#Unknown locale [cn] [CL] TitleName=#Unknown locale [cl] [CH] TitleName=#Unknown locale [ch] [CA] TitleName=#Unknown locale [ca] [BZ] TitleName=#Unknown locale [bz] [BY] TitleName=#Unknown locale [by] [BR] TitleName=#Unknown locale [br] [BO] TitleName=#Unknown locale [bo] [BN] TitleName=#Unknown locale [bn] [BH] TitleName=#Unknown locale [bh] [BG] TitleName=#Unknown locale [bg] [BE] TitleName=#Unknown locale [be] [AZ] TitleName=#Unknown locale [az] [AU] TitleName=#Unknown locale [au] [AT] TitleName=#Unknown locale [at] [AR] TitleName=#Unknown locale [ar] [AM] TitleName=#Unknown locale [am] [AL] TitleName=#Unknown locale [al] [AE] TitleName=#Unknown locale [ae] [default] TitleName=#Known locale [default] - (fallback) [EN] TitleName=#Known locale [EN] - english [JA] TitleName=#Known locale [JA] - (japanese) [DE] TitleName=#Known locale [DE] - deutsch [FR] TitleName=#Known locale [FR] - francais [ES] TitleName=#Known locale [ES] - espanol [IT] TitleName=#Known locale [IT] - italiano [KO] TitleName=#Known locale [KO] - (korean) [TW] TitleName=#Known locale [TW] - (taiwanese) [BR] TitleName=#Known locale [BR] - portugues
THPS2X Syslink crash
Happens if too many servers are present (this is where data is written to driver?):
Hardware watchpoint 1: *(int*)0xD004D048 Old value = 1065353216 New value = 1500647462 0x00215adf in ?? () (gdb) pint $eip Undefined command: "pint". Try "help". (gdb) print $eip $1 = (void (*)()) 0x215adf
And this seems to copy server to database (this in particular copied string?):
Hardware watchpoint 1: *(int*)0xf47944 Old value = 926102321 New value = 858992984 0x00156cc3 in ?? () (gdb) print $eip $2 = (void (*)()) 0x156cc3 (gdb) info reg eax 0xd0043260 -805031328 ecx 0x1d 29 edx 0x0 0 ebx 0xf20ce0 15863008 esp 0xd004324c 0xd004324c ebp 0xf20ce0 0xf20ce0 esi 0xd00432a0 -805031264 edi 0xf47948 16021832 eip 0x156cc3 0x156cc3 eflags 0x246 [ PF ZF IF ] cs 0x8 8 ss 0x10 16 ds 0x10 16 es 0x10 16 fs 0x20 32 gs 0x0 0 (gdb) x/10i $eip => 0x156cc3: rep movsl %ds:(%esi),%es:(%edi) 0x156cc5: call 0x1b9db6 0x156cca: mov 0x29b44(%ebx),%ecx 0x156cd0: mov 0x10(%esp),%edx 0x156cd4: imul $0x78,%ecx,%ecx 0x156cd7: mov %edx,0x26ca8(%ecx,%ebx,1) 0x156cde: mov 0x14(%esp),%eax 0x156ce2: mov %eax,0x26cac(%ecx,%ebx,1) 0x156ce9: mov 0x29b44(%ebx),%eax 0x156cef: mov (%ebx),%edx
Reset
There are various methods to reset an Xbox or major parts of it (successfully or not).
SMC Cold Reboot
- CPU cycles: X > 0
SMC Warm Reboot
- CPU cycles: X > 0
PM26
- CPU cycles: X > 0
RST_CNT (RST_CPU)
RST_CNT (RST_CPU + SYS_RST)
RST_CNT (RST_CPU + FULL_RST)
RST_CNT (RST_CPU + SYS_RST + FULL_RST)
- CPU cycles: 0
Triple fault
- CPU cycles: 0[FIXME]
PCI-to-PCI bridge secondary bus reset
- CPU cycles: X > 0