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>
|
2017-08-08 09:40:09 -03:00
|
|
|
#include <types.h>
|
2017-08-25 02:11:46 +02:00
|
|
|
#include <stdalign.h>
|
2016-02-13 17:29:56 +01:00
|
|
|
|
|
|
|
#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-08-25 02:11:46 +02:00
|
|
|
#define countof(x) \
|
|
|
|
(sizeof(x) / sizeof((x)[0]))
|
2018-01-24 23:32:06 +01:00
|
|
|
|
|
|
|
#define bkpt \
|
|
|
|
asm("bkpt\n\t")
|
2017-08-25 02:11:46 +02:00
|
|
|
|
|
|
|
#define STATIC_ASSERT(...) \
|
|
|
|
_Static_assert((__VA_ARGS__), #__VA_ARGS__)
|
2017-12-11 02:47:29 +01:00
|
|
|
|
|
|
|
// standard output path (support file paths are in support.h)
|
2017-06-21 01:08:59 +02:00
|
|
|
#define OUTPUT_PATH "0:/gm9/out"
|
2016-12-05 22:54:36 +01:00
|
|
|
|
2018-01-24 23:32:06 +01:00
|
|
|
// used in several places
|
|
|
|
#define STD_BUFFER_SIZE 0x100000 // must be a multiple of 0x200
|
|
|
|
|
2016-11-21 20:04:46 +01:00
|
|
|
// buffer area defines (in use by godmode.c)
|
2017-09-08 03:09:49 +02:00
|
|
|
#define DIR_BUFFER (0x20000000)
|
2016-11-21 20:04:46 +01:00
|
|
|
#define DIR_BUFFER_SIZE (0x100000)
|
2017-09-08 03:09:49 +02:00
|
|
|
// buffer area defines (in use by nand.c)
|
2018-01-24 23:32:06 +01:00
|
|
|
#define NAND_BUFFER ((u8*)0x20100000)
|
2017-09-08 03:09:49 +02:00
|
|
|
#define NAND_BUFFER_SIZE (0x100000) // must be multiple of 0x200
|
|
|
|
// buffer area defines (in use by sddata.c)
|
2018-01-24 23:32:06 +01:00
|
|
|
#define SDCRYPT_BUFFER ((u8*)0x20200000)
|
2017-09-08 03:09:49 +02:00
|
|
|
#define SDCRYPT_BUFFER_SIZE (0x100000)
|
|
|
|
// buffer area defines (in use by scripting.c)
|
2018-01-24 23:32:06 +01:00
|
|
|
#define SCRIPT_BUFFER ((u8*)0x20300000)
|
2017-09-08 03:09:49 +02:00
|
|
|
#define SCRIPT_BUFFER_SIZE (0x100000)
|
|
|
|
// buffer area defines (in use by vgame.c)
|
2018-01-24 23:32:06 +01:00
|
|
|
#define VGAME_BUFFER ((u8*)0x20400000)
|
2017-09-08 03:09:49 +02:00
|
|
|
#define VGAME_BUFFER_SIZE (0x200000) // 2MB, big RomFS
|
|
|
|
// buffer area defines (in use by vcart.c)
|
2018-01-24 23:32:06 +01:00
|
|
|
#define VCART_BUFFER ((u8*)0x20600000)
|
2017-09-08 03:09:49 +02: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-09-26 19:56:19 -03:00
|
|
|
#define RAMDRV_BUFFER ((u8*)0x22800000) // top of STACK
|
|
|
|
#define RAMDRV_SIZE_O3DS (0x5800000) // 88MB
|
|
|
|
#define RAMDRV_SIZE_N3DS (0xD800000) // 216MB
|