Créez vos homebrews Dreamcast sous Linux !

Vous avez rédigé un tutoriel? Vous cherchez un tutoriel complet? Come in!

Modérateur : Team Modération

Avatar du membre
Dreamkey
membre hyper actif
membre hyper actif
Messages : 1428
Enregistré le : 31 janv. 2007 14:19

Créez vos homebrews Dreamcast sous Linux !

Message par Dreamkey »

Voilà enfin le tuto pour pouvoir créer et compiler des jeux sur Dreamcast.
J'ai choisi de le faire pour GNU/Linux car c'est ce que j'utilise au quotidien et je le préfère largement aux autres OS.
Sous Windows, il est possible d'utiliser Cygwin - ce que je trouve idiot car il ne fait qu’émuler un système Unix, autant utiliser tout de suite un vrai - mais aussi MinGW : vous trouverez ici un tutoriel récent en espagnol, que je n'ai pas testé.
Il vous faudra 1.9Gio pendant l'installation, 850Mio une fois fini.

À noter : en voulant tester ce tuto sur un Fedora 14 et une Ubuntu 11.10, j'ai eu exactement la même erreur que cette personne. Vu qu'il a marché sur mon Archlinux, je pense que c'est à cause de la distribution qui n'est pas complètement à jour.

C'est parti ! :P

I. Télécharger KallistiOS et la toolchain
Pour la théorie : KallistiOS est un kit de développement pour la Dreamcast ; il a été créé par Dan Potter et permet de faire pas mal de trucs. Je vous conseille de chercher sur Google pour plus d'infos :wink:
Une toolchain, selon wikipédia, « consiste en un éditeur de texte pour écrire le code source, un compilateur et un éditeur de liens pour le transformer en exécutable, et des bibliothèques logicielles pour s'interfacer avec le système d'exploitation ». Ici cela va être un peu spécial : on utilise l'éditeur de texte dont on a l'habitude, KallistiOS va jouer le rôle de bibliothèque, mais le compilateur va être précisément un cross-compiler (compilateur croisé en bon français).
Quand vous créez un programme avec un langage haut-niveau (comme le C), cela va vous permet de vous abstraire du matériel que vous utilisez, mais il faudra un compilateur pour transformer ce que vous voulez faire en suite d'instructions compréhensibles par votre processeur. Du coup si vous changez d'architecture (par exemple du i686 à ARM), vous programme ne marchera plus car les instructions ne sont plus les mêmes, mais il suffira de recompiler pour créer une autre version utilisable. Dans notre cas, on écrit sur une machine avec le plus souvent un processeur i686 ou x86_64, mais il va falloir créer quelque chose pour transformer notre code en instructions destinées aux processeurs (central, graphique, sonore, ...) de la Dreamcast : c'est le rôle du cross-compiler, qui va permettre de créer des programmes lisibles sur une architecture différente (ici du SH-4) de celle où il s’exécute.

On commence donc par télécharger KallistiOS ; la dernière version dite « stable » va bientôt avoir deux ans, alors qu'elle est toujours activement en développement. Pour profiter de ces changements (nouvelles fonctionnalités, corrections de bugs, optimisations, ...), nous allons donc utiliser cette version de développement.
Pour la suite du tuto, je serai dans ~/Programmation/Dreamcast/SDK, à vous d'adapter ce chemin comme bon vous semble ; le prompt sera matérialisé par $.
On se place dans notre dossier et on clone la dernière version :

Code : Tout sélectionner

$ git clone git://cadcdev.git.sourceforge.net/gitroot/cadcdev/KallistiOS kos
$ git clone --recursive git://cadcdev.git.sourceforge.net/gitroot/cadcdev/kos-ports
II. Compiler le cross-compiler
À ce moment là, vous devriez avoir deux dossiers : kos et kos-ports. Des scripts existent pour télécharger, extraire et compiler le tout ; on se déplace dedans et on les exécute :

Code : Tout sélectionner

$ cd kos/utils/dc-chain/
$ ./download.sh
$ ./unpack.sh
Ensuite il faut modifier les lignes 25 et 26 du Makefile pour indiquer le dossier de destination de la compilation ; comme je veux les placer à côté des dossiers kos et kos-ports, j’écris :

Code : Tout sélectionner

