Gen1Recomp : un Poke 1 natif en Lua, sans émulateur et sans ROM embarquée
bryanthaboi/gen1recomp offre une implémentation open source exploitable en conditions réelles avec une structure réutilisable.
En bref
- De quoi s’agit-il ?
- Gen1Recomp recrée Red, Blue, Yellow, Gold, Silver et Crystal en Lua/LÖVE2D. Le moteur est écrit à la main, les données sont extraites d'une ROM fournie par l'utilisateur, et le projet se méfie ouvertement des sites qui se font passer pour lui.
- À qui s’adresse-t-il ?
- Adoptez Gen1Recomp si vous voulez jouer aux Poke 1 en natif avec des options de rendu modernes, sans émulateur, et si vous acceptez de fournir une ROM légale. Ne l'utilisez pas si vous attendez une compatibilité Gen 2 complète : Gold, Silver et Crystal sont en phase 1, avec un moteur encore en construction.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
- En quel langage est-il écrit ?
- Principalement C, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Ce que résout ce projet, et pour qui
Gen1Recomp s'adresse à celles et ceux qui veulent rejouer aux Poke 1 sans passer par un émulateur. Le problème est double : les cartouches originales sont difficiles à trouver, et les émulateurs ajoutent une couche d'interprétation qui peut dénaturer le rendu. Ici, le moteur est écrit en Lua, dans le cadre de LÖVE2D, et les données du jeu sont extraites d'une ROM fournie par l'utilisateur. Le projet ne contient ni ROM, ni données pré-extraites. La cible est clairement le joueur curieux, mais aussi le moddeur : le projet propose un gestionnaire de mods et des options persistantes dans un fichier `options.lua`. Le ton du README est décontracté, presque provocateur, avec un acronyme revendiqué : Reverse Engineering Causes Obsessive Mental Problems. Ce n'est pas un projet académique, c'est un projet de passionné qui assume pleinement son approche.
Le mécanisme : ROM vérifiée, cache privé, synthèse audio
Le fonctionnement repose sur une importation unique. Au premier lancement, l'utilisateur fournit un fichier `.gb` ou `.gbc`. Le programme vérifie son SHA-1 parmi une liste précise : sept empreintes pour Red, Blue, Yellow, Gold, Silver et deux versions de Crystal. Si la ROM est valide, l'importation crée des données de jeu, puis la ROM est libérée de la mémoire. Elle n'est pas copiée dans le cache. Les lancements suivants utilisent un cache généré, privé, et ne redemandent pas la ROM. Ce mécanisme a une conséquence importante : le jeu ne fonctionne qu'avec les versions canoniques américaines. Une ROM européenne ou une version modifiée sera refusée. L'audio est synthétisé à l'exécution à partir de programmes de canaux audio copiés depuis la ROM. Cela évite d'embarquer des échantillons pré-calculés, mais cela signifie que la qualité sonore dépend entièrement de la synthèse, ce que le README ne détaille pas.
Installation et lancement : des commandes simples, mais des prérequis stricts
Le démarrage est simple : ouvrez l'application de bureau, choisissez votre ROM ou glissez-la dans la fenêtre. L'importation prend quelques secondes et le jeu démarre automatiquement. Aucune commande shell n'est documentée dans le README, ce qui est inhabituel pour un projet open source. Tout se passe dans l'interface graphique. Les contrôles sont configurables : flèches ou WASD pour se déplacer, Z/Entrée/Espace pour A, X/Retour arrière pour B, Échap pour Start, Tab ou Maj pour Select. Les manettes sont prises en charge nativement. Des raccourcis clavier permettent d'ajuster le zoom, la vitesse, les couleurs et l'inclinaison de la caméra. Le fichier `options.lua` conserve ces réglages, ce qui est pratique pour les moddeurs. Un point mérite attention : l'importation exige des tailles précises, 1 Mio pour Red/Blue/Yellow, 2 Mio pour les autres. Une ROM corrompue ou mal dumpée échouera à la vérification SHA-1.
Les règlesets : fidélité contre confort, un choix assumé
Le projet propose deux règlesets pour les combats de Gen 1. Le réglage par défaut, `gen1_faithful`, reproduit les comportements de la cartouche d'origine, y compris les bugs célèbres. Le tableau du README mentionne `oneIn256Miss`, mais il est tronqué dans la version fournie. On comprend que l'autre règleset partage les mêmes formules de dégâts, mais diffère sur le maintien des bizarreries. C'est un choix de conception intéressant : au lieu d'imposer une correction, le projet laisse l'utilisateur décider. Les mods peuvent enregistrer leurs propres règlesets, ce qui ouvre la porte à des variantes personnalisées. Ce mécanisme est un argument fort pour les joueurs qui veulent une expérience authentique, mais il implique que les bugs sont conservés par défaut, ce qui peut dérouter les nouveaux venus. Le README ne précise pas quels bugs sont corrigés dans l'autre règleset, une lacune pour qui veut comparer.
Les performances et les limites sur appareils faibles
Le menu Options comporte une section Performance avec quatre niveaux : HIGH, BALANCED, LOW et AUTO. AUTO choisit un tier selon l'appareil : ARM portable vers LOW, téléphone vers BALANCED, bureau normal vers HIGH. Ce réglage ne change que la présentation, pas la logique de jeu. La logique est à pas fixe, identique sur tous les niveaux. Concrètement, un niveau bas désactive l'inclinaison 3D, le zoom de survol, et plafonne le FPS. C'est une approche pragmatique pour les machines modestes, mais elle a un revers : les préférences de l'utilisateur sont masquées, pas supprimées. Si vous choisissez un tilt personnalisé, il sera ignoré en mode LOW, mais conservé en mémoire. Le README ne précise pas si le passage d'un niveau à l'autre se fait à chaud ou nécessite un redémarrage. Les utilisateurs de Windows doivent aussi savoir que Defender peut signaler l'exécutable comme un faux positif, à cause de l'archive LÖVE ajoutée à l'exécutable. Des sommes SHA-256 sont publiées pour vérifier les téléchargements.
Un avertissement de sécurité inhabituel et nécessaire
Le README contient un encadré d'alerte : le projet n'est pas affilié au site `gen1recomp[.]com`, qui est décrit comme un imposteur. Ce site n'est pas autorisé, et le projet recommande de ne rien télécharger depuis lui, car il pourrait contenir des logiciels publicitaires. Les sources officielles sont le dépôt GitHub, le Discord et `gen1re.com`. Cet avertissement est rare dans un README, mais il est crucial pour la sécurité. Il montre que le projet est conscient des risques d'usurpation, et il donne une leçon pratique : vérifiez toujours l'URL avant de télécharger un fichier lié à un projet open source. Pour un ingénieur qui évalue ce projet, c'est un signal de maturité, même si le ton général reste décontracté. Cela dit, cet avertissement ne remplace pas une vérification des sommes de contrôle, qui sont publiées pour chaque version.
Alternatives et comparaison d'approche
L'alternative évidente est un émulateur comme mGBA ou Gambatte. La différence d'approche est nette : un émulateur interprète le code machine de la Game Boy, tandis que Gen1Recomp exécute un moteur Lua qui reproduit le comportement du jeu. L'émulateur est fidèle à la console, mais il dépend de l'implémentation du processeur et du matériel. Gen1Recomp, lui, n'émule pas le Game Boy, ne transpile pas l'assembleur et ne télécharge pas de désassemblage. Il extrait les données de la ROM et les utilise dans un moteur écrit à la main. Cette approche permet des fonctionnalités que les émulateurs classiques n'offrent pas : une caméra libre avec inclinaison, un zoom variable, des effets de shader et un gestionnaire de mods intégré. En revanche, elle limite la prise en charge aux versions exactes de ROM listées. Un émulateur acceptera n'importe quelle ROM, même modifiée, ce qui n'est pas le cas ici. Pour les joueurs qui veulent simplement lancer leur cartouche existante, un émulateur reste plus permissif.
Coûts de maintenance et licence
Le projet est sous licence MIT, ce qui autorise une utilisation commerciale, une modification et une redistribution, avec l'obligation de conserver l'avis de droit d'auteur. C'est une licence permissive, adaptée aux projets de loisir. Le rythme de publication est soutenu : les versions 0.2.34, 0.2.35 et 0.2.36 sont sorties le même jour, le 28 août 2026. Cela indique un développement actif, mais aussi un cycle de mise à jour fréquent, ce qui peut être un coût pour qui suit les versions. Le projet est archivé non, et la branche par défaut est `dev`. Il n'y a pas de page d'accueil, mais un Discord et des réseaux sociaux. Le README mentionne un document `AIDisclosure.md`, sans plus de détail dans l'extrait fourni. Pour un adoptant, le coût principal est la vérification des SHA-256 à chaque mise à jour, et la nécessité de conserver une ROM légale. La documentation est encore partielle, notamment sur le second règleset et sur les détails de la phase 1 pour Gold, Silver et Crystal.
Conclusion éditoriale
Adoptez Gen1Recomp si vous voulez jouer aux Poke 1 en natif avec des options de rendu modernes, sans émulateur, et si vous acceptez de fournir une ROM légale. Ne l'utilisez pas si vous attendez une compatibilité Gen 2 complète : Gold, Silver et Crystal sont en phase 1, avec un moteur encore en construction. Avant toute adoption, vérifiez que votre ROM correspond exactement aux SHA-1 listés, car toute autre version sera refusée. Vérifiez aussi que vous téléchargez depuis le dépôt GitHub ou gen1re.com, jamais depuis le site impersonnateur. Enfin, testez la version sur votre matériel : le niveau de performance AUTO choisit un tier selon l'appareil, mais il ne change pas la logique de jeu, donc un appareil faible affichera moins d'effets, pas un gameplay plus lent.
Notes de la communauté