Programmation C

MSXgl

Cet article a été mis à jour, vous consultez ici une archive de cet article!
MSXgl est une bibliothèque C gratuite et open-source pour créer des applications sur MSX en utilisant SDCC.
La bibliothéque est architecturée autour de nombreux modules qui implémentent de façon optimisée les différentes fonctionnalités du MSX et d'un outil de génération multiplateforme (Windows, Linux et macOS) qui permet de générer en 1 click, le programme final en divers format (ROM, MegaROM, MSX-DOS et binaire BASIC).

Fonctionnalités


Formats


A partir d'un même code en C, MSXgl peut générer un code binaire utilisable sur MSX dans divers format :
  • ROM "pleine" (8, 16, 32, 48 ou 64 Ko).#1
  • MegaROM ou ROM "mappée" au format ASCII-16 (de 64 Ko à 4 Mo) ou ASCII-8, Konami et Konami avec SCC (de 64 Ko à 2 Mo).
  • Binaire ( .com ) pour MSX-DOS 1 ou MSX-DOS 2.
  • Binaire ( .bin ) pour MSX BASIC.
#1 Pour les format 48 et 64 Ko, il est possible d'ajouter automatiquement un gestionnaire d'interruption pour remplacer celui du BIOS.

Modules


La librairie MSXgl est composé de nombreux modules qui implémentent les fonctionnalités du MSX. L'utilisateur peut choisir les modules qui sont utiles pour les besoins de son programme.

Core


  • bios: Gestion du BIOS
  • clock: Horloge temps-réel du MSX2 (RP-5C01)
  • dos: Fonctionnalités MSX-DOS 1 & 2 (gestion des fichiers, I/O de la console, etc.)
  • input: Clavier, joystick, souris
  • math: Fonctions mathématiques optimisées
  • memory: Gestion de la mémoire
  • print: Affichage de texte (module générique quelque soit le mode écran)
  • string: Gestion des chaine de caractère
  • system: Gestion des slots et des opérations binaire (sans passer par le BIOS)

Tools


  • compress: Décompresseur RLEp (Pattern based RLE)
  • compress/bitbuster: Décompresseur BitBuster (version 1.2)
  • compress/bitbuster2: Décompresseur BitBuster 2 (version 2.0)
  • compress/pletter: Décompresseur Pletter (version 0.5c1)
  • compress/zx0: Décompresseur ZX0
  • draw: Fonctions de dessin avancées
  • game: Architecture de programme
  • game_menu: Gestion des menus
  • game_pawn: Gestion des entités du jeu (animation, déplacement, collision, etc.)
  • input_manager: Gestion avancé des intpus
  • scroll: Fonctions de scrolling
  • device/ninjatap: Gestion du NinjaTap (pour brancher 4 joysticks par port)

Processeurs vidéo


  • vdp: Fonctionnalités pour les TMS9918, V9938 and V9958 (gestion des modes, I/O en VRAM, sprites, commandes, etc.)
  • v9990: Gestion du Yamaha V9990

Processeurs audio


  • psg: Gestion du PSG (AY-3-8910, YM2149 or T7766A)
  • msx-music: Gestion du MSX-Music (YM2413, FM-PAC)
  • msx-audio: Gestion du MSX-Audio (Y8950 + YM3014, Music-Module)
  • scc: Gestion du Konami SCC

Formats audio


  • arkos/akg_player: AGK pour Arkos Tracker II
  • arkos/aky_player: AGY pour Arkos Tracker II
  • arkos/akm_player: AGM pour Arkos Tracker II
  • ayfx/ayfx_player: ayFX sound-effect
  • lvgm/lvgm_player: Custom light-VGM music
  • pcm/pcmenc: PCM-encoder
  • pcm/pcmplay: PCM Play
  • pt3/pt3_player: Vortex Tracker II
  • trilo/trilo_scc_player: TriloTracker SCC
  • vgm/vgm_player: VGM
  • wyz/wyz_player: WYZ Tracker (based on version 47c)
  • wyz/wyz_player2: WYZ Tracker (based on version 47d)


Build tool


