The emitter doesn't actually hold onto executable code, but just generates the assembly-data into a buffer for the currently-resolving function before placing it into a code-cache. When code gets pushed into the code-cache, it can just be copied from an `std::vector` and reset. The code-cache itself maintains the actual executable memory and stack-unwinding code and such. This also fixes a bunch of errornous relative-addressing glitches where relative addresses were calculated based on the address of the unused CodeBlock rather than being position-independent. `MOVP2R` in particular was generating different instructions depending on its distance from the code block when it should always just use `MOV` and not do any relative-address calculations since we can't predict where the actual instruction's offset will be(we cannot predict what the program counter will be). Oaknut probably needs a "position independent" policy or mode or something so that it avoids PC-relative instructions. |
||
|---|---|---|
| .github | ||
| android/android_studio_project | ||
| assets | ||
| docs | ||
| src/xenia | ||
| third_party | ||
| tools | ||
| .appveyor.yml | ||
| .clang-format | ||
| .drone.star | ||
| .gdbinit | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| LICENSE | ||
| premake5.lua | ||
| README.md | ||
| xb | ||
| xb.bat | ||
| xb.ps1 | ||
| xenia-build | ||
| xeniarc | ||
Xenia - Xbox 360 Emulator
Xenia is an experimental emulator for the Xbox 360. For more information, see the main Xenia wiki.
Interested in supporting the core contributors? Visit Xenia Project on Patreon.
Come chat with us about emulator-related topics on Discord.
For developer chat join #dev but stay on topic. Lurking is not only fine, but encouraged!
Please check the FAQ page before asking questions.
We've got jobs/lives/etc, so don't expect instant answers.
Discussing illegal activities will get you banned.
Status
| Buildbot | Status | Releases |
|---|---|---|
| Windows | Latest ◦ All | |
| Linux |
Quite a few real games run. Quite a few don't. See the Game compatibility list for currently tracked games, and feel free to contribute your own updates, screenshots, and information there following the existing conventions.
Disclaimer
The goal of this project is to experiment, research, and educate on the topic of emulation of modern devices and operating systems. It is not for enabling illegal activity. All information is obtained via reverse engineering of legally purchased devices and games and information made public on the internet (you'd be surprised what's indexed on Google...).
Quickstart
See the Quickstart page.
Building
See building.md for setup and information about the
xb script. When writing code, check the style guide
and be sure to run clang-format!
Contributors Wanted!
Have some spare time, know advanced C++, and want to write an emulator? Contribute! There's a ton of work that needs to be done, a lot of which is wide open greenfield fun.
For general rules and guidelines please see CONTRIBUTING.md.
Fixes and optimizations are always welcome (please!), but in addition to that there are some major work areas still untouched:
- Help work through missing functionality/bugs in games
- Reduce the size of Xenia's huge log files
- Skilled with Linux? A strong contributor is needed to help with porting
See more projects good for contributors. It's a good idea to ask on Discord and check the issues page before beginning work on something.
FAQ
See the frequently asked questions page.