sh_prefix  := ${HOME}/Programmation/Dreamcast/SDK/$(sh_target)
arm_prefix := ${HOME}/Programmation/Dreamcast/SDK/$(arm_target)
Vient maintenant l’étape la plus longue :

Code : Tout sélectionner

$ make
Vous allez voir votre terminal afficher plein de trucs, vous avez maintenant du temps devant vous pour laisser votre PC tourner tranquillement. Pour info, cela m'a pris de 10 minutes sur un i7 2.5GHz (4 cœurs, 8 threads) à 1h30 sur un Turion 1.8Ghz (2 cœurs).

III. Compiler kos et kos-ports
Avant de pouvoir faire quoi que ce soit, il faut personnaliser un fichier utile à la compilation de KallistiOS et de vos futurs projets.
Placez vous à la racine de kos et copiez ce fichier :

Code : Tout sélectionner

$ cd ~/Programmation/Dreamcast/SDK/kos
$ cp doc/environ.sh.sample environ.sh
Éditez-le, il y a 3 lignes à changer :
  • 23, pour le répertoire de kos,
  • 41, pour celui de sh-elf
  • 54, pour celui de arm-eabi.
Dans mon cas, cela donne :

Code : Tout sélectionner

export KOS_BASE="${HOME}/Programmation/Dreamcast/SDK/kos"
export KOS_CC_BASE="${HOME}/Programmation/Dreamcast/SDK/sh-elf"
export DC_ARM_BASE="${HOME}/Programmation/Dreamcast/SDK/arm-eabi"
Ce fichier est très important ; il devra être appelé à chaque fois qu'un shell est ouvert pour compiler quelque chose relatif à KallistiOS.
Pour le charger et compiler, avec votre cross-compiler tout frais, kos (le système de base) et kos-ports (les bibliothèques pour pouvoir charger et utiliser des images, des sons...), il y en a pour moins de 5 minutes :

Code : Tout sélectionner

$ source environ.sh
$ make
$ make kos-ports_all
Rien ne vous empêche ensuite de déplacer le environ.sh dans le répertoire de votre projet (par exemple) pour l'appeler plus facilement, ou encore le charger automatiquement à l'aide de votre .bashrc/.zshrc.

IV. On teste !
Pour tester, rien ne vaut une Dreamcast, cela dit on se contentera d'un émulateur au début.
lxdream est le seul émulateur Dreamcast dispo sous GNU/Linux avec le support des elf (les binaires pour la Dreamcast), après installation il vous faudra les fichiers dcboot.rom, dcflash.rom et (éventuellement) IP.bin dans ~/.lxdream/. L'émulateur n'est plus activement développé, et sa dernière version stable date de presque 6 ans, donc je vous conseille de prendre là encore la version de développement (lxdream-hg sous Archlinux).
Une autre solution est d'utiliser nullDC avec wine.

Pour tester que tout est en ordre, on va utiliser les exemples se trouvant dans kos/examples/dreamcast/. Sans oublier d'avoir sourcé votre environ.sh avant, tapez make puis lxdream -e nom_de_l_exemple.elf dans ces répertoires :
  • hello/ : un test simple, il va afficher le fameux Hello World dans le terminalImage
  • parallax/raster_melt/ : une photo de Dan :)
  • kgl/demos/tunnel/ : un tunnel en 3D
  • 2ndmix/ : une démo complète, avec musique, police, 3D, background
N'oubliez pas de faire un make clean après :wink:

V. Pour aller plus loin
Pour supprimer tous les fichiers qui n'ont plus d’utilité (les fichiers temporaires du cross-compiler), on se place dans le dossier qui contient kos, kos-ports, arm-elf et sh-elf :

Code : Tout sélectionner

$ cd ~/Programmation/Dreamcast/SDK
$ cd kos/utils/dc-chain
$ rm -rf binutils-* gcc-* newlib-* logs gmp-* mpc-* mpfr-*
KallistiOS se met à jour facilement, vous n'aurez qu'à puller les derniers commits et le recompiler pour en profiter. Le cross-compiler n'est que rarement mis à jour.

Pour des tutos sur le C et le C++ (KallistiOS supporte les deux) ainsi que la SDL, je ne peux que vous conseiller le Site du Zéro. Pour l'utilisation de KallistiOS lui-même, les nombreux exemples permettent de bien démarrer.
Sinon j'ai vu que GDB (un puissant debugger) serait utilisable directement à partir de la Dreamcast, SiZiOUS peut peut-être donner un retour :P

Ce tuto est fini, si vous avez des questions n’hésitez pas :wink:
Modifié en dernier par edd le 23 avr. 2015 20:02, modifié 3 fois.
Raison : réédition
S'il y a des vis, c'est que c'est fait pour être démonté (mais parfois vaut mieux s'en abstenir)
Avatar du membre
bouz
membre hyper actif
membre hyper actif
Messages : 866
Enregistré le : 12 mai 2009 21:05

Re: Créez vos homebrews Dreamcast sous Linux !

Message par bouz »

J'ai compilé ma toolchain il y a 5 ans sur un portable tout pourri. Depuis, je n'ose plus rien mettre a jour de peur de pas parvenir à recompiler tout ça.
Merci pour ce tut, c'est rassurant :-)
Avatar du membre
Ayla
nouveau venu
nouveau venu
Messages : 94
Enregistré le : 18 oct. 2009 20:58

Re: Créez vos homebrews Dreamcast sous Linux !

Message par Ayla »

T'es pas obligé de virer l'ancienne pour compiler une nouvelle toolchain ;)
Si elle a 5 ans je te conseille vivement de la mettre à jour, les dernières versions de GCC apportent quand même un gain non négligeable de performance.

Et si ça peut te remotiver... :wink:
Avatar du membre
Dreamkey
membre hyper actif
membre hyper actif
Messages : 1428
Enregistré le : 31 janv. 2007 14:19

Re: Créez vos homebrews Dreamcast sous Linux !

Message par Dreamkey »

Exact, par contre va peut-être falloir recoder quelque lignes, certaines fonctions sont devenues obsolètes.
S'il y a des vis, c'est que c'est fait pour être démonté (mais parfois vaut mieux s'en abstenir)
Avatar du membre
bouz
membre hyper actif
membre hyper actif
Messages : 866
Enregistré le : 12 mai 2009 21:05

Re: Créez vos homebrews Dreamcast sous Linux !

Message par bouz »

J'ai quand même pu compiler KOS 1.3, mais les dernières versions ne doivent pas passer...
Je vais peut-être retenter le coup si j'ai le courage et pas mal de temps (il m'avait fallu 2 jours pour compiler tout ça!)
Avatar du membre
Dreamkey
membre hyper actif
membre hyper actif
Messages : 1428
Enregistré le : 31 janv. 2007 14:19

Re: Créez vos homebrews Dreamcast sous Linux !

Message par Dreamkey »

Je dirais que tu en as pour 3 heures avec un PC pas trop vieux (genre milieu de gamme d'il y a 4/5 ans), avec une connexion internet pas trop mauvaise.
Mais si tu trouves le probleme que j'ai eu sur Ubuntu et Fedora, n’hésite pas à partager ;)
S'il y a des vis, c'est que c'est fait pour être démonté (mais parfois vaut mieux s'en abstenir)
Avatar du membre
bouz
membre hyper actif
membre hyper actif
Messages : 866
Enregistré le : 12 mai 2009 21:05

Re: Créez vos homebrews Dreamcast sous Linux !

Message par bouz »

J'ai un portable de 2001. 128 MB de RAM, mais j'ai rallongé à 1BG, ça va beaucoup plus vite. PAr contre, le disque dur est super lent.
Et le lecteur de CD est mort. J'ai pu installer une Debian avec du temps et de la patience :-)
dcmostro
nouveau venu
nouveau venu
Messages : 2
Enregistré le : 15 janv. 2012 18:18

Re: Créez vos homebrews Dreamcast sous Linux !

Message par dcmostro »

Whoa! Merci 1000 fois pour ce tuto dreamkey! Je viens juste de me remettre à la dreamcast (avec un break de plusieurs années...), et à l'époque, je n'ai jamais réussi à faire un toolschain qui soit parfaitement fonctionnel (donc, frustrations).
Et là, bingo, je tombe sur ton tuto, et ça marche!
A noter que je suis sous Ubuntu 10.10, et que ça fonctionne aprés avoir installé quelques paquets manquants.
La 2éme chose, pour info, c'est que entre ton tuto et mon install, il y a surment eu une mise à jour , car binutils est passé de 2.21 à 2.22. J'ai donc décidé de ne pas faire la modif en 2.21.1a, et laisser 2.22. Tout semble fonctionner (en tout cas, les exemples marchent).
Voilà, manque plus qu'à tester le transfert PC-DC. J'ai bien retrouvé mon coder cable, mais plus aucun ports series sur mon PC! (adaptateur commandé) Donc, à voir.
Merci encore pour ce tuto et pour le site en général. Manque plus qu'à trouver le temps de bosser un peu tout ça...
Avatar du membre
Dreamkey
membre hyper actif
membre hyper actif
Messages : 1428
Enregistré le : 31 janv. 2007 14:19

Re: Créez vos homebrews Dreamcast sous Linux !

Message par Dreamkey »

Merci pour le retour, en effet ils ont mis à jour les scripts. Je retente ça sur un Ubuntu et Fedora et je poste les résultats :)
S'il y a des vis, c'est que c'est fait pour être démonté (mais parfois vaut mieux s'en abstenir)
Avatar du membre
bouz
membre hyper actif
membre hyper actif
Messages : 866
Enregistré le : 12 mai 2009 21:05

Re: Créez vos homebrews Dreamcast sous Linux !

Message par bouz »

Argl, déjà beaucoup de temps passé sans arriver à compiler le compilo. Je vais péter un câble, heureusement que je ne fais pas ça tous les jours, comme dirait Alice.
Je vous tiens au courant quand j'y arrive!
Avatar du membre
bouz
membre hyper actif
membre hyper actif
Messages : 866
Enregistré le : 12 mai 2009 21:05

Re: Créez vos homebrews Dreamcast sous Linux !

Message par bouz »

Je ne parviens pas à compiler newlib. J'ai un message "configure: error: cannot compute suffix of object files: cannot compile". J'ai regardé mon fichier config.log et je n'ai rien trouvé de follement intéressant.
J'ai trouvé des choses là-bas: http://gcc.gnu.org/wiki/FAQ#configure_suffix mais je ne vois pas trop ce que je peux faire.
Des paquets à installer en particulier? J'ai une install standard d'Ubuntu qui date d'hier.

:?

Edit: C'est le problème que tu mentionnais tout au début de ton tuto. => Je n'ai pas de bol
Avatar du membre
bouz
membre hyper actif
membre hyper actif
Messages : 866
Enregistré le : 12 mai 2009 21:05

Re: Créez vos homebrews Dreamcast sous Linux !

Message par bouz »

Question à 10 Francs: j'ai fait une install d'Ubuntu 64 bits. Tu n'aurais pas fait ton install en 32bits par hasard?
Il semblerait que j'aie un problème avec les dépendances MPFR, MPC et GMP. Il y aurait potentiellement un problème du fait qu'on compile un compilo 32 bits avec un compilo 64 bits.

Je vais tout recommencer en 32 bits si personne ne repond avant ;-)
Avatar du membre
bouz
membre hyper actif
membre hyper actif
Messages : 866
Enregistré le : 12 mai 2009 21:05

Re: Créez vos homebrews Dreamcast sous Linux !

Message par bouz »

Même problème avec Fedora 32 bits.
Au moins, j'ai une install Linux, maintenant.

Sur quelles distribs avez-vous testé la compilation du compilo? ArchLinux, ça m'a l'air pas si simple...

Une bonne viellle Debian?
Avatar du membre
bouz
membre hyper actif
membre hyper actif
Messages : 866
Enregistré le : 12 mai 2009 21:05

Re: Créez vos homebrews Dreamcast sous Linux !

Message par bouz »

Encore une soirée passée à essayer d'installer Debian pour rien (l'image d'installation ne supporte pas les claviers non PS2 et mon portable n'a pas de port PS2).
La motivation commence à chuter grave.
Avatar du membre
Ayla
nouveau venu
nouveau venu
Messages : 94
Enregistré le : 18 oct. 2009 20:58

Re: Créez vos homebrews Dreamcast sous Linux !

Message par Ayla »

Salut bouz, n'hésite pas à passer sur IRC (Freenode, #dreamcastdev) si t'as besoin d'un coup de main.
Répondre