new function in libogc GX

Add your suggestions for toolchain improvements here.
Post Reply
Molokai
Posts: 3
Joined: Sun Sep 21, 2008 2:37 am

new function in libogc GX

Post by Molokai » Sat Nov 29, 2008 12:26 am

This is for libogc, but I figured it was a suggestion, so here it is.

I was thinking it would be really nice to have a function in GX comparable to GX_SetDispCopyYScale to do it for the XScale instead (i.e., GX_SetDispCopyXScale). It can't be too much different from YScale, and so would be easy to implement (I would hope). I tried doing so myself, but in this line in the YScale function:

Code: Select all

GX_LOAD_BP_REG(0x4e000000|yScale);
I would have no idea what reg to put in place of the one there for YScale. Also, in these lines:

Code: Select all

ht = _SHIFTR(_gx[0xcc],12,10)+1;
return __GX_GetNumXfbLines(ht,yScale);
I have no idea what that even does, though I would guess they would need to be changed somehow...

Samson
Posts: 35
Joined: Mon May 19, 2008 8:05 am

Re: new function in libogc GX

Post by Samson » Sun Dec 07, 2008 5:22 pm

The GX functions are a very thin wrapper around the GameCube 3D hardware. So you'll have to look through the hardware documentation to see if you can do something before it can be added to the GX library.

Eke
Posts: 64
Joined: Sat Mar 01, 2008 11:01 am

Re: new function in libogc GX

Post by Eke » Wed Dec 10, 2008 3:59 pm

the GX hardware is only capable of doing vertical scaling during the copy, not horizontal scaling... and never will, no matter how you modify libogc

You have to understand that you just can not recreate functionnalities that does not exist, libogc writes that specific value in that specific register because it's how the hardware has been designed, registers are just the interface between software and hardware...

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests