Copy Link
Add to Bookmark
Report

Développer sur GameBoy Advance

Dreamcast's profile picture
Published in 
GameBoy
 · 9 Feb 2020

Développer sur GameBoy Advance
[Méthode manuelle]
Remontez l'arborescence pour trouver la méthode automatique!
Par Linuxshell

Salut à tous pour cette introduction au développement GBA. Nous commencerons ici par une préparation des logiciels indispensables à la programmation GBA. Plusieurs méthodes, plus ou moins simples mais également plus ou moins configurées, sont possibles pour le développement. Nous nous intéresserons dans un premier temps à la configuration manuelle, la plus appropriée à mon goût(bien que des solutions très simples soient possibles, mais nous le verront plus tard).


[Disclaimer On]
Bien que nous essayons d'assurer la fiabilité de l'information figurant sur cette page,
l'auteur (et l'hébergeur) ne peut être tenu pour responsable de quelque perte, dommage
ou désagrément provoqué par le fait d'une erreur, d'une inexactitude ou d'une omission
figurant sur ces pages.
[Disclaimer Off]

Table des matières [Méthode manuelle]
1. Préparation de l'environnement de programmation
->1.1 Obtenir les outils
->1.2 Compiler Binutils
->1.3 Compiler GCC
->1.4 Installer la Newlib
->1.5 Recompiler GCC

2. Utilisation de la LibGBA
->2.1 Installer la LibGBA
->2.2 Tester les exemples fournis

Préparation de l'environnement de programmation

1.1 Obtenir les outils
Tout comme de nombreuses machines, telles la Dreamcast, la Saturn, etc..., la GBA peut se
programmer via les outils gratuits distribués par GNU. Vous aurez besoin de télécharger:
-binutils
-gcc
-newlib
Une fois les outils obtenus, il nous faut configurer l'environnement, j'utiliserai des dossiers
que vous pouvez tout à fait remplacer pour que cela convienne à votre machine:
-répertoire où se trouvent les sources: $SRC = /usr/local/gbadev/src
-répertoire destination des binaires: $BIN = /usr/local/gbadev
-répertoires donc on aura besoin ultérieurement:
# mkdir binutils-build
# mkdir gcc-build
# mkdir newlib-build


1.2 Compiler Binutils
Tout d'abord il vous faudra compiler Binutils. Ce dernier contient les outils tels que l'assembleur,
le débuggeur, et les outils différents nécessaires à la programmation(pas seulement la programmation
GameBoy Advance mais aussi la programmation sur PC, Dreamcast, etc...).
Voilà le directives:
# cd $SRC
# tar zxvf binutils-X-XXX
# cd binutils-build
# ../binutils-X-XXX/configure --prefix=$BIN --target=arm-thumb-elf
# make; make install
# cd ..
# rm -rf binutils-build/ binutils-X-XXX/

Normalement jusque là pas de problème...ou du moins j'espère pas ;)


1.3 Compiler GCC
C'est ici que les choses se corsent! Explications plus en détails:
La compilation de GCC produira une erreur(!). Car à la fin de la compilation de celui-ci, les Makefiles
produiront un test pour vérifier si le compilateur peut produire un exécutable, or afin d'en créer un,
il faut que la newlib soit installée d'abord! Mais pour compiler la newlib, il nous faut GCC!!
Nous procéderons alors quand même à une installation afin d'arriver à nos fins...

# export PATH=$PATH:$BIN/bin
# cd $SRC
# tar zxvf gcc-X-XXX
# cd gcc-build
# ../gcc-X-XXX/configure --prefix=$BIN --target=arm-thumb-elf
# make; make install
# cd ..
Mais on efface pas tout cette fois-ci.


1.4 Installer la Newlib
Installons à présent la Newlib ;)
# cd $SRC
# tar zxvf newlib-X-XXX
# cd newlib-build
# ../newlib-X-XXX/configure --prefix=$BIN --target=arm-thumb-elf
# make; make install
# cd ..
# rm -rf newlib-build/ newlib-X-XXX/

On commence à en avoir l'habitude de cette procédure... ;)
1.5 Recompiler GCC
Maintenant que la Newlib est installée, nous allons recommmencer la construction d'un compilateur
propre. Toute erreur qui surviendrait à présent, n'est pas attendue.
# cd $SRC
# cd gcc-build
# make; make install
# cd ..
# rm -rf gcc-build/ gcc-X-XXX/

Utilisation de la LibGBA


2.1 Installer la LibGBA
Après avoir décompresser la libgba dans le répertoire de votre choix(ici $BIN/src), nous nous confrontons
au premier problème, celui du compilateur. En effet notre compilateur compile(normal :)) pour arm-thumb-elf,
et l'auteur de la lib a un compilateur arm-elf. En fait nous pouvons compiler en arm-thum_elf grâce à l'option
-mthumb dans un shell.

Donc ligne 4 de $BIN/src/libgba/Makefile:
AS = arm-thumb-elf-as -marm7
CC = arm-thumb-elf-gcc
AR = arm-thumb-elf-ar

Et la compilation se fait désormais sans aucun problèmes.


2.2 Tester les exemples fournis
Pour pouvoir profiter de nos créations sur un bel émulateur, il faut traduire le binaire elf en exécutable GBA.
Et encore une fois nous n'avons pas la bonne ligne de commande dans le script approprié! :)
Modifions ligne 6 de $BIN/src/libgba/extra/gba-elf2bin:
OBJCOPY=arm-thumb-elf-objcopy

C'est fini!

Modifions à présent les Makefile pour les accorder avec nos choix...
Ligne 4 de $BIN/src/libgba/tests/Makefile:
CRT = $BIN/src/libgba/extra/crt0/gbacrt0.o
LDSCRIPT = $BIN/src/libgba/extra/gba.ld.Script
(Note: Si $BON n'existe pas remplacer le par le chemin entier...)

Ligne 8 de $BIN/src/libgba/extra/gba-elf2bin:
AS = arm-thumb-elf-as -marm7
CC = arm-thumb-elf-gcc
ELF2BIN = $BIN/src/libgba/extra/gba-elf2bin

Tout compile dès à présent.

Reste plus qu'à mettre ça dans un émulateur ou sur un linker et faire partager le fruit de votre labeur :)

Bon code et à bientôt!

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT