Portage en cours d’Out Run en version Arcade pour Amiga AGA par l’auteur de Cannonball (moteur opensource d’Out Run pour ordinateur moderne). La configuration visée serait celle de l’Amiga réel de l’auteur: un A1200 avec 68030. C’est en découvrant les portages sur Amiga RTG de son Cannonball qu’il a eu l’idée de cette nouvelle version native pour Amiga.
J’ai eu beaucoup de mal à optimiser les routines de sprites.
Quelques points forts :
1/ Les 15 Stages sont en place et le rendu est correct avec les données originales du niveau. Vous pouvez progresser à travers eux, via le partage de la route et les touches du curseur. Le moteur et les optimisations que j’ai faites semblent techniquement sains. Tous les niveaux devraient être parfaits au pixel près par rapport à l’original en termes de disposition, de cartes de hauteur de route, de courbes, de disposition des sprites.
2/ Les routines de sprites sont maintenant beaucoup plus rapides. D’un facteur de 2 à 3 fois les performances. J’ai divisé le rendu des sprites en 6 routines personnalisées qui peuvent chacune faire une variété d’hypothèses sur la façon dont le sprite va être rendu. Ce code est un cauchemar à maintenir, mais il est aussi optimisé que mon cerveau peut le supporter pour l’instant. Seul un nouveau paradigme pourrait améliorer les choses. Ou alors, il suffit de supprimer les décors.
3/ J’ai optimisé une partie du code original d’OutRun. Pour être honnête, ce n’est pas le chemin critique en terme de performance, mais il y avait des inefficacités dans les routines de sprites les plus appelées. Je pense que je suis la première personne à optimiser le code original depuis 1986, donc c’est assez amusant et satisfaisant.
4/ Dans un mouvement qui m’a quelque peu surpris, j’ai réussi à faire fonctionner la translucidité des ombres et avec une solution qui n’est pas plus lente que le rendu d’un sprite – enfin, c’est plus rapide que le rendu des blobs que j’avais auparavant ! Donc oui, le moteur peut désigner une ombre à un sprite et il assombrira les pixels sous-jacents de la couche de route selon le matériel. J’utilise en fait les valeurs correctes dérivées de l’analyse du matériel pour l’assombrissement. Je ne sais pas si MAME est encore bogué, mais ses ombres étaient beaucoup trop claires pendant de nombreuses années. Améliorons la version Amiga !
Il existe un autre mode d’ombrage qu’OutRun utilise également. Je ne pense pas pouvoir le supporter du point de vue des performances car il nécessiterait une vérification du rendu par pixel qui ferait chuter les performances. Mais c’est moins visible et utilisé pour un effet mineur en comparaison.
5/ J’ai encore optimisé mon code routier. C’est amusant – vous pensez qu’il n’y a plus rien, et puis vous le regardez un autre jour et vous trouvez une série d’idées. Ce sont des gains marginaux à ce stade.
Globalement, je pense que c’est le projet d’optimisation et de portage le plus complexe que j’ai jamais entrepris. Bien que je ne veuille pas créer un faux sentiment d’espoir, la mise à l’échelle des sprites et le rendu des décors étaient les points qui me préoccupaient le plus. Et cela fonctionne plus rapidement maintenant.
Toutes les questions sur le codage sont les bienvenues. Il y a beaucoup de détails dans lesquels je pourrais entrer…
Je n’ai jamais visé un A1200 stock avec ce projet, pour le meilleur ou pour le pire, car il exécute le code arcade et utilise abondamment la FastRam.
Agermose se bat sur le A1200 stock avec sa version. Un projet encore plus difficile que celui-ci.