2009-07-30 04:54:08 +02:00
|
|
|
#ifndef _PATCHMII_CORE_
|
|
|
|
#define _PATCHMII_CORE_
|
|
|
|
|
|
|
|
|
|
|
|
//Patchmii functions
|
|
|
|
void patchmii_network_init(void);
|
|
|
|
// Call with version = 0 to get the latest version
|
|
|
|
// Set "patch" if you want to try to patch title contents
|
|
|
|
s32 patchmii_install(u32 in_title_h, u32 in_title_l, u32 in_version, u32 out_title_h, u32 out_title_l, u32 out_version, bool patch);
|
|
|
|
s32 install_temporary_ios(u32 base_ios, u32 base_ver);
|
|
|
|
s32 load_temporary_ios(void);
|
|
|
|
s32 cleanup_temporary_ios(void);
|
|
|
|
|
|
|
|
//Tools
|
|
|
|
void forge_tmd(signed_blob *s_tmd);
|
|
|
|
void forge_tik(signed_blob *s_tik);
|
|
|
|
|
|
|
|
void spinner(void);
|
|
|
|
|
|
|
|
#define TEMP_IOS
|
|
|
|
|
|
|
|
// Basic I/O.
|
|
|
|
|
2009-07-30 07:41:12 +02:00
|
|
|
static inline u32 read32(u32 addr) {
|
|
|
|
u32 x;
|
|
|
|
asm volatile("lwz %0,0(%1) ; sync" : "=r"(x) : "b"(0xc0000000 | addr));
|
|
|
|
return x;
|
2009-07-30 04:54:08 +02:00
|
|
|
}
|
|
|
|
|
2009-07-30 07:41:12 +02:00
|
|
|
static inline void write32(u32 addr, u32 x) {
|
|
|
|
asm("stw %0,0(%1) ; eieio" : : "r"(x), "b"(0xc0000000 | addr));
|
2009-07-30 04:54:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// USB Gecko.
|
|
|
|
|
|
|
|
void usb_flush(int chn);
|
|
|
|
int usb_sendbuffer(int chn,const void *buffer,int size);
|
|
|
|
|
|
|
|
// Version string.
|
|
|
|
|
|
|
|
extern const char version[];
|
|
|
|
|
|
|
|
// Debug: blink the tray led.
|
|
|
|
|
2009-07-30 07:41:12 +02:00
|
|
|
static inline void blink(void) {
|
|
|
|
write32(0x0d8000c0, read32(0x0d8000c0) ^ 0x20);
|
2009-07-30 04:54:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void debug_printf(const char *fmt, ...);
|
|
|
|
void hexdump(FILE *fp, void *d, int len);
|
|
|
|
void aes_set_key(u8 *key);
|
|
|
|
void aes_decrypt(u8 *iv, u8 *inbuf, u8 *outbuf, unsigned long long len);
|
|
|
|
void aes_encrypt(u8 *iv, u8 *inbuf, u8 *outbuf, unsigned long long len);
|
|
|
|
|
|
|
|
#define TRACE(x) debug_printf("%s / %d: %d\n", __FUNCTION__, __LINE__, (x))
|
|
|
|
|
|
|
|
#define ISFS_ACCESS_READ 1
|
|
|
|
#define ISFS_ACCESS_WRITE 2
|
|
|
|
|
|
|
|
#endif
|