14.10.2011, 10:17
Heyho,
Ich programmiere momentan an einem kleinen Homebrew.
Ich habe mir eine Sprites Engine programmiert, die Sprites, etc. Für mich verwaltet, zeichnet, etc.
Allerdings habe ich ein Problem. In einer Funktion (Zum Laden von Grafiken) gibt es momentan Probleme.
Wenn ich die Datei "gfx/raumschiff.png" lade mit höhexbreite = 64x64 geht alles ohne Probleme.
Wenn ich jetzt aber die Datei "gfx/Hintergrund.png" lade mit höhexbreite = 480x272 stürzt das Programm bei dem malloc() für die Variable Images ab.
Hier die Funktion:
Ich programmiere momentan an einem kleinen Homebrew.
Ich habe mir eine Sprites Engine programmiert, die Sprites, etc. Für mich verwaltet, zeichnet, etc.
Allerdings habe ich ein Problem. In einer Funktion (Zum Laden von Grafiken) gibt es momentan Probleme.
Wenn ich die Datei "gfx/raumschiff.png" lade mit höhexbreite = 64x64 geht alles ohne Probleme.
Wenn ich jetzt aber die Datei "gfx/Hintergrund.png" lade mit höhexbreite = 480x272 stürzt das Programm bei dem malloc() für die Variable Images ab.
Hier die Funktion:
Code:
int loadSpriteImage(char* filename, int width, int height)
{
// New Code:
backUpImages = malloc(sizeof(struct SpriteImage) * imagesLoaded);
int i;
for(i = 0; i < imagesLoaded; i++)
{
backUpImages[i] = Images[i];
}
Images = malloc(sizeof(struct SpriteImage) * (imagesLoaded + 1)); // Hier hängt es
Images[imagesLoaded].size.x = width;
Images[imagesLoaded].size.y = height;
Images[imagesLoaded].theImage = loadImage(filename);
for(i = 0; i < imagesLoaded; i++)
{
Images[i] = backUpImages[i];
}
free(backUpImages);
imagesLoaded++;
return imagesLoaded+1;
}
Hier noch die Deklarationen der Variablen.
Code:
struct SpriteImage {
struct Vector2 size;
Image* theImage;
};
int imagesLoaded;
struct SpriteImage* Images;
struct SpriteImage* backUpImages;
Ich habe auch schon mit pspDebugScreenPrintf() versucht möglichst viele Infos zu sammeln. Alle Werte sind korrekt, aber wenn der filename = "gfx/Hintergrund.png" ist ist ende, dann freezed die PSP. Es werden beim ersten Aufruf genau 12Byte Allocated, beim zweiten 24, etc. habe ich alles schon getestet.
Hat jemand evtl. einen Tipp für mich?