Antwort schreiben  Thema schreiben 
Verfasser Nachricht
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #1
xPSP  [TUT] PSP Hello World in C

Hallo Community,

ich habe mich mal entschieden ein Hello World TuT für die kleinen PSP Devs zu machen Wink
Hab es versuch so Anfänger freundlich wie möglich zu machen aber ihr solltet eine Gewisse C/C++ Kenntnis haben wenn ihr mit der PSP anfangen wollt Wink
Ihr brauch dazu ein normalen Editor (ich benutze immer Dev-C++) und ein PSP SDK sucht euch bei Google eins aus Wink


Als erstes werden wir die Header-Dateien mit
"#include < ... >"
bestimmen. Was Header sind solltet ihr wissen ansonsten schnell weg Wink

So wir werden 2 Header-Dateien verwenden:

Die erste ist "pspkernel.h" diese enthält alle spezifischen Codes der PSP, ohne sie würde unser Programm nicht gehen.
Die nächste Header-Datei ist "pspdebug.h" sie enthält nützliche Funktionen zur Fehlerbeseitigung.

Also fügen wir nun folgendes ein:

PHP-Code:
#include <pspkernel.h>
#include <pspdebug.h> 


Nun werden wir der PSP etwas über das Programm sagen, dies ist nötig, also bitte nicht vergessen Wink. Das was in den Anführungsstrichen steht " ... " ist der Name (aber nicht der, der im XMB angezeit wird).

So fügt nun das ein :

PSP_MODULE_INFO("Hello World", 0,1,1);




So da der Befehl bei der PSP für die Textausgabe "pspDebugScreenPrintf" heißt aber wir das nicht immer schreiben wollen werde wir den Befehl umbenennen in printf (wie man es ja schon vom C für den PC gewöhnt ist).
Der Compiler nimmt also printf als pspDebugScreenprintf auf.
Also definieren wir "printf" durch "pspDebugScreenPrintf" so:

#define printf pspDebugScreenPrintf



Nun der folgende Code ist um einiges Komplizierter aber ihr müsst ihn auch nicht verstehen dennoch werde ich euch ein bisschen erklären.
Dieser Code enthält Funktionen, die in unserem Programm aufgerufen werden. Durch den Code können wir die PSP-Software über die Home-Taste verlassen. Schreibt nun das in eure main.c :

---------------------------------------------------------------------------------------------------

PHP-Code:
/* Exit callback */
int exit_callback(int arg1int arg2void *common) {
sceKernelExitGame();
return 
0;
}

/* Callback thread */
int CallbackThread(SceSize argsvoid *argp) {
int cbid;

cbid sceKernelCreateCallback("Exit Callback"exit_callbackNULL);
sceKernelRegisterExitCallback(cbid);

sceKernelSleepThreadCB();

return 
0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
int thid 0;

thid sceKernelCreateThread("update_thread"CallbackThread0x110xFA000);
if(
thid >= 0) {
sceKernelStartThread(thid00);
}

return 
thid;

---------------------------------------------------------------------------------------------------



So das sollte jeder wissen:

------------------------------

int main() {


------------------------------

So nun werden wir zwei Funktionen mit dazu nehmen und zwar
pspDebugScreenInit() erlaubt uns etwas auf dem Bildschirm auszugeben .
und
SetupCallbacks() erlaubt uns mit der Home-Taste zurück ins XMB zu kommen (ein Callback).

Also schreibt nun das in eure main.c :

----------------------------------------

pspDebugScreenInit();
SetupCallbacks();

----------------------------------------


Erinnert ihr euch noch daran das wir ganz oben pspDebugScreenPrintf in printf umbenannt haben, deswegen können wir nun einfach printf für die Textausgabe verwenden Wink
Der Text der in Anführungsstrichen (" .... ") steht, ist der Text der auf dem PSP Bildschirm ausgegeben wird.

Also übernehmt das in eure main.c :

----------------------------------------------

printf("Hello World\n");

-----------------------------------------------

So nun versetzten wird das Programm noch in einen Pause Modus, weil ohne die Funktion würde das Hello World noch nicht mal 1 sek angezeigt werden und das wollen wir ja nicht.
Also benutzen wir dazu:

----------------------------------------------

sceKernelSleepThread();

Übernehmt das auch in eure main.c

----------------------------------------------

Sollte man verstehen Wink

-----------------------------------------------

return 0;

-----------------------------------------------

Nun noch ein } um die Main Funktion zu beenden:

-----------------------------------------------

}


-----------------------------------------------

So nun hab ihr eure main.c fertig jetzt kommen wir zum Makefile Wink

---------------------------------------------------------------------------------------------------

So nun das Makefile, dass macht nicht anderes als dem Compiler zu sagen wie wir die main.c Kompiliert haben wollen und sagt auch das der Compiler die main.c in ein EBOOT.PBP machen soll :

--------------------------------------------------

Code:
TARGET = hello
OBJS = main.o

CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Hello World

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak


--------------------------------------------------

( PSP_EBOOT_TITLE = Hello World ) sagt dem Compiler wie der EBOOT.PBP ( im XMB der PSP ) heißen soll.

So das wars jetzt müsst ihr das alles nur noch mit dem PSPSDK Kompilieren und fertig ist euer erstes PSP Programm.
Ich wünsch euch noch viel Spaß bei rum probieren Wink


Ganzer Code von der main.c (anzeigen)

Das Makefile darf keine Endung haben also darf nicht .txt oder haben.
Macht einfach beim Texteditor Speicher unter den Dateityp auf "Alle Dateien" Und nennt es: Makefile. so habt ihr ein Makefile ohne Datei Endung Wink

Noch was die main.c und das Makefile müssen im selben Ordner liegen Wink

PS: Danke an PSP_Lord er hat mich in 2 kleinen Dingen verbessert Big Grin

Hoffe es hat euch gefallen Big Grin


mfg

stehn


West Zeit / Westside

Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2011 13:15 von dark-awesome.

03.03.2011 13:00
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
M.J96 (Jan-22-2012), ~Hook~ (Jul-31-2011), secret (Jul-27-2011), Storm (Apr-27-2011), davdda (Mar-10-2011), BambiMään (Mar-10-2011), xXPizzaNinjaXx (Mar-6-2011), Cha0z (Mar-4-2011)
3m!n
Legende
*****


Beiträge: 1.652
Gruppe: User
Registriert seit: Aug 2010

Status: Offline
Danke erhalten: 951
Beitrag: #2
RE: [TUT] PSP Hello World in C

Gutes Tutorial,
Leicht verstendlich,
nur eins ist komisch:
Wieso hast du die ganzen codes nicht auhc in ne Codebox gesteckt ?

mfg

03.03.2011 13:10
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #3
xPSP  RE: [TUT] PSP Hello World in C

EmInK123 :
Gutes Tutorial,
Leicht verstendlich,
nur eins ist komisch:
Wieso hast du die ganzen codes nicht auhc in ne Codebox gesteckt ?

mfg


Weil ich die immer so mit Farbe mache kenne das halt so Big Grin


West Zeit / Westside

Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2011 13:21 von dark-awesome.

03.03.2011 13:13
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
-blue7
/dev/null/


Beiträge: 1.926
Gruppe: Mod a.D.
Registriert seit: May 2009

Status: Abwesend
Danke erhalten: 1768
Beitrag: #4
xPSP  RE: [TUT] PSP Hello World in C

stehn :
So da der Befehl bei der PSP für die Textausgabe "pspDebugScreenPrintf" heißt aber wir das nicht immer schreiben wollen werde wir den Befehl umbenennen in printf (wie man es ja schon vom C für den PC gewöhnt ist).
Der Compiler nimmt also printf als pspDebugScreenprintf auf.
Also definieren wir "printf" durch "pspDebugScreenPrintf" so:

#define printf pspDebugScreenPrintf

Falsch, was du da postest! Der Compiler nimmt weder printf als pspDebugScreenprintf auf, noch wird hier irgendein Befehl umbenannt! Schonmal was von Präprozessor gelesen? Anscheinend nicht, lern' erstmal die Grundlagen Wink



