Le projet part d'une conviction : plutôt qu'émuler un ARM ou faire tourner la DS dans un PC, réécrire le moteur de terrain de Pokémon Platine en C++ natif, qui lit les données de la cartouche comme le fait le jeu original. Dans l'esprit d'OpenRCT2 ou d'OpenMW : le binaire original n'est jamais exécuté, tout est re-parsé.
Le premier chantier : lire la cartouche
Avant tout affichage, il faut que le moteur sache lire le conteneur .nds. C'est le travail des premiers jours :
- le système de fichiers NDS : tables FAT/FNT, accès aux fichiers par id et par chemin
- les archives NARC : les formats BTAF/BTNF/GMIF, y compris les membres cachés que certains outils ignorent
- la décompression : les variantes LZ des assets Nitro
Tout le reste du projet repose sur cette couche : si elle lit la ROM fidèlement, chaque système au-dessus travaille sur les données réelles du jeu.
La référence : pret/pokeplatinum
Le développement s'appuie sur la décompilation pret/pokeplatinum comme référence comportementale : chaque fonction du moteur cherche à refléter la fonction d'origine. C'est ce choix qui rend le projet documentable et potentiellement contributable, au lieu d'un reverse-engineering personnel.