Le Build tool est un outil en ligne de commande qui s'occupe de toutes les étapes pour générer le fichier final :
  • Il compile tous les fichiers C ou assembleur du projet (ainsi que ceux de la librairie si besoin),
  • Il assemble (link) tous ces bouts de code,
  • Il converti le tout en binaire ( .rom , .com ou .bin ),
  • Dans le cas d'un programme MSX-DOS ou BASIC, il regroupe les fichiers nécessaires au programme et peut générer une image disque ( .dsk ),
  • Si un émulateur a été configuré, il lance automatiquement le programme généré avec l'émulateur configuré comme il faut,

Tous les programmes nécessaires pour ces étapes sont fournis directement dans le package MSXgl pour Windows et Linux. Pour ces plateformes, il n'y a donc aucun autres logiciels à installer (autre qu'un émulateur si vous voulez tester votre programme sur votre PC). Pour les utilisateurs de macOS, voir ce guide.

Émulateurs


Les émulateurs suivants sont supportés:


Installation


Pour installer MSXgl sur votre ordinateur, il faut suivre les étapes suivantes :

1️⃣ Créer un répertoire (appelé-le " MSXgl " par exemple).
Note : Il est recommandé de ne pas utilisé d'espace dans le chemin complet vers ce répertoire.

2️⃣ Installer la librairie:
- Télécharger et décompresser dans votre répertoire la dernière version de la librairie,
- ou Cloner le dépôt Git https://github.com/aoineko-fr/MSXgl.git (tag v0.8.0-alpha ),

3️⃣ (Optionnel) Si vous voulez utiliser l'option d'auto-démarrage d'un émulateur pour tester votre programme:
- Editer le fichier MSXgl/projects/default_config.js (la configuration par défaut du Build tool),
- Chercher " Emulator ", mettre le chemin vers votre émulateur préféré et mettre " DoRun = true; ".
Note : Les options du fichier default_config.js peuvent être écrasé par les valeurs données dans fichier de configuration d'un projet ( project_config.js ).

Et voilà! Vous pouvez maintenant tester l'un des nombreux programmes d'exemple ou commencer à créer votre propre programme.

Structure de fichiers



engine : MSXgl library
├─ content : Data ready to include (font, math table)
├─ datasrc : Data source
├─ doc : Documentation
├─ lib : Static library binaries (perhaps one day...)
├─ script : Build Tool scripts
└─ src : Library sources (.c and .h)
projects : Programs
├─ example : Game example
├─ samples : Sample programs (VDP, PSG, Sprite, ...)
├─ targets : Samples to test all target (ROM, DOS, BASIC)
├─ template : MSX 1 template sample (can be use as base to create a new program)
└─ template_msx2 : MSX2 template sample (can be use as base to create a new program)
tools : Tools
├─ MSXtk : MSX tool kit utilities (MSXhex is used in the build process)
├─ audio : Tools used with audio
├─ build : Tools used by the Build tool
├─ compress : Tools used to compress data
└─ sdcc : SDCC (binaries for Windows and Linux, and z80 lib)

Programmes d'exemples (samples)


MSXgl fournis un grand nombre de programmes d'exemple pour illustrer l'utilisation des différents modules.

Projets d'exemple


MSXgl fournis 3 projets d'exemple qui peuvent servir de base pour votre propre projet.
projects
├─ example : Example de jeu.
├─ template : Base pour un programme MSX1.
└─ template_msx2 : Base pour un programme MSX2.

Pour tester ces projets, aller dans l'un de ces répertoires et exécuter le script build.bat sous Windows ou ./build.sh sous Linux et macOS.

Le fichier final devrait se trouver dans le sous répertoire /emul/ .

Par ex., dans le cas du projet tamplate qui est configuré pour créer une ROM de 32 Ko, le fichier final se trouve dans projects/tamplate/emul/rom/template.rom .
Tester cette ROM avec votre émulateur préféré.

Si vous avez configurez un émulateur et activé l'option de lancement automatique (voir "Installation"), l'émulateur sera automatiquement lancé à la fin de création de la ROM.

Codes d'exemple



Pour éviter d'avoir un répertoire pour chaque exemple, la procédure de test des nombreux exemples contenu dans le répertoire samples est légèrement différente.
projects
└─ samples
C'est toujours le script build.bat sous Windows ou ./build.sh sous Linux et macOS qui permet de générer le programme final, mais il faut préciser dans la ligne de commande le programme à générer.
Par ex., pour générer le programme d'exemple qui montre l'utilisation du module Game qui s'appelle s_game , il faut utiliser la ligne de commande : build.bat s_game (ou ./build.sh s_game sur Linux ou macOS).