Difference between revisions of "User:JayFoxRox"

From xboxdevwiki
Jump to: navigation, search
(Add more info about locales)
(Add more savegame notes)
Line 3: Line 3:
 
= Unfinished information =
 
= Unfinished information =
  
== TitleMeta.xbx locales ==
+
== Savegame notes ==
 +
 
 +
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](https://en.wikipedia.org/wiki/Byte_order_mark))
 +
 
 +
Titledata in E:/TDATA is similar.
 +
The user soundtrack / music collection is using a database file. See [[Soundtracks]].
 +
 
 +
=== 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.
 
Put this into a file and move it to "E:/UDATA/13371337/TitleMeta.xbx" and check which languages your MS dashboard supports.

Revision as of 15:53, 24 October 2019

For contact details, see http://jannikvogel.de/

Unfinished information

Savegame notes

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](https://en.wikipedia.org/wiki/Byte_order_mark))

Titledata in E:/TDATA is similar. The user soundtrack / music collection is using a database file. See Soundtracks.

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