<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://xboxdevwiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mborgerson</id>
		<title>xboxdevwiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://xboxdevwiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mborgerson"/>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/Special:Contributions/Mborgerson"/>
		<updated>2026-05-21T05:00:24Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=System_Link&amp;diff=7382</id>
		<title>System Link</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=System_Link&amp;diff=7382"/>
				<updated>2024-12-19T22:36:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Add system link patent&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Secured traffic ===&lt;br /&gt;
&lt;br /&gt;
Xbox network traffic is secured through [[wikipedia:IPSec|IPSec]]. The implementation appears to be similar to [https://tools.ietf.org/html/rfc3948#section-2.1 RFC 3498, Section 2.1] from 2005 which was co-authored by Microsoft.&lt;br /&gt;
&lt;br /&gt;
The protocol uses UDP port 3074 which is also registered with the IANA for use in the Xbox[https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=3074].&lt;br /&gt;
Each Xbox uses the IP 0.0.0.1, so addressing relies on MAC-addresses{{FIXME|reason=Confirm this}}.&lt;br /&gt;
&lt;br /&gt;
The specific implementation in the Xbox uses TripleDES ([https://tools.ietf.org/html/rfc1851 RFC 1851]) for encryption, and SHA1-96 as [[wikipedia:HMAC|HMAC]].&lt;br /&gt;
&lt;br /&gt;
==== Key derivation ====&lt;br /&gt;
&lt;br /&gt;
The following keys are involved in generating the actual network crypto-keys:&lt;br /&gt;
&lt;br /&gt;
* XboxLANKey (Kernel export)&lt;br /&gt;
* Game specific LAN Key (XBE Certificate Header)&lt;br /&gt;
&lt;br /&gt;
The algorithm to generate the final keys, is this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LAN-Hash_1 = HMAC(XboxLANKey, concatenate(0x00, XBE-LAN-Key))&lt;br /&gt;
LAN-Hash_2 = HMAC(XboxLANKey, concatenate(0x01, XBE-LAN-Key))&lt;br /&gt;
&lt;br /&gt;
LAN-Hash = concatenate(LAN-Hash_1, LAN-Hash_2)&lt;br /&gt;
&lt;br /&gt;
LAN-SHA = LAN-Hash_0_to_15&lt;br /&gt;
LAN-DES = XcDESKeyParity(LAN-Hash_16_to_39)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kernel/XcDESKeyParity|XcDESKeyParity]] is the same as the respective function in the Xbox kernel.&lt;br /&gt;
&lt;br /&gt;
==== Broadcast messages ====&lt;br /&gt;
&lt;br /&gt;
Because no security association exists for broadcast messages, these are handled differently.&lt;br /&gt;
A common use case for broadcast messages is a server announce request / response.&lt;br /&gt;
&lt;br /&gt;
Broadcast messages are send to 255.255.255.255 (MAC-address: FF:FF:FF:FF:FF:FF) using SPI 0xFFFFFFFF and Sequence Number 0xFFFFFFFF.&lt;br /&gt;
A random IV is chosen, but nothing prevents re-using an IV.&lt;br /&gt;
&lt;br /&gt;
==== Security association ====&lt;br /&gt;
&lt;br /&gt;
Most messages require an SA between devices{{FIXME|reason=Look into this}}.&lt;br /&gt;
&lt;br /&gt;
=== XDK API ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=This probably shouldn't be here? there should be dedicated articles for the XDK APIs}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+XNet* Functions&lt;br /&gt;
|-&lt;br /&gt;
! function&lt;br /&gt;
! description&lt;br /&gt;
|-&lt;br /&gt;
|XNetCreateKey(&amp;amp;xnkid, &amp;amp;xnkey)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|XNetRegisterKey(&amp;amp;xnkid, &amp;amp;xnkey)&lt;br /&gt;
|Register the session key&lt;br /&gt;
|-&lt;br /&gt;
|XNetXnAddrToInAddr( pxnaddr, pxnkid, &amp;amp;pseudoIP )&lt;br /&gt;
|Convert the address to a winsock usable format&lt;br /&gt;
|-&lt;br /&gt;
|XNetUnregisterKey( &amp;amp;xbc.SessionID )&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|XNetGetTitleXnAddr( &amp;amp;hostAddr )&lt;br /&gt;
|Gets your XNADDR. Used by syslink, and lots of other people.&lt;br /&gt;
|-&lt;br /&gt;
|XNetGetEthernetLinkStatus()&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== References and Links ===&lt;br /&gt;
&lt;br /&gt;
* [https://hllmn.net/blog/2023-09-18_h1x-net/ Exploring The Halo 1 System Link Protocol]&lt;br /&gt;
* [https://www.google.com/patents/US20030093669 Patent: Network architecture for secure communications between two console-based gaming systems]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=System_Link&amp;diff=7381</id>
		<title>System Link</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=System_Link&amp;diff=7381"/>
				<updated>2024-12-19T22:33:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Fix section header&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Secured traffic ===&lt;br /&gt;
&lt;br /&gt;
Xbox network traffic is secured through [[wikipedia:IPSec|IPSec]]. The implementation appears to be similar to [https://tools.ietf.org/html/rfc3948#section-2.1 RFC 3498, Section 2.1] from 2005 which was co-authored by Microsoft.&lt;br /&gt;
&lt;br /&gt;
The protocol uses UDP port 3074 which is also registered with the IANA for use in the Xbox[https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=3074].&lt;br /&gt;
Each Xbox uses the IP 0.0.0.1, so addressing relies on MAC-addresses{{FIXME|reason=Confirm this}}.&lt;br /&gt;
&lt;br /&gt;
The specific implementation in the Xbox uses TripleDES ([https://tools.ietf.org/html/rfc1851 RFC 1851]) for encryption, and SHA1-96 as [[wikipedia:HMAC|HMAC]].&lt;br /&gt;
&lt;br /&gt;
==== Key derivation ====&lt;br /&gt;
&lt;br /&gt;
The following keys are involved in generating the actual network crypto-keys:&lt;br /&gt;
&lt;br /&gt;
* XboxLANKey (Kernel export)&lt;br /&gt;
* Game specific LAN Key (XBE Certificate Header)&lt;br /&gt;
&lt;br /&gt;
The algorithm to generate the final keys, is this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LAN-Hash_1 = HMAC(XboxLANKey, concatenate(0x00, XBE-LAN-Key))&lt;br /&gt;
LAN-Hash_2 = HMAC(XboxLANKey, concatenate(0x01, XBE-LAN-Key))&lt;br /&gt;
&lt;br /&gt;
LAN-Hash = concatenate(LAN-Hash_1, LAN-Hash_2)&lt;br /&gt;
&lt;br /&gt;
LAN-SHA = LAN-Hash_0_to_15&lt;br /&gt;
LAN-DES = XcDESKeyParity(LAN-Hash_16_to_39)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kernel/XcDESKeyParity|XcDESKeyParity]] is the same as the respective function in the Xbox kernel.&lt;br /&gt;
&lt;br /&gt;
==== Broadcast messages ====&lt;br /&gt;
&lt;br /&gt;
Because no security association exists for broadcast messages, these are handled differently.&lt;br /&gt;
A common use case for broadcast messages is a server announce request / response.&lt;br /&gt;
&lt;br /&gt;
Broadcast messages are send to 255.255.255.255 (MAC-address: FF:FF:FF:FF:FF:FF) using SPI 0xFFFFFFFF and Sequence Number 0xFFFFFFFF.&lt;br /&gt;
A random IV is chosen, but nothing prevents re-using an IV.&lt;br /&gt;
&lt;br /&gt;
==== Security association ====&lt;br /&gt;
&lt;br /&gt;
Most messages require an SA between devices{{FIXME|reason=Look into this}}.&lt;br /&gt;
&lt;br /&gt;
=== XDK API ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=This probably shouldn't be here? there should be dedicated articles for the XDK APIs}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+XNet* Functions&lt;br /&gt;
|-&lt;br /&gt;
! function&lt;br /&gt;
! description&lt;br /&gt;
|-&lt;br /&gt;
|XNetCreateKey(&amp;amp;xnkid, &amp;amp;xnkey)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|XNetRegisterKey(&amp;amp;xnkid, &amp;amp;xnkey)&lt;br /&gt;
|Register the session key&lt;br /&gt;
|-&lt;br /&gt;
|XNetXnAddrToInAddr( pxnaddr, pxnkid, &amp;amp;pseudoIP )&lt;br /&gt;
|Convert the address to a winsock usable format&lt;br /&gt;
|-&lt;br /&gt;
|XNetUnregisterKey( &amp;amp;xbc.SessionID )&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|XNetGetTitleXnAddr( &amp;amp;hostAddr )&lt;br /&gt;
|Gets your XNADDR. Used by syslink, and lots of other people.&lt;br /&gt;
|-&lt;br /&gt;
|XNetGetEthernetLinkStatus()&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== References and Links ===&lt;br /&gt;
&lt;br /&gt;
* [https://hllmn.net/blog/2023-09-18_h1x-net/ Exploring The Halo 1 System Link Protocol]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=System_Link&amp;diff=7380</id>
		<title>System Link</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=System_Link&amp;diff=7380"/>
				<updated>2024-12-19T22:32:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Add link to &amp;quot;Exploring The Halo 1 System Link Protocol&amp;quot; article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Secured traffic ===&lt;br /&gt;
&lt;br /&gt;
Xbox network traffic is secured through [[wikipedia:IPSec|IPSec]]. The implementation appears to be similar to [https://tools.ietf.org/html/rfc3948#section-2.1 RFC 3498, Section 2.1] from 2005 which was co-authored by Microsoft.&lt;br /&gt;
&lt;br /&gt;
The protocol uses UDP port 3074 which is also registered with the IANA for use in the Xbox[https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=3074].&lt;br /&gt;
Each Xbox uses the IP 0.0.0.1, so addressing relies on MAC-addresses{{FIXME|reason=Confirm this}}.&lt;br /&gt;
&lt;br /&gt;
The specific implementation in the Xbox uses TripleDES ([https://tools.ietf.org/html/rfc1851 RFC 1851]) for encryption, and SHA1-96 as [[wikipedia:HMAC|HMAC]].&lt;br /&gt;
&lt;br /&gt;
==== Key derivation ====&lt;br /&gt;
&lt;br /&gt;
The following keys are involved in generating the actual network crypto-keys:&lt;br /&gt;
&lt;br /&gt;
* XboxLANKey (Kernel export)&lt;br /&gt;
* Game specific LAN Key (XBE Certificate Header)&lt;br /&gt;
&lt;br /&gt;
The algorithm to generate the final keys, is this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LAN-Hash_1 = HMAC(XboxLANKey, concatenate(0x00, XBE-LAN-Key))&lt;br /&gt;
LAN-Hash_2 = HMAC(XboxLANKey, concatenate(0x01, XBE-LAN-Key))&lt;br /&gt;
&lt;br /&gt;
LAN-Hash = concatenate(LAN-Hash_1, LAN-Hash_2)&lt;br /&gt;
&lt;br /&gt;
LAN-SHA = LAN-Hash_0_to_15&lt;br /&gt;
LAN-DES = XcDESKeyParity(LAN-Hash_16_to_39)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kernel/XcDESKeyParity|XcDESKeyParity]] is the same as the respective function in the Xbox kernel.&lt;br /&gt;
&lt;br /&gt;
==== Broadcast messages ====&lt;br /&gt;
&lt;br /&gt;
Because no security association exists for broadcast messages, these are handled differently.&lt;br /&gt;
A common use case for broadcast messages is a server announce request / response.&lt;br /&gt;
&lt;br /&gt;
Broadcast messages are send to 255.255.255.255 (MAC-address: FF:FF:FF:FF:FF:FF) using SPI 0xFFFFFFFF and Sequence Number 0xFFFFFFFF.&lt;br /&gt;
A random IV is chosen, but nothing prevents re-using an IV.&lt;br /&gt;
&lt;br /&gt;
==== Security association ====&lt;br /&gt;
&lt;br /&gt;
Most messages require an SA between devices{{FIXME|reason=Look into this}}.&lt;br /&gt;
&lt;br /&gt;
=== XDK API ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=This probably shouldn't be here? there should be dedicated articles for the XDK APIs}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+XNet* Functions&lt;br /&gt;
|-&lt;br /&gt;
! function&lt;br /&gt;
! description&lt;br /&gt;
|-&lt;br /&gt;
|XNetCreateKey(&amp;amp;xnkid, &amp;amp;xnkey)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|XNetRegisterKey(&amp;amp;xnkid, &amp;amp;xnkey)&lt;br /&gt;
|Register the session key&lt;br /&gt;
|-&lt;br /&gt;
|XNetXnAddrToInAddr( pxnaddr, pxnkid, &amp;amp;pseudoIP )&lt;br /&gt;
|Convert the address to a winsock usable format&lt;br /&gt;
|-&lt;br /&gt;
|XNetUnregisterKey( &amp;amp;xbc.SessionID )&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|XNetGetTitleXnAddr( &amp;amp;hostAddr )&lt;br /&gt;
|Gets your XNADDR. Used by syslink, and lots of other people.&lt;br /&gt;
|-&lt;br /&gt;
|XNetGetEthernetLinkStatus()&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== References and links ====&lt;br /&gt;
&lt;br /&gt;
* [https://hllmn.net/blog/2023-09-18_h1x-net/ Exploring The Halo 1 System Link Protocol]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Emulators&amp;diff=7319</id>
		<title>Emulators</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Emulators&amp;diff=7319"/>
				<updated>2023-01-10T21:29:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Update xemu repo link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of known Xbox emulation projects&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Status&lt;br /&gt;
!Approach&lt;br /&gt;
!Chihiro&lt;br /&gt;
!Name&lt;br /&gt;
!Links&lt;br /&gt;
!Initiator&lt;br /&gt;
!Platform&lt;br /&gt;
!License&lt;br /&gt;
!Notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Yes|Maintained}}&lt;br /&gt;
|LLE&lt;br /&gt;
|{{Yes}}&lt;br /&gt;
|[[XQEMU]]&lt;br /&gt;
|[http://xqemu.com/][https://github.com/xqemu/][https://github.com/espes/xqemu]&lt;br /&gt;
|espes&lt;br /&gt;
|Windows/macOS/Linux/Others	&lt;br /&gt;
|&lt;br /&gt;
|XQEMU supports hardware-acceleration for the CPU emulation on Linux through KVM.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Yes|Maintained}}&lt;br /&gt;
|LLE&lt;br /&gt;
|{{Yes}}&lt;br /&gt;
|[[Xemu|xemu]]&lt;br /&gt;
|[https://xemu.app/][https://github.com/xemu-project/xemu]&lt;br /&gt;
|mborgerson&lt;br /&gt;
|Windows/macOS/Linux&lt;br /&gt;
|&lt;br /&gt;
|xemu is a fork of XQEMU but more usable&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Yes|Maintained}}&lt;br /&gt;
|HLE/LLE Hybrid&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[[Cxbx-Reloaded]]&lt;br /&gt;
|[http://cxbx-reloaded.co.uk/][https://github.com/Cxbx-Reloaded/Cxbx-Reloaded]&lt;br /&gt;
|SoullessSentinel&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|Cxbx-Reloaded supports LLE GPU emulation which was taken from XQEMU. At the time of writing, the LLE GPU is significantly slower than in XQEMU.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Yes|Maintained}}&lt;br /&gt;
|LLE&lt;br /&gt;
|{{Yes}}&lt;br /&gt;
|[http://mamedev.org/ MAME]&lt;br /&gt;
|[http://adb.arcadeitalia.net/?mame=xbox][http://adb.arcadeitalia.net/?mame=chihiro][http://emulation.gametechwiki.com/index.php/MAME_compatibility_list#Xbox][http://emulation.gametechwiki.com/index.php/MAME_compatibility_list#Chihiro_Arcade]&lt;br /&gt;
|[https://github.com/mamedev/mame/commits?author=yz70s yz70s] (Samuele Zannoli) and MAME Team&lt;br /&gt;
|Windows/macOS/Linux/Others&lt;br /&gt;
|&lt;br /&gt;
|Focus seems to be on Chihiro emulation.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|LLE/HLE Hybrid&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[[Fusion]][http://michaelbrundage.com/project/xbox-360-emulator/]&lt;br /&gt;
|&lt;br /&gt;
|Microsoft&lt;br /&gt;
|Xbox 360&lt;br /&gt;
|Proprietary&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Yes|Maintained}}&lt;br /&gt;
|LLE/HLE Hybrid{{citation needed}}&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[[Fission]][http://www.ign.com/articles/2017/10/23/the-untold-story-of-xbox-one-backwards-compatibility]&lt;br /&gt;
|[http://www.xbox.com/en-US/xbox-one/backward-compatibility]&lt;br /&gt;
|Microsoft&lt;br /&gt;
|Xbox One&lt;br /&gt;
|Proprietary&lt;br /&gt;
|Announced at E3 2017. Said to be working similar to the 360 support in the Xbox One [https://youtu.be/x0NKP7-h_G0?t=8503]. The 360 support is probably ahead of time shader translation and runtime CPU translation [https://majornelson.com/podcast/584-xbox-one-backward-compatibility-turns-1/].&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|LLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|Tortoise&lt;br /&gt;
|[https://gitlab.com/kvmbox-reloaded/]&lt;br /&gt;
|JayFoxRox, phire&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|The decision was made to create an HLE / LLE Xbox emulation project which is maintained similar to Dolphin or Citra. A key focus was on design simplicity. The project started as a continuation of kvmbox, with devices being copied from the XQEMU source code. The project was called kvmbox-reloaded, while the name was being decided. The HLE portion was never worked on.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|LLE/HLE Hybrid&lt;br /&gt;
|{{No}}&lt;br /&gt;
|OpenXBOX&lt;br /&gt;
|[https://github.com/mborgerson/OpenXBOX]&lt;br /&gt;
|mborgerson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|HLE/LLE Hybrid&lt;br /&gt;
|{{No}}&lt;br /&gt;
|xexec&lt;br /&gt;
|&lt;br /&gt;
|[http://xboxdevwiki.net/User:Haxar Haxar]&lt;br /&gt;
|Linux&lt;br /&gt;
|&lt;br /&gt;
|Xexec is an Xbox executable loader &amp;amp; emulator for x86/x64 Linux; handles direct execution of x86 code, executing Xbox game code directly on the CPU, in userspace Linux; All Windows kernel calls from Xbox game code are translated into POSIX syscalls, with no dependency on Wine.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|LLE/HLE Hybrid&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/blueshogun96/MacBox MacBox]&lt;br /&gt;
|[http://shogun3d-cxbx.blogspot.com/2017/01/the-macos-experiment-part-1.html][http://shogun3d-cxbx.blogspot.com/2017/01/around-beginning-of-new-year-i.html]&lt;br /&gt;
|blueshogun96&lt;br /&gt;
|macOS&lt;br /&gt;
|&lt;br /&gt;
|&amp;quot;The macOS Experiment&amp;quot; - An experimental VM for Macs that don't have support for the official VM framework. A simple proof of concept.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Yes|Maintained}}&lt;br /&gt;
|LLE/HLE Hybrid&lt;br /&gt;
|{{No}}&lt;br /&gt;
|StrikeBox&lt;br /&gt;
|[https://github.com/StrikerX3/StrikeBox]&lt;br /&gt;
|StrikerX3&lt;br /&gt;
|Windows/Linux&lt;br /&gt;
|&lt;br /&gt;
|A fork of OpenXBOX, which was turned into a separate project.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|HLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[[Cxbx]]&lt;br /&gt;
|&lt;br /&gt;
|Caustik&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|HLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|Dxbx&lt;br /&gt;
|[http://dxbx-emu.com][https://github.com/PatrickvL/Dxbx/]&lt;br /&gt;
|ShadowTj&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|The project was started on March 23rd 2008. It is an improved port of Cxbx to the Delphi programming language.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/impeachgod/Dirtbox Dirtbox]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|HLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://sourceforge.net/p/ironbabel/code/HEAD/tree/trunk/Box/Xbox/ IronBabel]&lt;br /&gt;
|&lt;br /&gt;
|daeken&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|This seems to have been a generic portability framework&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|HLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/daeken/Steelbreeze Steelbreeze]&lt;br /&gt;
|&lt;br /&gt;
|daeken&lt;br /&gt;
|Unknown&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|LLE/HLE Hybrid&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/daeken/Zookeeper Zookeeper]&lt;br /&gt;
|[https://www.reddit.com/r/EmuDev/comments/4isyvu/project_zookeeper_a_new_xbox_emulator/]&lt;br /&gt;
|daeken&lt;br /&gt;
|macOS&lt;br /&gt;
|&lt;br /&gt;
|Using Apple's Hypervisor.framework to run a custom kernel (NightBeliever in the repo) and then running Xbox code from there&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[http://ngemu.com/threads/.154342/ XbeNext]&lt;br /&gt;
|[https://github.com/LoveMHz/XBENext]&lt;br /&gt;
|LoveMHz&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|HLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[http://ngemu.com/forums/.65/ Xeon]&lt;br /&gt;
|&lt;br /&gt;
|_SF_&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[http://ngemu.com/threads/.105210/ XProject]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://code.google.com/p/xbem xbem]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|LLE/HLE Hybrid&lt;br /&gt;
|{{Yes}}&lt;br /&gt;
|Hackbox&lt;br /&gt;
|&lt;br /&gt;
|JayFoxRox&lt;br /&gt;
|Windows/Linux&lt;br /&gt;
|Private&lt;br /&gt;
|This was originally going to be a commercial emulator (but plans were dropped quickly in favor of preservation). The source code was temporarily public but then made private. The source code is still available to a selected group of developers. Hackbox was designed from scratch but re-used code from Cxbx for HLE routine detection.&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|LLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/phire/kvmbox kvmbox]&lt;br /&gt;
|&lt;br /&gt;
|phire&lt;br /&gt;
|Linux&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|HLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/Gabriel-Maldonado/XboxHLE XboxHLE]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/bjh83/boombox boombox]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/docbrown/vxb vxb]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Unknown}}&lt;br /&gt;
|Unknown&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/quantumdude836/exciplex exciplex]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|LLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[https://github.com/monocasa/xbvm XBVM]&lt;br /&gt;
|&lt;br /&gt;
|monocasa&lt;br /&gt;
|Linux&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{No|Dead}}&lt;br /&gt;
|&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[http://xenoborg-emu.blogspot.com/ Xenoborg]&lt;br /&gt;
|&lt;br /&gt;
|blueshogun96&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References and links == &lt;br /&gt;
&lt;br /&gt;
* [https://www.reddit.com/r/emulation/comments/6a958p/cxbx_reloaded_xbox_emulator_panzer_dragoon_orta/ Discussion about Xbox emulation and technical differences between [[Cxbx-Reloaded]] and [[XQEMU]]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Live&amp;diff=7296</id>
		<title>Xbox Live</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Live&amp;diff=7296"/>
				<updated>2022-10-21T09:43:36Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Xbox Live is an online multiplayer gaming and digital media delivery service created and operated by Microsoft. It was first made available to the Xbox system in November 2002. ([https://en.wikipedia.org/wiki/Xbox_Live Wikipedia]) Xbox Live support for the original Xbox ended in April 15, 2010. &lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
The Xbox Live architecture consists of Kerberos-based authentication tickets, with a Secure Gateway used to then access services (such as Matchmaking, Statistics/Leaderboards, and custom game servers)&lt;br /&gt;
&lt;br /&gt;
Authentication and access to Xbox Live services is controlled using the Kerberos protocol with a few proprietary customisations for the Xbox. When an Xbox first connects, the server gives it a [[Xbox Live/Machine Account|Machine Account]] which it uses to access the service; this machine account is always sent, but it can only be used alone to access UACS (User Account Creation Service) to create a user account - with both a machine account and user account, all other services are accessible.&lt;br /&gt;
&lt;br /&gt;
== XDK Functions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+XOnline* Functions&lt;br /&gt;
|-&lt;br /&gt;
! function&lt;br /&gt;
! description&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineGetUsers(XONLINE_USER* XBLAccountusers, DWORD* numOfXBLiveAccounts)&lt;br /&gt;
|The XOnlineGetUsers function will enumerate both the hard disk and any attached memory units looking for user accounts&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineTaskClose(XONLINETASK_HANDLE logonHandle)&lt;br /&gt;
|Called to abort the authentication process.&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineStartup( XONLINE_STARTUP_PARAMS* )&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineLogon(XONLINE_USER* XBLLoggedOnUsers, DWORD* XBLservices, DWORD SERVICE_COUNT, NULL, XONLINETASK_HANDLE &amp;amp;logonHandle)&lt;br /&gt;
|When a title calls XOnlineLogon to sign in, instead of blocking until the authentication completes, an asynchronous task handle is returned. As part of the authentication process a title must specify which services it will be using (XBLservices, SERVICE_COUNT). &lt;br /&gt;
|-&lt;br /&gt;
|XOnlineTaskContinue(XONLINETASK_HANDLE logonHandle)&lt;br /&gt;
|Called to check the status of XOnlineLogon. It will return XONLINETASK_S_RUNNING while the login process has not been completed.&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineLogonTaskGetResults(XONLINETASK_HANDLE logonHandle)&lt;br /&gt;
|Will return XONLINE_S_LOGON_CONNECTION_ESTABLISHED when the task is successfully completed. Otherwise it will return an error code.&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineGetLogonUsers()&lt;br /&gt;
|This returns a pointer to an array of XONLINE USER structures. This array is similar the XONLINE USER array we populated and passed into XOnlineLogon, but is updated with error status and permission flags for each user.&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineSetUserGuestNumber(dwUserFlags , 1)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineTitleUpdate(DWORD)&lt;br /&gt;
|The XOnlineTitleUpdate function will boot into an updater application, which performs the actual update&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineGetServiceInfo(Service, ?)&lt;br /&gt;
|XOnlineGetServiceInfo returns the connection status for a service&lt;br /&gt;
|-&lt;br /&gt;
|XOnlineNotificationSetState&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Discontinuation of service ==&lt;br /&gt;
&lt;br /&gt;
The service was officially discontinued on April 15th, 2010.&lt;br /&gt;
&lt;br /&gt;
12 players decided to stay in a lobby of ''Halo 2'' 24/7 to keep a server running.&lt;br /&gt;
The final player, Apache N4SIR was streaming the entire event, as the player count of 12 twindeled down to just him. At 11:40 PM PDT, on May 11th 2010, Apache N4SIR was booted from the game[http://i.imgur.com/oQw6k5H.jpg].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [https://media.defcon.org/DEF%20CON%2030/DEF%20CON%2030%20video%20and%20slides/DEF%20CON%2030%20-%20Tristan%20Miller%20-%20Reversing%20the%20Original%20Xbox%20Live%20Protocols.mp4 Reversing the Original Xbox Live Protocols] presented by [[User:monocasa]] at DEF CON 30 (2022).&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Resources&amp;diff=7295</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Resources&amp;diff=7295"/>
				<updated>2022-10-21T09:40:36Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xbox Post-Mortems by developers ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox Launch ===&lt;br /&gt;
&lt;br /&gt;
* GDC2002: [https://www.powershow.com/download/6f1ff7-NmE2O/Xbox_Launch_Lessons_Learned_powerpoint_ppt_presentation Xbox Launch: Lessons Learned] ([https://www.gdcvault.com/play/1022522/Xbox-Launch-Lessons Audio])&lt;br /&gt;
&lt;br /&gt;
=== Post processing ===&lt;br /&gt;
&lt;br /&gt;
* CEDEC2002: [https://web.archive.org/web/20031212044938/http://www.daionet.gr.jp/~masa/column/2002-09-22.html DOUBLE-S.T.E.A.L techniques] ''(Japanese)''&lt;br /&gt;
* GDC2003: [https://web.archive.org/web/20031212140633/http://www.daionet.gr.jp/~masa/column/2003-03-21.html Frame Buffer Postprocessing Effects in DOUBLE-S.T.E.A.L (Wreckless)] ''(English)''&lt;br /&gt;
&lt;br /&gt;
=== HDR rendering ===&lt;br /&gt;
&lt;br /&gt;
* GDC2004: [https://web.archive.org/web/20060404103630/http://www.daionet.gr.jp/~masa/column/2004-04-04.html Practical Implementation of High Dynamic Range Rendering]&lt;br /&gt;
&lt;br /&gt;
=== Deferred Shading ===&lt;br /&gt;
&lt;br /&gt;
* https://sites.google.com/site/richgel99/index#TOC-Shrek-Xbox-and-Deferred-Shading&lt;br /&gt;
* https://sites.google.com/site/richgel99/home&lt;br /&gt;
* https://sites.google.com/site/richgel99/home/xbox-1-g-buffer-attribute-packing-pixel-shader&lt;br /&gt;
* https://web.archive.org/web/20171008031141/http://www.tenacioussoftware.com/gdc_2004_deferred_shading.ppt&lt;br /&gt;
&lt;br /&gt;
== Random resources about Xbox hacking ==&lt;br /&gt;
* [https://events.ccc.de/congress/2005/fahrplan/attachments/591-paper_xbox.pdf Michael Steils Xbox Presentation from C3 in 2005]&lt;br /&gt;
* https://media.ccc.de/v/19C3-399-xbox-linux&lt;br /&gt;
* https://media.ccc.de/v/22C3-559-en-xbox_hacking&lt;br /&gt;
* https://www.youtube.com/watch?v=6fOjGLCctEY&lt;br /&gt;
* [http://www.bunniestudios.com/bunnie/proj/anatak/xboxmod.html Bunnies original Xbox page]&lt;br /&gt;
* [https://www.nostarch.com/xboxfree Bunnies &amp;quot;Hacking the Xbox&amp;quot; e-book for free]&lt;br /&gt;
* [http://web.archive.org/web/20010417064218/ddj.com/articles/2000/0008/0008a/0008a.htm?topic=graphics Article about Xbox Graphics (before release) from Dr. Dobbs]&lt;br /&gt;
* [http://www.anandtech.com/show/853 Technical article about the Xbox by AnandTech]&lt;br /&gt;
* [https://media.defcon.org/DEF%20CON%2030/DEF%20CON%2030%20video%20and%20slides/DEF%20CON%2030%20-%20Tristan%20Miller%20-%20Reversing%20the%20Original%20Xbox%20Live%20Protocols.mp4 Reversing the Original Xbox Live Protocols] presented by [[User:monocasa]] at DEF CON 30 (2022)&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=rUODlNffWmU 3 Xbox Bosses Share Secrets of the Console's Past (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=iWQb7LGH71s Xbox Assembly Line Tour (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=_gOoI57q72M XBox Oral History Panel with Nick Baker, Todd Holmdahl, and Albert Penello (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=2VCb-y7MC5U?t=1248 Behind the Code - Interview with Nick Baker (Video) intresting xbox part starts 20:48]&lt;br /&gt;
&lt;br /&gt;
== Background knowledge about related topics ==&lt;br /&gt;
&lt;br /&gt;
=== Graphics programming ===&lt;br /&gt;
&lt;br /&gt;
* Meltdown 2001 (Microsoft Game development conference): [https://web.archive.org/web/20060203201117/https://www.microsoft.com/mscorp/corpevents/meltdown2001/presentations.asp Presentation slides]&lt;br /&gt;
* GDC2001: [http://developer.download.nvidia.com/assets/gamedev/docs/GDC2K1_DX8_Pixel_Shaders.pdf DirectX8 Pixel Shaders]&lt;br /&gt;
* [http://download.nvidia.com/developer/Papers/ Papers by nvidia from Xbox era]&lt;br /&gt;
* [http://download.nvidia.com/developer/presentations/ Presentation slides by nvidia from Xbox era]&lt;br /&gt;
* [http://download.nvidia.com/developer/movies/ Presentation recordings by nvidia from Xbox era]&lt;br /&gt;
* [http://download.nvidia.com/developer/NVTextureSuite/ Texturing tools by nvidia from Xbox era]&lt;br /&gt;
* [http://download.nvidia.com/developer/Tools/ Tools by nvidia from Xbox era]&lt;br /&gt;
* http://download.nvidia.com/developer/Third_Party/&lt;br /&gt;
* http://iquilezles.org/www/index.htm&lt;br /&gt;
* https://web.archive.org/web/20150408045127/http://freespace.virgin.net/hugo.elias/&lt;br /&gt;
* http://www.mvps.org/directx/indexes/&lt;br /&gt;
* https://www.gdcvault.com/play/247/CRYSIS-Next-Gen ''(Contains some parts which are also applicable to original Xbox)''&lt;br /&gt;
* [https://www.valvesoftware.com/en/publications Publications by Valve Software]&lt;br /&gt;
* http://graphics.uni-konstanz.de/publikationen/Luft2006ImageEnhancementUnsharp/Luft2006ImageEnhancementUnsharp.pdf&lt;br /&gt;
* [https://web.archive.org/web/20090518092325/http://www.daionet.gr.jp:80/~masa/column/index.html Masa's Column (DOUBLE-S.T.E.A.L / Wrecked developer)]&lt;br /&gt;
* [https://fgiesen.wordpress.com/ Blog by ryg]&lt;br /&gt;
* [http://filmicworlds.com/blog/ Filmic Worlds]&lt;br /&gt;
* [https://gpuopen.com/archive/gamescgi/cubemapgen/ AMD CubeMapGen tool for mipmapping cubemaps]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=NV2A/Vertex_attributes&amp;diff=6671</id>
		<title>NV2A/Vertex attributes</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=NV2A/Vertex_attributes&amp;diff=6671"/>
				<updated>2019-01-22T23:11:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article documents the attribute types which are supported by the Xbox GPU.&lt;br /&gt;
Please take everything with a grain of salt - it's still being researched.&lt;br /&gt;
&lt;br /&gt;
== Draw methods ==&lt;br /&gt;
&lt;br /&gt;
=== Draw Arrays ===&lt;br /&gt;
&lt;br /&gt;
Data uploaded through DMA.&lt;br /&gt;
Each attribute has it's own offset and stride.&lt;br /&gt;
Decoded using the attribute information.&lt;br /&gt;
&lt;br /&gt;
=== Inline Buffer ===&lt;br /&gt;
&lt;br /&gt;
Data uploaded and decoded through PGRAPH methods.&lt;br /&gt;
&lt;br /&gt;
==== NV097_SET_VERTEX_DATA2F_M ... NV097_SET_VERTEX_DATA2F_M + 0x7c ====&lt;br /&gt;
==== NV097_SET_VERTEX_DATA4F_M ... NV097_SET_VERTEX_DATA4F_M + 0xfc ====&lt;br /&gt;
==== NV097_SET_VERTEX_DATA2S ... NV097_SET_VERTEX_DATA2S + 0x3c ====&lt;br /&gt;
&lt;br /&gt;
Vertex attribute values provided via NV097_SET_VERTEX_DATA2S are&lt;br /&gt;
apparently two 16-bit signed integers, packed into 32 bits, which are&lt;br /&gt;
then to be directly mapped to floating point values in the range&lt;br /&gt;
[-32768.0, 32767.0].&lt;br /&gt;
&lt;br /&gt;
==== NV097_SET_VERTEX_DATA4UB ... NV097_SET_VERTEX_DATA4UB + 0x3c ====&lt;br /&gt;
==== NV097_SET_VERTEX_DATA4S_M ... NV097_SET_VERTEX_DATA4S_M + 0x7c ====&lt;br /&gt;
&lt;br /&gt;
=== Inline Array ===&lt;br /&gt;
&lt;br /&gt;
Data uploaded through PGRAPH method NV097_INLINE_ARRAY.&lt;br /&gt;
The attributes are tightly packed in that buffer.&lt;br /&gt;
Decoded using the attribute information.&lt;br /&gt;
&lt;br /&gt;
=== Inline Elements ===&lt;br /&gt;
&lt;br /&gt;
Same as &amp;quot;Draw Arrays&amp;quot; but with an extra index buffer.&lt;br /&gt;
The index buffer is uploaded through PGRAPH methods NV097_ARRAY_ELEMENT16 and NV097_ARRAY_ELEMENT32.&lt;br /&gt;
&lt;br /&gt;
== Attribute Types ==&lt;br /&gt;
&lt;br /&gt;
=== Normalized unsigned byte (D3D) === &lt;br /&gt;
&lt;br /&gt;
Unsigned bytes aranged as ZYXW (BGRA) in memory (Also see [http://www.opengl.org/registry/specs/ARB/vertex_array_bgra.txt this GL extension]).&lt;br /&gt;
This is commonly used with an attribute count of 4.&lt;br /&gt;
FIXME: Does this still work with attribute count =/= 4 ?&lt;br /&gt;
Each byte will be mapped into the range 0.0 to 1.0.&lt;br /&gt;
FIXME: Verify&lt;br /&gt;
&lt;br /&gt;
=== Normalized unsigned byte (GL) ===&lt;br /&gt;
&lt;br /&gt;
Unsigned bytes arranged as XYZW (RGBA) in memory.&lt;br /&gt;
Each byte will be mapped into the range 0.0 to 1.0.&lt;br /&gt;
FIXME: Verify&lt;br /&gt;
&lt;br /&gt;
=== Normalized short ===&lt;br /&gt;
&lt;br /&gt;
Shorts, arranged as XYZW.&lt;br /&gt;
Each short will be mapped into the range -1.0 to 1.0&lt;br /&gt;
FIXME: Verify&lt;br /&gt;
&lt;br /&gt;
=== Float ===&lt;br /&gt;
&lt;br /&gt;
IEEE-754 single precision float arranged as XYZW.&lt;br /&gt;
FIXME: What happens to NaN or denormals?&lt;br /&gt;
&lt;br /&gt;
=== Short ===&lt;br /&gt;
&lt;br /&gt;
Shorts, arranged as XYZW.&lt;br /&gt;
Each short will be mapped into the range -32768.0 to 32767.0&lt;br /&gt;
FIXME: Verify&lt;br /&gt;
&lt;br /&gt;
=== Compressed normal ===&lt;br /&gt;
&lt;br /&gt;
Each 32 bit attribute is consisting of 11 bit X, 11 bit Y, 10 bit Z.&lt;br /&gt;
Each component is signed and will be mapped into the range -1.0 to 1.0.&lt;br /&gt;
FIXME: Verify&lt;br /&gt;
FIXME: Is the attribute count ignored?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NV2A]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Game_Disc&amp;diff=6648</id>
		<title>Xbox Game Disc</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Game_Disc&amp;diff=6648"/>
				<updated>2019-01-11T03:23:32Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Xbox games are shipped on DVDs. They are commonly referred to as Xbox Game Discs (XGD).&lt;br /&gt;
&lt;br /&gt;
== Visible information on ring ==&lt;br /&gt;
&lt;br /&gt;
'''The DVD inner ring usually contains:'''&lt;br /&gt;
&lt;br /&gt;
(The examples are from a German [[FIFA Soccer 2003]] disc)&lt;br /&gt;
&lt;br /&gt;
An outer portion with labels:&lt;br /&gt;
* Outer ring Layer 1&lt;br /&gt;
** Code 39 Barcode of the the Mastering Code (*EA02302E L1*)&lt;br /&gt;
** Text for Mastering code (&amp;quot;EA02302E L1 02 0MM&amp;quot;, where &amp;quot;02&amp;quot; is a smaller font and slightly higher than the previous baseline, followed by &amp;quot;0MM&amp;quot; on the original baseline)&lt;br /&gt;
** Mastering SID Code (&amp;quot;IFPI L126&amp;quot;)&lt;br /&gt;
* Inner ring for Layer 0&lt;br /&gt;
** Code 39 Barcode of the the Mastering Code (*EA02302E L0*)&lt;br /&gt;
** Text for Mastering code (&amp;quot;EA02302E L0 06&amp;quot;, where &amp;quot;06&amp;quot; is a smaller font and slightly higher than the previous baseline)&lt;br /&gt;
** Mastering SID Code (&amp;quot;IFPI L126&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
An inner porition with Xbox logo:&lt;br /&gt;
* 3 times &amp;quot;XBOX&amp;quot; text with &amp;quot;X Logo&amp;quot; in the background on each side&lt;br /&gt;
* 1 time &amp;quot;XBOX&amp;quot; text with blank background&lt;br /&gt;
* 3 times &amp;quot;XBOX&amp;quot; text with &amp;quot;X Logo&amp;quot; in the background on each side&lt;br /&gt;
* Another tiny pattern segmented into 7 portions in alternating position,(opposite of the &amp;quot;XBOX&amp;quot; text without logo)&lt;br /&gt;
** 4 times a Xbox logo &lt;br /&gt;
** 2 times the word &amp;quot;genuine&amp;quot;&lt;br /&gt;
** and in the middle the word ASPnnnn where n is a number{{citation needed}} &lt;br /&gt;
&lt;br /&gt;
''' ASP code '''&lt;br /&gt;
[[File:Asp demodisk.jpg|thumb|right|Detail of the DVD hologram, reflecting the ASP5080 by the flash of the camera. found on a demodisk (IM00113E-IM)]]&lt;br /&gt;
The following table lists known ASPnnnn numbers found on Xbox dvd disks, they are also on 360 disks but we dont list those in this wiki.&lt;br /&gt;
The games listed are examples, its known for sure more disks can have these numbers and further research can be done, to determine the meaning.&lt;br /&gt;
It is rumoured it might be a version string of some sorts slowly raising in xbox years old. {{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ASP number&lt;br /&gt;
! found on&lt;br /&gt;
! game serial&lt;br /&gt;
|-&lt;br /&gt;
| ASP0180&lt;br /&gt;
| Xbox Hardware Refresh Disc&lt;br /&gt;
| XB01101W&lt;br /&gt;
|-&lt;br /&gt;
| ASP0380&lt;br /&gt;
| Tom Clancy's Splinter Cell Exclusive Playable Demo&lt;br /&gt;
| US01251E&lt;br /&gt;
|-&lt;br /&gt;
| ASP0980&lt;br /&gt;
| Tom Clancy's Rainbow Six 3 DEMO DISC&lt;br /&gt;
| US03152E-US&lt;br /&gt;
|-&lt;br /&gt;
| ASP5080&lt;br /&gt;
| The official xbox 50 best games (Demo disk)&lt;br /&gt;
| IM00113E-IM&lt;br /&gt;
|-&lt;br /&gt;
| ASP5180&lt;br /&gt;
| Rayman 3 hoodlum havoc&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ASP5280&lt;br /&gt;
| Xbox Music Mixer&lt;br /&gt;
| MS09005A-MS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dumps ==&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
===== Example timestamps =====&lt;br /&gt;
&lt;br /&gt;
Timestamps for [[Petit Copter]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
126779196239020000ULL, // XDVDFS timestamp&lt;br /&gt;
126956823480700000ULL, // SS timestamp&lt;br /&gt;
126957328439576418ULL, // SS unk3 timestamp&lt;br /&gt;
126957649743869476ULL, // DMI Timestamp&lt;br /&gt;
126961143392830592ULL, // SS unk4 timestamp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Disc Manufacturing Information (DMI.bin) ====&lt;br /&gt;
&lt;br /&gt;
READ DVD STRUCTURE with format 0x04&lt;br /&gt;
&lt;br /&gt;
DMI (2048 Bytes):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || u32? || Unknown || Always 1?&lt;br /&gt;
|-&lt;br /&gt;
|4 || u32? || Unknown || Always zero?&lt;br /&gt;
|-&lt;br /&gt;
|8 || ascii_char[8] || Mastering Code || Example: EA02302E &amp;lt;br&amp;gt; Also see [[Xbe#Title_ID]]&lt;br /&gt;
|-&lt;br /&gt;
|16 || u64 || || Some timestamp?&lt;br /&gt;
|-&lt;br /&gt;
|24 || u32? || Unknown || Always 2?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Physical Format Information (PFI.bin) ====&lt;br /&gt;
&lt;br /&gt;
READ DVD STRUCTURE with format 0x00&lt;br /&gt;
&lt;br /&gt;
Read from the Lead-In.&lt;br /&gt;
&lt;br /&gt;
PFI (2048 Bytes):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || u8 || &amp;lt;code&amp;gt;booktype &amp;lt;&amp;lt; 4 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; part_version&amp;lt;/code&amp;gt; || 4 bit each&lt;br /&gt;
|-&lt;br /&gt;
|1 || u8 || &amp;lt;code&amp;gt;disc_size &amp;lt;&amp;lt; 4 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; maximum_rate&amp;lt;/code&amp;gt; || 4 bit each&lt;br /&gt;
|-&lt;br /&gt;
|2 || u8 || &amp;lt;code&amp;gt;number_of_layers &amp;lt;&amp;lt; 5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; track_path &amp;lt;&amp;lt; 4 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; layer_type&amp;lt;/code&amp;gt; || 1 bit padding, 2 bit, 1 bit, 4 bit&lt;br /&gt;
|-&lt;br /&gt;
|3 || u8 || &amp;lt;code&amp;gt;linear_density &amp;lt;&amp;lt; 4 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; track_density&amp;lt;/code&amp;gt; || 4 bit each&lt;br /&gt;
|-&lt;br /&gt;
|4 || u8 || || Always zero&lt;br /&gt;
|-&lt;br /&gt;
|5 || u24 || Starting Physical Sector Number of Data Area ||&lt;br /&gt;
|-&lt;br /&gt;
|8 || u8 || || Always zero&lt;br /&gt;
|-&lt;br /&gt;
|9 || u24 || End Physical Sector Number of Data Area ||&lt;br /&gt;
|-&lt;br /&gt;
|12 || u8 || || Always zero&lt;br /&gt;
|-&lt;br /&gt;
|13 || u24 || End Sector Number in Layer 0 || Always 0x2033AF for original Xbox discs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
From [ftp://ftp.avc-pioneer.com/Mtfuji_5/Proposal/Jan01/RDVDSTRC.pdf] (page 4)&lt;br /&gt;
&lt;br /&gt;
==== Security Sectors (SS.bin) ====&lt;br /&gt;
&lt;br /&gt;
Challenge entry (11 Bytes):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || u8 || Valid || Always 1 if the challenge is valid, else the challenge is ignored&lt;br /&gt;
|-&lt;br /&gt;
|1 || u8 || Challenge id ||&lt;br /&gt;
|-&lt;br /&gt;
|2 || u32 || Challenge value ||&lt;br /&gt;
|-&lt;br /&gt;
|6 || u8 || Response modifier || multimedia.cx says this might be a Response id. However, it's always 0 anyway?!&lt;br /&gt;
|-&lt;br /&gt;
|7 || u32 || Response value ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Security sector range (9 Bytes)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|3 || u24 || Start PSN ||&lt;br /&gt;
|-&lt;br /&gt;
|6 || u24 || End PSN ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unknown1 (44 Bytes)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || u64 || || Yet another timestamp?! (Similar to 1183 in complete format)&lt;br /&gt;
|-&lt;br /&gt;
|8 || u32 || || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|27 || u8 || || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|28 || u8[16] || || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Complete format (2048 Bytes):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || PFI || Physical Format Information || PFI for the actual data, unknown size&lt;br /&gt;
|-&lt;br /&gt;
|720 || u32 || Unknown ||&lt;br /&gt;
|-&lt;br /&gt;
|768 || u8 || Version of challenge table || Always 1&lt;br /&gt;
|-&lt;br /&gt;
|769 || u8 || Number of challenge entries || Always 23&lt;br /&gt;
|-&lt;br /&gt;
|770 || Challenge entry[] || Encrypted challenge entries ||&lt;br /&gt;
|-&lt;br /&gt;
|1055 || u64 || || Some large number timestamp?&lt;br /&gt;
|-&lt;br /&gt;
|1083 || u8[16] || || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|1183 || Unknown1 || || Unknown, this structure is SHA-1 hashed, to generate a RC4 key to decrypt challenge entries&lt;br /&gt;
|-&lt;br /&gt;
|1227 || u8[20] || SHA-1 hash A || Hash until here (of the complete format)&lt;br /&gt;
|-&lt;br /&gt;
|1247 || u8[256] || Signature A || For hash in previous field&lt;br /&gt;
|-&lt;br /&gt;
|1503 || Unknown1 || || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|1547 || u8[20] || SHA-1 hash B || Hash until here (of the complete format)&lt;br /&gt;
|-&lt;br /&gt;
|1567 || u8[64] || Signature B || For hash in previous field (note that this is somewhat shorter than the other signature?!)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | End of data readable by a stock Xbox drive (1632 Bytes)&lt;br /&gt;
|-&lt;br /&gt;
|1632 || u8 || Number of security sector ranges || Always 23&lt;br /&gt;
|-&lt;br /&gt;
|1633 || Security sector range[] || Security sector ranges || Only 16 of which are used.&lt;br /&gt;
|-&lt;br /&gt;
|1840 || Security sector range[] || Security sector ranges || Only 16 of which are used. &amp;lt;br&amp;gt; ''(Copy from Offset 1633)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All other fields are assumed to be zero!&lt;br /&gt;
&lt;br /&gt;
===== Decryption of challenge entries =====&lt;br /&gt;
&lt;br /&gt;
Starting at offset 1183, a 44 byte SHA-1 hash is generated.&lt;br /&gt;
The first 7 byte of the resulting hash are used as the key in RC4 decryption. The 253 Bytes of the challenge entries (Offset 770) will be decrypted.&lt;br /&gt;
&lt;br /&gt;
There'll only be a handful of valid entries in the challenge entries.&lt;br /&gt;
However there'll be at least 2.&lt;br /&gt;
&lt;br /&gt;
=== Dumping ===&lt;br /&gt;
&lt;br /&gt;
To dump Xbox Game Discs you need one of the following drives / firmwares:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Drive&lt;br /&gt;
!Standard&lt;br /&gt;
!Original Firmware download&lt;br /&gt;
!Name of modified Firmware for dumping&lt;br /&gt;
|-&lt;br /&gt;
|{{FIXME|reason=Which drives?}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
* 0800{{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba SD-M2012C&lt;br /&gt;
|IDE&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
* Kreon{{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
|Samsung SH-D162C&lt;br /&gt;
|IDE&lt;br /&gt;
|&lt;br /&gt;
|rowspan=2 |&lt;br /&gt;
* SB00 Kreon 0.60 (July 30th 2006)&lt;br /&gt;
* SB00 Kreon 0.80 (September 9th 2006)&lt;br /&gt;
* SB01 Kreon 1.00 (October 9th 2007)&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba TS-H352C&lt;br /&gt;
|IDE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Samsung SH-D162D&lt;br /&gt;
|IDE&lt;br /&gt;
|[https://web.archive.org/web/20090601193905/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200706281644411972_SH-D162D_SB00.bin&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB00] &amp;lt;br&amp;gt; [https://web.archive.org/web/20090916202345/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200811051941150901_SH-D162D_SB01.exe&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB01] &amp;lt;br&amp;gt; SB02{{citation needed}}[http://www.firmwarehq.com/download_995-file_SH-D162D_SB02.exe.html unknown if safe or legit] &amp;lt;br&amp;gt; [https://web.archive.org/web/20090402052613/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200903191825218171_SH-D162D_SB03.exe&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB03] &amp;lt;br&amp;gt; [https://web.archive.org/web/20120123040117/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200909281412336931_SH-D162D_SB04.exe&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB04]&lt;br /&gt;
|rowspan=2 |&lt;br /&gt;
* SB00 Kreon 1.00 (November 18th 2007)&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba TS-H352D&lt;br /&gt;
|IDE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Samsung SH-D163A&lt;br /&gt;
|SATA&lt;br /&gt;
|[http://web.archive.org/web/20090601191704/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200701031704489471_SH-D163A_SB01.bin&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB01]&lt;br /&gt;
|rowspan=2 |&lt;br /&gt;
* Kreon 0.80 (October 17th 2006)&lt;br /&gt;
* SB01 Kreon 1.00 (October 9th 2007)&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba TS-H353A&lt;br /&gt;
|SATA&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Samsung SH-D163B&lt;br /&gt;
|SATA&lt;br /&gt;
|&lt;br /&gt;
|rowspan=2 |&lt;br /&gt;
* Kreon 1.00 (November 18th 2007)&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba TS-H353B&lt;br /&gt;
|SATA&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please note that the modified firmwares are based on copyrighted material and can therefore not be legally shared here.&lt;br /&gt;
Patch files to patch original firmwares into dumping-firmwares would be appreciated. &lt;br /&gt;
&lt;br /&gt;
Flashing software:&lt;br /&gt;
&lt;br /&gt;
* TSDNMAC for MacOS&lt;br /&gt;
* [http://web.archive.org/web/20070301000000/http://www.samsungodd.com/KorLib/File/sfdnwin.exe SFDNWIN] for Microsoft Windows 2000 and XP&lt;br /&gt;
* TSDNWIN for Microsoft Windows Vista and 7&lt;br /&gt;
* Dell SFDNDOS and the newer TSDNDOS for Microsoft DOS&lt;br /&gt;
&lt;br /&gt;
For current dumping instructions see [http://forum.redump.org/topic/6073/xbox-1-360-dumping-instructions/ the Dumping Guide by the Redump Project].&lt;br /&gt;
&lt;br /&gt;
==== USB Adapters ====&lt;br /&gt;
&lt;br /&gt;
There are many USB-IDE/SATA adapters on the market. The following have been known to work well with the Kreon-compatible drives.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Adapter Model / USB VID:DID&lt;br /&gt;
! Drive Model&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.amazon.com/Sabrent-5-25-INCH-Converter-Activity-USB-DSC9/dp/B00DQJME7Y Sabrent USB-DSC9]&lt;br /&gt;
&amp;lt;code&amp;gt;1f75:0611 Innostor Technology Corporation&amp;lt;/code&amp;gt;&lt;br /&gt;
| SH-D162D/BEWE&lt;br /&gt;
&amp;lt;code&amp;gt;H/W:A Ver.D JULY 2007&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ubuntu 18.04 host with VirtualBox WinXP VM. USB pass-thru of adapter. No extra drivers required. Drive flashed. Works with Xbox Backup Creator.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox related commands ===&lt;br /&gt;
&lt;br /&gt;
==== Enable Unlock 1 (xtreme) state ====&lt;br /&gt;
&lt;br /&gt;
Supported by: Kreon 1.00&lt;br /&gt;
&amp;lt;pre&amp;gt;FF 08 01 01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable Unlock 1 (xtreme) state' as we already know it from the 360 xtreme modded drives. &lt;br /&gt;
This command is supported for legacy reasons only. Custom applications should use the new 'Set Lock State' instead.&lt;br /&gt;
&lt;br /&gt;
==== Set Lock State ====&lt;br /&gt;
&lt;br /&gt;
Supported by: Kreon 1.00&lt;br /&gt;
&amp;lt;pre&amp;gt;FF 08 01 11 xx&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;xx=00&amp;lt;/code&amp;gt; - Drive locked (no unlock state)&lt;br /&gt;
* &amp;lt;code&amp;gt;xx=01&amp;lt;/code&amp;gt; - Unlock State 1 (xtreme) enabled&lt;br /&gt;
* &amp;lt;code&amp;gt;xx=02&amp;lt;/code&amp;gt; - Unlock state 2 (wxripper) enabled&lt;br /&gt;
&lt;br /&gt;
==== SS extract command ====&lt;br /&gt;
&lt;br /&gt;
Supported by: Kreon 1.00&lt;br /&gt;
&amp;lt;pre&amp;gt;AD 00 FF 02 FD FF FE 00 08 00 xx C0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the well known  from the xtreme firmware.&lt;br /&gt;
&lt;br /&gt;
==== Get Feature List ====&lt;br /&gt;
&lt;br /&gt;
Supported by: Kreon 1.00&lt;br /&gt;
&amp;lt;pre&amp;gt;FF 08 01 10&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will return a list of the additional features supported by the drive.&lt;br /&gt;
All values returned are 16 bit values, and the list is terminated with null (&amp;lt;code&amp;gt;0x0000&amp;lt;/code&amp;gt;).&lt;br /&gt;
The two first words of the returned list always reads as &amp;lt;code&amp;gt;0xA55A 0X5AA5&amp;lt;/code&amp;gt; in order to guarantee that a reply from a drive not supporting this command correctly isn't mistaken for a feature list.&lt;br /&gt;
&lt;br /&gt;
An example feature list could be: &amp;lt;code&amp;gt;0xA55A, 0x5AA5, 0x0100, 0xF000, 0xF001, 0x0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This list would indicate that the drive supports XBOX360 Unlock 1, Lock and Error Skip, as it can be seen from the values defined below:&lt;br /&gt;
&lt;br /&gt;
XBOX 360 related features:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0100&amp;lt;/code&amp;gt; : The drive supports the unlock 1 state (xtreme)&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0101&amp;lt;/code&amp;gt; : The drive supports the unlock 2 state (wxripper)&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0120&amp;lt;/code&amp;gt; : The drive can read and decrypt the SS&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0121&amp;lt;/code&amp;gt; : The drive has full challenge response functionality&lt;br /&gt;
&lt;br /&gt;
XBOX related features:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0200&amp;lt;/code&amp;gt; : The drive supports the unlock 1 state (xtreme)&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0201&amp;lt;/code&amp;gt; : The drive supports the unlock 2 state (wxripper)&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0220&amp;lt;/code&amp;gt; : The drive can read and decrypt the SS&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0221&amp;lt;/code&amp;gt; : The drive has full challenge response functionality&lt;br /&gt;
&lt;br /&gt;
General drive features:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0xF000&amp;lt;/code&amp;gt; : The drive supports the lock (cancel any unlock state) command&lt;br /&gt;
* &amp;lt;code&amp;gt;0xF001&amp;lt;/code&amp;gt; : The drive supports error skipping&lt;br /&gt;
&lt;br /&gt;
This is the complete list of defined features at the moment. If you're working on a custom application you might want to contact me in order to get the latest list.&lt;br /&gt;
&lt;br /&gt;
== References and links == &lt;br /&gt;
* [https://web.archive.org/web/20150616131202/http://dark.ellende.eu/public/360DVDfirmwareRelatedInfo.pdf http://dark.ellende.eu/public/360DVDfirmwareRelatedInfo.pdf]&lt;br /&gt;
* [https://multimedia.cx/eggs/xbox-sphinx-protocol/ Overview of the challenge/response security protocol]&lt;br /&gt;
* [http://redump.org/discs/system/xbox/ Xbox Game Discs preserved by the Redump Project]&lt;br /&gt;
* [http://wiki.redump.org/index.php?title=Discs_not_yet_dumped#Microsoft_Xbox Missing Xbox Game Disc dumps at Redump Project]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Game_Disc&amp;diff=6647</id>
		<title>Xbox Game Disc</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Game_Disc&amp;diff=6647"/>
				<updated>2019-01-11T03:16:42Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Add a table containing info on which adapters are known to work well with Kreon drives.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Xbox games are shipped on DVDs. They are commonly referred to as Xbox Game Discs (XGD).&lt;br /&gt;
&lt;br /&gt;
== Visible information on ring ==&lt;br /&gt;
&lt;br /&gt;
'''The DVD inner ring usually contains:'''&lt;br /&gt;
&lt;br /&gt;
(The examples are from a German [[FIFA Soccer 2003]] disc)&lt;br /&gt;
&lt;br /&gt;
An outer portion with labels:&lt;br /&gt;
* Outer ring Layer 1&lt;br /&gt;
** Code 39 Barcode of the the Mastering Code (*EA02302E L1*)&lt;br /&gt;
** Text for Mastering code (&amp;quot;EA02302E L1 02 0MM&amp;quot;, where &amp;quot;02&amp;quot; is a smaller font and slightly higher than the previous baseline, followed by &amp;quot;0MM&amp;quot; on the original baseline)&lt;br /&gt;
** Mastering SID Code (&amp;quot;IFPI L126&amp;quot;)&lt;br /&gt;
* Inner ring for Layer 0&lt;br /&gt;
** Code 39 Barcode of the the Mastering Code (*EA02302E L0*)&lt;br /&gt;
** Text for Mastering code (&amp;quot;EA02302E L0 06&amp;quot;, where &amp;quot;06&amp;quot; is a smaller font and slightly higher than the previous baseline)&lt;br /&gt;
** Mastering SID Code (&amp;quot;IFPI L126&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
An inner porition with Xbox logo:&lt;br /&gt;
* 3 times &amp;quot;XBOX&amp;quot; text with &amp;quot;X Logo&amp;quot; in the background on each side&lt;br /&gt;
* 1 time &amp;quot;XBOX&amp;quot; text with blank background&lt;br /&gt;
* 3 times &amp;quot;XBOX&amp;quot; text with &amp;quot;X Logo&amp;quot; in the background on each side&lt;br /&gt;
* Another tiny pattern segmented into 7 portions in alternating position,(opposite of the &amp;quot;XBOX&amp;quot; text without logo)&lt;br /&gt;
** 4 times a Xbox logo &lt;br /&gt;
** 2 times the word &amp;quot;genuine&amp;quot;&lt;br /&gt;
** and in the middle the word ASPnnnn where n is a number{{citation needed}} &lt;br /&gt;
&lt;br /&gt;
''' ASP code '''&lt;br /&gt;
[[File:Asp demodisk.jpg|thumb|right|Detail of the DVD hologram, reflecting the ASP5080 by the flash of the camera. found on a demodisk (IM00113E-IM)]]&lt;br /&gt;
The following table lists known ASPnnnn numbers found on Xbox dvd disks, they are also on 360 disks but we dont list those in this wiki.&lt;br /&gt;
The games listed are examples, its known for sure more disks can have these numbers and further research can be done, to determine the meaning.&lt;br /&gt;
It is rumoured it might be a version string of some sorts slowly raising in xbox years old. {{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ASP number&lt;br /&gt;
! found on&lt;br /&gt;
! game serial&lt;br /&gt;
|-&lt;br /&gt;
| ASP0180&lt;br /&gt;
| Xbox Hardware Refresh Disc&lt;br /&gt;
| XB01101W&lt;br /&gt;
|-&lt;br /&gt;
| ASP0380&lt;br /&gt;
| Tom Clancy's Splinter Cell Exclusive Playable Demo&lt;br /&gt;
| US01251E&lt;br /&gt;
|-&lt;br /&gt;
| ASP0980&lt;br /&gt;
| Tom Clancy's Rainbow Six 3 DEMO DISC&lt;br /&gt;
| US03152E-US&lt;br /&gt;
|-&lt;br /&gt;
| ASP5080&lt;br /&gt;
| The official xbox 50 best games (Demo disk)&lt;br /&gt;
| IM00113E-IM&lt;br /&gt;
|-&lt;br /&gt;
| ASP5180&lt;br /&gt;
| Rayman 3 hoodlum havoc&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ASP5280&lt;br /&gt;
| Xbox Music Mixer&lt;br /&gt;
| MS09005A-MS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dumps ==&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
===== Example timestamps =====&lt;br /&gt;
&lt;br /&gt;
Timestamps for [[Petit Copter]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
126779196239020000ULL, // XDVDFS timestamp&lt;br /&gt;
126956823480700000ULL, // SS timestamp&lt;br /&gt;
126957328439576418ULL, // SS unk3 timestamp&lt;br /&gt;
126957649743869476ULL, // DMI Timestamp&lt;br /&gt;
126961143392830592ULL, // SS unk4 timestamp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Disc Manufacturing Information (DMI.bin) ====&lt;br /&gt;
&lt;br /&gt;
READ DVD STRUCTURE with format 0x04&lt;br /&gt;
&lt;br /&gt;
DMI (2048 Bytes):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || u32? || Unknown || Always 1?&lt;br /&gt;
|-&lt;br /&gt;
|4 || u32? || Unknown || Always zero?&lt;br /&gt;
|-&lt;br /&gt;
|8 || ascii_char[8] || Mastering Code || Example: EA02302E &amp;lt;br&amp;gt; Also see [[Xbe#Title_ID]]&lt;br /&gt;
|-&lt;br /&gt;
|16 || u64 || || Some timestamp?&lt;br /&gt;
|-&lt;br /&gt;
|24 || u32? || Unknown || Always 2?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Physical Format Information (PFI.bin) ====&lt;br /&gt;
&lt;br /&gt;
READ DVD STRUCTURE with format 0x00&lt;br /&gt;
&lt;br /&gt;
Read from the Lead-In.&lt;br /&gt;
&lt;br /&gt;
PFI (2048 Bytes):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || u8 || &amp;lt;code&amp;gt;booktype &amp;lt;&amp;lt; 4 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; part_version&amp;lt;/code&amp;gt; || 4 bit each&lt;br /&gt;
|-&lt;br /&gt;
|1 || u8 || &amp;lt;code&amp;gt;disc_size &amp;lt;&amp;lt; 4 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; maximum_rate&amp;lt;/code&amp;gt; || 4 bit each&lt;br /&gt;
|-&lt;br /&gt;
|2 || u8 || &amp;lt;code&amp;gt;number_of_layers &amp;lt;&amp;lt; 5 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; track_path &amp;lt;&amp;lt; 4 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; layer_type&amp;lt;/code&amp;gt; || 1 bit padding, 2 bit, 1 bit, 4 bit&lt;br /&gt;
|-&lt;br /&gt;
|3 || u8 || &amp;lt;code&amp;gt;linear_density &amp;lt;&amp;lt; 4 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; track_density&amp;lt;/code&amp;gt; || 4 bit each&lt;br /&gt;
|-&lt;br /&gt;
|4 || u8 || || Always zero&lt;br /&gt;
|-&lt;br /&gt;
|5 || u24 || Starting Physical Sector Number of Data Area ||&lt;br /&gt;
|-&lt;br /&gt;
|8 || u8 || || Always zero&lt;br /&gt;
|-&lt;br /&gt;
|9 || u24 || End Physical Sector Number of Data Area ||&lt;br /&gt;
|-&lt;br /&gt;
|12 || u8 || || Always zero&lt;br /&gt;
|-&lt;br /&gt;
|13 || u24 || End Sector Number in Layer 0 || Always 0x2033AF for original Xbox discs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
From [ftp://ftp.avc-pioneer.com/Mtfuji_5/Proposal/Jan01/RDVDSTRC.pdf] (page 4)&lt;br /&gt;
&lt;br /&gt;
==== Security Sectors (SS.bin) ====&lt;br /&gt;
&lt;br /&gt;
Challenge entry (11 Bytes):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || u8 || Valid || Always 1 if the challenge is valid, else the challenge is ignored&lt;br /&gt;
|-&lt;br /&gt;
|1 || u8 || Challenge id ||&lt;br /&gt;
|-&lt;br /&gt;
|2 || u32 || Challenge value ||&lt;br /&gt;
|-&lt;br /&gt;
|6 || u8 || Response modifier || multimedia.cx says this might be a Response id. However, it's always 0 anyway?!&lt;br /&gt;
|-&lt;br /&gt;
|7 || u32 || Response value ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Security sector range (9 Bytes)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|3 || u24 || Start PSN ||&lt;br /&gt;
|-&lt;br /&gt;
|6 || u24 || End PSN ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unknown1 (44 Bytes)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || u64 || || Yet another timestamp?! (Similar to 1183 in complete format)&lt;br /&gt;
|-&lt;br /&gt;
|8 || u32 || || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|27 || u8 || || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|28 || u8[16] || || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Complete format (2048 Bytes):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0 || PFI || Physical Format Information || PFI for the actual data, unknown size&lt;br /&gt;
|-&lt;br /&gt;
|720 || u32 || Unknown ||&lt;br /&gt;
|-&lt;br /&gt;
|768 || u8 || Version of challenge table || Always 1&lt;br /&gt;
|-&lt;br /&gt;
|769 || u8 || Number of challenge entries || Always 23&lt;br /&gt;
|-&lt;br /&gt;
|770 || Challenge entry[] || Encrypted challenge entries ||&lt;br /&gt;
|-&lt;br /&gt;
|1055 || u64 || || Some large number timestamp?&lt;br /&gt;
|-&lt;br /&gt;
|1083 || u8[16] || || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|1183 || Unknown1 || || Unknown, this structure is SHA-1 hashed, to generate a RC4 key to decrypt challenge entries&lt;br /&gt;
|-&lt;br /&gt;
|1227 || u8[20] || SHA-1 hash A || Hash until here (of the complete format)&lt;br /&gt;
|-&lt;br /&gt;
|1247 || u8[256] || Signature A || For hash in previous field&lt;br /&gt;
|-&lt;br /&gt;
|1503 || Unknown1 || || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|1547 || u8[20] || SHA-1 hash B || Hash until here (of the complete format)&lt;br /&gt;
|-&lt;br /&gt;
|1567 || u8[64] || Signature B || For hash in previous field (note that this is somewhat shorter than the other signature?!)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | End of data readable by a stock Xbox drive (1632 Bytes)&lt;br /&gt;
|-&lt;br /&gt;
|1632 || u8 || Number of security sector ranges || Always 23&lt;br /&gt;
|-&lt;br /&gt;
|1633 || Security sector range[] || Security sector ranges || Only 16 of which are used.&lt;br /&gt;
|-&lt;br /&gt;
|1840 || Security sector range[] || Security sector ranges || Only 16 of which are used. &amp;lt;br&amp;gt; ''(Copy from Offset 1633)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All other fields are assumed to be zero!&lt;br /&gt;
&lt;br /&gt;
===== Decryption of challenge entries =====&lt;br /&gt;
&lt;br /&gt;
Starting at offset 1183, a 44 byte SHA-1 hash is generated.&lt;br /&gt;
The first 7 byte of the resulting hash are used as the key in RC4 decryption. The 253 Bytes of the challenge entries (Offset 770) will be decrypted.&lt;br /&gt;
&lt;br /&gt;
There'll only be a handful of valid entries in the challenge entries.&lt;br /&gt;
However there'll be at least 2.&lt;br /&gt;
&lt;br /&gt;
=== Dumping ===&lt;br /&gt;
&lt;br /&gt;
To dump Xbox Game Discs you need one of the following drives / firmwares:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Drive&lt;br /&gt;
!Standard&lt;br /&gt;
!Original Firmware download&lt;br /&gt;
!Name of modified Firmware for dumping&lt;br /&gt;
|-&lt;br /&gt;
|{{FIXME|reason=Which drives?}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
* 0800{{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba SD-M2012C&lt;br /&gt;
|IDE&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
* Kreon{{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
|Samsung SH-D162C&lt;br /&gt;
|IDE&lt;br /&gt;
|&lt;br /&gt;
|rowspan=2 |&lt;br /&gt;
* SB00 Kreon 0.60 (July 30th 2006)&lt;br /&gt;
* SB00 Kreon 0.80 (September 9th 2006)&lt;br /&gt;
* SB01 Kreon 1.00 (October 9th 2007)&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba TS-H352C&lt;br /&gt;
|IDE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Samsung SH-D162D&lt;br /&gt;
|IDE&lt;br /&gt;
|[https://web.archive.org/web/20090601193905/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200706281644411972_SH-D162D_SB00.bin&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB00] &amp;lt;br&amp;gt; [https://web.archive.org/web/20090916202345/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200811051941150901_SH-D162D_SB01.exe&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB01] &amp;lt;br&amp;gt; SB02{{citation needed}}[http://www.firmwarehq.com/download_995-file_SH-D162D_SB02.exe.html unknown if safe or legit] &amp;lt;br&amp;gt; [https://web.archive.org/web/20090402052613/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200903191825218171_SH-D162D_SB03.exe&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB03] &amp;lt;br&amp;gt; [https://web.archive.org/web/20120123040117/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200909281412336931_SH-D162D_SB04.exe&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB04]&lt;br /&gt;
|rowspan=2 |&lt;br /&gt;
* SB00 Kreon 1.00 (November 18th 2007)&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba TS-H352D&lt;br /&gt;
|IDE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Samsung SH-D163A&lt;br /&gt;
|SATA&lt;br /&gt;
|[http://web.archive.org/web/20090601191704/http://www.samsungodd.com:80/korlib/download.asp?no=&amp;amp;fname=200701031704489471_SH-D163A_SB01.bin&amp;amp;path=/UploadFiles/FW/FWDOWNLOAD/ENG/ SB01]&lt;br /&gt;
|rowspan=2 |&lt;br /&gt;
* Kreon 0.80 (October 17th 2006)&lt;br /&gt;
* SB01 Kreon 1.00 (October 9th 2007)&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba TS-H353A&lt;br /&gt;
|SATA&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Samsung SH-D163B&lt;br /&gt;
|SATA&lt;br /&gt;
|&lt;br /&gt;
|rowspan=2 |&lt;br /&gt;
* Kreon 1.00 (November 18th 2007)&lt;br /&gt;
|-&lt;br /&gt;
|Toshiba TS-H353B&lt;br /&gt;
|SATA&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please note that the modified firmwares are based on copyrighted material and can therefore not be legally shared here.&lt;br /&gt;
Patch files to patch original firmwares into dumping-firmwares would be appreciated. &lt;br /&gt;
&lt;br /&gt;
Flashing software:&lt;br /&gt;
&lt;br /&gt;
* TSDNMAC for MacOS&lt;br /&gt;
* [http://web.archive.org/web/20070301000000/http://www.samsungodd.com/KorLib/File/sfdnwin.exe SFDNWIN] for Microsoft Windows 2000 and XP&lt;br /&gt;
* TSDNWIN for Microsoft Windows Vista and 7&lt;br /&gt;
* Dell SFDNDOS and the newer TSDNDOS for Microsoft DOS&lt;br /&gt;
&lt;br /&gt;
For current dumping instructions see [http://forum.redump.org/topic/6073/xbox-1-360-dumping-instructions/ the Dumping Guide by the Redump Project].&lt;br /&gt;
&lt;br /&gt;
==== USB Adapters ====&lt;br /&gt;
&lt;br /&gt;
There are many USB-IDE/SATA adapters on the market. The following have been known to work well with the Kreon-compatible drives.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Adapter Model / USB VID:DID&lt;br /&gt;
! Drive Model&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.amazon.com/Sabrent-5-25-INCH-Converter-Activity-USB-DSC9/dp/B00DQJME7Y Sabrent USB-DSC9]&lt;br /&gt;
&amp;lt;code&amp;gt;1f75:0611 Innostor Technology Corporation&amp;lt;/code&amp;gt;&lt;br /&gt;
| SH-D162D (&amp;lt;code&amp;gt;H/W:A Ver.D JULY 2007&amp;lt;/code&amp;gt;)&lt;br /&gt;
| Ubuntu 18.04 host with VirtualBox WinXP VM. USB pass-thru of adapter. Drive flashed. Works with Xbox Backup Creator.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox related commands ===&lt;br /&gt;
&lt;br /&gt;
==== Enable Unlock 1 (xtreme) state ====&lt;br /&gt;
&lt;br /&gt;
Supported by: Kreon 1.00&lt;br /&gt;
&amp;lt;pre&amp;gt;FF 08 01 01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable Unlock 1 (xtreme) state' as we already know it from the 360 xtreme modded drives. &lt;br /&gt;
This command is supported for legacy reasons only. Custom applications should use the new 'Set Lock State' instead.&lt;br /&gt;
&lt;br /&gt;
==== Set Lock State ====&lt;br /&gt;
&lt;br /&gt;
Supported by: Kreon 1.00&lt;br /&gt;
&amp;lt;pre&amp;gt;FF 08 01 11 xx&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;xx=00&amp;lt;/code&amp;gt; - Drive locked (no unlock state)&lt;br /&gt;
* &amp;lt;code&amp;gt;xx=01&amp;lt;/code&amp;gt; - Unlock State 1 (xtreme) enabled&lt;br /&gt;
* &amp;lt;code&amp;gt;xx=02&amp;lt;/code&amp;gt; - Unlock state 2 (wxripper) enabled&lt;br /&gt;
&lt;br /&gt;
==== SS extract command ====&lt;br /&gt;
&lt;br /&gt;
Supported by: Kreon 1.00&lt;br /&gt;
&amp;lt;pre&amp;gt;AD 00 FF 02 FD FF FE 00 08 00 xx C0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the well known  from the xtreme firmware.&lt;br /&gt;
&lt;br /&gt;
==== Get Feature List ====&lt;br /&gt;
&lt;br /&gt;
Supported by: Kreon 1.00&lt;br /&gt;
&amp;lt;pre&amp;gt;FF 08 01 10&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will return a list of the additional features supported by the drive.&lt;br /&gt;
All values returned are 16 bit values, and the list is terminated with null (&amp;lt;code&amp;gt;0x0000&amp;lt;/code&amp;gt;).&lt;br /&gt;
The two first words of the returned list always reads as &amp;lt;code&amp;gt;0xA55A 0X5AA5&amp;lt;/code&amp;gt; in order to guarantee that a reply from a drive not supporting this command correctly isn't mistaken for a feature list.&lt;br /&gt;
&lt;br /&gt;
An example feature list could be: &amp;lt;code&amp;gt;0xA55A, 0x5AA5, 0x0100, 0xF000, 0xF001, 0x0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This list would indicate that the drive supports XBOX360 Unlock 1, Lock and Error Skip, as it can be seen from the values defined below:&lt;br /&gt;
&lt;br /&gt;
XBOX 360 related features:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0100&amp;lt;/code&amp;gt; : The drive supports the unlock 1 state (xtreme)&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0101&amp;lt;/code&amp;gt; : The drive supports the unlock 2 state (wxripper)&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0120&amp;lt;/code&amp;gt; : The drive can read and decrypt the SS&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0121&amp;lt;/code&amp;gt; : The drive has full challenge response functionality&lt;br /&gt;
&lt;br /&gt;
XBOX related features:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0200&amp;lt;/code&amp;gt; : The drive supports the unlock 1 state (xtreme)&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0201&amp;lt;/code&amp;gt; : The drive supports the unlock 2 state (wxripper)&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0220&amp;lt;/code&amp;gt; : The drive can read and decrypt the SS&lt;br /&gt;
* &amp;lt;code&amp;gt;0x0221&amp;lt;/code&amp;gt; : The drive has full challenge response functionality&lt;br /&gt;
&lt;br /&gt;
General drive features:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0xF000&amp;lt;/code&amp;gt; : The drive supports the lock (cancel any unlock state) command&lt;br /&gt;
* &amp;lt;code&amp;gt;0xF001&amp;lt;/code&amp;gt; : The drive supports error skipping&lt;br /&gt;
&lt;br /&gt;
This is the complete list of defined features at the moment. If you're working on a custom application you might want to contact me in order to get the latest list.&lt;br /&gt;
&lt;br /&gt;
== References and links == &lt;br /&gt;
* [https://web.archive.org/web/20150616131202/http://dark.ellende.eu/public/360DVDfirmwareRelatedInfo.pdf http://dark.ellende.eu/public/360DVDfirmwareRelatedInfo.pdf]&lt;br /&gt;
* [https://multimedia.cx/eggs/xbox-sphinx-protocol/ Overview of the challenge/response security protocol]&lt;br /&gt;
* [http://redump.org/discs/system/xbox/ Xbox Game Discs preserved by the Redump Project]&lt;br /&gt;
* [http://wiki.redump.org/index.php?title=Discs_not_yet_dumped#Microsoft_Xbox Missing Xbox Game Disc dumps at Redump Project]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=6395</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=6395"/>
				<updated>2018-04-28T01:22:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cleanup ==&lt;br /&gt;
&lt;br /&gt;
The main page could stand to be cleaned up now that we have many pages in the wiki. Also some pictures would be nice.&lt;br /&gt;
[[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:10, 25 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
Re cleanup I was going to do something like the navigation at https://www.3dbrew.org/wiki/Main_Page - but I only ever finished the box on top.&lt;br /&gt;
--[[User:JayFoxRox|JayFoxRox]] ([[User talk:JayFoxRox|talk]]) 01:34, 26 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Logo ==&lt;br /&gt;
&lt;br /&gt;
Also we need a wiki logo. See [https://commons.wikimedia.org/wiki/User:Evan-Amos/VOGM/Xbox here] for some great high-quality pictures. [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:10, 25 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
Agreed.&lt;br /&gt;
[https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Xbox-console.jpg/800px-Xbox-console.jpg I vote this one (Click here)].&lt;br /&gt;
Maybe we can add a text to it later or replace it with one which suggests we are interested in the internals, but so far, I don't like the others&lt;br /&gt;
--[[User:JayFoxRox|JayFoxRox]] ([[User talk:JayFoxRox|talk]]) 01:34, 26 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Contribution Policy ==&lt;br /&gt;
&lt;br /&gt;
I also think we should create a contribution policy page. One thought on the matter is this: Instead of linking to content elsewhere, we should try to bring as much content into the wiki as possible. This is so we don't lose valuable content as things tend to become unavailable over time (that is, dead links). It also makes for a better experience when browsing the wiki and provides a place for visitors to improve the info. [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:10, 25 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Agreed: the {{input-*}} templates are being used.. differently. we use `A+B`; `A,B`; `AB`; `A B`; `A then B`; ...&lt;br /&gt;
all of them are supposed to mean: &amp;quot;press B after pressing A&amp;quot;&lt;br /&gt;
&lt;br /&gt;
IMO: `A + B` is always pressing &amp;quot;A and B at same time&amp;quot;; for sequences we should always use something like `A, B + Y, X` (= press &amp;quot;A&amp;quot;, then &amp;quot;B and Y at same time&amp;quot;, then press &amp;quot;X&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
--[[User:JayFoxRox|JayFoxRox]] ([[User talk:JayFoxRox|talk]]) 12:24, 5 September 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Translation to german ==&lt;br /&gt;
&lt;br /&gt;
Hey i would like to translate some pages into german, can anyone explain how i can translate them? :)&lt;br /&gt;
Greetings.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
: I'm not sure if there is any benefit in this.&lt;br /&gt;
: As the articles mostly focus on technical documentation, there'd be a lot of english terms anyway (regardless of main-language).&lt;br /&gt;
: I'd assume any reader who is able to make sense of this information already speaks english good enough.&lt;br /&gt;
&lt;br /&gt;
: Also, even internationally, we are a rather small community.&lt;br /&gt;
: So introducing the small subset of germans with technical skills but without english language skills wouldn't add any new readers or writers.&lt;br /&gt;
&lt;br /&gt;
: We'd also run into further administration issues:&lt;br /&gt;
: We currently don't even patrol page changes, because we don't have enough time / people to do it.&lt;br /&gt;
: With 2 languages there's also the risk of articles going out-of-sync.&lt;br /&gt;
: (There is also the minor issue that I don't know how mediawiki handles translations, but this is the least of our problems)&lt;br /&gt;
&lt;br /&gt;
: If you want to attract new people (beginners or people who still lack skills in english), I'd suggest writing posts on another medium instead.&lt;br /&gt;
: For example, a blog post which puts stuff in layman terms (in whatever language you feel like), but might cross-reference XboxDevWiki as a source.&lt;br /&gt;
&lt;br /&gt;
: I think google or some other translation services have features which allow translation of websites as some kind of interactive overlay.&lt;br /&gt;
: So it's auto-translated but you can improve the translation.&lt;br /&gt;
: I'd prefer these methods over overcomplicating XboxDevWiki with niche features which target a very small fraction (maybe none?) of the community, but add a maintenance burden.&lt;br /&gt;
&lt;br /&gt;
: --[[User:JayFoxRox|JayFoxRox]] ([[User talk:JayFoxRox|talk]]) 05:27, 22 April 2018 (PDT) (This is my personal opinion, I don't speak on behalf of the other wiki admins / users)&lt;br /&gt;
&lt;br /&gt;
: +1 [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 18:22, 27 April 2018 (PDT)&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=6394</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=6394"/>
				<updated>2018-04-28T01:20:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cleanup ==&lt;br /&gt;
&lt;br /&gt;
The main page could stand to be cleaned up now that we have many pages in the wiki. Also some pictures would be nice.&lt;br /&gt;
[[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:10, 25 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
Re cleanup I was going to do something like the navigation at https://www.3dbrew.org/wiki/Main_Page - but I only ever finished the box on top.&lt;br /&gt;
--[[User:JayFoxRox|JayFoxRox]] ([[User talk:JayFoxRox|talk]]) 01:34, 26 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Logo ==&lt;br /&gt;
&lt;br /&gt;
Also we need a wiki logo. See [https://commons.wikimedia.org/wiki/User:Evan-Amos/VOGM/Xbox here] for some great high-quality pictures. [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:10, 25 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
Agreed.&lt;br /&gt;
[https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Xbox-console.jpg/800px-Xbox-console.jpg I vote this one (Click here)].&lt;br /&gt;
Maybe we can add a text to it later or replace it with one which suggests we are interested in the internals, but so far, I don't like the others&lt;br /&gt;
--[[User:JayFoxRox|JayFoxRox]] ([[User talk:JayFoxRox|talk]]) 01:34, 26 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Contribution Policy ==&lt;br /&gt;
&lt;br /&gt;
I also think we should create a contribution policy page. One thought on the matter is this: Instead of linking to content elsewhere, we should try to bring as much content into the wiki as possible. This is so we don't lose valuable content as things tend to become unavailable over time (that is, dead links). It also makes for a better experience when browsing the wiki and provides a place for visitors to improve the info. [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:10, 25 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Agreed: the {{input-*}} templates are being used.. differently. we use `A+B`; `A,B`; `AB`; `A B`; `A then B`; ...&lt;br /&gt;
all of them are supposed to mean: &amp;quot;press B after pressing A&amp;quot;&lt;br /&gt;
&lt;br /&gt;
IMO: `A + B` is always pressing &amp;quot;A and B at same time&amp;quot;; for sequences we should always use something like `A, B + Y, X` (= press &amp;quot;A&amp;quot;, then &amp;quot;B and Y at same time&amp;quot;, then press &amp;quot;X&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
--[[User:JayFoxRox|JayFoxRox]] ([[User talk:JayFoxRox|talk]]) 12:24, 5 September 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Translation to german ==&lt;br /&gt;
&lt;br /&gt;
Hey i would like to translate some pages into german, can anyone explain how i can translate them? :)&lt;br /&gt;
Greetings.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
: I'm not sure if there is any benefit in this.&lt;br /&gt;
: As the articles mostly focus on technical documentation, there'd be a lot of english terms anyway (regardless of main-language).&lt;br /&gt;
: I'd assume any reader who is able to make sense of this information already speaks english good enough.&lt;br /&gt;
&lt;br /&gt;
: Also, even internationally, we are a rather small community.&lt;br /&gt;
: So introducing the small subset of germans with technical skills but without english language skills wouldn't add any new readers or writers.&lt;br /&gt;
&lt;br /&gt;
: We'd also run into further administration issues:&lt;br /&gt;
: We currently don't even patrol page changes, because we don't have enough time / people to do it.&lt;br /&gt;
: With 2 languages there's also the risk of articles going out-of-sync.&lt;br /&gt;
: (There is also the minor issue that I don't know how mediawiki handles translations, but this is the least of our problems)&lt;br /&gt;
&lt;br /&gt;
: If you want to attract new people (beginners or people who still lack skills in english), I'd suggest writing posts on another medium instead.&lt;br /&gt;
: For example, a blog post which puts stuff in layman terms (in whatever language you feel like), but might cross-reference XboxDevWiki as a source.&lt;br /&gt;
&lt;br /&gt;
: I think google or some other translation services have features which allow translation of websites as some kind of interactive overlay.&lt;br /&gt;
: So it's auto-translated but you can improve the translation.&lt;br /&gt;
: I'd prefer these methods over overcomplicating XboxDevWiki with niche features which target a very small fraction (maybe none?) of the community, but add a maintenance burden.&lt;br /&gt;
&lt;br /&gt;
: --[[User:JayFoxRox|JayFoxRox]] ([[User talk:JayFoxRox|talk]]) 05:27, 22 April 2018 (PDT) (This is my personal opinion, I don't speak on behalf of the other wiki admins / users [MB: agree])&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page/Header&amp;diff=6382</id>
		<title>Main Page/Header</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page/Header&amp;diff=6382"/>
				<updated>2018-03-28T03:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color:#e7eef6; border: 1px solid #ccc; color:#000; margin-top: 15px; margin-bottom: 10px; padding: 8px; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 162%; border: none; margin: 0; padding:.1em;&amp;quot;&amp;gt;Welcome to XboxDevWiki.net,&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 95%&amp;quot;&amp;gt;a wiki dedicated to research of the original Microsoft Xbox.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an effort to document the inner workings of the original Microsoft Xbox and Xbox-based SEGA Chihiro.&lt;br /&gt;
We not only care about technical details about those platforms, but also how to develop homebrew and emulate them.&lt;br /&gt;
&lt;br /&gt;
We are not interested in documenting the Xbox 360, Xbox One or any other console at this point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Want to help? Contact us!'''&lt;br /&gt;
&lt;br /&gt;
This wiki is the place for all remaining Xbox projects to come together.&lt;br /&gt;
Please come chat with us in [irc://chat.freenode.net/xqemu #xqemu on Freenode IRC] ([http://webchat.freenode.net?channels=%23xqemu Webchat]), [https://discord.gg/WxJPPyz Discord], or [https://gitter.im/Cxbx-Reloaded/Lobby Cxbx-Reloaded on gitter.im].&lt;br /&gt;
&lt;br /&gt;
You'll also get the details for wiki account creation there.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Boot_Process&amp;diff=5568</id>
		<title>Boot Process</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Boot_Process&amp;diff=5568"/>
				<updated>2017-05-30T04:36:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Xbox has a 256 KB ROM containing the startup animation and sound, as well as the Xbox kernel, which contains a stripped down version of the Windows 2000 (NT 5.0) microkernel, the HAL, filesystems, as well as HD and DVD drivers.&lt;br /&gt;
&lt;br /&gt;
When the Xbox is turned on, the software in ROM is decompressed into RAM, and the kernel initializes the hardware. Because there are no audio or video drivers in the kernel, the startup code plays the animation and sound by accessing the registers of the hardware directly. As soon as the Xbox logo is on the display, the kernel unlocks the hard disk and checks whether there is a valid game medium in the DVD drive. If not, the file xboxdash.xbe gets loaded from partition #3. In either case, the Microsoft logo is shown below the Xbox logo and the executable is started. If an error occurs (no/wrong hard disk, wrong signature, ...), the boot loader shows an error screen and halts.&lt;br /&gt;
&lt;br /&gt;
== MCPX ROM ==&lt;br /&gt;
&lt;br /&gt;
Certain things are still missing, for example, getting the CPU to 32 bit protected mode and enabling caching.{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Xcodes ===&lt;br /&gt;
&lt;br /&gt;
The xcode interpreter is common through both versions of the MCPX ROM. The high level interpretation of the MCPX ROM might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void xcode_interpreter() {&lt;br /&gt;
    int run_xcodes = 1;&lt;br /&gt;
    uint32_t eip = 0xff000080; // Not really EIP. This is just a pointer to the next xcode&lt;br /&gt;
    uint32_t result, scratch = 0;&lt;br /&gt;
    while (run_xcodes) {&lt;br /&gt;
        opcode    = get_memory_byte(eip);&lt;br /&gt;
        operand_1 = get_memory_dword(eip+1);&lt;br /&gt;
        operand_2 = get_memory_dword(eip+5);&lt;br /&gt;
&lt;br /&gt;
        if (opcode == 0x07) {&lt;br /&gt;
            opcode    = operand_1;&lt;br /&gt;
            operand_1 = operand_2;&lt;br /&gt;
            operand_2 = result;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        switch (opcode) {&lt;br /&gt;
            case 0x02:&lt;br /&gt;
                result = get_memory_dword(operand_1 &amp;amp; 0x0fffffff);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x03:&lt;br /&gt;
                set_memory_dword(operand_1) = operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x06:&lt;br /&gt;
                result = (result &amp;amp; operand_1) | operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x04:&lt;br /&gt;
                if (operand_1 == 0x80000880) {&lt;br /&gt;
                    operand_2 &amp;amp;= 0xfffffffd;&lt;br /&gt;
                }&lt;br /&gt;
                outl(operand_1, 0xcf8);&lt;br /&gt;
                outl(operand_2, 0xcfc);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x05:&lt;br /&gt;
                outl(operand_1, 0xcf8);&lt;br /&gt;
                result = inl(0xcfc);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x08:&lt;br /&gt;
                if (result != operand_1) {&lt;br /&gt;
                    eip += operand_2;&lt;br /&gt;
                }&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x09:&lt;br /&gt;
                eip += operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x10:&lt;br /&gt;
                scratch = (scratch &amp;amp; operand_1) | operand_2;&lt;br /&gt;
                result = scratch;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x11:&lt;br /&gt;
                outb(operand_2, operand_1);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x12:&lt;br /&gt;
                result = inb(operand_1);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0xee:&lt;br /&gt;
                run_xcodes = 0;&lt;br /&gt;
            default:&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        eip += 9;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MCPX 1.0: RC4 Decryption of the 2BL ===&lt;br /&gt;
&lt;br /&gt;
Version 1.0 of the ROM uses RC4 to decrypt the 2BL.&lt;br /&gt;
&lt;br /&gt;
==== Stage 1: Key Scheduling ====&lt;br /&gt;
&lt;br /&gt;
The [https://en.wikipedia.org/wiki/RC4#Key-scheduling_algorithm_.28KSA.29 RC4 Key-Scheduling Algorithm] is used to initialize the RC4 “S” array, first initializing the identity permutation (writing 1, 2, ..., 255 to 0x8f000 to 0x850FF), then processed in a way similar to the PRGA to mix in the key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uint8_t  *s = (uint8_t *)0x8f000;&lt;br /&gt;
uint32_t  i;&lt;br /&gt;
&lt;br /&gt;
for (i = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    s[i] = i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t *key = (uint8_t *)0xffffffa5; /* ROM offset 0x1a5. */&lt;br /&gt;
uint8_t j, t;&lt;br /&gt;
&lt;br /&gt;
/* It is unclear why values s[0x100..0x101] are being set to 0. They are&lt;br /&gt;
 * not modified by the code, but later these will be be used as the initial&lt;br /&gt;
 * i, j values in the PRGA.&lt;br /&gt;
 */&lt;br /&gt;
s[0x100] = 0x00;&lt;br /&gt;
s[0x101] = 0x00;&lt;br /&gt;
&lt;br /&gt;
for (i = 0, j = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    j = j + s[i] + key[i%16];&lt;br /&gt;
&lt;br /&gt;
    /* Swap s[i] and s[j] */&lt;br /&gt;
    t    = s[i];&lt;br /&gt;
    s[i] = s[j];&lt;br /&gt;
    s[j] = t;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stage 2: PRGA ====&lt;br /&gt;
&lt;br /&gt;
The [https://en.wikipedia.org/wiki/RC4#Pseudo-random_generation_algorithm_.28PRGA.29 RC4 Pseudo-random generation algorithm (PRGA)] is then used to decrypt the 2BL from 0xFFFF9E00, storing the decrypted 2BL at 0x00090000. It is 24KiB in size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uint8_t  *encrypted = (uint8_t*)0xFFFF9E00; /* 2bl */&lt;br /&gt;
uint8_t  *decrypted = (uint8_t*)0x90000; /* Decrypted 2bl Destination */&lt;br /&gt;
uint32_t  pos;&lt;br /&gt;
&lt;br /&gt;
/* As noted above, s[0x100..0x101] were set to 0 earlier, but have not been&lt;br /&gt;
 * modified since. The RC4 algorithm defines i and j both to be set to 0&lt;br /&gt;
 * before PRGA begins. */&lt;br /&gt;
i = s[0x100];&lt;br /&gt;
j = s[0x101];&lt;br /&gt;
&lt;br /&gt;
for (pos = 0; pos &amp;lt; 0x6000; pos++) {&lt;br /&gt;
    /* Update i, j. */&lt;br /&gt;
    i  = (i + 1) &amp;amp; 0xff;&lt;br /&gt;
    j += s[i];&lt;br /&gt;
&lt;br /&gt;
    /* Swap s[i] and s[j]. */&lt;br /&gt;
    t    = s[i];&lt;br /&gt;
    s[i] = s[j];&lt;br /&gt;
    s[j] = t;&lt;br /&gt;
&lt;br /&gt;
    /* Decrypt message and write output. */&lt;br /&gt;
    decrypted[pos] = encrypted[pos] ^ s[ s[i] + s[j] ];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stage 3: Signature Verification ====&lt;br /&gt;
&lt;br /&gt;
Now that the Second-Stage Bootloader has been loaded, a quick sanity-check is performed: a “magic” signature is verified. If the signature doesn’t match, control goes to the error handler. If the signature does match, the code will jump to the 2bl entry point, which is given by the first dword of the decrypted 2bl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mov  eax, [0x95fe4]&lt;br /&gt;
cmp  eax, MAGIC_NUMBER&lt;br /&gt;
jne  0xffffff94 ; If signature check failed, jump to error handler&lt;br /&gt;
mov  eax, [0x90000]&lt;br /&gt;
jmp  eax        ; Jump to 2BL entry point&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
The RC4 algorithm was included as part of MCPX 1.0 and seems to work fine with BIOS versions 3944, 4034, and 4134.&lt;br /&gt;
&lt;br /&gt;
=== MCPX 1.1: TEA Decryption of the 2BL ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
== 2BL ==&lt;br /&gt;
&lt;br /&gt;
Certain parts are still missing&lt;br /&gt;
&lt;br /&gt;
=== MTRR Setup ===&lt;br /&gt;
&lt;br /&gt;
First, the cache is disabled.{{FIXME}}&lt;br /&gt;
Then, the MTRR (Memory Type Range Register) will be setup (using &amp;lt;code&amp;gt;wrmsr&amp;lt;/code&amp;gt;) in the following way:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! MTRR (ecx) !! High value (edx) !! Low value (eax) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0x200 || 0x00000000 || 0x00000006 ||&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;2&amp;quot; | 0x201 || rowspan = &amp;quot;2&amp;quot; | 0x0000000F || 0xFC000800 || ''(For 64 MiB RAM BIOS)''&lt;br /&gt;
|-&lt;br /&gt;
|0xF8000800 || (''For 128 MiB RAM BIOS'')&lt;br /&gt;
|-&lt;br /&gt;
|0x202 || 0x00000000 || 0xFFF80005 ||&lt;br /&gt;
|-&lt;br /&gt;
|0x203 || 0x0000000F || 0xFFF80800 ||&lt;br /&gt;
|-&lt;br /&gt;
|0x204 || 0x00000000 || 0x00000000 || rowspan=&amp;quot;3&amp;quot; | Clear all unused MTRR&lt;br /&gt;
|-&lt;br /&gt;
| colspan = &amp;quot;3&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0x20F || 0x00000000 || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0x2FF || 0x00000000 || 0x00000800 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the MTRR have been written, the cache is enabled.{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Register setup ===&lt;br /&gt;
&lt;br /&gt;
Now the 2BL will set up the segment registers{{FIXME|reason=why?!}} and stack:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Register !! Value !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|ds || 0x0010 || rowspan=&amp;quot;3&amp;quot; | Data segment{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|es || 0x0010&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|ss || 0x0010&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|esp || 0x00400000 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|fs || 0x0000 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|gs || 0x0000 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Self-copy ===&lt;br /&gt;
&lt;br /&gt;
Now the 2BL copies itself (24 kiB) from 0x00900000 to memory address 0x00400000.&lt;br /&gt;
&lt;br /&gt;
=== Paging ===&lt;br /&gt;
&lt;br /&gt;
Now a PDE is prepared at address 0x0000F000:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset in PDE !! Value !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0x000 || 0x000000E3 || rowspan=&amp;quot;7&amp;quot; | Identity maps the first 256MiB of RAM: 0x00000000 and 0x80000000 will both map to physical page 0 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xE3: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0x800 || 0x000000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x004 || 0x004000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x804 || 0x004000E3&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0x8FC || 0x0FC000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x0FC || 0x0FC000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x900 || 0x00000000 || rowspan=&amp;quot;5&amp;quot; | Unmapping the rest of the pages&lt;br /&gt;
|-&lt;br /&gt;
|0x100 || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0xFFC || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0x7FC || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0xC00 || 0x0000F063 || Maps the PDE (4 kiB page) to address 0xC0000000 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0x63: Flags: &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFFC || 0xFFC000E3 || Identity maps the upper portion of the Flash (4 MiB page) to address 0xFFC00000 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xE3: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFD0 || 0xFD0000FB || rowspan=&amp;quot;4&amp;quot; | Maps 16 MiB for the GPU control registers &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xFB: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x10: Cache disabled &amp;lt;br&amp;gt; * 0x08: Write-Through caching &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFD4 || 0xFD4000FB&lt;br /&gt;
|-&lt;br /&gt;
|0xFD8 || 0xFD8000FB&lt;br /&gt;
|-&lt;br /&gt;
|0xFDC || 0xFDC000FB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After setting up the PDE, the PAT is set up using &amp;lt;code&amp;gt;wrmsr&amp;lt;/code&amp;gt;: {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
CR4 is touched {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
CR3 is touched {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
Now paging is activated by enabling the PG and WP bits in CR0.&lt;br /&gt;
Additionally, the same &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; instruction is used to enable the NE bit in cr0.&lt;br /&gt;
&lt;br /&gt;
=== 2BL main ===&lt;br /&gt;
&lt;br /&gt;
esp is now also reloaded to point at the relocated address. It will be set to 0x80400000 (absolute value, independent of previous esp value).&lt;br /&gt;
The 2BL will now &amp;lt;code&amp;gt;call&amp;lt;/code&amp;gt; into the relocated 2BL code somewhere near 0x00400000.&lt;br /&gt;
&lt;br /&gt;
==== Disabling of the MCPX ROM ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000880);&lt;br /&gt;
out8(0xCFC, 0x02);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SMC handling ====&lt;br /&gt;
&lt;br /&gt;
The [[SMC]] has a watchdog functionality which must be turned off.&lt;br /&gt;
This is done by querying the SMC registers 0x1C - 0x1F.&lt;br /&gt;
If all of them are 0x00 the 2BL will shutdown the system{{FIXME}}.&lt;br /&gt;
If this is not the case, the bootloader calculates the watchdog challenge response and sends it to SMC registers 0x20 and 0x21.&lt;br /&gt;
&lt;br /&gt;
Additionally, the 2BL will set SMC register 0x01 to 0 (which resets the cursor position for reading the SMC revision information).&lt;br /&gt;
&lt;br /&gt;
==== Enable IDE and NIC ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x8000088C);&lt;br /&gt;
out32(0xCFC, 0x40000000);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memory cleanup ====&lt;br /&gt;
&lt;br /&gt;
The 2BL fills memory with 0xCC from 0x80090000 to 0x80095FFF. These are the 24 kiB where the 2BL was stored previously.&lt;br /&gt;
&lt;br /&gt;
==== Setup RAM timing ====&lt;br /&gt;
&lt;br /&gt;
Not described yet, this is complicated{{FIXME}}.&lt;br /&gt;
This got a lot more complicated when Microsoft started using different RAM sometime after [[Hardware Revisions#1.6|Hardware Revision 1.6]] was already out.&lt;br /&gt;
&lt;br /&gt;
==== Weird stuff 2 ====&lt;br /&gt;
&lt;br /&gt;
This does some PCI config, use unknown{{FIXME}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000854);&lt;br /&gt;
out32(0xCFC, in32(0xCFC) | 0x88000000);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x80000064);&lt;br /&gt;
out32(0xCFC, in32(0xCFC) | 0x88000000);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x8000006C);&lt;br /&gt;
uint32_t tmp = in32(0xCFC);&lt;br /&gt;
out32(0xCFC, tmp &amp;amp; 0xFFFFFFFE);&lt;br /&gt;
out32(0xCFC, tmp);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x80000080);&lt;br /&gt;
out32(0xCFC, 0x00000100);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Weird stuff 3 ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Why?}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000808);&lt;br /&gt;
uint8_t mcpx_revision = in8(0xCFC);    &lt;br /&gt;
&lt;br /&gt;
if (mcpx_revision &amp;gt;= 0xD1) {&lt;br /&gt;
  out32(0xCF8, 0x800008C8);&lt;br /&gt;
  out32(0xCFC, 0x00008F00);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Loading the kernel ====&lt;br /&gt;
===== Kernel-copy =====&lt;br /&gt;
&lt;br /&gt;
The Kernel is now copied into RAM.&lt;br /&gt;
&lt;br /&gt;
===== Kernel decryption =====&lt;br /&gt;
&lt;br /&gt;
The 2BL will copy the kernel decryption key (16 bytes) from offset 32 of an array of 3 keys:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Use&lt;br /&gt;
|-&lt;br /&gt;
| 0 || EEPROM key&lt;br /&gt;
|-&lt;br /&gt;
| 16 || Certificate key&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Kernel key&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Kernel is then decrypted in-place using RC4.&lt;br /&gt;
&lt;br /&gt;
===== Kernel decompression =====&lt;br /&gt;
&lt;br /&gt;
The Kernel is decompressed directly to 0x80010000 where it will reside until a full system shutdown.&lt;br /&gt;
&lt;br /&gt;
==== Running the kernel ====&lt;br /&gt;
&lt;br /&gt;
The xboxkrnl.exe header at 0x8001000 is checked{{FIXME|reason=how?}}.&lt;br /&gt;
If it is invalid, {{FIXME}}.&lt;br /&gt;
If it is valid, the kernel entry point is looked up from the PE optional header. The hardcoded image base of 0x8001000 is added to the entry point.&lt;br /&gt;
The entry-point is now being called. Argumnts are passed on the stack, from right to left.&lt;br /&gt;
The first argument is a commandline string loaded from memory address 0x80400000. It is an empty string for retail BIOS{{FIXME|reason=Mention options for debug bioses here}}.&lt;br /&gt;
A pointer to the previously mentioned array of 3 keys is passed as the second argument.&lt;br /&gt;
&lt;br /&gt;
== Kernel ==&lt;br /&gt;
&lt;br /&gt;
=== Startup animation ===&lt;br /&gt;
&lt;br /&gt;
=== Kernel Re-initialization ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [http://hackspot.net/XboxBlog/?p=1 Understanding the Xbox boot process]&lt;br /&gt;
* [https://mborgerson.com/deconstructing-the-xbox-boot-rom Deconstructing the Boot ROM]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Boot_Process&amp;diff=5549</id>
		<title>Boot Process</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Boot_Process&amp;diff=5549"/>
				<updated>2017-05-29T17:52:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Xbox has a 256 KB ROM containing the startup animation and sound, as well as the Xbox kernel, which contains a stripped down version of the Windows 2000 (NT 5.0) microkernel, the HAL, filesystems, as well as HD and DVD drivers.&lt;br /&gt;
&lt;br /&gt;
When the Xbox is turned on, the software in ROM is decompressed into RAM, and the kernel initializes the hardware. Because there are no audio or video drivers in the kernel, the startup code plays the animation and sound by accessing the registers of the hardware directly. As soon as the Xbox logo is on the display, the kernel unlocks the hard disk and checks whether there is a valid game medium in the DVD drive. If not, the file xboxdash.xbe gets loaded from partition #3. In either case, the Microsoft logo is shown below the Xbox logo and the executable is started. If an error occurs (no/wrong hard disk, wrong signature, ...), the boot loader shows an error screen and halts.&lt;br /&gt;
&lt;br /&gt;
== MCPX ROM ==&lt;br /&gt;
&lt;br /&gt;
Certain things are still missing, for example, getting the CPU to 32 bit protected mode and enabling caching.{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Xcodes ===&lt;br /&gt;
&lt;br /&gt;
The xcode interpreter is common through both versions of the MCPX ROM. The high level interpretation of the MCPX ROM might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void xcode_interpreter() {&lt;br /&gt;
    int run_xcodes = 1;&lt;br /&gt;
    uint32_t eip = 0xff000080; // Not really EIP. This is just a pointer to the next xcode&lt;br /&gt;
    uint32_t result, scratch = 0;&lt;br /&gt;
    while (run_xcodes) {&lt;br /&gt;
        opcode    = get_memory_byte(eip);&lt;br /&gt;
        operand_1 = get_memory_dword(eip+1);&lt;br /&gt;
        operand_2 = get_memory_dword(eip+5);&lt;br /&gt;
&lt;br /&gt;
        if (opcode == 0x07) {&lt;br /&gt;
            opcode    = operand_1;&lt;br /&gt;
            operand_1 = operand_2;&lt;br /&gt;
            operand_2 = result;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        switch (opcode) {&lt;br /&gt;
            case 0x02:&lt;br /&gt;
                result = get_memory_dword(operand_1 &amp;amp; 0x0fffffff);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x03:&lt;br /&gt;
                set_memory_dword(operand_1) = operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x06:&lt;br /&gt;
                result = (result &amp;amp; operand_1) | operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x04:&lt;br /&gt;
                if (operand_1 == 0x80000880) {&lt;br /&gt;
                    operand_2 &amp;amp;= 0xfffffffd;&lt;br /&gt;
                }&lt;br /&gt;
                outl(operand_1, 0xcf8);&lt;br /&gt;
                outl(operand_2, 0xcfc);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x05:&lt;br /&gt;
                outl(operand_1, 0xcf8);&lt;br /&gt;
                result = inl(0xcfc);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x08:&lt;br /&gt;
                if (result != operand_1) {&lt;br /&gt;
                    eip += operand_2;&lt;br /&gt;
                }&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x09:&lt;br /&gt;
                eip += operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x10:&lt;br /&gt;
                scratch = (scratch &amp;amp; operand_1) | operand_2;&lt;br /&gt;
                result = scratch;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x11:&lt;br /&gt;
                outb(operand_2, operand_1);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x12:&lt;br /&gt;
                result = inb(operand_1);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0xee:&lt;br /&gt;
                run_xcodes = 0;&lt;br /&gt;
            default:&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        eip += 9;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MCPX 1.0: RC4 Decryption of the 2BL ===&lt;br /&gt;
&lt;br /&gt;
Version 1.0 of the ROM uses RC4 to decrypt the 2BL.&lt;br /&gt;
&lt;br /&gt;
==== Stage 1: Key Scheduling ====&lt;br /&gt;
&lt;br /&gt;
The [https://en.wikipedia.org/wiki/RC4#Key-scheduling_algorithm_.28KSA.29 RC4 Key-Scheduling Algorithm] is used to initialize the RC4 “S” array, first initializing the identity permutation (writing 1, 2, ..., 255 to 0x8f000 to 0x850FF), then processed in a way similar to the PRGA to mix in the key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uint8_t  *s = (uint8_t *)0x8f000;&lt;br /&gt;
uint32_t  i;&lt;br /&gt;
&lt;br /&gt;
for (i = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    s[i] = i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t *key = (uint8_t *)0xffffffa5; /* ROM offset 0x1a5. */&lt;br /&gt;
uint8_t j, t;&lt;br /&gt;
&lt;br /&gt;
/* It is unclear why values s[0x100..0x101] are being set to 0. They are&lt;br /&gt;
 * not modified by the code, but later these will be be used as the initial&lt;br /&gt;
 * i, j values in the PRGA.&lt;br /&gt;
 */&lt;br /&gt;
s[0x100] = 0x00;&lt;br /&gt;
s[0x101] = 0x00;&lt;br /&gt;
&lt;br /&gt;
for (i = 0, j = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    j = j + s[i] + key[i%16];&lt;br /&gt;
&lt;br /&gt;
    /* Swap s[i] and s[j] */&lt;br /&gt;
    t    = s[i];&lt;br /&gt;
    s[i] = s[j];&lt;br /&gt;
    s[j] = t;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stage 2: PRGA ====&lt;br /&gt;
&lt;br /&gt;
The [https://en.wikipedia.org/wiki/RC4#Pseudo-random_generation_algorithm_.28PRGA.29 RC4 Pseudo-random generation algorithm (PRGA)] is then used to decrypt the 2BL from 0xFFFF9E00, storing the decrypted 2BL at 0x00090000. It is 24KiB in size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uint8_t  *encrypted = (uint8_t*)0xFFFF9E00; /* 2bl */&lt;br /&gt;
uint8_t  *decrypted = (uint8_t*)0x90000; /* Decrypted 2bl Destination */&lt;br /&gt;
uint32_t  pos;&lt;br /&gt;
&lt;br /&gt;
/* As noted above, s[0x100..0x101] were set to 0 earlier, but have not been&lt;br /&gt;
 * modified since. The RC4 algorithm defines i and j both to be set to 0&lt;br /&gt;
 * before PRGA begins. */&lt;br /&gt;
i = s[0x100];&lt;br /&gt;
j = s[0x101];&lt;br /&gt;
&lt;br /&gt;
for (pos = 0; pos &amp;lt; 0x6000; pos++) {&lt;br /&gt;
    /* Update i, j. */&lt;br /&gt;
    i  = (i + 1) &amp;amp; 0xff;&lt;br /&gt;
    j += s[i];&lt;br /&gt;
&lt;br /&gt;
    /* Swap s[i] and s[j]. */&lt;br /&gt;
    t    = s[i];&lt;br /&gt;
    s[i] = s[j];&lt;br /&gt;
    s[j] = t;&lt;br /&gt;
&lt;br /&gt;
    /* Decrypt message and write output. */&lt;br /&gt;
    decrypted[pos] = encrypted[pos] ^ s[ s[i] + s[j] ];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stage 3: Verification ====&lt;br /&gt;
&lt;br /&gt;
Now that the Second-Stage Bootloader has been loaded, a quick sanity-check is performed: a “magic” signature is verified. If the signature doesn’t match, control goes to the error handler. If the signature does match, the code will jump to the 2bl entry point, which is given by the first dword of the decrypted 2bl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (get_memory_dword(0x95FE4) == MAGIC_NUMBER) {&lt;br /&gt;
    eip = get_memory_dword(0x900000);&lt;br /&gt;
} else {&lt;br /&gt;
    // Else, things have gone wrong&lt;br /&gt;
    eip = 0xFFFFFF94;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
The RC4 algorithm was included as part of MCPX 1.0 and seems to work fine with BIOS versions 3944, 4034, and 4134.&lt;br /&gt;
&lt;br /&gt;
=== MCPX 1.1: TEA Decryption of the 2BL ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
== 2BL ==&lt;br /&gt;
&lt;br /&gt;
Certain parts are still missing&lt;br /&gt;
&lt;br /&gt;
=== MTRR Setup ===&lt;br /&gt;
&lt;br /&gt;
First, the cache is disabled.{{FIXME}}&lt;br /&gt;
Then, the MTRR (Memory Type Range Register) will be setup (using &amp;lt;code&amp;gt;wrmsr&amp;lt;/code&amp;gt;) in the following way:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! MTRR (ecx) !! High value (edx) !! Low value (eax) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0x200 || 0x00000000 || 0x00000006 ||&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;2&amp;quot; | 0x201 || rowspan = &amp;quot;2&amp;quot; | 0x0000000F || 0xFC000800 || ''(For 64 MiB RAM BIOS)''&lt;br /&gt;
|-&lt;br /&gt;
|0xF8000800 || (''For 128 MiB RAM BIOS'')&lt;br /&gt;
|-&lt;br /&gt;
|0x202 || 0x00000000 || 0xFFF80005 ||&lt;br /&gt;
|-&lt;br /&gt;
|0x203 || 0x0000000F || 0xFFF80800 ||&lt;br /&gt;
|-&lt;br /&gt;
|0x204 || 0x00000000 || 0x00000000 || rowspan=&amp;quot;3&amp;quot; | Clear all unused MTRR&lt;br /&gt;
|-&lt;br /&gt;
| colspan = &amp;quot;3&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0x20F || 0x00000000 || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0x2FF || 0x00000000 || 0x00000800 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the MTRR have been written, the cache is enabled.{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Register setup ===&lt;br /&gt;
&lt;br /&gt;
Now the 2BL will set up the segment registers{{FIXME|reason=why?!}} and stack:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Register !! Value !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|ds || 0x0010 || rowspan=&amp;quot;3&amp;quot; | Data segment{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|es || 0x0010&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|ss || 0x0010&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|esp || 0x00400000 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|fs || 0x0000 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|gs || 0x0000 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Self-copy ===&lt;br /&gt;
&lt;br /&gt;
Now the 2BL copies itself (24 kiB) from 0x00900000 to memory address 0x00400000.&lt;br /&gt;
&lt;br /&gt;
=== Paging ===&lt;br /&gt;
&lt;br /&gt;
Now a PDE is prepared at address 0x0000F000:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset in PDE !! Value !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0x000 || 0x000000E3 || rowspan=&amp;quot;7&amp;quot; | Identity maps the first 256MiB of RAM: 0x00000000 and 0x80000000 will both map to physical page 0 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xE3: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0x800 || 0x000000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x004 || 0x004000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x804 || 0x004000E3&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0x8FC || 0x0FC000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x0FC || 0x0FC000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x900 || 0x00000000 || rowspan=&amp;quot;5&amp;quot; | Unmapping the rest of the pages&lt;br /&gt;
|-&lt;br /&gt;
|0x100 || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0xFFC || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0x7FC || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0xC00 || 0x0000F063 || Maps the PDE (4 kiB page) to address 0xC0000000 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0x63: Flags: &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFFC || 0xFFC000E3 || Identity maps the upper portion of the Flash (4 MiB page) to address 0xFFC00000 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xE3: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFD0 || 0xFD0000FB || rowspan=&amp;quot;4&amp;quot; | Maps 16 MiB for the GPU control registers &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xFB: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x10: Cache disabled &amp;lt;br&amp;gt; * 0x08: Write-Through caching &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFD4 || 0xFD4000FB&lt;br /&gt;
|-&lt;br /&gt;
|0xFD8 || 0xFD8000FB&lt;br /&gt;
|-&lt;br /&gt;
|0xFDC || 0xFDC000FB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After setting up the PDE, the PAT is set up using &amp;lt;code&amp;gt;wrmsr&amp;lt;/code&amp;gt;: {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
CR4 is touched {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
CR3 is touched {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
Now paging is activated by enabling the PG and WP bits in CR0.&lt;br /&gt;
Additionally, the same &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; instruction is used to enable the NE bit in cr0.&lt;br /&gt;
&lt;br /&gt;
=== 2BL main ===&lt;br /&gt;
&lt;br /&gt;
esp is now also reloaded to point at the relocated address. It will be set to 0x80400000 (absolute value, independent of previous esp value).&lt;br /&gt;
The 2BL will now &amp;lt;code&amp;gt;call&amp;lt;/code&amp;gt; into the relocated 2BL code somewhere near 0x00400000.&lt;br /&gt;
&lt;br /&gt;
==== Disabling of the MCPX ROM ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000880);&lt;br /&gt;
out8(0xCFC, 0x02);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SMC handling ====&lt;br /&gt;
&lt;br /&gt;
The [[SMC]] has a watchdog functionality which must be turned off.&lt;br /&gt;
This is done by querying the SMC registers 0x1C - 0x1F.&lt;br /&gt;
If all of them are 0x00 the 2BL will shutdown the system{{FIXME}}.&lt;br /&gt;
If this is not the case, the bootloader calculates the watchdog challenge response and sends it to SMC registers 0x20 and 0x21.&lt;br /&gt;
&lt;br /&gt;
Additionally, the 2BL will set SMC register 0x01 to 0 (which resets the cursor position for reading the SMC revision information).&lt;br /&gt;
&lt;br /&gt;
==== Enable IDE and NIC ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x8000088C);&lt;br /&gt;
out32(0xCFC, 0x40000000);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memory cleanup ====&lt;br /&gt;
&lt;br /&gt;
The 2BL fills memory with 0xCC from 0x80090000 to 0x80095FFF. These are the 24 kiB where the 2BL was stored previously.&lt;br /&gt;
&lt;br /&gt;
==== Setup RAM timing ====&lt;br /&gt;
&lt;br /&gt;
Not described yet, this is complicated{{FIXME}}.&lt;br /&gt;
This got a lot more complicated when Microsoft started using different RAM sometime after [[Hardware Revisions#1.6|Hardware Revision 1.6]] was already out.&lt;br /&gt;
&lt;br /&gt;
==== Weird stuff 2 ====&lt;br /&gt;
&lt;br /&gt;
This does some PCI config, use unknown{{FIXME}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000854);&lt;br /&gt;
out32(0xCFC, in32(0xCFC) | 0x88000000);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x80000064);&lt;br /&gt;
out32(0xCFC, in32(0xCFC) | 0x88000000);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x8000006C);&lt;br /&gt;
uint32_t tmp = in32(0xCFC);&lt;br /&gt;
out32(0xCFC, tmp &amp;amp; 0xFFFFFFFE);&lt;br /&gt;
out32(0xCFC, tmp);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x80000080);&lt;br /&gt;
out32(0xCFC, 0x00000100);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Weird stuff 3 ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Why?}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000808);&lt;br /&gt;
uint8_t mcpx_revision = in8(0xCFC);    &lt;br /&gt;
&lt;br /&gt;
if (mcpx_revision &amp;gt;= 0xD1) {&lt;br /&gt;
  out32(0xCF8, 0x800008C8);&lt;br /&gt;
  out32(0xCFC, 0x00008F00);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Loading the kernel ====&lt;br /&gt;
===== Kernel-copy =====&lt;br /&gt;
&lt;br /&gt;
The Kernel is now copied into RAM.&lt;br /&gt;
&lt;br /&gt;
===== Kernel decryption =====&lt;br /&gt;
&lt;br /&gt;
The 2BL will copy the kernel decryption key (16 bytes) from offset 32 of an array of 3 keys:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Use&lt;br /&gt;
|-&lt;br /&gt;
| 0 || EEPROM key&lt;br /&gt;
|-&lt;br /&gt;
| 16 || Certificate key&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Kernel key&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Kernel is then decrypted in-place using RC4.&lt;br /&gt;
&lt;br /&gt;
===== Kernel decompression =====&lt;br /&gt;
&lt;br /&gt;
The Kernel is decompressed directly to 0x80010000 where it will reside until a full system shutdown.&lt;br /&gt;
&lt;br /&gt;
==== Running the kernel ====&lt;br /&gt;
&lt;br /&gt;
The xboxkrnl.exe header at 0x8001000 is checked{{FIXME|reason=how?}}.&lt;br /&gt;
If it is invalid, {{FIXME}}.&lt;br /&gt;
If it is valid, the kernel entry point is looked up from the PE optional header. The hardcoded image base of 0x8001000 is added to the entry point.&lt;br /&gt;
The entry-point is now being called. Argumnts are passed on the stack, from right to left.&lt;br /&gt;
The first argument is a commandline string loaded from memory address 0x80400000. It is an empty string for retail BIOS{{FIXME|reason=Mention options for debug bioses here}}.&lt;br /&gt;
A pointer to the previously mentioned array of 3 keys is passed as the second argument.&lt;br /&gt;
&lt;br /&gt;
== Kernel ==&lt;br /&gt;
&lt;br /&gt;
=== Startup animation ===&lt;br /&gt;
&lt;br /&gt;
=== Kernel Re-initialization ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [http://hackspot.net/XboxBlog/?p=1 Understanding the Xbox boot process]&lt;br /&gt;
* [https://mborgerson.com/deconstructing-the-xbox-boot-rom Deconstructing the Boot ROM]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Boot_Process&amp;diff=5548</id>
		<title>Boot Process</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Boot_Process&amp;diff=5548"/>
				<updated>2017-05-29T17:51:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The Xbox has a 256 KB ROM containing the startup animation and sound, as well as the Xbox kernel, which contains a stripped down version of the Windows 2000 (NT 5.0) microkernel, the HAL, filesystems, as well as HD and DVD drivers.&lt;br /&gt;
&lt;br /&gt;
When the Xbox is turned on, the software in ROM is decompressed into RAM, and the kernel initializes the hardware. Because there are no audio or video drivers in the kernel, the startup code plays the animation and sound by accessing the registers of the hardware directly. As soon as the Xbox logo is on the display, the kernel unlocks the hard disk and checks whether there is a valid game medium in the DVD drive. If not, the file xboxdash.xbe gets loaded from partition #3. In either case, the Microsoft logo is shown below the Xbox logo and the executable is started. If an error occurs (no/wrong hard disk, wrong signature, ...), the boot loader shows an error screen and halts.&lt;br /&gt;
&lt;br /&gt;
== MCPX ==&lt;br /&gt;
&lt;br /&gt;
Certain things are still missing, for example, getting the CPU to 32 bit protected mode and enabling caching.{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Xcodes ===&lt;br /&gt;
&lt;br /&gt;
The xcode interpreter is common through both versions of the MCPX ROM. The high level interpretation of the MCPX ROM might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void xcode_interpreter() {&lt;br /&gt;
    int run_xcodes = 1;&lt;br /&gt;
    uint32_t eip = 0xff000080; // Not really EIP. This is just a pointer to the next xcode&lt;br /&gt;
    uint32_t result, scratch = 0;&lt;br /&gt;
    while (run_xcodes) {&lt;br /&gt;
        opcode    = get_memory_byte(eip);&lt;br /&gt;
        operand_1 = get_memory_dword(eip+1);&lt;br /&gt;
        operand_2 = get_memory_dword(eip+5);&lt;br /&gt;
&lt;br /&gt;
        if (opcode == 0x07) {&lt;br /&gt;
            opcode    = operand_1;&lt;br /&gt;
            operand_1 = operand_2;&lt;br /&gt;
            operand_2 = result;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        switch (opcode) {&lt;br /&gt;
            case 0x02:&lt;br /&gt;
                result = get_memory_dword(operand_1 &amp;amp; 0x0fffffff);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x03:&lt;br /&gt;
                set_memory_dword(operand_1) = operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x06:&lt;br /&gt;
                result = (result &amp;amp; operand_1) | operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x04:&lt;br /&gt;
                if (operand_1 == 0x80000880) {&lt;br /&gt;
                    operand_2 &amp;amp;= 0xfffffffd;&lt;br /&gt;
                }&lt;br /&gt;
                outl(operand_1, 0xcf8);&lt;br /&gt;
                outl(operand_2, 0xcfc);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x05:&lt;br /&gt;
                outl(operand_1, 0xcf8);&lt;br /&gt;
                result = inl(0xcfc);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x08:&lt;br /&gt;
                if (result != operand_1) {&lt;br /&gt;
                    eip += operand_2;&lt;br /&gt;
                }&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x09:&lt;br /&gt;
                eip += operand_2;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x10:&lt;br /&gt;
                scratch = (scratch &amp;amp; operand_1) | operand_2;&lt;br /&gt;
                result = scratch;&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x11:&lt;br /&gt;
                outb(operand_2, operand_1);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0x12:&lt;br /&gt;
                result = inb(operand_1);&lt;br /&gt;
                break;&lt;br /&gt;
            case 0xee:&lt;br /&gt;
                run_xcodes = 0;&lt;br /&gt;
            default:&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        eip += 9;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MCPX 1.0: RC4 Decryption of the 2BL ===&lt;br /&gt;
&lt;br /&gt;
Version 1.0 of the ROM uses RC4 to decrypt the 2BL.&lt;br /&gt;
&lt;br /&gt;
==== Stage 1: Key Scheduling ====&lt;br /&gt;
&lt;br /&gt;
The [https://en.wikipedia.org/wiki/RC4#Key-scheduling_algorithm_.28KSA.29 RC4 Key-Scheduling Algorithm] is used to initialize the RC4 “S” array, first initializing the identity permutation (writing 1, 2, ..., 255 to 0x8f000 to 0x850FF), then processed in a way similar to the PRGA to mix in the key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uint8_t  *s = (uint8_t *)0x8f000;&lt;br /&gt;
uint32_t  i;&lt;br /&gt;
&lt;br /&gt;
for (i = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    s[i] = i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t *key = (uint8_t *)0xffffffa5; /* ROM offset 0x1a5. */&lt;br /&gt;
uint8_t j, t;&lt;br /&gt;
&lt;br /&gt;
/* It is unclear why values s[0x100..0x101] are being set to 0. They are&lt;br /&gt;
 * not modified by the code, but later these will be be used as the initial&lt;br /&gt;
 * i, j values in the PRGA.&lt;br /&gt;
 */&lt;br /&gt;
s[0x100] = 0x00;&lt;br /&gt;
s[0x101] = 0x00;&lt;br /&gt;
&lt;br /&gt;
for (i = 0, j = 0; i &amp;lt;= 255; i++) {&lt;br /&gt;
    j = j + s[i] + key[i%16];&lt;br /&gt;
&lt;br /&gt;
    /* Swap s[i] and s[j] */&lt;br /&gt;
    t    = s[i];&lt;br /&gt;
    s[i] = s[j];&lt;br /&gt;
    s[j] = t;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stage 2: PRGA ====&lt;br /&gt;
&lt;br /&gt;
The [https://en.wikipedia.org/wiki/RC4#Pseudo-random_generation_algorithm_.28PRGA.29 RC4 Pseudo-random generation algorithm (PRGA)] is then used to decrypt the 2BL from 0xFFFF9E00, storing the decrypted 2BL at 0x00090000. It is 24KiB in size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uint8_t  *encrypted = (uint8_t*)0xFFFF9E00; /* 2bl */&lt;br /&gt;
uint8_t  *decrypted = (uint8_t*)0x90000; /* Decrypted 2bl Destination */&lt;br /&gt;
uint32_t  pos;&lt;br /&gt;
&lt;br /&gt;
/* As noted above, s[0x100..0x101] were set to 0 earlier, but have not been&lt;br /&gt;
 * modified since. The RC4 algorithm defines i and j both to be set to 0&lt;br /&gt;
 * before PRGA begins. */&lt;br /&gt;
i = s[0x100];&lt;br /&gt;
j = s[0x101];&lt;br /&gt;
&lt;br /&gt;
for (pos = 0; pos &amp;lt; 0x6000; pos++) {&lt;br /&gt;
    /* Update i, j. */&lt;br /&gt;
    i  = (i + 1) &amp;amp; 0xff;&lt;br /&gt;
    j += s[i];&lt;br /&gt;
&lt;br /&gt;
    /* Swap s[i] and s[j]. */&lt;br /&gt;
    t    = s[i];&lt;br /&gt;
    s[i] = s[j];&lt;br /&gt;
    s[j] = t;&lt;br /&gt;
&lt;br /&gt;
    /* Decrypt message and write output. */&lt;br /&gt;
    decrypted[pos] = encrypted[pos] ^ s[ s[i] + s[j] ];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stage 3: Verification ====&lt;br /&gt;
&lt;br /&gt;
Now that the Second-Stage Bootloader has been loaded, a quick sanity-check is performed: a “magic” signature is verified. If the signature doesn’t match, control goes to the error handler. If the signature does match, the code will jump to the 2bl entry point, which is given by the first dword of the decrypted 2bl.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (get_memory_dword(0x95FE4) == MAGIC_NUMBER) {&lt;br /&gt;
    eip = get_memory_dword(0x900000);&lt;br /&gt;
} else {&lt;br /&gt;
    // Else, things have gone wrong&lt;br /&gt;
    eip = 0xFFFFFF94;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
The RC4 algorithm was included as part of MCPX 1.0 and seems to work fine with BIOS versions 3944, 4034, and 4134.&lt;br /&gt;
&lt;br /&gt;
=== MCPX 1.1: TEA Decryption of the 2BL ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
== 2BL ==&lt;br /&gt;
&lt;br /&gt;
Certain parts are still missing&lt;br /&gt;
&lt;br /&gt;
=== MTRR Setup ===&lt;br /&gt;
&lt;br /&gt;
First, the cache is disabled.{{FIXME}}&lt;br /&gt;
Then, the MTRR (Memory Type Range Register) will be setup (using &amp;lt;code&amp;gt;wrmsr&amp;lt;/code&amp;gt;) in the following way:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! MTRR (ecx) !! High value (edx) !! Low value (eax) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0x200 || 0x00000000 || 0x00000006 ||&lt;br /&gt;
|-&lt;br /&gt;
| rowspan = &amp;quot;2&amp;quot; | 0x201 || rowspan = &amp;quot;2&amp;quot; | 0x0000000F || 0xFC000800 || ''(For 64 MiB RAM BIOS)''&lt;br /&gt;
|-&lt;br /&gt;
|0xF8000800 || (''For 128 MiB RAM BIOS'')&lt;br /&gt;
|-&lt;br /&gt;
|0x202 || 0x00000000 || 0xFFF80005 ||&lt;br /&gt;
|-&lt;br /&gt;
|0x203 || 0x0000000F || 0xFFF80800 ||&lt;br /&gt;
|-&lt;br /&gt;
|0x204 || 0x00000000 || 0x00000000 || rowspan=&amp;quot;3&amp;quot; | Clear all unused MTRR&lt;br /&gt;
|-&lt;br /&gt;
| colspan = &amp;quot;3&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0x20F || 0x00000000 || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0x2FF || 0x00000000 || 0x00000800 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once the MTRR have been written, the cache is enabled.{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Register setup ===&lt;br /&gt;
&lt;br /&gt;
Now the 2BL will set up the segment registers{{FIXME|reason=why?!}} and stack:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Register !! Value !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|ds || 0x0010 || rowspan=&amp;quot;3&amp;quot; | Data segment{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|es || 0x0010&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|ss || 0x0010&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|esp || 0x00400000 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|fs || 0x0000 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|gs || 0x0000 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Self-copy ===&lt;br /&gt;
&lt;br /&gt;
Now the 2BL copies itself (24 kiB) from 0x00900000 to memory address 0x00400000.&lt;br /&gt;
&lt;br /&gt;
=== Paging ===&lt;br /&gt;
&lt;br /&gt;
Now a PDE is prepared at address 0x0000F000:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset in PDE !! Value !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|0x000 || 0x000000E3 || rowspan=&amp;quot;7&amp;quot; | Identity maps the first 256MiB of RAM: 0x00000000 and 0x80000000 will both map to physical page 0 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xE3: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0x800 || 0x000000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x004 || 0x004000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x804 || 0x004000E3&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0x8FC || 0x0FC000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x0FC || 0x0FC000E3&lt;br /&gt;
|-&lt;br /&gt;
|0x900 || 0x00000000 || rowspan=&amp;quot;5&amp;quot; | Unmapping the rest of the pages&lt;br /&gt;
|-&lt;br /&gt;
|0x100 || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | ...&lt;br /&gt;
|-&lt;br /&gt;
|0xFFC || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0x7FC || 0x00000000&lt;br /&gt;
|-&lt;br /&gt;
|0xC00 || 0x0000F063 || Maps the PDE (4 kiB page) to address 0xC0000000 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0x63: Flags: &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFFC || 0xFFC000E3 || Identity maps the upper portion of the Flash (4 MiB page) to address 0xFFC00000 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xE3: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFD0 || 0xFD0000FB || rowspan=&amp;quot;4&amp;quot; | Maps 16 MiB for the GPU control registers &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 0xFB: Flags: &amp;lt;br&amp;gt; * 0x80: 4 MiB page &amp;lt;br&amp;gt; * 0x40: Marked as previously written (Dirty) &amp;lt;br&amp;gt; * 0x20: Marked as previously accessed &amp;lt;br&amp;gt; * 0x10: Cache disabled &amp;lt;br&amp;gt; * 0x08: Write-Through caching &amp;lt;br&amp;gt; * 0x02: Read/Write &amp;lt;br&amp;gt; * 0x01: Present&lt;br /&gt;
|-&lt;br /&gt;
|0xFD4 || 0xFD4000FB&lt;br /&gt;
|-&lt;br /&gt;
|0xFD8 || 0xFD8000FB&lt;br /&gt;
|-&lt;br /&gt;
|0xFDC || 0xFDC000FB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After setting up the PDE, the PAT is set up using &amp;lt;code&amp;gt;wrmsr&amp;lt;/code&amp;gt;: {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
CR4 is touched {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
CR3 is touched {{FIXME}}&lt;br /&gt;
&lt;br /&gt;
Now paging is activated by enabling the PG and WP bits in CR0.&lt;br /&gt;
Additionally, the same &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; instruction is used to enable the NE bit in cr0.&lt;br /&gt;
&lt;br /&gt;
=== 2BL main ===&lt;br /&gt;
&lt;br /&gt;
esp is now also reloaded to point at the relocated address. It will be set to 0x80400000 (absolute value, independent of previous esp value).&lt;br /&gt;
The 2BL will now &amp;lt;code&amp;gt;call&amp;lt;/code&amp;gt; into the relocated 2BL code somewhere near 0x00400000.&lt;br /&gt;
&lt;br /&gt;
==== Disabling of the MCPX ROM ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000880);&lt;br /&gt;
out8(0xCFC, 0x02);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SMC handling ====&lt;br /&gt;
&lt;br /&gt;
The [[SMC]] has a watchdog functionality which must be turned off.&lt;br /&gt;
This is done by querying the SMC registers 0x1C - 0x1F.&lt;br /&gt;
If all of them are 0x00 the 2BL will shutdown the system{{FIXME}}.&lt;br /&gt;
If this is not the case, the bootloader calculates the watchdog challenge response and sends it to SMC registers 0x20 and 0x21.&lt;br /&gt;
&lt;br /&gt;
Additionally, the 2BL will set SMC register 0x01 to 0 (which resets the cursor position for reading the SMC revision information).&lt;br /&gt;
&lt;br /&gt;
==== Enable IDE and NIC ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x8000088C);&lt;br /&gt;
out32(0xCFC, 0x40000000);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memory cleanup ====&lt;br /&gt;
&lt;br /&gt;
The 2BL fills memory with 0xCC from 0x80090000 to 0x80095FFF. These are the 24 kiB where the 2BL was stored previously.&lt;br /&gt;
&lt;br /&gt;
==== Setup RAM timing ====&lt;br /&gt;
&lt;br /&gt;
Not described yet, this is complicated{{FIXME}}.&lt;br /&gt;
This got a lot more complicated when Microsoft started using different RAM sometime after [[Hardware Revisions#1.6|Hardware Revision 1.6]] was already out.&lt;br /&gt;
&lt;br /&gt;
==== Weird stuff 2 ====&lt;br /&gt;
&lt;br /&gt;
This does some PCI config, use unknown{{FIXME}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000854);&lt;br /&gt;
out32(0xCFC, in32(0xCFC) | 0x88000000);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x80000064);&lt;br /&gt;
out32(0xCFC, in32(0xCFC) | 0x88000000);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x8000006C);&lt;br /&gt;
uint32_t tmp = in32(0xCFC);&lt;br /&gt;
out32(0xCFC, tmp &amp;amp; 0xFFFFFFFE);&lt;br /&gt;
out32(0xCFC, tmp);&lt;br /&gt;
&lt;br /&gt;
out32(0xCF8, 0x80000080);&lt;br /&gt;
out32(0xCFC, 0x00000100);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Weird stuff 3 ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Why?}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
out32(0xCF8, 0x80000808);&lt;br /&gt;
uint8_t mcpx_revision = in8(0xCFC);    &lt;br /&gt;
&lt;br /&gt;
if (mcpx_revision &amp;gt;= 0xD1) {&lt;br /&gt;
  out32(0xCF8, 0x800008C8);&lt;br /&gt;
  out32(0xCFC, 0x00008F00);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Loading the kernel ====&lt;br /&gt;
===== Kernel-copy =====&lt;br /&gt;
&lt;br /&gt;
The Kernel is now copied into RAM.&lt;br /&gt;
&lt;br /&gt;
===== Kernel decryption =====&lt;br /&gt;
&lt;br /&gt;
The 2BL will copy the kernel decryption key (16 bytes) from offset 32 of an array of 3 keys:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Use&lt;br /&gt;
|-&lt;br /&gt;
| 0 || EEPROM key&lt;br /&gt;
|-&lt;br /&gt;
| 16 || Certificate key&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Kernel key&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Kernel is then decrypted in-place using RC4.&lt;br /&gt;
&lt;br /&gt;
===== Kernel decompression =====&lt;br /&gt;
&lt;br /&gt;
The Kernel is decompressed directly to 0x80010000 where it will reside until a full system shutdown.&lt;br /&gt;
&lt;br /&gt;
==== Running the kernel ====&lt;br /&gt;
&lt;br /&gt;
The xboxkrnl.exe header at 0x8001000 is checked{{FIXME|reason=how?}}.&lt;br /&gt;
If it is invalid, {{FIXME}}.&lt;br /&gt;
If it is valid, the kernel entry point is looked up from the PE optional header. The hardcoded image base of 0x8001000 is added to the entry point.&lt;br /&gt;
The entry-point is now being called. Argumnts are passed on the stack, from right to left.&lt;br /&gt;
The first argument is a commandline string loaded from memory address 0x80400000. It is an empty string for retail BIOS{{FIXME|reason=Mention options for debug bioses here}}.&lt;br /&gt;
A pointer to the previously mentioned array of 3 keys is passed as the second argument.&lt;br /&gt;
&lt;br /&gt;
== Kernel ==&lt;br /&gt;
&lt;br /&gt;
=== Startup animation ===&lt;br /&gt;
&lt;br /&gt;
=== Kernel Re-initialization ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [http://hackspot.net/XboxBlog/?p=1 Understanding the Xbox boot process]&lt;br /&gt;
* [https://mborgerson.com/deconstructing-the-xbox-boot-rom Deconstructing the Boot ROM]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Hardware_Revisions&amp;diff=5484</id>
		<title>Hardware Revisions</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Hardware_Revisions&amp;diff=5484"/>
				<updated>2017-05-26T21:23:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are 7 Xbox revisions&lt;br /&gt;
&lt;br /&gt;
== 1.0 ==&lt;br /&gt;
&lt;br /&gt;
* Made in Hungary&lt;br /&gt;
* USB controller is on a separate PCB&lt;br /&gt;
* GPU has a fan on the heat sink&lt;br /&gt;
* MCPX 1.0 ROM&lt;br /&gt;
* Thomson DVD Drive&lt;br /&gt;
* Seagate Hard Drive&lt;br /&gt;
* Conexant [[Video Encoder]]&lt;br /&gt;
&lt;br /&gt;
== 1.1 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.0, except:&lt;br /&gt;
* Made in Hungary or Mexico&lt;br /&gt;
* USB controller moved onto the motherboard&lt;br /&gt;
* Fan removed from the GPU heat sink&lt;br /&gt;
* MCPX 1.1 ROM&lt;br /&gt;
&lt;br /&gt;
== 1.2 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.1, except:&lt;br /&gt;
* Made in China&lt;br /&gt;
* Philips DVD Drive&lt;br /&gt;
* Western Digital Hard Drive&lt;br /&gt;
&lt;br /&gt;
== 1.3 ==&lt;br /&gt;
Same as 1.2, except:&lt;br /&gt;
* Samsung DVD Drive&lt;br /&gt;
* Seagate Hard Drive&lt;br /&gt;
&lt;br /&gt;
== 1.4 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.3, except:&lt;br /&gt;
* Western Digital Hard Drive&lt;br /&gt;
* Focus video chip&lt;br /&gt;
&lt;br /&gt;
== 1.5 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.4. Possibly never existed, but will otherwise be very rare. Production was halted and 1.4 was produced again.&lt;br /&gt;
&lt;br /&gt;
== 1.6 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.4, except:&lt;br /&gt;
* Made in China or Taiwan&lt;br /&gt;
* BIOS no longer flashable&lt;br /&gt;
* Removed data and power lines from LPC port&lt;br /&gt;
* Xcalibur video chip&lt;br /&gt;
&lt;br /&gt;
== Identifying ==&lt;br /&gt;
&lt;br /&gt;
While not definitive, here are some ways to help identify the revision of your Xbox.&lt;br /&gt;
&lt;br /&gt;
=== Manufacturing Details ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Date Range&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Location&lt;br /&gt;
|-&lt;br /&gt;
| 01/2001-10/2002 || 1.0 || Hungary&lt;br /&gt;
|-&lt;br /&gt;
| 11/2002-04/2003 || 1.1 || Hungary, Mexico&lt;br /&gt;
|-&lt;br /&gt;
| 05/2003-03/2004 || 1.2 || China&lt;br /&gt;
|-&lt;br /&gt;
| 04/2004 Onward || 1.6 || China, Taiwan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Serial Number ===&lt;br /&gt;
&lt;br /&gt;
The serial number looks like this:&lt;br /&gt;
&lt;br /&gt;
LNNNNNN TWWFF&lt;br /&gt;
&lt;br /&gt;
L is the production line&lt;br /&gt;
NNNNNN is the number produced that week&lt;br /&gt;
Y is the last digit of the production year&lt;br /&gt;
WW is the number of the week&lt;br /&gt;
FF is the factory code&lt;br /&gt;
&lt;br /&gt;
Note, this table contradicts the previous table.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Factory&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Location&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
|-&lt;br /&gt;
| 02 || Mexico || 1.0 or 1.1&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Hungary || 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 05 || China || 1.2 or later&lt;br /&gt;
|-&lt;br /&gt;
| 06 || Taiwan || 1.2 or later&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Serial Number&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 20WFF || 1.0&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 21WFF || 1.0&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 23WFF || 1.0 or 1.1&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 24WFF || 1.1&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 25WFF || 1.1&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 30WFF || 1.2&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 31WFF || 1.3&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 32WFF || 1.3&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 33WFF || 1.4 or 1.5&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 42WFF || 1.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Video Chip&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
|-&lt;br /&gt;
| Conexant || 1.0, 1.1, 1.2, 1.3&lt;br /&gt;
|-&lt;br /&gt;
| Focus || 1.4, 1.5&lt;br /&gt;
|-&lt;br /&gt;
| Xcalibur || 1.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BIOS Version ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Kernel Version&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
|-&lt;br /&gt;
| 3944, 4034, 4036, 4627 || 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 4817, 4972 || 1.1&lt;br /&gt;
|-&lt;br /&gt;
| 5101, 5713 || 1.2 - 1.5&lt;br /&gt;
|-&lt;br /&gt;
| 5838 || 1.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.informit.com/articles/article.aspx?p=367210&amp;amp;seqNum=2 InformIT Methods of Identification]&lt;br /&gt;
* [http://www.informit.com/articles/article.aspx?p=367210 InformIT Identifying your Xbox Revision]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5483</id>
		<title>Motherboard</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5483"/>
				<updated>2017-05-26T21:20:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xbox-Motherboard-BR.jpg|400px|thumb|right|Xbox Version 1.0 Motherboard]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5482</id>
		<title>Motherboard</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5482"/>
				<updated>2017-05-26T21:20:27Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xbox-Motherboard-BR.jpg|400px|thumb|right|Xbox 1.0 Motherboard]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5481</id>
		<title>Motherboard</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5481"/>
				<updated>2017-05-26T21:18:33Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xbox-Motherboard-BR.jpg|400px|thumb|right|Xbox Motherboard]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:Xbox-Motherboard-BR.jpg&amp;diff=5480</id>
		<title>File:Xbox-Motherboard-BR.jpg</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:Xbox-Motherboard-BR.jpg&amp;diff=5480"/>
				<updated>2017-05-26T21:16:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: English: The motherboard for the Xbox, a sixth-generation gaming console made by Microsoft that was first released in 2001. The Xbox was Microsoft's first foray into the gaming console market, and was followed by the Xbox 360 in 2005. The console is no...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;English: The motherboard for the Xbox, a sixth-generation gaming console made by Microsoft that was first released in 2001. The Xbox was Microsoft's first foray into the gaming console market, and was followed by the Xbox 360 in 2005. The console is notable for having a built-in hard drive, breakaway controller dongles and an Ethernet port to support Microsoft's online gaming service, Xbox Live.&lt;br /&gt;
The motherboard for the Xbox contains a custom 32-bit, 733 MHz Intel Pentium III CPU. It has 64 MB of DDR memory and a 233 MHz Nvidia GPU.&lt;br /&gt;
&lt;br /&gt;
Source: https://commons.wikimedia.org/wiki/File:Xbox-Motherboard-BR.jpg&lt;br /&gt;
Author: Evan-Amos&lt;br /&gt;
License: Public Domain&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5479</id>
		<title>Motherboard</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5479"/>
				<updated>2017-05-26T21:15:04Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xbox-Motherboard-BR.jpg|Xbox-Motherboard-BR]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5478</id>
		<title>Motherboard</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Motherboard&amp;diff=5478"/>
				<updated>2017-05-26T21:14:27Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Created page with &amp;quot;File:800px-Xbox-Motherboard-BR.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:800px-Xbox-Motherboard-BR.jpg]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5477</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5477"/>
				<updated>2017-05-26T21:10:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Chihiro]]&lt;br /&gt;
* [[Xbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Hardware Revisions]]&lt;br /&gt;
* [[Motherboard]]&lt;br /&gt;
* [[Power Supply]]&lt;br /&gt;
* [[CPU|CPU (Custom Pentium 3 733 MHz)]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[EEPROM]]&lt;br /&gt;
* [[SMC]]&lt;br /&gt;
* [[Video Encoder]]&lt;br /&gt;
* [[Xbox Game Disc]]&lt;br /&gt;
* [[Xbox Input Devices]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[NVNet|Network Controller (NVNet)]]&lt;br /&gt;
&lt;br /&gt;
== System Software ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]] / [[Kernel]]&lt;br /&gt;
* [[FATX]] (Filesystem)&lt;br /&gt;
* [[Dashboard]]&lt;br /&gt;
* [[Exploits]]&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk NXDK (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
** [[Xbox Debug Monitor]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* Find random stuff in [[Resources]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5476</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5476"/>
				<updated>2017-05-26T21:09:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Chihiro]]&lt;br /&gt;
* [[Xbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Hardware Revisions]]&lt;br /&gt;
* [[Motherboard]]&lt;br /&gt;
* [[CPU|CPU (Custom Pentium 3 733 MHz)]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[EEPROM]]&lt;br /&gt;
* [[SMC]]&lt;br /&gt;
* [[Video Encoder]]&lt;br /&gt;
* [[Xbox Game Disc]]&lt;br /&gt;
* [[Xbox Input Devices]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[NVNet|Network Controller (NVNet)]]&lt;br /&gt;
&lt;br /&gt;
== System Software ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]] / [[Kernel]]&lt;br /&gt;
* [[FATX]] (Filesystem)&lt;br /&gt;
* [[Dashboard]]&lt;br /&gt;
* [[Exploits]]&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk NXDK (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
** [[Xbox Debug Monitor]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* Find random stuff in [[Resources]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Video_Encoder&amp;diff=5474</id>
		<title>Video Encoder</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Video_Encoder&amp;diff=5474"/>
				<updated>2017-05-26T21:08:54Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Mborgerson moved page Video encoder to Video Encoder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Conexant ==&lt;br /&gt;
&lt;br /&gt;
== Focus ==    &lt;br /&gt;
&lt;br /&gt;
== xcalibur ==&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5473</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5473"/>
				<updated>2017-05-26T21:08:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Chihiro]]&lt;br /&gt;
* [[Xbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Hardware Revisions]]&lt;br /&gt;
* [[Motherboard]]&lt;br /&gt;
* [[CPU|CPU (Custom Pentium 3 733 MHz)]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[EEPROM]]&lt;br /&gt;
* [[SMC]]&lt;br /&gt;
* [[Video encoder]]&lt;br /&gt;
* [[Xbox Game Disc]]&lt;br /&gt;
* [[Xbox Input Devices]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[NVNet|Network Controller (NVNet)]]&lt;br /&gt;
&lt;br /&gt;
== System Software ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]] / [[Kernel]]&lt;br /&gt;
* [[FATX]] (Filesystem)&lt;br /&gt;
* [[Dashboard]]&lt;br /&gt;
* [[Exploits]]&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk NXDK (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
** [[Xbox Debug Monitor]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* Find random stuff in [[Resources]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Hardware_Revisions&amp;diff=5471</id>
		<title>Hardware Revisions</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Hardware_Revisions&amp;diff=5471"/>
				<updated>2017-05-26T21:08:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Mborgerson moved page Hardware revisions to Hardware Revisions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are 7 Xbox revisions&lt;br /&gt;
&lt;br /&gt;
== 1.0 ==&lt;br /&gt;
&lt;br /&gt;
* Made in Hungary&lt;br /&gt;
* USB controller is on a separate PCB&lt;br /&gt;
* GPU has a fan on the heat sink&lt;br /&gt;
* MCPX 1.0 ROM&lt;br /&gt;
* Thomson DVD Drive&lt;br /&gt;
* Seagate Hard Drive&lt;br /&gt;
* Conexant [[Video Chip]]&lt;br /&gt;
&lt;br /&gt;
== 1.1 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.0, except:&lt;br /&gt;
* Made in Hungary or Mexico&lt;br /&gt;
* USB controller moved onto the motherboard&lt;br /&gt;
* Fan removed from the GPU heat sink&lt;br /&gt;
* MCPX 1.1 ROM&lt;br /&gt;
&lt;br /&gt;
== 1.2 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.1, except:&lt;br /&gt;
* Made in China&lt;br /&gt;
* Philips DVD Drive&lt;br /&gt;
* Western Digital Hard Drive&lt;br /&gt;
&lt;br /&gt;
== 1.3 ==&lt;br /&gt;
Same as 1.2, except:&lt;br /&gt;
* Samsung DVD Drive&lt;br /&gt;
* Seagate Hard Drive&lt;br /&gt;
&lt;br /&gt;
== 1.4 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.3, except:&lt;br /&gt;
* Western Digital Hard Drive&lt;br /&gt;
* Focus video chip&lt;br /&gt;
&lt;br /&gt;
== 1.5 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.4. Possibly never existed, but will otherwise be very rare. Production was halted and 1.4 was produced again.&lt;br /&gt;
&lt;br /&gt;
== 1.6 ==&lt;br /&gt;
&lt;br /&gt;
Same as 1.4, except:&lt;br /&gt;
* Made in China or Taiwan&lt;br /&gt;
* BIOS no longer flashable&lt;br /&gt;
* Removed data and power lines from LPC port&lt;br /&gt;
* Xcalibur video chip&lt;br /&gt;
&lt;br /&gt;
== Identifying ==&lt;br /&gt;
&lt;br /&gt;
While not definitive, here are some ways to help identify the revision of your Xbox.&lt;br /&gt;
&lt;br /&gt;
=== Manufacturing Details ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Date Range&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Location&lt;br /&gt;
|-&lt;br /&gt;
| 01/2001-10/2002 || 1.0 || Hungary&lt;br /&gt;
|-&lt;br /&gt;
| 11/2002-04/2003 || 1.1 || Hungary, Mexico&lt;br /&gt;
|-&lt;br /&gt;
| 05/2003-03/2004 || 1.2 || China&lt;br /&gt;
|-&lt;br /&gt;
| 04/2004 Onward || 1.6 || China, Taiwan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Serial Number ===&lt;br /&gt;
&lt;br /&gt;
The serial number looks like this:&lt;br /&gt;
&lt;br /&gt;
LNNNNNN TWWFF&lt;br /&gt;
&lt;br /&gt;
L is the production line&lt;br /&gt;
NNNNNN is the number produced that week&lt;br /&gt;
Y is the last digit of the production year&lt;br /&gt;
WW is the number of the week&lt;br /&gt;
FF is the factory code&lt;br /&gt;
&lt;br /&gt;
Note, this table contradicts the previous table.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Factory&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Location&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
|-&lt;br /&gt;
| 02 || Mexico || 1.0 or 1.1&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Hungary || 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 05 || China || 1.2 or later&lt;br /&gt;
|-&lt;br /&gt;
| 06 || Taiwan || 1.2 or later&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Serial Number&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 20WFF || 1.0&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 21WFF || 1.0&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 23WFF || 1.0 or 1.1&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 24WFF || 1.1&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 25WFF || 1.1&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 30WFF || 1.2&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 31WFF || 1.3&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 32WFF || 1.3&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 33WFF || 1.4 or 1.5&lt;br /&gt;
|-&lt;br /&gt;
| LNNNNNN 42WFF || 1.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Video Chip&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
|-&lt;br /&gt;
| Conexant || 1.0, 1.1, 1.2, 1.3&lt;br /&gt;
|-&lt;br /&gt;
| Focus || 1.4, 1.5&lt;br /&gt;
|-&lt;br /&gt;
| Xcalibur || 1.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BIOS Version ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Kernel Version&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Revision&lt;br /&gt;
|-&lt;br /&gt;
| 3944, 4034, 4036, 4627 || 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 4817, 4972 || 1.1&lt;br /&gt;
|-&lt;br /&gt;
| 5101, 5713 || 1.2 - 1.5&lt;br /&gt;
|-&lt;br /&gt;
| 5838 || 1.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.informit.com/articles/article.aspx?p=367210&amp;amp;seqNum=2 InformIT Methods of Identification]&lt;br /&gt;
* [http://www.informit.com/articles/article.aspx?p=367210 InformIT Identifying your Xbox Revision]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Hardware_revisions&amp;diff=5472</id>
		<title>Hardware revisions</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Hardware_revisions&amp;diff=5472"/>
				<updated>2017-05-26T21:08:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Mborgerson moved page Hardware revisions to Hardware Revisions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Hardware Revisions]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5470</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5470"/>
				<updated>2017-05-26T21:08:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Chihiro]]&lt;br /&gt;
* [[Xbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Hardware revisions]]&lt;br /&gt;
* [[Motherboard]]&lt;br /&gt;
* [[CPU|CPU (Custom Pentium 3 733 MHz)]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[EEPROM]]&lt;br /&gt;
* [[SMC]]&lt;br /&gt;
* [[Video encoder]]&lt;br /&gt;
* [[Xbox Game Disc]]&lt;br /&gt;
* [[Xbox Input Devices]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[NVNet|Network Controller (NVNet)]]&lt;br /&gt;
&lt;br /&gt;
== System Software ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]] / [[Kernel]]&lt;br /&gt;
* [[FATX]] (Filesystem)&lt;br /&gt;
* [[Dashboard]]&lt;br /&gt;
* [[Exploits]]&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk NXDK (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
** [[Xbox Debug Monitor]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* Find random stuff in [[Resources]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5469</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5469"/>
				<updated>2017-05-26T21:07:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Chihiro]]&lt;br /&gt;
* [[Xbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Hardware Revisions]]&lt;br /&gt;
* [[Motherboard]]&lt;br /&gt;
* [[CPU|CPU (Custom Pentium 3 733 MHz)]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[EEPROM]]&lt;br /&gt;
* [[SMC]]&lt;br /&gt;
* [[Video Encoder]]&lt;br /&gt;
* [[Xbox Game Disc]]&lt;br /&gt;
* [[Xbox Input Devices]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[NVNet|Network Controller (NVNet)]]&lt;br /&gt;
&lt;br /&gt;
== System Software ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]] / [[Kernel]]&lt;br /&gt;
* [[FATX]] (Filesystem)&lt;br /&gt;
* [[Dashboard]]&lt;br /&gt;
* [[Exploits]]&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk NXDK (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
** [[Xbox Debug Monitor]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* Find random stuff in [[Resources]]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Resources&amp;diff=5468</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Resources&amp;diff=5468"/>
				<updated>2017-05-26T20:13:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Random resources about Xbox hacking ==&lt;br /&gt;
* [https://events.ccc.de/congress/2005/fahrplan/attachments/591-paper_xbox.pdf Michael Steils Xbox Presentation from C3 in 2005]&lt;br /&gt;
* [http://www.bunniestudios.com/bunnie/proj/anatak/xboxmod.html Bunnies original Xbox page]&lt;br /&gt;
* [https://www.nostarch.com/xboxfree Bunnies &amp;quot;Hacking the Xbox&amp;quot; e-book for free]&lt;br /&gt;
* [https://web-beta.archive.org/web/20010827184126/ddj.com/articles/2000/0008/0008a/0008a.htm?topic=graphics Article about Xbox Graphics (before release) from Dr. Dobbs]&lt;br /&gt;
* [http://www.anandtech.com/show/853 Technical article about the Xbox by AnandTech]&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=rUODlNffWmU 3 Xbox Bosses Share Secrets of the Console's Past (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=iWQb7LGH71s Xbox Assembly Line Tour (Video)]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Resources&amp;diff=5467</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Resources&amp;diff=5467"/>
				<updated>2017-05-26T20:13:38Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Random resources about Xbox hacking ==&lt;br /&gt;
* [https://events.ccc.de/congress/2005/fahrplan/attachments/591-paper_xbox.pdf Michael Steils Xbox Presentation from C3 in 2005]&lt;br /&gt;
* [http://www.bunniestudios.com/bunnie/proj/anatak/xboxmod.html Bunnies original Xbox page]&lt;br /&gt;
* [https://www.nostarch.com/xboxfree Bunnies &amp;quot;Hacking the Xbox&amp;quot; e-book for free]&lt;br /&gt;
* [https://web-beta.archive.org/web/20010827184126/ddj.com/articles/2000/0008/0008a/0008a.htm?topic=graphics Article about Xbox Graphics (before release) from Dr. Dobbs]&lt;br /&gt;
* [http://www.anandtech.com/show/853 Technical article about the Xbox by AnandTech]&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=rUODlNffWmU 3 Xbox Bosses Share Secrets of the Console's Past (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=iWQb7LGH71s Xbox Assembly Line Tour (Video)&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:Xbe&amp;diff=5439</id>
		<title>Talk:Xbe</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:Xbe&amp;diff=5439"/>
				<updated>2017-05-26T00:11:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIXME: The file format details should be inlined into the wiki. [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:11, 25 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Citation needed ==&lt;br /&gt;
Some games have a citation needed note. ive taken the liberty to add a note where I thought this might help checking if a publisher was known for sure or somewhat further research is needed. if needed, we could remove those notes to here or use another tag for those.&lt;br /&gt;
I dont want to just drop a &amp;quot;citation needed&amp;quot; without any reasoning. I could have made an error and for these I shared why I am not sure about one.&lt;br /&gt;
&lt;br /&gt;
Feel free to remove a note and cintation needed if you find the publisher correct.&lt;br /&gt;
--[[User:Codeasm|Codeasm]] ([[User talk:Codeasm|talk]]) 16:19, 24 May 2017 (PDT)&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:FATX&amp;diff=5438</id>
		<title>Talk:FATX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:FATX&amp;diff=5438"/>
				<updated>2017-05-26T00:11:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIXME: Inline details about FATX [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:11, 25 May 2017 (PDT)&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=5437</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=5437"/>
				<updated>2017-05-26T00:10:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page could stand to be cleaned up now that we have many pages in the wiki. Also some pictures would be nice. Also we need a wiki logo. See [https://commons.wikimedia.org/wiki/User:Evan-Amos/VOGM/Xbox here] for some great high-quality pictures. [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:10, 25 May 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
I also think we should create a contribution policy page. One thought on the matter is this: Instead of linking to content elsewhere, we should try to bring as much content into the wiki as possible. This is so we don't lose valuable content as things tend to become unavailable over time (that is, dead links). It also makes for a better experience when browsing the wiki and provides a place for visitors to improve the info. [[User:Mborgerson|Mborgerson]] ([[User talk:Mborgerson|talk]]) 17:10, 25 May 2017 (PDT)&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=5436</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=5436"/>
				<updated>2017-05-26T00:08:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page could stand to be cleaned up now that we have many pages in the wiki. Also some pictures would be nice. Also we need a wiki logo. See [https://commons.wikimedia.org/wiki/User:Evan-Amos/VOGM/Xbox here] for some great high-quality pictures. -MB&lt;br /&gt;
&lt;br /&gt;
I also think we should create a contribution policy page. One thought on the matter is this: Instead of linking to content elsewhere, we should try to bring as much content into the wiki as possible. This is so we don't lose valuable content as things tend to become unavailable over time (that is, dead links). It also makes for a better experience when browsing the wiki and provides a place for visitors to improve the info. -MB&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=5435</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=5435"/>
				<updated>2017-05-26T00:08:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page could stand to be cleaned up now that we have many pages in the wiki. Also some pictures would be nice. Also we need a wiki logo. See [https://commons.wikimedia.org/wiki/User:Evan-Amos/VOGM/Xbox here] for some great high-quality pictures. -MB&lt;br /&gt;
&lt;br /&gt;
I also think we should create a contribution policy page. One thought on the matter is this: Instead of linking to content elsewhere, we should try to bring as much content into the wiki as possible. This is so we don't lose valuable content as things tend to become unavailable over time. It also makes for a better experience when browsing the wiki and provides a place for visitors to improve the info. -MB&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:FATX&amp;diff=5434</id>
		<title>Talk:FATX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:FATX&amp;diff=5434"/>
				<updated>2017-05-26T00:06:25Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Created page with &amp;quot;FIXME: Inline details about FATX&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIXME: Inline details about FATX&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:Xbe&amp;diff=5433</id>
		<title>Talk:Xbe</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:Xbe&amp;diff=5433"/>
				<updated>2017-05-26T00:05:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIXME: The file format details should be inlined into the wiki.&lt;br /&gt;
&lt;br /&gt;
== Citation needed ==&lt;br /&gt;
Some games have a citation needed note. ive taken the liberty to add a note where I thought this might help checking if a publisher was known for sure or somewhat further research is needed. if needed, we could remove those notes to here or use another tag for those.&lt;br /&gt;
I dont want to just drop a &amp;quot;citation needed&amp;quot; without any reasoning. I could have made an error and for these I shared why I am not sure about one.&lt;br /&gt;
&lt;br /&gt;
Feel free to remove a note and cintation needed if you find the publisher correct.&lt;br /&gt;
--[[User:Codeasm|Codeasm]] ([[User talk:Codeasm|talk]]) 16:19, 24 May 2017 (PDT)&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5432</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5432"/>
				<updated>2017-05-25T23:53:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* [[Hardware revisions]]&lt;br /&gt;
* [[CPU|CPU (Custom Pentium 3 733 MHz)]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[EEPROM]]&lt;br /&gt;
* [[Xbox Game Disc]]&lt;br /&gt;
* [[Xbox Input Devices]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[NVNet|Network Controller (NVNet)]]&lt;br /&gt;
* [http://segaretro.org/Sega_Chihiro Chihiro]&lt;br /&gt;
&lt;br /&gt;
== Firmware/Kernel ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]] / [[Kernel]]&lt;br /&gt;
* [[FATX]] (Filesystem)&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk NXDK (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
* [[Chihiro-Tools]]&lt;br /&gt;
* [[Xbox Debug Monitor]]&lt;br /&gt;
* [[Chihiro-Launcher]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* Find random stuff in [[Resources]]&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5431</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5431"/>
				<updated>2017-05-25T23:46:40Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* [[Hardware revisions]]&lt;br /&gt;
* [[CPU|CPU (Custom Pentium 3 733 MHz)]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[EEPROM]]&lt;br /&gt;
* [[Xbox Game Disc]]&lt;br /&gt;
* [[Xbox Input Devices]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[NVNet]]&lt;br /&gt;
* [http://segaretro.org/Sega_Chihiro Chihiro]&lt;br /&gt;
&lt;br /&gt;
== Firmware/Kernel ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]]&lt;br /&gt;
* [[Kernel]]&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk NXDK (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
* [[Chihiro-Tools]]&lt;br /&gt;
* [[Xbox Debug Monitor]]&lt;br /&gt;
* [[Chihiro-Launcher]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* Find random stuff in [[Resources]]&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=5430</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Talk:Main_Page&amp;diff=5430"/>
				<updated>2017-05-25T23:27:10Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Created page with &amp;quot;The main page could stand to be cleaned up now that we have many pages in the wiki. Also some pictures would be nice. Also we need a wiki logo. See [https://commons.wikimedia....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page could stand to be cleaned up now that we have many pages in the wiki. Also some pictures would be nice. Also we need a wiki logo. See [https://commons.wikimedia.org/wiki/User:Evan-Amos/VOGM/Xbox here] for some great high-quality pictures.&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=5428</id>
		<title>EEPROM</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=5428"/>
				<updated>2017-05-25T20:19:48Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox EEPROM is a 256 byte non-volatile storage device which contains device-specific information. It is connected via I²C and located on address 0x54.&lt;br /&gt;
&lt;br /&gt;
The Chihiro EEPROM key is &amp;lt;code&amp;gt;7B 35 A8 B7 27 ED 43 7A A0 BA FB 8F A4 38 61 80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chip Models ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Xbox Model&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Model&lt;br /&gt;
|-&lt;br /&gt;
| 1.4 (Others?)&lt;br /&gt;
| Catalyst&lt;br /&gt;
| CAT24WC02J&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Start !! End !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x13&lt;br /&gt;
| HMAC_SHA1 Hash&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x1B&lt;br /&gt;
| RC4 Encrypted Confounder ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x2B&lt;br /&gt;
| RC4 Encrypted HDD key&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x2F&lt;br /&gt;
| RC4 Encrypted Region code (0x01 North America, 0x02 Japan, 0x04 Europe)&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x33&lt;br /&gt;
| Checksum of next 44 bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x3F&lt;br /&gt;
| Xbox serial number&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x45&lt;br /&gt;
| Ethernet MAC address&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| 0x47&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x57&lt;br /&gt;
| Online Key ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x5B&lt;br /&gt;
|  ** 0x00014000 = NTSC, 0x00038000 = PAL&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x5F&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x63&lt;br /&gt;
| other Checksum of next&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x67&lt;br /&gt;
| Zone Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x6B&lt;br /&gt;
| Standard timezone&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x6F&lt;br /&gt;
| Daylight timezone&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x77&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x7B&lt;br /&gt;
| 10-05-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x7F&lt;br /&gt;
| 04-01-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x87&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x8B&lt;br /&gt;
| Standard Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x8F&lt;br /&gt;
| Daylight Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x93&lt;br /&gt;
| Language ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x97&lt;br /&gt;
| Video Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x9B&lt;br /&gt;
| Audio Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x9F&lt;br /&gt;
| 0=MAX rating&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0xA3&lt;br /&gt;
| 7=X, 8=Y, B=LTrigger, C=RTrigger&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0xA7&lt;br /&gt;
| 0=Max rating&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xAB&lt;br /&gt;
| XBOX Live IP Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0xAF&lt;br /&gt;
| XBOX Live DNS Server..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0xB3&lt;br /&gt;
| XBOX Live Gateway Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0xB7&lt;br /&gt;
| XBOX Live Subnet Mask..&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xBB&lt;br /&gt;
| Other XBLive settings ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0xBF&lt;br /&gt;
| DVD Playback Kit Zone&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Unknown Codes / History ?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: Info in above table comes from XKUtils [https://svn.exotica.org.uk:8443/xbmc4xbox/tags/3.5.3/xbmc/xbox/XKEEPROM.h XKEEPROM.h].&lt;br /&gt;
&lt;br /&gt;
== Reading/Writing the EEPROM ==&lt;br /&gt;
&lt;br /&gt;
=== Software Method ===&lt;br /&gt;
This is the easiest way to dump an Xbox EEPROM. Use your alternative dashboard to dump the EEPROM to a file and download it over FTP.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Method ===&lt;br /&gt;
If you cannot dump the EEPROM using software, you can dump it using hardware. You have several options: use an I2C host adapter (see [http://dangerousprototypes.com/blog/bus-pirate-manual/ here]&lt;br /&gt;
or [https://www.totalphase.com/products/aardvark-i2cspi/ here]), build an [https://www.youtube.com/watch?v=UcK6nKyKGVQ I2C-Serial cable], or use a device like a RaspberryPi which has an I2C interface. Connect SDA/SCL/ground to the LPC pinout on the board. See [https://github.com/grimdoomer/PiPROM here] for pinout information. Then use the corresponding software to read/write the EEPROM.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/grimdoomer/PiPROM Read/Write an original Xbox EEPROM chip with a Raspberry Pi]&lt;br /&gt;
* [https://www.youtube.com/watch?v=UcK6nKyKGVQ How To Make Xbox EEPROM Reader / Write (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=uzrljlHDr9w How To Extract Xbox EEPROM Easy (Video)]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=5426</id>
		<title>EEPROM</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=5426"/>
				<updated>2017-05-25T19:32:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox EEPROM is a 256 byte non-volatile storage device which contains device-specific information. It is connected via I²C and located on address 0x54.&lt;br /&gt;
&lt;br /&gt;
The Chihiro EEPROM key is &amp;lt;code&amp;gt;7B 35 A8 B7 27 ED 43 7A A0 BA FB 8F A4 38 61 80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Start !! End !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x13&lt;br /&gt;
| HMAC_SHA1 Hash&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x1B&lt;br /&gt;
| RC4 Encrypted Confounder ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x2B&lt;br /&gt;
| RC4 Encrypted HDD key&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x2F&lt;br /&gt;
| RC4 Encrypted Region code (0x01 North America, 0x02 Japan, 0x04 Europe)&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x33&lt;br /&gt;
| Checksum of next 44 bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x3F&lt;br /&gt;
| Xbox serial number&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x45&lt;br /&gt;
| Ethernet MAC address&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| 0x47&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x57&lt;br /&gt;
| Online Key ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x5B&lt;br /&gt;
|  ** 0x00014000 = NTSC, 0x00038000 = PAL&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x5F&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x63&lt;br /&gt;
| other Checksum of next&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x67&lt;br /&gt;
| Zone Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x6B&lt;br /&gt;
| Standard timezone&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x6F&lt;br /&gt;
| Daylight timezone&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x77&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x7B&lt;br /&gt;
| 10-05-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x7F&lt;br /&gt;
| 04-01-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x87&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x8B&lt;br /&gt;
| Standard Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x8F&lt;br /&gt;
| Daylight Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x93&lt;br /&gt;
| Language ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x97&lt;br /&gt;
| Video Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x9B&lt;br /&gt;
| Audio Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x9F&lt;br /&gt;
| 0=MAX rating&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0xA3&lt;br /&gt;
| 7=X, 8=Y, B=LTrigger, C=RTrigger&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0xA7&lt;br /&gt;
| 0=Max rating&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xAB&lt;br /&gt;
| XBOX Live IP Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0xAF&lt;br /&gt;
| XBOX Live DNS Server..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0xB3&lt;br /&gt;
| XBOX Live Gateway Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0xB7&lt;br /&gt;
| XBOX Live Subnet Mask..&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xBB&lt;br /&gt;
| Other XBLive settings ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0xBF&lt;br /&gt;
| DVD Playback Kit Zone&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Unknown Codes / History ?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: Info in above table comes from XKUtils [https://svn.exotica.org.uk:8443/xbmc4xbox/tags/3.5.3/xbmc/xbox/XKEEPROM.h XKEEPROM.h].&lt;br /&gt;
&lt;br /&gt;
== Reading/Writing the EEPROM ==&lt;br /&gt;
&lt;br /&gt;
=== Software Method ===&lt;br /&gt;
This is the easiest way to dump an Xbox EEPROM. Use your alternative dashboard to dump the EEPROM to a file and download it over FTP.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Method ===&lt;br /&gt;
If you cannot dump the EEPROM using software, you can dump it using hardware. You have several options: use an I2C host adapter (see [http://dangerousprototypes.com/blog/bus-pirate-manual/ here]&lt;br /&gt;
or [https://www.totalphase.com/products/aardvark-i2cspi/ here]), build an [https://www.youtube.com/watch?v=UcK6nKyKGVQ I2C-Serial cable], or use a device like a RaspberryPi which has an I2C interface. Connect SDA/SCL/ground to the LPC pinout on the board. See [https://github.com/grimdoomer/PiPROM here] for pinout information. Then use the corresponding software to read/write the EEPROM.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/grimdoomer/PiPROM Read/Write an original Xbox EEPROM chip with a Raspberry Pi]&lt;br /&gt;
* [https://www.youtube.com/watch?v=UcK6nKyKGVQ How To Make Xbox EEPROM Reader / Write (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=uzrljlHDr9w How To Extract Xbox EEPROM Easy (Video)]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=5425</id>
		<title>EEPROM</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=5425"/>
				<updated>2017-05-25T19:08:48Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox EEPROM is a 256 byte non-volatile storage device which contains device-specific information. It is connected via I²C and located on address 0x54.&lt;br /&gt;
&lt;br /&gt;
The Chihiro EEPROM key is &amp;lt;code&amp;gt;7B 35 A8 B7 27 ED 43 7A A0 BA FB 8F A4 38 61 80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Start !! End !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x13&lt;br /&gt;
| HMAC_SHA1 Hash&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x1B&lt;br /&gt;
| RC4 Encrypted Confounder ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x2B&lt;br /&gt;
| RC4 Encrypted HDD key&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x2F&lt;br /&gt;
| RC4 Encrypted Region code (0x01 North America, 0x02 Japan, 0x04 Europe)&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x33&lt;br /&gt;
| Checksum of next 44 bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x3F&lt;br /&gt;
| Xbox serial number&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x45&lt;br /&gt;
| Ethernet MAC address&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| 0x47&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x57&lt;br /&gt;
| Online Key ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x5B&lt;br /&gt;
|  ** 0x00014000 = NTSC, 0x00038000 = PAL&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x5F&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x63&lt;br /&gt;
| other Checksum of next&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x67&lt;br /&gt;
| Zone Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x6B&lt;br /&gt;
| Standard timezone&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x6F&lt;br /&gt;
| Daylight timezone&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x77&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x7B&lt;br /&gt;
| 10-05-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x7F&lt;br /&gt;
| 04-01-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x87&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x8B&lt;br /&gt;
| Standard Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x8F&lt;br /&gt;
| Daylight Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x93&lt;br /&gt;
| Language ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x97&lt;br /&gt;
| Video Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x9B&lt;br /&gt;
| Audio Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x9F&lt;br /&gt;
| 0=MAX rating&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0xA3&lt;br /&gt;
| 7=X, 8=Y, B=LTrigger, C=RTrigger&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0xA7&lt;br /&gt;
| 0=Max rating&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xAB&lt;br /&gt;
| XBOX Live IP Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0xAF&lt;br /&gt;
| XBOX Live DNS Server..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0xB3&lt;br /&gt;
| XBOX Live Gateway Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0xB7&lt;br /&gt;
| XBOX Live Subnet Mask..&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xBB&lt;br /&gt;
| Other XBLive settings ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0xBF&lt;br /&gt;
| DVD Playback Kit Zone&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Unknown Codes / History ?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: Info in above table comes from XKUtils [https://svn.exotica.org.uk:8443/xbmc4xbox/tags/3.5.3/xbmc/xbox/XKEEPROM.h XKEEPROM.h].&lt;br /&gt;
&lt;br /&gt;
== Reading/Writing the EEPROM ==&lt;br /&gt;
&lt;br /&gt;
=== Software Method ===&lt;br /&gt;
This is the easiest way to dump an Xbox EEPROM. Use your alternative dashboard to dump the EEPROM to a file and download it over FTP.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Method ===&lt;br /&gt;
If you cannot dump the EEPROM using software, you can dump it using hardware. You have several options: use an [https://www.totalphase.com/products/aardvark-i2cspi/ I2C/SPI USB host adapter], build an [https://www.youtube.com/watch?v=UcK6nKyKGVQ I2C-Serial cable], or use a device like a RaspberryPi which has an I2C interface already. Connect SDA/SCL/ground to the LPC pinout on the board. See [https://github.com/grimdoomer/PiPROM here] for pinout information. &lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/grimdoomer/PiPROM Read/Write an original Xbox EEPROM chip with a Raspberry Pi]&lt;br /&gt;
* [https://www.youtube.com/watch?v=UcK6nKyKGVQ How To Make Xbox EEPROM Reader / Write (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=uzrljlHDr9w How To Extract Xbox EEPROM Easy (Video)]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=5424</id>
		<title>EEPROM</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=5424"/>
				<updated>2017-05-25T19:06:36Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox EEPROM is a 256 byte non-volatile storage device which contains device-specific information. It is connected via I²C and located on address 0x54.&lt;br /&gt;
&lt;br /&gt;
The Chihiro EEPROM key is &amp;lt;code&amp;gt;7B 35 A8 B7 27 ED 43 7A A0 BA FB 8F A4 38 61 80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Start !! End !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x13&lt;br /&gt;
| HMAC_SHA1 Hash&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x1B&lt;br /&gt;
| RC4 Encrypted Confounder ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x2B&lt;br /&gt;
| RC4 Encrypted HDD key&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x2F&lt;br /&gt;
| RC4 Encrypted Region code (0x01 North America, 0x02 Japan, 0x04 Europe)&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x33&lt;br /&gt;
| Checksum of next 44 bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x3F&lt;br /&gt;
| Xbox serial number&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x45&lt;br /&gt;
| Ethernet MAC address&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| 0x47&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x57&lt;br /&gt;
| Online Key ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x5B&lt;br /&gt;
|  ** 0x00014000 = NTSC, 0x00038000 = PAL&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x5F&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x63&lt;br /&gt;
| other Checksum of next&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x67&lt;br /&gt;
| Zone Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x6B&lt;br /&gt;
| Standard timezone&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x6F&lt;br /&gt;
| Daylight timezone&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x77&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x7B&lt;br /&gt;
| 10-05-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x7F&lt;br /&gt;
| 04-01-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x87&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x8B&lt;br /&gt;
| Standard Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x8F&lt;br /&gt;
| Daylight Bias?&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x93&lt;br /&gt;
| Language ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x97&lt;br /&gt;
| Video Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x9B&lt;br /&gt;
| Audio Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x9F&lt;br /&gt;
| 0=MAX rating&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0xA3&lt;br /&gt;
| 7=X, 8=Y, B=LTrigger, C=RTrigger&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0xA7&lt;br /&gt;
| 0=Max rating&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xAB&lt;br /&gt;
| XBOX Live IP Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0xAF&lt;br /&gt;
| XBOX Live DNS Server..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0xB3&lt;br /&gt;
| XBOX Live Gateway Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0xB7&lt;br /&gt;
| XBOX Live Subnet Mask..&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xBB&lt;br /&gt;
| Other XBLive settings ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0xBF&lt;br /&gt;
| DVD Playback Kit Zone&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Unknown Codes / History ?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: Info in above table comes from XKUtils [https://svn.exotica.org.uk:8443/xbmc4xbox/tags/3.5.3/xbmc/xbox/XKEEPROM.h XKEEPROM.h].&lt;br /&gt;
&lt;br /&gt;
== How to Dump Your EEPROM ==&lt;br /&gt;
&lt;br /&gt;
=== Software Dump ===&lt;br /&gt;
This is the easiest way to dump an Xbox EEPROM. Use your alternative dashboard to dump the EEPROM to a file and download it over FTP.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Dump ===&lt;br /&gt;
If you cannot dump the EEPROM using software, you can dump it using hardware. You have several options: use an [https://www.totalphase.com/products/aardvark-i2cspi/ I2C/SPI USB host adapter], build an [https://www.youtube.com/watch?v=UcK6nKyKGVQ I2C-Serial cable], or use a device like a RaspberryPi which has an I2C interface already. Connect SDA/SCL/ground to the LPC pinout on the board. See [https://github.com/grimdoomer/PiPROM here] for pinout information. &lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/grimdoomer/PiPROM Read/Write an original Xbox EEPROM chip with a Raspberry Pi]&lt;br /&gt;
* [https://www.youtube.com/watch?v=UcK6nKyKGVQ How To Make Xbox EEPROM Reader / Write (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=uzrljlHDr9w How To Extract Xbox EEPROM Easy (Video)]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5422</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=5422"/>
				<updated>2017-05-25T18:52:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
&lt;br /&gt;
Development&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/xqemu/nxdk NXDK (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
&lt;br /&gt;
[[Xbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Hardware revisions]]&lt;br /&gt;
** [[CPU|CPU (Custom Pentium 3 733 MHz)]]&lt;br /&gt;
** [[Memory]]&lt;br /&gt;
** [[BIOS]]&lt;br /&gt;
** [[MCPX]] [[MCPX ROM|(ROM)]]&lt;br /&gt;
** [[DVD Drive]]&lt;br /&gt;
** [[Hard Drive]]&lt;br /&gt;
** [[USB]]&lt;br /&gt;
** [[EEPROM]]&lt;br /&gt;
* [[Xbox Game Disc]]&lt;br /&gt;
* [[Xbox Input Devices]]&lt;br /&gt;
* [[Xbox Debug Monitor]]&lt;br /&gt;
* [[Operating System]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
&lt;br /&gt;
[http://segaretro.org/Sega_Chihiro Chihiro]&lt;br /&gt;
&lt;br /&gt;
* [[Chihiro-Tools]]&lt;br /&gt;
* [[Chihiro-Launcher]]&lt;br /&gt;
&lt;br /&gt;
[[:Category:Games|Games]]&lt;br /&gt;
&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
Emulation&lt;br /&gt;
&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
&lt;br /&gt;
{{:Main Page/Xbox Live}}&lt;br /&gt;
&lt;br /&gt;
Find random stuff in [[Resources]]&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Hard_Drive&amp;diff=5257</id>
		<title>Hard Drive</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Hard_Drive&amp;diff=5257"/>
				<updated>2017-05-20T19:18:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The original Xbox hard disk drive was 8GB in size.  Later releases, 1.3 and 1.4's had Seagate 10GB drives; however, only the first 8GB of the drive was used.&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
! Xbox Version&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Model Number&lt;br /&gt;
! Capacity&lt;br /&gt;
|-&lt;br /&gt;
| 1.0?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 8G&lt;br /&gt;
|-&lt;br /&gt;
| 1.3+&lt;br /&gt;
| Seagate&lt;br /&gt;
| ?&lt;br /&gt;
| 10G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Partitions ==&lt;br /&gt;
The Xbox hard disk contains multiple partitions. Unlike a PC, which typically contains either a [https://en.wikipedia.org/wiki/Master_boot_record Master Boot Record] or [https://en.wikipedia.org/wiki/GUID_Partition_Table GUID Partition Table] to specify the partition information, the Xbox kernel uses a fixed partition layout. The file system used on the Xbox is [[FATX]], a variant of FAT16/32 developed by Microsoft specifically for the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Drive Letter&lt;br /&gt;
! Description&lt;br /&gt;
! Offset (bytes)&lt;br /&gt;
! Size (bytes)&lt;br /&gt;
! Filesystem&lt;br /&gt;
|-&lt;br /&gt;
| N/A&lt;br /&gt;
| Config Area&lt;br /&gt;
| 0x00000000&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| Fixed Structure&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| Game Cache&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0x2ee00000&lt;br /&gt;
| FATX&lt;br /&gt;
|-&lt;br /&gt;
| Y&lt;br /&gt;
| Game Cache&lt;br /&gt;
| 0x2ee80000&lt;br /&gt;
| 0x2ee00000&lt;br /&gt;
| FATX&lt;br /&gt;
|-&lt;br /&gt;
| Z&lt;br /&gt;
| Game Cache&lt;br /&gt;
| 0x5dc80000&lt;br /&gt;
| 0x2ee00000&lt;br /&gt;
| FATX&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| System&lt;br /&gt;
| 0x8ca80000&lt;br /&gt;
| 0x1f400000&lt;br /&gt;
| FATX&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| Data&lt;br /&gt;
| 0xabe80000&lt;br /&gt;
| 0x131f00000&lt;br /&gt;
| FATX&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''FIXME:'''&lt;br /&gt;
* Add info on how extended partitions are added.&lt;br /&gt;
&lt;br /&gt;
== Locking ==&lt;br /&gt;
The hard drives in the Xbox are locked with a key which is unique to the specific Xbox. The drive is unlocked by the kernel at boot.&lt;br /&gt;
&lt;br /&gt;
=== Unlocking for Backups ===&lt;br /&gt;
Before connecting an Xbox HDD to a PC for a backup or modification, the drive must first be unlocked. This can be done with alternative dashboards (such as EvoX). But beware, once you unlock the disk you cannot use it with an official BIOS until you re-lock the disk! For this reason it is suggested to use a patched BIOS which does not require the disk to be locked. If you are unable to run unsigned code (needed to unlock the HDD before powering off), it is possible to hot-swap the drive after the Xbox has started. This is not a suggested method, but it has been known to work. The idea is that you start the Xbox and wait for the dashboard, at which point the drive will be unlocked. Then, while the Xbox is running, you disconnect the IDE cable (but not the power!), and then connect the drive to your PC. Then the drive can be mounted for read/write (using XboxHDM), or imaged directly.&lt;br /&gt;
&lt;br /&gt;
'''FIXME:'''&lt;br /&gt;
* Provide more info on locking/unlocking procedure.&lt;br /&gt;
* Provide details about the key and how it can be derived from the [[EEPROM]] data.&lt;br /&gt;
&lt;br /&gt;
== How To: Backup an HDD ==&lt;br /&gt;
There are two general methods to back up your HDD: copying the files, or creating a byte-for-byte image of the drive.&lt;br /&gt;
&lt;br /&gt;
=== Method 1: File Copy ===&lt;br /&gt;
This is an acceptable backup method, but it is not as accurate an exact copy. This method requires less work to create the backup, but more work to re-create a usable disk image. The dashboard files (found in C:) are the most essential part of a backup, and a complete disk image can be re-created (with some effort) with a copy of the dashboard files using a tool such as XboxHDM.&lt;br /&gt;
&lt;br /&gt;
==== Remote ====&lt;br /&gt;
Simply run an XBE on your Xbox that provides an FTP server. This is a standard feature for alternative dashboards (such as EvoX). Then connect to your Xbox from another system and copy all files in '''C:''' and '''E:'''.&lt;br /&gt;
&lt;br /&gt;
==== Direct ====&lt;br /&gt;
Unlock the HDD, connect it to your PC, mount the drive (see [[FATX]]), copy the files.&lt;br /&gt;
&lt;br /&gt;
=== Method 2: Exact Copy ===&lt;br /&gt;
This is the most accurate method to backup your hard disk. This method requires more work to create the backup, but does not require any effort to create a usable disk image like the first method. There are multiple ways to implement this method, one is provided here.&lt;br /&gt;
&lt;br /&gt;
Unlock the HDD, connect it to your PC using a USB-IDE adapter ([https://www.amazon.com/Sabrent-USB-DSC9-SATA-Drive-Converter/dp/B00DQJME7Y available for ~$20USD]).  In GNU/Linux and other *NIX variants, DD can be used to perform the block copy. For example: &amp;lt;code&amp;gt;sudo dd if=/dev/sdb of=xbox_hdd.raw bs=512&amp;lt;/code&amp;gt;. If you're dumping an original Xbox HDD (capacity 8G or 10G), this will finish pretty quickly. The files can be extracted by mounting the filesystems in the image (see [[FATX]]).&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* [http://hackipedia.org/Disk%20formats/Partition%20tables/X-Box/Xbox_Partitioning_and_Filesystem_Details.htm Xbox Partitioning and Filesystem Details]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=FATX&amp;diff=5254</id>
		<title>FATX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=FATX&amp;diff=5254"/>
				<updated>2017-05-20T01:08:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Created page with &amp;quot;The file system used on the Xbox is FATX, a variant of FAT16/32 developed by Microsoft specifically for the Xbox.  == Implementations ==  {| class=&amp;quot;wikitable |- ! Name ! P...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The file system used on the Xbox is [[FATX]], a variant of FAT16/32 developed by Microsoft specifically for the Xbox.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Platform&lt;br /&gt;
! Read/Write&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Official&lt;br /&gt;
| Xbox&lt;br /&gt;
| Read/Write&lt;br /&gt;
| Official FATX implementation by Microsoft&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/mborgerson/fatx fatxfs]&lt;br /&gt;
| GNU/Linux, macOS&lt;br /&gt;
| Read-Only&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Filesystem_in_Userspace FUSE]-based implementation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* [http://hackipedia.org/Disk%20formats/File%20systems/FATX%2C%20File%20Allocation%20Table%20%28X-Box%29/Differences_between_Xbox_FATX_and_MS-DOS_FAT.htm Differences between Xbox FATX and MS-DOS FAT]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Hard_Drive&amp;diff=5253</id>
		<title>Hard Drive</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Hard_Drive&amp;diff=5253"/>
				<updated>2017-05-20T00:59:30Z</updated>
		
		<summary type="html">&lt;p&gt;Mborgerson: Add partition info, stub other sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The original Xbox hard disk drive was 8GB in size.  Later releases, 1.3 and 1.4's had Seagate 10GB drives; however, only the first 8GB of the drive was used.&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
! Xbox Version&lt;br /&gt;
! Manufacturer&lt;br /&gt;
! Model Number&lt;br /&gt;
! Capacity&lt;br /&gt;
|-&lt;br /&gt;
| 1.0?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 8G&lt;br /&gt;
|-&lt;br /&gt;
| 1.3+&lt;br /&gt;
| Seagate&lt;br /&gt;
| ?&lt;br /&gt;
| 10G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Partitions ==&lt;br /&gt;
The Xbox hard disk contains multiple partitions. Unlike a PC, which typically contains either a [https://en.wikipedia.org/wiki/Master_boot_record Master Boot Record] or [https://en.wikipedia.org/wiki/GUID_Partition_Table GUID Partition Table] to specify the partition information, the Xbox kernel uses a fixed partition layout. The file system used on the Xbox is [[FATX]], a variant of FAT16/32 developed by Microsoft specifically for the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Drive Letter&lt;br /&gt;
! Description&lt;br /&gt;
! Offset (bytes)&lt;br /&gt;
! Size (bytes)&lt;br /&gt;
! Filesystem&lt;br /&gt;
|-&lt;br /&gt;
| N/A&lt;br /&gt;
| Config Area&lt;br /&gt;
| 0x00000000&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| Fixed Structure&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| Game Cache&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0x2ee00000&lt;br /&gt;
| FATX&lt;br /&gt;
|-&lt;br /&gt;
| Y&lt;br /&gt;
| Game Cache&lt;br /&gt;
| 0x2ee80000&lt;br /&gt;
| 0x2ee00000&lt;br /&gt;
| FATX&lt;br /&gt;
|-&lt;br /&gt;
| Z&lt;br /&gt;
| Game Cache&lt;br /&gt;
| 0x5dc80000&lt;br /&gt;
| 0x2ee00000&lt;br /&gt;
| FATX&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| System&lt;br /&gt;
| 0x8ca80000&lt;br /&gt;
| 0x1f400000&lt;br /&gt;
| FATX&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| Data&lt;br /&gt;
| 0xabe80000&lt;br /&gt;
| 0x131f00000&lt;br /&gt;
| FATX&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''FIXME:'''&lt;br /&gt;
* Add info on how extended partitions are added.&lt;br /&gt;
&lt;br /&gt;
== Locking ==&lt;br /&gt;
The hard drives in the Xbox are locked with a key which is unique to the specific Xbox. The drive is unlocked by the kernel at boot.&lt;br /&gt;
&lt;br /&gt;
'''FIXME:'''&lt;br /&gt;
* Provide more info on locking/unlocking procedure.&lt;br /&gt;
* Provide details about the key and how it can be derived from the EEPROM data.&lt;br /&gt;
&lt;br /&gt;
== How To: Backup an HDD ==&lt;br /&gt;
'''FIXME'''&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* [http://hackipedia.org/Disk%20formats/Partition%20tables/X-Box/Xbox_Partitioning_and_Filesystem_Details.htm Xbox Partitioning and Filesystem Details]&lt;/div&gt;</summary>
		<author><name>Mborgerson</name></author>	</entry>

	</feed>