mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-25 21:22:47 +00:00
TADx base support
This commit is contained in:
parent
1b8bd121b6
commit
8164c4d945
15
arm9/source/game/tadx.c
Normal file
15
arm9/source/game/tadx.c
Normal file
@ -0,0 +1,15 @@
|
||||
#include "tadx.h"
|
||||
#include "cia.h"
|
||||
|
||||
u32 ValidateTadXHeader(TadXHeader* header) {
|
||||
// super strict validation
|
||||
if ((getbe32(header->size_header) != TADX_HEADER_SIZE) ||
|
||||
(getbe32(header->size_cert) != TADX_CERT_SIZE) ||
|
||||
(getbe32(header->size_ticket) != TICKET_TWL_SIZE) ||
|
||||
(getbe32(header->size_tmd) != TMD_SIZE_TWL) ||
|
||||
(getbe32(header->reserved0) != 0) ||
|
||||
(getbe32(header->reserved1) != 0) ||
|
||||
(getbe32(header->size_content) == 0))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
39
arm9/source/game/tadx.h
Normal file
39
arm9/source/game/tadx.h
Normal file
@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
|
||||
#include "common.h"
|
||||
#include "ticket.h"
|
||||
#include "tmd.h"
|
||||
|
||||
#define TADX_HEADER_SIZE sizeof(TadXHeader)
|
||||
#define TADX_CERT_SIZE 0xE80
|
||||
|
||||
#define TADX_OFFSET_CERT align(TADX_HEADER_SIZE, 40)
|
||||
#define TADX_OFFSET_TICKET (TADX_OFFSET_CERT + align(TADX_CERT_SIZE, 40))
|
||||
#define TADX_OFFSET_TMD (TADX_OFFSET_TICKET + align(TICKET_TWL_SIZE, 40))
|
||||
#define TADX_OFFSET_CONTENT (TADX_OFFSET_TMD + align(TMD_SIZE_TWL, 40))
|
||||
#define TADX_OFFSET_CHUNK (TADX_OFFSET_TMD + TMD_SIZE_STUB)
|
||||
|
||||
// this describes the TWL TAD exchangable format (similar to CIA)
|
||||
// see: https://wiibrew.org/wiki/WAD_files#WAD_format
|
||||
typedef struct {
|
||||
u8 size_header[4];
|
||||
u8 type[2];
|
||||
u8 version[2];
|
||||
u8 size_cert[4];
|
||||
u8 reserved0[4];
|
||||
u8 size_ticket[4];
|
||||
u8 size_tmd[4];
|
||||
u8 size_content[4];
|
||||
u8 reserved1[4];
|
||||
} PACKED_STRUCT TadXHeader;
|
||||
|
||||
typedef struct {
|
||||
TadXHeader header;
|
||||
u8 header_padding[0x40 - (TADX_HEADER_SIZE % 0x40)];
|
||||
u8 cert[TADX_CERT_SIZE];
|
||||
// cert is aligned and needs no padding
|
||||
Ticket ticket;
|
||||
u8 ticket_padding[0x40 - (TICKET_TWL_SIZE % 0x40)];
|
||||
u8 tmd[TMD_SIZE_TWL];
|
||||
u8 tmd_padding[0x40 - (TMD_SIZE_TWL % 40)];
|
||||
} PACKED_ALIGN(16) TadXStub;
|
Loading…
x
Reference in New Issue
Block a user