43 lines
1005 B
C
43 lines
1005 B
C
/*
|
|
* firm.h
|
|
* by Reisyukaku
|
|
* Copyright (c) 2015 All Rights Reserved
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "types.h"
|
|
|
|
#define PDN_MPCORE_CFG (*(vu8 *)0x10140FFC)
|
|
#define HID_PAD ((~*(vu16 *)0x10146000) & 0xFFF)
|
|
#define PDN_SPI_CNT (*(vu8 *)0x101401C0)
|
|
#define CFG_BOOTENV (*(vu8 *)0x10010000)
|
|
#define PDN_GPU_CNT (*(vu8 *)0x10141200)
|
|
#define BUTTON_R1 (1 << 8)
|
|
#define BUTTON_L1 (1 << 9)
|
|
#define BUTTON_L1R1 (BUTTON_R1 | BUTTON_L1)
|
|
#define BUTTON_A 1
|
|
#define SAFEMODE (BUTTON_L1R1 | BUTTON_A | (1 << 6))
|
|
|
|
//FIRM Header layout
|
|
typedef struct firmSectionHeader {
|
|
u32 offset;
|
|
u8 *address;
|
|
u32 size;
|
|
u32 procType;
|
|
u8 hash[0x20];
|
|
} firmSectionHeader;
|
|
|
|
typedef struct firmHeader {
|
|
u32 magic;
|
|
u32 reserved1;
|
|
u8 *arm11Entry;
|
|
u8 *arm9Entry;
|
|
u8 reserved2[0x30];
|
|
firmSectionHeader section[4];
|
|
} firmHeader;
|
|
|
|
void setupCFW(void);
|
|
u32 loadFirm(void);
|
|
u32 patchFirm(void);
|
|
void launchFirm(void); |