Pokémblem (GBA)

Présentation de Pokémblem

Pokémblem est un jeu vidéo pour la Nintendo GameBoy Advance (souvent abrégée GBA). C'est un jeu de combat en tour par tour, mais il n'est pas pour autant dans la lignée classique des jeux pokémons. En effet, c'est un version dérivée de Fire Emblem 8 dit The Sacred Stones.

Ce n'est pas un jeu pokémon officiel. Il a été fait par un fan. Celui-ci se donne Vesly comme pseudonyme.

Puisque c'est une version modifiée d'un jeu non-pokémon officiel, on peut à son sujet parler de hackrom. On peut donc le trouver sous la forme d'un fichier informatique à utiliser sur émulateur. Mais de base, un émulateur ne sait lire qu'une ROM (Read-Only Memory), or la distribution officielle n'est pas faite sous cette forme. En effet, c'est un patch qui est délivré et il faut l'appliquer sur la ROM non-modifiée.

Application du patch UPS

Pourquoi faut-il patcher ?

Même si le jeu a plein de choses inédites par rapport aux jeux officiels sortis sur GBA et que ça a nécessité beaucoup de travail, il ne part pas pour autant de rien en terme de code. En effet, pour éviter d'avoir à recoder certaines choses, un jeu officiel pré-existant est utilisé. Pour que celui-ci soit simple à trouver, la base est un jeu officiel, donc très connu et déjà recherché pour lui-même, ainsi qu'invariant (car il n'y aura pas de mise-à-jour, du moins aucune qui soit officielle).

Pourquoi alors ne pas fournir le jeu déjà patché ? L'explication est de n'avoir à fournir que la différence. Si on a déjà le jeu qui sert de base, ça fait une quantité de données légèrement moindre à obtenir, mais cet argumentaire est en fait au mieux anecdotique. Le vrai avantage est sur le plan légal. En effet, distribuer un jeu sous droit d'auteur sans l'accord du dit auteur (en général une personne morale) est illégal dans certaines juridictions, y compris si cela en est qu'une partie. En ne distribuant qu'un patch, c'est-à-dire un différentiel applicable, ça évite le risque juridique, ou plutôt le déplace vers les gens qui appliquent le patch, car ceux-ci doivent en théorie avoir eu légalement le jeu de base.

La ROM de base

La ROM de base de Pokémblem est Fire Emblem 8 The Sacred Stones. En fait, il faut être plus précis, c'est la version pour les États-Unis d'Amérique du Nord (EUAN). En anglais, c'est United States of North America (USNA), mais par son hégémonie (historique) ça peut être dit United States of America (USA), malgré qu'il y ait au moins aussi les États-Unis Mexicains qui font pourtant aussi parti du continent américain (mais eux dans la partie sud).

Pour vérifier que vous avez la bonne version, vous pouvez en faire calculer la somme de contrôle selon divers algorithmes. Sous GNU/Linux et *BSD, vous avez probablement des programmes pré-installés implémentant les plus courants. Ceux-ci sont généralement disponibles dans un terminal textuel. Le nom de la commande pour un algorithme de somme de contrôle est souvent juste le nom de l'algorithme en minuscule et avec parfois le suffixe sum. Par exemple, pour SHA1, sous Debian GNU/Linux, vous pouvez exécuter "sha1sum jeu.gba".

Somme de contrôle (checksum) de Fire Emblem 8 The Sacred Stones (exclusif aux EUAN)
Algorithme Valeur
CRC32 a47246ae
MD5 005531fef9efbb642095fb8f64645236
SHA1 c25b145e37456171ada4b0d440bf88a19f4d509f

Le patch UPS

Un patch est un différentiel applicable sous un certain format. Pour utiliser un patch dans un format, il faut un programme qui le gère. Il en existe de multiple pour les jeux de GBA (qui sont, d'un point de vue ordinatique, des binaires), dont xdelta, VCDIFF, IPS et UPS.

Pour Pokémblem, la personne développeuse a décidé de diffuser un patch au format UPS, car c'est plus moderne qu'IPS et que comme lui c'est souvent géré par les émulateurs. Pour jouer à Pokémblem, après application du patch UPS, il y a 2 solutions : utiliser un émulateur gérant le format UPS et capable d'automatiquement l'appliquer ou obtenir un fichier de ROM de Pokémblem à partir de la ROM de base et par translation de celle-ci via le patch.

Application automatique du patch UPS par un émulateur

Si vous utilisez un émulateur et que vous pensez qu'il gère l'application automatique d'un patch UPS, mettez le fichier du jeu de base et celui du patch dans le même dossier, avec chacun le même nom excepté l'extension (".gba" pour le jeu de base et ".ups" pour le patch). Ça demande un peu de ré-appliquer le patch à chaque lancement du jeu, mais c'est au final tout de même peu coûteux en ressources et donc suffisamment rapide pour ne pas être gênant. Pour information, parmi les émulateurs libres, c'est géré par au moins mGBA et VBA-M, qui tous les 2 fonctionnent sur des systèmes d'exploitation libres, mais aussi sur les non-conseillés Windows et macOS (qui devraient purement et simplement disparaitre ou être libérés d'une manière permettant l'appropriation collective et idéalement démocratique).

Obtention d'un fichier de ROM patchée

Pour éviter d'avoir à ré-appliquer le patch à chaque fois ou transmettre le jeu déjà patché pour plus de simplicité (mais, dans certaines juridictions, cela peut être considéré comme étant illégal, si l'auteur du jeu de base ne l'a pas voulu et que vous ne pouvez pas vous assurer que les gens obtenant le jeu patché aient bien légalement celui de base), vous pourriez vouloir créer une ROM patchée sous la forme d'un fichier partageable. Pour cela, il existe plusieurs programmes, dont des libres, et il ne sera question ici que de ceux-là (sans prétendre, même avec cette contrainte, que la liste ci-dessous soit exhaustive).

L'émulation

Les ROMs

Une ROM pour GameBoy Advance a souvent ".gba" pour extension. Ce n'est pas un format compressé, donc on peut vouloir compresser pour économiser de la place (par exemple avec GZIP ou BZIP2), mais les émulateurs ne gèrent pas nécessairement le fait de décompresser tout seul et d'une manière transparente les jeux compressés et ne gèrent que certains formats de compression pour ceux ayant cette fonctionnalité.

Les émulateurs

mGBA

mGBA est un émulateur libre pour la GameBoy Advance. Il fonctionne sur des systèmes d'exploitation "classiques" (au moins GNU/Linux, *BSD, Windows et macOS) et aussi sur des consoles de jeu (Nintendo Wii, Nintendo 3DS et Nintendo Switch, ainsi que la PlayStation Vita !). Il a un frontal en Qt et un autre en SDL. Son code source est mis à disposition selon la Mozilla Public License Version 2.0.

Paquets pour mGBA

VisualBoyAdvance

VisualBoyAdvance est un émulateur pour la GameBoy Advance sous licence publique générale GNU 2.0 (c'est donc du logiciel libre). Malheureusement il est au point mort, mais il existe des versions dérivées qui continuent le développement (dont VBA-M). Il a un frontal basique en SDL et un autre plus riche en GTK.

Paquets pour VisualBoyAdvance

VisualBoyAdvance-M

VisualBoyAdvance-M est une suite de VisualBoyAdvance. Il y a un frontal en SDL et un autre en WxWidgets (qui remplace celui en GTK).

Le code source est disponible sur GitHub de Microsoft. C'est du C++ et CMake est utilisé pour la construction, ça n'a donc rien de surprenant. Si on fait la compilation et l'installation soi-même, checkinstall permet d'installer proprement sous la forme d'un paquet et permettra ainsi de désinstaller simplement avec le gestionnaire de paquets du système d'exploitation.

Paquets pour VisualBoyAdvance-M

Mednafen

Mednafen est un émulateur pour plusieurs machines, dont la GameBoy Advance de Nintendo. Pour cette dernière, il n'a pas de moteur d'émulation propre et en a donc repompé un tiers qui est libre. Il utilise OpenGL et SDL. C'est un logiciel libre. Il utilise de multiples licences d'après le paquet Debian (dont la GPLv2 et la LGPLv2).

Paquets pour Mednafen

Utilitaire pour l'émulation

QJoyPad

Les émulateurs reconnaissent généralement, si ce n'est toujours, bien le clavier et la souris. En revanche, c'est moins souvent le cas pour les manettes, en particulier pour les émulateurs qui sont morts depuis plusieurs années. Pour contrer cela, on peut faire en sorte que les touches d'une manette agissent comme un clavier, en associant chaque touche voulue de la manette à une touche d'un clavier.

QJoyPad est un logiciel libre qui permet de faire cela. Au moment d'écrire ces lignes (c'est-à-dire en début 2020), le ou les gens le faisant n'ont la prétention que de gérer les systèmes GNU/Linux avec X, mais il est à priori probable d'arriver à le faire tourner sur un système BSD avec X. À moins que cela change à l'avenir, il ne gérerait donc pas Wayland. Il est fait avec Qt, d'où son nom. Pour ce qui est de la licence, c'est à 100% de la GPL.

Paquets pour QJoyPad

Licence de ce document

Ce document (dont son code source) a été fait par Nicola Spanti. Il est mis à disposition selon les termes de la licence Creative Commons BY-SA 4.0, la licence de documentation libre GNU 1.3 et la licence publique générale GNU (version 2.0 et 3.0). Vous pouvez choisir la licence qui vous convient le plus et dans la version que vous préférez si plusieurs sont proposées. Les licences citées autorisent l'utilisation pour tous les usages, la modification, et le partage quelque soit la forme (code HTML, PDF, impression papier, etc.) et le canal (Internet, clé USB, brochure, journal, livre, etc.) dont sa nature (centralisé, pair-à-pair, commercial, etc.) que cela soit une version originale ou modifiée.