UN MOTEUR, PAS UN ÉMULATEUR
Dans l'esprit d'OpenRCT2 ou d'OpenMW — le code d'origine ne tourne jamais.
OpenPlatinum réécrit le moteur de terrain de Pokémon Platine (DS) en C++17 natif : le moteur lit lui-même le système de fichiers de la cartouche et les formats Nitro — cartes, modèles 3D, collisions, scripts d'événements, banques de texte chiffrées — puis exécute les scripts du jeu sur sa propre VM.
La décompilation pret/pokeplatinum sert de référence comportementale : chaque fonction du moteur pointe vers la fonction d'origine qu'elle reflète. Plus rapide qu'un émulateur, plus moddable qu'une ROM — une base propre pour les fan-projects de demain.
LE JEU EN IMAGES
Chaque carte, PNJ, dialogue et cinématique ci-dessous est produit par les données de la ROM, chargées à l'exécution. Rien n'a été placé à la main.
CE QUE LE MOTEUR FAIT
Du fichier .nds jusqu'au rendu OpenGL — la chaîne complète.
Votre dump Platine FR ou US, lu tel quel
FAT/FNT, archives NARC, formats BTAF/GMIF
NSBMD, BDHC, pl_msg, sprites, tables
372/372 opcodes d'événements exécutés
Rendu natif, streaming de maps, filtrage
LE VRAI COMPORTEMENT DU JEU
Matrice de maps avec chargement continu autour du joueur — overworld sans couture, changement de zone inclus.
Timings exacts : tourner, marcher, courir, heurter, sauter — collisions BDHC et comportements de tuiles (rebords…).
VM d'événements : 372/372 opcodes utilisés par le jeu, largeurs Platine, commandes à arité variable.
Banques pl_msg déchiffrées, charmap Gen 4, substitution de balises — le texte suit la ROM chargée (FR/US).
Scène du starter avec les vrais modèles et la caméra DS : valise, trois balls, zoom de confirmation, Pokémon animé.
Lignes DS (vitesse texte, style combat…) + options PC : FR/EN, plein écran, résolution, MSAA, anisotropie, VSync.
AVANCEMENT
Jouable de la chambre d'ouverture jusqu'à la scène du Lac Vérité et les premiers combats.
| SOUS-SYSTÈME | ÉTAT | DÉTAIL |
|---|---|---|
| Système de fichiers NDS / NARC | FAIT | FAT/FNT, BTAF/BTNF/GMIF, membres cachés |
| Matrice de maps + streaming | FAIT | Overworld continu, cellules chargées autour du joueur |
| Modèles NSBMD / textures TEX0 | FAIT | Terrain, bâtiments, props, sets de textures par zone |
| Collisions & comportements tuiles | FAIT | Hauteurs BDHC, bits d'attributs, rebords |
| Déplacement joueur | FAIT | Machine à pas DS : turn, walk, run, bump, jump |
| Warps & transitions | FAIT | Portes, tapis, escaliers ; facing à l'arrivée ; warps 0x100 |
| VM de scripts d'événements | FAIT | 372/372 opcodes du jeu |
| Objets / PNJ | FAIT | Placement, flags de visibilité, scripts de mouvement |
| Événements coord / BG | FAIT | Triggers, panneaux, objets cachés |
| Texte du jeu (FR/US) | FAIT | Déchiffrement pl_msg, charmap Gen 4 |
| Animations BCA | FAIT | Portes, valise, balls rebondissantes (NSBCA) |
| Scène de sélection du starter | FAIT | Modèles ev_pokeselect réels, caméra DS |
| Sprites Pokémon | FAIT | pl_pokegra déchiffré, 2 frames 80×80 ping-pong |
| Blackout / respawn | FAIT | Dernier Centre Pokémon mémorisé, soin au réveil |
| Options en jeu | FAIT | Lignes DS + graphismes natifs, options.cfg |
| Sauvegarde | PARTIEL | Fichier de save existant (map, position, équipe) |
| Rencontres sauvages | PARTIEL | Tables et taux réels, combat simplifié |
| Combats | PARTIEL | Stats, moves, charte types, dégâts réels ; pas encore d'XP/capture/doubles |
| Menu X / Sac / Équipe | PARTIEL | Écrans fonctionnels, poches du sac, polish en cours |
| Boucles de textures (fldtanime) | À FAIRE | Eau/fleurs animées BTX0 par zone |
| Audio (SDAT) | À FAIRE | — |
| Pokédex, objets clés | À FAIRE | — |
CONTRÔLES
OPEN SOURCE — MIT
Le code complet est sur GitHub : moteur C++17, SDL3, OpenGL 3.3, build Meson/Ninja pour Windows x64. Étoiles, issues et contributions bienvenues.
OpenPlatinum ne distribue aucune donnée Nintendo :
le moteur lit votre propre dump .nds de Pokémon Platine
(FR ou US), déposé à côté de l'exécutable.
POKÉMON PRISM FR
Le patch français de Pokémon Prism : patcher en ligne, réparateur de sauvegarde, livreur dans les Centres Pokémon.