Difference between revisions of "XQEMU"

From Emulation General Wiki
Jump to navigation Jump to search
(Frontends)
(Edit by JayFoxRox; fixed incorrect / misleading information. Added some history (exact date or sources should be added))
Line 7: Line 7:
 
|source = [https://github.com/xqemu/xqemu GitHub]
 
|source = [https://github.com/xqemu/xqemu GitHub]
 
}}
 
}}
'''XQEMU''' is an open-source, [[High/Low level emulation|low-level]] [[Xbox emulators|Xbox]] and Sega Chihiro <small>(WIP)</small> emulator based off of [[QEMU]], a general-purpose computer emulator and hypervisor. What makes this emulator different from the other attempts at Xbox emulation is the use of low-level emulation, while previous attempts at Xbox emulation used high-level emulation. This comes with its own benefits and downsides in comparison, but it does allow for greater [[Emulation Accuracy|accuracy]] and greater compatibility down the road.
+
'''XQEMU''' is an open-source, [[High/Low level emulation|low-level]] [[Xbox emulators|Xbox]] and Sega Chihiro <small>(WIP)</small> emulator based off of [[QEMU]], a general-purpose computer emulator and hypervisor. What makes this emulator different from other attempts at Xbox emulation is the use of low-level emulation, while previous attempts at Xbox emulation used high-level emulation. This comes with its own benefits and downsides in comparison, but it has quickly lead to higher [[Emulation Accuracy|accuracy]] and greater compatibility.
  
 
==Downloads==
 
==Downloads==
 
