2016-02-13 17:29:56 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <inttypes.h>
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <ctype.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
#define u8 uint8_t
|
|
|
|
#define u16 uint16_t
|
|
|
|
#define u32 uint32_t
|
|
|
|
#define u64 uint64_t
|
|
|
|
|
|
|
|
#define vu8 volatile u8
|
|
|
|
#define vu16 volatile u16
|
|
|
|
#define vu32 volatile u32
|
|
|
|
#define vu64 volatile u64
|
|
|
|
|
|
|
|
#define max(a,b) \
|
2016-04-28 22:54:31 +02:00
|
|
|
(((a) > (b)) ? (a) : (b))
|
2016-02-13 17:29:56 +01:00
|
|
|
#define min(a,b) \
|
2016-04-28 22:54:31 +02:00
|
|
|
(((a) < (b)) ? (a) : (b))
|
2016-02-13 17:29:56 +01:00
|
|
|
#define getbe16(d) \
|
|
|
|
(((d)[0]<<8) | (d)[1])
|
|
|
|
#define getbe32(d) \
|
|
|
|
((((u32) getbe16(d))<<16) | ((u32) getbe16(d+2)))
|
|
|
|
#define getbe64(d) \
|
|
|
|
((((u64) getbe32(d))<<32) | ((u64) getbe32(d+4)))
|
2016-07-26 20:58:41 +02:00
|
|
|
#define getle16(d) \
|
|
|
|
(((d)[1]<<8) | (d)[0])
|
|
|
|
#define getle32(d) \
|
|
|
|
((((u32) getle16(d+2))<<16) | ((u32) getle16(d)))
|
|
|
|
#define getle64(d) \
|
|
|
|
((((u64) getle32(d+4))<<32) | ((u64) getle32(d)))
|
2016-02-13 17:29:56 +01:00
|
|
|
#define align(v,a) \
|
|
|
|
(((v) % (a)) ? ((v) + (a) - ((v) % (a))) : (v))
|
2017-02-23 14:33:09 +01:00
|
|
|
|
2017-03-10 13:47:16 +01:00
|
|
|
// GodMode9 / SafeMode9 ("flavor" / splash screen)
|
2017-02-28 15:57:14 +01:00
|
|
|
#ifndef SAFEMODE
|
2017-03-10 13:47:16 +01:00
|
|
|
#define FLAVOR "GodMode9"
|
|
|
|
#define QLZ_SPLASH_H "gm9_splash_qlz.h"
|
|
|
|
#define QLZ_SPLASH gm9_splash_qlz
|
2017-02-28 15:57:14 +01:00
|
|
|
#else
|
|
|
|
#define FLAVOR "SafeMode9"
|
2017-03-10 13:47:16 +01:00
|
|
|
#define QLZ_SPLASH_H "sm9_splash_baby_qlz.h"
|
|
|
|
#define QLZ_SPLASH sm9_splash_baby_qlz
|
2017-02-28 15:57:14 +01:00
|
|
|
#endif
|
|
|
|
|
2016-11-21 20:04:46 +01:00
|
|
|
// GodMode9 version
|
2017-06-30 13:59:17 +02:00
|
|
|
#define VERSION "1.2.6"
|
2016-11-21 20:04:46 +01:00
|
|
|
|
2016-12-05 22:54:36 +01:00
|
|
|
// input / output paths
|
2017-06-21 01:08:59 +02:00
|
|
|
#define INPUT_PATHS "0:/gm9/support", "0:", "0:/files9" // legacy paths
|
2017-06-21 01:04:36 +02:00
|
|
|
#define SCRIPT_PATH "0:/gm9/scripts"
|
2017-06-21 01:08:59 +02:00
|
|
|
#define OUTPUT_PATH "0:/gm9/out"
|
2016-12-05 22:54:36 +01:00
|
|
|
|
2016-11-21 20:04:46 +01:00
|
|
|
// buffer area defines (in use by godmode.c)
|
|
|
|
#define DIR_BUFFER (0x21000000)
|
|
|
|
#define DIR_BUFFER_SIZE (0x100000)
|
2016-12-07 15:12:35 +01:00
|
|
|
// buffer area defines (temporary, in use by various functions)
|
|
|
|
// -> godmode.c hexviewer
|
2017-03-09 14:35:36 +01:00
|
|
|
// -> godmode.c loading payloads
|
2016-12-07 15:12:35 +01:00
|
|
|
// -> ncch.c seed setup
|
2016-12-15 11:46:00 +01:00
|
|
|
// -> cia.c ticket / titlekey setup
|
2016-12-10 15:40:36 +01:00
|
|
|
// -> gameutil.c various temporary stuff
|
2017-02-08 21:45:52 +01:00
|
|
|
// -> nandcmac.c for processing agbsave
|
2017-03-09 14:35:36 +01:00
|
|
|
// -> nandutil.c for storing essential backup
|
|
|
|
// -> ctrtransfer.c for SecureInfo (temporary)
|
|
|
|
// -> vgame.c for handling FIRMs
|
|
|
|
// -> vtickdb.c for parsing ticket.db
|
|
|
|
// -> qlzcomp.c for temporary compression stuff
|
|
|
|
// meaning: careful when using this!
|
2016-12-07 15:12:35 +01:00
|
|
|
#define TEMP_BUFFER ((u8*)0x21100000)
|
|
|
|
#define TEMP_BUFFER_SIZE (0x100000)
|
2016-12-10 15:40:36 +01:00
|
|
|
// buffer area defines (in use by fsutil.c, fsinit.c and gameutil.c)
|
2016-11-21 20:04:46 +01:00
|
|
|
#define MAIN_BUFFER ((u8*)0x21200000)
|
|
|
|
#define MAIN_BUFFER_SIZE (0x100000) // must be multiple of 0x200
|
|
|
|
// buffer area defines (in use by nand.c)
|
|
|
|
#define NAND_BUFFER ((u8*)0x21300000)
|
|
|
|
#define NAND_BUFFER_SIZE (0x100000) // must be multiple of 0x200
|
|
|
|
// buffer area defines (in use by sddata.c)
|
|
|
|
#define SDCRYPT_BUFFER ((u8*)0x21400000)
|
|
|
|
#define SDCRYPT_BUFFER_SIZE (0x100000)
|
2017-06-09 01:45:00 +02:00
|
|
|
// buffer area defines (in use by fsscript.c)
|
|
|
|
#define SCRIPT_BUFFER ((u8*)0x21500000)
|
|
|
|
#define SCRIPT_BUFFER_SIZE (0x100000)
|
2016-11-25 18:30:01 +01:00
|
|
|
// buffer area defines (in use by vgame.c)
|
2017-06-09 01:45:00 +02:00
|
|
|
#define VGAME_BUFFER ((u8*)0x21600000)
|
2016-11-30 21:01:05 +01:00
|
|
|
#define VGAME_BUFFER_SIZE (0x200000) // 2MB, big RomFS
|
2017-01-13 14:20:42 +01:00
|
|
|
// buffer area defines (in use by vcart.c)
|
2017-06-09 01:45:00 +02:00
|
|
|
#define VCART_BUFFER ((u8*)0x21800000)
|
2017-01-13 14:20:42 +01:00
|
|
|
#define VCART_BUFFER_SIZE (0x20000) // 128kB, this is more than enough
|
2016-11-25 12:28:34 +01:00
|
|
|
// buffer area defines (in use by image.c, for RAMdrive)
|
2017-04-13 13:08:35 -03:00
|
|
|
#define RAMDRV_BUFFER ((u8*)0x24000000) // top half of FCRAM
|
|
|
|
#define RAMDRV_SIZE_O3DS (0x04000000) // 64MB
|
|
|
|
#define RAMDRV_SIZE_N3DS (0x0C000000) // 192MB
|