citra/src/core
zhupengfei 890405bb7c
core/file_sys: LayeredFS implementation
This implementation is different from Luma3DS's which directly hooks the SDK functions. Instead, we read the RomFS's metadata and figure out the directory and file structure. Then, relocations (i.e. replacements/deletions/patches) are applied. Afterwards, we rebuild the metadata, and assign 'fake' data offsets to the files. When we want to read file data from this rebuilt RomFS, we use binary search to find the last data offset smaller or equal to the given offset and read from that file  (either from the original RomFS, or from replacement files, or from buffered data with patches applied) and any later files when length is not enough.

The code that rebuilds the metadata is pretty complex and uses quite a few variables to keep track of necessary information like metadata offsets. According to my tests, it is able to build RomFS-es identical to the original (but without trailing garbage data) when no relocations are applied.
2020-02-07 15:19:57 +08:00
..
arm Fixing some compiler warnings 2019-07-23 23:10:17 +01:00
cheats core/cheats: Add and change a few functions 2019-02-02 08:15:23 +08:00
dumping core/dumping: Add FFmpeg implementation 2019-08-14 09:27:04 +08:00
file_sys core/file_sys: LayeredFS implementation 2020-02-07 15:19:57 +08:00
frontend swkbd: Fix digit filter 2020-02-04 16:56:30 +08:00
gdbstub gdbstub: Fix some bugs in IsMemoryBreak() and ServeBreak. Add workaround to let watchpoints break into GDB. (#4651) 2019-03-08 00:09:06 -05:00
hle applets/swkbd: Remove text memory clearing 2019-12-01 23:01:07 +08:00
hw Add GetRenderer to core 2020-01-15 19:58:34 -07:00
loader file_sys: Handle patch applying failures 2019-12-22 10:46:47 +01:00
rpc rpc: send ending packet in Server instead of UDPServer 2019-03-04 11:05:07 -05:00
tracer Prefix all size_t with std:: 2018-09-06 16:03:28 -04:00
3ds.h Move screen size constants from video_core to core 2017-05-27 18:41:24 -07:00
announce_multiplayer_session.cpp core, citra_qt: Allow credentials update in multiplayer announce session 2019-04-20 12:50:24 +08:00
announce_multiplayer_session.h core, citra_qt: Allow credentials update in multiplayer announce session 2019-04-20 12:50:24 +08:00
CMakeLists.txt core/file_sys: LayeredFS implementation 2020-02-07 15:19:57 +08:00
core.cpp Add a error log for unsupported configurations for disk cache 2020-01-15 19:58:34 -07:00
core.h Add GetRenderer to core 2020-01-15 19:58:34 -07:00
core_timing.cpp CoreTiming: wrap into class 2018-11-04 10:26:38 -05:00
core_timing.h core_timing: Silence sign comparison warnings 2019-08-20 22:25:18 +08:00
custom_tex_cache.cpp specify size of buffer and use openglstate in getteximageoes 2019-11-09 12:58:17 -07:00
custom_tex_cache.h specify size of buffer and use openglstate in getteximageoes 2019-11-09 12:58:17 -07:00
memory.cpp cpu_core: Separate cpu_core and memory 2019-06-22 18:21:50 +02:00
memory.h cpu_core: Separate cpu_core and memory 2019-06-22 18:21:50 +02:00
mmio.h Prefix all size_t with std:: 2018-09-06 16:03:28 -04:00
movie.cpp remove all occurance of specifying endianness inside BitField 2019-01-28 22:09:43 -05:00
movie.h new-line that clang-format didn't fix 2019-11-09 12:56:17 -07:00
perf_stats.cpp Backport changes from yuzu-emu/yuzu#2806 2019-09-22 17:40:04 +02:00
perf_stats.h Backport changes from yuzu-emu/yuzu#2806 2019-09-22 17:40:04 +02:00
settings.cpp log disk shader cache setting 2020-01-23 00:49:17 -03:00
settings.h Implementation of screen rotation without use of additional layouts. 2020-01-20 22:31:51 -03:00
telemetry_session.cpp Merge pull request #5021 from ccawley2011/cpu_detect 2020-01-17 20:30:29 -07:00
telemetry_session.h core/telemetry_session: Remove usages of the global system accessor 2019-06-09 16:34:46 +02:00