Mise en contexte
Le romhacking consiste en des activités gravitant autour de la modification de fichiers binaires de jeux rétro appelés habituellement roms. Il peut s'agir de modifier les différents éléments d'un jeu (graphiques, pistes sonores, code, etc.) directement avec un hex editor ou des outils spécialisés, de créer des applications spécialisées pour modifier un jeu en particulier ou bien de faire de la rétro-ingénierie pour documenter le code ou l'emplacement des différents éléments du jeu dans le fichier rom. Durant les treize dernières années, j'ai touché de différentes façons à toutes ces sphères du romhacking.
Ma découverte de ce passe-temps coïncida avec la première année de mon retour au collégial en informatique. J'ai découvert un forum en ligne spécialisé dans la modification d'un de mes jeux favoris, soit Final Fantasy VI (FF6) paru en 1994 sur la console Super Nintendo. Ce jeu est documenté par des romhackers depuis la fin des années 90 et des outils spécialisés comme FF3usME ou FF6LE existaient en 2011.
1) FF6: Enhanced (2011-2013)
1.1) Premiers pas
Mon premier projet fut d'éditer des séquences non contrôlables (cutscenes) ainsi que remplacer des graphiques d'ennemis et éditer leurs scripts d'actions, en vue de commencer ce qu'on appelle dans le milieu un romhack complet (complete hack), c'est-à-dire un projet qui modifie plusieurs aspects du jeu de façon significative. Ce projet avait pour titre FF6: Enhanced. Certains aspects du jeu pouvaient être modifiés avec des outils comme FF3usME. D'autres nécessitaient un hex editor, par exemple éditer les séquences non contrôlables, qui utilisent un langage de scriptage propre à FF6, comprenant plus de 250 commandes possibles, dont plusieurs avec paramètres. voici un peu à quoi ressemble ce langage de scriptage:
CC/9865: 38 Hold screen
CC/9866: 30 Begin action queue for character $30 (Camera), 5 bytes long (Wait until complete)
CC/9868: C4 Set vehicle/entity's event speed to faster
CC/9869: 9C Move vehicle/entity up 8 tiles
CC/986A: 9C Move vehicle/entity up 8 tiles
CC/986B: 84 Move vehicle/entity up 2 tiles
CC/986C: FF End queue
CC/986D: 48 Display dialogue message $0006, continue executing commands (Show text only)
Long ago, the War of the Magi
reduced the world to a
scorched wasteland, and magic
simply ceased to exist.
CC/9870: 42 Hide object $31
1.2) Développement
J'ai travaillé environ deux ans sur le projet, avec plusieurs heures d'expérimentation, comme montré plus bas avec quelques exemples de personnage modifiés, nouveaux ennemis avec nouveaux scripts, nouvelles cutscenes, nouvelles pistes sonores et autres modifications de toutes sortes.
La création de pistes sonores était particulièrement laborieuse, puisqu’à cette époque c'était fait avec un hex editor. Par exemple, une note A# 3/16
a une valeur hexadécimale de 0x92
et un effet comme un changement de ton avec enveloppe est fait avec C8 XX YY
où XX
est le délai et YY
est la durée du cycle. C'est pourquoi j'ai eu de l'aide pour les nouvelles pistes sonores.
Nouvelles pistes sonores
Never Ending Story - Atreyu's Quest
Secret of Evermore - Cecil's Town
En 2013, je me rendis compte que mon projet était beaucoup trop ambitieux, j'ai donc abandonné le tout pour me consacrer sur d'autres projets comme la création d'outils en langages de haut niveau et la parution de petits romhacks que d'autres romhackers pourraient utiliser dans leur projet.
2) Implication et contributions (2013-2018)
2.1) Applications C# WinForms/WPF/console
Cette période fut marquée par plusieurs choses. J'étais arrivé à un point où je commençais a être à l'aise avec le code assembleur 65816 et des langages tels C#, j'ai donc commencé à coder des applications pour rendre la modification de FF6 plus simple pour les autres. Sans entrer dans le détail de chaque projet, j'ai publié FF6AE, un éditeur pour la version Game Boy Advance de FF6. J'ai aussi publié FF6ExpED, un éditeur pour permettre quatre items volés ou laissés tombés par les ennemis au lieu du maximum original de deux. J'ai aussi publié FF6MMGEN, un application console génératrice de mini-mappes avec six couleurs au lieu de quatre originalement.
2.2) Romhacks publiés
De 2013 à 2018 environ j'ai aussi officiellement publié une vingtaine de romhacks, soit principalement en assembleur 65816 comme le Multi-Fonts Hack et le Gradient Hack mais aussi des modifications graphiques, de nouvelles commandes pour séquences (event commands), des corrections de bogues, une expansion de la mémoire de sauvegarde (SRAM expansion). J'ai aussi encore plusieurs romhacks en suspens que j'aimerais un jour terminer, comme un cycle complet de jour et de nuit, chose qui n'est pas présente dans le jeu original.
2.3) Aide apportée
Durant cette période je me suis aussi beaucoup impliqué à donner de l'aide sur des forums aux nouveaux venus et à ceux qui avaient une certaine expérience. J'ai aussi activement participé à la création d'un wiki spécialisé dans toutes les versions de Final Fantasy 6 et j'ai aidé à la documentation de certaines données de jeu comme les noms des personnages pour la scène finale et la cartographie des versions Advance de FF6. J'ai finalement implémenté plusieurs petits (et moins petits!) romhacks dans le projet Return of the Dark Sorcerer (RotDS), don un ami en ligne est le développeur principal.
3) Période récente (2019-2024)
À partir de 2019 j'ai graduellement diminué ma participation en ligne et le nombre de nouvelles publications, principalement dû à une perte d'intérêt. Cependant en 2022 j'ai publié quelques petits romhacks. En 2023 j'ai commencé la programmation d'un site web pour RotDS, comprenant des piste sonores, des images, un guide complet et différentes statistiques du romhack. Il y a des choses que je veux encore faire avec Final Fantasy VI comme un projet de traduction française d'un romhack, soit de Brave New World ou de RotDS. Je voudrais cependant quand même mettre une partie de mes énergies ailleurs comme dans l'approfondissement de mes connaissances dans différents aspects du développement logiciel.