KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Darstellungsfehler von eigenem Spiel
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich entwickel derzeit mein erstes eigenes PSP-Spiel. Es handelt sich um ein einfaches Ping-Pong.

Der Code basiert auf diesem Tutorial:
http://www.psp-programming.com/code/doku.php?id=cTonguespgu-neheport-lesson1

Der Code und der Hauptcode von meinem Spiel funktionieren ausgezichnet, nur wenn ich in der Haupschleife eine einfache If-Abfrage für die Kollision des zweiten Schlägers schreibe entsteht folgender Fehler:

Das PingPong Fenster bedeckt nur das Viertel links oben und alle Poligone (Schläger, Ball) werden in falschen Faben angezeigt und sind Tranzperent.
Rechts davon wird das selbe Spielfenster ein 2tes mal angezeigt.

Wenn ich teile der IF-Abfrage Auskommentiere, wird das Spielfeld wieder richtig auf dem ganzen Bildschirm angezeigt.

Der Fehler ist komisch, weil ich NICHTS an den OpenGL oder sonstigen Grafikeinstellungen ändere, nur am Physikcode.

Ich verwende das PSP Toolkit wie es bei PSPKing.de erklärt wird und verwende eine PSP 1004 (PHAT) mit CFW 5.00 M-33-6

Ich hoffe ich bekomme hier schnell Hilfe.

NewDev2010

NewDev2010 :
Hallo!

Ich entwickel derzeit mein erstes eigenes PSP-Spiel. Es handelt sich um ein einfaches Ping-Pong.

Der Code basiert auf diesem Tutorial:
http://www.psp-programming.com/code/doku.php?id=cTonguespgu-neheport-lesson1

Der Code und der Hauptcode von meinem Spiel funktionieren ausgezichnet, nur wenn ich in der Haupschleife eine einfache If-Abfrage für die Kollision des zweiten Schlägers schreibe entsteht folgender Fehler:

Das PingPong Fenster bedeckt nur das Viertel links oben und alle Poligone (Schläger, Ball) werden in falschen Faben angezeigt und sind Tranzperent.
Rechts davon wird das selbe Spielfenster ein 2tes mal angezeigt.

Wenn ich teile der IF-Abfrage Auskommentiere, wird das Spielfeld wieder richtig auf dem ganzen Bildschirm angezeigt.

Der Fehler ist komisch, weil ich NICHTS an den OpenGL oder sonstigen Grafikeinstellungen ändere, nur am Physikcode.

Ich verwende das PSP Toolkit wie es bei PSPKing.de erklärt wird und verwende eine PSP 1004 (PHAT) mit CFW 5.00 M-33-6

Ich hoffe ich bekomme hier schnell Hilfe.

NewDev2010


Meine Glaskugel ist leider in der Reperatur, daher kann ich leider nicht nachlesen, welchen Code du implementiert hast...

MfG ferra

Hi,

das selbe Phänomeen habe ich öfter bei meinen HB's gehabt....
So wie ich das sehe gibt es 2 Fehlerquellen:

1. Du hast einen Speicherüberlauf bzw. fehlerhafte Speicherzugriffe die erst durch dir zusätzlichen Befehle in deinem Code sichtbar werden...prüfe sehr genau ob du irgendwo ggfls. zu wenig speicher allokierst...

2. Ich habe die Vermutung dass bei kleinen Codes das Speicher-Allignment beim Compilieren nicht korrekt ausgerichtet ist...bei mir hat da manchmal irgendwo im Code ein einfache definition eines Interger + Wertzuweisung geholfen...war das drin, allec chick...war das draußen, der von dir beschriebene fehler...

auf ps2dev.org im PSP Forum hat das auch schonmal einer gepostet und da hatte man auch keine wirkliche idee :o)

Wenn deine HB irgendwann größer wird und damit das Speicheralignment der pbp bzw. prx nicht mehr so schnell scheifläuft taucht dieses Problem kaum noch auf....
Juhuu^^

Es geht jetzt, als Lösung habe ich

dList = memalign( 16, 640 );

auf

dList = memalign( 32, 640 );

Fals es da nebenwirkungen geben kann, bitte ich dies zu schreiben.
Ist zwar sicher ein Anfängerfehler, aber jetzt gehts endlich

Ansonsten Danke!!
Hi,

eine auf 16Bit ausgerichtete Displaylist für die GU ist ausreichend...ich nahme mal an das dList deine DisplayList sein soll....wenn dem so ist, dann sind 640 bytes aber definitiv zu wenig....du solltest schon ein paar mehr Bytes in die display list investieren, damit die GU genügend platz hat alle deine Grafikbefehle in die Liste zu bekommen....

Meine Display-List ist z.Bsp. fast 400kb groß um auch Vertex-Daten mit aufnehmen zu können (über sceGuGetMemory()):

PHP-Code:
static unsigned int __attribute__((aligned(16))) list[462144]; 

Referenz-URLs