[CHG] Modified SetPixel() and GetPixel() so they each request half the number of RAM accesses

This commit is contained in:
csBlueChip 2009-09-13 18:07:03 +00:00
parent f127a121ee
commit 4278542057

View file

@ -35,12 +35,14 @@ THE SOFTWARE.
INLINE INLINE
u32 GRRLIB_GetPixelFromtexImg (const int x, const int y, u32 GRRLIB_GetPixelFromtexImg (const int x, const int y,
const GRRLIB_texImg *tex) { const GRRLIB_texImg *tex) {
u8 *truc = (u8*)tex->data; register u32 offs;
u32 offset; register u32 ar;
register u8* bp = (u8*)tex->data;
offset = (((y >> 2)<<4)*tex->w) + ((x >> 2)<<6) + ((((y&3) << 2) + (x&3) ) << 1); // Fuckin equation found by NoNameNo ;) offs = (((y&(~3))<<2)*tex->w) + ((x&(~3))<<4) + ((((y&3)<<2) + (x&3)) <<1);
return ((*(truc+offset+1)<<24) | (*(truc+offset+32)<<16) | (*(truc+offset+33)<<8) | *(truc+offset)); ar = (u32)(*((u16*)(bp+offs )));
return (ar<<24) | ( ((u32)(*((u16*)(bp+offs+32)))) <<8) | (ar>>8); // Wii is big-endian
} }
/** /**
@ -54,15 +56,13 @@ u32 GRRLIB_GetPixelFromtexImg (const int x, const int y,
INLINE INLINE
void GRRLIB_SetPixelTotexImg (const int x, const int y, void GRRLIB_SetPixelTotexImg (const int x, const int y,
GRRLIB_texImg *tex, const u32 color) { GRRLIB_texImg *tex, const u32 color) {
u8 *truc = (u8*)tex->data; register u32 offs;
u32 offset; register u8* bp = (u8*)tex->data;
offset = (((y >> 2)<<4)*tex->w) + ((x >> 2)<<6) + ((((y&3) << 2) + (x&3) ) << 1); // Fuckin equation found by NoNameNo ;) offs = (((y&(~3))<<2)*tex->w) + ((x&(~3))<<4) + ((((y&3)<<2) + (x&3)) <<1);
*(truc+offset) = color & 0xFF; *((u16*)(bp+offs )) = (u16)((color <<8) | (color >>24));
*(truc+offset+1) = (color>>24) & 0xFF; *((u16*)(bp+offs+32)) = (u16) (color >>8);
*(truc+offset+32) = (color>>16) & 0xFF;
*(truc+offset+33) = (color>>8) & 0xFF;
} }
/** /**