Files
st/include/global.h
T
Yanis 804b25cb90 Misc Stuff 2 (#33)
* match UnkStruct_ov000_020b4f84_00_Base

* lots of random stuff

* match other funcs from game.cpp

* data_02049a2c -> gGame, UnkStruct_02049a2c -> Game

* match operator new

* fix regressions

* fix some warnings

* another round of random things

* another round of random things 2

* complete slots column in overlays.md

* add scene indices

* gamemode stuff

* misc stuff

* fix build issues

* document random things

* fix regressions

* final round of random things (for now)
2026-02-18 22:23:42 +01:00

55 lines
1.5 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")
#ifdef __MWERKS__
#define NO_INLINE __attribute__((never_inline))
#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
#define NO_INLINE
#endif
#define STRUCT_PAD(from, to) unsigned char _pad_##from[(to) - (from)]
#define SUBSCREEN_WIDTH 256
#define SUBSCREEN_HEIGHT 192
#define ALIGN_PREV(X, N) ((X) & ~((N) - 1))
#define ALIGN_NEXT(X, N) ALIGN_PREV(((X) + (N) - 1), N)
#define ALIGN(X, N) ((X + N) & ~N)
#endif