HAM Tutorial 1 - Der leichte Einstieg:

[Einleitung] [Download und Installation] [Das erste Programm]

Einleitung:

Hallo liebe Leser, Willkommen zum ersten Tutorial von mir, ToruX. Da ich HAM doch sehr gerne verwende, handelt auch mein erstes Tutorial von HAM. Aber was ist HAM ? Hier eine kleine Übersicht: HAM ist ein tolles Entwicklungs-Kit, wo (fast) alles drin ist was man so braucht, nämlich - ein GCC Compiler, - ein grafischer Debugger, - eine sehr umfassende Libary die fast alle Funktionen des GBA beinhaltet.(Die so genante HAMlib.), - eine Haufen von Tools (Bildumwandeltool, Soundumwandeltool, ...), - eine umfassende Dokumentation, - und eine super einfache Installation (Durch die euch hurik führen wird, also sollte das nicht allzu schwierig werden.) Dieses Entwicklungs-Kit mit seiner umfassenden Libary und der Sammlung an Tools macht den Einstieg in die GBA Programmierung besonders leicht, da man sich nicht um den ganzen Kleinkram kümmern muss. Dieses tolle Entwicklungs-Kit verdanken wir Emanuel Schleussinger, der in jeder freien Minute weiter programmiert! Hier noch Werbung für seine Homepage: www.ngine.de. Um das ganze hier zu verstehen braucht ihr eigentlich nur paar C Grundkenntnisse. Das müsste schon reichen. Erstmal sollten wir Anfangen das Teil runterzuladen, es zu installieren und unser erstes "Hallo Welt!" Programm zu schreiben! Die HAM-Tutorial Serie wird von mir und hurik gemacht, und sollte nach und nach euch alles erklären, wie man HAM richtig einsetzt. Also freut euch und lernt daraus. Und nun geht’s eigentlich auch schon los.

Download und Installation:

Also auf www.ngine.de/ham.html kriegt ihr immer die neusten News zum HAM und sieht ob eine neue Version raus ist! Aber na ja jetzt müssen wir das ding erstmal runterladen und da ich euch nicht zumuten kann die Seite nach dem link durchzusuchen gibt’s hier ein Direktlink zu dem File. Ach so ich hoffe sehr stark für euch das ihr DSL habt, wenn nicht wünsche ich euch viel Spaß beim saugen des 40 MB File! Und hier jetzt endlich der Link: http://www.ngine.de/projects/ham-2.50-win32-full-distro.zip Ach so seit neustem gibt es auch eine Linux Version. Da ich keine Ahnung hab wie man die installiert, kann ich euch da leider keine Hilfestellung leisten! Wäre nett wenn jemand sich da informiert und einen kleinen text schreibt wie man das macht! In der Zeit wo ihr das runterladet könnt ihr ruhig weiter lesen! Die armen die ein Modem haben werden sogar wesentlich mehr lesen können als das hier dauert, deswegen Empfehle ich euch das Buch: Fünf Ringe von Miyamoto Mushashi. OK, wenn ihr das File habt müsst ihr einfach in den Download Ordner gehen und das File entpacken und im Verzeichnis in das ihr es hinein entpackt habt, einfach die Setup-Datei starten! So dann im Installations-Programm einfach in das erste kleine Fenster "OK" eingeben. und noch einen Ordner angeben in den ihr es hineininstalliert haben wollt. So dann auf "Install" drücken, warten und beim dem Info Fenster nach dem kopieren der Daten auf OK klicken und schon seit ihr mit der Installation fertig! Einfach, oder? Dieser Text würde mit freundlicher Genehmigung von Andreas „hurik“ Giemza, verwendet.

Das erste Programm:

