Un des effets les plus mobilisés par les coders sur Amiga a été le sine scroll, c'est-à-dire le défilé de texte déformé en modifiant l'ordonnée de colonnes de pixels successives selon un sinus, comme par exemple dans cette intro du groupe Falon :
Le must est le one pixel sine scroll, où chacune de ces colonnes est affichée à une ordonnée spécifique. Toutefois, produire un tel effet est très consommateur en temps de calcul, comme nous le montrerons en y procédant d'abord au seul moyen du CPU. Pour étendre l'effet, nous déchargerons le CPU en sollicitant deux coprocesseurs graphiques : le Blitter et le Copper.
Cet article peut être lu par n'importe qui, ayant été rédigé pour qui n'aurait jamais codé en assembleur 68000, et encore moins pour attaquer le hardware de l'Amiga.
Cliquez ici pour télécharger l'archive contenant le code et les données du programme présenté ici.
Cette archive contient plusieurs sources :
- sinescroll.s est la version de base dont il sera question jusqu'à ce que nous optimisions ;
- sinescroll_final.s est la version optimisée de la version de base ;
- sinescroll_star.s est la version enjolivée de la version optimisée.
Cet article est le premier d'une série de cinq. Nous allons voir comment installer en environnement de développement sur un Amiga émulé avec WinUAE et coder la Copper list de base pour afficher quelque chose à l'écran.
NB : Cet article se lit mieux en écoutant l'excellent module composé par Nuke / Anarchy pour la partie magazine de Stolen Data #7, mais c'est affaire de goût personnel...
Mise à jour du 12/07/2017 : Suppression du positionnement de BLTPRI dans DMACON pour améliorer les performances.
Mise à jour du 17/07/2017 : Désactivation de la fonctionnalité Save marks dans ASM-One pour faciliter l'édition mixte PC / Amiga.
Click here to read this article in english.
Mise à jour du 30/05/2018 : Ceux qui utilisent Notepad++ peuvent cliquer ici pour récupérer une version améliorée de l'UDL 68K Assembly (v4).
Mise à jour du 16/06/2018 : StingRay / Scoopex a permis de corriger des co(q)uilles, d'ajuster du vocabulaire et d'ajouter des détails pour la comptabilité. Merci à lui !
Installer un environnement de développement
Précisons d'emblée que toutes les documentations mobilisées pour coder le sine scroll présenté ici se trouvent en ligne :
- l'Amiga Hardware Reference Manual, qui détaille le fonctionnement et la manière de programmer le hardware de l'Amiga ;
- le M68000 Family Programmer's User Manual, qui détaille les instructions du 68000 ;
- le M68000 8-/16-/32-Bit Microprocessors User's Manual, qui détaille le temps d'exécution de ces dernières ;
- le manuel d'ASM-One, dont une version plus récente au format AmigaGuide se trouve toutefois dans l'archive de l'outil pour être consultée sur Amiga.
Il en est de même pour les outils, à commencer par l'émulateur Amiga. En effet, nul besoin de récupérer un Amiga sur eBay pour coder de nos jours sur cette machine. Nous utiliserons l'excellent émulateur WinUAE auquel nous demanderons de simuler un disque dur à partir d'un répertoire du PC. Cela nous permettra d'éditer le code dans un éditeur de texte sous Windows et de le charger pour l'assembler et le tester avec ASM-One s'exécutant sur un Amiga 1200 émulé par WinUAE.
Après avoir téléchargé et installé WinUAE, nous devons récupérer la ROM et le système d'exploitation, à savoir le Kickstart et le Workbench dans leurs versions 3.1. Kickstart et Workbench sont encore soumis à des droits. Ils sont commercialisés pour quelques dizaine d'euros par Amiga Forever.
Dans WinUAE, commençons par recréer la configuration d'un Amiga 1200 dans Hardware :
- dans CPU and FPU, sélectionnons un 68020 ;
- dans Chipset, sélectionnons AGA ;
- dans ROM, sélectionnons le Kickstart 3.1 ;
- dans RAM, optons pour 2 Mo de Chip pas de Slow ;
- dans CD & Hard drives, cliquons sur Add Directory or Achives... et ajoutons un device nommé DH0: renvoyant à un répertoire de notre PC où nous trouverons les fichiers de cette simulation de disque dur.
Cette configuration étant créée, enregistrons-là. Pour cela, cliquons sur Hardware, donnons-lui un nom et cliquons sur Save. Par la suite, nous pourrons recharger à tout instant la configuration en double-cliquant dessus.
Dans la même rubrique, rendons-nous dans Floppy Drives pour simuler l'insertion dans le lecteur de disquettes DF0: de la première disquette du Workbench - celle libellée Install 3.1. A cette occasion, réglons la vitesse d'émulation du lecteur de disquettes au maximum (glissière tout à gauche, sur Turbo) pour ne plus perdre de temps.
Nous pouvons alors cliquer sur Reset pour lancer l'émulation.
Une fois le Workbench chargé à partir de la disquette, il s'agit de l'installer sur le disque dur pour s'épargner de long temps de chargement. Double cliquons sur l'icône de la disquette Install 3.1
, puis sur celle de son répertoire Install, et enfin sur celle de la version de l'installation que nous souhaitons. Laissons-nous ensuite guider dans le processus d'installation du Workbench sur le disque dur :