# XBMC4Xbox

XBMC4Xbox is a free and open source media player software made solely for the first-generation Xbox video-game console. The software was forked from the XBMC project (XBMC stands for Xbox Media Center). after XBMC removed support for the Xbox console. Other than the audio / video playback and media center functionality, XBMC4Xbox also has the ability to catalog and launch original Xbox games, and homebrew applications such as console emulators from the Xbox's built-in harddrive.
Since the XBMC4Xbox is homebrew software that is not endorsed or supported by Microsoft in any way, it means XBMC4Xbox requires a modchip or softmod exploit installed to run on the Xbox game-console. Binary builds of XBMC can also not be legally distributed by the XBMC4Xbox project members, so all releases of binary-builds are made by independent third-parties who compile and distribute unofficial versions of the application.

## Overview

XBMC4XBox's 10-foot user interface is designed for the living-room TV, and the large icons and text in the graphical user interface allows the user to easily manage most common digital music, video, image, podcasts, and playlists formats from a computer, optical disk, local network, and the internet using an Xbox's game-controller or the Xbox DVD-Kit remote control. It also has a skinnable and user-configurable interface and plugin support. XBMC4Xbox does also just like XBMC feature; audio visualizations, slideshows, weather forecasts reporting, and a Python-based API for third-party plugins. Add-ons such as skins and plugins for XBMC are not out-of-the-box compatible with XBMC4Xbox due to differences in their API's which means that all XBMC addons have to be ported in order to specifically work with XBMC4Xbox.
The software is not an authorized/signed Microsoft product, therefore a modification of the Xbox is required in order to run XBMC4Xbox on an Xbox game-console. On a modded Xbox, XBMC4Xbox can be run as an application (like any Xbox game), or as a dashboard that appears directly when the Xbox is turned on. Since XBMC4Xbox is an open source software program, its development source code is stored on a publicly accessible subversion repository. Accordingly, unofficial executable builds from the subversion repository are often released by third parties on sites unaffiliated with the XBMC4Xbox project.
XBMC4Xbox source code is distributed as open source under GPL (GNU General Public License), and is community developed by a group of volunteering people from different parts of the world working on XBMC4Xbox for free in their spare time. The source code for XBMC4Xbox is mostly updated on a daily basis by developers in a public subversion repository.

## Features

This is a description of the unique features and functions of the XBMC4Xbox fork for the Xbox that are not available or different in the original XBMC software from which it was forked:

### Xbox dashboard function (game and application launcher)

XBMC4Xbox has a "My Programs" section which functions as a replacement dashboard to launch Xbox games (retail and homebrew) and applications/emulator directly off the Xbox built-in harddrive, all from a GUI with thumbnail and list options. This replaces the original Xbox Dashboard from Microsoft, and with the exception of flashing new BIOS to an Xbox modchip it also features many extra functions that other homebrew dashboards have.

#### XBMC4Xbox Trainer Support (Xbox game cheats mods)

XBMC4Xbox also has the ability to use and apply Xbox Trainer Files. Trainers are small files that allow for in game value modification (such as cheat code) through altering retail functions in game values by way of using terminate-and-stay-resident keys. There are many things that can be modified including ammunition, extra-lives, or even how high a character can jump. Trainer support in XBMC4Xbox was achieved through collaboration with Team Xored. This collaboration began in December 2005 and came to fruition in January 2006 by successfully integrating the Team Xored Trainer Engine into XBMC4Xbox. XBMC4Xbox can run trainers with the following file extensions: *.ETM and *.XBTF

#### XLink Kai (Xbox Live online-gaming alternative)

XBMC4Xbox previously had an XLink Kai front-end integrated to control that client, but that has been removed in more recent builds.

### Audio and video playback handling

XBMC4Xbox can be used to play/view all common multimedia formats. However, it cannot playback most native 720p and 1080p video files due to Xbox hardware limitations. XBMC4Xbox can upscale the resolution of many standard definition videos.

#### XBMC4Xbox multimedia playback cores

