41 if(!cmd || !size)
return;
44 gpuCmdBufOffset+=size;
67 if(!param || !paramlength)
76 cmd|=(paramlength&0x7ff)<<20;
107 static u32 param[0x80];
108 static u32 zero[0x80];
109 memset(zero, 0x00, 0x80*4);
163 param[0x0]=0x1F1F1F1F;
164 param[0x1]=0x1F1F1F1F;
165 param[0x2]=0x1F1F1F1F;
166 param[0x3]=0x1F1F1F1F;
167 param[0x4]=0x1F1F1F1F;
168 param[0x5]=0x1F1F1F1F;
169 param[0x6]=0x1F1F1F1F;
185 for(i=0;i<32;i++)
GPUCMD_Add(0x800F01C8, zero, 0x00000008);
187 for(i=0;i<32;i++)
GPUCMD_Add(0x800F01C8, zero, 0x00000008);
189 for(i=0;i<32;i++)
GPUCMD_Add(0x800F01C8, zero, 0x00000008);
191 for(i=0;i<32;i++)
GPUCMD_Add(0x800F01C8, zero, 0x00000008);
193 for(i=0;i<32;i++)
GPUCMD_Add(0x800F01C8, zero, 0x00000008);
195 for(i=0;i<32;i++)
GPUCMD_Add(0x800F01C8, zero, 0x00000008);
197 for(i=0;i<32;i++)
GPUCMD_Add(0x800F01C8, zero, 0x00000008);
200 for(i=0;i<48;i++)
GPUCMD_Add(0x800F0291, zero, 0x00000008);
202 for(i=0;i<4;i++)
GPUCMD_Add(0x000F02CC, zero, 0x00000080);
205 for(i=0;i<28;i++)
GPUCMD_Add(0x000F029C, zero, 0x00000080);
213 param[0x0]=0xFFFFFFFF;
214 param[0x1]=0xFFFFFFFF;
239 u32 exp=((v>>23)&0xFF)-0x40;
240 u32 man=(v>>7)&0xFFFF;
242 if(exp>=0)
return man|(exp<<16)|(s<<23);
249 if(val==240)
return 0x38111111;
250 if(val==480)
return 0x37111111;
251 if(val==400)
return 0x3747ae14;
257 tmp2=tmp3&(~0x80000000);
261 int tmp=((tmp3<<1)>>24)-0x40;
262 if(tmp<0)
return ((tmp3>>31)<<30)<<1;
266 return (tmp1|(tmp2<<23)|(tmp3<<30))<<1;
279 u32 f116e=0x01000000|(((h-1)&0xFFF)<<12)|(w&0xFFF);
281 param[0x0]=((
u32)depthBuffer)>>3;
282 param[0x1]=((
u32)colorBuffer)>>3;
299 param[0x0]=0x00000000;
300 param[0x1]=0x00000000;
301 param[0x2]=((h-1)<<16)|((w-1)&0xFFFF);
305 param[0x0]=0x0000000F;
306 param[0x1]=0x0000000F;
307 param[0x2]=0x00000002;
308 param[0x3]=0x00000002;
317 param[0x1] = (y<<16)|(x&0xFFFF);
318 param[0x2] = ((h-1)<<16)|((w-1)&0xFFFF);
353 GPUCMD_AddSingleParam(0x000F0101, colorEquation | (alphaEquation<<8) | (colorSrc<<16) | (colorDst<<20) | (alphaSrc<<24) | (alphaDst<<28));
407 memset(param, 0x00, 0x28*4);
409 param[0x0]=((
u32)baseAddress)>>3;
410 param[0x1]=attributeFormats&0xFFFFFFFF;
411 param[0x2]=((totalAttributes-1)<<28)|((attributeMask&0xFFF)<<16)|((attributeFormats>>32)&0xFFFF);
415 for(i=0;i<totalAttributes;i++)
417 u8 v=attributeFormats&0xF;
419 attributeFormats>>=4;
422 for(i=0;i<numBuffers;i++)
425 param[3*(i+1)+0]=bufferOffsets[i];
426 param[3*(i+1)+1]=bufferPermutations[i]&0xFFFFFFFF;
427 for(j=0;j<bufferNumAttributes[i];j++)stride+=sizeTable[(bufferPermutations[i]>>(4*j))&0xF];
428 param[3*(i+1)+2]=(bufferNumAttributes[i]<<28)|((stride&0xFFF)<<16)|((bufferPermutations[i]>>32)&0xFFFF);
456 memset(param, 0x00, 5*4);
458 param[0x0]=(alphaSources<<16)|(rgbSources);
459 param[0x1]=(alphaOperands<<12)|(rgbOperands);
460 param[0x2]=(alphaCombine<<16)|(rgbCombine);
461 param[0x3]=constantColor;
462 param[0x4]=0x00000000;
void GPU_SetColorLogicOp(GPU_LOGICOP op)
void GPU_SetTexEnv(u8 id, u16 rgbSources, u16 alphaSources, u16 rgbOperands, u16 alphaOperands, GPU_COMBINEFUNC rgbCombine, GPU_COMBINEFUNC alphaCombine, u32 constantColor)
void GPU_SetBlendingColor(u8 r, u8 g, u8 b, u8 a)
void GPU_DrawElements(GPU_Primitive_t primitive, u32 *indexArray, u32 n)
void GPU_Init(Handle *gsphandle)
Result GX_SetCommandList_First(u32 *gxbuf, u32 *buf0a, u32 buf0s, u32 *buf1a, u32 buf1s, u32 *buf2a, u32 buf2s)
void GPU_SetFaceCulling(GPU_CULLMODE mode)
void GPU_SetTextureEnable(GPU_TEXUNIT units)
void GPU_SetAttributeBuffersAddress(u32 *baseAddress)
void GPU_SetViewport(u32 *depthBuffer, u32 *colorBuffer, u32 x, u32 y, u32 w, u32 h)
void GPU_SetAlphaBlending(GPU_BLENDEQUATION colorEquation, GPU_BLENDEQUATION alphaEquation, GPU_BLENDFACTOR colorSrc, GPU_BLENDFACTOR colorDst, GPU_BLENDFACTOR alphaSrc, GPU_BLENDFACTOR alphaDst)
void GPU_Reset(u32 *gxbuf, u32 *gpuBuf, u32 gpuBufSize)
u32 computeInvValue(u32 val)
void GPUCMD_SetBufferOffset(u32 offset)
void GPUCMD_Run(u32 *gxbuf)
void GPU_SetStencilOp(GPU_STENCILOP sfail, GPU_STENCILOP dfail, GPU_STENCILOP pass)
void GPUCMD_GetBuffer(u32 **adr, u32 *size, u32 *offset)
void GPUCMD_Add(u32 cmd, u32 *param, u32 paramlength)
const u8 GPU_FORMATSIZE[4]
void GPU_DepthRange(float nearVal, float farVal)
void GPU_SetAttributeBuffers(u8 totalAttributes, u32 *baseAddress, u64 attributeFormats, u16 attributeMask, u64 attributePermutation, u8 numBuffers, u32 bufferOffsets[], u64 bufferPermutations[], u8 bufferNumAttributes[])
void GPUCMD_AddRawCommands(u32 *cmd, u32 size)
void GPU_SetScissorTest(GPU_SCISSORMODE mode, u32 x, u32 y, u32 w, u32 h)
void GPU_SetAlphaTest(bool enable, GPU_TESTFUNC function, u8 ref)
void GPU_SetDepthTestAndWriteMask(bool enable, GPU_TESTFUNC function, GPU_WRITEMASK writemask)
void GPUCMD_FlushAndRun(u32 *gxbuf)
void GPUCMD_SetBuffer(u32 *adr, u32 size, u32 offset)
void GPU_SetUniform(u32 startreg, u32 *data, u32 numreg)
Result GX_SetCommandList_Last(u32 *gxbuf, u32 *buf0a, u32 buf0s, u8 flags)
void GPU_SetStencilTest(bool enable, GPU_TESTFUNC function, u8 ref, u8 mask, u8 replace)
void GPU_DrawArray(GPU_Primitive_t primitive, u32 n)
void GPUCMD_AddSingleParam(u32 cmd, u32 param)
void GPU_SetTexture(GPU_TEXUNIT unit, u32 *data, u16 width, u16 height, u32 param, GPU_TEXCOLOR colorType)
u32 gpuResetSequenceLength