mirror of
https://gitlab.com/Theopse/fbi-i18n-zh.git
synced 2025-08-26 16:29:46 +08:00
Fix ticket ID reading.
This commit is contained in:
parent
3e6e6912b2
commit
75f7eb9297
@ -17,20 +17,6 @@ typedef struct {
|
|||||||
Handle cancelEvent;
|
Handle cancelEvent;
|
||||||
} install_cia_data;
|
} install_cia_data;
|
||||||
|
|
||||||
#define bswap_64(x) \
|
|
||||||
({ \
|
|
||||||
uint64_t __x = (x); \
|
|
||||||
((uint64_t)( \
|
|
||||||
(uint64_t)(((uint64_t)(__x) & (uint64_t)0x00000000000000ffULL) << 56) | \
|
|
||||||
(uint64_t)(((uint64_t)(__x) & (uint64_t)0x000000000000ff00ULL) << 40) | \
|
|
||||||
(uint64_t)(((uint64_t)(__x) & (uint64_t)0x0000000000ff0000ULL) << 24) | \
|
|
||||||
(uint64_t)(((uint64_t)(__x) & (uint64_t)0x00000000ff000000ULL) << 8) | \
|
|
||||||
(uint64_t)(((uint64_t)(__x) & (uint64_t)0x000000ff00000000ULL) >> 8) | \
|
|
||||||
(uint64_t)(((uint64_t)(__x) & (uint64_t)0x0000ff0000000000ULL) >> 24) | \
|
|
||||||
(uint64_t)(((uint64_t)(__x) & (uint64_t)0x00ff000000000000ULL) >> 40) | \
|
|
||||||
(uint64_t)(((uint64_t)(__x) & (uint64_t)0xff00000000000000ULL) >> 56) )); \
|
|
||||||
})
|
|
||||||
|
|
||||||
static u32 align(u32 offset, u32 alignment) {
|
static u32 align(u32 offset, u32 alignment) {
|
||||||
return (offset + (alignment - 1)) & ~(alignment - 1);
|
return (offset + (alignment - 1)) & ~(alignment - 1);
|
||||||
}
|
}
|
||||||
@ -79,7 +65,7 @@ static void task_install_cia_thread(void* arg) {
|
|||||||
|
|
||||||
u32 headerSize = *(u32*) &buffer[0x00];
|
u32 headerSize = *(u32*) &buffer[0x00];
|
||||||
u32 certSize = *(u32*) &buffer[0x08];
|
u32 certSize = *(u32*) &buffer[0x08];
|
||||||
titleId = bswap_64(*(u64*) &buffer[align(headerSize, 64) + align(certSize, 64) + 0x1DC]);
|
titleId = __builtin_bswap64(*(u64*) &buffer[align(headerSize, 64) + align(certSize, 64) + 0x1DC]);
|
||||||
|
|
||||||
FS_MediaType dest = ((titleId >> 32) & 0x8010) != 0 ? MEDIATYPE_NAND : MEDIATYPE_SD;
|
FS_MediaType dest = ((titleId >> 32) & 0x8010) != 0 ? MEDIATYPE_NAND : MEDIATYPE_SD;
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ static void task_populate_files_thread(void* arg) {
|
|||||||
u32 bytesRead = 0;
|
u32 bytesRead = 0;
|
||||||
|
|
||||||
u8 sigType = 0;
|
u8 sigType = 0;
|
||||||
if(R_SUCCEEDED(FSFILE_Read(fileHandle, &bytesRead, 0, &sigType, sizeof(sigType))) && bytesRead == sizeof(sigType) && sigType <= 5) {
|
if(R_SUCCEEDED(FSFILE_Read(fileHandle, &bytesRead, 3, &sigType, sizeof(sigType))) && bytesRead == sizeof(sigType) && sigType <= 5) {
|
||||||
static u32 dataOffsets[6] = {0x240, 0x140, 0x80, 0x240, 0x140, 0x80};
|
static u32 dataOffsets[6] = {0x240, 0x140, 0x80, 0x240, 0x140, 0x80};
|
||||||
static u32 titleIdOffset = 0x9C;
|
static u32 titleIdOffset = 0x9C;
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ static void task_populate_files_thread(void* arg) {
|
|||||||
data->dir->containsTickets = true;
|
data->dir->containsTickets = true;
|
||||||
|
|
||||||
fileInfo->isTicket = true;
|
fileInfo->isTicket = true;
|
||||||
fileInfo->ticketInfo.ticketId = titleId;
|
fileInfo->ticketInfo.ticketId = __builtin_bswap64(titleId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user