<?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=DaveX</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=DaveX"/>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/Special:Contributions/DaveX"/>
		<updated>2026-05-23T22:46:18Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=NV2A&amp;diff=6603</id>
		<title>NV2A</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=NV2A&amp;diff=6603"/>
				<updated>2018-11-10T05:00:49Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: fix broken link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The northbridge of the chipset, and is the GPU&lt;br /&gt;
&lt;br /&gt;
== GPU ==&lt;br /&gt;
&lt;br /&gt;
The GPU is part of the NV20 family (Kelvin)[https://nouveau.freedesktop.org/wiki/CodeNames/]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code name !! Official Name&lt;br /&gt;
|-&lt;br /&gt;
|NV20 || GeForce3 (Ti)&amp;lt;br&amp;gt;Quadro DCC&lt;br /&gt;
|-&lt;br /&gt;
|NV25 || GeForce4 Ti 4200, Ti 4400, Ti 4600&amp;lt;br&amp;gt;Quadro4 700 XGL, 750 XGL, 900 XGL&lt;br /&gt;
|-&lt;br /&gt;
|NV28 || GeForce4 Ti 4200-8X, Ti 4800 (SE), 4200 Go&amp;lt;br&amp;gt;Quadro4 780 XGL, 980 XGL&lt;br /&gt;
|-&lt;br /&gt;
|NV2A || Xbox GPU &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* [https://web.archive.org/web/20031004105935/http://developer.nvidia.com:80/object/nv30_emulation.html NV30 information and emulator]&lt;br /&gt;
* [https://developer.download.nvidia.com/opengl/specs/nv30specs.pdf List of implemented GL extensions for NV10-NV30: &amp;quot;NVIDIA OpenGL Extension Specifications for the CineFX Architecture (NV3x)&amp;quot;, 13 Nov. 2006]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:XboxPcSpkrTrace.jpg&amp;diff=6535</id>
		<title>File:XboxPcSpkrTrace.jpg</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:XboxPcSpkrTrace.jpg&amp;diff=6535"/>
				<updated>2018-09-19T00:03:19Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: DaveX uploaded a new version of File:XboxPcSpkrTrace.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image by Andy Anderson&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6534</id>
		<title>MCPX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6534"/>
				<updated>2018-09-18T23:42:10Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MCPX is the southbridge chip of the Xbox chipset by Nvidia. It contains the sound processors ([[APU]] and [[ACI]]) and also the USB, PCI, IDE, etc, controllers[https://web.archive.org/web/20010418214256/http://www.ga-hardware.com:80/preview.cfm?id=NVIDIAMCP], [https://web.archive.org/web/20010410003338/http://www.nvnews.net/previews/mcpx/mcpx.shtml].&lt;br /&gt;
&lt;br /&gt;
=== ROM ===&lt;br /&gt;
&lt;br /&gt;
The MCPX is home to the secret [[MCPX ROM]].&lt;br /&gt;
&lt;br /&gt;
=== Pin L21: PC Speaker ===&lt;br /&gt;
&lt;br /&gt;
The MCPX has PC Speaker pin which can be controlled using [https://wiki.osdev.org/PC_Speaker the standard PC Speaker interface].&lt;br /&gt;
However, no actual speaker is connected to the pin, so while the signal exists, there will be no audible sound on a stock Xbox.&lt;br /&gt;
&lt;br /&gt;
A speaker can be soldered to this pin and to make the signal audible [https://www.youtube.com/watch?v=Te4MSskbBEE][https://github.com/0DaveX/beep/]&lt;br /&gt;
&lt;br /&gt;
The original Microsoft code does not drive the PC Speaker at all, so this otherwise unused pin can also be used for inaudible forms of unidirectional communication.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;slideshow&amp;quot;&amp;gt;&lt;br /&gt;
Image:XboxWithPcSpkr.jpg|'' ''&lt;br /&gt;
Image:XboxPcSpkrTrace.jpg|'' ''&lt;br /&gt;
Image:XboxPcSpkrSolderPoints.jpg|'' ''&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6533</id>
		<title>MCPX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6533"/>
				<updated>2018-09-18T23:36:26Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: /* Pin L21: PC Speaker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MCPX is the southbridge chip of the Xbox chipset by Nvidia. It contains the sound processors ([[APU]] and [[ACI]]) and also the USB, PCI, IDE, etc, controllers[https://web.archive.org/web/20010418214256/http://www.ga-hardware.com:80/preview.cfm?id=NVIDIAMCP], [https://web.archive.org/web/20010410003338/http://www.nvnews.net/previews/mcpx/mcpx.shtml].&lt;br /&gt;
&lt;br /&gt;
=== ROM ===&lt;br /&gt;
&lt;br /&gt;
The MCPX is home to the secret [[MCPX ROM]].&lt;br /&gt;
&lt;br /&gt;
=== Pin L21: PC Speaker ===&lt;br /&gt;
&lt;br /&gt;
The MCPX has PC Speaker pin which can be controlled using [https://wiki.osdev.org/PC_Speaker the standard PC Speaker interface].&lt;br /&gt;
However, no actual speaker is connected to the pin, so while the signal exists, there will be no audible sound on a stock Xbox.&lt;br /&gt;
&lt;br /&gt;
A speaker can be soldered to this pin and to make the signal audible [https://www.youtube.com/watch?v=Te4MSskbBEE][https://github.com/0DaveX/beep/]&lt;br /&gt;
&lt;br /&gt;
The original Microsoft code does not drive the PC Speaker at all, so this otherwise unused pin can also be used for inaudible forms of unidirectional communication.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;slideshow&amp;quot;&amp;gt;&lt;br /&gt;
Image:XboxWithPcSpkr.jpg|''[[commons:Astronotus ocellatus|Astronotus ocellatus]]'' (Oscar)&lt;br /&gt;
Image:XboxPcSpkrTrace.jpg|''[[commons:Salmo salar|Salmo salar]]'' (Salmon Larva)&lt;br /&gt;
Image:XboxPcSpkrSolderPoints.jpg|''[[commons:Epinephelus lanceolatus|Epinephelus lanceolatus]]'' (Giant grouper)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:XboxPcSpkrTrace.jpg&amp;diff=6531</id>
		<title>File:XboxPcSpkrTrace.jpg</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:XboxPcSpkrTrace.jpg&amp;diff=6531"/>
				<updated>2018-09-18T22:13:16Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: Image by Andy Anderson&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image by Andy Anderson&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6530</id>
		<title>MCPX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6530"/>
				<updated>2018-09-18T22:12:24Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MCPX is the southbridge chip of the Xbox chipset by Nvidia. It contains the sound processors ([[APU]] and [[ACI]]) and also the USB, PCI, IDE, etc, controllers[https://web.archive.org/web/20010418214256/http://www.ga-hardware.com:80/preview.cfm?id=NVIDIAMCP], [https://web.archive.org/web/20010410003338/http://www.nvnews.net/previews/mcpx/mcpx.shtml].&lt;br /&gt;
&lt;br /&gt;
=== ROM ===&lt;br /&gt;
&lt;br /&gt;
The MCPX is home to the secret [[MCPX ROM]].&lt;br /&gt;
&lt;br /&gt;
=== Pin L21: PC Speaker ===&lt;br /&gt;
&lt;br /&gt;
The MCPX has PC Speaker pin which can be controlled using [the standard PC Speaker interface https://wiki.osdev.org/PC_Speaker].&lt;br /&gt;
However, no actual speaker is connected to the pin, so while the signal exists, there will be no audible sound on a stock Xbox.&lt;br /&gt;
&lt;br /&gt;
A speaker can be soldered to this pin and to make the signal audible [https://www.youtube.com/watch?v=Te4MSskbBEE][https://github.com/0DaveX/beep/]&lt;br /&gt;
&lt;br /&gt;
The original Microsoft code does not drive the PC Speaker at all, so this otherwise unused pin can also be used for inaudible forms of unidirectional communication.&lt;br /&gt;
&lt;br /&gt;
[[File:XboxWithPcSpkr.jpg|left|500px]] &amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:XboxPcSpkrTrace.jpg|left|500px]] &amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:XboxPcSpkrSolderPoints.jpg|left|500px]]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6529</id>
		<title>MCPX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6529"/>
				<updated>2018-09-16T21:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: /* Pin L21: PC Speaker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MCPX is the southbridge chip of the Xbox chipset by Nvidia. It contains the sound processors ([[APU]] and [[ACI]]) and also the USB, PCI, IDE, etc, controllers[https://web.archive.org/web/20010418214256/http://www.ga-hardware.com:80/preview.cfm?id=NVIDIAMCP], [https://web.archive.org/web/20010410003338/http://www.nvnews.net/previews/mcpx/mcpx.shtml].&lt;br /&gt;
&lt;br /&gt;
=== ROM ===&lt;br /&gt;
&lt;br /&gt;
The MCPX is home to the secret [[MCPX ROM]].&lt;br /&gt;
&lt;br /&gt;
=== Pin L21: PC Speaker ===&lt;br /&gt;
&lt;br /&gt;
The MCPX has PC Speaker pin which can be controlled using [the standard PC Speaker interface https://wiki.osdev.org/PC_Speaker].&lt;br /&gt;
However, no actual speaker is connected to the pin, so while the signal exists, there will be no audible sound on a stock Xbox.&lt;br /&gt;
&lt;br /&gt;
A speaker can be soldered to this pin and to make the signal audible [https://www.youtube.com/watch?v=Te4MSskbBEE][https://github.com/0DaveX/beep/]&lt;br /&gt;
&lt;br /&gt;
The original Microsoft code does not drive the PC Speaker at all, so this otherwise unused pin can also be used for inaudible forms of unidirectional communication.&lt;br /&gt;
&lt;br /&gt;
[[File:XboxWithPcSpkr.jpg|left|500px]] &amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:XboxPcSpkrSolderPoints.jpg|left|500px]]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:XboxPcSpkrSolderPoints.jpg&amp;diff=6524</id>
		<title>File:XboxPcSpkrSolderPoints.jpg</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:XboxPcSpkrSolderPoints.jpg&amp;diff=6524"/>
				<updated>2018-09-16T20:50:18Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:XboxWithPcSpkr.jpg&amp;diff=6522</id>
		<title>File:XboxWithPcSpkr.jpg</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:XboxWithPcSpkr.jpg&amp;diff=6522"/>
				<updated>2018-09-16T20:49:34Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Exploits&amp;diff=6519</id>
		<title>Exploits</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Exploits&amp;diff=6519"/>
				<updated>2018-09-12T18:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: /* Attack ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MCPX ==&lt;br /&gt;
&lt;br /&gt;
=== LDT (Hypertransport) bus tap ===&lt;br /&gt;
&lt;br /&gt;
See [http://www.xenatera.com/bunnie/proj/anatak/xboxmod.html#ldt bunnie's adventures hacking the Xbox].&lt;br /&gt;
&lt;br /&gt;
=== Visor hack ===&lt;br /&gt;
&lt;br /&gt;
Exploits incorrect rollover of memory address.&lt;br /&gt;
&lt;br /&gt;
=== MIST hack ===&lt;br /&gt;
&lt;br /&gt;
Exploits error in xcode interpreter security check.&lt;br /&gt;
There are at least 2 variations of this hack.&lt;br /&gt;
&lt;br /&gt;
=== A20M# hack ===&lt;br /&gt;
&lt;br /&gt;
[[File:Haxar-a20m.jpg|thumb|200px|A jumper wire hack to enable A20]]&lt;br /&gt;
&lt;br /&gt;
Uses a legacy x86 feature.&lt;br /&gt;
&lt;br /&gt;
=== RC4 attack (MCPX 1.0 only) ===&lt;br /&gt;
&lt;br /&gt;
Microsoft uses the last bytes of the decrypted 2BL to check the integrity of the 2BL.&lt;br /&gt;
However, RC4 does not have any feedback which means changes in the 2BL will not reflect in the last couple of bytes which are checked.&lt;br /&gt;
As such, the 2BL can be freely modified, as long as the last couple of bytes still match what the MCPX ROM expects.&lt;br /&gt;
&lt;br /&gt;
This can be used to take over the 2BL entry point.&lt;br /&gt;
&lt;br /&gt;
When the attack happens, the MCPX ROM is still visible, making this a very powerful attack.&lt;br /&gt;
&lt;br /&gt;
''This attack is described by Michael Steil in his Google talk.''&lt;br /&gt;
&lt;br /&gt;
=== TEA attack (MCPX 1.1 only) ===&lt;br /&gt;
&lt;br /&gt;
TEA, which is only used in MCPX 1.1, can not be used as a hash in Davies-Meyer mode [http://www.tayloredge.com/reference/Mathematics/VRAndem.pdf][https://www.schneier.com/academic/paperfiles/paper-key-schedule.pdf]. And yet, Microsoft used it that way.&lt;br /&gt;
&lt;br /&gt;
The original attack uses the 5 bytes at 0xffffd400 (FBL entry point) which are &amp;lt;code&amp;gt;E9 83 01 00 00&amp;lt;/code&amp;gt;.&lt;br /&gt;
This is &amp;lt;code&amp;gt;jmp 0xffffd588&amp;lt;/code&amp;gt; (which is a jump within the flash region).&lt;br /&gt;
&lt;br /&gt;
When flipping the highest bit of the operand DWORD (at 0xffffd400, mind your endianess) this will become: &amp;lt;code&amp;gt;E9 83 01 80 00&amp;lt;/code&amp;gt;.&lt;br /&gt;
This is &amp;lt;code&amp;gt;jmp 0x7fd588&amp;lt;/code&amp;gt; (which is a jump into the RAM region).&lt;br /&gt;
For the attack to be succssful, the highest bit in the DWORD at 0xffffd404 also has to be flipped.&lt;br /&gt;
&lt;br /&gt;
The RAM can be controlled using the x-code command to write to RAM.&lt;br /&gt;
So the idea is to copy a program from Flash to RAM using x-codes.&lt;br /&gt;
Then the FBL / 2BL is modified to jump into said RAM region by flipping a bit of a jump operand (as described above).&lt;br /&gt;
The 2 bit flips will not change the hash of FBL / 2BL as TEA is broken.&lt;br /&gt;
&lt;br /&gt;
As such, the FBL verification will succeed, the MCPX ROM will hand control to the FBL which will then jump into the attacker controlled RAM.&lt;br /&gt;
&lt;br /&gt;
When the attack happens, the MCPX ROM is still visible, making this a very powerful attack.&lt;br /&gt;
&lt;br /&gt;
''The TEA algorithm and exploit are also described in more detail in Bunnnies book (Page 109 and Page 142).''&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
=== Audio hacks ===&lt;br /&gt;
=== Font hacks ===&lt;br /&gt;
&lt;br /&gt;
[http://archiv.sega-dc.de/phoenix.maxconsole.net/docs/berternie.inc.htm Analysis of &amp;quot;Bert &amp;amp; Ernie&amp;quot; font-exploit].&lt;br /&gt;
&lt;br /&gt;
==== Easter-egg exploit ====&lt;br /&gt;
&lt;br /&gt;
== Savegames ==&lt;br /&gt;
Savedgames can be used as an exploit method, but care must be taken for most games are verifying digital signatures of savedgames {{citation needed}} [http://bunniefoo.com/nostarch/HackingTheXbox_Free.pdf]&lt;br /&gt;
=== [[007: Agent Under Fire]] ===&lt;br /&gt;
=== [[Frogger Beyond]] ===&lt;br /&gt;
=== [[MechAssault]] ===&lt;br /&gt;
=== [[Tom Clancy's Splinter Cell]] ===&lt;br /&gt;
=== [[Tony Hawk's Pro Skater 4]] ===&lt;br /&gt;
Grimdoomer discovered a savegame exploit in THPS4, shared it on Discord and was later included with the Rocky5 softmod installer.&lt;br /&gt;
[https://drive.google.com/file/d/0B9WVULxHOmNkQVBCMHMtVGhqVVU/view a video demonstrating the game trigger (custom skatepark)]&lt;br /&gt;
&lt;br /&gt;
''10-4-2017 it's just shell code I injected into the game save/ granted this save is slightly more complicated than the others and requires a small &amp;quot;loader&amp;quot; that is just a memcpy basically it's literally as simple as a buffer overflow...I just looked for null terminated strings and fuzzed them then when I got a crash I looked in teh xbe to figure out what was going on. yeah it's literally just a stack overflow'' - grimdoomer&lt;br /&gt;
&lt;br /&gt;
another website talking about his exploit.&lt;br /&gt;
[https://www.xbmc4xbox.org.uk/forum/viewtopic.php?t=7310 xbmc4xbox.org.uk]&lt;br /&gt;
&lt;br /&gt;
== Attack ideas ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Author || Description || Status&lt;br /&gt;
|-&lt;br /&gt;
| Preserving memory across boot || JayFoxRox&lt;br /&gt;
| Confirm behaviour described in the coldboot paper (https://jhalderm.com/pub/papers/coldboot-cacm09.pdf). This can be used to transfer code / setups for other exploits across a boot (such as preparing memory for A20 attack).&lt;br /&gt;
| Success: We have marked memory and rebooted the Xbox (through SMC warm and cold, and manual reboot using power switch). At room temperature, and the Xbox pre-heated, hundreds of markers can still be found after 10 seconds. Within the first 5 seconds, no loss of data was measured at all (although not many bits have been marked to begin with). We have confirmed the memory persistence not only for the main RAM, but also MCPX APU DSP memory banks. Other memory or register banks were not tested yet.&lt;br /&gt;
|-&lt;br /&gt;
| Early boot control || JayFoxRox&lt;br /&gt;
| Xcodes allow writing PCI config space. This can be used to set PCI BARs to random page-aligned addresses. Some devices like the NV2A or MCPX APU contain large register banks which can be read and written like RAM. So effectively we can probably overlay the flash memory or MCPX ROM with a temporary PCI mapping. To fill the memory, the PCI device can be mapped to a lower region, and be filled through Xcode memory writes.&lt;br /&gt;
This can be used to take control over code contained in RAM (FBL / 2BL), flash or possibly even the MCPX ROM during boot. This attack could be used to avoid unmapping the MCPX ROM and is therefore quite powerful. However, it requires knowledge of the Xcodes.&lt;br /&gt;
| This has not been tested during real-mode or early boot yet, but is assumed to work. It was tested from protected mode by mapping USB1 over the Flash and MCPX ROM region (main RAM has not been tested yet). Mapping the overlay pages without caching resulted in crashes. However, the PD was not reviewed at the time and might have been broken (through unconventional use of MmMapIoSpace).&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to find problems with the SMC reset chain:&lt;br /&gt;
* Map PCI devices over the MCPX ROM region&lt;br /&gt;
* Schedule a reset&lt;br /&gt;
* Keep reading MCPX ROM memory with CPU to persistent page&lt;br /&gt;
* If we are lucky, the CPU would now copies the MCPX ROM to RAM in it's last cycles with a broken LDT (this depends on how LDTs work and if they can recover)&lt;br /&gt;
| Failed: I've tried reading MCPX ROM memory for as long as possible using the CPU. I've tried resets using PM26 (assumed PWRBTN), SMC Soft (0x01) and SMC Hard (0x40).&lt;br /&gt;
Memory was read based on observing value changes (in PCI regions, signalling reset), and timing alone (X cycles after starting reset).&lt;br /&gt;
The MCPX ROM region access always crashed. Shadowing the MCPX ROM with a PCI device does not help: The CPU never observed the PCI devices being remapped / lost.&lt;br /&gt;
As MCPX and CPU are both reset by the SMC directly, this is not surprising.&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to find problems with the SMC reset chain:&lt;br /&gt;
* Map PCI devices over the MCPX ROM region&lt;br /&gt;
* Check if NV2A can access the mapped PCI device&lt;br /&gt;
* Configure NV2A to continously stream from MCPX ROM region to RAM - Reset system using SMC (idea: this resets the PCI device mappings in the MCPX and should re-enable the MCPX ROM)&lt;br /&gt;
* If we are lucky, the NV2A would now stream the MCPX ROM to RAM in it's last cycles with a broken LDT (this depends on how LDTs work and if they can recover)&lt;br /&gt;
| Concept only: No interest in experimenting with NV2A DMA.&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to find problems with the SMC reset chain: On a warm boot, the x86 might do a bad boot (the following is a theory, someone please measure pins). Theroy: PWRGD is provided, but CPURST is still high from the previous run; CPURST might only go low once NV2A reboots:&lt;br /&gt;
* Map device in NV2A to MCPX ROM region (note: mapping MCPX device would not work, because that gets reset with PWRGD)&lt;br /&gt;
* Warm reset using SMC&lt;br /&gt;
* Code in NV2A device should now jump to lower memory and unmap the MCPX ROM region (by moving itself for example)&lt;br /&gt;
* Delay by X cycles [probably in the range from 1ns to idk.. 500ms] to avoid reading the MCPX ROM before MCPX reset&lt;br /&gt;
* Code in lower region should copy MCPX ROM region to persisting pages&lt;br /&gt;
| Concept only: Someone should measure the pins and possibly look into the memory signals. This is too time consuming for me.&lt;br /&gt;
|-&lt;br /&gt;
| Unknown || JayFoxRox&lt;br /&gt;
| Partial system reset using 0xCF9 I/O register&lt;br /&gt;
| Resetting through 0xCF9 lands us on a black screen and the LED flashes as if the DVD tray was being opened. It's currently assumed that 0xCF9 only resets peripherals and NV2A / CPU, but it does not seem to reset the MCPX itself (hence issues booting and PCI activity which causes LED to flash). This has not been tested yet. An idea to confirm this, might be to map a device at 0xFFFFFFF0 which places an x86 jump to a good memory page. If the MCPX really isn't reset, then the CPU would boot from the MMIO / known page.&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to find problems with the SMC reset chain. The SMC takes a couple of milliseconds to reset the system. Parts of the peripherals might stay alive for long enough. So chances (extremly unlikely) are, the peripherals could be programmed to do DMA where the DMA is only executed after the reboot.&lt;br /&gt;
| Failed: An attempt was made to use the APU GP DSP DMA to continuously store x86 code where 2BL would unpack. The system was then reset using the SMC. It booted normally. It is assumed that the DMA is probably long dead by the time that the 2BL is being unpacked / ran.&lt;br /&gt;
|-&lt;br /&gt;
| Unknown || JayFoxRox&lt;br /&gt;
| Resetting from wrong address. The errata for the CPU states that a warm-reset might occur from the wrong address.&lt;br /&gt;
| Concept only: Needs more research&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to access MCPX ROM through peripherals in the southbridge. If the address logic is broken, parts like the OHCI, APU or AC97 might be able to access it still.&lt;br /&gt;
|&lt;br /&gt;
* AC97: Lots of crashes / hangs. Sometimes crackling noise. Sometimes does not crash. Also can access some non-existing memory regions without any crashes. Data read from invalid addresses seemed to be 300 Hz square wave. While crashing the hardware output will have exponential falloff (measured on PCM line-out).&lt;br /&gt;
* APU: Mapping GP DSP Scratch memory from 0x00000000 to 0x7FFFFFFF reveals mirrors of physical RAM. Setting the highest bit (addresses over 0x80000000) will result in a crash of the Xbox.&lt;br /&gt;
* OHCI: Untested&lt;br /&gt;
* Others: Untested&lt;br /&gt;
|-&lt;br /&gt;
| Dumping Kernel INIT || JayFoxRox&lt;br /&gt;
| INIT is free'd right before passing execution to the first XBE. Depending on what the XBE allocates, the INIT section might still be in memory when a dumper is run.&lt;br /&gt;
| Probably doesn't work. Would need the dumper to directly run after cold-boot. Softmods unfortunately reboot the Xbox and during this warm-boot the INIT section is (in at least most cases) lost.&lt;br /&gt;
|-&lt;br /&gt;
| Dumping Kernel INIT || DaveX || An extension to JayFoxRox dumping idea. Instead of running a dumper-XBE through a softmod, the softmod itself could do the dumping. This means creation of a custom softmod, just for dumping. This depends on the used softmod entry-point (font-exploit (signed target xbe), audio-exploit, ..) to gain execution as early as possible. This strategy might be slightly risky as harddisk contents have to be modified for the temporary softmod.&lt;br /&gt;
| WIP as of 2018-09-12&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | Homebrew entry point || rowspan=&amp;quot;13&amp;quot; | Community&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | Some movie DVDs contain default XBEs signed to run on original Xbox from DVD-R{{FIXME|reason=Add region / product codes and other DVDs you know of}}. If we can find an exploit in one of them (loaded files), we could possibly take over the entire system and run homebrew from DVD-R.&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars: Clone Wars - Volume Two'''&lt;br /&gt;
[[Battlefront II]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars: Episode III - Revenge of the Sith (Widescreen Edition)'''&lt;br /&gt;
[[Battlefront II]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars Trilogy (Widescreen Edition with Bonus Disc)'''&lt;br /&gt;
[[Battlefront]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars Trilogy DVD with Demo'''&lt;br /&gt;
[[Lego Star Wars 2]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars: Clone Wars - Volume One'''&lt;br /&gt;
[[Battlefront]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''The Chronicles of Riddick (Widescreen Unrated Director's Cut)'''&lt;br /&gt;
[[Chronicles of Riddick]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Doom (Unrated Widescreen Edition)'''&lt;br /&gt;
[[Doom 3]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Hulk (Special Edition)'''&lt;br /&gt;
[[Hulk]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''King Arthur - The Director's Cut (Widescreen Edition)'''&lt;br /&gt;
[[King Arthur]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Robots (Widescreen Edition)'''&lt;br /&gt;
[[Robots]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Van Helsing (Widescreen Edition)'''&lt;br /&gt;
[[Van Helsing]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Clone Wars Volume 1'''&lt;br /&gt;
[[Republic Commando]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* [https://events.ccc.de/congress/2005/fahrplan/attachments/591-paper_xbox.pdf 17 Mistakes Microsoft Made in the Xbox Security System]&lt;br /&gt;
* [http://toogam.bespin.org/xboxmod/site/xbehacks.htm A list of some exploit implementations]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6506</id>
		<title>MCPX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6506"/>
				<updated>2018-09-03T01:23:47Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MCPX is the southbridge chip of the Xbox chipset by Nvidia. It contains the sound processors ([[APU]] and [[ACI]]) and also the USB, PCI, IDE, etc, controllers[https://web.archive.org/web/20010418214256/http://www.ga-hardware.com:80/preview.cfm?id=NVIDIAMCP], [https://web.archive.org/web/20010410003338/http://www.nvnews.net/previews/mcpx/mcpx.shtml].&lt;br /&gt;
&lt;br /&gt;
The MCPX is also the home to the secret [[MCPX ROM]].&lt;br /&gt;
&lt;br /&gt;
And it's also the home of the famous PC Speaker Signal. &amp;lt;br \&amp;gt;&lt;br /&gt;
One just has to solder a Speaker on (MCPX pin L21) and it can be used just like on the PC.&amp;lt;br \&amp;gt;&lt;br /&gt;
For some test code see [https://github.com/0DaveX/beep/ https://github.com/0DaveX/beep/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:XboxWithPcSpkr.jpg]] &amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:XboxPcSpkrSolderPoints.jpg]]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6505</id>
		<title>MCPX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6505"/>
				<updated>2018-09-02T21:55:26Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MCPX is the southbridge chip of the Xbox chipset by Nvidia. It contains the sound processors ([[APU]] and [[ACI]]) and also the USB, PCI, IDE, etc, controllers[https://web.archive.org/web/20010418214256/http://www.ga-hardware.com:80/preview.cfm?id=NVIDIAMCP], [https://web.archive.org/web/20010410003338/http://www.nvnews.net/previews/mcpx/mcpx.shtml].&lt;br /&gt;
&lt;br /&gt;
The MCPX is also the home to the secret [[MCPX ROM]].&lt;br /&gt;
&lt;br /&gt;
And it's also the home of the famous PC Speaker Signal. &amp;lt;br \&amp;gt;&lt;br /&gt;
One just has to solder a Speaker on (MXPC pin L21) and it can be used just like on the PC.&amp;lt;br \&amp;gt;&lt;br /&gt;
For some test code see [https://github.com/0DaveX/beep/ https://github.com/0DaveX/beep/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:XboxWithPcSpkr.jpg]] &amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:XboxPcSpkrSolderPoints.jpg]]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6504</id>
		<title>MCPX</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=MCPX&amp;diff=6504"/>
				<updated>2018-09-02T21:33:32Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: added note about the PC speaker&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MCPX is the southbridge chip of the Xbox chipset by Nvidia. It contains the sound processors ([[APU]] and [[ACI]]) and also the USB, PCI, IDE, etc, controllers[https://web.archive.org/web/20010418214256/http://www.ga-hardware.com:80/preview.cfm?id=NVIDIAMCP], [https://web.archive.org/web/20010410003338/http://www.nvnews.net/previews/mcpx/mcpx.shtml].&lt;br /&gt;
&lt;br /&gt;
The MCPX is also the home to the secret [[MCPX ROM]].&lt;br /&gt;
&lt;br /&gt;
And it's also the home of the famous PC Speaker Signal. &amp;lt;br \&amp;gt;&lt;br /&gt;
One just has to solder a Speaker on (MXPC pin L21) and it can be used just like on the PC.&amp;lt;br \&amp;gt;&lt;br /&gt;
For some test code see [https://github.com/0DaveX/beep/ https://github.com/0DaveX/beep/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:XboxWithPcSpkr.jpg]] &amp;lt;br \&amp;gt;&lt;br /&gt;
[[File:SolderPoints.jpg]]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Hard_Drive&amp;diff=6484</id>
		<title>Hard Drive</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Hard_Drive&amp;diff=6484"/>
				<updated>2018-08-23T21:22:36Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: /* Partitionstable extended with Device Object Names */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The original Xbox hard disk drive was 8 GB in size.  Later releases, 10 GB drives; however, only the first 8 GB of the drive was used. See [[Hardware Revisions]] for more information.&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;
{{FIXME|reason=Is this the same for all HDD sizes? could the number of free blocks in the savegame menu be used to calculate what kind of HDD you have?}}&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;
! Device Object (MS Retail Kernel)&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;
| N/A&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;
| \Device\Harddisk0\Partition3&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;
| \Device\Harddisk0\Partition4&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;
| \Device\Harddisk0\Partition5&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;
| \Device\Harddisk0\Partition2&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;
| \Device\Harddisk0\Partition1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
::::::::::::::::::::::''side note: CD/DVD Drive &amp;quot;D:&amp;quot; &amp;lt;=&amp;gt; &amp;quot;\Device\CdRom0&amp;quot;''&lt;br /&gt;
::::::::::::::::::::::''and usually: added Drive &amp;quot;F:&amp;quot; &amp;lt;=&amp;gt; &amp;quot;\Device\Harddisk0\Partition6&amp;quot;''&lt;br /&gt;
:::::::::::::::::::::::::&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''added Drive &amp;quot;G:&amp;quot; &amp;lt;=&amp;gt; &amp;quot;\Device\Harddisk0\Partition7&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
'''Debug/Devkit HDD:'''&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;
! Device Object (MS Retail Kernel)&lt;br /&gt;
|-&lt;br /&gt;
| [FIXME]&lt;br /&gt;
| [FIXME]&lt;br /&gt;
| [FIXME]&lt;br /&gt;
| [FIXME]&lt;br /&gt;
| [FIXME]&lt;br /&gt;
| [FIXME]&lt;br /&gt;
|-&lt;br /&gt;
|}&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;. append &amp;lt;code&amp;gt;status=progress&amp;lt;/code&amp;gt; to see the progress during copying if you run a recent distro, like so: &amp;lt;code&amp;gt;sudo dd if=/dev/sdb of=xbox_hdd.raw bs=512 status=progress&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>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Exploits&amp;diff=6374</id>
		<title>Exploits</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Exploits&amp;diff=6374"/>
				<updated>2018-03-04T04:08:51Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: /* Attack ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MCPX ==&lt;br /&gt;
&lt;br /&gt;
=== LDT (Hypertransport) bus tap ===&lt;br /&gt;
&lt;br /&gt;
See [http://www.xenatera.com/bunnie/proj/anatak/xboxmod.html#ldt bunnie's adventures hacking the Xbox].&lt;br /&gt;
&lt;br /&gt;
=== Visor hack ===&lt;br /&gt;
&lt;br /&gt;
Exploits incorrect rollover of memory address.&lt;br /&gt;
&lt;br /&gt;
=== MIST hack ===&lt;br /&gt;
&lt;br /&gt;
Exploits error in xcode interpreter security check.&lt;br /&gt;
There are at least 2 variations of this hack.&lt;br /&gt;
&lt;br /&gt;
=== A20M# hack ===&lt;br /&gt;
&lt;br /&gt;
Uses a legacy x86 feature.&lt;br /&gt;
&lt;br /&gt;
=== RC4 attack (MCPX 1.0 only) ===&lt;br /&gt;
&lt;br /&gt;
Microsoft uses the last bytes of the decrypted 2BL to check the integrity of the 2BL.&lt;br /&gt;
However, RC4 does not have any feedback which means changes in the 2BL will not reflect in the last couple of bytes which are checked.&lt;br /&gt;
As such, the 2BL can be freely modified, as long as the last couple of bytes still match what the MCPX ROM expects.&lt;br /&gt;
&lt;br /&gt;
This can be used to take over the 2BL entry point.&lt;br /&gt;
&lt;br /&gt;
When the attack happens, the MCPX ROM is still visible, making this a very powerful attack.&lt;br /&gt;
&lt;br /&gt;
''This attack is described by Michael Steil in his Google talk.''&lt;br /&gt;
&lt;br /&gt;
=== TEA attack (MCPX 1.1 only) ===&lt;br /&gt;
&lt;br /&gt;
TEA, which is only used in MCPX 1.1, can not be used as a hash in Davies-Meyer mode [http://www.tayloredge.com/reference/Mathematics/VRAndem.pdf][https://www.schneier.com/academic/paperfiles/paper-key-schedule.pdf]. And yet, Microsoft used it that way.&lt;br /&gt;
&lt;br /&gt;
The original attack uses the 5 bytes at 0xffffd400 (FBL entry point) which are &amp;lt;code&amp;gt;E9 83 01 00 00&amp;lt;/code&amp;gt;.&lt;br /&gt;
This is &amp;lt;code&amp;gt;jmp 0xffffd588&amp;lt;/code&amp;gt; (which is a jump within the flash region).&lt;br /&gt;
&lt;br /&gt;
When flipping the highest bit of the operand DWORD (at 0xffffd400, mind your endianess) this will become: &amp;lt;code&amp;gt;E9 83 01 80 00&amp;lt;/code&amp;gt;.&lt;br /&gt;
This is &amp;lt;code&amp;gt;jmp 0x7fd588&amp;lt;/code&amp;gt; (which is a jump into the RAM region).&lt;br /&gt;
For the attack to be succssful, the highest bit in the DWORD at 0xffffd404 also has to be flipped.&lt;br /&gt;
&lt;br /&gt;
The RAM can be controlled using the x-code command to write to RAM.&lt;br /&gt;
So the idea is to copy a program from Flash to RAM using x-codes.&lt;br /&gt;
Then the FBL / 2BL is modified to jump into said RAM region by flipping a bit of a jump operand (as described above).&lt;br /&gt;
The 2 bit flips will not change the hash of FBL / 2BL as TEA is broken.&lt;br /&gt;
&lt;br /&gt;
As such, the FBL verification will succeed, the MCPX ROM will hand control to the FBL which will then jump into the attacker controlled RAM.&lt;br /&gt;
&lt;br /&gt;
When the attack happens, the MCPX ROM is still visible, making this a very powerful attack.&lt;br /&gt;
&lt;br /&gt;
''The TEA algorithm and exploit are also described in more detail in Bunnnies book (Page 109 and Page 142).''&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
=== Audio hacks ===&lt;br /&gt;
=== Font hacks ===&lt;br /&gt;
&lt;br /&gt;
[http://archiv.sega-dc.de/phoenix.maxconsole.net/docs/berternie.inc.htm Analysis of &amp;quot;Bert &amp;amp; Ernie&amp;quot; font-exploit].&lt;br /&gt;
&lt;br /&gt;
==== Easter-egg exploit ====&lt;br /&gt;
&lt;br /&gt;
== Savegames ==&lt;br /&gt;
Savedgames can be used as an exploit method, but care must be taken for most games are verifying digital signatures of savedgames {{citation needed}} [http://bunniefoo.com/nostarch/HackingTheXbox_Free.pdf]&lt;br /&gt;
=== [[007: Agent Under Fire]] ===&lt;br /&gt;
=== [[Frogger Beyond]] ===&lt;br /&gt;
=== [[MechAssault]] ===&lt;br /&gt;
=== [[Tom Clancy's Splinter Cell]] ===&lt;br /&gt;
=== [[Tony Hawk's Pro Skater 4]] ===&lt;br /&gt;
Grimdoomer found a savedgame exloit and shared it on Discord and later with Rocky5 for his softmod installer.&lt;br /&gt;
[https://drive.google.com/file/d/0B9WVULxHOmNkQVBCMHMtVGhqVVU/view a video demonstrating the game trigger (custom skatepark)]&lt;br /&gt;
&lt;br /&gt;
''10-4-2017 it's just shell code I injected into the game save/ granted this save is slightly more complicated than the others and requires a small &amp;quot;loader&amp;quot; that is just a memcpy basically it's literally as simple as a buffer overflow...I just looked for null terminated strings and fuzzed them then when I got a crash I looked in teh xbe to figure out what was going on. yeah it's literally just a stack overflow'' - grimdoomer&lt;br /&gt;
&lt;br /&gt;
another website talking about his exploit.&lt;br /&gt;
[https://www.xbmc4xbox.org.uk/forum/viewtopic.php?t=7310 xbmc4xbox.org.uk]&lt;br /&gt;
&lt;br /&gt;
== Attack ideas ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Author || Description || Status&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Partial system reset using 0xCF9 I/O register&lt;br /&gt;
| Only crashes so far, mostly untested&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to find problems with the SMC reset chain. The SMC takes a couple of milliseconds to reset the system. Parts of the peripherals might stay alive for long enough. So chances (extremly unlikely) are, the peripherals could be programmed to do DMA where the DMA is only executed after the reboot.&lt;br /&gt;
| Untested&lt;br /&gt;
|-&lt;br /&gt;
| Unknown || JayFoxRox&lt;br /&gt;
| Resetting from wrong address. The errata for the CPU states that a warm-reset might occur from the wrong address.&lt;br /&gt;
| Concept phase, needs more research&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to access MCPX ROM through peripherals in the southbridge. If the address logic is broken, parts like the OHCI, APU or AC97 might be able to access it still.&lt;br /&gt;
|&lt;br /&gt;
* AC97: Lots of crashes / hangs. Sometimes crackling noise. Sometimes does not crash. Also can access some non-existing memory regions without any crashes. Data read from invalid addresses seemed to be 300 Hz square wave. While crashing the hardware output will have exponential falloff (measured on PCM line-out).&lt;br /&gt;
* APU: Untested&lt;br /&gt;
* OHCI: Untested&lt;br /&gt;
* Others: Untested&lt;br /&gt;
|-&lt;br /&gt;
| Dumping Kernel INIT || JayFoxRox&lt;br /&gt;
| INIT is free'd right before passing execution to the first XBE. Depending on what the XBE allocates, the INIT section might still be in memory when a dumper is run.&lt;br /&gt;
| Probably doesn't work. Would need the dumper to directly run after cold-boot. Softmods unfortunately reboot the Xbox and during this warm-boot the INIT section is (in at least most cases) lost.&lt;br /&gt;
|-&lt;br /&gt;
| Dumping Kernel INIT || DaveX || An extension to JayFoxRox dumping idea. Instead of running a dumper-XBE through a softmod, the softmod itself could do the dumping. This means creation of a custom softmod, just for dumping. This depends on the used softmod entry-point (font-explot, audio-exploit, ..) to gain execution as early as possible. This strategy might be slightly risky as harddisk contents have to be modified for the temporary softmod.&lt;br /&gt;
| WIP as of 2018-03-04&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | Homebrew entry point || rowspan=&amp;quot;13&amp;quot; | Community&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | Some movie DVDs contain default XBEs signed to run on original Xbox from DVD-R{{FIXME|reason=Add region / product codes and other DVDs you know of}}. If we can find an exploit in one of them (loaded files), we could possibly take over the entire system and run homebrew from DVD-R.&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars: Clone Wars - Volume Two'''&lt;br /&gt;
[[Battlefront II]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars: Episode III - Revenge of the Sith (Widescreen Edition)'''&lt;br /&gt;
[[Battlefront II]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars Trilogy (Widescreen Edition with Bonus Disc)'''&lt;br /&gt;
[[Battlefront]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars Trilogy DVD with Demo'''&lt;br /&gt;
[[Lego Star Wars 2]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Star Wars: Clone Wars - Volume One'''&lt;br /&gt;
[[Battlefront]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''The Chronicles of Riddick (Widescreen Unrated Director's Cut)'''&lt;br /&gt;
[[Chronicles of Riddick]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Doom (Unrated Widescreen Edition)'''&lt;br /&gt;
[[Doom 3]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Hulk (Special Edition)'''&lt;br /&gt;
[[Hulk]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''King Arthur - The Director's Cut (Widescreen Edition)'''&lt;br /&gt;
[[King Arthur]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Robots (Widescreen Edition)'''&lt;br /&gt;
[[Robots]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Van Helsing (Widescreen Edition)'''&lt;br /&gt;
[[Van Helsing]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|-&lt;br /&gt;
|'''Clone Wars Volume 1'''&lt;br /&gt;
[[Republic Commando]]&lt;br /&gt;
&lt;br /&gt;
Untested&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* [https://events.ccc.de/congress/2005/fahrplan/attachments/591-paper_xbox.pdf 17 Mistakes Microsoft Made in the Xbox Security System]&lt;br /&gt;
* [http://toogam.bespin.org/xboxmod/site/xbehacks.htm A list of some exploit implementations]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xtf&amp;diff=6218</id>
		<title>Xtf</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xtf&amp;diff=6218"/>
				<updated>2017-09-12T18:35:37Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: /* Dashboard fonts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xbox-dashboard-font-specimen.png|thumb|200px|Xbox Font Specimen]]&lt;br /&gt;
&lt;br /&gt;
XTF is a font file format used in the [[Dashboard]].&lt;br /&gt;
It became famous for being [[Exploits#Font hacks|exploited]].&lt;br /&gt;
Both fonts were also used for branding and promotional use.&lt;br /&gt;
&lt;br /&gt;
== Dashboard fonts ==&lt;br /&gt;
&lt;br /&gt;
The dashboard fonts were designed by [[Wikipedia:Steve Matteson|Steve Matteson]] of [[Wikipedia:Ascender Corporation|Ascdender Corporation]] for use on the Xbox. Matteson had already created many of Microsoft's [[Wikipedia:Microsoft Windows|Windows]] core fonts and would later create the [https://www.fonts.com/font/microsoft/convection Convection fonts used on the Xbox 360].&lt;br /&gt;
&lt;br /&gt;
Each font contains 7365 glyphs.&lt;br /&gt;
&lt;br /&gt;
=== Xbox.xtf ===&lt;br /&gt;
&lt;br /&gt;
A monospace font.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;[[File:Xbox-xtf.png|800px|thumb|Xbox.xtf from [[Dashboard]].]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XBox Book.xtf ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;[[File:XBox Book-xtf.png|800px|thumb|XBox Book.xtf from [[Dashboard]].]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
* 4 byte (magic)&lt;br /&gt;
* 4 byte (length prefix for following string)&lt;br /&gt;
* zero-terminated string with given buffer length (font-name)&lt;br /&gt;
* [https://msdn.microsoft.com/en-us/library/dd144956%28v=vs.85%29.aspx GLYPHSET] (List of supported glyphs)&lt;br /&gt;
* For each cGlyphsSupported:&lt;br /&gt;
** [https://msdn.microsoft.com/en-us/library/windows/desktop/dd374209(v=vs.85).aspx GLYPHMETRICSFLOAT] (Metrics for each glyph)&lt;br /&gt;
** 4 byte (Offset of glyph in file)&lt;br /&gt;
* For each GLYPHSET range&lt;br /&gt;
** For each glyph in this range (stored as a triangle strip)&lt;br /&gt;
*** 2 byte (Index count)&lt;br /&gt;
*** 2 byte (Vertex count)&lt;br /&gt;
*** For each index:&lt;br /&gt;
**** 2 byte (Vertex index)&lt;br /&gt;
*** For each vertex:&lt;br /&gt;
**** 4 byte float (X-coordinate)&lt;br /&gt;
**** 4 byte float (Y-coordinate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Confirm these findings and format them better}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/JayFoxRox/xbox-tools/tree/master/xtf-converter A tool to convert XTF fonts to SVG fonts]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Memory_Unit&amp;diff=6211</id>
		<title>Xbox Memory Unit</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Memory_Unit&amp;diff=6211"/>
				<updated>2017-09-11T23:02:25Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The memory units are typically formatted with [[FATX]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Product name !! VID !! PID !! Capacity !! Notes&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Microsoft Corp. Xbox Memory Unit (8MB) || 0x045e || 0x0280 || 8MB || Official one &lt;br /&gt;
|-&lt;br /&gt;
| ThrustMaster, Inc. || 0x044f || 0x0f0c || 8MB || Green logo Xbox and white &amp;quot;Trustmaster&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unlicensed Xbox Memory Units ==&lt;br /&gt;
Some unlicensed Memory Units where made. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Product name !! VID !! PID !! Capacity !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Weltrend Semiconductor XBOX Xploder || 0x040b || 0x6520 || 8MB || Green sticker &amp;quot;Gamesaves&amp;quot; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compatible USB sticks ==&lt;br /&gt;
&lt;br /&gt;
Aside from the official licensed Memory Units, some standard USB storage devices can be reformatted as Xbox Memory Unit. (It is rumored that the capacity should not exceed 4GB)&lt;br /&gt;
However, not all devices are compatible, so the following table gives a list of known devices:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Product name !! VID !! PID !! Capacity !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|BESTRUNNER 256MB Speicherstick || 0xABCD || 0x1234 || 256MB ||  &lt;br /&gt;
|-&lt;br /&gt;
|USB Mass Storage Device || 0x058F || 0x9381 || 64MB || Generic Mass Storage Device&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [http://imgur.com/a/8QmDA Thrustmaster XBOX Memory Unit images by DarkGabz]&lt;br /&gt;
* [http://imgur.com/gallery/M0PZ6 3 XBOX memory units images by CodeAsm]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Memory_Unit&amp;diff=6206</id>
		<title>Xbox Memory Unit</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Memory_Unit&amp;diff=6206"/>
				<updated>2017-09-07T14:41:48Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The memory units are typically formatted with [[FATX]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Product name !! VID !! PID !! Capacity !! Notes&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Microsoft Corp. Xbox Memory Unit (8MB) || 0x045e || 0x0280 || 8MB || Official one &lt;br /&gt;
|-&lt;br /&gt;
| ThrustMaster, Inc. || 0x044f || 0x0f0c || 8MB || Green logo Xbox and white &amp;quot;Trustmaster&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unlicensed Xbox Memory Units ==&lt;br /&gt;
Some unlicensed Memory Units where made. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Product name !! VID !! PID !! Capacity !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Weltrend Semiconductor XBOX Xploder || 0x040b || 0x6520 || 8MB || Green sticker &amp;quot;Gamesaves&amp;quot; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compatible USB sticks ==&lt;br /&gt;
&lt;br /&gt;
Aside from the official licensed Memory Units, some standard USB storage devices can be reformatted as Xbox Memory Unit.&lt;br /&gt;
However, not all devices are compatible, so the following table gives a list of known devices:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Product name !! VID !! PID !! Capacity !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|BESTRUNNER 256MB Speicherstick || 0xABCD || 0x1234 || 256MB ||  &lt;br /&gt;
|}&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [http://imgur.com/a/8QmDA Thrustmaster XBOX Memory Unit images by DarkGabz]&lt;br /&gt;
* [http://imgur.com/gallery/M0PZ6 3 XBOX memory units images by CodeAsm]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Exploits&amp;diff=6197</id>
		<title>Exploits</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Exploits&amp;diff=6197"/>
				<updated>2017-09-05T03:27:21Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: /* Attack ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MCPX ==&lt;br /&gt;
&lt;br /&gt;
=== LDT (Hypertransport) bus tap ===&lt;br /&gt;
&lt;br /&gt;
See [http://www.xenatera.com/bunnie/proj/anatak/xboxmod.html#ldt bunnie's adventures hacking the Xbox].&lt;br /&gt;
&lt;br /&gt;
=== Visor hack ===&lt;br /&gt;
&lt;br /&gt;
Exploits incorrect rollover of memory address.&lt;br /&gt;
&lt;br /&gt;
=== MIST hack ===&lt;br /&gt;
&lt;br /&gt;
Exploits error in xcode interpreter security check.&lt;br /&gt;
There are at least 2 variations of this hack.&lt;br /&gt;
&lt;br /&gt;
=== A20M# hack ===&lt;br /&gt;
&lt;br /&gt;
Uses a legacy x86 feature.&lt;br /&gt;
&lt;br /&gt;
=== RC4 attack (MCPX 1.0 only) ===&lt;br /&gt;
&lt;br /&gt;
Microsoft uses the last bytes of the decrypted 2BL to check the integrity of the 2BL.&lt;br /&gt;
However, RC4 does not have any feedback which means changes in the 2BL will not reflect in the last couple of bytes which are checked.&lt;br /&gt;
As such, the 2BL can be freely modified, as long as the last couple of bytes still match what the MCPX ROM expects.&lt;br /&gt;
&lt;br /&gt;
This can be used to take over the 2BL entry point.&lt;br /&gt;
&lt;br /&gt;
When the attack happens, the MCPX ROM is still visible, making this a very powerful attack.&lt;br /&gt;
&lt;br /&gt;
''This attack is described by Michael Steil in his Google talk.''&lt;br /&gt;
&lt;br /&gt;
=== TEA attack (MCPX 1.1 only) ===&lt;br /&gt;
&lt;br /&gt;
TEA, which is only used in MCPX 1.1, can not be used as a hash in Davies-Meyer mode [http://www.tayloredge.com/reference/Mathematics/VRAndem.pdf][https://www.schneier.com/academic/paperfiles/paper-key-schedule.pdf]. And yet, Microsoft used it that way.&lt;br /&gt;
&lt;br /&gt;
The original attack uses the 5 bytes at 0xffffd400 (FBL entry point) which are &amp;lt;code&amp;gt;E9 83 01 00 00&amp;lt;/code&amp;gt;.&lt;br /&gt;
This is &amp;lt;code&amp;gt;jmp 0xffffd588&amp;lt;/code&amp;gt; (which is a jump within the flash region).&lt;br /&gt;
&lt;br /&gt;
When flipping the highest bit of the operand DWORD (at 0xffffd400, mind your endianess) this will become: &amp;lt;code&amp;gt;E9 83 01 80 00&amp;lt;/code&amp;gt;.&lt;br /&gt;
This is &amp;lt;code&amp;gt;jmp 0x7fd588&amp;lt;/code&amp;gt; (which is a jump into the RAM region).&lt;br /&gt;
For the attack to be succssful, the highest bit in the DWORD at 0xffffd404 also has to be flipped.&lt;br /&gt;
&lt;br /&gt;
The RAM can be controlled using the x-code command to write to RAM.&lt;br /&gt;
So the idea is to copy a program from Flash to RAM using x-codes.&lt;br /&gt;
Then the FBL / 2BL is modified to jump into said RAM region by flipping a bit of a jump operand (as described above).&lt;br /&gt;
The 2 bit flips will not change the hash of FBL / 2BL as TEA is broken.&lt;br /&gt;
&lt;br /&gt;
As such, the FBL verification will succeed, the MCPX ROM will hand control to the FBL which will then jump into the attacker controlled RAM.&lt;br /&gt;
&lt;br /&gt;
When the attack happens, the MCPX ROM is still visible, making this a very powerful attack.&lt;br /&gt;
&lt;br /&gt;
''The TEA algorithm and exploit are also described in more detail in Bunnnies book (Page 109 and Page 142).''&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
=== Audio hacks ===&lt;br /&gt;
=== Font hacks ===&lt;br /&gt;
&lt;br /&gt;
[http://archiv.sega-dc.de/phoenix.maxconsole.net/docs/berternie.inc.htm Analysis of &amp;quot;Bert &amp;amp; Ernie&amp;quot; font-exploit].&lt;br /&gt;
&lt;br /&gt;
==== Easter-egg exploit ====&lt;br /&gt;
&lt;br /&gt;
== Savegames ==&lt;br /&gt;
Savedgames can be used as an exploit method, but care must be taken for most games are verifying digital signatures of savedgames {{citation needed}} [http://bunniefoo.com/nostarch/HackingTheXbox_Free.pdf]&lt;br /&gt;
=== [[007: Agent Under Fire]] ===&lt;br /&gt;
=== [[Frogger Beyond]] ===&lt;br /&gt;
=== [[MechAssault]] ===&lt;br /&gt;
=== [[Tom Clancy's Splinter Cell]] ===&lt;br /&gt;
=== [[Tony Hawk's Pro Skater 4]] ===&lt;br /&gt;
Grimdoomer found a savedgame exloit and shared it on Discord and later with Rocky5 for his softmod installer.&lt;br /&gt;
[https://drive.google.com/file/d/0B9WVULxHOmNkQVBCMHMtVGhqVVU/view a video demonstrating the game trigger (custom skatepark)]&lt;br /&gt;
&lt;br /&gt;
''10-4-2017 it's just shell code I injected into the game save/ granted this save is slightly more complicated than the others and requires a small &amp;quot;loader&amp;quot; that is just a memcpy basically it's literally as simple as a buffer overflow...I just looked for null terminated strings and fuzzed them then when I got a crash I looked in teh xbe to figure out what was going on. yeah it's literally just a stack overflow'' - grimdoomer&lt;br /&gt;
&lt;br /&gt;
another website talking about his exploit.&lt;br /&gt;
[https://www.xbmc4xbox.org.uk/forum/viewtopic.php?t=7310 xbmc4xbox.org.uk]&lt;br /&gt;
&lt;br /&gt;
== Attack ideas ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Purpose || Author || Description || Status&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Partial system reset using 0xCF9 I/O register&lt;br /&gt;
| Only crashes so far, mostly untested&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to find problems with the SMC reset chain. The SMC takes a couple of milliseconds to reset the system. Parts of the peripherals might stay alive for long enough. So chances (extremly unlikely) are, the peripherals could be programmed to do DMA where the DMA is only executed after the reboot.&lt;br /&gt;
| Untested&lt;br /&gt;
|-&lt;br /&gt;
| Unknown || JayFoxRox&lt;br /&gt;
| Resetting from wrong address. The errata for the CPU states that a warm-reset might occur from the wrong address.&lt;br /&gt;
| Concept phase, needs more research&lt;br /&gt;
|-&lt;br /&gt;
| Dumping the MCPX ROM || JayFoxRox&lt;br /&gt;
| Trying to access MCPX ROM through peripherals in the southbridge. If the address logic is broken, parts like the OHCI, APU or AC97 might be able to access it still.&lt;br /&gt;
|&lt;br /&gt;
* AC97: Lots of crashes / hangs. Sometimes crackling noise. Sometimes does not crash. Also can access some non-existing memory regions without any crashes. Data read from invalid addresses seemed to be 300 Hz square wave. While crashing the hardware output will have exponential falloff (measured on PCM line-out).&lt;br /&gt;
* APU: Untested&lt;br /&gt;
* OHCI: Untested&lt;br /&gt;
* Others: Untested&lt;br /&gt;
|-&lt;br /&gt;
| Dumping Kernel INIT || JayFoxRox&lt;br /&gt;
| INIT is free'd right before passing execution to the first XBE. Depending on what the XBE allocates, the INIT section might still be in memory when a dumper is run.&lt;br /&gt;
| Probably doesn't work. Would need the dumper to directly run after cold-boot. Softmods unfortunately reboot the Xbox and during this warm-boot the INIT section is likely to be lost. However, this was not tested in praxis.&lt;br /&gt;
|-&lt;br /&gt;
| Dumping Kernel INIT || DaveX || An extension to JayFoxRox dumping idea. Instead of running a dumper-XBE through a softmod, the softmod itself could do the dumping. This means creation of a custom softmod, just for dumping. This depends on the used softmod entry-point (font-explot, audio-exploit, ..) to gain execution as early as possible. This strategy might be risky as harddisk contents have to be modified for the temporary softmod.&lt;br /&gt;
| WIP as of 2017-09-05&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* [https://events.ccc.de/congress/2005/fahrplan/attachments/591-paper_xbox.pdf 17 Mistakes Microsoft Made in the Xbox Security System]&lt;br /&gt;
* [http://toogam.bespin.org/xboxmod/site/xbehacks.htm A list of some exploit implementations]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_DVD_Movie_Playback_Kit&amp;diff=6040</id>
		<title>Xbox DVD Movie Playback Kit</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_DVD_Movie_Playback_Kit&amp;diff=6040"/>
				<updated>2017-08-27T04:00:19Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xbox-Remote-and-Receiver.jpg|thumb|200px|Remote and Receiver]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The DVD Movie Playback Kit contains 2 parts: A remote and a dongle for the Xbox.&lt;br /&gt;
&lt;br /&gt;
== Remote Control ==&lt;br /&gt;
&lt;br /&gt;
== Dongle ==&lt;br /&gt;
&lt;br /&gt;
The dongle contains a ROM with an XBE which provides some functions for the DVD playback application. However, the XBE is not standalone.&lt;br /&gt;
&lt;br /&gt;
Why would they not just put this little &amp;lt; 512kiB library on the harddisk? Why another ROM which contains the program?&lt;br /&gt;
One could think it is to allow them to upgrade the application easily, but the real reason seems to be different: licensing. As the label on the back notes: &amp;quot;Made under license from Dolby Laboratories&amp;quot;. By including the software in the DVD Remote kit, they don't have to pay Dolby for every Xbox sold, but just for every DVD Remote kit sold. This allows them to keep the cost of the Xbox down.&lt;br /&gt;
&lt;br /&gt;
Additionally the dongle contains an IR receiver to receive commands from the Remote control.&lt;br /&gt;
&lt;br /&gt;
=== Known versions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;!-- Version is: &amp;quot;%X.%X&amp;quot; % (version &amp;gt;&amp;gt; 8, version &amp;amp; 0xFF) --&amp;gt;&lt;br /&gt;
! Part No.      !! Manufactured in !! Version !! DVD Region !! ROM Size     !! ROM SHA1                                              !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| X08-25402     || Indonesia       || 1.1     || 2          || 229790 Bytes || &amp;lt;code&amp;gt;70d4b5f8e073b05610fba9e9617d7356196b61ff&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| X08-25402-002     || Indonesia       ||      ||           ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| X08-25387     || Indonesia       ||      ||           ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| X08-25387-002 || Indonesia       || 1.1     || 1          || 229790 Bytes || &amp;lt;code&amp;gt;73814aa736d83d636380f5c6b1c291441b35354d&amp;lt;/code&amp;gt; || Sticker: &amp;quot;2341P&amp;quot; on PCB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Protocol ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Partially documented in JayFoxRox/xbox-tools on github}}&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
&lt;br /&gt;
Different versions of the dongle seem to use different hardware internally.&lt;br /&gt;
&lt;br /&gt;
==== X08-25387-002 (PCB: &amp;quot;X01469-100&amp;quot;) ====&lt;br /&gt;
&lt;br /&gt;
* U1 ATMEL AT43USB352M-AC{{FIXME|reason=Can't find datasheet.. only for AT43USB351M-AC and AT43USB353M-AC; both of which have various differences}}&lt;br /&gt;
* U2 TSOP-1556&lt;br /&gt;
* U3 X393121C{{FIXME|reason=What is this? a ROM? how large?}}&lt;br /&gt;
&lt;br /&gt;
==== X08-25387 (PCB: &amp;quot;IR DONGLE REV B&amp;quot;) ====&lt;br /&gt;
[[File:X08-25387-Sticker.jpeg|thumb|200px|X08-25387 Rev B Sticker]]&lt;br /&gt;
[[File:IR_DONGLEREVB-FRNT.jpeg|thumb|200px|Front PCB of X08-25387]]&lt;br /&gt;
&lt;br /&gt;
* U3 MX23C4000TC-10&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Didn't get rear components photographed yet}}&lt;br /&gt;
&lt;br /&gt;
==== Unknown version (PCB: &amp;quot;REV C.&amp;quot;) ====&lt;br /&gt;
&lt;br /&gt;
[[File:Xbox-linux-dvd-dongle-front.jpg|thumb|200px|Frontside]]&lt;br /&gt;
[[File:Xbox-linux-dvd-dongle-back.jpg|thumb|200px|Backside]]&lt;br /&gt;
&lt;br /&gt;
* U1 92163 [https://web.archive.org/web/20100617020513/http://www.st.com/ STMicroelectronics] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.st.com/stonline/books/pdf/docs/5521.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This big square IC on the backside is the microcontroller. STMicroelectronics describes it as &amp;quot;8/16-BIT FULL SPEED USB MCU FOR COMPOSITE DEVICES WITH 16 ENDPOINTS, 20K ROM, 2K RAM, I 2 C, SCI, &amp;amp;amp; MFT&amp;quot;. Since the program resides inside in its ROM, it is almost impossible to extract the program from inside.&lt;br /&gt;
&lt;br /&gt;
* U2 TSOP-1556 [https://web.archive.org/web/20100617020513/http://www.vishay.com/ Vishay Telefunken] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.vishay.com/docs/82029/82029.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This black box on the middle of the frontside is an integrated IR receiver. It filters the received infrared pulses and demodulates them. Its filter frequency is 56kHz, while 38kHz is standard for most remote controls. Therefore, chances are few other remotes will work with the Xbox receiver.&lt;br /&gt;
&lt;br /&gt;
* U3 MX23C4000TC-10 [https://web.archive.org/web/20100617020513/http://www.macronix.com/ Macronix] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.macronix.com/QuickPlace/hq/PageLibrary48256D9D002BA613.nsf/h_6057FA6682A90C3948256DCE0052D2D3/67DCB124F1BE4E7D48256DC50039AC31/$File/MX23C4000-4.2.pdf/?OpenElement Datasheet]&amp;amp;gt;&lt;br /&gt;
: This wide TSOP IC on the frontside could be the most interesting of all. It is a 4MBit mask ROM.&lt;br /&gt;
&lt;br /&gt;
* U4 HC574 [https://web.archive.org/web/20100617020513/http://www.ti.com/ Texas Instruments] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://focus.ti.com/lit/ds/symlink/sn74hc574.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This 20-pin standard logic IC is an octal D-flipflop, which splits the databus from the 92163 to 8 adress bits. This technique is very well known from the 8051 and other microcontrollers.&lt;br /&gt;
&lt;br /&gt;
=== Hacking ===&lt;br /&gt;
&lt;br /&gt;
As the dashboard presumably downloads the code from the ROM into the memory of the Xbox, this could be a hardware hack requiring no hardware modifications. The XBE loader for the DVD image is different from the usual XBE loader. However, the XBE is still signed and checked for security.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://ibb.co/album/cmr5rF Pictures of X08-25387-002 including internals]&lt;br /&gt;
* [https://github.com/JayFoxRox/xbox-tools/tree/master/dump-dvd-kit Tool to dump DVD Dongle ROM]&lt;br /&gt;
* [https://web.archive.org/web/20100617020513/http://www.xbox-linux.org/wiki/DVD-IR_Internals DVD-IR Internals]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:Xbox-Remote-and-Receiver.jpg&amp;diff=6039</id>
		<title>File:Xbox-Remote-and-Receiver.jpg</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:Xbox-Remote-and-Receiver.jpg&amp;diff=6039"/>
				<updated>2017-08-27T03:58:54Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: Author: &amp;quot;Evan Amos Vanamo Media&amp;quot;
Copyright holder: &amp;quot;Public Domain&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: &amp;quot;Evan Amos Vanamo Media&amp;quot;&lt;br /&gt;
Copyright holder: &amp;quot;Public Domain&amp;quot;&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:Xbox_Live_Communicator.png&amp;diff=5978</id>
		<title>File:Xbox Live Communicator.png</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:Xbox_Live_Communicator.png&amp;diff=5978"/>
				<updated>2017-08-22T01:28:53Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: DaveX uploaded a new version of File:Xbox Live Communicator.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox Live Communicator looks roughly like this.&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:Xbox_Live_Communicator.png&amp;diff=5977</id>
		<title>File:Xbox Live Communicator.png</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:Xbox_Live_Communicator.png&amp;diff=5977"/>
				<updated>2017-08-22T01:28:13Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: DaveX uploaded a new version of File:Xbox Live Communicator.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox Live Communicator looks roughly like this.&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:Xbox_Live_Communicator.png&amp;diff=5976</id>
		<title>File:Xbox Live Communicator.png</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:Xbox_Live_Communicator.png&amp;diff=5976"/>
				<updated>2017-08-22T01:26:37Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: DaveX uploaded a new version of File:Xbox Live Communicator.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox Live Communicator looks roughly like this.&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Live_Communicator&amp;diff=5975</id>
		<title>Xbox Live Communicator</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Live_Communicator&amp;diff=5975"/>
				<updated>2017-08-22T01:21:59Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: added pic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox Live Communicator is the headset which is used for Xbox Live.  &lt;br /&gt;
[[File:Xbox_Live_Communicator.png|thumb|200px|Headset / Xbox Live Communicator]]&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 006: ID 045e:0283 Microsoft Corp. Xbox Communicator&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0283 Xbox Communicator&lt;br /&gt;
  bcdDevice            1.58&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           45&lt;br /&gt;
    bNumInterfaces          2&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass       120 &lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 9&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x04  EP 4 OUT&lt;br /&gt;
        bmAttributes            5&lt;br /&gt;
          Transfer Type            Isochronous&lt;br /&gt;
          Synch Type               Asynchronous&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0030  1x 48 bytes&lt;br /&gt;
        bInterval               1&lt;br /&gt;
        bRefresh                0&lt;br /&gt;
        bSynchAddress           0&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        1&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass       120 &lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 9&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x85  EP 5 IN&lt;br /&gt;
        bmAttributes            5&lt;br /&gt;
          Transfer Type            Isochronous&lt;br /&gt;
          Synch Type               Asynchronous&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0030  1x 48 bytes&lt;br /&gt;
        bInterval               1&lt;br /&gt;
        bRefresh                0&lt;br /&gt;
        bSynchAddress           0&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Microphone ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Speaker ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:Xbox_Live_Communicator.png&amp;diff=5974</id>
		<title>File:Xbox Live Communicator.png</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:Xbox_Live_Communicator.png&amp;diff=5974"/>
				<updated>2017-08-22T01:18:34Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: The Xbox Live Communicator looks roughly like this.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox Live Communicator looks roughly like this.&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Template:Unknown&amp;diff=5890</id>
		<title>Template:Unknown</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Template:Unknown&amp;diff=5890"/>
				<updated>2017-07-16T13:12:08Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;/noinclude&amp;gt;style=&amp;quot;background:#CFCFCF;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}&amp;quot; class=&amp;quot;table-yes&amp;quot;|{{{1|Unknown}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Emulators&amp;diff=5874</id>
		<title>Emulators</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Emulators&amp;diff=5874"/>
				<updated>2017-07-13T15:22:31Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: &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;
|{{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/Linux/Mac/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;
|{{Maintained}}&lt;br /&gt;
|HLE&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;
|At the time of writing Cxbx-Reloaded is almost purely HLE. LLE GPU emulation is planned, but currently not implemented.&lt;br /&gt;
|-&lt;br /&gt;
|{{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;
|{{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;
|{{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;
|Mac&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;
|&lt;br /&gt;
|LoveMHz&lt;br /&gt;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{Dead}}&lt;br /&gt;
|HLE&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[http://ngemu.com/forums/.65/ Xeon]&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;
|[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;
|{{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;
|{{Maintained}}&lt;br /&gt;
|LLE&lt;br /&gt;
|{{Yes}}&lt;br /&gt;
|[http://mamedev.org/ MAME]&lt;br /&gt;
|&lt;br /&gt;
|MAME Team&lt;br /&gt;
|Windows/Linux/Mac/Others&lt;br /&gt;
|&lt;br /&gt;
|Focus seems to be on Chihiro emulation. Does Xbox (non-Chihiro) emulation exist yet?{{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
|{{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;
|Windows&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{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;
|{{Dead}}&lt;br /&gt;
|LLE/HLE Hybrid&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[[Xbox 360 Backward Compatibility]]&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;
|{{Maintained}}&lt;br /&gt;
|LLE/HLE Hybrid{{citation needed}}&lt;br /&gt;
|{{No}}&lt;br /&gt;
|[[Xbox One Backward 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;
== 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>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Template:Unknown&amp;diff=5870</id>
		<title>Template:Unknown</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Template:Unknown&amp;diff=5870"/>
				<updated>2017-07-13T15:20:25Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: Created page with &amp;quot;&amp;lt;noinclude&amp;gt;{| class=&amp;quot;wikitable&amp;quot; |- |&amp;lt;/noinclude&amp;gt;style=&amp;quot;background:#CFCFCF;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}&amp;quot; class=&amp;quot;table-yes&amp;quot;|{{{1|&amp;amp;#x2714; Unk...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;/noinclude&amp;gt;style=&amp;quot;background:#CFCFCF;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}&amp;quot; class=&amp;quot;table-yes&amp;quot;|{{{1|&amp;amp;#x2714; Unknown}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Azurik:_Rise_of_Perathia&amp;diff=5769</id>
		<title>Azurik: Rise of Perathia</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Azurik:_Rise_of_Perathia&amp;diff=5769"/>
				<updated>2017-06-27T03:17:10Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: image uploaded&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Game}}&lt;br /&gt;
=== Known tricky behaviour ===&lt;br /&gt;
&lt;br /&gt;
==== Skinning code / Shader rounding mode ====&lt;br /&gt;
&lt;br /&gt;
This game depends on correct GPU rounding. If an emulator suffers from issues with non-exact rounding in the shaders which do the skinning / skeletal animation the character models will be very broken.&lt;br /&gt;
&lt;br /&gt;
[[File:Azurik--Rise-of-Perathia--bugged.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IIRC Code is like:&lt;br /&gt;
&lt;br /&gt;
 A0 = c[113].x + c[113].z = 18&lt;br /&gt;
 *do stuff with c[96+A0] to c[98+A0]*&lt;br /&gt;
 &lt;br /&gt;
 A0 = c[113].x + c[113].z = 21&lt;br /&gt;
 *do stuff with c[96+A0] to c[98+A0]* &lt;br /&gt;
 &lt;br /&gt;
 A0 = c[113].y * v2&lt;br /&gt;
 *do stuff with c[96+A0] to c[98+A0]*&lt;br /&gt;
 &lt;br /&gt;
 c[113] is vec4(15, 765, 3, 0). 765 = 3*255.&lt;br /&gt;
 v2 is GL_UNSIGNED_BYTE, normalized =&amp;gt; v2 = raw/255.&lt;br /&gt;
 A0 = 765 * raw/255 = 3*raw.&lt;br /&gt;
&lt;br /&gt;
This should all be working, but it's not. [[NV2A/Vertex Shader]] does round-to-zero. Behaviour for GLSL and other modern graphic APIs is undefined..&lt;br /&gt;
To work around this rounding issue &amp;lt;code&amp;gt;A0 += 1.0/255.0&amp;lt;/code&amp;gt; can be used as a temporary hack&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=File:Azurik--Rise-of-Perathia--bugged.png&amp;diff=5768</id>
		<title>File:Azurik--Rise-of-Perathia--bugged.png</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=File:Azurik--Rise-of-Perathia--bugged.png&amp;diff=5768"/>
				<updated>2017-06-27T03:11:34Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: GPU emu non-exact rounding issues e.g. in Azurik: Rise of Perathia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GPU emu non-exact rounding issues e.g. in Azurik: Rise of Perathia&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=APU&amp;diff=5767</id>
		<title>APU</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=APU&amp;diff=5767"/>
				<updated>2017-06-27T03:04:51Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: /* Modifications for Boot Animation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MCPX]] contains an APU (Audio Processing Unit).&lt;br /&gt;
&lt;br /&gt;
* SSL = Stream Segment List&lt;br /&gt;
* SGE = Scatter Gather Entry&lt;br /&gt;
* PRD = Physical Resource Descriptor (Same thing as SGE?!)&lt;br /&gt;
&lt;br /&gt;
== Voice Processor (VP) ==&lt;br /&gt;
&lt;br /&gt;
A powerful voice processor. There can be up to 256 voices{{citation needed}} and 64{{citation needed}} of those can be 3D.&lt;br /&gt;
&lt;br /&gt;
Per-voice settings:&lt;br /&gt;
* Input type (8bit, 16bit, 24bit, ADPCM)&lt;br /&gt;
* [[wikipedia:Head-related transfer function|Head-related transfer function]] (HRTF)&lt;br /&gt;
* [[wikipedia:Low-frequency oscillation|Low-frequency oscillation]] (LFO)&lt;br /&gt;
* Pitch&lt;br /&gt;
* 2x Pitch (?) envelope&lt;br /&gt;
* 2x LFO (?) envelope&lt;br /&gt;
* 8 target bins, each with a custom volume for this voice&lt;br /&gt;
&lt;br /&gt;
There are 32 bins which these voices will be mixed into.&lt;br /&gt;
&lt;br /&gt;
=== Related APU memory ===&lt;br /&gt;
&lt;br /&gt;
* VPV = VP Voices&lt;br /&gt;
* VPHT = VP HRTF Target&lt;br /&gt;
* VPHC = VP HRTF Current&lt;br /&gt;
* VPSGE = VP SGEs&lt;br /&gt;
* VPSSL = VP SSLs&lt;br /&gt;
&lt;br /&gt;
=== Voice lists ===&lt;br /&gt;
&lt;br /&gt;
The voices are kept in a single-linked list. There are 3 voice lists:&lt;br /&gt;
&lt;br /&gt;
* 2D&lt;br /&gt;
* 3D&lt;br /&gt;
* MP (Multipass?)&lt;br /&gt;
&lt;br /&gt;
=== Voice structure ===&lt;br /&gt;
&lt;br /&gt;
This is 0x80 bytes&lt;br /&gt;
&lt;br /&gt;
==== Pitch calculation ====&lt;br /&gt;
&lt;br /&gt;
The 16 bit signed pitch value (''p'') can be converted to and from a unsigned frequency in Hz (''f'') using the following formulas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
p = 4096 * log2(f / 48000)&lt;br /&gt;
f = pow2(p / 4096) * 48000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operation ===&lt;br /&gt;
&lt;br /&gt;
Voices are stored in VPV.&lt;br /&gt;
Input data (from the CPU) is loaded using VPSGE.&lt;br /&gt;
Voices are then processed and written to the GP MIXBUF.&lt;br /&gt;
&lt;br /&gt;
== Global Processor (GP) ==&lt;br /&gt;
&lt;br /&gt;
The GP runs all enabled sound effects on the voice bins.&lt;br /&gt;
&lt;br /&gt;
The GP DSP seems to run at 160 MHz&lt;br /&gt;
&lt;br /&gt;
=== MIXBUF ===&lt;br /&gt;
&lt;br /&gt;
The MIXBUF is a 0x400 word (24-Bit, stored as 32-Bit) section. It is split into 32 * 0x20 words.&lt;br /&gt;
Each 0x20 word block represents one of the 32 voice bins of the VP.&lt;br /&gt;
The 0x20 words are 24-Bit PCM mono samples to be played back at 48kHz. The duration of each frame is hence 0.{{overline|6}}ms.&lt;br /&gt;
&lt;br /&gt;
=== Memory map ===&lt;br /&gt;
&lt;br /&gt;
=== Related APU memory ===&lt;br /&gt;
&lt;br /&gt;
* GPS = GP Scratch (?)&lt;br /&gt;
* GPF = GP FIFO&lt;br /&gt;
&lt;br /&gt;
== Encode Processor (EP) ==&lt;br /&gt;
&lt;br /&gt;
The EP encodes the final AC3 stream for SPDIF. {{FIXME|reason=It might do more than just that; what does it do in analog mode for example?}}&lt;br /&gt;
It is not used during the [[Boot Animation]].&lt;br /&gt;
&lt;br /&gt;
=== Memory map ===&lt;br /&gt;
&lt;br /&gt;
=== Related APU memory ===&lt;br /&gt;
&lt;br /&gt;
* EPS = EP Scratch (?)&lt;br /&gt;
* EPF = EP FIFO&lt;br /&gt;
&lt;br /&gt;
== Usage in DirectSound ==&lt;br /&gt;
&lt;br /&gt;
''This topic deserves it's own article{{FIXME}}''&lt;br /&gt;
&lt;br /&gt;
The bins are used {{FIXME|reason=How?}}&lt;br /&gt;
DirectSound allows to load custom GP DSP code for filter / effects.&lt;br /&gt;
{{FIXME|reaon=Will GP DSP automatically download code or is code pushed to it?}}&lt;br /&gt;
The GP waits for the frame interrupt which signals that MIXBUF data is available. It then goes through a filter chain.&lt;br /&gt;
At the end of the chain, the GP DSP will verify that the execution didn't take longer than the frame duration.&lt;br /&gt;
&lt;br /&gt;
The GP will then issue 6 DMA requests to output the processed frames to a ringbuffer in scratch space.&lt;br /&gt;
The frameformat will be the same format as the GP MIXBUF format (also 0x20 words per channel).&lt;br /&gt;
Each ringbuffer is 0x200 words and therefore holds the last 16 frames.&lt;br /&gt;
Therefore, the ringbuffer region is 6 * 0x800 Bytes = 0x3000 Bytes in physical memory.&lt;br /&gt;
&lt;br /&gt;
The order of the channels in the ringbuffer is (also DMA order):&lt;br /&gt;
&lt;br /&gt;
* Front Left&lt;br /&gt;
* Center{{citation needed}}&lt;br /&gt;
* Front Right&lt;br /&gt;
* Rear Left{{citation needed}}&lt;br /&gt;
* Rear Right{{citation needed}}&lt;br /&gt;
* [[Wikipedia:Low-frequency effects|Low-frequency effects]] (LFE){{citation needed}}&lt;br /&gt;
&lt;br /&gt;
The EP maps the same data to its own scratch space. It is assumed that it will DMA this region to its own internal memory.&lt;br /&gt;
The EP then AC3 encodes the audio data{{citation needed}} and writes it to the EP FIFO memory{{FIXME|How does this happen? DMA?}}.&lt;br /&gt;
{{FIXME|reason=When does this happen and what happens to stereo? headphones? mono?}}&lt;br /&gt;
The data is then send to the ACI AC97 using EP FIFO channels 0 (PCM) and 1 (SPDIF){{citation needed}}.&lt;br /&gt;
&lt;br /&gt;
=== Modifications for Boot Animation ===&lt;br /&gt;
&lt;br /&gt;
During the [[Boot Animation]] a different version of DirectSound is used.&lt;br /&gt;
The EP is disabled in this case.&lt;br /&gt;
The data is send to the ACI AC97 using GP FIFO channel 0 (PCM).&lt;br /&gt;
There is no AC3 / SPDIF during the boot animation[http://www.gamasutra.com/blogs/BrianSchmidt/20111117/90625/Designing_the_Boot_Sound_for_the_Original_Xbox.php]{{citation needed|reason=Link to brians gamasutra stuff}}.&lt;br /&gt;
&lt;br /&gt;
== Related ==&lt;br /&gt;
&lt;br /&gt;
* [[ACI]]&lt;br /&gt;
* [[DSP]]&lt;br /&gt;
* [[Xbox ADPCM]]&lt;br /&gt;
* [https://github.com/JayFoxRox/xbox-tools/blob/master/python-scripts/apu.py Script to inspect APU registers and voice buffers]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=NForce&amp;diff=5731</id>
		<title>NForce</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=NForce&amp;diff=5731"/>
				<updated>2017-06-23T04:59:42Z</updated>
		
		<summary type="html">&lt;p&gt;DaveX: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{retrieved|http://www.xbox-linux.org/wiki/NForce}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This documents collects information about the Xbox chipset and its sibling, the nVidia nForce chipset, as well as further relatives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== nForce ==&lt;br /&gt;
&lt;br /&gt;
The nForce chipset consists of the IGP (Integrated Graphics Processor) Northbridge and the MCP (Media and Communications Processor) Southbridge. Both are available in different flavours:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IGP-64: 64 bit memory bus&lt;br /&gt;
* IGP-128: 128 bit memory bus (TwinBank), requires two DIMM modules for 128 bit operation&lt;br /&gt;
* MCP-D: includes Dolby Digital encoder&lt;br /&gt;
* MCP: Dolby Digital encoder disabled&lt;br /&gt;
&lt;br /&gt;
So these are the four possible combinations:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|  MCP&lt;br /&gt;
|  MCP-D&lt;br /&gt;
|-&lt;br /&gt;
|  IGP-64&lt;br /&gt;
|  nForce 220&lt;br /&gt;
|  nForce 220D&lt;br /&gt;
|-&lt;br /&gt;
|  IGP-128&lt;br /&gt;
|  nForce 420&lt;br /&gt;
|  nForce 420D&lt;br /&gt;
|}&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.theregister.co.uk/2001/05/31/nvidia_crush_chipset_named_nforce/]&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.theregister.co.uk/2001/06/01/nvidia_crush_is_called_nforce/]&lt;br /&gt;
&lt;br /&gt;
The VGA controller inside the IGP is a &amp;quot;GeForce2 MX Integrated Graphics&amp;quot; (PCI ID:10de/01a0). Its internal name is NV1A.&lt;br /&gt;
&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://pciids.sourceforge.net/iii/?i=10de]&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.nvitalia.com/articoli/editoriali/produzione_nvidia_2001.htm]&lt;br /&gt;
&lt;br /&gt;
Although IGP-64 and IGP-128 are different and their respective chipsets have different codenames (Crush11 and Crush12, see below), there seems to be no difference from the software side:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* The VGA BIOS of the MS-6367 mainboard (nForce 420D configuration, i.e. Crush12) has the internal name &amp;quot;CR11BT.ROM&amp;quot;. It also includes the strings &amp;quot;NVIDIA GeForce2 Integrated GPU&amp;quot;, &amp;quot;CR11 Board&amp;quot; and &amp;quot;Chip Rev B2&amp;quot;.&lt;br /&gt;
* The PCI IDs seem to be the same for the GPUs inside IGP-64 and IGP-128.&lt;br /&gt;
&lt;br /&gt;
== Crush ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Crush&amp;quot; was the codename of the nForce chipset. Crush11 is the nForce 220/220D/230/230-T, Crush12 is the nForce 420/420D/430/430-T, and Crush18 is the nForce2. The &amp;quot;11&amp;quot; probably derives from &amp;quot;NV11&amp;quot;, the internal name of the GeForce2 MX.&lt;br /&gt;
&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://users.erols.com/chare/chipsets.htm]&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.theregister.co.uk/2000/11/17/nvidias_super_secret_crush_spec/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== nForce &amp;amp;amp; Xbox ==&lt;br /&gt;
&lt;br /&gt;
The Xbox has an IGP-128 that uses an NV2A video core (PCI ID:10de/02a5), which is between the GeForce3 (NV20) and the GeForce4 (NV25). The Southbridge is called &amp;quot;MCP-X&amp;quot; and lacks the PCI card bus (PCI bus #1).&lt;br /&gt;
&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.digit-life.com/articles/nvidianforce/]&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.anandtech.com/showdoc.html?i=1484]&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=1535]&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.anandtech.com/systems/showdoc.aspx?i=1561&amp;amp;amp;p=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMD Heritage ==&lt;br /&gt;
&lt;br /&gt;
There is the following rumour, which is not fully verified yet:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Microsoft wanted AMD to make the CPU and the chipset for the Xbox, and nVidia to make the video hardware.&lt;br /&gt;
* When alpha hardware had already bee built, Intel made a better deal&lt;br /&gt;
* Microsoft agreed to have Intel CPUs; Intel had to modify AMD's chipset to support an AMD CPU&lt;br /&gt;
* Intel insisted that the brand name AMD could not be associated with the Xbox, so nVidia licensed the AMD chipset. Now the Xbox chipset was by nVidia.&lt;br /&gt;
* nVidia sold the same chipset for PCs, calling it &amp;quot;nForce&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This is the reason why&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* the Xbox is the only nForce chipset with an Intel CPU&lt;br /&gt;
* the AMD chipset and the nForce chipset are so similar&lt;br /&gt;
&lt;br /&gt;
Evidence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* The AMD and nForce AMD IDE controllers are fully compatible. (Linux kernel: &amp;quot;AMD 755/756/766/8111 and nVidia nForce/2/2s/3/3s/CK804/MCP04 IDE driver for Linux.&amp;quot; [https://web.archive.org/web/20100617023830/http://lxr.linux.no/source/drivers/ide/pci/amd74xx.c])&lt;br /&gt;
* The I2C/SMBus controller on the nForce is fully AMD-756/766/68 compatible. [https://web.archive.org/web/20100617023830/http://lxr.linux.no/source/drivers/i2c/busses/i2c-amd756.c]&lt;br /&gt;
* The audio controller is i810 compatible - as is the audio controller of the AMD-768 and the AMD-8111.&lt;br /&gt;
* The nForce and AMD-768 modems are compatible.&lt;br /&gt;
* At least one register (&amp;quot;VGA_en&amp;quot;) in the nForce PCI-to-AGP bridge is compatible with the AMD chipset (AMD-761, 24081.pdf, page 136).&lt;br /&gt;
* The nForce uses HyperTransport.&lt;br /&gt;
* [https://web.archive.org/web/20100617023830/http://www.uwsg.iu.edu/hypermail/linux/kernel/0307.3/0922.html], [https://web.archive.org/web/20100617023830/http://www.uwsg.iu.edu/hypermail/linux/kernel/0301.3/0305.html]&lt;br /&gt;
* ''&amp;quot;One man's guess, the silicon is not a major factor. Because the nForce and 760 MP have a similar pin count, they are going to be cost comparable.&amp;quot;'' [https://web.archive.org/web/20100617023830/http://overclockers.com/articles446/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|  Northbridge&lt;br /&gt;
|  Southbridge&lt;br /&gt;
|-&lt;br /&gt;
|  AMD-760&lt;br /&gt;
|  AMD-761&lt;br /&gt;
|  AMD-766&lt;br /&gt;
|-&lt;br /&gt;
|  AMD-760MP&lt;br /&gt;
|  AMD-762&lt;br /&gt;
|  AMD-766&lt;br /&gt;
|-&lt;br /&gt;
|  AMD-760MPX&lt;br /&gt;
|  AMD-762&lt;br /&gt;
|  AMD-768&lt;br /&gt;
|}&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_873_1133,00.html AMD-760™ Chipset Tech Docs]&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739_1130,00.html AMD-760™ MP Chipset Tech Docs]&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_873_4296,00.html AMD-760™ MPX Chipset Tech Docs]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The nForce chipset might be based on the AMD-760 chipset.&lt;br /&gt;
&lt;br /&gt;
== More Links ==&lt;br /&gt;
&lt;br /&gt;
[https://web.archive.org/web/20100617023830/http://www.duxcw.com/digest/guides/mb_chip/nforce/print.htm]&lt;/div&gt;</summary>
		<author><name>DaveX</name></author>	</entry>

	</feed>