# Xbox Development Kit

The Xbox Development Kit (XDK) is a software development kit created by Microsoft used to write software for the 2001 Xbox gaming system. The XDK includes libraries, a compiler, and various tools used to create software for the Xbox. The XDK has the option to integrate itself into Microsoft Visual Studio 2002 or 2003. This is needed if one wants to develop applications or games for the Xbox. The XDK also includes a tool to record in-game footage, which has been widely used to create high-quality screenshots and trailers.

## Purpose

The XDK allows software creators to create, run and distribute applications on the Xbox platform. Xbox 360 XDKs were based on all three generations of the Xbox 360 Design ("Phat", "Slim" and "E"). There were XNA Kits, which were used at some expos and given to game studios, Stress Kits, which were used to test the power of the Xbox 360 and various conditions such as undervolting and overvolting and issued to Microsoft developers only, and Demo kits, which were used to demo games. Some but not all XDKs include a sidecar which was used to emulate the DVD drive and act as a hard drive and on older XDKs with older recoveries, used for PIX Debugging. Bundled with XDKs is the Xbox 360 SDK used to connect to the console, enable memory editing, file management, and integrate to Visual Studio 2010 for Xbox 360 game development.

## Xbox development environment

The Xbox BIOS is based on the NT 5.0 kernel, but does not have all of the resources or capabilities of the Windows 2000 operating system, (for example: neither DirectShow, registry, or DLL are natively supported on the Xbox). Because of the constraints on the hardware and environment of the Xbox, all software development for the Xbox (and all video game consoles systems in general) are focused on reserving the limited resources that exist, the main limitation of which is the amount of available RAM.

## Xbox embedded operating system

* The Xbox does not have an operating system per se, instead it only has a simple BIOS.
** Everything else must go into the main executable and its (XDK and own-made) libraries.
* Only a single process (executable program) can run at a time on the Xbox.
* Xbox hard drive file system (FATX) has many limitations, among them a maximum file name length of 42 characters.
* The Xbox has four non-standard USB ports but the Xbox SDK does not contain a full USB stack, thus to add support for USB hardware devices, the developer would have to code the entire USB stack from scratch.

## XDK and Xbox specific software limitations

This is a list of XDK, Xbox hardware, and Xbox operating system specific limitations.
* UDF (Universal Disk Format) file system limitation: The Xbox only supports UDF version 1.02 (designed for DVD-Video), which has a maximum file size of 1 GB (Gigabyte) (a DVD in a newer UDF version with a video that is larger than 1GB will not play), with the same applying to UDF/ISO hybrid formats (a.k.a. UDF Bridge format). A workaround is to burn discs in the ISO 9660 format. The ISO 9660 format has a 2 GB maximum file size, which cannot be bypassed.
* The Xbox hard disk is formatted in FATX (File Allocation Table for Xbox) which has a 4 GB (4096 Megabyte) maximum file size, and only supports file/folder names up to 42 characters, a maximum of 255 character full path, and a maximum number of 4096 files/folders in a single folder, 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 < > = ? : ; " * +, / \|¤ &).
* The USB flash drive reader/writer class used by the Xbox operating system has a few limitations as well. It is limited to USB flash drives and hard disks 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 733 MHz Intel Pentium III-like CPU and 64 MB shared memory, the Xbox has neither a fast enough CPU nor sufficient RAM to play HDTV videos encoded in native 720p/1080i resolution. However, the Xbox can upscale all standard definition movies and output them at 720p or 1080i.