1
1
Fork
You've already forked XDemos-Decomp
0
Xbox Demos decompilation
  • C++ 91.6%
  • C 8.4%
2025年09月17日 22:53:19 -04:00
bink "Add" proprietary Bink library 2025年06月30日 20:22:26 -04:00
src Further style fixes 2025年09月17日 22:53:19 -04:00
.gitignore "Add" proprietary Bink library 2025年06月30日 20:22:26 -04:00
readme.md Mentionn additional runtime files in readme 2025年09月10日 19:33:02 -04:00
xdemos.dsp Convert to Microsoft style 2025年09月04日 13:57:30 -04:00
xdemos.dsw Initial commit 2025年06月28日 10:31:39 -04:00

Xbox Demos Decompilation

This is a non-matching ("functional") decompilation of Microsoft's Xbox application titled "Xbox Demos," a small menu for launching videos and demos at kiosks or bundled with retail games. It is perhaps best known for its appearance in the Jet Set Radio Future/Sega GT 2002 combo disc, though this decompilation was produced from the copy included with the North American release of BLiNX: The Time Sweeper.

The primary motivations of this decompilation are historical, providing source for a small working Xbox title as it might have been written by Microsoft.

Goals

  • A non-matching decompilation, i.e. the compiled program would behave the same as the original, but no effort has been made to produce exactly the same machine code
  • Basic explanations of how a simple Xbox application functions, provided by comments in decompiled code
  • Historical accuracy, such as including only code that would have been written as a part of Xbox Demos itself (i.e. no Xbox Title Libraries or Bink code included), as well as a coding style typical of Microsoft at the time
  • Uncovering any interesting internals, such as support for Bink video, an unused animated background, and unfinished alternative graphics code

Recompiling

Practically speaking, one should not expect to recompile this codebase. It is not "batteries included" or designed with modification and recompilation in mind, but instead as a recreation of a historical artifact.

To compile Xbox Demos, the following would be required:

  • Visual C++ 6.0 or Visual C++ .NET 2002/2003
  • A compatible version of the Xbox Development Kit (somewhere around 4627?)
  • Bink libraries for the Xbox, placed in the bink/ directory according to the instructions in bink/readme.md

It should then suffice to open the Visual C++ project at the repository's root and compile from within the IDE.

Some assets would then be required at runtime. At minimum, the runtime directory (either the game disc's D:\ directory or D:\xdemos) should contain the following:

- media\
 - ambient.wma (background "music")
 - launch.wav (sound effect for launching a demo)
 - menu.wav (sound effect for moving up/down in menu)
 - textskin.skn (parameters for unfinished alternative graphics code)
 - xdemos.skn (parameters for graphics)
- xdemos.tex (textures)
- xdemos.xbe (compiled binary)
- xdemos.xdi (data describing demos)

Unused features of Xbox Demos can also use files titled bkgnd.bik, font.ttf, and fontb.ttf in the media\ directory. The first is a Bink video that will play in the background if it exists (though it will be obscured by the screen background texture) and the two fonts are required to render text in the unfinished alternative graphics. None of these three files were present in the copy of Xbox Demos packaged with the North American copy of BLiNX: The Time Sweeper.

Some basic utilities for viewing and modifying some of these files can be found in the XDemos-Utils repository. Naturally, any demo files (videos, games) referenced in xdemos.xdi would also need to be included.