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


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)

Processeur 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

Processeur 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

Format 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)