- C++ 91.6%
- C 8.4%
| bink | "Add" proprietary Bink library | |
| src | Further style fixes | |
| .gitignore | "Add" proprietary Bink library | |
| readme.md | Mentionn additional runtime files in readme | |
| xdemos.dsp | Convert to Microsoft style | |
| xdemos.dsw | Initial commit | |
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 inbink/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.