De:Mit der GP2X-Programmierung anfangen

From wiki.gp2x.org

Contents

Überblick

Der GP2X ist ein Handheld mit interessanter Hardware. In ihm sind drei Arten von Speicher eingebaut:

  • RAM (64 MB)
  • NAND-Flash-Speicher (64 MB) - enthält den Bootloader, das Betriebssystem und die üblichen Libraries
  • SD-Karte (erhältlich von 16 MB bis 4 GB) - enthält Anwendungen, Musik, Videos, E-Books, etc.

Nach dem Anschalten des Geräts zeigt ein weißer Bildschirm das 'Hardware-Booten' (BIOS / etc.), das GP2X-Logo mit schwarzem Hintergrund zeigt das Starten des Bootloaders an und das mit grünem Hintergrund das Starten von Linux.

Schließlich wird /usr/gp2x/gp2xmenu gestartet, was dem Benutzer erlaubt, mit dem Gerät zu Arbeiten. Mittels dieses Oberfläche kann der Benutzer dann eine Datei zur Anzeige (Video, Audio, Text, usw.) auswählen oder ein Programm starten.

Alternativ - wenn der Benutzer Autorun aktiviert hat - wird die Datei 'autorun.gpu' gestartet, nach der zuerst auf der SD-Karte und dann im NAND-Speicher gesucht wird.

Übliche Ziele

Emulation

Dieses Ziel beinhaltet die Verwendung eines Software-Emulators auf dem GP2X, mit dem Spiele, die ursprünglich für andere Plattformen entwickelt worden sind, auf dem GP2X gespielt werden können. Emulation hat den Vorteil, dass mit dem Erscheinen eines Emulators gleich mehrere Dutzend oder gar hundert "neue" Spiele auf einmal da sind. Nachteile sind allerdings Performanceverluste (Emulatoren sind üblicherweise langsamer als das Original), Schwierigkeiten bei der Verwendung (wenn man einen verborgenen Bug vergisst mit zu emulieren) und rechtliche Probleme (die Binärdateien, Graphiken und Musikclips sind üblicherweise Urheberrechtlich geschützt).

Einen guten Emulator zu schreiben ist schwer - ein bestehendes Spiel für einen vorhandenen Emulator in eine Binärdatei zu verwandeln schon einfacher, doch beide Tätigkeiten sind nützlich für die Community.

Portieren

Dieses Ziel beinhaltet das Verändern des Quellcodes existierender Anwendungen, sodass diese auf dem GP2X laufen. Portieren hat den Vorteil, dass eine weitere Anwendung oder ein Framework für den GP2X bereitgestellt wird, wobei man aber die Arbeit anderer mit benutzen kann und nicht alles von Grund auf neu entwickeln muss. Das Portieren kann im ändern der Tasten-/Joystick-Belegung liegen oder im Neu-Schreiben eines Spiels, sodass es von den Vorteilen des GP2X profitieren kann.

Das Spiel "Super Methane Brothers" Available in English kann als Beispiel-Portierung angesehen werden. Der Quellcode läuft auf mehreren Plattformen und verwendet eigene - generische - Routinen zum Animieren von Sprites, Laden von Fonts und Zeichnen des Bildschirms (im RAM). Der zu portierende Teil leitet den Speicher (mittels SDL) auf den Bildschirm weiter, die Musik (mit MikMod) an die Lautsprecher und den Joystick auf die Bedienelemente des GP2X (wiederum durch SDL). Das Resultat ist ein voll funktionsfähiges Spiel (das übrigens auch noch Spaß macht).

Es ist zu beachten, dass "Portieren" der Ausdruck für das Umschreiben jeglicher Software anderer Plattformen für den GP2X ist. Das Betriebssystem, die SDL-Libraries und die meisten Emulatoren sind portierte Anwendungen. Software für den GP2X portieren hilft, den GP2X nützlicher und ansprechender zu machen.

Homebrew

"Homebrew" sind solche Programme, die von Benutzern als Hobby - im Gegensatz zu kommerzieller Software - entwickelt werden. Da der GP2X eine sehr kleine Zielgruppe hat und es nur wenige kommerzielle Spiele für ihn gibt, kann die meiste Software für den GP2X als Homebrew betrachtet werden. Spiele von Ein-Mann- oder kleinen Firmen (wie Vektar Available in English oder Payback Available in English) werden oft auch als Homebrew gewertet, weil sie auch meist als Hobby weiterentwickelt werden.

Erste Schritte

Um mit der Entwicklung für den GP2X anzufangen, solltest Du

  1. eine Entwicklungsumgebung einrichten (siehe unten).
  2. das Demo-Programm Available in English testen.

Einrichten einer Entwicklungsumgebung

Hinweise für das Schreiben von eigenen Spielen

Programme für den GP2X kompilieren

Es ist vermutlich das beste, Libraries statisch dazuzulinken, dann kannst Du nämlich die .gpe-Datei einfach auf den GP2X kopieren. Wenn du allerdings dynamisch linkst, musst du beim übertragen der Libraries vorsichtig sein! Falls du die gültigen Libraries in /lib überschreibst, könntest du deinen GP2X in einen teuren Backstein Available in English verwandeln. Am besten, Du schreibst ein Shellskript, das LD_LIBRARY_PATH auf das Verzeichnis mit deinen Libraries setzt und dann das Programm startet.

Personal tools