You are not logged in.
Hi. I got a problem that i don´t understand.
The program works fine , until i press the Home-Button to get back to the HBC.
The screen turns black and i get a crash: "Exception (DSI) occured"
How do i fix it and what does it mean?
Here´s my code:
Mtx GXmodelView2D; typedef struct ObjektFigur{ unsigned int x; unsigned int y; unsigned int h; unsigned int w; unsigned int no; unsigned int col_w; unsigned int col_h; unsigned int col_x_offset; unsigned int col_y_offset; unsigned int anim; unsigned int anim2; unsigned int anim3; unsigned int anim4; unsigned int framesrate; unsigned int framesrate2; unsigned int framesrate3; unsigned int framesrate4; unsigned int direction1p; unsigned int ruhe; GRRLIB_texImg move_none_down1; GRRLIB_texImg move_none_left1; GRRLIB_texImg move_none_up1; GRRLIB_texImg move_none_right1; GRRLIB_texImg stand_allsides1; } ObjektFigur; ObjektFigur test[2]; ObjektFigur Einrichten(ObjektFigur link){ link.x=50; link.y=50; link.h=24; link.w=60; link.anim=10; link.anim2=10; link.anim3=10; link.anim4=10; link.framesrate=0; link.framesrate2=0; link.framesrate3=0; link.framesrate4=0; link.direction1p=0; link.ruhe=0; link.col_w=link.w*0.6; link.col_h=link.h*1; link.col_x_offset=(link.w-link.col_w)/2; link.col_y_offset=(link.h-link.col_h)/2; link.move_none_down1=GRRLIB_LoadTexture(link_move_none_down1); link.move_none_left1 = GRRLIB_LoadTexture(link_move_none_left1); link.move_none_up1 = GRRLIB_LoadTexture(link_move_none_up1); link.move_none_right1 = GRRLIB_LoadTexture(link_move_none_right1); link.stand_allsides1 = GRRLIB_LoadTexture(link_stand_allsides); link.move_none_down1.tilew=30; link.move_none_down1.tileh=12; link.move_none_down1.nbtilew=10; link.move_none_down1.nbtileh=2; link.move_none_down1.tilestart=0; link.move_none_left1.tilew=30; link.move_none_left1.tileh=12; link.move_none_left1.nbtilew=10; link.move_none_left1.nbtileh=2; link.move_none_left1.tilestart=0; link.move_none_up1.tilew=30; link.move_none_up1.tileh=12; link.move_none_up1.nbtilew=10; link.move_none_up1.nbtileh=2; link.move_none_up1.tilestart=0; link.move_none_right1.tilew=30; link.move_none_right1.tileh=12; link.move_none_right1.nbtilew=10; link.move_none_right1.nbtileh=2; link.move_none_right1.tilestart=0; link.stand_allsides1.tilew=30; link.stand_allsides1.tileh=12; link.stand_allsides1.nbtilew=10; link.stand_allsides1.nbtileh=2; link.stand_allsides1.tilestart=0; return link; } short int Kollision(ObjektFigur objekt1,ObjektFigur objekt2){ int left1, left2; int right1, right2; int top1, top2; int bottom1, bottom2; left1 = objekt1.x + objekt1.col_x_offset; left2 = objekt2.x + objekt2.col_x_offset; right1 = left1 + objekt1.col_w; right2 = left2 + objekt2.col_w; top1 = objekt1.y + objekt1.col_y_offset; top2 = objekt2.y + objekt1.col_y_offset; bottom1 = top1 + objekt1.col_h; bottom2 = top2 + objekt2.col_h; if (bottom1 < top2) return(0); if (top1 > bottom2) return(0); if (right1 < left2) return(0); if (left1 > right2) return(0); return(1); } ObjektFigur Steuerung(u32 wpaddown,u32 wpadheld,ObjektFigur player){ player.col_w=player.w*0.6; player.col_h=player.h*1; int i=0; int kolli=0; ObjektFigur tester; tester=player; player.col_x_offset=(player.w-player.col_w)/2; player.col_y_offset=(player.h-player.col_h)/2; if (wpadheld & WPAD_BUTTON_HOME) { exit(0); } if (wpadheld & WPAD_BUTTON_DOWN) { if (player.framesrate >= 4 && player.anim<19){ player.framesrate=0; player.anim+=1; } else if (player.framesrate >= 4 && player.anim >= 19){ player.framesrate=0; player.anim=10; } tester.x+=2; for (i=0;i<2;i++){ if (player.no!=test[i].no){ if(Kollision(tester,test[i])){ kolli=1; } } } player.framesrate+=1; if (kolli==0) player.x+=2; player.direction1p=1; } if (wpadheld & WPAD_BUTTON_UP) { if (player.framesrate2 >= 4 && player.anim2<19){ player.framesrate2=0; player.anim2+=1; } else if (player.framesrate2 >= 4 && player.anim2 >= 19){ player.framesrate2=0; player.anim2=10; } tester.x-=2; for (i=0;i<2;i++){ if (player.no!=test[i].no){ if(Kollision(tester,test[i])){ kolli=1; } } } player.framesrate2+=1; if (kolli==0) player.x-=2; player.direction1p=0; } if (wpadheld & WPAD_BUTTON_RIGHT) { if (player.framesrate3 >= 4 && player.anim3<19){ player.framesrate3=0; player.anim3+=1; } else if (player.framesrate3 >= 4 && player.anim3 >= 19){ player.framesrate3=0; player.anim3=10; } tester.y-=2; for (i=0;i<2;i++){ if (player.no!=test[i].no){ if(Kollision(tester,test[i])){ kolli=1; } } } player.framesrate3+=1; if (kolli==0) player.y-=2; player.direction1p=2; } if (wpadheld & WPAD_BUTTON_LEFT) { if (player.framesrate4 >= 4 && player.anim4<19){ player.anim4+=1; player.framesrate4=0; } else if (player.framesrate4 >= 4 && player.anim4 >= 19){ player.anim4=10; player.framesrate4=0; } tester.y+=2; for (i=0;i<2;i++){ if (player.no!=test[i].no){ if(Kollision(tester,test[i])){ kolli=1; } } } player.framesrate4+=1; if (kolli==0) player.y+=2; player.direction1p=3; } if(!(wpadheld & WPAD_BUTTON_DOWN) && !(wpadheld & WPAD_BUTTON_UP) && !(wpadheld & WPAD_BUTTON_LEFT) && !(wpadheld & WPAD_BUTTON_RIGHT)){ player.ruhe=1; } else { player.ruhe=0; } if (player.ruhe==1 && player.direction1p==1) GRRLIB_DrawTile(player.x,player.y,player.stand_allsides1,0,2,2,0xFFFFFFFF,13); if (player.ruhe==1 && player.direction1p==0) GRRLIB_DrawTile(player.x,player.y,player.stand_allsides1,0,2,2,0xFFFFFFFF,12); if (player.ruhe==1 && player.direction1p==3) GRRLIB_DrawTile(player.x,player.y,player.stand_allsides1,0,2,2,0xFFFFFFFF,10); if (player.ruhe==1 && player.direction1p==2) GRRLIB_DrawTile(player.x,player.y,player.stand_allsides1,0,2,2,0xFFFFFFFF,11); if (player.ruhe==1 && player.direction1p==1) GRRLIB_DrawTile(player.x,player.y-24,player.stand_allsides1,0,2,2,0xFFFFFFFF,3); if (player.ruhe==1 && player.direction1p==0) GRRLIB_DrawTile(player.x,player.y-24,player.stand_allsides1,0,2,2,0xFFFFFFFF,2); if (player.ruhe==1 && player.direction1p==3) GRRLIB_DrawTile(player.x,player.y-24,player.stand_allsides1,0,2,2,0xFFFFFFFF,0); if (player.ruhe==1 && player.direction1p==2) GRRLIB_DrawTile(player.x,player.y-24,player.stand_allsides1,0,2,2,0xFFFFFFFF,1); if (player.ruhe==0 && player.direction1p==0) GRRLIB_DrawTile(player.x,player.y,player.move_none_left1,0,2,2,0xFFFFFFFF,player.anim2); if (player.ruhe==0 && player.direction1p==1) GRRLIB_DrawTile(player.x,player.y,player.move_none_right1,0,2,2,0xFFFFFFFF,player.anim); if (player.ruhe==0 && player.direction1p==2) GRRLIB_DrawTile(player.x,player.y,player.move_none_up1,0,2,2,0xFFFFFFFF,player.anim3); if (player.ruhe==0 && player.direction1p==3) GRRLIB_DrawTile(player.x,player.y,player.move_none_down1,0,2,2,0xFFFFFFFF,player.anim4); if (player.ruhe==0 && player.direction1p==0) GRRLIB_DrawTile(player.x,player.y-24,player.move_none_left1,0,2,2,0xFFFFFFFF,player.anim2-10); if (player.ruhe==0 && player.direction1p==1) GRRLIB_DrawTile(player.x,player.y-24,player.move_none_right1,0,2,2,0xFFFFFFFF,player.anim-10); if (player.ruhe==0 && player.direction1p==2) GRRLIB_DrawTile(player.x,player.y-24,player.move_none_up1,0,2,2,0xFFFFFFFF,player.anim3-10); if (player.ruhe==0 && player.direction1p==3) GRRLIB_DrawTile(player.x,player.y-24,player.move_none_down1,0,2,2,0xFFFFFFFF,player.anim4-10); return player; } int main() { float rot=0; int i=0; // Erstellen der Spieler ObjektFigur player1; player1=Einrichten(player1); ObjektFigur player2; player2=Einrichten(player2); player2.x=200; // //Eintragen der Spieler in die Array test[0]=player1; test[1]=player2; // // Laden der Grafiken GRRLIB_texImg tex_title = GRRLIB_LoadTexture(title); GRRLIB_texImg tex_testroom = GRRLIB_LoadTexture(testroom); GRRLIB_texImg tex_link_down_shield_1 = GRRLIB_LoadTexture(link_down_shield_1); //extern (unabhängig vom Objekt) // Nummerierung der Array-Einträge for (i=0;i<sizeof(test);i++){ test[i].no=i; } // //Video Init VIDEO_Init(); GRRLIB_Init(); WPAD_Init(); // while(1) { // Steuerungsinit WPAD_ScanPads(); u32 wpaddown1 = WPAD_ButtonsDown(0); u32 wpadheld1 = WPAD_ButtonsHeld(0); u32 wpaddown2 = WPAD_ButtonsDown(1); u32 wpadheld2 = WPAD_ButtonsHeld(1); // // Bildschirm grafisch gestalten GRRLIB_FillScreen(0xFFFFFFFF); GRRLIB_DrawImg(0,0, tex_title, rot, 1, 1, 0xFFFFFFFF); GRRLIB_DrawImg(0,0, tex_testroom, rot, 1, 1, 0xFFFFFFFF); // // Kleine Kollisionstester if (Kollision(player1,player2)){ GRRLIB_DrawImg(400,350, tex_link_down_shield_1, rot, 2, 2, 0xFFFFFFFF);} // // Aufrufen der Spieler und Neuverfassung im Array player1=Steuerung(wpaddown1,wpadheld1,player1); test[0]=player1; player2=Steuerung(wpaddown2,wpadheld2,player2); test[1]=player2; // // Bildausgabe GRRLIB_Render(); } GRRLIB_Exit(); free(tex_title.data); free(tex_link_down_shield_1.data); return 0; }
Any idea?
Offline
I don't know if it's related but all those textures are not freed:
GRRLIB_texImg move_none_down1;
GRRLIB_texImg move_none_left1;
GRRLIB_texImg move_none_up1;
GRRLIB_texImg move_none_right1;
GRRLIB_texImg stand_allsides1;
And this one too:
GRRLIB_texImg tex_testroom = GRRLIB_LoadTexture(testroom);
Before freeing a texture make sure they are not equal to NULL.
Offline
How do i do that? Making sure its not equal NULL?
I changed the last lines to:
free(tex_title.data); free(tex_link_down_shield_1.data); free(tex_testroom.data); free(player1.move_none_down1.data); free(player1.move_none_up1.data); free(player1.move_none_right1.data); free(player1.move_none_left1.data); free(player2.move_none_down1.data); free(player2.move_none_up1.data); free(player2.move_none_right1.data); free(player2.move_none_left1.data); free(player2.stand_allsides1.data); free(player1.stand_allsides1.data); for(i=0;i<sizeof(test);i++){ free(test[i].move_none_down1.data); free(test[i].move_none_up1.data); free(test[i].move_none_left1.data); free(test[i].move_none_right1.data); free(test[i].stand_allsides1.data); }
But it still crashes.
I have to add that i´m not a super coder or somethin like that. ^^°
Offline
The problem is that this code is never executed:
GRRLIB_Exit(); free(tex_title.data); free(tex_link_down_shield_1.data); return 0;
In the function Steuerung you do an exit:
if (wpadheld & WPAD_BUTTON_HOME) { exit(0); }
If WPAD_BUTTON_HOME is your only way out, you should put all the exit code there. Or make a function that you could call from different places.
Offline
i put the function into the main and wrote it like this:
if (wpadheld1 & WPAD_BUTTON_HOME) { GRRLIB_Exit(); free(tex_title.data); free(tex_link_down_shield_1.data); free(tex_testroom.data); free(player1.move_none_down1.data); free(player1.move_none_up1.data); free(player1.move_none_right1.data); free(player1.move_none_left1.data); free(player2.move_none_down1.data); free(player2.move_none_up1.data); free(player2.move_none_right1.data); free(player2.move_none_left1.data); free(player2.stand_allsides1.data); free(player1.stand_allsides1.data); free(test[0].move_none_down1.data); free(test[0].move_none_up1.data); free(test[0].move_none_left1.data); free(test[0].move_none_right1.data); free(test[0].stand_allsides1.data); free(test[1].move_none_down1.data); free(test[1].move_none_up1.data); free(test[1].move_none_left1.data); free(test[1].move_none_right1.data); free(test[1].stand_allsides1.data); exit(0); }
This is the only way , i found , the exception doesn´t occure.
But the game freezes instead when clicking the home button.
Offline
hey
I have the same problem here.
I don't have the DSi error since I free every texture I use in the game after GRRLIB_Exit(); but I sometimes end up with a black screen and I have to reset the wii
any idea what can cause this ?
Offline
nickles wrote:
This is the only way , i found , the exception doesn´t occure.
But the game freezes instead when clicking the home button.
You need to call free only if GRRLIB_LoadTexture has been called for a variable, if that's not the case it crash.
Just for fun, try not putting any free!
PS: I don't understand why your code compile, maybe now tex_title is a global variable now! Because at first it was in main(), so not accessible from Steuerung.
Offline
I rewrote it to make sure , that only textures are freed that have been called by LoadTexture.
I made somethin like this:
#include "GRRLIB.h" #include <asndlib.h> #include <stdlib.h> #include <wiiuse/wpad.h> #include <math.h> #include <mp3player.h> #include <fat.h> #include <gccore.h> #include <gcmodplay.h> #include <gctypes.h> #include <network.h> #include <ogcsys.h> #include <samplerate.h> #include <smb.h> #include <zconf.h> #include <zlib.h> #include <fat.h> #include "title.h" #include "link_down_shield_1.h" #include "link_move_none_down1.h" #include "link_move_none_up1.h" #include "link_move_none_left1.h" #include "link_move_none_right1.h" #include "link_stand_allsides.h" #include "space.h" #include "spacerfull.h" #include "testroom.h" Mtx GXmodelView2D; typedef struct ObjektFigur{ unsigned int x; unsigned int y; unsigned int h; unsigned int w; unsigned int no; unsigned int col_w; unsigned int col_h; unsigned int col_x_offset; unsigned int col_y_offset; unsigned int anim; unsigned int anim2; unsigned int anim3; unsigned int anim4; unsigned int framesrate; unsigned int framesrate2; unsigned int framesrate3; unsigned int framesrate4; unsigned int direction1p; unsigned int ruhe; GRRLIB_texImg move_none_down1; GRRLIB_texImg move_none_left1; GRRLIB_texImg move_none_up1; GRRLIB_texImg move_none_right1; GRRLIB_texImg stand_allsides1; } ObjektFigur; ObjektFigur test[2]; ObjektFigur Einrichten(ObjektFigur link){ link.x=50; link.y=50; link.h=24; link.w=60; link.anim=10; link.anim2=10; link.anim3=10; link.anim4=10; link.framesrate=0; link.framesrate2=0; link.framesrate3=0; link.framesrate4=0; link.direction1p=0; link.ruhe=0; link.col_w=link.w*0.6; link.col_h=link.h*1; link.col_x_offset=(link.w-link.col_w)/2; link.col_y_offset=(link.h-link.col_h)/2; return link; } short int Kollision(ObjektFigur objekt1,ObjektFigur objekt2){ int left1, left2; int right1, right2; int top1, top2; int bottom1, bottom2; left1 = objekt1.x + objekt1.col_x_offset; left2 = objekt2.x + objekt2.col_x_offset; right1 = left1 + objekt1.col_w; right2 = left2 + objekt2.col_w; top1 = objekt1.y + objekt1.col_y_offset; top2 = objekt2.y + objekt1.col_y_offset; bottom1 = top1 + objekt1.col_h; bottom2 = top2 + objekt2.col_h; if (bottom1 < top2) return(0); if (top1 > bottom2) return(0); if (right1 < left2) return(0); if (left1 > right2) return(0); return(1); } ObjektFigur Steuerung(u32 wpaddown,u32 wpadheld,ObjektFigur player){ player.col_w=player.w*0.6; player.col_h=player.h*1; int i=0; int kolli=0; ObjektFigur tester; tester=player; player.col_x_offset=(player.w-player.col_w)/2; player.col_y_offset=(player.h-player.col_h)/2; if (wpadheld & WPAD_BUTTON_DOWN) { if (player.framesrate >= 4 && player.anim<19){ player.framesrate=0; player.anim+=1; } else if (player.framesrate >= 4 && player.anim >= 19){ player.framesrate=0; player.anim=10; } tester.x+=2; for (i=0;i<2;i++){ if (player.no!=test[i].no){ if(Kollision(tester,test[i])){ kolli=1; } } } player.framesrate+=1; if (kolli==0) player.x+=2; player.direction1p=1; } if (wpadheld & WPAD_BUTTON_UP) { if (player.framesrate2 >= 4 && player.anim2<19){ player.framesrate2=0; player.anim2+=1; } else if (player.framesrate2 >= 4 && player.anim2 >= 19){ player.framesrate2=0; player.anim2=10; } tester.x-=2; for (i=0;i<2;i++){ if (player.no!=test[i].no){ if(Kollision(tester,test[i])){ kolli=1; } } } player.framesrate2+=1; if (kolli==0) player.x-=2; player.direction1p=0; } if (wpadheld & WPAD_BUTTON_RIGHT) { if (player.framesrate3 >= 4 && player.anim3<19){ player.framesrate3=0; player.anim3+=1; } else if (player.framesrate3 >= 4 && player.anim3 >= 19){ player.framesrate3=0; player.anim3=10; } tester.y-=2; for (i=0;i<2;i++){ if (player.no!=test[i].no){ if(Kollision(tester,test[i])){ kolli=1; } } } player.framesrate3+=1; if (kolli==0) player.y-=2; player.direction1p=2; } if (wpadheld & WPAD_BUTTON_LEFT) { if (player.framesrate4 >= 4 && player.anim4<19){ player.anim4+=1; player.framesrate4=0; } else if (player.framesrate4 >= 4 && player.anim4 >= 19){ player.anim4=10; player.framesrate4=0; } tester.y+=2; for (i=0;i<2;i++){ if (player.no!=test[i].no){ if(Kollision(tester,test[i])){ kolli=1; } } } player.framesrate4+=1; if (kolli==0) player.y+=2; player.direction1p=3; } if(!(wpadheld & WPAD_BUTTON_DOWN) && !(wpadheld & WPAD_BUTTON_UP) && !(wpadheld & WPAD_BUTTON_LEFT) && !(wpadheld & WPAD_BUTTON_RIGHT)){ player.ruhe=1; } else { player.ruhe=0; } if (player.ruhe==1 && player.direction1p==1) GRRLIB_DrawTile(player.x,player.y,player.stand_allsides1,0,2,2,0xFFFFFFFF,13); if (player.ruhe==1 && player.direction1p==0) GRRLIB_DrawTile(player.x,player.y,player.stand_allsides1,0,2,2,0xFFFFFFFF,12); if (player.ruhe==1 && player.direction1p==3) GRRLIB_DrawTile(player.x,player.y,player.stand_allsides1,0,2,2,0xFFFFFFFF,10); if (player.ruhe==1 && player.direction1p==2) GRRLIB_DrawTile(player.x,player.y,player.stand_allsides1,0,2,2,0xFFFFFFFF,11); if (player.ruhe==1 && player.direction1p==1) GRRLIB_DrawTile(player.x,player.y-24,player.stand_allsides1,0,2,2,0xFFFFFFFF,3); if (player.ruhe==1 && player.direction1p==0) GRRLIB_DrawTile(player.x,player.y-24,player.stand_allsides1,0,2,2,0xFFFFFFFF,2); if (player.ruhe==1 && player.direction1p==3) GRRLIB_DrawTile(player.x,player.y-24,player.stand_allsides1,0,2,2,0xFFFFFFFF,0); if (player.ruhe==1 && player.direction1p==2) GRRLIB_DrawTile(player.x,player.y-24,player.stand_allsides1,0,2,2,0xFFFFFFFF,1); if (player.ruhe==0 && player.direction1p==0) GRRLIB_DrawTile(player.x,player.y,player.move_none_left1,0,2,2,0xFFFFFFFF,player.anim2); if (player.ruhe==0 && player.direction1p==1) GRRLIB_DrawTile(player.x,player.y,player.move_none_right1,0,2,2,0xFFFFFFFF,player.anim); if (player.ruhe==0 && player.direction1p==2) GRRLIB_DrawTile(player.x,player.y,player.move_none_up1,0,2,2,0xFFFFFFFF,player.anim3); if (player.ruhe==0 && player.direction1p==3) GRRLIB_DrawTile(player.x,player.y,player.move_none_down1,0,2,2,0xFFFFFFFF,player.anim4); if (player.ruhe==0 && player.direction1p==0) GRRLIB_DrawTile(player.x,player.y-24,player.move_none_left1,0,2,2,0xFFFFFFFF,player.anim2-10); if (player.ruhe==0 && player.direction1p==1) GRRLIB_DrawTile(player.x,player.y-24,player.move_none_right1,0,2,2,0xFFFFFFFF,player.anim-10); if (player.ruhe==0 && player.direction1p==2) GRRLIB_DrawTile(player.x,player.y-24,player.move_none_up1,0,2,2,0xFFFFFFFF,player.anim3-10); if (player.ruhe==0 && player.direction1p==3) GRRLIB_DrawTile(player.x,player.y-24,player.move_none_down1,0,2,2,0xFFFFFFFF,player.anim4-10); return player; } int main() { float rot=0; int i=0; GRRLIB_texImg tex_move_none_down1 = GRRLIB_LoadTexture(link_move_none_down1); GRRLIB_texImg tex_move_none_left1 = GRRLIB_LoadTexture(link_move_none_left1); GRRLIB_texImg tex_move_none_up1 = GRRLIB_LoadTexture(link_move_none_up1); GRRLIB_texImg tex_move_none_right1 = GRRLIB_LoadTexture(link_move_none_right1); GRRLIB_texImg tex_stand_allsides1 = GRRLIB_LoadTexture(link_stand_allsides); // Erstellen der Spieler ObjektFigur player1; player1=Einrichten(player1); player1.move_none_down1=tex_move_none_down1; player1.move_none_left1=tex_move_none_left1; player1.move_none_up1=tex_move_none_up1; player1.move_none_right1=tex_move_none_right1; player1.stand_allsides1=tex_stand_allsides1; player1.move_none_down1.tilew=30; player1.move_none_down1.tileh=12; player1.move_none_down1.nbtilew=10; player1.move_none_down1.nbtileh=2; player1.move_none_down1.tilestart=0; player1.move_none_left1.tilew=30; player1.move_none_left1.tileh=12; player1.move_none_left1.nbtilew=10; player1.move_none_left1.nbtileh=2; player1.move_none_left1.tilestart=0; player1.move_none_up1.tilew=30; player1.move_none_up1.tileh=12; player1.move_none_up1.nbtilew=10; player1.move_none_up1.nbtileh=2; player1.move_none_up1.tilestart=0; player1.move_none_right1.tilew=30; player1.move_none_right1.tileh=12; player1.move_none_right1.nbtilew=10; player1.move_none_right1.nbtileh=2; player1.move_none_right1.tilestart=0; player1.stand_allsides1.tilew=30; player1.stand_allsides1.tileh=12; player1.stand_allsides1.nbtilew=10; player1.stand_allsides1.nbtileh=2; player1.stand_allsides1.tilestart=0; ObjektFigur player2; player2=Einrichten(player2); player2.move_none_down1=tex_move_none_down1; player2.move_none_left1=tex_move_none_left1; player2.move_none_up1=tex_move_none_up1; player2.move_none_right1=tex_move_none_right1; player2.stand_allsides1=tex_stand_allsides1; player2.move_none_down1.tilew=30; player2.move_none_down1.tileh=12; player2.move_none_down1.nbtilew=10; player2.move_none_down1.nbtileh=2; player2.move_none_down1.tilestart=0; player2.move_none_left1.tilew=30; player2.move_none_left1.tileh=12; player2.move_none_left1.nbtilew=10; player2.move_none_left1.nbtileh=2; player2.move_none_left1.tilestart=0; player2.move_none_up1.tilew=30; player2.move_none_up1.tileh=12; player2.move_none_up1.nbtilew=10; player2.move_none_up1.nbtileh=2; player2.move_none_up1.tilestart=0; player2.move_none_right1.tilew=30; player2.move_none_right1.tileh=12; player2.move_none_right1.nbtilew=10; player2.move_none_right1.nbtileh=2; player2.move_none_right1.tilestart=0; player2.stand_allsides1.tilew=30; player2.stand_allsides1.tileh=12; player2.stand_allsides1.nbtilew=10; player2.stand_allsides1.nbtileh=2; player2.stand_allsides1.tilestart=0; player2.x=200; // //Eintragen der Spieler in die Array test[0]=player1; test[1]=player2; // // Laden der Grafiken GRRLIB_texImg tex_title = GRRLIB_LoadTexture(title); GRRLIB_texImg tex_testroom = GRRLIB_LoadTexture(testroom); GRRLIB_texImg tex_link_down_shield_1 = GRRLIB_LoadTexture(link_down_shield_1); //extern (unabhängig vom Objekt) // Nummerierung der Array-Einträge for (i=0;i<sizeof(test);i++){ test[i].no=i; } // //Video Init VIDEO_Init(); GRRLIB_Init(); WPAD_Init(); // while(1) { // Steuerungsinit WPAD_ScanPads(); u32 wpaddown1 = WPAD_ButtonsDown(0); u32 wpadheld1 = WPAD_ButtonsHeld(0); u32 wpaddown2 = WPAD_ButtonsDown(1); u32 wpadheld2 = WPAD_ButtonsHeld(1); // // Bildschirm grafisch gestalten GRRLIB_FillScreen(0xFFFFFFFF); GRRLIB_DrawImg(0,0, tex_title, rot, 1, 1, 0xFFFFFFFF); GRRLIB_DrawImg(0,0, tex_testroom, rot, 1, 1, 0xFFFFFFFF); // // Kleine Kollisionstester if (Kollision(player1,player2)){ GRRLIB_DrawImg(400,350, tex_link_down_shield_1, rot, 2, 2, 0xFFFFFFFF);} // // Aufrufen der Spieler und Neuverfassung im Array player1=Steuerung(wpaddown1,wpadheld1,player1); test[0]=player1; player2=Steuerung(wpaddown2,wpadheld2,player2); test[1]=player2; if (wpadheld1 & WPAD_BUTTON_HOME) { exit(0); } // Bildausgabe GRRLIB_Render(); } GRRLIB_Exit(); free(tex_title.data); free(tex_link_down_shield_1.data); free(tex_testroom.data); free(tex_move_none_down1.data); free(tex_move_none_up1.data); free(tex_move_none_right1.data); free(tex_move_none_left1.data); free(tex_stand_allsides1.data); return 0; }
But i still get the same error >.>
Offline
Instead of this:
GRRLIB_Exit(); free(tex_title.data); free(tex_link_down_shield_1.data); free(tex_testroom.data); free(tex_move_none_down1.data); free(tex_move_none_up1.data); free(tex_move_none_right1.data); free(tex_move_none_left1.data); free(tex_stand_allsides1.data); return 0; }
Try this:
GRRLIB_Stop(); exit(0); return 0; }
If it doesn't work, check your GRRLIB.c and .h for the following functions:
GRRLIB.c
void GRRLIB_Stop() { GX_AbortFrame(); GX_Flush(); free(MEM_K1_TO_K0(xfb[0])); xfb[0] = NULL; free(MEM_K1_TO_K0(xfb[1])); xfb[1] = NULL; free(gp_fifo); gp_fifo = NULL; }
GRRLIB.h
void GRRLIB_Stop();
Last edited by RazorChrist (2009-04-10 17:20:42)
Offline
Doesn´t work either.
GRRLIB_stop hasn´t been in the files , so i copied it in.
But it seems like GRRLIB_Stop and GRRLIB_Exit are pretty much the same?
Guess i have to rewrite the programm
Offline
Weird. I don't use GRRLIB_Exit(), don't think it's even in my GRRLIB files, then again, I modified mine from the original. As for GRRLIB_Stop(), that's what I use in my game, and it works fine for me, so I'm not sure why it's not working for you.
Offline