So jetzt habt ihr HAM schon geladen, und seit erfolgreich mit hurik’s Hilfe durch die Installation gekommen, nun wollen wir unser erstes Programm schreiben, nur was ? Na ja, wie sollte es auch anders sein, wie auch in den anderen Programmiersprachen fangen wir in HAM mit einem simplen „Hallo, Welt !“ Programm an. Da will ich jetzt erstmal nichts weiter dazu sagen, und präsentier euch erstmal den Sourcecode.
0 | #include "mygba.h"
1 |
2 | int main(void)
3 | {
4 | ham_Init();
5 | ham_InitText(0);
6 |
7 | ham_DrawText(0,0,"Hallo, Welt !");
8 |
9 | while(1)
10 | {
11 | }
12 | }
So, das war es auch schon, einfach oder? Die meisten Sachen, wenn nicht sogar alles kann man, wenn man English kann, sich schon selbst erklären. Doch keine Angst selbst wenn ihr es nicht auf Anhieb versteht, ich erkläre es euch ja. Dann fangen wir mal an! Alsoooo…Es war einmal vor langer Zeit…Halt, Moment das geht etwas zu weit. Also noch mal… Was haben wir denn alles im Source stehen…. Ahja… #include "mygba.h" Diese Zeile steht für „Include“ =) also Include bedeutet soviel wie Hinzufügen, also fügen wir etwas hinzu, nur was? Genau, die „mygba.h“ die „mygba.h“ ist eine so genannte Header Datei, dort stehen wichtige Infos über den GBA drin. Diese Datei ist in folgendem Verzeichnis HAM:\Include\ (wer hätte das gedacht?? *g*) zu finden. Ich bin der Meinung das sich die JEDER (mindestens) einmal anschauen sollte, wenn man auch nicht alles auf Anhieb versteht, so wie es wohl fast jedem gehen wird, außer den SUPER Programmierern, sollte man doch mal einen Blick riskiert haben, um wenigstens ein wenig zu wissen worum es geht, und was auf einem zukommen wird. Auf jedenfall muss man diese Zeile bei jedem HAM Programm als aller erstes schreiben. int main(void) { Damit starten wir unser eigentliches Programm, dies nennt man Hauptschleife (von „main“). ham_Init(); Mit diesem Befehl Initialisieren wir die HAMLib Diese HAMLib ist die so genannte Hauptbibliothek von HAM, und ist immer die erste Funktion in jedem Programm das HAM verwendet. ham_InitText(0); Dieser Befehl Initialisiert die Text Funktion von HAM. In der Klammer ist eine Null eingesetzt, weil kein direkter Screenmode verwendet wird, also wird aufgrund der Null automatisch der Screenmode auf 0 gesetzt, und HAM schreibt den Text auch auf Background 0. ham_DrawText(0,0,"Hallo, Welt !"); Das ist dafür da um den Text auf das Display zu kleistern. 0, 0, gibt die Koordinate auf dem Screen an, die erste 0 steht für die Spalte, und die zweite 0 für die Reihe, das bedeutet das 2, 5, der Text in der 3. Spalte in der 6. Reihe steht. Dieser Bereich reicht von: 0-29 Horizontal bis 0-19 Vertikal. "Hallo, Welt !" Na ja, das ist halt der Text, den wir ausgeben wollen. PS: Laut tubooboo (www.ngine.de / Macher von HAM) ist diese Funktion sehr langsam, es gibt aber keine bessere die schon direkt mit dabei ist. while(1) { } Dies Bezeichnet eine Endlosschleife, diese brauchen wir hier, denn ohne sie würden wir ständig nur das HAM Logo sehen. } Damit beendet man nun die Hauptschleife, und somit das ganze Programm. Nun, somit wären wir am Ende dieses Tutorials angekommen, war doch gar nicht so schwer, oder?? Nun fassen wir mal kurz zusammen was wir gemacht haben. Wir haben etwas „Includet“ also Hinzugefügt nämlich die „mygba.h“, diese brauchen wir für jedes Programm das wir machen. Die Hauptschleife erstellt, ham_Init(); und ham_InitText(0); eingebunden. Der erste Befehl steht für die Initialisierung der HAMLib, der zweite dafür dass wir Text verwenden können. Danach haben wir den Text mit dem Befehl ham_DrawText(0,0,“Text“); auf dem Display ausgegeben. Zusätzlich kam noch die leere Endlosschleife hinzu, damit unser Programm ewig läuft, und uns nicht nur das HAM Logo anzeigt. Und Last But Not Least, die Hauptschleife mit dem Zeichen „}“ wieder verlassen. ! HALT: Wir sind noch nicht ganz fertig, ich hab bis hierhin beschrieben, wie der Code aufgebaut ist, und was das alles bedeutet. Nun ist das ganze ja noch recht theoretisch, und wir wollen ja auch wissen ob es auch so läuft wie wir es wollen. Dazu legen wir uns erstmal ein Verzeichnis an, nennen es z.B. „tut1“. In unserem neuen Verzeichnis erstellen wir nun eine Datei namens „tut1.c“, dorthinein schreiben wir unseren Code von oben. Wenn wir das gemacht haben, sind wir schon fast am ende, wir kopieren nun die Datei „startham.bat“ vom HAM-Verzeichnis in unser Verzeichnis „tut1“. Jetzt fehlt uns nur noch eine Datei namens „makefile“. Um diese zu bekommen, gibt es zwei Möglichkeiten, entweder wir kopieren uns eine, oder wir machen sie selbst. Nun ich hab mich jetzt dazu entschlossen, eine zu kopieren und sie zu editieren, ist ja auch viel einfacher. So, wir kopieren sie aus dem Verzeichnis HAM:\Samples\Obj\ in unser „tut1“ Verzeichnis. Jetzt kommen wir zum editieren, dazu öffnen wir die Datei „makefile“ die sich nun in unserem „tut1“ Verzeichnis befinden sollte. Entweder mit Editor/Notepad oder mit dem DOS-Befehl, „edit“. Wenn man diese Datei geöffnet hat, steht da ne ganze menge, uns Interessiert davon eigentlich (noch) nicht allzu viel. Wichtig ist für uns z.B. Diese Zeile : PROGNAME = obj Wir ändern diese ganz einfach in PROGNAME = tut1 Die nächste Zeile die uns Interessiert ist diese OFILES += main.o modfile.o Wir ändern diese Zeile einfach in OFILES += tut1.o Somit wären wir schon fast fertig. Wir wollen jetzt nur noch folgendes ändern, ###################################### # custom Makefile targets start here ###################################### modfile.o: module.mod $(LD) -A elf32-littlearm --format binary --oformat elf32-littlearm module.mod -o modfile.o -r -EL -T $(LIBDIR)/bin2rodata.x grfx: makefile gfx2gba -ogfx -t8 -D -fsrc gfx\\balls.bmp gfx2gba -ogfx -t1 -D -fsrc -pbg.pal gfx\\bg.bmp Da in unserem ersten Tutorial noch nicht weiter verwendet wird außer Text können wir die Zeilen, nach dem ###################################### # custom Makefile targets start here ###################################### einfach löschen. So das das, hinterher das letzte ist was in unserer makefile Datei steht. Speichere diese Datei jetzt ab. Führe nun in unserem Verzeichnis die „startham.bat“ aus und tippe den Befehl „make“ ein, und drücke die Taste [ENTER]. Damit gibst Du den Befehl zum Kompilieren deines Codes. In unserm falle also der „tut1.c“ im Verzeichnis sollte sich nun die Datei tut1.gba befinden. Diese Kann jetzt im Emulator verwendet werden, oder auch per FalshCard auf dem GBA ausgeführt werden. Um aber den Code gleich im Emulator zu starten gibt man folgenden Befehl ein: „make vba“ somit wird wieder unsere „tut1.gba“ Datei erzeugt und danach gleich im Emulator ausgeführt. Probiert es einfach mal aus. So das war es jetzt erstmal von mir, ich hoffe es hat euch wenigstens ein wenig gefallen, und würde mich freuen euch im nächsten Tutorial wieder zu treffen. Also bis dahin wünsch ich euch noch viel spaß, beim herumexperimentieren mit HAM. Bei fragen, Anregungen etc. meldet euch entweder im Board, oder aber auch per eMail (ToruX@gmx.net) ich werde versuchen euch alle Fragen bezüglich dieses Tutorials zu beantworten. Bis denn, euer ToruX
© by Benjamin "ToruX" Tebling

DevGBA
www.robsite.de