OpenSNES
Modern Open-Source SNES Development SDK
Loading...
Searching...
No Matches
Common Macros

Utility macros. More...

Macros

#define ARRAY_SIZE(arr)
 Get number of elements in array.
#define BIT(n)
 Create a bit mask.
#define CLAMP(x, lo, hi)
 Clamp value to range.
#define HI_BYTE(x)
 Get high byte of 16-bit value.
#define LO_BYTE(x)
 Get low byte of 16-bit value.
#define MAKE_WORD(lo, hi)
 Combine two bytes into 16-bit value.
#define MAX(a, b)
 Get maximum of two values.
#define MIN(a, b)
 Get minimum of two values.
#define NULL   ((void*)0)
 Null pointer constant.

Detailed Description

Utility macros.

Macro Definition Documentation

◆ ARRAY_SIZE

#define ARRAY_SIZE ( arr)
Value:
(sizeof(arr) / sizeof((arr)[0]))

Get number of elements in array.

Parameters
arrArray variable
Returns
Number of elements

◆ BIT

#define BIT ( n)
Value:
(1u << (n))

Create a bit mask.

Parameters
nBit number (0-15)
Returns
Bitmask with bit n set
u16 flags = BIT(0) | BIT(3); // 0x0009
#define BIT(n)
Create a bit mask.
Definition types.h:185
unsigned short u16
16-bit unsigned integer (0 to 65535)
Definition types.h:53

Uses 1u (unsigned) so that BIT(15) == 0x8000 holds under cc65816's 16-bit int (since chantier A1, 2026-05-08). With signed 1, 1 << 15 overflows to -32768 on a 16-bit int and compares unequal to the (long-promoted) 0x8000 literal.

◆ CLAMP

#define CLAMP ( x,
lo,
hi )
Value:
(((x) < (lo)) ? (lo) : (((x) > (hi)) ? (hi) : (x)))

Clamp value to range.

Parameters
xValue to clamp
loMinimum value
hiMaximum value

◆ HI_BYTE

#define HI_BYTE ( x)
Value:
((u8)(((x) >> 8) & 0xFF))
unsigned char u8
8-bit unsigned integer (0 to 255)
Definition types.h:47

Get high byte of 16-bit value.

Parameters
x16-bit value
Returns
High 8 bits

◆ LO_BYTE

#define LO_BYTE ( x)
Value:
((u8)((x) & 0xFF))

Get low byte of 16-bit value.

Parameters
x16-bit value
Returns
Low 8 bits

◆ MAKE_WORD

#define MAKE_WORD ( lo,
hi )
Value:
((u16)(((u8)(hi) << 8) | (u8)(lo)))

Combine two bytes into 16-bit value.

Parameters
loLow byte
hiHigh byte
Returns
16-bit value

◆ MAX

#define MAX ( a,
b )
Value:
(((a) > (b)) ? (a) : (b))
static u16 b
Definition main.c:157
static u16 a
Definition main.c:157

Get maximum of two values.

◆ MIN

#define MIN ( a,
b )
Value:
(((a) < (b)) ? (a) : (b))

Get minimum of two values.

◆ NULL

#define NULL   ((void*)0)

Null pointer constant.