Was brauche ich zum Start ?
Das wichtigste ist, Ihr braucht eine PSP auf der Ihr Eure Homebrews auch ausführen könnt. Soweit ich weiß braucht Ihr dazu
eine CFW. Auf der sehr guten Seite www.pspking.de
findet Ihr alles wissenswerte um CFW's und wie man diese auf der PSP installiert.
Nun - es gibt verschiedene Entwicklungsumgebungen für die PSP. Einige sind mehr, die anderen weniger komfortabel.
Ich habe schon viel mit der Eclipse IDE als Entwicklungsumgebung gearbeitet und fühle mich dort quasi "zu Hause".
Darum habe ich mich für eben diese Entwicklungsumgebung entschieden.
Alles was man braucht ist die C++ Eclipse IDE die man hier
runter laden kann. Und dann noch das entsprechende PSPSDK (SoftwareDevelopmentKit).
Dies bekommt ihr hier
inclusive einer guten Anleitung für die Einrichtung. Für die Eclipse IDE ist es vielleicht nocht wichtig zu erwähnen,
dass eine möglichst neue Java Laufzeitumgebung(JRE) auf Eurem Rechner installiert sein sollte.
Von der Sun downloadseite
kann man diese beziehen.
Grundüberlegungen - wie fange ich an
Zunächst wird davon ausgegangen, dass ein paar Grundkenntnisse zur Entwicklung von Homebrews vorhenden ist. Ohne Probleme kann ein
neues Projekt inklusive einer main.c und einem Makefile erstellt werden. Dieses ergibt dann nach dem Compilieren und Linken eine EBOOT.PBP.
So weit so gut....Doch jeder hat bestimmt schon festgestellt, dass bestimmte dinge bei dem Erstellen von Homebrews immer gleich sind, und deren
ständiges "copy+paste" auf die Dauer auch ziemlich anstrengend sind. Um dieses Problem zu umgehen, habe ich eine kleine eigene Library geschrieben
die in das PSPSDK eingebunden werden kann. Dadurch entfallen bestimmte immer wiederkehrende Aufgaben und man kann sich auf
die Eigentliche Arbeit: das programmieren des Homebrews konzentrieren.
Wo gibt's diese Library?
Diese Library ist Opensource und von der Google-Projektseite
herunter geladen werden.
Auch wenn es auf der Projektseite eine kurze Anleitung gibt wie man die Library nutzt hier nochmal eine kurze Zusammenfassung.
Diese erstellt exemplarisch auf Basis der PSPHBC ein kleines Homebrew.
Durch die Nutzung von Klassen in der Bibliothek müssen wir unser Homebrew mit C++ erstellen und compilieren. Darum enden die Sourcefiles
alle auf cpp.
Die Schritte die zu machen sind im einzelnen:
- Implementieren der Homebrew-Basis Klasse. Der Konstruktor und Destruktor sind dabei protected
Welche Basisklasse genutzt wird hängt von dem jeweiligen Ziel ab, das das eigene Homebrew verfolgt.
Folgende Basisklassen stehen zur Verfügung:
- ClHomebrew: Absolute Basisklasse für kleine HB's ohne Grafikausgabe
- Cl2dHomebrew: Basisklasse für einfache 2D-Grafik HB's
- Cl3dHomebrew: Basisklasse für 3D Homebrews die auf der PSP GU aufsetzen
- Bereitstellen der statischen Methoden get_instance und clean_instance für Singleton-Instanziierung der
Applikationsklasse
- Implementieren der Methode mainthread bzw. render (bei Cl2d- oder Cl3dHomebrew)
- Erstellen einer main.cpp nach dem unten dargestellten Muster
main.cpp
extern "C" {
#include
#include
}
#include "YourApplivationClass.h"
PSP_MODULE_INFO("PSP HB", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);
PSP_HEAP_SIZE_KB(-2048);
int main(int argc, char* argv[]){
ClYourApplicationClass* myHomebrew;
myHomebrew = ClYourApplicationClass::get_instance();
if (myHomebrew->init()){
myHomebrew->run();
myHomebrew->exit();
}
ClYourApplicationClass::clean_instance();
//once finished exit the application
sceKernelExitGame();
return 0;
}
Um bei der Erstellung des Homebrews nun auch die neue Bibliothek zu nutzen, muss diese bei den LIBS entsprechend aufgeführt werden.
Zusätzlich werden wir für das Compilieren aller cpp-Dateien im Projektverzeichnis einen Wildcard nutzen um die neu erstellten Dateien
nicht immer wieder neu in dem Makefile aufführen zu müssen.
Exemplarisch sieht das Makefile dann wie folgt aus:
Makefile
TARGET = YourHomebrew
SOURCES = $(wildcard *.cpp)
OBJS = $(patsubst %.cpp,%.o,$(SOURCES))
INCDIR =
CFLAGS = -G0 -Wall -g
CXXFLAGS = $(CFLAGS) -fno-exceptions #-fno-rtti
ASFLAGS = $(CFLAGS)
BUILD_PRX = 1
LIBDIR =
LDFLAGS =
LIBS= -lpsphbc -lstdc++ -lpsputility -lintraFont -lpspgum -lpspgu -lpsprtc -lpsppower -lpng -lz -lm
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = PSP MyHB
PSP_LARGE_MEM=1
PSP_FW_VERSION=550
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
|