1 #ifndef GSP_H 2 #define GSP_H 3 4 #include <stdint.h> 5 #include <boolean.h> 6 #include "GBI.h" 7 #include "gDP.h" 8 9 #include "../../Graphics/RSP/RSP_state.h" 10 #include "../../Graphics/RSP/gSP_funcs_C.h" 11 12 #define CHANGED_VIEWPORT 0x01 13 #define CHANGED_MATRIX 0x02 14 #define CHANGED_COLORBUFFER 0x04 15 #define CHANGED_GEOMETRYMODE 0x08 16 #define CHANGED_TEXTURE 0x10 17 #define CHANGED_FOGPOSITION 0x20 18 #define CHANGED_LIGHT 0x40 19 #define CHANGED_CPU_FB_WRITE 0x80 20 21 #define CLIP_X 0x03 22 #define CLIP_NEGX 0x01 23 #define CLIP_POSX 0x02 24 25 #define CLIP_Y 0x0C 26 #define CLIP_NEGY 0x04 27 #define CLIP_POSY 0x08 28 29 #define CLIP_Z 0x10 30 31 #define CLIP_ALL 0x1F // CLIP_NEGX|CLIP_POSX|CLIP_NEGY|CLIP_POSY|CLIP_Z 32 33 void gln64gSPLoadUcodeEx( uint32_t uc_start, uint32_t uc_dstart, uint16_t uc_dsize ); 34 void gln64gSPNoOp(); 35 void gln64gSPMatrix( uint32_t matrix, uint8_t param ); 36 void gln64gSPDMAMatrix( uint32_t matrix, uint8_t index, uint8_t multiply ); 37 void gln64gSPLight( uint32_t l, int32_t n ); 38 void gln64gSPLightCBFD( uint32_t l, int32_t n ); 39 void gln64gSPVertex( uint32_t v, uint32_t n, uint32_t v0 ); 40 void gln64gSPCIVertex( uint32_t v, uint32_t n, uint32_t v0 ); 41 void gln64gSPDMAVertex( uint32_t v, uint32_t n, uint32_t v0 ); 42 void gln64gSPCBFDVertex( uint32_t v, uint32_t n, uint32_t v0 ); 43 void gln64gSPDisplayList( uint32_t dl ); 44 void gln64gSPDMADisplayList( uint32_t dl, uint32_t n ); 45 void gln64gSPBranchList( uint32_t dl ); 46 void gln64gSPBranchLessZ( uint32_t branchdl, uint32_t vtx, float zval ); 47 void gln64gSPDlistCount(uint32_t count, uint32_t v); 48 void gln64gSPSprite2DBase( uint32_t base ); 49 void gln64gSPDMATriangles( uint32_t tris, uint32_t n ); 50 void gln64gSP1Quadrangle( int32_t v0, int32_t v1, int32_t v2, int32_t v3 ); 51 void gln64gSPCullDisplayList( uint32_t v0, uint32_t vn ); 52 void gln64gSPPopMatrix( uint32_t param ); 53 void gln64gSPPopMatrixN( uint32_t param, uint32_t num ); 54 void gln64gSPSegment( int32_t seg, int32_t base ); 55 void gln64gSPClipRatio( uint32_t r ); 56 void gln64gSPInsertMatrix( uint32_t where, uint32_t num ); 57 void gln64gSPModifyVertex( uint32_t vtx, uint32_t where, uint32_t val ); 58 void gln64gSPNumLights( int32_t n ); 59 void gln64gSPFogFactor( int16_t fm, int16_t fo ); 60 void gln64gSPPerspNormalize( uint16_t scale ); 61 void gln64gSPTexture( float sc, float tc, int32_t level, int32_t tile, int32_t on ); 62 void gln64gSPEndDisplayList(); 63 void gln64gSPGeometryMode( uint32_t clear, uint32_t set ); 64 void gln64gSPSetGeometryMode( uint32_t mode ); 65 void gln64gSPClearGeometryMode( uint32_t mode ); 66 void gln64gSPSetOtherMode_H(uint32_t _length, uint32_t _shift, uint32_t _data); 67 void gln64gSPSetOtherMode_L(uint32_t _length, uint32_t _shift, uint32_t _data); 68 void gln64gSPLine3D( int32_t v0, int32_t v1, int32_t flag ); 69 void gln64gSPLineW3D( int32_t v0, int32_t v1, int32_t wd, int32_t flag ); 70 void gln64gSPObjRectangle( uint32_t sp ); 71 void gln64gSPObjRectangleR(uint32_t _sp); 72 void gln64gSPObjSprite( uint32_t sp ); 73 void gln64gSPObjLoadTxtr( uint32_t tx ); 74 void gln64gSPObjLoadTxSprite( uint32_t txsp ); 75 void gln64gSPObjLoadTxRectR( uint32_t txsp ); 76 void gln64gSPBgRect1Cyc( uint32_t bg ); 77 void gln64gSPBgRectCopy( uint32_t bg ); 78 void gln64gSPObjMatrix( uint32_t mtx ); 79 void gln64gSPObjSubMatrix( uint32_t mtx ); 80 void gln64gSPObjRendermode(uint32_t _mode); 81 void gln64gSPSetDMAOffsets( uint32_t mtxoffset, uint32_t vtxoffset ); 82 void gln64gSPSetVertexColorBase( uint32_t base ); 83 84 void gln64gSPSetVertexNormaleBase( uint32_t base ); 85 void gln64gSPProcessVertex(uint32_t v); 86 void gln64gSPCoordMod(uint32_t _w0, uint32_t _w1); 87 88 void gln64gSPTriangleUnknown(void); 89 90 void gln64gSPTriangle(int32_t v0, int32_t v1, int32_t v2); 91 void gln64gSP2Triangles(const int32_t v00, const int32_t v01, const int32_t v02, const int32_t flag0, 92 const int32_t v10, const int32_t v11, const int32_t v12, const int32_t flag1 ); 93 void gln64gSP4Triangles(const int32_t v00, const int32_t v01, const int32_t v02, 94 const int32_t v10, const int32_t v11, const int32_t v12, 95 const int32_t v20, const int32_t v21, const int32_t v22, 96 const int32_t v30, const int32_t v31, const int32_t v32 ); 97 98 99 extern void (*gln64gSPTransformVertex)(float vtx[4], float mtx[4][4]); 100 extern void (*gln64gSPPointLightVertex)(void *_vtx, float * _vPos); 101 extern void (*gln64gSPBillboardVertex)(uint32_t v, uint32_t i); 102 void gln64gSPSetupFunctions(void); 103 void gSPSetupFunctions(void); 104 void gln64gSPSetDMATexOffset(uint32_t _addr); 105 106 #endif 107 108