mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 05:32:47 +00:00
63 lines
1.9 KiB
C
63 lines
1.9 KiB
C
#pragma once
|
|
|
|
#include "common.h"
|
|
|
|
#define NAND_SECTOR_SIZE 0x200
|
|
#define SECTORS_PER_READ (BUFFER_MAX_SIZE / NAND_SECTOR_SIZE)
|
|
|
|
#define P_TWLN (1<<0)
|
|
#define P_TWLP (1<<1)
|
|
#define P_AGBSAVE (1<<2)
|
|
#define P_FIRM0 (1<<3)
|
|
#define P_FIRM1 (1<<4)
|
|
#define P_CTRNAND (1<<5)
|
|
|
|
// these three are not handled by the feature functions
|
|
// they have to be handled by the menu system
|
|
#define N_EMUNAND (1<<29)
|
|
#define N_FORCENAND (1<<30)
|
|
#define N_NANDWRITE (1<<31)
|
|
|
|
// return values for the CheckEmuNAND() function
|
|
#define EMUNAND_NOT_READY 0 // must be zero
|
|
#define EMUNAND_READY 1
|
|
#define EMUNAND_GATEWAY 2
|
|
#define EMUNAND_REDNAND 3
|
|
|
|
// these offsets are used by Multi EmuNAND Creator
|
|
#define EMUNAND_MULTI_OFFSET_O3DS 0x00200000
|
|
#define EMUNAND_MULTI_OFFSET_N3DS 0x00400000
|
|
|
|
typedef struct {
|
|
char name[16];
|
|
u8 magic[8];
|
|
u32 offset;
|
|
u32 size;
|
|
u32 keyslot;
|
|
u32 mode;
|
|
} __attribute__((packed)) PartitionInfo;
|
|
|
|
PartitionInfo* GetPartitionInfo(u32 partition_id);
|
|
u32 GetNandCtr(u8* ctr, u32 offset);
|
|
|
|
u32 OutputFileNameSelector(char* filename, const char* basename, char* extension);
|
|
u32 InputFileNameSelector(char* filename, const char* basename, char* extension, u8* magic, u32 msize, u32 fsize);
|
|
|
|
u32 DecryptNandToMem(u8* buffer, u32 offset, u32 size, PartitionInfo* partition);
|
|
u32 DecryptNandToFile(const char* filename, u32 offset, u32 size, PartitionInfo* partition);
|
|
u32 EncryptMemToNand(u8* buffer, u32 offset, u32 size, PartitionInfo* partition);
|
|
u32 EncryptFileToNand(const char* filename, u32 offset, u32 size, PartitionInfo* partition);
|
|
|
|
// --> FEATURE FUNCTIONS <--
|
|
u32 CheckEmuNand(void);
|
|
u32 SetNand(bool set_emunand, bool force_emunand);
|
|
|
|
u32 CtrNandPadgen(u32 param);
|
|
u32 TwlNandPadgen(u32 param);
|
|
u32 Firm0Firm1Padgen(u32 param);
|
|
|
|
u32 DumpNand(u32 param);
|
|
u32 RestoreNand(u32 param);
|
|
u32 DecryptNandPartition(u32 param);
|
|
u32 InjectNandPartition(u32 param);
|