[BUG] GRRLIB_GetPixelFromtexImg and GRRLIB_SetPixelTotexImg now WORKING

!!
This commit is contained in:
N0NameN0 2009-02-05 21:27:48 +00:00
parent 324f4792e8
commit c8276275ea
5 changed files with 31 additions and 29 deletions

View file

@ -52,7 +52,7 @@ ChangeLog :
* add GRRLIB_PtInRect, GRRLIB_RectInRect and GRRLIB_RectOnRect. * add GRRLIB_PtInRect, GRRLIB_RectInRect and GRRLIB_RectOnRect.
* GRRLIB_GetPixelFromtexImg and GRRLIB_SetPixelTotexImg ////////////////////////// BUGGED DO NOT USE !!! * GRRLIB_GetPixelFromtexImg and GRRLIB_SetPixelTotexImg
* add GRRLIB_Exit to free the memory allocated by GRRLIB * add GRRLIB_Exit to free the memory allocated by GRRLIB

View file

@ -434,7 +434,6 @@ bool GRRLIB_RectOnRect(int rect1x, int rect1y, int rect1w, int rect1h, int rect2
/** /**
* Return the color value of a pixel from a GRRLIB_texImg * Return the color value of a pixel from a GRRLIB_texImg
* @bug !!!!!!!!!!!!!!!! NOT WORKING NEED HELP !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* @param x specifies the x-coordinate of the pixel in the texture. * @param x specifies the x-coordinate of the pixel in the texture.
* @param y specifies the y-coordinate of the pixel in the texture. * @param y specifies the y-coordinate of the pixel in the texture.
* @param tex texture to get the color from. * @param tex texture to get the color from.
@ -447,9 +446,9 @@ u32 GRRLIB_GetPixelFromtexImg(int x, int y, GRRLIB_texImg tex){
u32 value; u32 value;
u32 offset; u32 offset;
x1 = x >> 2; // div by 4 x1 = x >> 2;
y1 = y >> 2; // div by 4 y1 = y >> 2;
offset = (x1*64) + (x-(x1*4))*2+y*8; offset = (y1*16*tex.w) + (x1*64) + ((y%4 * 4 + x%4 ) * 2); // Fuckin equation found by NoNameNo ;)
a=*(truc+offset); a=*(truc+offset);
r=*(truc+offset+1); r=*(truc+offset+1);
@ -463,7 +462,6 @@ u32 GRRLIB_GetPixelFromtexImg(int x, int y, GRRLIB_texImg tex){
/** /**
* Set the color value of a pixel to a GRRLIB_texImg * Set the color value of a pixel to a GRRLIB_texImg
* @bug !!!!!!!!!!!!!!!! NOT WORKING NEED HELP !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* @param x specifies the x-coordinate of the pixel in the texture. * @param x specifies the x-coordinate of the pixel in the texture.
* @param y specifies the y-coordinate of the pixel in the texture. * @param y specifies the y-coordinate of the pixel in the texture.
* @param tex texture to set the color to. * @param tex texture to set the color to.
@ -475,19 +473,22 @@ void GRRLIB_SetPixelTotexImg(int x, int y, GRRLIB_texImg tex, u32 color){
u8 r, g, b, a; u8 r, g, b, a;
u32 offset; u32 offset;
x1 = x >> 2; // div by 4 x1 = x >> 2;
y1 = y >> 2; // div by 4 y1 = y >> 2;
offset = (x1*64) + (x-(x1*4))*2+y*8; offset = (y1*16*tex.w) + (x1*64) + ((y%4 * 4 + x%4 ) * 2); // Fuckin equation found by NoNameNo ;)
a=color & 0xFF; a=color & 0xFF;
r=(color>>8) & 0xFF; b=(color>>8) & 0xFF;
g=(color>>16) & 0xFF; g=(color>>16) & 0xFF;
b=(color>>24) & 0xFF; r=(color>>24) & 0xFF;
*(truc+offset)=a; *(truc+offset)=a;
*(truc+offset+1)=r; *(truc+offset+1)=r;
*(truc+offset+32)=g; *(truc+offset+32)=g;
*(truc+offset+33)=b; *(truc+offset+33)=b;
DCFlushRange(tex.data, tex.w * tex.h * 4);
} }
/** /**

View file

@ -5,16 +5,14 @@ Visit http://www.devkitpro.org
const unsigned char pixeltest[] = { const unsigned char pixeltest[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x08, 0x06, 0x00, 0x00, 0x00, 0x8c, 0xfe, 0xb8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x0f, 0xbe,
0x6d, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00,
0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x43, 0xbb, 0x7f, 0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 0xbd, 0xa7, 0x93,
0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b, 0x13,
0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 0x07, 0xd9, 0x02, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 0x07, 0xd9, 0x02,
0x04, 0x14, 0x1e, 0x12, 0x30, 0x90, 0x66, 0x4b, 0x00, 0x00, 0x00, 0x37, 0x49, 0x44, 0x41, 0x54, 0x05, 0x12, 0x1b, 0x0e, 0xe5, 0xd7, 0xd5, 0x96, 0x00, 0x00, 0x00, 0x16, 0x49, 0x44, 0x41, 0x54,
0x58, 0xc3, 0xed, 0xce, 0x01, 0x0d, 0x00, 0x00, 0x08, 0x03, 0x20, 0xb5, 0x7f, 0xe7, 0x5b, 0x43, 0x18, 0xd3, 0x63, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x3c, 0x80, 0x89, 0x81, 0x00, 0x18, 0x1e,
0x37, 0x48, 0x40, 0x27, 0x49, 0x1d, 0x36, 0x75, 0x9c, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x0a, 0x00, 0x1b, 0x6e, 0x04, 0x0c, 0x19, 0x49, 0x52, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xe0, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
0xd7, 0xe0, 0x02, 0x3e, 0xea, 0x04, 0x4c, 0xc6, 0x8c, 0xdb, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
}; };
const int pixeltest_size = sizeof(pixeltest); const int pixeltest_size = sizeof(pixeltest);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 B

After

Width:  |  Height:  |  Size: 150 B

View file

@ -56,7 +56,8 @@ Mtx GXmodelView2D;
int main() { int main() {
int left = 0, top = 0, page = 0, frame = TILE_DOWN + 1; int left = 0, top = 0, page = 0, frame = TILE_DOWN + 1;
unsigned int wait = TILE_DELAY, direction = TILE_DOWN, direction_new = TILE_DOWN; unsigned int wait = TILE_DELAY, direction = TILE_DOWN, direction_new = TILE_DOWN;
int x, y, val; int x, y;
u32 val;
ir_t ir1; ir_t ir1;
u32 wpaddown, wpadheld; u32 wpaddown, wpadheld;
Vector triangle[] = {{400,200,0.0f}, {500,400,0.0f}, {300,400,0.0f}}; Vector triangle[] = {{400,200,0.0f}, {500,400,0.0f}, {300,400,0.0f}};
@ -69,7 +70,7 @@ int main() {
GRRLIB_texImg tex_test_jpg = GRRLIB_LoadTextureJPG(test_jpg); GRRLIB_texImg tex_test_jpg = GRRLIB_LoadTextureJPG(test_jpg);
GRRLIB_texImg tex_pixeltest = GRRLIB_LoadTexturePNG(pixeltest); GRRLIB_texImg tex_pixeltest = GRRLIB_LoadTexturePNG(pixeltest); // a 8x8 only white test png
GRRLIB_texImg tex_sprite_png = GRRLIB_LoadTexturePNG(sprite); GRRLIB_texImg tex_sprite_png = GRRLIB_LoadTexturePNG(sprite);
GRRLIB_InitTileSet(&tex_sprite_png, 24, 32, 0); GRRLIB_InitTileSet(&tex_sprite_png, 24, 32, 0);
@ -89,6 +90,13 @@ int main() {
GRRLIB_texImg tex_BMfont5 = GRRLIB_LoadTexturePNG(BMfont5); GRRLIB_texImg tex_BMfont5 = GRRLIB_LoadTexturePNG(BMfont5);
GRRLIB_InitTileSet(&tex_BMfont5, 8, 16, 0); GRRLIB_InitTileSet(&tex_BMfont5, 8, 16, 0);
for(y=0;y<8;y++){
for(x=0;x<8;x++){
val = GRRLIB_GetPixelFromtexImg(x+8,y+8,tex_sprite_png);
GRRLIB_SetPixelTotexImg(x, y, tex_pixeltest, val);
}
}
while(1) { while(1) {
WPAD_SetVRes(0, 640, 480); WPAD_SetVRes(0, 640, 480);
WPAD_ScanPads(); WPAD_ScanPads();
@ -105,14 +113,9 @@ int main() {
GRRLIB_Printf(5, 25, tex_BMfont2, GRRLIB_WHITE, 1, "IMAGES DEMO"); GRRLIB_Printf(5, 25, tex_BMfont2, GRRLIB_WHITE, 1, "IMAGES DEMO");
GRRLIB_DrawImg(10, 50, tex_test_jpg, 0, 1, 1, GRRLIB_WHITE); GRRLIB_DrawImg(10, 50, tex_test_jpg, 0, 1, 1, GRRLIB_WHITE);
GRRLIB_DrawImg(400, 150, tex_pixeltest, 0, 1, 1, GRRLIB_WHITE); GRRLIB_DrawImg(400, 150, tex_pixeltest, 0, 20, 20, GRRLIB_WHITE);
for(y=0; y<tex_pixeltest.h; y++) { //------------ <just a test>
for(x=0; x<(tex_pixeltest.w*20); x++) {
val = 1 + (int) (16777215.0 * (rand() / (RAND_MAX + 1.0)));
GRRLIB_SetPixelTotexImg(x, y, tex_pixeltest, (val<<8)|0xFF);
}
} //------------ </just a test>
// Draw a sprite // Draw a sprite
GRRLIB_DrawTile(600, 400, tex_sprite_png, 0, 2, 2, GRRLIB_WHITE, 12*4); // Rupee GRRLIB_DrawTile(600, 400, tex_sprite_png, 0, 2, 2, GRRLIB_WHITE, 12*4); // Rupee