summaryrefslogtreecommitdiff
path: root/src/core/file_sys/romfs.h
diff options
context:
space:
mode:
authorGravatar Zach Hilman2018-07-27 18:14:03 -0400
committerGravatar Zach Hilman2018-07-27 18:14:03 -0400
commit906d785c73cb3644e8984fbfcbf5fcb8a1ebbc6f (patch)
treebeff5b868534a8bfb4eea7992553fa5fb5db5287 /src/core/file_sys/romfs.h
parentMerge pull request #845 from lioncash/nfc (diff)
downloadyuzu-906d785c73cb3644e8984fbfcbf5fcb8a1ebbc6f.tar.gz
yuzu-906d785c73cb3644e8984fbfcbf5fcb8a1ebbc6f.tar.xz
yuzu-906d785c73cb3644e8984fbfcbf5fcb8a1ebbc6f.zip
RomFS Extraction
Diffstat (limited to 'src/core/file_sys/romfs.h')
-rw-r--r--src/core/file_sys/romfs.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/core/file_sys/romfs.h b/src/core/file_sys/romfs.h
new file mode 100644
index 000000000..03a876d22
--- /dev/null
+++ b/src/core/file_sys/romfs.h
@@ -0,0 +1,35 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <array>
8#include "common/common_funcs.h"
9#include "common/swap.h"
10#include "core/file_sys/vfs.h"
11
12namespace FileSys {
13
14struct IVFCLevel {
15 u64_le offset;
16 u64_le size;
17 u32_le block_size;
18 u32_le reserved;
19};
20static_assert(sizeof(IVFCLevel) == 0x18, "IVFCLevel has incorrect size.");
21
22struct IVFCHeader {
23 u32_le magic;
24 u32_le magic_number;
25 INSERT_PADDING_BYTES(8);
26 std::array<IVFCLevel, 6> levels;
27 INSERT_PADDING_BYTES(64);
28};
29static_assert(sizeof(IVFCHeader) == 0xE0, "IVFCHeader has incorrect size.");
30
31// Converts a RomFS binary blob to VFS Filesystem
32// Returns nullptr on failure
33VirtualDir ExtractRomFS(VirtualFile file);
34
35} // namespace FileSys