The Xbox Development Kit
A look at the specs under the metal of the Xbox Development Kit.
With over
100 Xbox Development Kits (XDK) given to various Xbox developers world wide,
Xbox game development is well underway. The XDK comes with many useful features
that will allow for some pretty elaborate games. So, what will a developer get
with this competitively priced setup? Here's a rundown on some of the XDK's
features:
The OS is a stripped down version of the Windows 2000 kernel.
XDK supports DVD, CD, CD-RW, and DVD-R, but not CD-R. The Windows GUI is
replaced with the Xbox Dashboard.
The Dashboard allows use of DVD and CD players, system
configuration utilities, multiplayer and online connectivity utilities, and
saved game management.
Direct3D will be the primary API for the Xbox. Direct3D will be
based on DirectX 8.0 and implemented using a custom driver specific to the final
nVidia chipset and video adapter. Drivers support NTSC and PAL formats as well
as MPEG video. Online connectivity comes in two flavors: Ethernet and optional
56K modem.
At the heart of the XDK's standard libraries is DirectX. Accord
to J. Allard, Microsoft's General Manager, Platform and Third Party, DirectX is
an API used by more game developers worldwide, so it makes sense it would be
included in the XDK that's going out to next-generation console developers.
As far as user-friendliness goes, Allard and company are stating
that Xbox is the friendliest system to develop for. With an OS and API as well
known as Windows and DirectX, the XDK looks to provide one friendly development
environment, especially for PC developers who are dabbling in the console market
with the Xbox. And in time, it's only natural that the XDK will evolve to
accommodate the needs of developers.
What follows is the entire XDK development document. It was
accidentally leaked out. Microsoft's loss is our gain.
Xbox System Software Overview - official leaked document from
the XDK
The system software of the Microsoft Xbox game system will
provide a small, fast, safe, robust, and customizable environment to enable the
creation of great games for the Xbox game system. It will provide a set of
useful common services to be taken advantage of by game developers, such as
networking and file system input/output, so that developers can focus on
creating great games. It will also provide an attractive, easy-to-use interface
for functions other than running games, such as playing DVD movies or CD music
or configuring the Xbox console.
The Xbox system software will have these components:
The ROM of the motherboard on the Xbox console will provide
the following system-software services: Software System Kernel There will be no support for code running in user mode (Ring 3)
on the Xbox game system. All code will execute in kernel mode (Ring 0). Only one
process runs at a time, and that process will support multiple threads. There is
no Windows 2000 desktop user interface; the user interface is provided by the
individual Xbox games or the Xbox Dashboard if no game is running. After the hardware has been initialized, the system software
will display the boot graphic and play the startup sound. Because there are no
video or audio drivers in the kernel, this is done by poking the registers of
the sound and video card directly. This graphic and sound will play
approximately 1 second from the time the machine is turned on. Supported media are CD, DVD, CD-RW, or DVD-R. There is no CD-R
support. The system software will display these bitmaps sequentially,
after the boot graphic and sound have appeared, while the game itself is being
streamed from the DVD into RAM. As the game image is streamed into memory, the
system software checks the signatures of each section of the image on the fly.
Once the game image is in memory, the system software will start
the game. At this point, the kernel is acting in conjunction with the Xbox Title
Libraries to provide all of the basic services for the game itself.
The Xbox game image format is not compatible with other
executable systems, such as Windows 2000 executable format. The Xbox game image
must be loaded by the Xbox system software application, loading utilities
directly into RAM in 64-megabyte (MB) blocks. Unlike standard Windows 2000
applications, there are no dynamic-link library (DLL) loads, no fix-ups, and so
on. Xbox network stack: media access control (MAC), Network Driver
Interface Specification (NDIS), Transmission Control Protocol/Internet Protocol
(TCP/IP), and Winsock.
The primary programming model for the Xbox game system will be
defined by the Xbox Title Libraries. Because the Xbox Title Libraries are
partitioned into distinct libraries (modular), game developers can pick and
choose which libraries are appropriate for their title. For example, if a game
will support online play, they include the Xbox networking library with their
game. If no online play support is planned, they do not include the Xbox
networking library. While some support is implemented in the kernel of the
system software in the Xbox game system ROM (for example, file system support,
threading, memory management), the APIs to access these features are exposed
through the Xbox Title Libraries.
Note All Xbox-compatible code runs at Ring 0 on the Xbox game
system, which means the Xbox Title Libraries are implemented in kernel mode and
all games run in kernel mode. However, all Xbox Title Libraries will be
signature-compatible with their user-mode implementation. From a developer's
perspective, the Xbox Title Libraries function as they would in user mode.
Kernel mode results in faster performance at run time. Graphics The drivers support both National Television System Committee (NTSC)
and Phase Alternating Line (PAL) TV output. Moving Picture Experts Group (MPEG)
video is supported.
Input An API specific to the Xbox game system, based on Microsoft
DirectInput, is used for development with most Xbox controllers. Xbox-licensed
game systems should work without an additional driver. This assumes that Xbox
consoles do not introduce any new axis or capability not covered by the standard
Xbox game system API.
Audio Video Networking The Xbox Title Libraries include networking services for online
capabilities. Included with these will be TCP/IP and Winsock support. If online
connectivity is not wanted for a game, the Xbox networking libraries should not
be linked and included with the game title.
The API to access networking services is based on a subset of
Microsoft DirectPlay from DirectX 8.0. DirectPlay lobby or voice features will
not be supported, however.
New Xbox Services Xbox Dashboard Initially, the user interface of the Xbox Dashboard offers
the following choices to the user:
DVD Player CD Player Xbox Game System Configuration Multiplayer and Online Saved Game Management Error Handling
Hardware Abstraction Layer (HAL) Driver model Hard disk driver DVD driver FAT32
file system UDFS file system Copy-protection support Certificate/signature
validation Basic application services such as the application loader, memory
management, and threading.
The kernel is based on Microsoft Windows 2000. Many features of Windows 2000 are
not included in the Xbox system software, including those related to running on
multiple hardware platforms or running multiple processes at once. For more
information about unsupported Microsoft Win32 application programming interfaces
(APIs), see Win32 API (below).
Power Up
When the user turns on the console, the system software is decompressed out of
read-only memory (ROM) into random access memory (RAM). Once in RAM, the system
software initializes the hardware (DVD, audio, video, and so on).
Media Detection
Upon power up and during the display of the startup graphic and the playing of
sound, the system software attempts to determine what type of media is in the
DVD drive. If it determines that the media is a game, it loads the game into
RAM, checks the signature of the game to verify that it is an authentic copy,
then starts playing the game. If the media is not a game, the Xbox Dashboard is
run as follows:
Game Launch
Once the system software has determined that the media contains an Xbox game, it
loads the game developer bitmaps, publisher bitmaps, license bitmaps, and so on.
These will be stored in a predetermined location on the DVD, will contain no
executable code, and will be identified with a predefined schema.
Xbox Title Libraries
The Xbox Title Libraries define the programming model used to develop software
for the Xbox game system. They consist of all APIs provided with the Xbox
Development Kit, which are linked into every title written for the Xbox game
system, including:
Win32 API
A subset of the Win32 APIs is supported by the Xbox system software. We are
currently doing analysis to determine exactly which APIs will be needed. Some
omissions from the standard Win32 environment will include portions of the User,
Graphics Device Interface (GDI), OLE, or the Services interfaces. Any APIs from
User and GDI that are essential will be included as needed.
Services from Windows 2000 not available in the Xbox system software include:
Microsoft Direct3D will be the primary graphics API for the Xbox game system.
Direct3D for the Xbox game system will be based on DirectX 8.0, and implemented
using a custom driver specific to the final NVIDIA chipset and video adapter.
The graphics API for the Xbox game system is compatible with DirectX at the API
layer, while providing the thinnest, fastest-possible access to the video
hardware. The Direct3D driver is combined with the HAL to create a completely
monolithic driver implementation.
The Xbox controller connections and external peripheral connection are USB ports
with an Xbox proprietary connector. The Xbox game system implements USB drivers
for any possible peripherals connected to the Xbox console. Only full-speed USB
is supported.
The audio APIs for the Xbox game system are based on subsets of Microsoft
DirectSound and Microsoft DirectMusic, from DirectX 8.0. Audio streaming will
not be based on Microsoft DirectShow, however. Instead, an Xbox-specific audio
streaming API will be implemented for high quality CD playback without skipping,
and without undue CPU utilization. The following features are supported by the
Xbox audio APIs:
There is no support for Redbook audio or random instruments.
Like audio streaming, the video streaming API for the Xbox game system will not
be based on DirectShow. Instead, an Xbox-specific video streaming API will be
implemented.
Xbox hardware includes two devices for online connectivity:
The Xbox system software will include new services specific to the Xbox game
system and not based on any existing Win32 or DirectX APIs. New services
provided by the Xbox Title Libraries include:
The Xbox Dashboard is an application installed on the Xbox hard disk, which
essentially is the user interface when a game is not running in the Xbox game
system. The Xbox Dashboard provides the following services:
This can be configured for AutoPlay (so that a DVD video will play simply by
inserting into the Xbox console and powering up) or for manual control, which
presents controls for pause, skip, and so on.
This can be configured for AutoPlay (so that an audio CD will play simply by
inserting into the Xbox console and powering up) or for manual control, which
presents controls for pause, skip, play list management, and so on.
This presents the user interface for all preferences and settings for the Xbox
game system, including the following:
This presents the user interface for all online connectivity, including the
following:
This presents the user interface for hard disk management, including saving,
deleting, and copying games between the Xbox hard disk and the Xbox Zone
(online).
Errors that occur during system-boot execution of the Xbox Dashboard will be
handled by the Xbox Dashboard. However, hardware errors (for example, hard disk
failure) will be handled by the Xbox system software. Game errors also are not
handled by the Xbox Dashboard, but by the game software itself.