*[https://ci.appveyor.com/project/mborgerson/xqemu-c5j6o '''Official development builds'''] (Windows)
 
*[https://ci.appveyor.com/project/mborgerson/xqemu-c5j6o '''Official development builds'''] (Windows)
 
<!-- *[https://travis-ci.org/xqemu/xqemu Official builds] (Linux and macOS) The maintainers have not set Travis to upload builds. -->
 
<!-- *[https://travis-ci.org/xqemu/xqemu Official builds] (Linux and macOS) The maintainers have not set Travis to upload builds. -->
 
This build focuses on the ongoing 2.x rebase, which will bring XQEMU closer to QEMU's current release (2.12.0).
 
  
 
Unofficial builds are also available:  
 
Unofficial builds are also available:  
Line 22: Line 20:
 
XQEMU does not come with an Xbox specific GUI and needs a separate frontend for GUI features.
 
XQEMU does not come with an Xbox specific GUI and needs a separate frontend for GUI features.
  
*[https://github.com/xqemu/xqemu-manager XQEMU-Manager] by XQEMU developers (Python script; GUI only)
+
*[https://github.com/xqemu/xqemu-manager '''Official frontend: XQEMU-Manager'''] by XQEMU developers (Python script; GUI only)
 +
 
 +
Unofficial frontends are also available:
 
*[https://github.com/Voxel9/XQEMU-Frontend XQEMU-Frontend] by Voxel9 (Builds available; GUI only)
 
*[https://github.com/Voxel9/XQEMU-Frontend XQEMU-Frontend] by Voxel9 (Builds available; GUI only)
 
*[https://github.com/BigBrainAFK/xqemu-gui xqemu-gui] by BigBrainAFK (Builds available; GUI only)
 
*[https://github.com/BigBrainAFK/xqemu-gui xqemu-gui] by BigBrainAFK (Builds available; GUI only)
Line 28: Line 28:
  
 
==Overview==
 
==Overview==
XQEMU is at the development stage right now. Quite a lot of games can run on XQEMU, but its focus on game compatibility means there hasn't been much focus on speed, so the games that work are currently slow. A theoretical integration of KVM, HAXM, WHV or other CPU virtualization could also speed up performance. Throughout September 2018 and later, mborgerson has been working on integrating [https://www.youtube.com/watch?v=Si_RAtA7eAQ KVM] for Linux-based systems and [https://www.youtube.com/watch?v=y617eSRogdI HAXM] for Windows & macOS systems into XQEMU. They provide decent performance boosts to games such as Halo: Combat Evolved but still are not enough to run at full frame rate speeds.
+
XQEMU is under active development, and is accepting contributions by anyone.
 +
 
 +
===Emulator===
 +
 
 +
XQEMU is the most accurate and most compatible open-source Xbox emulator.
 +
Many games work correctly in XQEMU, but there are performance issues in most some games.
 +
Due to the small number of contributors, development focus has always been accuracy, but there's occasional performance improvements.
 +
As more developers contribute to the project and emulation matures, focus will shift to performance.
  
 
mborgerson has, since March 24, 2018,<ref>mborgerson. [https://github.com/xqemu/xqemu/commit/49f1a7ccfaf105536cd30587254fb555e4ac1e3c Add hw/xbox from xqemu]. GitHub.</ref> begun work on rebasing XQEMU on the latest QEMU tag, "[bringing] many years of performance enhancements to xqemu including support for native virtualization APIs."<ref>[https://github.com/xqemu/xqemu/blob/xbox-2.x-rebase/README.md README.md]. GitHub.</ref> The rebase branch, which was merged into Master on June 2018, incorporated over 30,000 commits from QEMU that were never merged over the years. Work continues to reinstate 3D rendering.
 
mborgerson has, since March 24, 2018,<ref>mborgerson. [https://github.com/xqemu/xqemu/commit/49f1a7ccfaf105536cd30587254fb555e4ac1e3c Add hw/xbox from xqemu]. GitHub.</ref> begun work on rebasing XQEMU on the latest QEMU tag, "[bringing] many years of performance enhancements to xqemu including support for native virtualization APIs."<ref>[https://github.com/xqemu/xqemu/blob/xbox-2.x-rebase/README.md README.md]. GitHub.</ref> The rebase branch, which was merged into Master on June 2018, incorporated over 30,000 commits from QEMU that were never merged over the years. Work continues to reinstate 3D rendering.
 +
Shortly after, the codebase was rebased to QEMU 3.0.0.
 +
 +
XQEMU supports CPU virtualization to improve emulation performance, at a minor loss of compatibility:
 +
* Windows: WHPX (broken, awaiting fixes by Microsoft), HAXM (broken, awaiting fixes by Intel)
 +
* macOS: HVF (broken, awaiting fixes by Apple), HAXM (broken, awaiting fixes by Intel)
 +
* Linux: KVM (working)
 +
 +
KVM has been supported since 2013 and is the only stable CPU virtualization at the moment. With the rebase to QEMU 2.x and 3.x in 2018, support for other CPU virtualization became possible. HVF changes were contributed by espes. Additionally, active development of HAXM, WHPX and HVF made them more compatible with XQEMU, but problems remain. Problems were reported to the respective projects and testing continues.
 +
Throughout September 2018 and later, mborgerson has been showcasing [https://www.youtube.com/watch?v=Si_RAtA7eAQ KVM] for Linux-based systems and [https://www.youtube.com/watch?v=y617eSRogdI HAXM] for Windows & macOS systems in XQEMU. They provide decent performance boosts to games such as Halo: Combat Evolved but still weren't enough to run at full frame rate speeds.
 +
 +
In June 2018, mborgerson created a new website for XQEMU at xqemu.com; xbox7887 contributed xqemu.org as alternative domain.
 +
 +
In June 2018, JayFoxRox released nv2a-trace, to debug and compare Xbox GPU behaviour, to XQEMU graphics emulation.
 +
This has quickly lead to bug-fixes and allows other developers to gain a better understanding about the Xbox GPU.
 +
 +
In July 2018, JayFoxRox improved XQEMUs controller emulation. More than 20 games were affected by this change. The standard controllers are emulated with no known issues now.
 +
 +
In 2018, a trivial bug in the network emulation was identified by JayFoxRox and mborgerson. Since this patched, System-Link is supported.
 +
System-Link has been tested between different instances of XQEMU, and XQEMU and physical Xbox consoles.
 +
 +
In late 2018, mborgerson introduced a new texture cache, which improves the performance of XQEMU.
 +
 +
In December 2018, JayFoxRox has started integration of audio emulation for XQEMU. This work is based on his 2017 research and prototypes. Additionally, many DSP related tools to assist further development were created, to attract more developers.
 +
 +
In December 2018, mborgerson made a prototype for performance changes. This included a prototype for surface-caching, which greatly enhances visual quality and performance. That work has not been integrated into the official version yet.
 +
  
 
*[https://docs.google.com/spreadsheets/d/1sVtQ9SNPathKAMCqfYtvJQP0bs0UeLzP9otPHvZDMwE/htmlview#gid=709879345 New compatibility chart] (1000+ games)
 
*[https://docs.google.com/spreadsheets/d/1sVtQ9SNPathKAMCqfYtvJQP0bs0UeLzP9otPHvZDMwE/htmlview#gid=709879345 New compatibility chart] (1000+ games)
 
*[http://xboxdevwiki.net/XQEMU Old compatibility chart] (Taken from John GodGames' 2015 list)
 
*[http://xboxdevwiki.net/XQEMU Old compatibility chart] (Taken from John GodGames' 2015 list)
 +
 +
===Official Frontend===
 +
 +
In May 2018, mborgerson created XQEMU-Manager, the official frontend for XQEMU.
 +
This was done to make XQEMU easier to use, and to combat the rise of many competing unofficial user interfaces.
 +
XQEMU-Manager is accepting contributions by anyone.
 +
 +
In October 2018, Thrimbor added support for adding custom command line options for running XQEMU. This was primarily done to work-around lack of input configuration options, it was based on earlier concepts by JayFoxRox and dracc.
 +
 +
In October 2018, Thrimbor added an option to enable CPU virtualization. It only allows HAXM on Windows / macOS, and KVM on Linux. HVF and WHPX are not supported, due to stability issues.
 +
 +
In November 2018, Thrimbor added support for basic input configuration.
 +
 +
In December 2018, Thrimbor added support for configuring emulated memory units.
 +
 +
===Related projects===
 +
 +
In June 2018, mborgerson created a [https://github.com/xqemu/xqemu-hdd-image copyright-free Xbox HDD Image]. It is fully functional for most use-cases and an alterantive to real Xbox HDD images.
 +
 +
In October 2018, mborgerson made xqemu-kernel, an attempt at an open-source Xbox kernel as HLE alternative. It is currently considered a prototype and not functional. It is currently not hosted as part of the offical XQEMU ecosystem either.
 +
 +
espes and JayFoxRox initiated XboxDev, an organization dedicated to researching and documenting original Xbox and Chihiro.
 +
Many XQEMU developers are also active members and contributors to XboxDev projects.
 +
As a result, most development tools developed for XQEMU, are hosted by XboxDev.
  
 
==Running==
 
==Running==
:''These instructions apply to the 1.x branch of XQEMU. For 2.x instructions, visit [https://xqemu.com/ xqemu.com].''
 
  
You'll need a MCP-X boot rom, Xbox 1.0 compatible BIOS, and a HDD image with a dashboard, all in the main XQEMU directory. Then run:
+
Follow the latest official instructions at [https://xqemu.com/getting-started/ xqemu.com].
<pre style="white-space:pre-wrap">qemu-system-xbox -cpu pentium3 -machine xbox,short_animation,bootrom=mcpx_1.0.bin -m 64 -drive file=xbox_harddisk.qcow2,index=0,media=disk,locked=on -drive index=1,media=cdrom,file=game.iso -bios complex_4627debug.bin -usb -device usb-hub,bus=usb-bus.0,port=3 -device usb-xbox-gamepad,bus=usb-bus.0,port=3.2</pre>
 
Change <code>mcpx_1.0.bin</code>, <code>complex_4627debug.bin</code>, and <code>game.iso</code> to the filenames of the boot rom, BIOS, and game ISO that you're running.
 
  
 
==References==
 
==References==
Line 47: Line 101:
 
==External links==
 
==External links==
 
*[https://github.com/xqemu/xqemu/tree/xbox-2.x-rebase Upcoming official XQEMU branch re-based on latest QEMU tag]
 
*[https://github.com/xqemu/xqemu/tree/xbox-2.x-rebase Upcoming official XQEMU branch re-based on latest QEMU tag]
*[https://github.com/JayFoxRox/xqemu/wiki Old Wiki for developers (JayFoxRox's branch)]
+
*[https://github.com/JayFoxRox/xqemu-jfr/wiki Old Wiki for developers (JayFoxRox's branch)]
*[http://xboxdevwiki.net/Main_Page Wiki for Xbox hardware documentation] (Contributors from many Xbox related projects including XQEMU and Cxbx-Reloaded) <!-- Why is this here? It's not emulation specific; it was merely initiated by JayFoxRox and espes. A) useful resource for new programmers keen to learn more about & improve Xbox emulation. Main Xbox page here has 2 links to games compat & emulators lists at this wiki. -->
+
*[https://github.com/XboxDev/XboxDev for Xbox documentation] (Contributors from many Xbox related projects including XQEMU and Cxbx-Reloaded) <!-- Why is this here? It's not emulation specific; it was merely initiated by JayFoxRox and espes. A) useful resource for new programmers keen to learn more about & improve Xbox emulation. Main Xbox page here has 2 links to games compat & emulators lists at this wiki.-->
*[http://webchat.freenode.net/?channels=%23xqemu Official freenode IRC chat channel]
+
*[http://webchat.freenode.net/?channels=%23xqemu Official XQEMU IRC chat channel on freenode]
*[https://discordapp.com/invite/WxJPPyz Official Discord chat channel] (For discussions on Xbox emulation development)
+
*[https://discordapp.com/invite/WxJPPyz XboxDev Discord chat channel] (For discussions on Xbox emulation development)
*[https://www.youtube.com/watch?v=iM-9cel2iVI&t=0s&list=PLEtk6GvDeuAX5OR0zxz3TuQhqe8eSHp8P&index=2 XQEMU 1.0.65 - Install Guide and (Gameplay) Multi Test #1] (Emulators for PC. Jul 17, 2018. 7 games.)
+
*[https://www.youtube.com/watch?v=iM-9cel2iVI&t=0s&list=PLEtk6GvDeuAX5OR0zxz3TuQhqe8eSHp8P&index=2 XQEMU - Install Guide and (Gameplay) Multi Test #1] (Emulators for PC. Jul 17, 2018. 7 games.)
*[https://www.youtube.com/playlist?list=PLBRxCmSa5Ob1m8XsJMkRQrAQu0RUxa4PF YT Playlist] (Technical progress videos from lead programmer Matt B.)
+
*[https://www.youtube.com/playlist?list=PLBRxCmSa5Ob1m8XsJMkRQrAQu0RUxa4PF YT Playlist] (Technical progress videos from XQEMU maintainer mborgerson)
  
 
[[Category:Emulators]]
 
[[Category:Emulators]]

Revision as of 06:24, 5 January 2019

XQEMU
Developer(s) espes, mborgerson, JayFoxRox and XQEMU Community
Latest version N/A
Active Yes
Platform(s) Windows
macOS
Linux
Emulates Xbox, Sega Chihiro (Arcade. WIP)
Website XQEMU.com
Source code GitHub

XQEMU is an open-source, low-level Xbox and Sega Chihiro (WIP) emulator based off of QEMU, a general-purpose computer emulator and hypervisor. What makes this emulator different from other attempts at Xbox emulation is the use of low-level emulation, while previous attempts at Xbox emulation used high-level emulation. This comes with its own benefits and downsides in comparison, but it has quickly lead to higher accuracy and greater compatibility.

Downloads

Unofficial builds are also available:

Frontends

XQEMU does not come with an Xbox specific GUI and needs a separate frontend for GUI features.

Unofficial frontends are also available:

  • XQEMU-Frontend by Voxel9 (Builds available; GUI only)
  • xqemu-gui by BigBrainAFK (Builds available; GUI only)
  • XQEMURun by illwieckz (Python script; Command-Line interface only)

Overview

XQEMU is under active development, and is accepting contributions by anyone.

Emulator

XQEMU is the most accurate and most compatible open-source Xbox emulator. Many games work correctly in XQEMU, but there are performance issues in most some games. Due to the small number of contributors, development focus has always been accuracy, but there's occasional performance improvements. As more developers contribute to the project and emulation matures, focus will shift to performance.

mborgerson has, since March 24, 2018,[1] begun work on rebasing XQEMU on the latest QEMU tag, "[bringing] many years of performance enhancements to xqemu including support for native virtualization APIs."[2] The rebase branch, which was merged into Master on June 2018, incorporated over 30,000 commits from QEMU that were never merged over the years. Work continues to reinstate 3D rendering. Shortly after, the codebase was rebased to QEMU 3.0.0.

XQEMU supports CPU virtualization to improve emulation performance, at a minor loss of compatibility:

  • Windows: WHPX (broken, awaiting fixes by Microsoft), HAXM (broken, awaiting fixes by Intel)
  • macOS: HVF (broken, awaiting fixes by Apple), HAXM (broken, awaiting fixes by Intel)
  • Linux: KVM (working)

KVM has been supported since 2013 and is the only stable CPU virtualization at the moment. With the rebase to QEMU 2.x and 3.x in 2018, support for other CPU virtualization became possible. HVF changes were contributed by espes. Additionally, active development of HAXM, WHPX and HVF made them more compatible with XQEMU, but problems remain. Problems were reported to the respective projects and testing continues. Throughout September 2018 and later, mborgerson has been showcasing KVM for Linux-based systems and HAXM for Windows & macOS systems in XQEMU. They provide decent performance boosts to games such as Halo: Combat Evolved but still weren't enough to run at full frame rate speeds.

In June 2018, mborgerson created a new website for XQEMU at xqemu.com; xbox7887 contributed xqemu.org as alternative domain.

In June 2018, JayFoxRox released nv2a-trace, to debug and compare Xbox GPU behaviour, to XQEMU graphics emulation. This has quickly lead to bug-fixes and allows other developers to gain a better understanding about the Xbox GPU.

In July 2018, JayFoxRox improved XQEMUs controller emulation. More than 20 games were affected by this change. The standard controllers are emulated with no known issues now.

In 2018, a trivial bug in the network emulation was identified by JayFoxRox and mborgerson. Since this patched, System-Link is supported. System-Link has been tested between different instances of XQEMU, and XQEMU and physical Xbox consoles.

In late 2018, mborgerson introduced a new texture cache, which improves the performance of XQEMU.

In December 2018, JayFoxRox has started integration of audio emulation for XQEMU. This work is based on his 2017 research and prototypes. Additionally, many DSP related tools to assist further development were created, to attract more developers.

In December 2018, mborgerson made a prototype for performance changes. This included a prototype for surface-caching, which greatly enhances visual quality and performance. That work has not been integrated into the official version yet.


Official Frontend

In May 2018, mborgerson created XQEMU-Manager, the official frontend for XQEMU. This was done to make XQEMU easier to use, and to combat the rise of many competing unofficial user interfaces. XQEMU-Manager is accepting contributions by anyone.

In October 2018, Thrimbor added support for adding custom command line options for running XQEMU. This was primarily done to work-around lack of input configuration options, it was based on earlier concepts by JayFoxRox and dracc.

In October 2018, Thrimbor added an option to enable CPU virtualization. It only allows HAXM on Windows / macOS, and KVM on Linux. HVF and WHPX are not supported, due to stability issues.

In November 2018, Thrimbor added support for basic input configuration.

In December 2018, Thrimbor added support for configuring emulated memory units.

Related projects

In June 2018, mborgerson created a copyright-free Xbox HDD Image. It is fully functional for most use-cases and an alterantive to real Xbox HDD images.

In October 2018, mborgerson made xqemu-kernel, an attempt at an open-source Xbox kernel as HLE alternative. It is currently considered a prototype and not functional. It is currently not hosted as part of the offical XQEMU ecosystem either.

espes and JayFoxRox initiated XboxDev, an organization dedicated to researching and documenting original Xbox and Chihiro. Many XQEMU developers are also active members and contributors to XboxDev projects. As a result, most development tools developed for XQEMU, are hosted by XboxDev.

Running

Follow the latest official instructions at xqemu.com.

References

  1. mborgerson. Add hw/xbox from xqemu. GitHub.
  2. README.md. GitHub.

External links