mirror of
https://github.com/zeldaret/tp
synced 2026-08-18 05:38:47 -04:00
j2d / map_path work, d_drawlist / d_attention cleanup (#208)
* work on fop actor / actor mng, daalink, d_a_obj_item * d_a_title mostly decompiled * daalink / d_event / JMessage / dmsg_out_font work * msg_scrn_base / msg_scrn_boss * some work on mDo machine, d_menu_save, d_tresure, and various * remove asm * progress * finish d_menu_save / d_pane_class_alpha / d_pane_class / rename some data * rename more data * remove asm / progress * match all of d_pane_class * fixes / some dKankyo doc * bunch of j2d work. d_drawlist / d_attention cleanup * progress / asm * cleanup wip * decompile JStage * setup some more JStudio structs * set up d_demo classes * some d_demo work * cleanup dolphin os stuff * some initial dEvent documentation * some At collision documentation * match JUTConsole::doDraw * dbgs work / split up some of d_a_alink into .inc files * d_a_alink_spinner work
This commit is contained in:
+98
-844
@@ -2,821 +2,16 @@
|
||||
#define GX_H_
|
||||
|
||||
#include "dolphin/gx/GXDisplayList.h"
|
||||
#include "dolphin/gx/GXStruct.h"
|
||||
#include "dolphin/gx/GXEnum.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
#include "dolphin/mtx/mtx44.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "global.h"
|
||||
|
||||
typedef struct _GXColor {
|
||||
/* 0x0 */ u8 r;
|
||||
/* 0x1 */ u8 g;
|
||||
/* 0x2 */ u8 b;
|
||||
/* 0x3 */ u8 a;
|
||||
} GXColor;
|
||||
|
||||
typedef struct _GXColorS10 {
|
||||
/* 0x0 */ s16 r;
|
||||
/* 0x2 */ s16 g;
|
||||
/* 0x4 */ s16 b;
|
||||
/* 0x6 */ s16 a;
|
||||
} GXColorS10;
|
||||
|
||||
typedef struct _GXRenderModeObj {
|
||||
s32 vi_tv_mode;
|
||||
u16 fb_width;
|
||||
u16 efb_height;
|
||||
u16 xfb_height;
|
||||
u16 vi_x_origin;
|
||||
u16 vi_y_origin;
|
||||
u16 vi_width;
|
||||
u16 vi_height;
|
||||
s32 xfb_mode;
|
||||
u8 field_rendering;
|
||||
bool antialiasing;
|
||||
u8 sample_pattern[12][2];
|
||||
u8 vfilter[7];
|
||||
} GXRenderModeObj;
|
||||
|
||||
STATIC_ASSERT(sizeof(_GXRenderModeObj) == 60);
|
||||
|
||||
typedef struct _GXTexObj {
|
||||
/* 0x00 */ u32 texture_filter;
|
||||
/* 0x04 */ u32 texture_lod;
|
||||
/* 0x08 */ u32 texture_size;
|
||||
/* 0x0C */ u32 texture_address;
|
||||
/* 0x10 */ u32 user_data;
|
||||
/* 0x14 */ u32 texture_format;
|
||||
/* 0x18 */ u32 tlut_name;
|
||||
/* 0x1C */ u16 texture_time_count;
|
||||
/* 0x1E */ u8 texture_tile_type;
|
||||
/* 0x1F */ u8 texture_flags;
|
||||
} GXTexObj;
|
||||
|
||||
typedef struct _GXTlutObj {
|
||||
/* 0x0 */ u32 format;
|
||||
/* 0x4 */ u32 address;
|
||||
/* 0x8 */ u32 numEntries;
|
||||
} GXTlutObj;
|
||||
|
||||
typedef struct _GXLightObj {
|
||||
/* 0x0 */ u32 data[16];
|
||||
} GXLightObj;
|
||||
|
||||
typedef struct _GXFogAdjTable {
|
||||
/* 0x0 */ u16 r[10];
|
||||
} GXFogAdjTable;
|
||||
|
||||
typedef struct _GXFifoObj {
|
||||
/* 0x00 */ void* base;
|
||||
/* 0x04 */ u32 end;
|
||||
/* 0x08 */ u32 size;
|
||||
/* 0x0C */ u32 high_wtrmark;
|
||||
/* 0x10 */ u32 low_wtrmark;
|
||||
/* 0x14 */ void* read_ptr;
|
||||
/* 0x18 */ void* write_ptr;
|
||||
/* 0x1C */ void* rw_dst;
|
||||
/* 0x20 */ u8 fifo_wrap;
|
||||
/* 0x21 */ bool cpu_fifo_ready;
|
||||
/* 0x22 */ bool gp_fifo_ready;
|
||||
/* 0x23 */ u8 field_0x23[93];
|
||||
} GXFifoObj; // Size: 0x80
|
||||
|
||||
typedef struct _GXTexRegion {
|
||||
/* 0x00 */ u8 dummy[0x10];
|
||||
} GXTexRegion; // Size: 0x10
|
||||
|
||||
typedef enum _GXPrimitive {
|
||||
/* 0x80 */ GX_QUADS = 0x80,
|
||||
/* 0x90 */ GX_TRIANGLES = 0x90,
|
||||
/* 0x98 */ GX_TRIANGLESTRIP = 0x98,
|
||||
/* 0xA0 */ GX_TRIANGLEFAN = 0xA0,
|
||||
/* 0xA8 */ GX_LINES = 0xA8,
|
||||
/* 0xB0 */ GX_LINESTRIP = 0xB0,
|
||||
/* 0xB8 */ GX_POINTS = 0xB8,
|
||||
} GXPrimitive;
|
||||
|
||||
typedef enum _GXCullMode {
|
||||
/* 0x0 */ GX_CULL_NONE,
|
||||
/* 0x1 */ GX_CULL_FRONT,
|
||||
/* 0x2 */ GX_CULL_BACK,
|
||||
/* 0x3 */ GX_CULL_ALL
|
||||
} GXCullMode;
|
||||
|
||||
typedef enum _GXBool {
|
||||
/* 0x0 */ GX_FALSE,
|
||||
/* 0x1 */ GX_TRUE,
|
||||
/* 0x0 */ GX_DISABLE = 0,
|
||||
/* 0x1 */ GX_ENABLE
|
||||
} GXBool;
|
||||
|
||||
typedef enum _GXTexMapID {
|
||||
/* 0x000 */ GX_TEXMAP0,
|
||||
/* 0x001 */ GX_TEXMAP1,
|
||||
/* 0x002 */ GX_TEXMAP2,
|
||||
/* 0x003 */ GX_TEXMAP3,
|
||||
/* 0x004 */ GX_TEXMAP4,
|
||||
/* 0x005 */ GX_TEXMAP5,
|
||||
/* 0x006 */ GX_TEXMAP6,
|
||||
/* 0x007 */ GX_TEXMAP7,
|
||||
/* 0x008 */ GX_MAX_TEXMAP,
|
||||
/* 0x0FF */ GX_TEXMAP_NULL = 255,
|
||||
/* 0x100 */ GX_TEXMAP_DISABLE,
|
||||
} GXTexMapID;
|
||||
|
||||
typedef enum _GXTevStageID {
|
||||
/* 0x00 */ GX_TEVSTAGE0,
|
||||
/* 0x01 */ GX_TEVSTAGE1,
|
||||
/* 0x02 */ GX_TEVSTAGE2,
|
||||
/* 0x03 */ GX_TEVSTAGE3,
|
||||
/* 0x04 */ GX_TEVSTAGE4,
|
||||
/* 0x05 */ GX_TEVSTAGE5,
|
||||
/* 0x06 */ GX_TEVSTAGE6,
|
||||
/* 0x07 */ GX_TEVSTAGE7,
|
||||
/* 0x08 */ GX_TEVSTAGE8,
|
||||
/* 0x09 */ GX_TEVSTAGE9,
|
||||
/* 0x0A */ GX_TEVSTAGE10,
|
||||
/* 0x0B */ GX_TEVSTAGE11,
|
||||
/* 0x0C */ GX_TEVSTAGE12,
|
||||
/* 0x0D */ GX_TEVSTAGE13,
|
||||
/* 0x0E */ GX_TEVSTAGE14,
|
||||
/* 0x0F */ GX_TEVSTAGE15,
|
||||
/* 0x10 */ GX_MAX_TEVSTAGE,
|
||||
} GXTevStageID;
|
||||
|
||||
typedef enum _GXTexCoordID {
|
||||
/* 0x00 */ GX_TEXCOORD0,
|
||||
/* 0x01 */ GX_TEXCOORD1,
|
||||
/* 0x02 */ GX_TEXCOORD2,
|
||||
/* 0x03 */ GX_TEXCOORD3,
|
||||
/* 0x04 */ GX_TEXCOORD4,
|
||||
/* 0x05 */ GX_TEXCOORD5,
|
||||
/* 0x06 */ GX_TEXCOORD6,
|
||||
/* 0x07 */ GX_TEXCOORD7,
|
||||
/* 0x08 */ GX_MAXCOORD,
|
||||
/* 0xFF */ GX_TEXCOORD_NULL = 255,
|
||||
} GXTexCoordID;
|
||||
|
||||
typedef enum _GXChannelID {
|
||||
/* 0x00 */ GX_COLOR0,
|
||||
/* 0x01 */ GX_COLOR1,
|
||||
/* 0x02 */ GX_ALPHA0,
|
||||
/* 0x03 */ GX_ALPHA1,
|
||||
/* 0x04 */ GX_COLOR0A0,
|
||||
/* 0x05 */ GX_COLOR1A1,
|
||||
/* 0x06 */ GX_COLOR_ZERO,
|
||||
/* 0x07 */ GX_ALPHA_BUMP,
|
||||
/* 0x08 */ GX_ALPHA_BUMPN,
|
||||
/* 0xFF */ GX_COLOR_NULL = 255,
|
||||
} GXChannelID;
|
||||
|
||||
typedef enum _GXColorSrc {
|
||||
/* 0x0 */ GX_SRC_REG,
|
||||
/* 0x1 */ GX_SRC_VTX,
|
||||
} GXColorSrc;
|
||||
|
||||
typedef enum _GXLightID {
|
||||
/* 0x000 */ GX_LIGHT_NULL = 0,
|
||||
/* 0x001 */ GX_LIGHT0 = 1 << 0,
|
||||
/* 0x002 */ GX_LIGHT1 = 1 << 1,
|
||||
/* 0x004 */ GX_LIGHT2 = 1 << 2,
|
||||
/* 0x008 */ GX_LIGHT3 = 1 << 3,
|
||||
/* 0x010 */ GX_LIGHT4 = 1 << 4,
|
||||
/* 0x020 */ GX_LIGHT5 = 1 << 5,
|
||||
/* 0x040 */ GX_LIGHT6 = 1 << 6,
|
||||
/* 0x080 */ GX_LIGHT7 = 1 << 7,
|
||||
/* 0x100 */ GX_MAX_LIGHT = 1 << 8,
|
||||
} GXLightID;
|
||||
|
||||
typedef enum _GXDiffuseFn {
|
||||
/* 0x0 */ GX_DF_NONE,
|
||||
/* 0x1 */ GX_DF_SIGN,
|
||||
/* 0x2 */ GX_DF_CLAMP,
|
||||
} GXDiffuseFn;
|
||||
|
||||
typedef enum _GXAttnFn {
|
||||
/* 0x0 */ GX_AF_SPEC,
|
||||
/* 0x1 */ GX_AF_SPOT,
|
||||
/* 0x2 */ GX_AF_NONE,
|
||||
} GXAttnFn;
|
||||
|
||||
typedef enum _GXDistAttnFn {
|
||||
/* 0x0 */ GX_DA_OFF,
|
||||
/* 0x1 */ GX_DA_GENTLE,
|
||||
/* 0x2 */ GX_DA_MEDIUM,
|
||||
/* 0x3 */ GX_DA_STEEP
|
||||
} GXDistAttnFn;
|
||||
|
||||
typedef enum _GXSpotFn {
|
||||
/* 0x0 */ GX_SP_OFF,
|
||||
/* 0x1 */ GX_SP_FLAT,
|
||||
/* 0x2 */ GX_SP_COS,
|
||||
/* 0x3 */ GX_SP_COS2,
|
||||
/* 0x4 */ GX_SP_SHARP,
|
||||
/* 0x5 */ GX_SP_RING1,
|
||||
/* 0x6 */ GX_SP_RING2
|
||||
} GXSpotFn;
|
||||
|
||||
typedef enum _GXTevMode {
|
||||
/* 0x0 */ GX_MODULATE,
|
||||
/* 0x1 */ GX_DECAL,
|
||||
/* 0x2 */ GX_BLEND,
|
||||
/* 0x3 */ GX_REPLACE,
|
||||
/* 0x4 */ GX_PASSCLR,
|
||||
} GXTevMode;
|
||||
|
||||
typedef enum _GXBlendMode {
|
||||
/* 0x0 */ GX_BM_NONE,
|
||||
/* 0x1 */ GX_BM_BLEND,
|
||||
/* 0x2 */ GX_BM_LOGIC,
|
||||
/* 0x3 */ GX_BM_SUBTRACT,
|
||||
/* 0x4 */ GX_MAX_BLENDMODE,
|
||||
} GXBlendMode;
|
||||
|
||||
typedef enum _GXBlendFactor {
|
||||
/* 0x0 */ GX_BL_ZERO,
|
||||
/* 0x1 */ GX_BL_ONE,
|
||||
/* 0x2 */ GX_BL_SRC_COLOR,
|
||||
/* 0x2 */ GX_BL_DST_COLOR = 2,
|
||||
/* 0x3 */ GX_BL_INV_SRC_COLOR,
|
||||
/* 0x3 */ GX_BL_INV_DST_COLOR = 3,
|
||||
/* 0x4 */ GX_BL_SRC_ALPHA,
|
||||
/* 0x5 */ GX_BL_INV_SRC_ALPHA,
|
||||
/* 0x6 */ GX_BL_DST_ALPHA,
|
||||
/* 0x7 */ GX_BL_INV_DST_ALPHA,
|
||||
} GXBlendFactor;
|
||||
|
||||
typedef enum _GXLogicOp {
|
||||
/* 0x0 */ GX_LO_CLEAR,
|
||||
/* 0x1 */ GX_LO_AND,
|
||||
/* 0x2 */ GX_LO_REV_AND,
|
||||
/* 0x3 */ GX_LO_COPY,
|
||||
/* 0x4 */ GX_LO_INV_AND,
|
||||
/* 0x5 */ GX_LO_NOOP,
|
||||
/* 0x6 */ GX_LO_XOR,
|
||||
/* 0x7 */ GX_LO_OR,
|
||||
/* 0x8 */ GX_LO_NOR,
|
||||
/* 0x9 */ GX_LO_EQUIV,
|
||||
/* 0xA */ GX_LO_INV,
|
||||
/* 0xB */ GX_LO_REV_OR,
|
||||
/* 0xC */ GX_LO_INV_COPY,
|
||||
/* 0xD */ GX_LO_INV_OR,
|
||||
/* 0xE */ GX_LO_NAND,
|
||||
/* 0xF */ GX_LO_SET,
|
||||
} GXLogicOp;
|
||||
|
||||
typedef enum _GXVtxFmt {
|
||||
/* 0x0 */ GX_VTXFMT0,
|
||||
/* 0x1 */ GX_VTXFMT1,
|
||||
/* 0x2 */ GX_VTXFMT2,
|
||||
/* 0x3 */ GX_VTXFMT3,
|
||||
/* 0x4 */ GX_VTXFMT4,
|
||||
/* 0x5 */ GX_VTXFMT5,
|
||||
/* 0x6 */ GX_VTXFMT6,
|
||||
/* 0x7 */ GX_VTXFMT7,
|
||||
/* 0x8 */ GX_MAX_VTXFMT,
|
||||
} GXVtxFmt;
|
||||
|
||||
typedef enum _GXAttr {
|
||||
/* 0x00 */ GX_VA_PNMTXIDX,
|
||||
/* 0x01 */ GX_VA_TEX0MTXIDX,
|
||||
/* 0x02 */ GX_VA_TEX1MTXIDX,
|
||||
/* 0x03 */ GX_VA_TEX2MTXIDX,
|
||||
/* 0x04 */ GX_VA_TEX3MTXIDX,
|
||||
/* 0x05 */ GX_VA_TEX4MTXIDX,
|
||||
/* 0x06 */ GX_VA_TEX5MTXIDX,
|
||||
/* 0x07 */ GX_VA_TEX6MTXIDX,
|
||||
/* 0x08 */ GX_VA_TEX7MTXIDX,
|
||||
/* 0x09 */ GX_VA_POS,
|
||||
/* 0x0A */ GX_VA_NRM,
|
||||
/* 0x0B */ GX_VA_CLR0,
|
||||
/* 0x0C */ GX_VA_CLR1,
|
||||
/* 0x0D */ GX_VA_TEX0,
|
||||
/* 0x0E */ GX_VA_TEX1,
|
||||
/* 0x0F */ GX_VA_TEX2,
|
||||
/* 0x10 */ GX_VA_TEX3,
|
||||
/* 0x11 */ GX_VA_TEX4,
|
||||
/* 0x12 */ GX_VA_TEX5,
|
||||
/* 0x13 */ GX_VA_TEX6,
|
||||
/* 0x14 */ GX_VA_TEX7,
|
||||
/* 0x15 */ GX_POS_MTX_ARRAY,
|
||||
/* 0x16 */ GX_NRM_MTX_ARRAY,
|
||||
/* 0x17 */ GX_TEX_MTX_ARRAY,
|
||||
/* 0x18 */ GX_LIGHT_ARRAY,
|
||||
/* 0x19 */ GX_VA_NBT,
|
||||
/* 0x1A */ GX_VA_MAX_ATTR,
|
||||
/* 0xFF */ GX_VA_NULL = 255,
|
||||
} GXAttr;
|
||||
|
||||
typedef enum _GXCompCnt {
|
||||
/* 0x0 */ GX_POS_XY = 0,
|
||||
/* 0x1 */ GX_POS_XYZ = 1,
|
||||
/* 0x0 */ GX_NRM_XYZ = 0,
|
||||
/* 0x1 */ GX_NRM_NBT = 1,
|
||||
/* 0x2 */ GX_NRM_NBT3 = 2,
|
||||
/* 0x0 */ GX_CLR_RGB = 0,
|
||||
/* 0x1 */ GX_CLR_RGBA = 1,
|
||||
/* 0x0 */ GX_TEX_S = 0,
|
||||
/* 0x1 */ GX_TEX_ST = 1,
|
||||
} GXCompCnt;
|
||||
|
||||
typedef enum _GXCompType {
|
||||
/* 0x0 */ GX_U8,
|
||||
/* 0x1 */ GX_S8,
|
||||
/* 0x2 */ GX_U16,
|
||||
/* 0x3 */ GX_S16,
|
||||
/* 0x4 */ GX_F32,
|
||||
/* 0x0 */ GX_RGB565 = 0,
|
||||
/* 0x1 */ GX_RGB8,
|
||||
/* 0x2 */ GX_RGBX8,
|
||||
/* 0x3 */ GX_RGBA4,
|
||||
/* 0x4 */ GX_RGBA6,
|
||||
/* 0x5 */ GX_RGBA8,
|
||||
} GXCompType;
|
||||
|
||||
typedef enum _GXAttrType {
|
||||
/* 0x0 */ GX_NONE,
|
||||
/* 0x1 */ GX_DIRECT,
|
||||
/* 0x2 */ GX_INDEX8,
|
||||
/* 0x3 */ GX_INDEX16,
|
||||
} GXAttrType;
|
||||
|
||||
typedef enum _GXTevOp {
|
||||
/* 0x0 */ GX_TEV_ADD,
|
||||
/* 0x1 */ GX_TEV_SUB,
|
||||
/* 0x8 */ GX_TEV_COMP_R8_GT = 8,
|
||||
/* 0x9 */ GX_TEV_COMP_R8_EQ,
|
||||
/* 0xA */ GX_TEV_COMP_GR16_GT,
|
||||
/* 0xB */ GX_TEV_COMP_GR16_EQ,
|
||||
/* 0xC */ GX_TEV_COMP_BGR24_GT,
|
||||
/* 0xD */ GX_TEV_COMP_BGR24_EQ,
|
||||
/* 0xE */ GX_TEV_COMP_A8_GT,
|
||||
/* 0xE */ GX_TEV_COMP_RGB8_GT = 14,
|
||||
/* 0xF */ GX_TEV_COMP_RGB8_EQ,
|
||||
/* 0xF */ GX_TEV_COMP_A8_EQ = 15,
|
||||
} GXTevOp;
|
||||
|
||||
typedef enum _GXTevBias {
|
||||
/* 0x0 */ GX_TB_ZERO,
|
||||
/* 0x1 */ GX_TB_ADDHALF,
|
||||
/* 0x2 */ GX_TB_SUBHALF,
|
||||
/* 0x3 */ GX_MAX_TEVBIAS,
|
||||
} GXTevBias;
|
||||
|
||||
typedef enum _GXTevColorArg {
|
||||
/* 0x0 */ GX_CC_CPREV,
|
||||
/* 0x1 */ GX_CC_APREV,
|
||||
/* 0x2 */ GX_CC_C0,
|
||||
/* 0x3 */ GX_CC_A0,
|
||||
/* 0x4 */ GX_CC_C1,
|
||||
/* 0x5 */ GX_CC_A1,
|
||||
/* 0x6 */ GX_CC_C2,
|
||||
/* 0x7 */ GX_CC_A2,
|
||||
/* 0x8 */ GX_CC_TEXC,
|
||||
/* 0x9 */ GX_CC_TEXA,
|
||||
/* 0xA */ GX_CC_RASC,
|
||||
/* 0xB */ GX_CC_RASA,
|
||||
/* 0xC */ GX_CC_ONE,
|
||||
/* 0xD */ GX_CC_HALF,
|
||||
/* 0xE */ GX_CC_KONST,
|
||||
/* 0xF */ GX_CC_ZERO,
|
||||
} GXTevColorArg;
|
||||
|
||||
typedef enum _GXTevColor {
|
||||
/* 0x0 */ GX_CH_RED,
|
||||
/* 0x1 */ GX_CH_GREEN,
|
||||
/* 0x2 */ GX_CH_BLUE,
|
||||
/* 0x3 */ GX_CH_ALPHA,
|
||||
} GXTevColor;
|
||||
|
||||
typedef enum _GXTevScale {
|
||||
/* 0x0 */ GX_CS_SCALE_1,
|
||||
/* 0x1 */ GX_CS_SCALE_2,
|
||||
/* 0x2 */ GX_CS_SCALE_4,
|
||||
/* 0x3 */ GX_CS_DIVIDE_2,
|
||||
/* 0x4 */ GX_MAX_TEVSCALE
|
||||
} GXTevScale;
|
||||
|
||||
typedef enum _GXTevRegID {
|
||||
/* 0x0 */ GX_TEVPREV,
|
||||
/* 0x1 */ GX_TEVREG0,
|
||||
/* 0x2 */ GX_TEVREG1,
|
||||
/* 0x3 */ GX_TEVREG2,
|
||||
/* 0x4 */ GX_MAX_TEVREG
|
||||
} GXTevRegID;
|
||||
|
||||
typedef enum _GXTevAlphaArg {
|
||||
/* 0x0 */ GX_CA_APREV,
|
||||
/* 0x1 */ GX_CA_A0,
|
||||
/* 0x2 */ GX_CA_A1,
|
||||
/* 0x3 */ GX_CA_A2,
|
||||
/* 0x4 */ GX_CA_TEXA,
|
||||
/* 0x5 */ GX_CA_RASA,
|
||||
/* 0x6 */ GX_CA_KONST,
|
||||
/* 0x7 */ GX_CA_ZERO,
|
||||
} GXTevAlphaArg;
|
||||
|
||||
typedef enum _GXTexFmt {
|
||||
/* 0x0 */ GX_TF_I4,
|
||||
/* 0x1 */ GX_TF_I8,
|
||||
/* 0x2 */ GX_TF_IA4,
|
||||
/* 0x3 */ GX_TF_IA8,
|
||||
/* 0x4 */ GX_TF_RGB565,
|
||||
/* 0x5 */ GX_TF_TGB5A3,
|
||||
/* 0x6 */ GX_TF_RGBA8,
|
||||
/* 0x7 */ GX_TF_CI4,
|
||||
/* 0x8 */ GX_TF_CI8,
|
||||
/* 0x9 */ GX_TF_CI14,
|
||||
/* 0xE */ GX_TF_CMPR = 14,
|
||||
/* 0x10 */ _GX_TF_ZTF = 0x10,
|
||||
/* 0x11 */ GX_TF_Z8 = (0x1 | _GX_TF_ZTF),
|
||||
/* 0x13 */ GX_TF_Z16 = (0x3 | _GX_TF_ZTF),
|
||||
/* 0x16 */ GX_TF_Z24X8 = (0x6 | _GX_TF_ZTF),
|
||||
/* 0x20 */ _GX_TF_CTF = 0x20,
|
||||
/* 0x30 */ GX_CTF_Z4 = (0x0 | _GX_TF_ZTF | _GX_TF_CTF),
|
||||
/* 0x39 */ GX_CTF_Z8M = (0x9 | _GX_TF_ZTF | _GX_TF_CTF),
|
||||
/* 0x3A */ GX_CTF_Z8L = (0xA | _GX_TF_ZTF | _GX_TF_CTF),
|
||||
/* 0x3C */ GX_CTF_Z16L = (0xC | _GX_TF_ZTF | _GX_TF_CTF),
|
||||
} GXTexFmt;
|
||||
|
||||
typedef enum _GXGamma {
|
||||
/* 0x0 */ GX_GM_1_0,
|
||||
/* 0x0 */ GX_GM_1_7,
|
||||
/* 0x0 */ GX_GM_2_2,
|
||||
} GXGamma;
|
||||
|
||||
typedef enum _GXTlutFmt {
|
||||
/* 0x0 */ GX_TL_IA8,
|
||||
/* 0x1 */ GX_TL_RGB565,
|
||||
/* 0x2 */ GX_TL_RGB5A3,
|
||||
} GXTlutFmt;
|
||||
|
||||
typedef enum _GXTlut {
|
||||
/* 0x00 */ GX_TLUT0,
|
||||
/* 0x01 */ GX_TLUT1,
|
||||
/* 0x02 */ GX_TLUT2,
|
||||
/* 0x03 */ GX_TLUT3,
|
||||
/* 0x04 */ GX_TLUT4,
|
||||
/* 0x05 */ GX_TLUT5,
|
||||
/* 0x06 */ GX_TLUT6,
|
||||
/* 0x07 */ GX_TLUT7,
|
||||
/* 0x08 */ GX_TLUT8,
|
||||
/* 0x09 */ GX_TLUT9,
|
||||
/* 0x0A */ GX_TLUT10,
|
||||
/* 0x0B */ GX_TLUT11,
|
||||
/* 0x0C */ GX_TLUT12,
|
||||
/* 0x0D */ GX_TLUT13,
|
||||
/* 0x0E */ GX_TLUT14,
|
||||
/* 0x0F */ GX_TLUT15,
|
||||
/* 0x10 */ GX_BIGTLUT0,
|
||||
/* 0x11 */ GX_BIGTLUT1,
|
||||
/* 0x12 */ GX_BIGTLUT2,
|
||||
/* 0x13 */ GX_BIGTLUT3,
|
||||
} GXTlut;
|
||||
|
||||
/* 8-bit version of GXTexFmt for use in structures */
|
||||
typedef enum _GXTexFmt8 {
|
||||
/* 0x20 */ GX_CTF_R4 = (0x0 | _GX_TF_CTF),
|
||||
/* 0x22 */ GX_CTF_RA4 = (0x2 | _GX_TF_CTF),
|
||||
/* 0x23 */ GX_CTF_RA8 = (0x3 | _GX_TF_CTF),
|
||||
/* 0x26 */ GX_CTF_YUVA8 = (0x6 | _GX_TF_CTF),
|
||||
/* 0x27 */ GX_CTF_A8 = (0x7 | _GX_TF_CTF),
|
||||
/* 0x28 */ GX_CTF_R8 = (0x8 | _GX_TF_CTF),
|
||||
/* 0x29 */ GX_CTF_G8 = (0x9 | _GX_TF_CTF),
|
||||
/* 0x2A */ GX_CTF_B8 = (0xA | _GX_TF_CTF),
|
||||
/* 0x2B */ GX_CTF_RG8 = (0xB | _GX_TF_CTF),
|
||||
/* 0x2C */ GX_CTF_GB8 = (0xC | _GX_TF_CTF),
|
||||
} GXTexFmt8;
|
||||
|
||||
typedef enum _GXTexWrapMode {
|
||||
/* 0x0 */ GX_CLAMP,
|
||||
/* 0x1 */ GX_REPEAT,
|
||||
/* 0x2 */ GX_MIRROR,
|
||||
/* 0x3 */ GX_MAX_TEXWRAP_MODE,
|
||||
} GXTexWrapMode;
|
||||
|
||||
typedef enum _GXTexFilter {
|
||||
/* 0x0 */ GX_NEAR,
|
||||
/* 0x1 */ GX_LINEAR,
|
||||
/* 0x2 */ GX_NEAR_MIP_NEAR,
|
||||
/* 0x3 */ GX_LIN_MIP_NEAR,
|
||||
/* 0x4 */ GX_NEAR_MIP_LIN,
|
||||
/* 0x5 */ GX_LIN_MIP_LIN,
|
||||
} GXTexFilter;
|
||||
|
||||
typedef enum _GXAnisotropy {
|
||||
/* 0x0 */ GX_ANISO_1,
|
||||
/* 0x1 */ GX_ANISO_2,
|
||||
/* 0x2 */ GX_ANISO_4,
|
||||
/* 0x3 */ GX_MAX_ANISOTROPY,
|
||||
} GXAnisotropy;
|
||||
|
||||
enum GXCITexFmt {
|
||||
/* 0x8 */ GX_TF_C4 = 8,
|
||||
/* 0x8 */ GX_TF_C8,
|
||||
/* 0xA */ GX_TF_C14X2
|
||||
};
|
||||
|
||||
typedef enum _GXTexMtxType {
|
||||
/* 0x0 */ GX_MTX3x4,
|
||||
/* 0x1 */ GX_MTX2x4
|
||||
} GXTexMtxType;
|
||||
|
||||
typedef enum _GXCompare {
|
||||
/* 0x0 */ GX_NEVER,
|
||||
/* 0x1 */ GX_LESS,
|
||||
/* 0x2 */ GX_EQUAL,
|
||||
/* 0x3 */ GX_LEQUAL,
|
||||
/* 0x4 */ GX_GREATER,
|
||||
/* 0x5 */ GX_NEQUAL,
|
||||
/* 0x6 */ GX_GEQUAL,
|
||||
/* 0x7 */ GX_ALWAYS,
|
||||
} GXCompare;
|
||||
|
||||
typedef enum _GXAlphaOp {
|
||||
/* 0x0 */ GX_AOP_AND,
|
||||
/* 0x1 */ GX_AOP_OR,
|
||||
/* 0x2 */ GX_AOP_XOR,
|
||||
/* 0x3 */ GX_AOP_XNOR,
|
||||
/* 0x4 */ GX_MAX_ALPHAOP
|
||||
} GXAlphaOp;
|
||||
|
||||
typedef enum _GXFogType {
|
||||
/* 0x0 */ GX_FOG_NONE,
|
||||
/* 0x2 */ GX_FOG_LIN = 2,
|
||||
/* 0x2 */ GX_FOG_PERSP_LIN = 2,
|
||||
/* 0x4 */ GX_FOG_EXP = 4,
|
||||
/* 0x4 */ GX_FOG_PERSP_EXP = 4,
|
||||
/* 0x5 */ GX_FOG_EXP2,
|
||||
/* 0x5 */ GX_FOG_PERSP_EXP2 = 5,
|
||||
/* 0x6 */ GX_FOG_REVEXP,
|
||||
/* 0x6 */ GX_FOG_PERSP_REVEXP = 6,
|
||||
/* 0x7 */ GX_FOG_REVEXP2,
|
||||
/* 0x7 */ GX_FOG_PERSP_REVEXP2 = 7,
|
||||
/* 0xA */ GX_FOG_ORTHO_LIN = 10,
|
||||
/* 0xC */ GX_FOG_ORTHO_EXP = 12,
|
||||
/* 0xD */ GX_FOG_ORTHO_EXP2,
|
||||
/* 0xE */ GX_FOG_ORTHO_REVEXP,
|
||||
/* 0xF */ GX_FOG_ORTHO_REVEXP2,
|
||||
} GXFogType;
|
||||
|
||||
typedef enum _GXProjectionType {
|
||||
/* 0x0 */ GX_PERSPECTIVE,
|
||||
/* 0x1 */ GX_ORTHOGRAPHIC
|
||||
} GXProjectionType;
|
||||
|
||||
typedef enum _GXTevKAlphaSel {
|
||||
/* 0x00 */ GX_TEV_KASEL_1,
|
||||
/* 0x01 */ GX_TEV_KASEL_7_8,
|
||||
/* 0x02 */ GX_TEV_KASEL_3_4,
|
||||
/* 0x03 */ GX_TEV_KASEL_5_8,
|
||||
/* 0x04 */ GX_TEV_KASEL_1_2,
|
||||
/* 0x05 */ GX_TEV_KASEL_3_8,
|
||||
/* 0x06 */ GX_TEV_KASEL_1_4,
|
||||
/* 0x07 */ GX_TEV_KASEL_1_8,
|
||||
|
||||
/* 0x10 */ GX_TEV_KASEL_K0_R = 0x10,
|
||||
/* 0x11 */ GX_TEV_KASEL_K1_R,
|
||||
/* 0x12 */ GX_TEV_KASEL_K2_R,
|
||||
/* 0x13 */ GX_TEV_KASEL_K3_R,
|
||||
/* 0x14 */ GX_TEV_KASEL_K0_G,
|
||||
/* 0x15 */ GX_TEV_KASEL_K1_G,
|
||||
/* 0x16 */ GX_TEV_KASEL_K2_G,
|
||||
/* 0x17 */ GX_TEV_KASEL_K3_G,
|
||||
/* 0x18 */ GX_TEV_KASEL_K0_B,
|
||||
/* 0x19 */ GX_TEV_KASEL_K1_B,
|
||||
/* 0x1A */ GX_TEV_KASEL_K2_B,
|
||||
/* 0x1B */ GX_TEV_KASEL_K3_B,
|
||||
/* 0x1C */ GX_TEV_KASEL_K0_A,
|
||||
/* 0x1D */ GX_TEV_KASEL_K1_A,
|
||||
/* 0x1E */ GX_TEV_KASEL_K2_A,
|
||||
/* 0x1F */ GX_TEV_KASEL_K3_A,
|
||||
} GXTevKAlphaSel;
|
||||
|
||||
typedef enum _GXTevKColorSel {
|
||||
/* 0x00 */ GX_TEV_KCSEL_1,
|
||||
/* 0x01 */ GX_TEV_KCSEL_7_8,
|
||||
/* 0x02 */ GX_TEV_KCSEL_3_4,
|
||||
/* 0x03 */ GX_TEV_KCSEL_5_8,
|
||||
/* 0x04 */ GX_TEV_KCSEL_1_2,
|
||||
/* 0x05 */ GX_TEV_KCSEL_3_8,
|
||||
/* 0x06 */ GX_TEV_KCSEL_1_4,
|
||||
/* 0x07 */ GX_TEV_KCSEL_1_8,
|
||||
/* 0x0C */ GX_TEV_KCSEL_K0 = 0xC,
|
||||
/* 0x0D */ GX_TEV_KCSEL_K1,
|
||||
/* 0x0E */ GX_TEV_KCSEL_K2,
|
||||
/* 0x0F */ GX_TEV_KCSEL_K3,
|
||||
/* 0x10 */ GX_TEV_KCSEL_K0_R,
|
||||
/* 0x11 */ GX_TEV_KCSEL_K1_R,
|
||||
/* 0x12 */ GX_TEV_KCSEL_K2_R,
|
||||
/* 0x13 */ GX_TEV_KCSEL_K3_R,
|
||||
/* 0x14 */ GX_TEV_KCSEL_K0_G,
|
||||
/* 0x15 */ GX_TEV_KCSEL_K1_G,
|
||||
/* 0x16 */ GX_TEV_KCSEL_K2_G,
|
||||
/* 0x17 */ GX_TEV_KCSEL_K3_G,
|
||||
/* 0x18 */ GX_TEV_KCSEL_K0_B,
|
||||
/* 0x19 */ GX_TEV_KCSEL_K1_B,
|
||||
/* 0x1A */ GX_TEV_KCSEL_K2_B,
|
||||
/* 0x1B */ GX_TEV_KCSEL_K3_B,
|
||||
/* 0x1C */ GX_TEV_KCSEL_K0_A,
|
||||
/* 0x1D */ GX_TEV_KCSEL_K1_A,
|
||||
/* 0x1E */ GX_TEV_KCSEL_K2_A,
|
||||
/* 0x1F */ GX_TEV_KCSEL_K3_A,
|
||||
} GXTevKColorSel;
|
||||
|
||||
typedef enum _GXTevSwapSel {
|
||||
/* 0x0 */ GX_TEV_SWAP0,
|
||||
/* 0x1 */ GX_TEV_SWAP1,
|
||||
/* 0x2 */ GX_TEV_SWAP2,
|
||||
/* 0x3 */ GX_TEV_SWAP3,
|
||||
/* 0x4 */ GX_MAX_TEVSWAP,
|
||||
} GXTevSwapSel;
|
||||
|
||||
typedef enum _GXTexGenType {
|
||||
/* 0x0 */ GX_TG_MTX3x4,
|
||||
/* 0x1 */ GX_TG_MTX2x4,
|
||||
/* 0x2 */ GX_TG_BUMP0,
|
||||
/* 0x3 */ GX_TG_BUMP1,
|
||||
/* 0x4 */ GX_TG_BUMP2,
|
||||
/* 0x5 */ GX_TG_BUMP3,
|
||||
/* 0x6 */ GX_TG_BUMP4,
|
||||
/* 0x7 */ GX_TG_BUMP5,
|
||||
/* 0x8 */ GX_TG_BUMP6,
|
||||
/* 0x9 */ GX_TG_BUMP7,
|
||||
/* 0xA */ GX_TG_SRTG,
|
||||
} GXTexGenType;
|
||||
|
||||
typedef enum _GXTexGenSrc {
|
||||
/* 0x00 */ GX_TG_POS,
|
||||
/* 0x01 */ GX_TG_NRM,
|
||||
/* 0x02 */ GX_TG_BINRM,
|
||||
/* 0x03 */ GX_TG_TANGENT,
|
||||
/* 0x04 */ GX_TG_TEX0,
|
||||
/* 0x05 */ GX_TG_TEX1,
|
||||
/* 0x06 */ GX_TG_TEX2,
|
||||
/* 0x07 */ GX_TG_TEX3,
|
||||
/* 0x08 */ GX_TG_TEX4,
|
||||
/* 0x09 */ GX_TG_TEX5,
|
||||
/* 0x0A */ GX_TG_TEX6,
|
||||
/* 0x0B */ GX_TG_TEX7,
|
||||
/* 0x0C */ GX_TG_TEXCOORD0,
|
||||
/* 0x0D */ GX_TG_TEXCOORD1,
|
||||
/* 0x0E */ GX_TG_TEXCOORD2,
|
||||
/* 0x0F */ GX_TG_TEXCOORD3,
|
||||
/* 0x10 */ GX_TG_TEXCOORD4,
|
||||
/* 0x11 */ GX_TG_TEXCOORD5,
|
||||
/* 0x12 */ GX_TG_TEXCOORD6,
|
||||
} GXTexGenSrc;
|
||||
|
||||
typedef enum _GXZTexOp {
|
||||
/* 0x0 */ GX_ZT_DISABLE,
|
||||
/* 0x1 */ GX_ZT_ADD,
|
||||
/* 0x2 */ GX_ZT_REPLACE,
|
||||
/* 0x3 */ GX_MAX_ZTEXOP,
|
||||
} GXZTexOp;
|
||||
|
||||
typedef enum _GXIndTexStageID {
|
||||
/* 0x0 */ GX_INDTEXSTAGE0,
|
||||
/* 0x1 */ GX_INDTEXSTAGE1,
|
||||
/* 0x2 */ GX_INDTEXSTAGE2,
|
||||
/* 0x3 */ GX_INDTEXSTAGE3,
|
||||
/* 0x4 */ GX_MAX_INDTEXSTAGE,
|
||||
} GXIndTexStageID;
|
||||
|
||||
typedef enum _GXIndTexScale {
|
||||
/* 0x0 */ GX_ITS_1,
|
||||
/* 0x1 */ GX_ITS_2,
|
||||
/* 0x2 */ GX_ITS_4,
|
||||
/* 0x3 */ GX_ITS_8,
|
||||
/* 0x4 */ GX_ITS_16,
|
||||
/* 0x5 */ GX_ITS_32,
|
||||
/* 0x6 */ GX_ITS_64,
|
||||
/* 0x7 */ GX_ITS_128,
|
||||
/* 0x8 */ GX_ITS_256,
|
||||
/* 0x9 */ GX_MAX_ITSCALE,
|
||||
} GXIndTexScale;
|
||||
|
||||
typedef enum _GXIndTexMtxID {
|
||||
/* 0x0 */ GX_ITM_OFF,
|
||||
/* 0x1 */ GX_ITM_0,
|
||||
/* 0x2 */ GX_ITM_1,
|
||||
/* 0x3 */ GX_ITM_2,
|
||||
/* 0x5 */ GX_ITM_S0 = 5,
|
||||
/* 0x6 */ GX_ITM_S1,
|
||||
/* 0x7 */ GX_ITM_S2,
|
||||
/* 0x9 */ GX_ITM_T0 = 9,
|
||||
/* 0xA */ GX_ITM_T1,
|
||||
/* 0xB */ GX_ITM_T2,
|
||||
} GXIndTexMtxID;
|
||||
|
||||
typedef enum _GXIndTexFormat {
|
||||
/* 0x0 */ GX_ITF_8,
|
||||
/* 0x1 */ GX_ITF_5,
|
||||
/* 0x2 */ GX_ITF_4,
|
||||
/* 0x3 */ GX_ITF_3,
|
||||
} GXIndTexFormat;
|
||||
|
||||
typedef enum _GXIndTexBiasSel {
|
||||
/* 0x0 */ GX_ITB_NONE,
|
||||
/* 0x1 */ GX_ITB_S,
|
||||
/* 0x2 */ GX_ITB_T,
|
||||
/* 0x3 */ GX_ITB_ST,
|
||||
/* 0x4 */ GX_ITB_U,
|
||||
/* 0x5 */ GX_ITB_SU,
|
||||
/* 0x6 */ GX_ITB_TU,
|
||||
/* 0x7 */ GX_ITB_STU,
|
||||
} GXIndTexBiasSel;
|
||||
|
||||
typedef enum _GXIndTexAlphaSel {
|
||||
/* 0x0 */ GX_ITBA_OFF,
|
||||
/* 0x1 */ GX_ITBA_S,
|
||||
/* 0x2 */ GX_ITBA_T,
|
||||
/* 0x3 */ GX_ITBA_U,
|
||||
} GXIndTexAlphaSel;
|
||||
|
||||
typedef enum _GXIndTexWrap {
|
||||
/* 0x0 */ GX_ITW_OFF,
|
||||
/* 0x1 */ GX_ITW_256,
|
||||
/* 0x2 */ GX_ITW_128,
|
||||
/* 0x3 */ GX_ITW_64,
|
||||
/* 0x4 */ GX_ITW_32,
|
||||
/* 0x5 */ GX_ITW_16,
|
||||
/* 0x6 */ GX_ITW_0,
|
||||
} GXIndTexWrap;
|
||||
|
||||
typedef enum _GXTexOffset {
|
||||
/* 0x0 */ GX_TO_ZERO,
|
||||
/* 0x1 */ GX_TO_SIXTEENTH,
|
||||
/* 0x2 */ GX_TO_EIGHTH,
|
||||
/* 0x3 */ GX_TO_FOURTH,
|
||||
/* 0x4 */ GX_TO_HALF,
|
||||
/* 0x5 */ GX_TO_ONE,
|
||||
/* 0x6 */ GX_MAX_TEXOFFSET,
|
||||
} GXTexOffset;
|
||||
|
||||
typedef enum _GXTevKColorID {
|
||||
/* 0x0 */ GX_KCOLOR0,
|
||||
/* 0x1 */ GX_KCOLOR1,
|
||||
/* 0x2 */ GX_KCOLOR2,
|
||||
/* 0x3 */ GX_KCOLOR3,
|
||||
} GXTevKColorID;
|
||||
|
||||
typedef enum _GXTexCacheSize {
|
||||
/* 0x0 */ GX_TEXCACHE_32K,
|
||||
/* 0x1 */ GX_TEXCACHE_128K,
|
||||
/* 0x2 */ GX_TEXCACHE_512K,
|
||||
/* 0x3 */ GX_TEXCACHE_NONE,
|
||||
} GXTexCacheSize;
|
||||
|
||||
typedef enum _GXPosNrmMtx {
|
||||
GX_PNMTX0 = 3 * 0,
|
||||
GX_PNMTX1 = 3 * 1,
|
||||
GX_PNMTX2 = 3 * 2,
|
||||
GX_PNMTX3 = 3 * 3,
|
||||
GX_PNMTX4 = 3 * 4,
|
||||
GX_PNMTX5 = 3 * 5,
|
||||
GX_PNMTX6 = 3 * 6,
|
||||
GX_PNMTX7 = 3 * 7,
|
||||
GX_PNMTX8 = 3 * 8,
|
||||
GX_PNMTX9 = 3 * 9,
|
||||
} GXPosNrmMtx;
|
||||
|
||||
typedef enum _GXTexMtx {
|
||||
GX_TEXMTX0 = 30 + 0 * 3,
|
||||
GX_TEXMTX1 = 30 + 1 * 3,
|
||||
GX_TEXMTX2 = 30 + 2 * 3,
|
||||
GX_TEXMTX3 = 30 + 3 * 3,
|
||||
GX_TEXMTX4 = 30 + 4 * 3,
|
||||
GX_TEXMTX5 = 30 + 5 * 3,
|
||||
GX_TEXMTX6 = 30 + 6 * 3,
|
||||
GX_TEXMTX7 = 30 + 7 * 3,
|
||||
GX_TEXMTX8 = 30 + 8 * 3,
|
||||
GX_TEXMTX9 = 30 + 9 * 3,
|
||||
GX_IDENTITY = 60,
|
||||
};
|
||||
|
||||
typedef enum _GXPTTexMtx {
|
||||
GX_PTTEXMTX0 = 64 + 0 * 3,
|
||||
GX_PTTEXMTX1 = 64 + 1 * 3,
|
||||
GX_PTTEXMTX2 = 64 + 2 * 3,
|
||||
GX_PTTEXMTX3 = 64 + 3 * 3,
|
||||
GX_PTTEXMTX4 = 64 + 4 * 3,
|
||||
GX_PTTEXMTX5 = 64 + 5 * 3,
|
||||
GX_PTTEXMTX6 = 64 + 6 * 3,
|
||||
GX_PTTEXMTX7 = 64 + 7 * 3,
|
||||
GX_PTTEXMTX8 = 64 + 8 * 3,
|
||||
GX_PTTEXMTX9 = 64 + 9 * 3,
|
||||
GX_PTTEXMTX10 = 64 + 10 * 3,
|
||||
GX_PTTEXMTX11 = 64 + 11 * 3,
|
||||
GX_PTTEXMTX12 = 64 + 12 * 3,
|
||||
GX_PTTEXMTX13 = 64 + 13 * 3,
|
||||
GX_PTTEXMTX14 = 64 + 14 * 3,
|
||||
GX_PTTEXMTX15 = 64 + 15 * 3,
|
||||
GX_PTTEXMTX16 = 64 + 16 * 3,
|
||||
GX_PTTEXMTX17 = 64 + 17 * 3,
|
||||
GX_PTTEXMTX18 = 64 + 18 * 3,
|
||||
GX_PTTEXMTX19 = 64 + 19 * 3,
|
||||
GX_PTIDENTITY = 125,
|
||||
};
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct _GXVtxDescList {
|
||||
/* 0x0 */ GXAttr attr;
|
||||
@@ -830,41 +25,94 @@ typedef struct _GXVtxAttrFmtList {
|
||||
/* 0x0C */ u8 mCompShift;
|
||||
} GXVtxAttrFmtList; // Size: 0x10
|
||||
|
||||
typedef enum _GXFBClamp {
|
||||
/* 0x0 */ GX_CLAMP_NONE,
|
||||
/* 0x1 */ GX_CLAMP_TOP,
|
||||
/* 0x2 */ GX_CLAMP_BOTTOM,
|
||||
} GXFBClamp;
|
||||
typedef GXTexRegion (*GXTexRegionCallback)(void);
|
||||
typedef u32 (*GXTlutRegionCallback)(u32);
|
||||
|
||||
typedef enum _GXPixelFmt {
|
||||
/* 0x0 */ GX_PF_RGB8_Z24,
|
||||
/* 0x1 */ GX_PF_RGBA6_Z24,
|
||||
/* 0x2 */ GX_PF_RGB565_Z16,
|
||||
/* 0x3 */ GX_PF_Z24,
|
||||
/* 0x4 */ GX_PF_Y8,
|
||||
/* 0x5 */ GX_PF_U8,
|
||||
/* 0x6 */ GX_PF_V8,
|
||||
/* 0x7 */ GX_PF_YUV420,
|
||||
} GXPixelFmt;
|
||||
typedef struct _GXData {
|
||||
/* 0x000 */ u16 field_0x0;
|
||||
/* 0x002 */ u16 field_0x2;
|
||||
/* 0x004 */ u16 field_0x4;
|
||||
/* 0x006 */ u16 field_0x6;
|
||||
/* 0x008 */ u32 field_0x8;
|
||||
/* 0x00C */ u32 field_0xc;
|
||||
/* 0x010 */ u32 field_0x10;
|
||||
/* 0x014 */ GXAttrType field_0x14;
|
||||
/* 0x018 */ GXAttrType field_0x18;
|
||||
/* 0x01C */ GXCompCnt field_0x1c[8];
|
||||
/* 0x03C */ GXCompCnt field_0x3c[8];
|
||||
/* 0x05C */ u32 field_0x5c[8];
|
||||
/* 0x07C */ u32 field_0x7c;
|
||||
/* 0x080 */ u32 field_0x80;
|
||||
/* 0x084 */ u32 field_0x84;
|
||||
/* 0x088 */ u8 field_0x88[0xA8 - 0x88];
|
||||
/* 0x0A8 */ u32 field_0xa8[2];
|
||||
/* 0x0B0 */ u32 field_0xb0[2];
|
||||
/* 0x0B8 */ u32 field_0xb8[8]; // GX_MAX_TEXCOORD
|
||||
/* 0x0D8 */ u32 field_0xd8[8]; // GX_MAX_TEXCOORD
|
||||
/* 0x0F8 */ u32 field_0xf8;
|
||||
/* 0x0FC */ u32 field_0xfc;
|
||||
/* 0x100 */ u32 field_0x100[GX_MAX_TEVSTAGE / 2];
|
||||
/* 0x120 */ u32 field_0x120;
|
||||
/* 0x124 */ u32 field_0x124;
|
||||
/* 0x128 */ u8 field_0x128[0x130 - 0x128];
|
||||
/* 0x130 */ u32 field_0x130[GX_MAX_TEVSTAGE];
|
||||
/* 0x170 */ u32 field_0x170[GX_MAX_TEVSTAGE];
|
||||
/* 0x1B0 */ u32 field_0x1b0[GX_MAX_TEVSTAGE / 2];
|
||||
/* 0x1D0 */ u32 field_0x1d0;
|
||||
/* 0x1D4 */ u32 field_0x1d4;
|
||||
/* 0x1D8 */ u32 field_0x1d8;
|
||||
/* 0x1DC */ u32 field_0x1dc;
|
||||
/* 0x1E0 */ u32 field_0x1e0;
|
||||
/* 0x1E4 */ u32 field_0x1e4;
|
||||
/* 0x1E8 */ u32 field_0x1e8;
|
||||
/* 0x1EC */ u32 field_0x1ec;
|
||||
/* 0x1F0 */ u32 field_0x1f0;
|
||||
/* 0x1F4 */ u32 field_0x1f4;
|
||||
/* 0x1F8 */ u32 field_0x1f8;
|
||||
/* 0x1FC */ u32 field_0x1fc;
|
||||
/* 0x200 */ u8 field_0x200;
|
||||
/* 0x204 */ u32 field_0x204;
|
||||
/* 0x208 */ GXTexRegion field_0x208[8];
|
||||
/* 0x288 */ GXTexRegion field_0x288[8];
|
||||
/* 0x308 */ GXTexRegion field_0x308[8];
|
||||
/* 0x388 */ GXTlutRegion field_0x388[16];
|
||||
/* 0x488 */ GXTlutRegion field_0x488[4];
|
||||
/* 0x4C8 */ GXTexRegionCallback field_0x4c8;
|
||||
/* 0x4CC */ GXTlutRegionCallback field_0x4cc;
|
||||
/* 0x4D0 */ GXAttrType field_0x4d0;
|
||||
/* 0x4D4 */ u8 field_0x4d4;
|
||||
/* 0x4D5 */ u8 field_0x4d5;
|
||||
/* 0x4D8 */ GXProjectionType field_0x4d8;
|
||||
/* 0x4DC */ Mtx field_0x4dc;
|
||||
/* 0x50C */ f32 field_0x50c;
|
||||
/* 0x510 */ f32 field_0x510;
|
||||
/* 0x514 */ u32 field_0x514[8];
|
||||
/* 0x534 */ u32 field_0x534[8];
|
||||
/* 0x554 */ u32 field_0x554;
|
||||
/* 0x558 */ u32 field_0x558[8];
|
||||
/* 0x578 */ u8 field_0x578[0x594 - 0x578];
|
||||
/* 0x594 */ u32 field_0x594;
|
||||
/* 0x598 */ u32 field_0x598;
|
||||
/* 0x59C */ u32 field_0x59c;
|
||||
/* 0x5A0 */ u8 field_0x5a0[4];
|
||||
/* 0x5A4 */ u32 field_0x5a4;
|
||||
/* 0x5A8 */ u8 field_0x5a8;
|
||||
/* 0x5A9 */ u8 field_0x5a9;
|
||||
/* 0x5AA */ u8 field_0x5aa;
|
||||
/* 0x5AB */ u8 field_0x5ab;
|
||||
/* 0x5AC */ u32 field_0x5ac;
|
||||
} GXData; // Size: 0x5B0
|
||||
|
||||
typedef enum _GXZFmt16 {
|
||||
/* 0x0 */ GX_ZC_LINEAR,
|
||||
/* 0x1 */ GX_ZC_NEAR,
|
||||
/* 0x2 */ GX_ZC_MID,
|
||||
/* 0x3 */ GX_ZC_FAR,
|
||||
} GXZFmt16;
|
||||
STATIC_ASSERT(sizeof(GXData) == 0x5B0);
|
||||
|
||||
typedef enum _GXCommand {
|
||||
GX_CMD_LOAD_INDX_A = 0x20,
|
||||
GX_CMD_LOAD_INDX_B = 0x28,
|
||||
GX_CMD_LOAD_INDX_C = 0x30,
|
||||
GX_CMD_LOAD_INDX_D = 0x38,
|
||||
extern GXData* __GXData;
|
||||
|
||||
GX_CMD_LOAD_CP_REG = 0x08,
|
||||
GX_CMD_LOAD_XF_REG = 0x10,
|
||||
} GXCommand;
|
||||
extern u32* __piReg;
|
||||
extern u16* __cpReg;
|
||||
|
||||
#define GX_LOAD_BP_REG 0x61
|
||||
#define GX_NOP 0
|
||||
|
||||
extern "C" {
|
||||
f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height);
|
||||
u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale);
|
||||
|
||||
@@ -894,7 +142,7 @@ void GXSetBlendMode(GXBlendMode, GXBlendFactor, GXBlendFactor, GXLogicOp);
|
||||
void GXSetVtxAttrFmt(GXVtxFmt, GXAttr, GXCompCnt, GXCompType, u32);
|
||||
void GXClearVtxDesc(void);
|
||||
void GXSetVtxDesc(GXAttr, GXAttrType);
|
||||
void GXSetArray(GXAttr, const void*, u8);
|
||||
void GXSetArray(GXAttr, void*, u8);
|
||||
typedef void (*GXDrawDoneCallback)(void);
|
||||
void GXSetDrawDoneCallback(GXDrawDoneCallback);
|
||||
void GXDrawDone(void);
|
||||
@@ -934,7 +182,7 @@ void GXSetAlphaCompare(GXCompare, u8, GXAlphaOp, GXCompare, u8);
|
||||
void GXSetAlphaUpdate(GXBool);
|
||||
void GXSetChanAmbColor(GXChannelID, GXColor);
|
||||
void GXSetChanMatColor(GXChannelID, GXColor);
|
||||
void GXSetClipMode(GXBool);
|
||||
void GXSetClipMode(GXClipMode);
|
||||
void GXSetCoPlanar(GXBool);
|
||||
void GXSetColorUpdate(GXBool);
|
||||
void GXSetCopyFilter(GXBool, u8[12][2], GXBool, u8[7]);
|
||||
@@ -979,6 +227,9 @@ void GXInitFifoPtrs(GXFifoObj*, void*, void*);
|
||||
void GXSaveCPUFifo(GXFifoObj*);
|
||||
void GXSetMisc(u32 opt, u32 val);
|
||||
void GXInitTexCacheRegion(GXTexRegion* region, GXBool, u32, GXTexCacheSize, u32, GXTexCacheSize);
|
||||
void GXPeekZ(u16 x, u16 y, u32* dst);
|
||||
void __GXSetDirtyState(void);
|
||||
void __GXSendFlushPrim(void);
|
||||
|
||||
#define GFX_FIFO(T) (*(volatile T*)0xCC008000)
|
||||
|
||||
@@ -1022,7 +273,7 @@ inline void GXPosition2s8(s8 x, s8 y) {
|
||||
GFX_FIFO(s8) = y;
|
||||
}
|
||||
|
||||
inline void GXPosition3s16(s16 x, s16 y, s16 z) {
|
||||
inline void i_GXPosition3s16(s16 x, s16 y, s16 z) {
|
||||
GFX_FIFO(s16) = x;
|
||||
GFX_FIFO(s16) = y;
|
||||
GFX_FIFO(s16) = z;
|
||||
@@ -1033,7 +284,10 @@ inline void GXTexCoord2s8(s8 x, s8 y) {
|
||||
GFX_FIFO(s8) = y;
|
||||
}
|
||||
|
||||
inline void GXEnd() {}
|
||||
inline void i_GXEnd() {}
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
#include "dolphin/types.h"
|
||||
|
||||
extern "C" {
|
||||
void GXBeginDisplayList(void* pDL, u32 capacity);
|
||||
void GXBeginDisplayList(void* list, u32 capacity);
|
||||
void GXEndDisplayList(void);
|
||||
void GXCallDisplayList(const void* pDL, u32 size);
|
||||
void GXCallDisplayList(void* list, u32 nbytes);
|
||||
};
|
||||
|
||||
#endif /* GXDISPLAYLIST_H */
|
||||
|
||||
@@ -0,0 +1,779 @@
|
||||
#ifndef GXENUM_H
|
||||
#define GXENUM_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
typedef enum _GXPrimitive {
|
||||
/* 0x80 */ GX_QUADS = 0x80,
|
||||
/* 0x90 */ GX_TRIANGLES = 0x90,
|
||||
/* 0x98 */ GX_TRIANGLESTRIP = 0x98,
|
||||
/* 0xA0 */ GX_TRIANGLEFAN = 0xA0,
|
||||
/* 0xA8 */ GX_LINES = 0xA8,
|
||||
/* 0xB0 */ GX_LINESTRIP = 0xB0,
|
||||
/* 0xB8 */ GX_POINTS = 0xB8,
|
||||
} GXPrimitive;
|
||||
|
||||
typedef enum _GXCullMode {
|
||||
/* 0x0 */ GX_CULL_NONE,
|
||||
/* 0x1 */ GX_CULL_FRONT,
|
||||
/* 0x2 */ GX_CULL_BACK,
|
||||
/* 0x3 */ GX_CULL_ALL
|
||||
} GXCullMode;
|
||||
|
||||
typedef enum _GXBool {
|
||||
/* 0x0 */ GX_FALSE,
|
||||
/* 0x1 */ GX_TRUE,
|
||||
/* 0x0 */ GX_DISABLE = 0,
|
||||
/* 0x1 */ GX_ENABLE
|
||||
} GXBool;
|
||||
|
||||
typedef enum _GXTexMapID {
|
||||
/* 0x000 */ GX_TEXMAP0,
|
||||
/* 0x001 */ GX_TEXMAP1,
|
||||
/* 0x002 */ GX_TEXMAP2,
|
||||
/* 0x003 */ GX_TEXMAP3,
|
||||
/* 0x004 */ GX_TEXMAP4,
|
||||
/* 0x005 */ GX_TEXMAP5,
|
||||
/* 0x006 */ GX_TEXMAP6,
|
||||
/* 0x007 */ GX_TEXMAP7,
|
||||
/* 0x008 */ GX_MAX_TEXMAP,
|
||||
/* 0x0FF */ GX_TEXMAP_NULL = 255,
|
||||
/* 0x100 */ GX_TEXMAP_DISABLE,
|
||||
} GXTexMapID;
|
||||
|
||||
typedef enum _GXTevStageID {
|
||||
/* 0x00 */ GX_TEVSTAGE0,
|
||||
/* 0x01 */ GX_TEVSTAGE1,
|
||||
/* 0x02 */ GX_TEVSTAGE2,
|
||||
/* 0x03 */ GX_TEVSTAGE3,
|
||||
/* 0x04 */ GX_TEVSTAGE4,
|
||||
/* 0x05 */ GX_TEVSTAGE5,
|
||||
/* 0x06 */ GX_TEVSTAGE6,
|
||||
/* 0x07 */ GX_TEVSTAGE7,
|
||||
/* 0x08 */ GX_TEVSTAGE8,
|
||||
/* 0x09 */ GX_TEVSTAGE9,
|
||||
/* 0x0A */ GX_TEVSTAGE10,
|
||||
/* 0x0B */ GX_TEVSTAGE11,
|
||||
/* 0x0C */ GX_TEVSTAGE12,
|
||||
/* 0x0D */ GX_TEVSTAGE13,
|
||||
/* 0x0E */ GX_TEVSTAGE14,
|
||||
/* 0x0F */ GX_TEVSTAGE15,
|
||||
/* 0x10 */ GX_MAX_TEVSTAGE,
|
||||
} GXTevStageID;
|
||||
|
||||
typedef enum _GXTexCoordID {
|
||||
/* 0x00 */ GX_TEXCOORD0,
|
||||
/* 0x01 */ GX_TEXCOORD1,
|
||||
/* 0x02 */ GX_TEXCOORD2,
|
||||
/* 0x03 */ GX_TEXCOORD3,
|
||||
/* 0x04 */ GX_TEXCOORD4,
|
||||
/* 0x05 */ GX_TEXCOORD5,
|
||||
/* 0x06 */ GX_TEXCOORD6,
|
||||
/* 0x07 */ GX_TEXCOORD7,
|
||||
/* 0x08 */ GX_MAXCOORD,
|
||||
/* 0xFF */ GX_TEXCOORD_NULL = 255,
|
||||
} GXTexCoordID;
|
||||
|
||||
typedef enum _GXChannelID {
|
||||
/* 0x00 */ GX_COLOR0,
|
||||
/* 0x01 */ GX_COLOR1,
|
||||
/* 0x02 */ GX_ALPHA0,
|
||||
/* 0x03 */ GX_ALPHA1,
|
||||
/* 0x04 */ GX_COLOR0A0,
|
||||
/* 0x05 */ GX_COLOR1A1,
|
||||
/* 0x06 */ GX_COLOR_ZERO,
|
||||
/* 0x07 */ GX_ALPHA_BUMP,
|
||||
/* 0x08 */ GX_ALPHA_BUMPN,
|
||||
/* 0xFF */ GX_COLOR_NULL = 255,
|
||||
} GXChannelID;
|
||||
|
||||
typedef enum _GXColorSrc {
|
||||
/* 0x0 */ GX_SRC_REG,
|
||||
/* 0x1 */ GX_SRC_VTX,
|
||||
} GXColorSrc;
|
||||
|
||||
typedef enum _GXLightID {
|
||||
/* 0x000 */ GX_LIGHT_NULL = 0,
|
||||
/* 0x001 */ GX_LIGHT0 = 1 << 0,
|
||||
/* 0x002 */ GX_LIGHT1 = 1 << 1,
|
||||
/* 0x004 */ GX_LIGHT2 = 1 << 2,
|
||||
/* 0x008 */ GX_LIGHT3 = 1 << 3,
|
||||
/* 0x010 */ GX_LIGHT4 = 1 << 4,
|
||||
/* 0x020 */ GX_LIGHT5 = 1 << 5,
|
||||
/* 0x040 */ GX_LIGHT6 = 1 << 6,
|
||||
/* 0x080 */ GX_LIGHT7 = 1 << 7,
|
||||
/* 0x100 */ GX_MAX_LIGHT = 1 << 8,
|
||||
} GXLightID;
|
||||
|
||||
typedef enum _GXDiffuseFn {
|
||||
/* 0x0 */ GX_DF_NONE,
|
||||
/* 0x1 */ GX_DF_SIGN,
|
||||
/* 0x2 */ GX_DF_CLAMP,
|
||||
} GXDiffuseFn;
|
||||
|
||||
typedef enum _GXAttnFn {
|
||||
/* 0x0 */ GX_AF_SPEC,
|
||||
/* 0x1 */ GX_AF_SPOT,
|
||||
/* 0x2 */ GX_AF_NONE,
|
||||
} GXAttnFn;
|
||||
|
||||
typedef enum _GXDistAttnFn {
|
||||
/* 0x0 */ GX_DA_OFF,
|
||||
/* 0x1 */ GX_DA_GENTLE,
|
||||
/* 0x2 */ GX_DA_MEDIUM,
|
||||
/* 0x3 */ GX_DA_STEEP
|
||||
} GXDistAttnFn;
|
||||
|
||||
typedef enum _GXSpotFn {
|
||||
/* 0x0 */ GX_SP_OFF,
|
||||
/* 0x1 */ GX_SP_FLAT,
|
||||
/* 0x2 */ GX_SP_COS,
|
||||
/* 0x3 */ GX_SP_COS2,
|
||||
/* 0x4 */ GX_SP_SHARP,
|
||||
/* 0x5 */ GX_SP_RING1,
|
||||
/* 0x6 */ GX_SP_RING2
|
||||
} GXSpotFn;
|
||||
|
||||
typedef enum _GXTevMode {
|
||||
/* 0x0 */ GX_MODULATE,
|
||||
/* 0x1 */ GX_DECAL,
|
||||
/* 0x2 */ GX_BLEND,
|
||||
/* 0x3 */ GX_REPLACE,
|
||||
/* 0x4 */ GX_PASSCLR,
|
||||
} GXTevMode;
|
||||
|
||||
typedef enum _GXBlendMode {
|
||||
/* 0x0 */ GX_BM_NONE,
|
||||
/* 0x1 */ GX_BM_BLEND,
|
||||
/* 0x2 */ GX_BM_LOGIC,
|
||||
/* 0x3 */ GX_BM_SUBTRACT,
|
||||
/* 0x4 */ GX_MAX_BLENDMODE,
|
||||
} GXBlendMode;
|
||||
|
||||
typedef enum _GXBlendFactor {
|
||||
/* 0x0 */ GX_BL_ZERO,
|
||||
/* 0x1 */ GX_BL_ONE,
|
||||
/* 0x2 */ GX_BL_SRC_COLOR,
|
||||
/* 0x2 */ GX_BL_DST_COLOR = 2,
|
||||
/* 0x3 */ GX_BL_INV_SRC_COLOR,
|
||||
/* 0x3 */ GX_BL_INV_DST_COLOR = 3,
|
||||
/* 0x4 */ GX_BL_SRC_ALPHA,
|
||||
/* 0x5 */ GX_BL_INV_SRC_ALPHA,
|
||||
/* 0x6 */ GX_BL_DST_ALPHA,
|
||||
/* 0x7 */ GX_BL_INV_DST_ALPHA,
|
||||
} GXBlendFactor;
|
||||
|
||||
typedef enum _GXLogicOp {
|
||||
/* 0x0 */ GX_LO_CLEAR,
|
||||
/* 0x1 */ GX_LO_AND,
|
||||
/* 0x2 */ GX_LO_REV_AND,
|
||||
/* 0x3 */ GX_LO_COPY,
|
||||
/* 0x4 */ GX_LO_INV_AND,
|
||||
/* 0x5 */ GX_LO_NOOP,
|
||||
/* 0x6 */ GX_LO_XOR,
|
||||
/* 0x7 */ GX_LO_OR,
|
||||
/* 0x8 */ GX_LO_NOR,
|
||||
/* 0x9 */ GX_LO_EQUIV,
|
||||
/* 0xA */ GX_LO_INV,
|
||||
/* 0xB */ GX_LO_REV_OR,
|
||||
/* 0xC */ GX_LO_INV_COPY,
|
||||
/* 0xD */ GX_LO_INV_OR,
|
||||
/* 0xE */ GX_LO_NAND,
|
||||
/* 0xF */ GX_LO_SET,
|
||||
} GXLogicOp;
|
||||
|
||||
typedef enum _GXVtxFmt {
|
||||
/* 0x0 */ GX_VTXFMT0,
|
||||
/* 0x1 */ GX_VTXFMT1,
|
||||
/* 0x2 */ GX_VTXFMT2,
|
||||
/* 0x3 */ GX_VTXFMT3,
|
||||
/* 0x4 */ GX_VTXFMT4,
|
||||
/* 0x5 */ GX_VTXFMT5,
|
||||
/* 0x6 */ GX_VTXFMT6,
|
||||
/* 0x7 */ GX_VTXFMT7,
|
||||
/* 0x8 */ GX_MAX_VTXFMT,
|
||||
} GXVtxFmt;
|
||||
|
||||
typedef enum _GXAttr {
|
||||
/* 0x00 */ GX_VA_PNMTXIDX,
|
||||
/* 0x01 */ GX_VA_TEX0MTXIDX,
|
||||
/* 0x02 */ GX_VA_TEX1MTXIDX,
|
||||
/* 0x03 */ GX_VA_TEX2MTXIDX,
|
||||
/* 0x04 */ GX_VA_TEX3MTXIDX,
|
||||
/* 0x05 */ GX_VA_TEX4MTXIDX,
|
||||
/* 0x06 */ GX_VA_TEX5MTXIDX,
|
||||
/* 0x07 */ GX_VA_TEX6MTXIDX,
|
||||
/* 0x08 */ GX_VA_TEX7MTXIDX,
|
||||
/* 0x09 */ GX_VA_POS,
|
||||
/* 0x0A */ GX_VA_NRM,
|
||||
/* 0x0B */ GX_VA_CLR0,
|
||||
/* 0x0C */ GX_VA_CLR1,
|
||||
/* 0x0D */ GX_VA_TEX0,
|
||||
/* 0x0E */ GX_VA_TEX1,
|
||||
/* 0x0F */ GX_VA_TEX2,
|
||||
/* 0x10 */ GX_VA_TEX3,
|
||||
/* 0x11 */ GX_VA_TEX4,
|
||||
/* 0x12 */ GX_VA_TEX5,
|
||||
/* 0x13 */ GX_VA_TEX6,
|
||||
/* 0x14 */ GX_VA_TEX7,
|
||||
/* 0x15 */ GX_POS_MTX_ARRAY,
|
||||
/* 0x16 */ GX_NRM_MTX_ARRAY,
|
||||
/* 0x17 */ GX_TEX_MTX_ARRAY,
|
||||
/* 0x18 */ GX_LIGHT_ARRAY,
|
||||
/* 0x19 */ GX_VA_NBT,
|
||||
/* 0x1A */ GX_VA_MAX_ATTR,
|
||||
/* 0xFF */ GX_VA_NULL = 255,
|
||||
} GXAttr;
|
||||
|
||||
typedef enum _GXCompCnt {
|
||||
/* 0x0 */ GX_POS_XY = 0,
|
||||
/* 0x1 */ GX_POS_XYZ = 1,
|
||||
/* 0x0 */ GX_NRM_XYZ = 0,
|
||||
/* 0x1 */ GX_NRM_NBT = 1,
|
||||
/* 0x2 */ GX_NRM_NBT3 = 2,
|
||||
/* 0x0 */ GX_CLR_RGB = 0,
|
||||
/* 0x1 */ GX_CLR_RGBA = 1,
|
||||
/* 0x0 */ GX_TEX_S = 0,
|
||||
/* 0x1 */ GX_TEX_ST = 1,
|
||||
} GXCompCnt;
|
||||
|
||||
typedef enum _GXCompType {
|
||||
/* 0x0 */ GX_U8,
|
||||
/* 0x1 */ GX_S8,
|
||||
/* 0x2 */ GX_U16,
|
||||
/* 0x3 */ GX_S16,
|
||||
/* 0x4 */ GX_F32,
|
||||
/* 0x0 */ GX_RGB565 = 0,
|
||||
/* 0x1 */ GX_RGB8,
|
||||
/* 0x2 */ GX_RGBX8,
|
||||
/* 0x3 */ GX_RGBA4,
|
||||
/* 0x4 */ GX_RGBA6,
|
||||
/* 0x5 */ GX_RGBA8,
|
||||
} GXCompType;
|
||||
|
||||
typedef enum _GXAttrType {
|
||||
/* 0x0 */ GX_NONE,
|
||||
/* 0x1 */ GX_DIRECT,
|
||||
/* 0x2 */ GX_INDEX8,
|
||||
/* 0x3 */ GX_INDEX16,
|
||||
} GXAttrType;
|
||||
|
||||
typedef enum _GXTevOp {
|
||||
/* 0x0 */ GX_TEV_ADD,
|
||||
/* 0x1 */ GX_TEV_SUB,
|
||||
/* 0x8 */ GX_TEV_COMP_R8_GT = 8,
|
||||
/* 0x9 */ GX_TEV_COMP_R8_EQ,
|
||||
/* 0xA */ GX_TEV_COMP_GR16_GT,
|
||||
/* 0xB */ GX_TEV_COMP_GR16_EQ,
|
||||
/* 0xC */ GX_TEV_COMP_BGR24_GT,
|
||||
/* 0xD */ GX_TEV_COMP_BGR24_EQ,
|
||||
/* 0xE */ GX_TEV_COMP_A8_GT,
|
||||
/* 0xE */ GX_TEV_COMP_RGB8_GT = 14,
|
||||
/* 0xF */ GX_TEV_COMP_RGB8_EQ,
|
||||
/* 0xF */ GX_TEV_COMP_A8_EQ = 15,
|
||||
} GXTevOp;
|
||||
|
||||
typedef enum _GXTevBias {
|
||||
/* 0x0 */ GX_TB_ZERO,
|
||||
/* 0x1 */ GX_TB_ADDHALF,
|
||||
/* 0x2 */ GX_TB_SUBHALF,
|
||||
/* 0x3 */ GX_MAX_TEVBIAS,
|
||||
} GXTevBias;
|
||||
|
||||
typedef enum _GXTevColorArg {
|
||||
/* 0x0 */ GX_CC_CPREV,
|
||||
/* 0x1 */ GX_CC_APREV,
|
||||
/* 0x2 */ GX_CC_C0,
|
||||
/* 0x3 */ GX_CC_A0,
|
||||
/* 0x4 */ GX_CC_C1,
|
||||
/* 0x5 */ GX_CC_A1,
|
||||
/* 0x6 */ GX_CC_C2,
|
||||
/* 0x7 */ GX_CC_A2,
|
||||
/* 0x8 */ GX_CC_TEXC,
|
||||
/* 0x9 */ GX_CC_TEXA,
|
||||
/* 0xA */ GX_CC_RASC,
|
||||
/* 0xB */ GX_CC_RASA,
|
||||
/* 0xC */ GX_CC_ONE,
|
||||
/* 0xD */ GX_CC_HALF,
|
||||
/* 0xE */ GX_CC_KONST,
|
||||
/* 0xF */ GX_CC_ZERO,
|
||||
} GXTevColorArg;
|
||||
|
||||
typedef enum _GXTevColor {
|
||||
/* 0x0 */ GX_CH_RED,
|
||||
/* 0x1 */ GX_CH_GREEN,
|
||||
/* 0x2 */ GX_CH_BLUE,
|
||||
/* 0x3 */ GX_CH_ALPHA,
|
||||
} GXTevColor;
|
||||
|
||||
typedef enum _GXTevScale {
|
||||
/* 0x0 */ GX_CS_SCALE_1,
|
||||
/* 0x1 */ GX_CS_SCALE_2,
|
||||
/* 0x2 */ GX_CS_SCALE_4,
|
||||
/* 0x3 */ GX_CS_DIVIDE_2,
|
||||
/* 0x4 */ GX_MAX_TEVSCALE
|
||||
} GXTevScale;
|
||||
|
||||
typedef enum _GXTevRegID {
|
||||
/* 0x0 */ GX_TEVPREV,
|
||||
/* 0x1 */ GX_TEVREG0,
|
||||
/* 0x2 */ GX_TEVREG1,
|
||||
/* 0x3 */ GX_TEVREG2,
|
||||
/* 0x4 */ GX_MAX_TEVREG
|
||||
} GXTevRegID;
|
||||
|
||||
typedef enum _GXTevAlphaArg {
|
||||
/* 0x0 */ GX_CA_APREV,
|
||||
/* 0x1 */ GX_CA_A0,
|
||||
/* 0x2 */ GX_CA_A1,
|
||||
/* 0x3 */ GX_CA_A2,
|
||||
/* 0x4 */ GX_CA_TEXA,
|
||||
/* 0x5 */ GX_CA_RASA,
|
||||
/* 0x6 */ GX_CA_KONST,
|
||||
/* 0x7 */ GX_CA_ZERO,
|
||||
} GXTevAlphaArg;
|
||||
|
||||
typedef enum _GXTexFmt {
|
||||
/* 0x0 */ GX_TF_I4,
|
||||
/* 0x1 */ GX_TF_I8,
|
||||
/* 0x2 */ GX_TF_IA4,
|
||||
/* 0x3 */ GX_TF_IA8,
|
||||
/* 0x4 */ GX_TF_RGB565,
|
||||
/* 0x5 */ GX_TF_TGB5A3,
|
||||
/* 0x6 */ GX_TF_RGBA8,
|
||||
/* 0x7 */ GX_TF_CI4,
|
||||
/* 0x8 */ GX_TF_CI8,
|
||||
/* 0x9 */ GX_TF_CI14,
|
||||
/* 0xE */ GX_TF_CMPR = 14,
|
||||
/* 0x10 */ _GX_TF_ZTF = 0x10,
|
||||
/* 0x11 */ GX_TF_Z8 = (0x1 | _GX_TF_ZTF),
|
||||
/* 0x13 */ GX_TF_Z16 = (0x3 | _GX_TF_ZTF),
|
||||
/* 0x16 */ GX_TF_Z24X8 = (0x6 | _GX_TF_ZTF),
|
||||
/* 0x20 */ _GX_TF_CTF = 0x20,
|
||||
/* 0x28 */ _GX_CTF_R8 = 0x28,
|
||||
/* 0x30 */ GX_CTF_Z4 = (0x0 | _GX_TF_ZTF | _GX_TF_CTF),
|
||||
/* 0x39 */ GX_CTF_Z8M = (0x9 | _GX_TF_ZTF | _GX_TF_CTF),
|
||||
/* 0x3A */ GX_CTF_Z8L = (0xA | _GX_TF_ZTF | _GX_TF_CTF),
|
||||
/* 0x3C */ GX_CTF_Z16L = (0xC | _GX_TF_ZTF | _GX_TF_CTF),
|
||||
} GXTexFmt;
|
||||
|
||||
typedef enum _GXGamma {
|
||||
/* 0x0 */ GX_GM_1_0,
|
||||
/* 0x0 */ GX_GM_1_7,
|
||||
/* 0x0 */ GX_GM_2_2,
|
||||
} GXGamma;
|
||||
|
||||
typedef enum _GXTlutFmt {
|
||||
/* 0x0 */ GX_TL_IA8,
|
||||
/* 0x1 */ GX_TL_RGB565,
|
||||
/* 0x2 */ GX_TL_RGB5A3,
|
||||
} GXTlutFmt;
|
||||
|
||||
typedef enum _GXTlut {
|
||||
/* 0x00 */ GX_TLUT0,
|
||||
/* 0x01 */ GX_TLUT1,
|
||||
/* 0x02 */ GX_TLUT2,
|
||||
/* 0x03 */ GX_TLUT3,
|
||||
/* 0x04 */ GX_TLUT4,
|
||||
/* 0x05 */ GX_TLUT5,
|
||||
/* 0x06 */ GX_TLUT6,
|
||||
/* 0x07 */ GX_TLUT7,
|
||||
/* 0x08 */ GX_TLUT8,
|
||||
/* 0x09 */ GX_TLUT9,
|
||||
/* 0x0A */ GX_TLUT10,
|
||||
/* 0x0B */ GX_TLUT11,
|
||||
/* 0x0C */ GX_TLUT12,
|
||||
/* 0x0D */ GX_TLUT13,
|
||||
/* 0x0E */ GX_TLUT14,
|
||||
/* 0x0F */ GX_TLUT15,
|
||||
/* 0x10 */ GX_BIGTLUT0,
|
||||
/* 0x11 */ GX_BIGTLUT1,
|
||||
/* 0x12 */ GX_BIGTLUT2,
|
||||
/* 0x13 */ GX_BIGTLUT3,
|
||||
} GXTlut;
|
||||
|
||||
/* 8-bit version of GXTexFmt for use in structures */
|
||||
typedef enum _GXTexFmt8 {
|
||||
/* 0x20 */ GX_CTF_R4 = (0x0 | _GX_TF_CTF),
|
||||
/* 0x22 */ GX_CTF_RA4 = (0x2 | _GX_TF_CTF),
|
||||
/* 0x23 */ GX_CTF_RA8 = (0x3 | _GX_TF_CTF),
|
||||
/* 0x26 */ GX_CTF_YUVA8 = (0x6 | _GX_TF_CTF),
|
||||
/* 0x27 */ GX_CTF_A8 = (0x7 | _GX_TF_CTF),
|
||||
/* 0x28 */ GX_CTF_R8 = (0x8 | _GX_TF_CTF),
|
||||
/* 0x29 */ GX_CTF_G8 = (0x9 | _GX_TF_CTF),
|
||||
/* 0x2A */ GX_CTF_B8 = (0xA | _GX_TF_CTF),
|
||||
/* 0x2B */ GX_CTF_RG8 = (0xB | _GX_TF_CTF),
|
||||
/* 0x2C */ GX_CTF_GB8 = (0xC | _GX_TF_CTF),
|
||||
} GXTexFmt8;
|
||||
|
||||
typedef enum _GXTexWrapMode {
|
||||
/* 0x0 */ GX_CLAMP,
|
||||
/* 0x1 */ GX_REPEAT,
|
||||
/* 0x2 */ GX_MIRROR,
|
||||
/* 0x3 */ GX_MAX_TEXWRAP_MODE,
|
||||
} GXTexWrapMode;
|
||||
|
||||
typedef enum _GXTexFilter {
|
||||
/* 0x0 */ GX_NEAR,
|
||||
/* 0x1 */ GX_LINEAR,
|
||||
/* 0x2 */ GX_NEAR_MIP_NEAR,
|
||||
/* 0x3 */ GX_LIN_MIP_NEAR,
|
||||
/* 0x4 */ GX_NEAR_MIP_LIN,
|
||||
/* 0x5 */ GX_LIN_MIP_LIN,
|
||||
} GXTexFilter;
|
||||
|
||||
typedef enum _GXAnisotropy {
|
||||
/* 0x0 */ GX_ANISO_1,
|
||||
/* 0x1 */ GX_ANISO_2,
|
||||
/* 0x2 */ GX_ANISO_4,
|
||||
/* 0x3 */ GX_MAX_ANISOTROPY,
|
||||
} GXAnisotropy;
|
||||
|
||||
enum GXCITexFmt {
|
||||
/* 0x8 */ GX_TF_C4 = 8,
|
||||
/* 0x8 */ GX_TF_C8,
|
||||
/* 0xA */ GX_TF_C14X2
|
||||
};
|
||||
|
||||
typedef enum _GXTexMtxType {
|
||||
/* 0x0 */ GX_MTX3x4,
|
||||
/* 0x1 */ GX_MTX2x4
|
||||
} GXTexMtxType;
|
||||
|
||||
typedef enum _GXCompare {
|
||||
/* 0x0 */ GX_NEVER,
|
||||
/* 0x1 */ GX_LESS,
|
||||
/* 0x2 */ GX_EQUAL,
|
||||
/* 0x3 */ GX_LEQUAL,
|
||||
/* 0x4 */ GX_GREATER,
|
||||
/* 0x5 */ GX_NEQUAL,
|
||||
/* 0x6 */ GX_GEQUAL,
|
||||
/* 0x7 */ GX_ALWAYS,
|
||||
} GXCompare;
|
||||
|
||||
typedef enum _GXAlphaOp {
|
||||
/* 0x0 */ GX_AOP_AND,
|
||||
/* 0x1 */ GX_AOP_OR,
|
||||
/* 0x2 */ GX_AOP_XOR,
|
||||
/* 0x3 */ GX_AOP_XNOR,
|
||||
/* 0x4 */ GX_MAX_ALPHAOP
|
||||
} GXAlphaOp;
|
||||
|
||||
typedef enum _GXFogType {
|
||||
/* 0x0 */ GX_FOG_NONE,
|
||||
/* 0x2 */ GX_FOG_LIN = 2,
|
||||
/* 0x2 */ GX_FOG_PERSP_LIN = 2,
|
||||
/* 0x4 */ GX_FOG_EXP = 4,
|
||||
/* 0x4 */ GX_FOG_PERSP_EXP = 4,
|
||||
/* 0x5 */ GX_FOG_EXP2,
|
||||
/* 0x5 */ GX_FOG_PERSP_EXP2 = 5,
|
||||
/* 0x6 */ GX_FOG_REVEXP,
|
||||
/* 0x6 */ GX_FOG_PERSP_REVEXP = 6,
|
||||
/* 0x7 */ GX_FOG_REVEXP2,
|
||||
/* 0x7 */ GX_FOG_PERSP_REVEXP2 = 7,
|
||||
/* 0xA */ GX_FOG_ORTHO_LIN = 10,
|
||||
/* 0xC */ GX_FOG_ORTHO_EXP = 12,
|
||||
/* 0xD */ GX_FOG_ORTHO_EXP2,
|
||||
/* 0xE */ GX_FOG_ORTHO_REVEXP,
|
||||
/* 0xF */ GX_FOG_ORTHO_REVEXP2,
|
||||
} GXFogType;
|
||||
|
||||
typedef enum _GXProjectionType {
|
||||
/* 0x0 */ GX_PERSPECTIVE,
|
||||
/* 0x1 */ GX_ORTHOGRAPHIC
|
||||
} GXProjectionType;
|
||||
|
||||
typedef enum _GXTevKAlphaSel {
|
||||
/* 0x00 */ GX_TEV_KASEL_1,
|
||||
/* 0x01 */ GX_TEV_KASEL_7_8,
|
||||
/* 0x02 */ GX_TEV_KASEL_3_4,
|
||||
/* 0x03 */ GX_TEV_KASEL_5_8,
|
||||
/* 0x04 */ GX_TEV_KASEL_1_2,
|
||||
/* 0x05 */ GX_TEV_KASEL_3_8,
|
||||
/* 0x06 */ GX_TEV_KASEL_1_4,
|
||||
/* 0x07 */ GX_TEV_KASEL_1_8,
|
||||
|
||||
/* 0x10 */ GX_TEV_KASEL_K0_R = 0x10,
|
||||
/* 0x11 */ GX_TEV_KASEL_K1_R,
|
||||
/* 0x12 */ GX_TEV_KASEL_K2_R,
|
||||
/* 0x13 */ GX_TEV_KASEL_K3_R,
|
||||
/* 0x14 */ GX_TEV_KASEL_K0_G,
|
||||
/* 0x15 */ GX_TEV_KASEL_K1_G,
|
||||
/* 0x16 */ GX_TEV_KASEL_K2_G,
|
||||
/* 0x17 */ GX_TEV_KASEL_K3_G,
|
||||
/* 0x18 */ GX_TEV_KASEL_K0_B,
|
||||
/* 0x19 */ GX_TEV_KASEL_K1_B,
|
||||
/* 0x1A */ GX_TEV_KASEL_K2_B,
|
||||
/* 0x1B */ GX_TEV_KASEL_K3_B,
|
||||
/* 0x1C */ GX_TEV_KASEL_K0_A,
|
||||
/* 0x1D */ GX_TEV_KASEL_K1_A,
|
||||
/* 0x1E */ GX_TEV_KASEL_K2_A,
|
||||
/* 0x1F */ GX_TEV_KASEL_K3_A,
|
||||
} GXTevKAlphaSel;
|
||||
|
||||
typedef enum _GXTevKColorSel {
|
||||
/* 0x00 */ GX_TEV_KCSEL_1,
|
||||
/* 0x01 */ GX_TEV_KCSEL_7_8,
|
||||
/* 0x02 */ GX_TEV_KCSEL_3_4,
|
||||
/* 0x03 */ GX_TEV_KCSEL_5_8,
|
||||
/* 0x04 */ GX_TEV_KCSEL_1_2,
|
||||
/* 0x05 */ GX_TEV_KCSEL_3_8,
|
||||
/* 0x06 */ GX_TEV_KCSEL_1_4,
|
||||
/* 0x07 */ GX_TEV_KCSEL_1_8,
|
||||
/* 0x0C */ GX_TEV_KCSEL_K0 = 0xC,
|
||||
/* 0x0D */ GX_TEV_KCSEL_K1,
|
||||
/* 0x0E */ GX_TEV_KCSEL_K2,
|
||||
/* 0x0F */ GX_TEV_KCSEL_K3,
|
||||
/* 0x10 */ GX_TEV_KCSEL_K0_R,
|
||||
/* 0x11 */ GX_TEV_KCSEL_K1_R,
|
||||
/* 0x12 */ GX_TEV_KCSEL_K2_R,
|
||||
/* 0x13 */ GX_TEV_KCSEL_K3_R,
|
||||
/* 0x14 */ GX_TEV_KCSEL_K0_G,
|
||||
/* 0x15 */ GX_TEV_KCSEL_K1_G,
|
||||
/* 0x16 */ GX_TEV_KCSEL_K2_G,
|
||||
/* 0x17 */ GX_TEV_KCSEL_K3_G,
|
||||
/* 0x18 */ GX_TEV_KCSEL_K0_B,
|
||||
/* 0x19 */ GX_TEV_KCSEL_K1_B,
|
||||
/* 0x1A */ GX_TEV_KCSEL_K2_B,
|
||||
/* 0x1B */ GX_TEV_KCSEL_K3_B,
|
||||
/* 0x1C */ GX_TEV_KCSEL_K0_A,
|
||||
/* 0x1D */ GX_TEV_KCSEL_K1_A,
|
||||
/* 0x1E */ GX_TEV_KCSEL_K2_A,
|
||||
/* 0x1F */ GX_TEV_KCSEL_K3_A,
|
||||
} GXTevKColorSel;
|
||||
|
||||
typedef enum _GXTevSwapSel {
|
||||
/* 0x0 */ GX_TEV_SWAP0,
|
||||
/* 0x1 */ GX_TEV_SWAP1,
|
||||
/* 0x2 */ GX_TEV_SWAP2,
|
||||
/* 0x3 */ GX_TEV_SWAP3,
|
||||
/* 0x4 */ GX_MAX_TEVSWAP,
|
||||
} GXTevSwapSel;
|
||||
|
||||
typedef enum _GXTexGenType {
|
||||
/* 0x0 */ GX_TG_MTX3x4,
|
||||
/* 0x1 */ GX_TG_MTX2x4,
|
||||
/* 0x2 */ GX_TG_BUMP0,
|
||||
/* 0x3 */ GX_TG_BUMP1,
|
||||
/* 0x4 */ GX_TG_BUMP2,
|
||||
/* 0x5 */ GX_TG_BUMP3,
|
||||
/* 0x6 */ GX_TG_BUMP4,
|
||||
/* 0x7 */ GX_TG_BUMP5,
|
||||
/* 0x8 */ GX_TG_BUMP6,
|
||||
/* 0x9 */ GX_TG_BUMP7,
|
||||
/* 0xA */ GX_TG_SRTG,
|
||||
} GXTexGenType;
|
||||
|
||||
typedef enum _GXTexGenSrc {
|
||||
/* 0x00 */ GX_TG_POS,
|
||||
/* 0x01 */ GX_TG_NRM,
|
||||
/* 0x02 */ GX_TG_BINRM,
|
||||
/* 0x03 */ GX_TG_TANGENT,
|
||||
/* 0x04 */ GX_TG_TEX0,
|
||||
/* 0x05 */ GX_TG_TEX1,
|
||||
/* 0x06 */ GX_TG_TEX2,
|
||||
/* 0x07 */ GX_TG_TEX3,
|
||||
/* 0x08 */ GX_TG_TEX4,
|
||||
/* 0x09 */ GX_TG_TEX5,
|
||||
/* 0x0A */ GX_TG_TEX6,
|
||||
/* 0x0B */ GX_TG_TEX7,
|
||||
/* 0x0C */ GX_TG_TEXCOORD0,
|
||||
/* 0x0D */ GX_TG_TEXCOORD1,
|
||||
/* 0x0E */ GX_TG_TEXCOORD2,
|
||||
/* 0x0F */ GX_TG_TEXCOORD3,
|
||||
/* 0x10 */ GX_TG_TEXCOORD4,
|
||||
/* 0x11 */ GX_TG_TEXCOORD5,
|
||||
/* 0x12 */ GX_TG_TEXCOORD6,
|
||||
} GXTexGenSrc;
|
||||
|
||||
typedef enum _GXZTexOp {
|
||||
/* 0x0 */ GX_ZT_DISABLE,
|
||||
/* 0x1 */ GX_ZT_ADD,
|
||||
/* 0x2 */ GX_ZT_REPLACE,
|
||||
/* 0x3 */ GX_MAX_ZTEXOP,
|
||||
} GXZTexOp;
|
||||
|
||||
typedef enum _GXIndTexStageID {
|
||||
/* 0x0 */ GX_INDTEXSTAGE0,
|
||||
/* 0x1 */ GX_INDTEXSTAGE1,
|
||||
/* 0x2 */ GX_INDTEXSTAGE2,
|
||||
/* 0x3 */ GX_INDTEXSTAGE3,
|
||||
/* 0x4 */ GX_MAX_INDTEXSTAGE,
|
||||
} GXIndTexStageID;
|
||||
|
||||
typedef enum _GXIndTexScale {
|
||||
/* 0x0 */ GX_ITS_1,
|
||||
/* 0x1 */ GX_ITS_2,
|
||||
/* 0x2 */ GX_ITS_4,
|
||||
/* 0x3 */ GX_ITS_8,
|
||||
/* 0x4 */ GX_ITS_16,
|
||||
/* 0x5 */ GX_ITS_32,
|
||||
/* 0x6 */ GX_ITS_64,
|
||||
/* 0x7 */ GX_ITS_128,
|
||||
/* 0x8 */ GX_ITS_256,
|
||||
/* 0x9 */ GX_MAX_ITSCALE,
|
||||
} GXIndTexScale;
|
||||
|
||||
typedef enum _GXIndTexMtxID {
|
||||
/* 0x0 */ GX_ITM_OFF,
|
||||
/* 0x1 */ GX_ITM_0,
|
||||
/* 0x2 */ GX_ITM_1,
|
||||
/* 0x3 */ GX_ITM_2,
|
||||
/* 0x5 */ GX_ITM_S0 = 5,
|
||||
/* 0x6 */ GX_ITM_S1,
|
||||
/* 0x7 */ GX_ITM_S2,
|
||||
/* 0x9 */ GX_ITM_T0 = 9,
|
||||
/* 0xA */ GX_ITM_T1,
|
||||
/* 0xB */ GX_ITM_T2,
|
||||
} GXIndTexMtxID;
|
||||
|
||||
typedef enum _GXIndTexFormat {
|
||||
/* 0x0 */ GX_ITF_8,
|
||||
/* 0x1 */ GX_ITF_5,
|
||||
/* 0x2 */ GX_ITF_4,
|
||||
/* 0x3 */ GX_ITF_3,
|
||||
} GXIndTexFormat;
|
||||
|
||||
typedef enum _GXIndTexBiasSel {
|
||||
/* 0x0 */ GX_ITB_NONE,
|
||||
/* 0x1 */ GX_ITB_S,
|
||||
/* 0x2 */ GX_ITB_T,
|
||||
/* 0x3 */ GX_ITB_ST,
|
||||
/* 0x4 */ GX_ITB_U,
|
||||
/* 0x5 */ GX_ITB_SU,
|
||||
/* 0x6 */ GX_ITB_TU,
|
||||
/* 0x7 */ GX_ITB_STU,
|
||||
} GXIndTexBiasSel;
|
||||
|
||||
typedef enum _GXIndTexAlphaSel {
|
||||
/* 0x0 */ GX_ITBA_OFF,
|
||||
/* 0x1 */ GX_ITBA_S,
|
||||
/* 0x2 */ GX_ITBA_T,
|
||||
/* 0x3 */ GX_ITBA_U,
|
||||
} GXIndTexAlphaSel;
|
||||
|
||||
typedef enum _GXIndTexWrap {
|
||||
/* 0x0 */ GX_ITW_OFF,
|
||||
/* 0x1 */ GX_ITW_256,
|
||||
/* 0x2 */ GX_ITW_128,
|
||||
/* 0x3 */ GX_ITW_64,
|
||||
/* 0x4 */ GX_ITW_32,
|
||||
/* 0x5 */ GX_ITW_16,
|
||||
/* 0x6 */ GX_ITW_0,
|
||||
} GXIndTexWrap;
|
||||
|
||||
typedef enum _GXTexOffset {
|
||||
/* 0x0 */ GX_TO_ZERO,
|
||||
/* 0x1 */ GX_TO_SIXTEENTH,
|
||||
/* 0x2 */ GX_TO_EIGHTH,
|
||||
/* 0x3 */ GX_TO_FOURTH,
|
||||
/* 0x4 */ GX_TO_HALF,
|
||||
/* 0x5 */ GX_TO_ONE,
|
||||
/* 0x6 */ GX_MAX_TEXOFFSET,
|
||||
} GXTexOffset;
|
||||
|
||||
typedef enum _GXTevKColorID {
|
||||
/* 0x0 */ GX_KCOLOR0,
|
||||
/* 0x1 */ GX_KCOLOR1,
|
||||
/* 0x2 */ GX_KCOLOR2,
|
||||
/* 0x3 */ GX_KCOLOR3,
|
||||
} GXTevKColorID;
|
||||
|
||||
typedef enum _GXTexCacheSize {
|
||||
/* 0x0 */ GX_TEXCACHE_32K,
|
||||
/* 0x1 */ GX_TEXCACHE_128K,
|
||||
/* 0x2 */ GX_TEXCACHE_512K,
|
||||
/* 0x3 */ GX_TEXCACHE_NONE,
|
||||
} GXTexCacheSize;
|
||||
|
||||
typedef enum _GXPosNrmMtx {
|
||||
GX_PNMTX0 = 3 * 0,
|
||||
GX_PNMTX1 = 3 * 1,
|
||||
GX_PNMTX2 = 3 * 2,
|
||||
GX_PNMTX3 = 3 * 3,
|
||||
GX_PNMTX4 = 3 * 4,
|
||||
GX_PNMTX5 = 3 * 5,
|
||||
GX_PNMTX6 = 3 * 6,
|
||||
GX_PNMTX7 = 3 * 7,
|
||||
GX_PNMTX8 = 3 * 8,
|
||||
GX_PNMTX9 = 3 * 9,
|
||||
} GXPosNrmMtx;
|
||||
|
||||
typedef enum _GXTexMtx {
|
||||
GX_TEXMTX0 = 30 + 0 * 3,
|
||||
GX_TEXMTX1 = 30 + 1 * 3,
|
||||
GX_TEXMTX2 = 30 + 2 * 3,
|
||||
GX_TEXMTX3 = 30 + 3 * 3,
|
||||
GX_TEXMTX4 = 30 + 4 * 3,
|
||||
GX_TEXMTX5 = 30 + 5 * 3,
|
||||
GX_TEXMTX6 = 30 + 6 * 3,
|
||||
GX_TEXMTX7 = 30 + 7 * 3,
|
||||
GX_TEXMTX8 = 30 + 8 * 3,
|
||||
GX_TEXMTX9 = 30 + 9 * 3,
|
||||
GX_IDENTITY = 60,
|
||||
};
|
||||
|
||||
typedef enum _GXPTTexMtx {
|
||||
GX_PTTEXMTX0 = 64 + 0 * 3,
|
||||
GX_PTTEXMTX1 = 64 + 1 * 3,
|
||||
GX_PTTEXMTX2 = 64 + 2 * 3,
|
||||
GX_PTTEXMTX3 = 64 + 3 * 3,
|
||||
GX_PTTEXMTX4 = 64 + 4 * 3,
|
||||
GX_PTTEXMTX5 = 64 + 5 * 3,
|
||||
GX_PTTEXMTX6 = 64 + 6 * 3,
|
||||
GX_PTTEXMTX7 = 64 + 7 * 3,
|
||||
GX_PTTEXMTX8 = 64 + 8 * 3,
|
||||
GX_PTTEXMTX9 = 64 + 9 * 3,
|
||||
GX_PTTEXMTX10 = 64 + 10 * 3,
|
||||
GX_PTTEXMTX11 = 64 + 11 * 3,
|
||||
GX_PTTEXMTX12 = 64 + 12 * 3,
|
||||
GX_PTTEXMTX13 = 64 + 13 * 3,
|
||||
GX_PTTEXMTX14 = 64 + 14 * 3,
|
||||
GX_PTTEXMTX15 = 64 + 15 * 3,
|
||||
GX_PTTEXMTX16 = 64 + 16 * 3,
|
||||
GX_PTTEXMTX17 = 64 + 17 * 3,
|
||||
GX_PTTEXMTX18 = 64 + 18 * 3,
|
||||
GX_PTTEXMTX19 = 64 + 19 * 3,
|
||||
GX_PTIDENTITY = 125,
|
||||
};
|
||||
|
||||
typedef enum _GXFBClamp {
|
||||
/* 0x0 */ GX_CLAMP_NONE,
|
||||
/* 0x1 */ GX_CLAMP_TOP,
|
||||
/* 0x2 */ GX_CLAMP_BOTTOM,
|
||||
} GXFBClamp;
|
||||
|
||||
typedef enum _GXPixelFmt {
|
||||
/* 0x0 */ GX_PF_RGB8_Z24,
|
||||
/* 0x1 */ GX_PF_RGBA6_Z24,
|
||||
/* 0x2 */ GX_PF_RGB565_Z16,
|
||||
/* 0x3 */ GX_PF_Z24,
|
||||
/* 0x4 */ GX_PF_Y8,
|
||||
/* 0x5 */ GX_PF_U8,
|
||||
/* 0x6 */ GX_PF_V8,
|
||||
/* 0x7 */ GX_PF_YUV420,
|
||||
} GXPixelFmt;
|
||||
|
||||
typedef enum _GXZFmt16 {
|
||||
/* 0x0 */ GX_ZC_LINEAR,
|
||||
/* 0x1 */ GX_ZC_NEAR,
|
||||
/* 0x2 */ GX_ZC_MID,
|
||||
/* 0x3 */ GX_ZC_FAR,
|
||||
} GXZFmt16;
|
||||
|
||||
typedef enum _GXCommand {
|
||||
GX_CMD_LOAD_INDX_A = 0x20,
|
||||
GX_CMD_LOAD_INDX_B = 0x28,
|
||||
GX_CMD_LOAD_INDX_C = 0x30,
|
||||
GX_CMD_LOAD_INDX_D = 0x38,
|
||||
|
||||
GX_CMD_LOAD_CP_REG = 0x08,
|
||||
GX_CMD_LOAD_XF_REG = 0x10,
|
||||
} GXCommand;
|
||||
|
||||
typedef enum _GXClipMode {
|
||||
/* 0x0 */ GX_CLIP_ENABLE,
|
||||
/* 0x1 */ GX_CLIP_DISABLE,
|
||||
} GXClipMode;
|
||||
|
||||
#endif /* GXENUM_H */
|
||||
@@ -0,0 +1,89 @@
|
||||
#ifndef GXSTRUCT_H
|
||||
#define GXSTRUCT_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "global.h"
|
||||
|
||||
typedef struct _GXColor {
|
||||
/* 0x0 */ u8 r;
|
||||
/* 0x1 */ u8 g;
|
||||
/* 0x2 */ u8 b;
|
||||
/* 0x3 */ u8 a;
|
||||
} GXColor;
|
||||
|
||||
typedef struct _GXColorS10 {
|
||||
/* 0x0 */ s16 r;
|
||||
/* 0x2 */ s16 g;
|
||||
/* 0x4 */ s16 b;
|
||||
/* 0x6 */ s16 a;
|
||||
} GXColorS10;
|
||||
|
||||
typedef struct _GXRenderModeObj {
|
||||
/* 0x00 */ s32 vi_tv_mode;
|
||||
/* 0x04 */ u16 fb_width;
|
||||
/* 0x06 */ u16 efb_height;
|
||||
/* 0x08 */ u16 xfb_height;
|
||||
/* 0x0A */ u16 vi_x_origin;
|
||||
/* 0x0C */ u16 vi_y_origin;
|
||||
/* 0x0E */ u16 vi_width;
|
||||
/* 0x10 */ u16 vi_height;
|
||||
/* 0x14 */ s32 xfb_mode;
|
||||
/* 0x18 */ u8 field_rendering;
|
||||
/* 0x19 */ u8 antialiasing;
|
||||
/* 0x1A */ u8 sample_pattern[12][2];
|
||||
/* 0x32 */ u8 vfilter[7];
|
||||
} GXRenderModeObj;
|
||||
|
||||
STATIC_ASSERT(sizeof(_GXRenderModeObj) == 60);
|
||||
|
||||
typedef struct _GXTexObj {
|
||||
/* 0x00 */ u32 texture_filter;
|
||||
/* 0x04 */ u32 texture_lod;
|
||||
/* 0x08 */ u32 texture_size;
|
||||
/* 0x0C */ u32 texture_address;
|
||||
/* 0x10 */ u32 user_data;
|
||||
/* 0x14 */ u32 texture_format;
|
||||
/* 0x18 */ u32 tlut_name;
|
||||
/* 0x1C */ u16 texture_time_count;
|
||||
/* 0x1E */ u8 texture_tile_type;
|
||||
/* 0x1F */ u8 texture_flags;
|
||||
} GXTexObj;
|
||||
|
||||
typedef struct _GXTlutObj {
|
||||
/* 0x0 */ u32 format;
|
||||
/* 0x4 */ u32 address;
|
||||
/* 0x8 */ u32 numEntries;
|
||||
} GXTlutObj;
|
||||
|
||||
typedef struct _GXLightObj {
|
||||
/* 0x0 */ u32 data[16];
|
||||
} GXLightObj;
|
||||
|
||||
typedef struct _GXFogAdjTable {
|
||||
/* 0x0 */ u16 r[10];
|
||||
} GXFogAdjTable;
|
||||
|
||||
typedef struct _GXFifoObj {
|
||||
/* 0x00 */ void* base;
|
||||
/* 0x04 */ u32 end;
|
||||
/* 0x08 */ u32 size;
|
||||
/* 0x0C */ u32 high_wtrmark;
|
||||
/* 0x10 */ u32 low_wtrmark;
|
||||
/* 0x14 */ void* read_ptr;
|
||||
/* 0x18 */ void* write_ptr;
|
||||
/* 0x1C */ void* rw_dst;
|
||||
/* 0x20 */ u8 fifo_wrap;
|
||||
/* 0x21 */ u8 cpu_fifo_ready;
|
||||
/* 0x22 */ u8 gp_fifo_ready;
|
||||
/* 0x23 */ u8 field_0x23[93];
|
||||
} GXFifoObj; // Size: 0x80
|
||||
|
||||
typedef struct _GXTexRegion {
|
||||
/* 0x00 */ u8 dummy[0x10];
|
||||
} GXTexRegion; // Size: 0x10
|
||||
|
||||
typedef struct _GXTlutRegion {
|
||||
/* 0x00 */ u8 dummy[0x10];
|
||||
} GXTlutRegion; // Size: 0x10
|
||||
|
||||
#endif /* GXSTRUCT_H */
|
||||
+57
-216
@@ -1,236 +1,81 @@
|
||||
// at some point: we should split this up into various OS/... headers. but not
|
||||
// yet, since barely any files include this atm.
|
||||
|
||||
#ifndef OS_H_
|
||||
#define OS_H_
|
||||
|
||||
#include "Runtime.PPCEABI.H/__va_arg.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#include "Runtime.PPCEABI.H/__va_arg.h"
|
||||
#include "dolphin/os/OSAlarm.h"
|
||||
#include "dolphin/os/OSAlloc.h"
|
||||
#include "dolphin/os/OSArena.h"
|
||||
#include "dolphin/os/OSAudioSystem.h"
|
||||
#include "dolphin/os/OSCache.h"
|
||||
#include "dolphin/os/OSContext.h"
|
||||
#include "dolphin/os/OSError.h"
|
||||
#include "dolphin/os/OSExec.h"
|
||||
#include "dolphin/os/OSFont.h"
|
||||
#include "dolphin/os/OSInterrupt.h"
|
||||
#include "dolphin/os/OSLink.h"
|
||||
#include "dolphin/os/OSMemory.h"
|
||||
#include "dolphin/os/OSMessage.h"
|
||||
#include "dolphin/os/OSMutex.h"
|
||||
#include "dolphin/os/OSReboot.h"
|
||||
#include "dolphin/os/OSReset.h"
|
||||
#include "dolphin/os/OSResetSW.h"
|
||||
#include "dolphin/os/OSRtc.h"
|
||||
#include "dolphin/os/OSSync.h"
|
||||
#include "dolphin/os/OSThread.h"
|
||||
#include "dolphin/os/OSTime.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define OS_BUS_CLOCK (*(u32*)0x800000F8)
|
||||
#define OS_CORE_CLOCK (*(u32*)0x800000FC)
|
||||
#define OS_TIMER_CLOCK (OS_BUS_CLOCK / 4)
|
||||
|
||||
/* TODO: more structs, and get rid of the ones that are faked! */
|
||||
|
||||
#define OS_MESSAGE_NON_BLOCKING 0
|
||||
#define OS_MESSAGE_BLOCKING 1
|
||||
|
||||
struct OSThread;
|
||||
struct OSMutex {
|
||||
u8 unk[24];
|
||||
};
|
||||
|
||||
struct OSMutexLink {
|
||||
struct OSMutex* prev;
|
||||
struct OSMutex* next;
|
||||
};
|
||||
|
||||
struct OSMutexQueue {
|
||||
struct OSMutex* prev;
|
||||
struct OSMutex* next;
|
||||
};
|
||||
|
||||
struct OSContext {
|
||||
u32 gpr[32];
|
||||
u32 cr;
|
||||
u32 lr;
|
||||
u32 ctr;
|
||||
u32 xer;
|
||||
double fpr[32];
|
||||
u32 padding_1;
|
||||
u32 fpscr;
|
||||
u32 srr0;
|
||||
u32 srr1;
|
||||
u16 mode;
|
||||
u16 state;
|
||||
u32 gqr[8];
|
||||
u32 padding_2;
|
||||
double ps[32];
|
||||
};
|
||||
|
||||
typedef void (*OSSwitchThreadCallback)(OSThread* from, OSThread* to);
|
||||
|
||||
struct OSThreadLink {
|
||||
struct OSThread* prev;
|
||||
struct OSThread* next;
|
||||
};
|
||||
|
||||
struct OSThreadQueue {
|
||||
struct OSThread* head;
|
||||
struct OSThread* tail;
|
||||
};
|
||||
|
||||
struct OSCond {
|
||||
struct OSThreadQueue queue;
|
||||
};
|
||||
|
||||
typedef void* OSMessage;
|
||||
|
||||
struct OSMessageQueue {
|
||||
struct OSThreadQueue sending_queue;
|
||||
struct OSThreadQueue receiving_queue;
|
||||
void** message_array;
|
||||
s32 num_messages;
|
||||
s32 first_index;
|
||||
s32 num_used;
|
||||
};
|
||||
|
||||
typedef u32 OSTick;
|
||||
|
||||
typedef s64 OSTime;
|
||||
|
||||
struct OSCalendarTime {
|
||||
s32 seconds;
|
||||
s32 minutes;
|
||||
s32 hours;
|
||||
s32 day_of_month;
|
||||
s32 month;
|
||||
s32 year;
|
||||
s32 week_day;
|
||||
s32 year_day;
|
||||
s32 milliseconds;
|
||||
s32 microseconds;
|
||||
};
|
||||
|
||||
typedef s32 OSHeapHandle;
|
||||
|
||||
typedef enum OSSoundMode {
|
||||
SOUND_MODE_MONO = 0,
|
||||
SOUND_MODE_STEREO = 1,
|
||||
} OSSoundMode;
|
||||
|
||||
typedef u16 OSThreadState;
|
||||
#define OS_THREAD_STATE_UNINITIALIZED 0
|
||||
#define OS_THREAD_STATE_READY 1
|
||||
#define OS_THREAD_STATE_RUNNING 2
|
||||
#define OS_THREAD_STATE_WAITING 4
|
||||
#define OS_THREAD_STATE_DEAD 8
|
||||
|
||||
struct OSThread {
|
||||
OSContext context;
|
||||
OSThreadState state;
|
||||
u16 attributes;
|
||||
s32 suspend_count;
|
||||
u32 effective_priority;
|
||||
u32 base_priority;
|
||||
void* exit_value;
|
||||
OSThreadQueue* queue;
|
||||
OSThreadLink link;
|
||||
OSThreadQueue join_queue;
|
||||
OSMutex* mutex;
|
||||
OSMutexQueue owned_mutexes;
|
||||
OSThreadLink active_threads_link;
|
||||
u8* stack_base;
|
||||
u8* stack_end;
|
||||
u8* error_code;
|
||||
void* data[2];
|
||||
};
|
||||
|
||||
struct OSAlarm;
|
||||
struct OSAlarmLink {
|
||||
/* 0x0 */ OSAlarm* prev;
|
||||
/* 0x4 */ OSAlarm* next;
|
||||
};
|
||||
|
||||
typedef void (*OSAlarmHandler)(OSAlarm* alarm, OSContext* context);
|
||||
|
||||
struct OSAlarm {
|
||||
/* 0x00 */ OSAlarmHandler handler;
|
||||
/* 0x04 */ u32 tag;
|
||||
/* 0x08 */ OSTime fire_time;
|
||||
/* 0x10 */ OSAlarmLink link;
|
||||
/* 0x18 */ OSTime period_time;
|
||||
/* 0x20 */ OSTime start_time;
|
||||
}; // Size: 0x28
|
||||
|
||||
extern "C" {
|
||||
s32 OSEnableScheduler(void);
|
||||
s32 OSDisableScheduler(void);
|
||||
s32 OSCheckActiveThreads(void);
|
||||
OSThread* OSGetCurrentThread(void);
|
||||
|
||||
s32 OSSuspendThread(OSThread* thread);
|
||||
s32 OSSetThreadPriority(OSThread* thread, u32 pri);
|
||||
s32 OSGetThreadPriority(OSThread* thread);
|
||||
BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stack, u32 stackSize,
|
||||
int priority, int attr);
|
||||
void OSCancelThread(OSThread* thread);
|
||||
void OSDetachThread(OSThread* thread);
|
||||
s32 OSResumeThread(OSThread* thread);
|
||||
void OSExitThread(void* exit_val);
|
||||
BOOL OSIsThreadSuspended(OSThread* thread);
|
||||
BOOL OSIsThreadTerminated(OSThread* thread);
|
||||
OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback callback);
|
||||
|
||||
void OSInitMessageQueue(OSMessageQueue* queue, OSMessage* messages, int message_count);
|
||||
BOOL OSReceiveMessage(OSMessageQueue* queue, OSMessage* message, int flags);
|
||||
BOOL OSSendMessage(OSMessageQueue* queue, OSMessage message, int flags);
|
||||
BOOL OSJamMessage(OSMessageQueue* queue, OSMessage message, int flags);
|
||||
u32 OSGetConsoleType(void);
|
||||
|
||||
s32 OSGetConsoleType(void);
|
||||
u32 OSGetResetCode(void);
|
||||
|
||||
u32 OSGetSoundMode(void);
|
||||
void OSSetSoundMode(OSSoundMode mode);
|
||||
|
||||
void OSAttention(const char* msg, ...);
|
||||
void OSPanic(const char* file, s32 line, const char* fmt, ...);
|
||||
void OSReport(const char* fmt, ...);
|
||||
void OSReport_Error(const char* fmt, ...);
|
||||
void OSReport_FatalError(const char* fmt, ...);
|
||||
void OSReport_System(const char* fmt, ...);
|
||||
void OSReport_Warning(const char* fmt, ...);
|
||||
void OSAttention(char* msg, ...);
|
||||
void OSPanic(char* file, s32 line, char* fmt, ...);
|
||||
void OSReport(char* fmt, ...);
|
||||
void OSReport_Error(char* fmt, ...);
|
||||
void OSReport_FatalError(char* fmt, ...);
|
||||
void OSReport_System(char* fmt, ...);
|
||||
void OSReport_Warning(char* fmt, ...);
|
||||
void OSReportDisable(void);
|
||||
void OSReportEnable(void);
|
||||
void OSReportForceEnableOff(void);
|
||||
void OSReportForceEnableOn(void);
|
||||
void OSVReport(const char* format, va_list list);
|
||||
|
||||
void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* out_time);
|
||||
OSTime OSGetTime(void);
|
||||
OSTick OSGetTick(void);
|
||||
|
||||
u32 OSGetArenaLo();
|
||||
u32 OSGetArenaHi();
|
||||
u32 OSInitAlloc(u32 low, u32 high, int maxHeaps);
|
||||
void OSSetArenaLo(u32 newLo);
|
||||
void OSSetArenaHi(u32 newHi);
|
||||
void* OSAllocFromArenaLo(u32 size, int alignment);
|
||||
|
||||
void OSInitMutex(OSMutex* mutex);
|
||||
void OSLockMutex(OSMutex* mutex);
|
||||
BOOL OSTryLockMutex(OSMutex* mutex);
|
||||
void OSUnlockMutex(OSMutex* mutex);
|
||||
|
||||
BOOL OSDisableInterrupts();
|
||||
BOOL OSEnableInterrupts();
|
||||
BOOL OSRestoreInterrupts(s32 level);
|
||||
|
||||
void OSResetSystem(s32 param_1, u32 param_2, s32 param_3);
|
||||
|
||||
void OSSetSaveRegion(void* start, void* end);
|
||||
|
||||
void LCDisable(void);
|
||||
void OSVReport(char* format, va_list list);
|
||||
void OSVAttention(char* fmt, va_list args);
|
||||
void OSReportInit(void);
|
||||
|
||||
void OSReportInit__Fv(void); // needed for inline asm
|
||||
|
||||
u8* OSGetStackPointer(void);
|
||||
void __OSFPRInit(void);
|
||||
static void InquiryCallback(u32 param_0, void* param_1);
|
||||
void OSInit(void);
|
||||
static void OSExceptionInit(void);
|
||||
void __OSDBIntegrator(void);
|
||||
void __OSDBJump(void);
|
||||
|
||||
void OSCreateAlarm(OSAlarm* alarm);
|
||||
void OSCancelAlarm(OSAlarm* alarm);
|
||||
void OSSetAlarm(OSAlarm* alarm, OSTime time, OSAlarmHandler handler);
|
||||
void OSSetPeriodicAlarm(OSAlarm*, OSTime, OSTime, OSAlarmHandler);
|
||||
|
||||
void OSInitCond(OSCond* cond);
|
||||
void OSWaitCond(OSCond* cond, OSMutex* mutex);
|
||||
void OSSignalCond(OSCond* cond);
|
||||
|
||||
void DCStoreRangeNoSync(void*, u32);
|
||||
typedef void (*OSExceptionHandler)(OSException, OSContext*);
|
||||
OSExceptionHandler __OSSetExceptionHandler(OSException exception, OSExceptionHandler handler);
|
||||
OSExceptionHandler __OSGetExceptionHandler(OSException exception);
|
||||
static void OSExceptionVector(void);
|
||||
void __DBVECTOR();
|
||||
void __OSEVSetNumber();
|
||||
void __OSEVEnd();
|
||||
static void OSDefaultExceptionHandler(OSException exception, OSContext* context);
|
||||
void __OSPSInit(void);
|
||||
void __OSGetDIConfig(void);
|
||||
void OSRegisterVersion(char* version);
|
||||
void OSSwitchFiberEx(u32, u32, u32, u32, u32, u32);
|
||||
|
||||
inline s16 __OSf32tos16(register f32 inF) {
|
||||
register s16 out;
|
||||
@@ -268,7 +113,7 @@ inline void OSf32tou8(f32* f, u8* out) {
|
||||
*out = __OSf32tou8(*f);
|
||||
}
|
||||
|
||||
inline void OSInitFastCast(void) {
|
||||
inline void i_OSInitFastCast(void) {
|
||||
// clang-format off
|
||||
asm {
|
||||
li r3, 4
|
||||
@@ -287,14 +132,6 @@ inline void OSInitFastCast(void) {
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
}; // extern "C"
|
||||
|
||||
void OSSwitchFiberEx(u32, u32, u32, u32, u32, u32);
|
||||
|
||||
void OSVAttention(const char* fmt, va_list args);
|
||||
|
||||
void OSReportInit(void);
|
||||
|
||||
#include "dolphin/dvd/dvd.h"
|
||||
|
||||
struct GLOBAL_MEMORY {
|
||||
@@ -386,4 +223,8 @@ inline void* OSPhysicalToCached(u32 offset) {
|
||||
return (void*)(offset + 0x80000000);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,5 +2,41 @@
|
||||
#define OSALARM_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/os/OSTime.h"
|
||||
#include "dolphin/os/OSError.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct OSAlarmLink {
|
||||
/* 0x0 */ struct OSAlarm* prev;
|
||||
/* 0x4 */ struct OSAlarm* next;
|
||||
} OSAlarmLink;
|
||||
|
||||
typedef void (*OSAlarmHandler)(struct OSAlarm* alarm, struct OSContext* context);
|
||||
|
||||
typedef struct OSAlarm {
|
||||
/* 0x00 */ OSAlarmHandler handler;
|
||||
/* 0x04 */ u32 tag;
|
||||
/* 0x08 */ OSTime fire_time;
|
||||
/* 0x10 */ OSAlarmLink link;
|
||||
/* 0x18 */ OSTime period_time;
|
||||
/* 0x20 */ OSTime start_time;
|
||||
} OSAlarm; // Size: 0x28
|
||||
|
||||
void OSInitAlarm(void);
|
||||
void OSCreateAlarm(OSAlarm* alarm);
|
||||
static void InsertAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler* handler);
|
||||
void OSSetAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler* handler);
|
||||
void OSSetPeriodicAlarm(OSAlarm* alarm, s64 start, s64 period, OSAlarmHandler* handler);
|
||||
void OSCancelAlarm(OSAlarm* alarm);
|
||||
static void DecrementerExceptionCallback(OSException* exception, struct OSContext* context);
|
||||
static void DecrementerExceptionHandler(OSException* exception, struct OSContext* context);
|
||||
static s32 OnReset(s32 param_0);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSALARM_H */
|
||||
|
||||
@@ -3,4 +3,20 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef u32 OSHeapHandle;
|
||||
|
||||
static void* DLInsert(void* param_0, void* param_1);
|
||||
void OSFreeToHeap(OSHeapHandle heap, void* ptr);
|
||||
void OSSetCurrentHeap(OSHeapHandle heap);
|
||||
void* OSInitAlloc(void* lo, void* hi, s32 maxHeaps);
|
||||
OSHeapHandle OSCreateHeap(void* start, void* end);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSALLOC_H */
|
||||
|
||||
@@ -3,4 +3,18 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void* OSGetArenaHi(void);
|
||||
void* OSGetArenaLo(void);
|
||||
void OSSetArenaHi(void* hi);
|
||||
void OSSetArenaLo(void* lo);
|
||||
void* OSAllocFromArenaLo(u32 size, s32 alignment);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSARENA_H */
|
||||
|
||||
@@ -3,4 +3,15 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void __OSInitAudioSystem(void);
|
||||
void __OSStopAudioSystem(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSAUDIOSYSTEM_H */
|
||||
|
||||
@@ -3,10 +3,32 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
void DCInvalidateRange(void*, u32);
|
||||
void DCStoreRange(void*, u32);
|
||||
void DCStoreRangeNoSync(void*, u32);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void DCEnable(void);
|
||||
void DCInvalidateRange(void* start, u32 nBytes);
|
||||
void DCFlushRange(void* start, u32 nBytes);
|
||||
void DCStoreRange(void* start, u32 nBytes);
|
||||
void DCFlushRangeNoSync(void* start, u32 nBytes);
|
||||
void DCStoreRangeNoSync(void* start, u32 nBytes);
|
||||
void DCZeroRange(void* start, u32 nBytes);
|
||||
void ICInvalidateRange(void* start, u32 nBytes);
|
||||
void ICFlashInvalidate(void);
|
||||
static void ICEnable(void);
|
||||
void __LCEnable(void);
|
||||
void LCEnable(void);
|
||||
void LCDisable(void);
|
||||
static void LCStoreBlocks(void* destAddr, void* srcAddr, u32 blockNum);
|
||||
u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes);
|
||||
void LCQueueWait(u32 len);
|
||||
static void L2GlobalInvalidate(void);
|
||||
static void DMAErrorHandler(s32 error, struct OSContext* context);
|
||||
void __OSCacheInit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSCACHE_H */
|
||||
|
||||
@@ -3,4 +3,45 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void (*OSSwitchThreadCallback)(struct OSThread* from, struct OSThread* to);
|
||||
|
||||
typedef struct OSContext {
|
||||
/* 0x000 */ u32 gpr[32];
|
||||
/* 0x080 */ u32 cr;
|
||||
/* 0x084 */ u32 lr;
|
||||
/* 0x088 */ u32 ctr;
|
||||
/* 0x08C */ u32 xer;
|
||||
/* 0x090 */ f64 fpr[32];
|
||||
/* 0x190 */ u32 padding_1;
|
||||
/* 0x194 */ u32 fpscr;
|
||||
/* 0x198 */ u32 srr0;
|
||||
/* 0x19C */ u32 srr1;
|
||||
/* 0x1A0 */ u16 mode;
|
||||
/* 0x1A2 */ u16 state;
|
||||
/* 0x1A4 */ u32 gqr[8];
|
||||
/* 0x1C4 */ f64 ps[32];
|
||||
} OSContext;
|
||||
|
||||
void __OSLoadFPUContext(void);
|
||||
void __OSSaveFPUContext(OSContext* context);
|
||||
void OSSaveFPUContext(OSContext* context);
|
||||
void OSSetCurrentContext(OSContext* context);
|
||||
OSContext* OSGetCurrentContext(void);
|
||||
void OSSaveContext(OSContext* context);
|
||||
void OSLoadContext(OSContext* context);
|
||||
void OSClearContext(OSContext* context);
|
||||
void OSInitContext(OSContext* context, u32 pc, u32 lr);
|
||||
void OSDumpContext(OSContext* context);
|
||||
static void OSSwitchFPUContext(OSContext* context);
|
||||
void __OSContextInit(void);
|
||||
void OSFillFPUContext(OSContext* context);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSCONTEXT_H */
|
||||
|
||||
@@ -3,31 +3,60 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct OSContext;
|
||||
|
||||
extern u32 __OSFpscrEnableBits;
|
||||
|
||||
typedef u16 OSError;
|
||||
typedef void (*OSErrorHandler)(OSError, OSContext*, u32, u32);
|
||||
typedef void (*OSErrorHandler)(OSError error, OSContext* context, u32, u32);
|
||||
|
||||
#define OS_ERROR_SYSTEM_RESET 0x0
|
||||
#define OS_ERROR_MACHINE_CHECK 0x1
|
||||
#define OS_ERROR_DSI 0x2
|
||||
#define OS_ERROR_ISI 0x3
|
||||
#define OS_ERROR_INTERRUPT 0x4
|
||||
#define OS_ERROR_ALIGNMENT 0x5
|
||||
#define OS_ERROR_PROGRAM 0x6
|
||||
#define OS_ERROR_FLOATING_POINT 0x7
|
||||
#define OS_ERROR_DECREMENTER 0x8
|
||||
#define OS_ERROR_SYSTEM_CALL 0x9
|
||||
#define OS_ERROR_TRACE 0xa
|
||||
#define OS_ERROR_PERFORMANCE_MONITOR 0xb
|
||||
#define OS_ERROR_BREAKPOINT 0xc
|
||||
#define OS_ERROR_RESERVED 0xd
|
||||
#define OS_ERROR_THERMAL_INTERRUPT 0xe
|
||||
#define OS_ERROR_MEMORY_PROTECTION 0xf
|
||||
#define OS_ERROR_FLOATING_POINT_EXCEPTION 0x10
|
||||
#define OS_ERROR_SYSTEM_RESET 0
|
||||
#define OS_ERROR_MACHINE_CHECK 1
|
||||
#define OS_ERROR_DSI 2
|
||||
#define OS_ERROR_ISI 3
|
||||
#define OS_ERROR_INTERRUPT 4
|
||||
#define OS_ERROR_ALIGNMENT 5
|
||||
#define OS_ERROR_PROGRAM 6
|
||||
#define OS_ERROR_FLOATING_POINT 7
|
||||
#define OS_ERROR_DECREMENTER 8
|
||||
#define OS_ERROR_SYSTEM_CALL 9
|
||||
#define OS_ERROR_TRACE 10
|
||||
#define OS_ERROR_PERFORMANCE_MONITOR 11
|
||||
#define OS_ERROR_BREAKPOINT 12
|
||||
#define OS_ERROR_RESERVED 13
|
||||
#define OS_ERROR_THERMAL_INTERRUPT 14
|
||||
#define OS_ERROR_MEMORY_PROTECTION 15
|
||||
#define OS_ERROR_FLOATING_POINT_EXCEPTION 16
|
||||
|
||||
extern "C" void OSSetErrorHandler(OSError, OSErrorHandler);
|
||||
typedef enum OSException {
|
||||
EXCEPTION_SYSTEM_RESET,
|
||||
EXCEPTION_MACHINE_CHECK,
|
||||
EXCEPTION_DSI,
|
||||
EXCEPTION_ISI,
|
||||
EXCEPTION_EXTERNAL_INTERRUPT,
|
||||
EXCEPTION_ALIGNMENT,
|
||||
EXCEPTION_PROGRAM,
|
||||
EXCEPTION_FLOATING_POINT,
|
||||
EXCEPTION_DECREMENTER,
|
||||
EXCEPTION_SYSTEM_CALL,
|
||||
EXCEPTION_TRACE ,
|
||||
EXCEPTION_PERFORMANCE_MONITOR,
|
||||
EXCEPTION_BREAKPOINT,
|
||||
EXCEPTION_RESERVED,
|
||||
EXCEPTION_THERMAL_INTERRUPT,
|
||||
EXCEPTION_MEMORY_PROTECTION,
|
||||
EXCEPTION_FLOATING_POINT_EXCEPTION,
|
||||
} OSException;
|
||||
|
||||
OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler);
|
||||
void __OSUnhandledException(OSException exception, OSContext* context, u32 dsisr, u32 dar);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSERROR_H */
|
||||
|
||||
@@ -3,4 +3,21 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static s32 PackArgs(void* param_0, u32 param_1, void* param_2);
|
||||
static void Run(void);
|
||||
static void ReadDisc(void* param_0, s32 param_1, s32 param_2);
|
||||
static void Callback(void);
|
||||
void __OSGetExecParams(void* param_0);
|
||||
static void GetApploaderPosition(void);
|
||||
void __OSBootDolSimple(u32 param_0, u32 param_1, void* param_2, void* param_3, s32 param_4, u32 param_5, void* param_6);
|
||||
void __OSBootDol(s32 param_0, u32 param_1, s32 param_2);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSEXEC_H */
|
||||
|
||||
@@ -3,4 +3,16 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static u32 GetFontCode(s16 param_0, u32 param_1);
|
||||
u16 OSGetFontEncode(void);
|
||||
static char* ParseStringS(s16 param_0, char* param_1, void* param_2, u32* param_3, u32 param_4, void* param_5);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSFONT_H */
|
||||
|
||||
@@ -3,4 +3,29 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef s16 OSInterrupt;
|
||||
typedef u32 OSInterruptMask;
|
||||
typedef void (*OSInterruptHandler)(OSInterrupt interrupt, struct OSContext* context);
|
||||
|
||||
BOOL OSDisableInterrupts(void);
|
||||
void __RAS_OSDisableInterrupts_end(void);
|
||||
BOOL OSEnableInterrupts(void);
|
||||
BOOL OSRestoreInterrupts(BOOL enable);
|
||||
OSInterruptHandler __OSSetInterruptHandler(OSInterrupt interrupt, OSInterruptHandler handler);
|
||||
OSInterruptHandler __OSGetInterruptHandler(s16 index);
|
||||
void __OSInterruptInit(void);
|
||||
static OSInterruptMask SetInterruptMask(OSInterruptMask param_0, OSInterruptMask param_1);
|
||||
OSInterruptMask __OSMaskInterrupts(OSInterruptMask mask);
|
||||
OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask);
|
||||
void __OSDispatchInterrupt(OSInterrupt interrupt, struct OSContext* context);
|
||||
static void ExternalInterruptHandler(OSInterrupt interrupt, struct OSContext* context);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSINTERRUPT_H */
|
||||
|
||||
@@ -3,12 +3,16 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct OSSectionInfo {
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct OSSectionInfo {
|
||||
u32 mOffset;
|
||||
u32 mSize;
|
||||
};
|
||||
} OSSectionInfo;
|
||||
|
||||
struct OSModuleInfo {
|
||||
typedef struct OSModuleInfo {
|
||||
u32 mId;
|
||||
u32 mNext;
|
||||
u32 mPrev;
|
||||
@@ -33,10 +37,21 @@ struct OSModuleInfo {
|
||||
u32 mModuleAlignment;
|
||||
u32 mBssAlignment;
|
||||
u32 fixSize;
|
||||
};
|
||||
} OSModuleInfo;
|
||||
|
||||
extern "C" BOOL OSLink(OSModuleInfo*);
|
||||
extern "C" BOOL OSLinkFixed(OSModuleInfo*, u32);
|
||||
extern "C" BOOL OSUnlink(OSModuleInfo*);
|
||||
BOOL OSLink(OSModuleInfo* module);
|
||||
BOOL OSLinkFixed(OSModuleInfo* module, u32 param_1);
|
||||
BOOL OSUnlink(OSModuleInfo* module);
|
||||
static void OSNotifyLink(void);
|
||||
static void OSNotifyUnlink(void);
|
||||
void OSSetStringTable(void* string_table);
|
||||
static BOOL Relocate(OSModuleInfo* param_0, OSModuleInfo* param_1);
|
||||
static BOOL Link(OSModuleInfo* module, u32 param_1);
|
||||
static BOOL Undo(OSModuleInfo* param_0, OSModuleInfo* param_1);
|
||||
void __OSModuleInit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSLINK_H */
|
||||
|
||||
@@ -2,5 +2,22 @@
|
||||
#define OSMEMORY_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/os/OSInterrupt.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static s32 OnReset(s32 param_0);
|
||||
static void MEMIntrruptHandler(OSInterrupt interrupt, struct OSContext* context);
|
||||
void OSProtectRange(u32 channel, void* address, u32 nBytes, u32 control);
|
||||
static void Config24MB(void);
|
||||
static void Config48MB(void);
|
||||
static void RealMode(void);
|
||||
void __OSInitMemoryProtection(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSMEMORY_H */
|
||||
|
||||
@@ -2,5 +2,30 @@
|
||||
#define OSMESSAGE_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/os/OSThread.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void* OSMessage;
|
||||
|
||||
typedef struct OSMessageQueue {
|
||||
/* 0x00 */ OSThreadQueue sending_queue;
|
||||
/* 0x08 */ OSThreadQueue receiving_queue;
|
||||
/* 0x10 */ OSMessage* message_array;
|
||||
/* 0x14 */ s32 num_messages;
|
||||
/* 0x18 */ s32 first_index;
|
||||
/* 0x1C */ s32 num_used;
|
||||
} OSMessageQueue;
|
||||
|
||||
void OSInitMessageQueue(OSMessageQueue* queue, OSMessage* msgArray, s32 msgCount);
|
||||
BOOL OSSendMessage(OSMessageQueue* queue, OSMessage msg, s32 flags);
|
||||
BOOL OSReceiveMessage(OSMessageQueue* queue, OSMessage* msg, s32 flags);
|
||||
BOOL OSJamMessage(OSMessageQueue* queue, OSMessage msg, s32 flags);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSMESSAGE_H */
|
||||
|
||||
@@ -2,5 +2,26 @@
|
||||
#define OSMUTEX_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/os/OSThread.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void OSInitMutex(struct OSMutex* mutex);
|
||||
void OSLockMutex(struct OSMutex* mutex);
|
||||
void OSUnlockMutex(struct OSMutex* mutex);
|
||||
void __OSUnlockAllMutex(struct OSThread* thread);
|
||||
s32 OSTryLockMutex(struct OSMutex* mutex);
|
||||
void OSInitCond(struct OSCond* cond);
|
||||
void OSWaitCond(struct OSCond* cond, struct OSMutex* mutex);
|
||||
void OSSignalCond(struct OSCond* cond);
|
||||
s32 __OSCheckMutex(struct OSThread* thread);
|
||||
BOOL __OSCheckDeadLock(struct OSThread* thread);
|
||||
BOOL __OSCheckMutexes(struct OSThread* thread);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSMUTEX_H */
|
||||
|
||||
@@ -3,4 +3,16 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void __OSReboot(u32 param_0, u32 param_1);
|
||||
void OSSetSaveRegion(void* start, void* end);
|
||||
void OSGetSaveRegion(void* start, void* end);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSREBOOT_H */
|
||||
|
||||
@@ -3,4 +3,29 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef s32 (*OSResetFunction)(s32);
|
||||
|
||||
typedef struct OSResetFunctionInfo {
|
||||
/* 0x0 */ OSResetFunction func;
|
||||
/* 0x4 */ u32 priority;
|
||||
/* 0x8 */ struct OSResetFunctionInfo* next;
|
||||
/* 0xC */ struct OSResetFunctionInfo* prev;
|
||||
} OSResetFunctionInfo;
|
||||
|
||||
void OSRegisterResetFunction(OSResetFunctionInfo* info);
|
||||
BOOL __OSCallResetFunctions(s32 param_0);
|
||||
static void Reset(s32 param_0);
|
||||
static void KillThreads(void);
|
||||
void __OSDoHotReset(s32 param_0);
|
||||
void OSResetSystem(s32 reset, u32 resetCode, BOOL forceMenu);
|
||||
u32 OSGetResetCode(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSRESET_H */
|
||||
|
||||
@@ -3,4 +3,16 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void __OSResetSWInterruptHandler(void);
|
||||
static BOOL OSGetResetButtonState(void);
|
||||
BOOL OSGetResetSwitchState(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSRESETSW_H */
|
||||
|
||||
@@ -3,4 +3,35 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum OSSoundMode {
|
||||
/* 0x0 */ SOUND_MODE_MONO,
|
||||
/* 0x1 */ SOUND_MODE_STEREO,
|
||||
} OSSoundMode;
|
||||
|
||||
static void WriteSramCallback(void);
|
||||
static u8 WriteSram(u8* param_0, u32 param_1, u32 param_2);
|
||||
void __OSInitSram(void);
|
||||
u16* __OSLockSram(void);
|
||||
u16* __OSLockSramEx(void);
|
||||
static u32 UnlockSram(s32 param_0, u32 param_1);
|
||||
u32 __OSUnlockSram(s32 param_0);
|
||||
u32 __OSUnlockSramEx(s32 param_0);
|
||||
u32 __OSSyncSram(void);
|
||||
u32 OSGetSoundMode(void);
|
||||
void OSSetSoundMode(OSSoundMode mode);
|
||||
u32 OSGetProgressiveMode(void);
|
||||
void OSSetProgressiveMode(u32 mode);
|
||||
u16 OSGetWirelessID(s32 index);
|
||||
void OSSetWirelessID(s32 index, u16 id);
|
||||
static u16 OSGetGbsMode(void);
|
||||
static void OSSetGbsMode(u16 mode);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSRTC_H */
|
||||
|
||||
@@ -3,4 +3,15 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static void SystemCallVector(void);
|
||||
void __OSInitSystemCall(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSSYNC_H */
|
||||
|
||||
@@ -2,5 +2,107 @@
|
||||
#define OSTHREAD_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/os/OSMutex.h"
|
||||
#include "dolphin/os/OSContext.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef u16 OSThreadState;
|
||||
#define OS_THREAD_STATE_UNINITIALIZED 0
|
||||
#define OS_THREAD_STATE_READY 1
|
||||
#define OS_THREAD_STATE_RUNNING 2
|
||||
#define OS_THREAD_STATE_WAITING 4
|
||||
#define OS_THREAD_STATE_DEAD 8
|
||||
|
||||
typedef struct OSMutexLink {
|
||||
struct OSMutex* prev;
|
||||
struct OSMutex* next;
|
||||
} OSMutexLink;
|
||||
|
||||
typedef struct OSMutexQueue {
|
||||
struct OSMutex* prev;
|
||||
struct OSMutex* next;
|
||||
} OSMutexQueue;
|
||||
|
||||
typedef struct OSMutex {
|
||||
/* 0x00 */ //OSThreadQueue queue;
|
||||
/* 0x08 */ //OSThread* thread;
|
||||
/* 0x0C */ //s32 count;
|
||||
/* 0x10 */ //OSMutexLink link;
|
||||
u8 unk[24];
|
||||
} OSMutex; // Size: 0x18
|
||||
|
||||
typedef struct OSThreadLink {
|
||||
struct OSThread* prev;
|
||||
struct OSThread* next;
|
||||
} OSThreadLink;
|
||||
|
||||
typedef struct OSThreadQueue {
|
||||
/* 0x0 */ struct OSThread* head;
|
||||
/* 0x4 */ struct OSThread* tail;
|
||||
} OSThreadQueue;
|
||||
|
||||
typedef struct OSCond {
|
||||
struct OSThreadQueue queue;
|
||||
} OSCond;
|
||||
|
||||
typedef void (*OSSwitchThreadCallback)(struct OSThread* from, struct OSThread* to);
|
||||
|
||||
typedef struct OSThread {
|
||||
struct OSContext context;
|
||||
OSThreadState state;
|
||||
u16 attributes;
|
||||
s32 suspend_count;
|
||||
u32 effective_priority;
|
||||
u32 base_priority;
|
||||
void* exit_value;
|
||||
struct OSThreadQueue* queue;
|
||||
struct OSThreadLink link;
|
||||
struct OSThreadQueue join_queue;
|
||||
struct OSMutex* mutex;
|
||||
OSMutexQueue owned_mutexes;
|
||||
struct OSThreadLink active_threads_link;
|
||||
u8* stack_base;
|
||||
u8* stack_end;
|
||||
u8* error_code;
|
||||
void* data[2];
|
||||
} OSThread;
|
||||
|
||||
static void DefaultSwitchThreadCallback(OSThread* from, OSThread* to);
|
||||
OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback func);
|
||||
void __OSThreadInit(void);
|
||||
void OSInitThreadQueue(OSThreadQueue* queue);
|
||||
OSThread* OSGetCurrentThread(void);
|
||||
BOOL OSIsThreadTerminated(OSThread* thread);
|
||||
s32 OSDisableScheduler(void);
|
||||
s32 OSEnableScheduler(void);
|
||||
static void UnsetRun(OSThread* thread);
|
||||
s32 __OSGetEffectivePriority(OSThread* thread);
|
||||
static void SetEffectivePriority(OSThread* thread, s32 priority);
|
||||
void __OSPromoteThread(OSThread* thread, s32 priority);
|
||||
static void SelectThread(OSThread* thread);
|
||||
void __OSReschedule(void);
|
||||
void OSYieldThread(void);
|
||||
BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stackBase,
|
||||
u32 stackSize, s32 priority, u16 attribute);
|
||||
void OSExitThread(void* exitValue);
|
||||
void OSCancelThread(OSThread* thread);
|
||||
void OSDetachThread(OSThread* thread);
|
||||
s32 OSResumeThread(OSThread* thread);
|
||||
s32 OSSuspendThread(OSThread* thread);
|
||||
void OSSleepThread(OSThreadQueue* queue);
|
||||
void OSWakeupThread(OSThreadQueue* queue);
|
||||
s32 OSSetThreadPriority(OSThread* thread, s32 priority);
|
||||
s32 OSGetThreadPriority(OSThread* thread);
|
||||
static s32 CheckThreadQueue(OSThread* thread);
|
||||
s32 OSCheckActiveThreads(void);
|
||||
static void OSClearStack(u32 value);
|
||||
extern u8 data_804516D0[8];
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSTHREAD_H */
|
||||
|
||||
@@ -3,4 +3,35 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef s64 OSTime;
|
||||
typedef u32 OSTick;
|
||||
|
||||
typedef struct OSCalendarTime {
|
||||
/* 0x00 */ s32 seconds;
|
||||
/* 0x04 */ s32 minutes;
|
||||
/* 0x08 */ s32 hours;
|
||||
/* 0x0C */ s32 day_of_month;
|
||||
/* 0x10 */ s32 month;
|
||||
/* 0x14 */ s32 year;
|
||||
/* 0x18 */ s32 week_day;
|
||||
/* 0x1C */ s32 year_day;
|
||||
/* 0x20 */ s32 milliseconds;
|
||||
/* 0x24 */ s32 microseconds;
|
||||
} OSCalendarTime;
|
||||
|
||||
OSTime OSGetTime(void);
|
||||
OSTick OSGetTick(void);
|
||||
OSTime __OSGetSystemTime(void);
|
||||
OSTime __OSTimeToSystemTime(OSTime time);
|
||||
void GetDates(OSTime ticks, OSCalendarTime* ct);
|
||||
void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* ct);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* OSTIME_H */
|
||||
|
||||
Reference in New Issue
Block a user