1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-25 09:45:02 +00:00
oot/include/ultra64/mbi.h

44 lines
1.1 KiB
C
Raw Normal View History

#ifndef ULTRA64_MBI_H
#define ULTRA64_MBI_H
2020-03-17 04:31:30 +00:00
/*
* Header file for the Media Binary Interface
*
* NOTE: This file is included by the RSP microcode, so any C-specific
* constructs must be bracketed by #ifdef _LANGUAGE_C
*
*/
/*
* the SHIFT macros are used to build display list commands, inserting
* bit-fields into a 32-bit word. They take a value, a shift amount,
2020-03-17 04:31:30 +00:00
* and a width.
*
* For the left shift, the lower bits of the value are masked,
2020-03-17 04:31:30 +00:00
* then shifted left.
*
* For the right shift, the value is shifted right, then the lower bits
* are masked.
*
* (NOTE: _SHIFTL(v, 0, 32) won't work, just use an assignment)
*
*/
#define _SHIFTL(v, s, w) \
((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s)))
#define _SHIFTR(v, s, w) \
((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1)))
2020-03-17 04:31:30 +00:00
#define G_ON (1)
#define G_OFF (0)
2020-03-17 04:31:30 +00:00
#include "gbi.h"
#include "abi.h"
2020-03-17 04:31:30 +00:00
#define NUM_SEGMENTS (16)
#define SEGMENT_OFFSET(a) ((u32)(a) & 0x00FFFFFF)
#define SEGMENT_NUMBER(a) (((u32)(a) << 4) >> 28)
#define SEGMENT_ADDR(num, off) (((num) << 24) + (off))
2020-03-17 04:31:30 +00:00
#endif