Reloaded-II File Emulation Framework
🎈 Let's screw with binaries 🎈
A framework for creating virtual files at runtime.
About The Framework
The file emulation framework is a framework for intercepting Windows API calls related to the reading of files from disk; in order to trick games into loading files that don't really exist.
It builds on top of previous experiments with Reloaded, namely AFS Redirector, ONE Redirector and Persona 4 Golden PC modloader.
A User Friendly Example
Replacing files inside big archives without creating new ones.
In this case, the following files would replace the 7th, 8th, 9th and 10th file in the SH_VOICE_E.afs
archive.
How It Works
By intercepting API calls used to open files, get their properties and read from them, we can essentially create files 'on the fly'; allowing us to perform various forms of post processing such as merging archives in a way that requires zero knowledge of the application running under the hood.
In practice this is extremely effective, the original AFS Redirector is known for being able to work with 10+ games, including those behind emulators.
Projects using this framework are referred to as 'emulators' hence the name File Emulation Framework
; that name is derived from the original projects which simulated nonexistent archive files.
Performance Impact
This one varies with a lot of factors, such as number of emulators used, the emulators themselves, amount of data emulated, etc.
In most realistic use cases, the emulators usually have negligible performance impact that is completely invisible to the end user.
Usually first access to a file may be delayed for a small amount of time (1-3ms on existing emulators at time of writing
) but this should usually be invisible to the end user. Penalty in speed of access to data of emulated files is negligible in practice.
The biggest penalty tends to be from reading multiple files instead of just one; as the benefits of purely sequential reads may no longer apply.
How to Contribute (Wiki)
Credits, Attributions
- Header icon created by Freepik - Flaticon