265903fe66
This was a headache to work out, big thanks to the lack of documentation on .xexp files... a ton of guesswork was involved here but luckily it turned out well. I did have to make some pretty major changes to the way XEX files are loaded though. Previously it'd just load everything in one go: XEX headers -> decrypt/decompress data -> load imports/symbols -> set loader data table entries, etc... Now it's changed to something like this: - Load base XEX headers + decrypted/decompressed image data, return X_STATUS_PENDING - In the LoadFromFile call used to load the XEX, search for XEXP patch file (only .xexp in same folder atm) - If patch exists: load XEXP, decrypt headers/data, apply patch to base XEX, dispose of XEXP - Finish XEX load via LoadXexContinue() (handles imports/symbols/loader data...) This saves us from needing to reset the imports/function/symbol stuff after patching (since all the XEX code will be a lot different), but I'm not really sure if I went about it the best way. |
||
---|---|---|
.github | ||
assets | ||
docs | ||
src/xenia | ||
third_party | ||
tools | ||
.appveyor.yml | ||
.clang-format | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
LICENSE | ||
README.md | ||
premake5.lua | ||
xb | ||
xb.bat | ||
xenia-build | ||
xeniarc |
README.md
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.