Antwort schreiben  Thema schreiben 
Verfasser Nachricht
Fly Destination
Durchstarter
**


Beiträge: 99
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 47
Beitrag: #1
xPSP  Eine Frage zu sceKernelExitGame()

Hallo, ich hätte mal eine kurze Frage. Wenn ich folgenden Code kompiliere und ausführe, klappt es perfekt. Wenn man die X-Taste drückt, beendet sich das Homebrew und kehrt zurück ins XMB:

Code:
int main()
{
    pspDebugScreenInit();
    SetupCallbacks();

    printf("Hello World by Fly Destination\n");

    SceCtrlData pad;

    while(1)
    {
        sceCtrlReadBufferPositive(&pad, 1);

    if (pad.Buttons & PSP_CTRL_CROSS) {
    pspDebugScreenClear();
    printf("Exiting\n");
    printf("Please Wait...");
    sceKernelExitGame();
    }
    }

    sceKernelSleepThread();
    return 0;
}


Aber wieso klappt es nur, wenn man das while(1) davor setzt? Wenn man den Code so schreiben würde, würde das Homebrew zwar starten, aber wenn man X drückt, würde es sich nicht beenden:

Code:
int main()
{
    pspDebugScreenInit();
    SetupCallbacks();

    printf("Hello World by Fly Destination\n");

    SceCtrlData pad;
        sceCtrlReadBufferPositive(&pad, 1);

    if (pad.Buttons & PSP_CTRL_CROSS) {
    pspDebugScreenClear();
    printf("Exiting\n");
    printf("Please Wait...");
    sceKernelExitGame();
    }

    sceKernelSleepThread();
    return 0;
}


Wieso? Ergibt doch Sinn? Falls die X-Taste gedrückt ist, beende das Spiel...
Aber wieso geht es nicht, wieso muss man das in eine while Schleife packen?

Fly Destination

19.01.2011 16:45
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Ceikor
Ex-Developer
****


Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008

Status: Abwesend
Danke erhalten: 701
Beitrag: #2
RE: Eine Frage zu sceKernelExitGame()

Aus dem ganz einfachen grund, es ist nicht LUA was standartmässig in einer schleife läuft.
C arbeitet von oben bis unten durch.
Wird x nicht beim abarbeiten gedrückt ist die bedingung "nicht wahr" und wird überstrungen, würdest du C verstehen hättest du es dir selbst beantworten können Wink

Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2011 17:02 von Ceikor.

19.01.2011 16:56
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Fly Destination (Jan-19-2011)
_Kai_
be linux
**


Beiträge: 2.680
Gruppe: Programmierung
Registriert seit: Nov 2009

Status: Abwesend
Danke erhalten: 2809
Beitrag: #3
xPSP  RE: Eine Frage zu sceKernelExitGame()

Wenn du die X Taste schon beim Starten der EBOOT gedrückt hältst funktioniert es bestimmt. Er liest den Tastenbuffer halt nur ein mal ganz kurz aus und springt dann zu sceKernelSleepThread().

Eine While Schleife dagegen würde sich immer wiederholen bis du sie durch break oder sonstwas beendest.


PSVita mit 16gb Memorystick und PlayStation+
+ Uncharted + Army Corps of Hell + Assassins Creed
+ NFS Most Wanted + COD Black Ops + Resistance
+ Everybodys Golf + Modnation Racers
Für PSN ID => PN
19.01.2011 17:16
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Fly Destination (Jan-19-2011)
~ferra~
Experte
****


Beiträge: 583
Gruppe: User
Registriert seit: Apr 2010

Status: Offline
Danke erhalten: 461
Beitrag: #4
xPSP  RE: Eine Frage zu sceKernelExitGame()

Der gesammte Code innerhalb der Main-Funktion wird einmal durchlaufen.

Daher funktioniert dein Code oben, weil da eine Schleife vorhanden ist. Daher überprüft die PSP permanent ob die Taste gedrückt ist oder nicht.

Unten fehlt die Schleife. Daher wird dein gesamter Code innerhalb von Bruchteilen durchgearbeitet und auch nur einmal (!). Innerhalb dieser Zeit wirst du die Taste nicht gedrückt bekommen.

MfG ferra


~~> Ist ein im Marktplatz verifizierter Verkäufer. <~~
Nulleinspeisung - openDTU Hoymiles SolarZero
19.01.2011 17:35
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Fly Destination (Jan-19-2011)
Ceikor
Ex-Developer
****


Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008

Status: Abwesend
Danke erhalten: 701
Beitrag: #5
RE: Eine Frage zu sceKernelExitGame()

Mal ehrlich warum schreiben hier noch 2 weiter laute rein? Er sollte ertsmal C/C++ lernen und verstehen ansonsten wird das sowieso nichts. Das ist eigentlich das erste was man lernt bei C und wenn das noch nichtmal vorhanden ist wird alles weitere absolut nichts und wenn dann nur C/P und hoffen das es geht.

Sry Fly Destination aber lerne wirklich erstmal C/C++ und dann fang mit der PSP an.

19.01.2011 17:56
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Fly Destination
Durchstarter
**


Beiträge: 99
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 47
Beitrag: #6
xPSP  RE: Eine Frage zu sceKernelExitGame()

Ich kann C Rolleyes
Und ich weiß auch wofür eine while Schleife gut ist, nur war mir unklar wieso denn das mit den Tastenfunktionen in die while-Schleife muss. Ich meine, dass printf ist ja auch nicht in der while schleife und wird trotzdem die ganze Zeit angezeigt. Laut euch müsste es der Text in printf() nur kurz angezeigt werden, und dann sofort wieder verschwinden. Aber danke für die guten Erklärungen Wink

Fly Destination

19.01.2011 19:31
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #7
xPSP  RE: Eine Frage zu sceKernelExitGame()

Fly Destination :
Ich kann C Rolleyes
Und ich weiß auch wofür eine while Schleife gut ist, nur war mir unklar wieso denn das mit den Tastenfunktionen in die while-Schleife muss. Ich meine, dass printf ist ja auch nicht in der while schleife und wird trotzdem die ganze Zeit angezeigt. Laut euch müsste es der Text in printf() nur kurz angezeigt werden, und dann sofort wieder verschwinden. Aber danke für die guten Erklärungen Wink

Fly Destination


Dank dem sceKernelSleepThread wird dein main Thread einfach gestoppt... dass heißt Bildschirmausgabe bleibt gleich, andere Threads (bsp.: der Exit-Thread) laufen weiter, aber von deiner main wird kein Code mehr ausgeführt.

19.01.2011 19:56
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Fly Destination (Jan-19-2011)
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xGames [LUA] eine frage zu dofile SIM sk 5 1.760 16.10.2012 20:47
Letzter Beitrag: SIM sk
xPSP Mal eine Frage Total King 8 1.895 08.06.2011 13:21
Letzter Beitrag: HacKmaN
xPSP Eine Frage zu c++ prinzjo 7 1.637 13.03.2011 19:34
Letzter Beitrag: PSP_Lord
xPSP PSP homebrew !Eine frage Shikaza 18 4.539 15.05.2009 22:02
Letzter Beitrag: Shikaza

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang