mirror of
https://github.com/zeldaret/st
synced 2026-05-23 15:01:41 -04:00
1713ffc43b
* Decompile MainSelect overlay (~90%) * cleanup * jp delinks * fixed build and linking errors
48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
#ifndef GLOBAL_H
|
|
#define GLOBAL_H
|
|
|
|
#define ARRAY_LEN_U(arr) (u32)((sizeof(arr) / sizeof(*arr)))
|
|
#define ARRAY_LEN(arr) (s32)((sizeof(arr) / sizeof(*arr)))
|
|
|
|
// Prevent the IDE from reporting errors that the compiler/linker won't report
|
|
#ifdef __INTELLISENSE__
|
|
#endif
|
|
|
|
#define ARM _Pragma("thumb off")
|
|
#define THUMB _Pragma("thumb on")
|
|
|
|
// `override` was added in C++11 before the DS, so we only use the keyword to indicate overriden functions
|
|
#define override
|
|
|
|
#pragma define_section dtcm ".dtcm" \
|
|
".dtcm"
|
|
// Puts variables in the DTCM module
|
|
#define DTCM_BEGIN _Pragma("section dtcm begin")
|
|
#define DTCM_END _Pragma("section dtcm end")
|
|
|
|
#pragma define_section sbss ".data" \
|
|
".sbss"
|
|
// Define .sbss variables
|
|
#define SBSS_BEGIN _Pragma("section sbss begin")
|
|
#define SBSS_END _Pragma("section sbss end")
|
|
|
|
#define NO_INLINE __attribute__((never_inline))
|
|
|
|
#ifdef __MWERKS__
|
|
#define AT_ADDRESS(xyz) : (xyz)
|
|
#define DECL_SECTION(x) __declspec(section x)
|
|
#define EXPORT __declspec(export)
|
|
#define WEAK __declspec(weak)
|
|
#define ASM asm
|
|
#else
|
|
#define AT_ADDRESS(xyz)
|
|
#define DECL_SECTION(x)
|
|
#define EXPORT
|
|
#define WEAK
|
|
#define ASM
|
|
#endif
|
|
|
|
#define STRUCT_PAD(from, to) unsigned char _pad_##from[(to) - (from)]
|
|
|
|
#endif
|