Rétro Programmation

Programmer du matériel trentenaire avec des outils modernes. C’est l’objectif que je me suis fixé dans ce projet de rétro programmation. Programmer des machines âgées de trente ans, en mélangeant des techniques modernes avec des outils plus anciens.

 

Le Commodore Amiga et sa Graphics.library

Le point de départ de ce projet a été l’exploration des possibilités multimédia de la graphics.library de Dale Luck. La graphics.library est une partie intégrante de l’ordinateur Commodore Amiga tel qu’il était vendu au grand public dès 1985. Il s’agit d’une bibliothèque exposant les possibilités graphiques très spécifiques de l’Amiga à travers une API C. Cette bibliothèque préfigurait des API plus modernes comme DirectX ou OpenGL avec pour but de faciliter et d’accélérer le développement d’applications visuelles ou de jeux vidéos.

Cependant, comme toute couche d’abstraction hardware, elle présentait des performances inférieures à ce qui était obtenu en adressant directement les registres hardwares. Pour cette raison, la quasi totalité des jeux réalisés sur Amiga ont très peu utilisé la graphics.library. Cette potentialité non réalisée dans l’histoire de la machine m’a poussé à d’expérimenter cette API. J’ai tenté d’en trouver les limites à travers des réalisations s’inscrivant dans la tradition de la demoscene.

 

Unusual Suspects

2eme prix de la compétition « Oldschool » à la Evoke 2014, Cologne, Allemagne.
Démonstration programmée en C89 pour l’ordinateur personnel Commodore Amiga 500 équipé d’AmigaOS 3.0.

Cette démo a été conçue pour fonctionner en multitâche, c’est à dire en coopération complète avec le système d’exploitation. Le bureau et toutes les fonctions utilisateurs de la machine sont donc disponibles pendant que la démo est lancée. Ce qui semble être une évidence aujourd’hui était une exception pour une machine grand-public vendue au milieu des années 80.

J’ai utilisé comme matériau graphique une galerie de 16 portraits réalisés par Sven ‘Ptoing’ Ruthner, sur lesquels j’ai plaqué des biographies parodiques, extrapolant l’univers auquel chaque personnage aurait pu appartenir.
Chaque portrait est précédé d’une modélisation 3D très sommaire, en lien avec la biographie du personnage.

François Gutherz : programmation.
Eric Kernin : musique.
Sven Ruthner : graphisme.
Jean-Marie Lamarche : modélisation 3D

Outils : Sublime Text, Git, WinUAE, SAS/C, Python 2.7/Python 3.

Téléchargement : Version Amiga OS 3.0, code source
 

System Zoetrope

3eme prix de la compétition « Wild » à la Outline Party 2015, Pays-Bas.
Démonstration programmée en C89 pour l’ordinateur personnel Commodore Amiga 500 équipé d’un Motorola 68000@7,14Mhz et d’1 Mégaoctet de mémoire vive.

Explorant toujours plus la graphics.library, je me suis imposé une contrainte supplémentaire : utiliser la version la plus ancienne de l’API, disponible dans la (presque) version initiale d’AmigaDOS 1.3.

François Gutherz : programmation, graphisme.
Luca De Bernardi : musique.

Outils : Sublime Text, Git, WinUAE, SAS/C, Python 3, 3DSMax, Photoshop, PPaint.

Téléchargement : Version AmigaDOS 1.3, code source

 

SEGA Megadrive

Zsenilia

4eme place de la compétition « Oldschool » à la UC 2015, Gernsheim, Allemagne
Courte démonstration programmée en C99 pour la console de jeu vidéo SEGA Megadrive équipée d’un Motorola 68000@7,14Mhz et de 128Ko de mémoire vive.

François Gutherz : programmation
David Vigh : graphisme
David Vandensteen: musique

Outils : Sublime Text, Git, Kega Fusion, GCC, Python 3.

Téléchargement : ROM Megadrive, code source

 

Malabars Bumper

4eme place de la compétition « Oldschool » à la Solskogen Party 2016, Norvège
Démonstration programmée en C99 pour la console de jeu vidéo SEGA Megadrive équipée d’un Motorola 68000@7,14Mhz et de 128Ko de mémoire vive.

Outils : Sublime Text, Git, Kega Fusion, GCC, Harfang3D, Python 3.

Téléchargement : ROM Megadrive, code source

Post navigation

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *