|
Verfasser |
Nachricht |
Unbekannt
Holiday News-Writer
Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 4404
|
[TuT] Hello World in C
Vorwort
In diesem Tutorial zeige ich euch, wie ihr ein einfaches Hello World programmiert. Wer hilfe zu einzelnen Befehlen braucht, frägt mich hier im Thread, aber einige Grundbegriffe wurden hier erklärt.
_____________________________________________________
Konditionen:
Für das Tutorial wird benötigt:
- PSP mit CFW/HEN/HBL
- Einen C-Compiler (z.B Dev-C++)
- Entwicklungs Umgebung
_____________________________________________________
Los gehts!
Nun fanfen wir an, die Header-Files einzufügen. Ohne die Header-File Dateien können die Befehle wie Printf nicht erkannt werden.
#include <pspkernel.h> #include <pspdebug.h> #include <pspcallbacks.h>
Das #include bedeutet, dass eine Datei "inkludiert" bzw. eingebunden wird. Die zwichen dem größer/kleiner-Zeichen stehenden Dateien befinden sich in der SDK.
Nun definieren wir den Befehl "pspDebugScreenPrintf" zu "Printf":
#define printf pspDebugScreenPrintf
pspDebugScreenPrintf ist die Funktion, die wir verwenden, um Text auszugeben.
Nun fügen wir die Module_Info hinzu, dort wo Hello World steht kann auch jeder beliebige Namen stehen, es ist also der Programm-Name.
PSP_MODULE_INFO("Hello World",0,1,1);
Danach deklarieren wir main() mit int.
Int bedeutet INTEGER und deutsch: "ganze Zahl".
Nun schreiben wir eine Anweisung die zwichen den Klammern steht
also
pspDebugScreenInit(); pspDebugScreenClear(); SetupCallbacks();
Erklärung.
pspDebugScreenInit() ist die Funktion die es erlaubt auf dem Bildschirm etwas "auszugeben". pspDebugScreenClear() bereinigt den Bildschirm. Und SetupCallbacks() erlaubt es uns die Home-Taste zu verwenden (ein Callback).
Nun kommen wir zu der Tat, wir möchten Hello World auf dem Display ausgeben:
printf("Hello World\n"); sceKernelSleepThread();
printf() "druckt" der in den Klammern stehenden Text. Das \n ist ein Escape-Code und macht einen Zeilenumbruch nach "Hello World".
Nun schreiben wir return 0 um das Programm abzuschließen:
Jetzt haben wir schon alles gemacht, schreiben eine zu-geschweifte Klammer (}) und es fehlt nur noch eine Makefile:
TARGET = helloworld 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
Ganzer Script:
//Hello World by Dein-Name #include <pspkernel.h> #include <pspdebug.h> #include <pspcallbacks.h> #define printf pspDebugScreenPrintf PSP_MODULE_INFO("Hello World",0,1,1); int main() { pspDebugScreenInit(); pspDebugScreenClear(); SetupCallbacks(); printf("Hello World\n"); sceKernelSleepThread(); return 0; }
Nun müsste das Hello World funktionieren, kann sein dass ich einpaar Fehler habe, kann sie nicht verbessern, ich habe keine PSP mehr .
Umlaute in C
Auch in C gibt es Umlaute. Umlaute werden als Sonderzeichen gewertet und können über Hexadezimal geschrieben werden.
ä : \x84
ö : \x94
ü : \x81
Ä : \x8E
Ö : \x99
Ü : \x9A
ß : \xE1
Beispiel:
//Äußerung #include <pspkernel.h> #include <pspdebug.h> #include <pspcallbacks.h> #define printf pspDebugScreenPrintf PSP_MODULE_INFO("aeusserung",0,1,1); int main() { pspDebugScreenInit(); pspDebugScreenClear(); SetupCallbacks(); printf("Dies ist eine \x84u\xE1erung...\n"); sceKernelSleepThread(); return 0; }
Ausgabe: Dies ist eine Äußerung...
Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2010 22:20 von Unbekannt.
|
|
06.12.2010 20:18 |
|
Folgende User bedanken sich: |
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TuT] Hello World in C
Also so müsste er aussehen:
#include <pspkernel.h> #include <pspdebug.h>
#define printf pspDebugScreenPrintf
/* Define the module info section */ PSP_MODULE_INFO("Hallo Welt", 0, 1, 1);
/* Define the main thread's attribute value (optional) */ PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
int main(int argc, char *argv[]) { pspDebugScreenInit();
pspDebugScreenPrintf("Hello World\n");
return 0; }
Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2010 20:42 von dark-awesome.
|
|
06.12.2010 20:40 |
|
|
|
Unbekannt
Holiday News-Writer
Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 4404
|
RE: [TuT] Hello World in C
Also so müsste er aussehen:
/* * PSP Software Development Kit - http://www.pspdev.org * ----------------------------------------------------------------------- * Licensed under the BSD license, see LICENSE in PSPSDK root for details. * * main.c - Basic ELF template * * Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org> * Copyright (c) 2005 James Forshaw <tyranid@gmail.com> * Copyright (c) 2005 John Kelley <ps2dev@kelley.ca> * * $Id: main.c 1888 2006-05-01 08:47:04Z tyranid $ * $HeadURL$ */ #include <pspkernel.h> #include <pspdebug.h>
#define printf pspDebugScreenPrintf
/* Define the module info section */ PSP_MODULE_INFO("Hallo Welt", 0, 1, 1);
/* Define the main thread's attribute value (optional) */ PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
int main(int argc, char *argv[]) { pspDebugScreenInit();
pspDebugScreenPrintf("Hello World\n");
return 0; }
Den hast du aus dem DevKit kopiert. Meiner sieht etwas anderster aus.
Back to Topic:
Habe den ganzen Code hinzugefügt.
Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2010 20:43 von Unbekannt.
|
|
06.12.2010 20:42 |
|
|
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TuT] Hello World in C
Na weil du dir nicht sicher warst ob der richtig ist
|
|
06.12.2010 20:43 |
|
|
|
Unbekannt
Holiday News-Writer
Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 4404
|
RE: [TuT] Hello World in C
Hast du es getestet? Müsste theoretisch klappen.
Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
|
|
06.12.2010 20:47 |
|
|
|
PSP_Joker
King
Beiträge: 2.537
Gruppe: User
Registriert seit: Apr 2009
Status:
Offline
Danke erhalten: 2814
|
RE: [TuT] Hello World in C
Also da ich nicht für PSP coden kann, weiß ich nicht in wie fern der Code stimmt, aber die Erklärungen dazu sind mal wieder nicht ganz das wahre.
Überprüf mal was du zu den Klammern und zu return geschrieben hast. Das andere hab ich schon nicht mehr genauer gelesen.
Also das Schönste, was wir tun können, ist tanzen.
|
|
06.12.2010 20:48 |
|
Folgende User bedanken sich: |
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TuT] Hello World in C
Also meiner muss gehen aber deinen Unbekannt werde ich jetzt mal testen.
|
|
06.12.2010 20:51 |
|
|
|
Unbekannt
Holiday News-Writer
Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 4404
|
RE: [TuT] Hello World in C
Also da ich nicht für PSP coden kann, weiß ich nicht in wie fern der Code stimmt, aber die Erklärungen dazu sind mal wieder nicht ganz das wahre.
Überprüf mal was du zu den Klammern und zu return geschrieben hast. Das andere hab ich schon nicht mehr genauer gelesen.
Also habs nochmal überprüft. Habe es umständlich erklärt.
int main() {
Anweisung
}
Das mit Callbacks habe ich glaube falsch. Muss nochmal nach schauen.
Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
|
|
06.12.2010 20:54 |
|
|
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TuT] Hello World in C
Also er lässt sich nicht zu EBOOT machen Scriptfehler also Unbekannt nochmal nachschauen
|
|
06.12.2010 21:25 |
|
|
|
Unbekannt
Holiday News-Writer
Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 4404
|
RE: [TuT] Hello World in C
Probiermal anstatt printf, pspDebugScreenPrintf. Am besten schreibst du hier den Fehler rein.
Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
|
|
06.12.2010 21:28 |
|
|
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TuT] Hello World in C
es liegt an SetupCallbacks(); irgendwas scheint da zu fehlen.
|
|
06.12.2010 21:46 |
|
|
|
Unbekannt
Holiday News-Writer
Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 4404
|
RE: [TuT] Hello World in C
Meinst du diesen Fehler?:
Das liegt daran, dass er die pspcallbacks.h nicht findet, man muss es so einstellen dass die Header-Daten mitcompiliert werden.
Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
|
|
06.12.2010 21:58 |
|
|
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TuT] Hello World in C
So sollte er aussehen aber er findet die callback Header datei nicht.
//Hello World
/* Dies sind die einzellnen includes ohne die würde garn nichts gehen */ #include <pspkernel.h> #include <pspdebug.h> #include <pspcallbacks.h>
PSP_MODULE_INFO("Hello World",0,1,1); #define printf pspDebugScreenPrintf
/* Exit callback */ int exit_callback(int arg1, int arg2, void *common) { sceKernelExitGame(); return 0; }
/* Callback thread */ int CallbackThread(SceSize args, void *argp) { int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); 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", CallbackThread, 0x11, 0xFA0, 0, 0); if(thid >= 0) { sceKernelStartThread(thid, 0, 0); }
return thid; }
/* int main() { sagt den Compiler da hier das Haupt Programm beginnt */ int main() { pspDebugScreenInit(); pspDebugScreenClear(); SetupCallbacks(); /* Dies ist der Text der Ausgegeben wird und ( \n ) steht dabei für New Line also neu Zeile */ pspDebugScreenPrintf("Hello World\n"); sceKernelSleepThread(); /* return 0; und } stehen hier für das Ende des Hauptprogrammes */ return 0; }
|
|
06.12.2010 22:05 |
|
|
|
Unbekannt
Holiday News-Writer
Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 4404
|
RE: [TuT] Hello World in C
Du brauchst die pspcallbacks.h, ich habe sie vergessen oben hinzuzufügen als Download.
Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
|
|
06.12.2010 22:15 |
|
|
|
Unbekannt
Holiday News-Writer
Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 4404
|
RE: [TuT] Hello World in C
"Unerlaubtes Pushen" *Tschuldigung*
Hat es jemand ausprobiert, funktioniert es endlich?
Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
|
|
06.12.2010 23:52 |
|
|
|
|