XBMC4Xbox uses two different multimedia video player 'cores' for video-playback. The first core, dubbed "DVDPlayer", is XBMC's in-house developed video-playback core with support for DVD-Video movies and is based on libmpeg2 and libmad for MPEG decoding yet FFmpeg for media-container demuxing, splitting, as well as decoding other audio formats. Respective audio decoding is handled by liba52 for ac3 audio decoding and libdts / libdca for DTS audio. Also included is support for DVD-menus through libdvdnav and dvdread. One relatively unusual feature of this DVD-player core is the capability to on-the-fly pause and play DVD-Video movies that are stored in ISO and IMG DVD-images or DVD-Video (IFO/VOB/BUP) images (even directly from uncompressed RAR and ZIP archives), from either local harddrive storage or network-share storage.
The second video-player 'core' for video-playback is a ported version of the open-source cross-platform player, MPlayer, which today is only used as a backup player in XBMC4Xbox. MPlayer which is known for playing practically all common media-formats and XBMC4Xbox handles all codecs and containers normally supported by MPlayer, (which is all FFmpeg supported codecs and also several external ones with the help of proprietary DLL-files.
The third 'core', PAPlayer (abbreviated from Psycho-acoustic Audio Player), only supports audio playback. PAPlayer was also developed by the XBMC team, before the projects split, in 2005. The PAPlayer supports more codecs than MPlayer, and is therefore the default audio playback 'core'. Some file formats that don't work with MPlayer play with PAPlayer and there are less bugs (e.g. the visualisation bug in MPlayer, where visualisations 'break' after a file has been played). After the previous XBMC4Xbox site went down, the wiki was lost, so there is no record for supported filetypes for PAPlayer in XBMC4Xbox. However, XBMC.org has a page on PAPlayer supported formats.

## Programming and development

XBMC4Xbox is a software application programmed in C++, XBMC4Xbox uses Microsoft DirectX multimedia framework and Direct3D rendering, (as the Xbox does not support OpenGL).
The Xbox SDK (Xbox Development Kit, a.k.a. XDK) software development kit (with libraries) is required to compile XBMC4Xbox. Also required to compile (and program in) XBMC4Xbox is the older Microsoft Visual Studio .NET version 7.1
According to Microsoft, it is a common misconception that the Xbox uses a modified Windows 2000 kernel, instead they claim that the Xbox operating system was built from scratch but implements a subset of Windows APIs. The idea that it does, indeed, run a modified copy of the Windows kernel still persists in the community, however what is known for sure is that the Xbox's kernel works like a BIOS and is Win32 based, but does not have all of the resources or capabilities of a full Windows NT based operating system, (for example: neither DirectShow, registry, nor DLL are natively supported on the Xbox), and because of the constraints on the hardware and environment of the Xbox, all software development of XBMC4Xbox for the Xbox is focused on reserving the limited resources that exist, the main hindrance of which is the amount of available RAM at any one time.

## XBMC4Xbox software and related Xbox hardware limitations

* UDF (Universal Disk Format) file-system limitation: XBMC4Xbox only supports UDF version 1.02 (designed for DVD-Video media), which has a maximum file-size of 1 GB (meaning if you burn a DVD-media in a newer UDF version with a video that is larger than 1GB, XBMC will not be able to play that file), same goes for UDF/ISO hybrid formats (a.k.a. UDF Bridge format). Workaround: Burn all your CD/DVD-media in ISO 9660 format, which is the most common standard for recording CD/DVDs. Unfortunately ISO 9660 has a 2GB (Gigabyte) file-size limitation, which cannot be bypassed.
* The Xbox built-in harddrive is formatted in FATX (File Allocation Table for Xbox) which has a 4GB (4096 Megabyte) file-size limitation, and only supports file/folder-names up to 42 characters, a maximum of 255 in total file-structure character-depth and a maximum number of 4096 files/folders in a single subfolder, plus in the root of each partition, the maximum number of files/folders is 256. FATX also does not support all standard ASCII characters in file/folder names (for example < > = ? : ; " * +, / \|¤ &). XBMC will automatically try to rename any files/folders you transfer to the Xbox according to these limitations. None of these file-size and file-name issues are XBMC bugs as the limitations are in the Xbox itself. Workaround: Store your files/folders on your computer or a Network-Attached Storage (NAS) device which supports SMB/CIFS, FTP or UPnP and share them over a local-area-network instead.
* The USB flash drive (USB key-drives/memory-keys) reader/writer class used by XBMC for Xbox currently has a few limitations as well. It is limited to USB flash drives and harddisks compatible with USB Mass Storage Device Class following the USB 1.1 standard, with a maximum size of 4 GB. It can read and write to FATX formatted flash drives, but can only read FAT12, FAT16 (including VFAT), and FAT32. NTFS formatted drives are not supported yet.
* With its by today's standard old and slow 733 MHz Intel Pentium III-like CPU and 64MB shared memory, the Xbox has neither a fast enough CPU nor sufficient amounts of RAM to play HDTV videos encoded in native 720p/1080i resolution. However, XBMC on the Xbox can up-convert all standard definition movies and output them at 720p or 1080i.
* The Xbox is only able to play MPEG-4 AVC (H.264) encoded videos if the video-resolution is under 480p (720x480 pixels). If the video is however encoded with MPEG-4 ASP instead, then the videos native-resolution can be anything up to 960x540 pixels (a resolution which is also known as HRHD resolution).

## History

As the successor to Xbox Media Player (XBMP), XboxMediaCenter (XBMC), was ported to other platforms and architectures, becoming XBMC or XBMC Media Center thus losing the Xbox connection. On May 27, 2010, to differentiate the now mainline multiplatform XBMC from the original Xbox, the team behind XBMC announced the splitting of the Xbox branch into a new project; "XBMC4Xbox" which will continue the development and support of XBMC for the old Xbox hardware platform as a separate project, with the original XBMC project no longer offering any support for the Xbox.
Apart from the name the next noticeable thing is the changed version numbering. The last official release of XBMC for Xbox was 9.11 Camelot, a release which at the time was more closely connected to the multiplatform XBMC that had been in development for some time. The XBMC4Xbox project has since reverted to version numbering that does not include a reference to a date for release. Instead it is now uses a simpler major.minor version system, which is what was used before Xbox Media Center became just XBMC. New releases are now made available when they are ready rather than having set release dates.
In previous years before XBMC4Xbox split from XBMC, there was less developer interest in the Xbox version of XBMC, as the new multiplatform version of XBMC became the primary concern for the XBMC team. Only one developer (Arnova) still looked after the Xbox version. Lack of interest from the XBMC developers got to a point where a new home was needed for the Xbox codebase, and in 2010 it was moved to SourceForge.
A new community site had already been set up at xbmc4xbox.org and was chosen to replace the forums on xbmc.org where XboxX discussion was no longer relevant, as xbmc.org only deals with the platforms that they actively develop.

## Legality and copyright

XBMCXbox software is just like XBMC licensed under the GNU General Public License (GPL) by its developers, meaning they allow anybody to redistribute XBMCXbox source code under very liberal conditions. However, in order to compile the Xbox build of XBMCXbox into executable form, it is currently necessary to use Microsoft's proprietary XDK (Xbox Development Kit) which is only available to licensed developers and the resulting code may only be legally distributed by Microsoft. Accordingly, code compiled with an unauthorized copy of the Xbox Development Kit may not be legally distributed by anyone other than Microsoft.
So while XBMC4Xbox's source code is made publicly available by the developers under an open-source (GNU GPL) license, the developers themselves are legally unable to distribute executable versions of XBMC4Xbox. This is because XBMC4Xbox requires Microsoft's proprietary software development kit in order to compile. Thus, the only publicly available executable versions of XBMC4Xbox are from third parties, as a result, pre-compiled versions of XBMC4Xbox may be illegal to distribute in many countries around the world.
Also for audio and video codecs which are not natively supported via FFmpeg, XBMC4Xbox via MPlayer provides a DLL loader which can load third-party made audio and video codec DLLs to decode unsupported formats. This is potentially legal if the user owns a licensed copy of the DLL. However, some third-party XBMC4Xbox builds incorporate all available third-party DLLs that XBMC4Xbox can support, and the redistribution of these without a license is copyright infringement.