[Ex-Moderator] ; [Ubuntu-User] ; [Designer] ; [Coder] ;
running out of bugs`.
___________________________________________
#define TRUE FALSE // Happy debugging suckers
// sometimes I believe gcc ignores all my comments
06.03.2011 13:20
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
mayatuka (Aug-17-2011), Namenloser (Mar-10-2011), dark-awesome (Mar-7-2011), sike0ne (Mar-6-2011)
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #5
RE: [TUT] PSP Hello World in C

Oha mach mal halb lang das hab ich so gelernt -.-
Also muss ich mich halt noch mal Informieren und komisch das bei jeden TuT nur negative kommt -.-

Ich habe das nun so gelernt wenn man das macht der Kompiler dann jedes mal bei printf die Funktion pspDebugScreenPrintf nimmt also sorry muss ich halt noch mal im Inet mich schlau machen.


West Zeit / Westside

07.03.2011 16:21
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Italia-boy
King
*


Beiträge: 2.834
Gruppe: User
Registriert seit: Oct 2010

Status: Offline
Danke erhalten: 1161
Beitrag: #6
xPSP  RE: [TUT] PSP Hello World in C

stehn :
Oha mach mal halb lang das hab ich so gelernt -.-
Also muss ich mich halt noch mal Informieren und komisch das bei jeden TuT nur negative kommt -.-

Ich habe das nun so gelernt wenn man das macht der Kompiler dann jedes mal bei printf die Funktion pspDebugScreenPrintf nimmt also sorry muss ich halt noch mal im Inet mich schlau machen.


Da muss ich dir schon irgendwie rechtgeben. Bei jedem TuT was schlechtes.
Aber Danke jetzt weiß ich was de PSP für befehle braucht.

PS: Ich will noch nicht mit der PSP anfangen ich mach erstmal für den PC weiter. War halt nur meine neugier Big Grin


Xbox - Fanboy ^^

07.03.2011 16:26
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
dark-awesome (Mar-7-2011)
-blue7
/dev/null/


Beiträge: 1.926
Gruppe: Mod a.D.
Registriert seit: May 2009

Status: Abwesend
Danke erhalten: 1768
Beitrag: #7
xPSP  RE: [TUT] PSP Hello World in C

@stehn
Wir wollen dich hier doch nicht fertig machen. Es gibt genug Hello World Tutorials für die PSP im Netz, jetzt hast du auch noch eins gemacht. Gut, jeder erklärt es vielleicht etwas anders, aber im Endeffekt kommt's auf's selbe hinaus.
Sieh's als Kritik, jeder hat mal klein angefangen. Außerdem will ich nicht, dass du was falsches lernst, deswegen hier noch etwas produktives.
http://www.mikrocontroller.net/articles/C-Pr%C3%A4prozessor
Da ist es sehr gut erklärt Wink
Lg



[Ex-Moderator] ; [Ubuntu-User] ; [Designer] ; [Coder] ;
running out of bugs`.
___________________________________________
#define TRUE FALSE // Happy debugging suckers
// sometimes I believe gcc ignores all my comments
10.03.2011 20:04
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Namenloser (Mar-10-2011), dark-awesome (Mar-10-2011)
BambiMään
Profi
****


Beiträge: 402
Gruppe: User
Registriert seit: Nov 2010

Status: Offline
Danke erhalten: 88
Beitrag: #8
xPSP  RE: [TUT] PSP Hello World in C

Wo gibt es Tutorials für PSP C?
Also mit diesen Modulen?
Oder gibt es irgendwo eine Beschreibung für die Header Dateien?

@stehn

Werde ich vielleicht mal ausprobieren.
Aber die IDE einzurichten kakt mich gerade an...


PSP: Brite
DC: 8D
FW: 6.39 ME/PRO/TN

Danke an TN, HacKmaN, Neur0n, Coldbird & Virtuos Flame!

Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2011 20:20 von BambiMään.

10.03.2011 20:20
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
_Kai_
be linux
**


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

Status: Abwesend
Danke erhalten: 2809
Beitrag: #9
xPSP  RE: [TUT] PSP Hello World in C

BambiMään :
Wo gibt es Tutorials für PSP C?
Also mit diesen Modulen?
Oder gibt es irgendwo eine Beschreibung für die Header Dateien?


http://psp.jim.sh/pspsdk-doc/
Hier haste ne Doku.


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
10.03.2011 20:30
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
dark-awesome (Mar-10-2011)
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #10
RE: [TUT] PSP Hello World in C

PSP-Hilfe :

BambiMään :
Wo gibt es Tutorials für PSP C?
Also mit diesen Modulen?
Oder gibt es irgendwo eine Beschreibung für die Header Dateien?


http://psp.jim.sh/pspsdk-doc/
Hier haste ne Doku.



Das ist auch Normalerweise beim PSP SDK dabei Wink


West Zeit / Westside

Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2011 20:33 von dark-awesome.

10.03.2011 20:32
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gruschi
Legende
*****


Beiträge: 1.301
Gruppe: User
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 447
Beitrag: #11
RE: [TUT] PSP Hello World in C

was bewirkt das "\n" hinter der ausgabe hello world?

16.08.2011 17:12
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
_Kai_
be linux
**


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

Status: Abwesend
Danke erhalten: 2809
Beitrag: #12
xPSP  RE: [TUT] PSP Hello World in C

gruschi :
was bewirkt das "\n" hinter der ausgabe hello world?


Zeilenumbruch Wink


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
16.08.2011 17:25
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP [TUT] PSPSDK unter Ubuntu installieren + Hello World kompilieren -blue7 82 36.316 02.08.2011 20:18
Letzter Beitrag: Neutrosider
xPSP [TuT] Hello World in D ! 3m!n 9 4.575 09.04.2011 08:15
Letzter Beitrag: HyBriDo
xPSP [TuT, Update] Hello World in C Unbekannt 5 3.550 15.12.2010 18:40
Letzter Beitrag: pspbricker
xPSP [TuT] Hello World in C Unbekannt 30 5.805 07.12.2010 19:06
Letzter Beitrag: pspbricker

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




» zum Seitenanfang