Difference between revisions of "User:JayFoxRox"

From xboxdevwiki
Jump to: navigation, search
(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 =
  
== TitleMeta.xbx locales ==
+
== Savegame notes ==
  
Put this into a file and move it to "E:/UDATA/13371337/TitleMeta.xbx" and check which languages your MS dashboard supports (my results are from 1.00.5960.01 from Germany in NTSC mode):
+
''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] - (portugues)
+
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)

equivalent docs?

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