mirror of
https://github.com/zeldaret/oot.git
synced 2024-12-29 00:06:33 +00:00
[headers 7] Add sys_matrix.h (#2150)
* add sys_matrix.h, based on MM's * move matrix debug macros to sys_matrix.h * bss
This commit is contained in:
parent
8a3ba35070
commit
e7b0daa2ec
6 changed files with 88 additions and 50 deletions
|
@ -1272,42 +1272,7 @@ void* SysCfb_GetFbEnd(void);
|
|||
|
||||
void Math3D_DrawSphere(PlayState* play, Sphere16* sph);
|
||||
void Math3D_DrawCylinder(PlayState* play, Cylinder16* cyl);
|
||||
void Matrix_Init(GameState* gameState);
|
||||
void Matrix_Push(void);
|
||||
void Matrix_Pop(void);
|
||||
void Matrix_Get(MtxF* dest);
|
||||
void Matrix_Put(MtxF* src);
|
||||
void Matrix_Mult(MtxF* mf, u8 mode);
|
||||
void Matrix_Translate(f32 x, f32 y, f32 z, u8 mode);
|
||||
void Matrix_Scale(f32 x, f32 y, f32 z, u8 mode);
|
||||
void Matrix_RotateX(f32 x, u8 mode);
|
||||
void Matrix_RotateY(f32 y, u8 mode);
|
||||
void Matrix_RotateZ(f32 z, u8 mode);
|
||||
void Matrix_RotateZYX(s16 x, s16 y, s16 z, u8 mode);
|
||||
void Matrix_TranslateRotateZYX(Vec3f* translation, Vec3s* rotation);
|
||||
void Matrix_SetTranslateRotateYXZ(f32 translateX, f32 translateY, f32 translateZ, Vec3s* rot);
|
||||
Mtx* Matrix_MtxFToMtx(MtxF* src, Mtx* dest);
|
||||
#if OOT_DEBUG
|
||||
Mtx* Matrix_ToMtx(Mtx* dest, const char* file, int line);
|
||||
Mtx* Matrix_NewMtx(GraphicsContext* gfxCtx, const char* file, int line);
|
||||
#else
|
||||
Mtx* Matrix_ToMtx(Mtx* dest);
|
||||
Mtx* Matrix_NewMtx(GraphicsContext* gfxCtx);
|
||||
#endif
|
||||
void Matrix_MultVec3f(Vec3f* src, Vec3f* dest);
|
||||
void Matrix_MtxFCopy(MtxF* dest, MtxF* src);
|
||||
void Matrix_MtxToMtxF(Mtx* src, MtxF* dest);
|
||||
void Matrix_MultVec3fExt(Vec3f* src, Vec3f* dest, MtxF* mf);
|
||||
void Matrix_Transpose(MtxF* mf);
|
||||
void Matrix_ReplaceRotation(MtxF* mf);
|
||||
void Matrix_MtxFToYXZRotS(MtxF* mf, Vec3s* rotDest, s32 flag);
|
||||
void Matrix_MtxFToZYXRotS(MtxF* mf, Vec3s* rotDest, s32 flag);
|
||||
void Matrix_RotateAxis(f32 angle, Vec3f* axis, u8 mode);
|
||||
#if OOT_DEBUG
|
||||
MtxF* Matrix_CheckFloats(MtxF* mf, const char* file, int line);
|
||||
#endif
|
||||
void Matrix_SetTranslateScaleMtx2(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32 translateX, f32 translateY,
|
||||
f32 translateZ);
|
||||
|
||||
u64* SysUcode_GetUCodeBoot(void);
|
||||
size_t SysUcode_GetUCodeBootSize(void);
|
||||
u64* SysUcode_GetUCode(void);
|
||||
|
|
|
@ -189,9 +189,6 @@ extern struct GraphicsContext* __gfxCtx;
|
|||
(void)0
|
||||
|
||||
#define GRAPH_ALLOC(gfxCtx, size) Graph_Alloc(gfxCtx, size)
|
||||
#define MATRIX_TO_MTX(gfxCtx, file, line) Matrix_ToMtx(gfxCtx, file, line)
|
||||
#define MATRIX_NEW(gfxCtx, file, line) Matrix_NewMtx(gfxCtx, file, line)
|
||||
#define MATRIX_CHECK_FLOATS(mtx, file, line) Matrix_CheckFloats(mtx, file, line)
|
||||
#define DMA_REQUEST_SYNC(ram, vrom, size, file, line) DmaMgr_RequestSyncDebug(ram, vrom, size, file, line)
|
||||
#define DMA_REQUEST_ASYNC(req, ram, vrom, size, unk5, queue, msg, file, line) DmaMgr_RequestAsyncDebug(req, ram, vrom, size, unk5, queue, msg, file, line)
|
||||
#define GAME_STATE_ALLOC(gameState, size, file, line) GameState_Alloc(gameState, size, file, line)
|
||||
|
@ -221,9 +218,6 @@ extern struct GraphicsContext* __gfxCtx;
|
|||
(void)0
|
||||
|
||||
#define GRAPH_ALLOC(gfxCtx, size) ((void*)((gfxCtx)->polyOpa.d = (Gfx*)((u8*)(gfxCtx)->polyOpa.d - ALIGN16(size))))
|
||||
#define MATRIX_TO_MTX(gfxCtx, file, line) Matrix_ToMtx(gfxCtx)
|
||||
#define MATRIX_NEW(gfxCtx, file, line) Matrix_NewMtx(gfxCtx)
|
||||
#define MATRIX_CHECK_FLOATS(mtx, file, line) (mtx)
|
||||
#define DMA_REQUEST_SYNC(ram, vrom, size, file, line) DmaMgr_RequestSync(ram, vrom, size)
|
||||
#define DMA_REQUEST_ASYNC(req, ram, vrom, size, unk5, queue, msg, file, line) DmaMgr_RequestAsync(req, ram, vrom, size, unk5, queue, msg)
|
||||
#define GAME_STATE_ALLOC(gameState, size, file, line) THA_AllocTailAlign16(&(gameState)->tha, size)
|
||||
|
|
85
include/sys_matrix.h
Normal file
85
include/sys_matrix.h
Normal file
|
@ -0,0 +1,85 @@
|
|||
#ifndef SYS_MATRIX_H
|
||||
#define SYS_MATRIX_H
|
||||
|
||||
#include "z64math.h"
|
||||
|
||||
struct GraphicsContext;
|
||||
struct GameState;
|
||||
|
||||
typedef enum MatrixMode {
|
||||
/* 0 */ MTXMODE_NEW, // generates a new matrix
|
||||
/* 1 */ MTXMODE_APPLY // applies transformation to the current matrix
|
||||
} MatrixMode;
|
||||
|
||||
extern Mtx gMtxClear;
|
||||
extern MtxF gMtxFClear;
|
||||
|
||||
/* Stack operations */
|
||||
|
||||
void Matrix_Init(struct GameState* gameState);
|
||||
void Matrix_Push(void);
|
||||
void Matrix_Pop(void);
|
||||
void Matrix_Get(MtxF* dest);
|
||||
void Matrix_Put(MtxF* src);
|
||||
|
||||
/* Basic operations */
|
||||
|
||||
void Matrix_Mult(MtxF* mf, u8 mode);
|
||||
void Matrix_Translate(f32 x, f32 y, f32 z, u8 mode);
|
||||
void Matrix_Scale(f32 x, f32 y, f32 z, u8 mode);
|
||||
void Matrix_RotateX(f32 x, u8 mode);
|
||||
void Matrix_RotateY(f32 y, u8 mode);
|
||||
void Matrix_RotateZ(f32 z, u8 mode);
|
||||
|
||||
/* Compound operations */
|
||||
|
||||
void Matrix_RotateZYX(s16 x, s16 y, s16 z, u8 mode);
|
||||
void Matrix_TranslateRotateZYX(Vec3f* translation, Vec3s* rotation);
|
||||
void Matrix_SetTranslateRotateYXZ(f32 translateX, f32 translateY, f32 translateZ, Vec3s* rot);
|
||||
void Matrix_SetTranslateScaleMtx2(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32 translateX, f32 translateY,
|
||||
f32 translateZ);
|
||||
|
||||
/* Conversion and allocation operations */
|
||||
|
||||
Mtx* Matrix_MtxFToMtx(MtxF* src, Mtx* dest);
|
||||
|
||||
#if OOT_DEBUG
|
||||
|
||||
Mtx* Matrix_ToMtx(Mtx* dest, const char* file, int line);
|
||||
Mtx* Matrix_NewMtx(struct GraphicsContext* gfxCtx, const char* file, int line);
|
||||
MtxF* Matrix_CheckFloats(MtxF* mf, const char* file, int line);
|
||||
|
||||
#define MATRIX_TO_MTX(gfxCtx, file, line) Matrix_ToMtx(gfxCtx, file, line)
|
||||
#define MATRIX_NEW(gfxCtx, file, line) Matrix_NewMtx(gfxCtx, file, line)
|
||||
#define MATRIX_CHECK_FLOATS(mtx, file, line) Matrix_CheckFloats(mtx, file, line)
|
||||
|
||||
#else
|
||||
|
||||
Mtx* Matrix_ToMtx(Mtx* dest);
|
||||
Mtx* Matrix_NewMtx(struct GraphicsContext* gfxCtx);
|
||||
|
||||
#define MATRIX_TO_MTX(gfxCtx, file, line) Matrix_ToMtx(gfxCtx)
|
||||
#define MATRIX_NEW(gfxCtx, file, line) Matrix_NewMtx(gfxCtx)
|
||||
#define MATRIX_CHECK_FLOATS(mtx, file, line) (mtx)
|
||||
|
||||
#endif
|
||||
|
||||
/* Vector operations */
|
||||
|
||||
void Matrix_MultVec3f(Vec3f* src, Vec3f* dest);
|
||||
void Matrix_MultVec3fExt(Vec3f* src, Vec3f* dest, MtxF* mf);
|
||||
|
||||
/* Copy and another conversion */
|
||||
|
||||
void Matrix_MtxFCopy(MtxF* dest, MtxF* src);
|
||||
void Matrix_MtxToMtxF(Mtx* src, MtxF* dest);
|
||||
|
||||
/* Miscellaneous */
|
||||
|
||||
void Matrix_Transpose(MtxF* mf);
|
||||
void Matrix_ReplaceRotation(MtxF* mf);
|
||||
void Matrix_MtxFToYXZRotS(MtxF* mf, Vec3s* rotDest, s32 flag);
|
||||
void Matrix_MtxFToZYXRotS(MtxF* mf, Vec3s* rotDest, s32 flag);
|
||||
void Matrix_RotateAxis(f32 angle, Vec3f* axis, u8 mode);
|
||||
|
||||
#endif
|
|
@ -104,8 +104,6 @@ extern u8 gBossMarkState;
|
|||
|
||||
extern s32 gScreenWidth;
|
||||
extern s32 gScreenHeight;
|
||||
extern Mtx gMtxClear;
|
||||
extern MtxF gMtxFClear;
|
||||
#if OOT_DEBUG
|
||||
extern u32 gIsCtrlr2Valid;
|
||||
#endif
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
#include "sys_math.h"
|
||||
#include "sys_math3d.h"
|
||||
#include "fp_math.h"
|
||||
#include "sys_matrix.h"
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
|
@ -390,11 +391,6 @@ typedef struct DebugDispObject {
|
|||
/* 0x28 */ struct DebugDispObject* next;
|
||||
} DebugDispObject; // size = 0x2C
|
||||
|
||||
typedef enum MatrixMode {
|
||||
/* 0 */ MTXMODE_NEW, // generates a new matrix
|
||||
/* 1 */ MTXMODE_APPLY // applies transformation to the current matrix
|
||||
} MatrixMode;
|
||||
|
||||
typedef struct StackEntry {
|
||||
/* 0x00 */ struct StackEntry* next;
|
||||
/* 0x04 */ struct StackEntry* prev;
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include "cic6105.h"
|
||||
#endif
|
||||
|
||||
#pragma increment_block_number "gc-eu:154 gc-eu-mq:154 gc-jp:156 gc-jp-ce:156 gc-jp-mq:156 gc-us:156 gc-us-mq:156"
|
||||
#pragma increment_block_number "gc-eu:153 gc-eu-mq:153 gc-jp:155 gc-jp-ce:155 gc-jp-mq:155 gc-us:155 gc-us-mq:155"
|
||||
|
||||
#define FLAGS ACTOR_FLAG_4
|
||||
|
||||
|
|
Loading…
Reference in a new issue