Xbox 360 Emulator Research Project
Go to file
emoose b64fd3392f [VFS] Check hash of STFS hash tables (& cache them) when reading, fallback if invalid.
This'll try salvaging any corrupt packages loaded in: normally we find the block numbers belonging to a file by reading them from the hash table.
Seems there's some packages out there (eg. Mass Effect 2 demo) that have corrupt hash tables though, so using the block numbers from there just results in a crash.
By verifying the hash of each hash table we can detect if this is the case, and if so we can try just using current_block_number + 1 instead of use any invalid block number.
(we also let the user know about the corrupt table in the log file)

In LIVE/PIRS packages this should hopefully let us get the correct data, since files are usually stored inside consecutive blocks in those package types.
It's doubtful that it'd help much with CON ones though, since those are pretty much a living filesystem.
The older & more used a CON package is, the more likely blocks will be fragmented throughout the file...
Reading from the hash table is the only way to properly read data from these, using current_block + 1 likely won't help much (we'd be going wxPirs-mode, in a way :P)

CON packages do have something that might help with this though: redundant hash blocks, where each hash table is actually made up of two blocks.
Maybe in future we can find a way to automatically use the secondary block whenever the primary one is invalid.
2020-02-19 03:36:15 -05:00
.github Rename exe to xenia-canary, simplify CI steps, remove SSE2 2020-02-19 03:36:13 -05:00
assets [Base] icon fix 2020-02-19 03:36:04 -05:00
docs Remove (hopefully) last OpenGL leftovers & crunch 2019-11-08 09:10:51 -08:00
src/xenia [VFS] Check hash of STFS hash tables (& cache them) when reading, fallback if invalid. 2020-02-19 03:36:15 -05:00
third_party Actually update libav. 2020-02-19 03:36:03 -05:00
tools [PPC] Support basic form of sc. 2020-02-11 06:45:57 -06:00
.appveyor.yml Rename exe to xenia-canary, simplify CI steps, remove SSE2 2020-02-19 03:36:13 -05:00
.azure-pipelines.yml Rename exe to xenia-canary, simplify CI steps, remove SSE2 2020-02-19 03:36:13 -05:00
.clang-format Include order fixes. 2015-12-27 10:27:46 -08:00
.gitattributes gitattributes (maybe). 2015-05-24 01:16:34 -07:00
.gitignore [Git] Added /cache0/, /cache1/, and recent.txt to .gitignore 2020-02-19 03:36:12 -05:00
.gitmodules Add SDL2 submodule for MSVC development. 2020-02-10 13:41:19 -06:00
.travis.yml Link against SDL2. 2020-02-10 13:41:19 -06:00
LICENSE Adding CONTRIBUTING.md so that github shows it on issues. 2015-08-28 14:16:38 -07:00
README.md Update README.md 2020-02-19 03:36:13 -05:00
premake5.lua AVX(2/512) builds 2020-02-19 03:36:02 -05:00
xb Add xb symlink to xenia-build to match xb.bat for win 2017-07-11 11:47:24 -06:00
xb.bat Fix handling of paths to Python with spaces in xb.bat. 2019-08-23 10:40:21 -05:00
xenia-build Rename exe to xenia-canary, simplify CI steps, remove SSE2 2020-02-19 03:36:13 -05:00
xeniarc clang-format detection cleanup. 2015-08-01 00:41:46 -07:00

README.md

Xenia Canary - Xbox 360 Emulator

Actions Status Discord AppVeyor Build statusAzure Build Status

Xenia Canary is an experimental fork of Xenia. For more information, see the wiki.

See current Pull Request status here.

Interested in supporting the core contributors? Visit Xenia Project on Patreon.

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.

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.

Download

Windows

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!

FAQ

See the frequently asked questions page.