reloaded.universal.fileemulationframework 2.3.0

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

Showing the top 20 packages that depend on reloaded.universal.fileemulationframework.

Packages Downloads
reloaded.universal.fileemulationframework.awb
Simulates CRIWARE AWB (AFS2) files. Allows mods to add or replace existing files using files on disk.
19,876,386
reloaded.universal.fileemulationframework.heroes.one
Simulates Sonic Heroes' ONE files. Allows mods to add or replace existing files using files on disk.
12,152,349
reloaded.universal.fileemulationframework.afs
Simulates CRIWARE AFS files. Allows mods to add or replace existing files using files on disk.
11,700,681
reloaded.universal.fileemulationframework.arc
Simulates Sega ARC files. Allows mods to add or replace existing files using files on disk.
11,618,861
reloaded.universal.fileemulationframework.spd
Simulating Atlus SPD files. Allows mods to add or replace individual sprites, even in the same texture file.
10,520,242
reloaded.universal.fileemulationframework.spd
Simulating Atlus SPD files. Allows mods to add or replace individual sprites, even in the same texture file.
8,721,126
UTOC.Stream.Emulator
Simulates Unreal Engine IO Store files (.utoc + .ucas). Allows mods to add or replace existing files using files on disk
5,266,714
reloaded.universal.fileemulationframework.bf
Simulates Atlus BF files. Allows mods to add or replace existing files using files on disk.
5,178,247
reloaded.universal.fileemulationframework.pak
Simulates Atlus PAK files. Allows mods to add or replace existing files using files on disk.
5,165,193
reloaded.universal.fileemulationframework.bmd
Simulates Atlus BMD files. Allows mods to add or replace existing files using files on disk.
5,146,350
Reloaded.Universal.Localisation.Framework
A framework that helps localise mods into multiple languages
5,012,384
reloaded.universal.fileemulationframework.pak
Simulates Atlus PAK files. Allows mods to add or replace existing files using files on disk.
4,782,834
reloaded.universal.fileemulationframework.bmd
Simulates Atlus BMD files. Allows mods to add or replace existing files using files on disk.
4,520,441
reloaded.universal.fileemulationframework.bf
Simulates Atlus BF files. Allows mods to add or replace existing files using files on disk.
4,319,744
UTOC.Stream.Emulator
Simulates Unreal Engine IO Store files (.utoc + .ucas). Allows mods to add or replace existing files using files on disk
2,326,696
reloaded.universal.fileemulationframework.bf
Simulates Atlus BF files. Allows mods to add or replace existing files using files on disk.
1,777,989
UTOC.Stream.Emulator
Simulates Unreal Engine IO Store files (.utoc + .ucas). Allows mods to add or replace existing files using files on disk
1,723,077
reloaded.universal.fileemulationframework.pak
Simulates Atlus PAK files. Allows mods to add or replace existing files using files on disk.
1,497,433
UTOC.Stream.Emulator
Simulates Unreal Engine IO Store files (.utoc + .ucas). Allows mods to add or replace existing files using files on disk
1,437,783
reloaded.universal.fileemulationframework.awb
Simulates CRIWARE AWB (AFS2) files. Allows mods to add or replace existing files using files on disk.
1,273,072

2.3.0

  • Added support for emulating LastWriteTime of emulated files across re-opens.

2.1.1

  • Added: Source to start of various log commands.

2.1.0

  • Added: UnregisterVirtualFile for unregistering files [untested].

2.0.0

  • Improved: Performance by a few nanoseconds per read.
  • Added: RegisterVirtualFile API for creating files with custom path backed by custom data.

1.1.3

  • Changed: Use Thread Local buffer for Symlink Resolution to avoid potential stack overflow.

1.1.0

  • Fixed: Emulator will no longer incorrectly run for directories.
  • Added: Support for CloseHandle hook with custom ASM.

1.0.0

Initial Mod Release

Version Downloads Last updated
2.3.0 5,723,008 3/23/2025
2.2.2 2,973,571 9/20/2024
2.2.1 1,083,296 6/21/2024
2.2.0 2,569,698 7/9/2023
2.1.3 298,621 3/1/2023
2.1.2 260,221 11/27/2022
2.1.1 28,821 11/21/2022
2.1.0 39,168 11/7/2022
2.0.0 10,842 11/4/2022
1.1.3 7,702 11/2/2022
1.1.2 59,052 9/30/2022
1.1.1 1,238 9/26/2022
1.1.0 1,447 9/22/2022
1.0.0 2,735 9/17/2022