1
0
Fork 0
mirror of https://github.com/DarkMatterCore/nxdumptool.git synced 2024-11-09 12:11:44 +00:00
nxdumptool/source/core
Pablo Curiel 9c7a57e028 title: init gc title storage by HFS as fallback
Makes it possible to generate TitleInfo and TitleApplicationMetadata elements for gamecards that can't be used with ncm (e.g. Kiosk / Quest gamecards under retail, non-Quest units). This is achieved by:

1. Retrieving a Hash FS context for the gamecard's secure partition.
2. Initializing NCA and CNMT contexts for all of the Meta NCAs within the secure partition.
3. Manually generating NcmContentMetaKey and NcmContentInfo elements per each CNMT context.
4. Creating TitleInfo elements using the generated NcmContentMetaKey and NcmContentInfo elements.
5. Initializing NCA and NACP contexts for the base (or update) Control NCAs within the secure partition.
6. Manually generating a NsApplicationControlData element per each NACP context.
7. Creating TitleApplicationMetadata elements using the generated NsApplicationControlData elements.

Afterwards, gamecard title/content enumeration and all other features that rely on it (e.g. NSP, NCA, NCA FS) work as expected. Please note that this process is only carried out if regular title storage initialization fails.

Other changes include:

* title: reorder code.
* title: add TitleGameCardContentMetaContext struct.
* title: rename titleGetInfoFromStorageByTitleId() -> titleGetTitleInfoEntryFromStorageByTitleId().
* title: add titleInitializeGameCardTitleStorageByHashFileSystem().
* title: rename titleGenerateDummySystemMetadataEntry() -> titleGetSystemMetadataEntry().
* title: rename titleRetrieveUserApplicationMetadataByTitleId() -> titleGenerateUserMetadataEntryFromNs().
* title: move ns logic from titleRetrieveUserApplicationMetadataByTitleId() into a new function: titleGetApplicationControlDataFromNs().
* title: add titleGenerateUserMetadataEntryFromControlNca().
* title: add titleGetApplicationControlDataFromControlNca().
* title: add titleInitializeUserMetadataEntryFromControlData().
* title: add titleGenerateTitleInfoEntriesByHashFileSystemForGameCardTitleStorage().
* title: move TitleInfo generation logic from titleGenerateTitleInfoEntriesForTitleStorage() into a new function: titleGenerateTitleInfoEntry().
* title: add titleInitializeTitleInfoApplicationMetadataFromControlNca().
* title: add titleGetGameCardContentMetaContexts().
* title: add titleFreeGameCardContentMetaContexts().
* title: add titleGetContentInfosByGameCardContentMetaContext().
* title: rename _titleGetInfoFromStorageByTitleId() -> _titleGetTitleInfoEntryFromStorageByTitleId().
* title: rename titleSystemTitleMetadataEntrySortFunction() -> titleSystemMetadataSortFunction().
* title: rename titleUserApplicationMetadataEntrySortFunction() -> titleUserMetadataSortFunction().
* title: rename titleInfoEntrySortFunction() -> titleInfoSortFunction().
* title: add titleGameCardContentMetaContextSortFunction().

* codebase: update to reflect the rest of the changes.
2024-08-18 15:29:57 +02:00
..
devoptab Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
fatfs Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
aes.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
bfttf.c title: init gc title storage by HFS as fallback 2024-08-18 15:29:57 +02:00
bktr.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
cert.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
cnmt.c nca: fix impl issues in ncaInitializeContextCommon() 2024-08-12 12:10:34 +02:00
config.c Remove all references to NSWDB. 2024-05-02 15:38:39 +02:00
es.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
fs_ext.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
gamecard.c gamecard: add proper validation of root HFS partition headers in Terra gamecards 2024-05-20 23:06:36 +02:00
hfs.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
http.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
keys.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
legal_info.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
lz4.c Some updates 2024-08-06 22:57:54 +02:00
mem.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
nacp.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
nca.c nca: fix impl issues in ncaInitializeContextCommon() 2024-08-12 12:10:34 +02:00
nca_storage.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
npdm.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
nso.c title: pre-generate gamecard filenames 2024-08-11 12:59:22 +02:00
nxdt_bfsar.c title: init gc title storage by HFS as fallback 2024-08-18 15:29:57 +02:00
nxdt_json.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
nxdt_log.c nca: fix impl issues in ncaInitializeContextCommon() 2024-08-12 12:10:34 +02:00
nxdt_utils.c utils: report IsT flag at startup 2024-05-26 13:31:43 +02:00
pfs.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
program_info.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
romfs.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
rsa.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
save.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
services.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
sha3.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
tik.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
title.c title: init gc title storage by HFS as fallback 2024-08-18 15:29:57 +02:00
ums.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00
usb.c Improve directory layout while we still can. 2024-04-30 23:01:42 +02:00