Result GX_RequestDma(u32* gxbuf, u32* src, u32* dst, u32 length);
Result GX_SetCommandList_Last(u32* gxbuf, u32* buf0a, u32 buf0s, u8 flags);
-Result GX_SetMemoryFill(u32* gxbuf, u32* buf0a, u32 buf0s, u32 buf0d, u16 width0, u32* buf1a, u32 buf1s, u32 buf1d, u16 width1);
+Result GX_SetMemoryFill(u32* gxbuf, u32* buf0a, u32 buf0v, u32* buf0e, u16 width0, u32* buf1a, u32 buf1v, u32* buf1e, u16 width1);
Result GX_SetDisplayTransfer(u32* gxbuf, u32* inadr, u32 indim, u32* outadr, u32 outdim, u32 flags);
Result GX_SetTextureCopy(u32* gxbuf, u32* inadr, u32 indim, u32* outadr, u32 outdim, u32 size, u32 flags);
Result GX_SetCommandList_First(u32* gxbuf, u32* buf0a, u32 buf0s, u32* buf1a, u32 buf1s, u32* buf2a, u32 buf2s);
GPUCMD_AddSingleParam(0x000F0112, 0x0000000F);
GPUCMD_AddSingleParam(0x000F0114, 0x00000003);
GPUCMD_AddSingleParam(0x000F0115, 0x00000003);
+
GPUCMD_AddSingleParam(0x000F01C5, 0x00000000);
for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
u32 f32tof24(float f)
{
+ if(!f)return 0;
u32 v=*((u32*)&f);
u8 s=v>>31;
u32 exp=((v>>23)&0xFF)-0x40;
GPUCMD_Add(0x800F011C, param, 0x00000003);
GPUCMD_AddSingleParam(0x000F006E, f116e);
- GPUCMD_AddSingleParam(0x000F0116, 0x00000003); //?
- GPUCMD_AddSingleParam(0x000F0117, 0x00000002); //?
+ GPUCMD_AddSingleParam(0x000F0116, 0x00000003); //depth format
+ GPUCMD_AddSingleParam(0x000F0117, 0x00000002); //color format
GPUCMD_AddSingleParam(0x000F011B, 0x00000000); //?
param[0x0]=f32tof24(fw/2);
__asm__ ("ldrex %[result], [%[adr]]" : [result] "=r" (cmdBufHeader) : [adr] "r" (sharedGspCmdBuf));
totalCommands=((cmdBufHeader&0xFF00)>>8)+1;
- cmdBufHeader=((cmdBufHeader)&0xFFFF00FF)|((totalCommands<<8)|0xFF00);
+ cmdBufHeader=((cmdBufHeader)&0xFFFF00FF)|((totalCommands<<8)&0xFF00);
}
if(totalCommands==1)return GSPGPU_TriggerCmdReqQueue(handle);
return GSPGPU_submitGxCommand(gxbuf, gxCommand, NULL);
}
-Result GX_SetMemoryFill(u32* gxbuf, u32* buf0a, u32 buf0s, u32 buf0d, u16 width0, u32* buf1a, u32 buf1s, u32 buf1d, u16 width1)
+Result GX_SetMemoryFill(u32* gxbuf, u32* buf0a, u32 buf0v, u32* buf0e, u16 width0, u32* buf1a, u32 buf1v, u32* buf1e, u16 width1)
{
u32 gxCommand[0x8];
- gxCommand[0]=0x02; //CommandID
+ // gxCommand[0]=0x02; //CommandID
+ gxCommand[0]=0x01000102; //CommandID
gxCommand[1]=(u32)buf0a; //buf0 address
- gxCommand[2]=buf0s; //buf0 size
- gxCommand[3]=buf0d; //buf0 data
+ gxCommand[2]=buf0v; //buf0 value
+ gxCommand[3]=(u32*)buf0e; //buf0 end addr
gxCommand[4]=(u32)buf1a; //buf1 address
- gxCommand[5]=buf1s; //buf1 size
- gxCommand[6]=buf1d; //buf1 data
+ gxCommand[5]=buf1v; //buf1 value
+ gxCommand[6]=(u32*)buf1e; //buf1 end addr
gxCommand[7]=(width0)|(width1<<16);
return GSPGPU_submitGxCommand(gxbuf, gxCommand, NULL);