From c8276275eabab3674081fd1668d32895c0ef33c7 Mon Sep 17 00:00:00 2001 From: N0NameN0 Date: Thu, 5 Feb 2009 21:27:48 +0000 Subject: [PATCH] [BUG] GRRLIB_GetPixelFromtexImg and GRRLIB_SetPixelTotexImg now WORKING !! --- README.TXT | 2 +- template/source/GRRLIB/GRRLIB.c | 21 +++++++++++---------- template/source/gfx/pixeltest.c | 16 +++++++--------- template/source/gfx/pixeltest.png | Bin 183 -> 150 bytes template/source/main.c | 21 ++++++++++++--------- 5 files changed, 31 insertions(+), 29 deletions(-) diff --git a/README.TXT b/README.TXT index 2064a16..70f71a8 100644 --- a/README.TXT +++ b/README.TXT @@ -52,7 +52,7 @@ ChangeLog : * 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 diff --git a/template/source/GRRLIB/GRRLIB.c b/template/source/GRRLIB/GRRLIB.c index 0e4aa14..83fcf44 100644 --- a/template/source/GRRLIB/GRRLIB.c +++ b/template/source/GRRLIB/GRRLIB.c @@ -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 - * @bug !!!!!!!!!!!!!!!! NOT WORKING NEED HELP !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * @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 tex texture to get the color from. @@ -447,9 +446,9 @@ u32 GRRLIB_GetPixelFromtexImg(int x, int y, GRRLIB_texImg tex){ u32 value; u32 offset; - x1 = x >> 2; // div by 4 - y1 = y >> 2; // div by 4 - offset = (x1*64) + (x-(x1*4))*2+y*8; + x1 = x >> 2; + y1 = y >> 2; + offset = (y1*16*tex.w) + (x1*64) + ((y%4 * 4 + x%4 ) * 2); // Fuckin equation found by NoNameNo ;) a=*(truc+offset); 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 - * @bug !!!!!!!!!!!!!!!! NOT WORKING NEED HELP !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * @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 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; u32 offset; - x1 = x >> 2; // div by 4 - y1 = y >> 2; // div by 4 - offset = (x1*64) + (x-(x1*4))*2+y*8; + x1 = x >> 2; + y1 = y >> 2; + offset = (y1*16*tex.w) + (x1*64) + ((y%4 * 4 + x%4 ) * 2); // Fuckin equation found by NoNameNo ;) a=color & 0xFF; - r=(color>>8) & 0xFF; + b=(color>>8) & 0xFF; g=(color>>16) & 0xFF; - b=(color>>24) & 0xFF; + r=(color>>24) & 0xFF; *(truc+offset)=a; *(truc+offset+1)=r; *(truc+offset+32)=g; *(truc+offset+33)=b; + + DCFlushRange(tex.data, tex.w * tex.h * 4); + } /** diff --git a/template/source/gfx/pixeltest.c b/template/source/gfx/pixeltest.c index dae3af4..59a1c9f 100644 --- a/template/source/gfx/pixeltest.c +++ b/template/source/gfx/pixeltest.c @@ -5,16 +5,14 @@ Visit http://www.devkitpro.org const unsigned char pixeltest[] = { 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, - 0x6d, 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, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x0f, 0xbe, + 0x8b, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00, + 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, 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, - 0x58, 0xc3, 0xed, 0xce, 0x01, 0x0d, 0x00, 0x00, 0x08, 0x03, 0x20, 0xb5, 0x7f, 0xe7, 0x5b, 0x43, - 0x37, 0x48, 0x40, 0x27, 0x49, 0x1d, 0x36, 0x75, 0x9c, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xe0, - 0xd7, 0xe0, 0x02, 0x3e, 0xea, 0x04, 0x4c, 0xc6, 0x8c, 0xdb, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x49, - 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 + 0x05, 0x12, 0x1b, 0x0e, 0xe5, 0xd7, 0xd5, 0x96, 0x00, 0x00, 0x00, 0x16, 0x49, 0x44, 0x41, 0x54, + 0x18, 0xd3, 0x63, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x3c, 0x80, 0x89, 0x81, 0x00, 0x18, 0x1e, + 0x0a, 0x00, 0x1b, 0x6e, 0x04, 0x0c, 0x19, 0x49, 0x52, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, + 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 }; const int pixeltest_size = sizeof(pixeltest); diff --git a/template/source/gfx/pixeltest.png b/template/source/gfx/pixeltest.png index fa6cfde9dcb777d5ac8f979dde548d913d09cb99..fba69e4e0d636fae23e4ff24b0761af51b5caf8f 100644 GIT binary patch delta 109 zcmdnaIE_)UGr-TCmrII^fq{Y7)59eQNOOQN2OE$)!oRP3qM{h*e+D32uy^_7i4F>8 ztU}U!Pp@B{29y``ba4!kxSagw|NsB>Y&H#@jSLcUTny5AEIg8)K^K847(8A5T-G@y GGywoG%O8~h delta 142 zcmbQnxSdh4Gr-TCmrII^fq{Y7)59eQNNa#F2OE&=`L`o?qM{flkjcRC(|LFOLbP0l+XkKjh-&l diff --git a/template/source/main.c b/template/source/main.c index b19dd09..36fefdb 100644 --- a/template/source/main.c +++ b/template/source/main.c @@ -56,7 +56,8 @@ Mtx GXmodelView2D; int main() { int left = 0, top = 0, page = 0, frame = TILE_DOWN + 1; unsigned int wait = TILE_DELAY, direction = TILE_DOWN, direction_new = TILE_DOWN; - int x, y, val; + int x, y; + u32 val; ir_t ir1; u32 wpaddown, wpadheld; 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_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_InitTileSet(&tex_sprite_png, 24, 32, 0); @@ -89,6 +90,13 @@ int main() { GRRLIB_texImg tex_BMfont5 = GRRLIB_LoadTexturePNG(BMfont5); 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) { WPAD_SetVRes(0, 640, 480); WPAD_ScanPads(); @@ -105,14 +113,9 @@ int main() { 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(400, 150, tex_pixeltest, 0, 1, 1, GRRLIB_WHITE); + GRRLIB_DrawImg(400, 150, tex_pixeltest, 0, 20, 20, GRRLIB_WHITE); + - for(y=0; y - 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); - } - } //------------ // Draw a sprite GRRLIB_DrawTile(600, 400, tex_sprite_png, 0, 2, 2, GRRLIB_WHITE, 12*4); // Rupee