Code is mainly just copy/pasted from kernel/util/xex2.cc, I've tried fixing it up to work better in a class, but there's probably some things I missed. Also includes some minor improvements to the XEX loader, like being able to try both XEX keys (retail/devkit) automatically, and some fixes to how the base address is determined. (Previously there was code that would get base address from optional header, code that'd get it from xex_security_info, code that'd use a stored base address value... Now everything reads it from a single stored value instead, which is set either from the xex_security_info, or if it exists from the optional header instead. Maybe this can help improve compatibility with any weird XEX's that don't have a base address optional header?) Compressed XEX loader also has some extra checks to make sure the compressed data hash matches what's expected. Might increase loading times by a fraction, but could save reports from people unknowingly using corrupt XEXs. (still no checks for non-compressed data though, maybe need to compare data with xex_security_info->ImageHash?) |
||
|---|---|---|
| .github | ||
| assets | ||
| docs | ||
| src/xenia | ||
| third_party | ||
| tools | ||
| .appveyor.yml | ||
| .clang-format | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .travis.yml | ||
| LICENSE | ||
| premake5.lua | ||
| README.md | ||
| xb | ||
| xb.bat | ||
| xenia-build | ||
| xeniarc | ||
Xenia - Xbox 360 Emulator Research Project
Xenia is an experimental emulator for the Xbox 360. For more information see the main xenia website.
Come chat with us about emulator-related topics on Discord.
For developer chat join #dev but stay on topic. Lurking is fine.
Please check the frequently asked questions page before
asking questions. We've got jobs/lives/etc, so don't expect instant answers.
Discussing illegal activities will get you banned. No warnings.
Status
| Buildbot | Status |
|---|---|
| Windows | |
| Linux |
Some real games run. Most 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
Windows 8.1+ with Python 3.4 and Visual Studio 2017 and the Windows SDKs installed:
> git clone https://github.com/benvanik/xenia.git
> cd xenia
> xb setup
# Pull latest changes, rebase, and update submodules and premake:
> xb pull
# Build on command line:
> xb build
# Run premake and open Visual Studio (run the 'xenia-app' project):
> xb devenv
# Run premake to update the sln/vcproj's:
> xb premake
# Format code to the style guide:
> xb format
When fetching updates use xb pull to automatically fetch everything and
run premake for project files/etc.
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!
Before contributing code or issues be sure to read CONTRIBUTING.md.
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 game compat
- Add input drivers for PS4 controllers (or anything else)
- 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/the bugs before beginning work on something.
FAQ
For more see the main frequently asked questions page.
Can I get an exe?
Check Appveyor's artifacts to see what's there.