... et bien ça avance pas mal !
Le builder produit de nouveau (depuis hier soir) une image FD fonctionnelle.
J'ai fait les adaptations du code asm en conséquence, j'ai encore qq optims asm a faire mais le principal est ok.
Le gros changement c'est que le code s'exécute depuis la zone cartouche et non plus depuis la zone data.
Le buffer vidéo est donc maintenant écrit depuis la zone data.
Le chargement des données en RAM se fait par des demi-pages exomizées (permet d'inverser les 2 blocs de 8ko, car les données sont chargées depuis la zone cartouche vers la zone data, puis ces mêmes données sont par la suite exécutées depuis la zone cartouche).
En plus d'être plus rapide, cette solution permet un gain de place en RAM car l'index de chargement est beaucoup plus petit.
Les index d'images et d'animations ne sont plus dans la zone principale (6100-9FFF) mais en page RAM >= 4
=> Tous ces changements sont maintenant opérationnels.
Il me reste à tester le changement de niveau de jeu et la fonctionnalité de données communes entre niveaux de jeu (qui ne sont donc pas rechargées entre chaque niveau).
Coté T2, il ne reste plus grand chose à faire coté builder pour produire une image rom (intégration du boot et du RAMLoader pour T2)
Par contre il faut que je fasse encore les devs asm de boot, de chargement des données exomizées de la ROM vers la RAM et de switch de page. Enfin il faut que je réalise un "loader" pour charger l'image de T2 sur la cartouche.
Bref encore un peu de travail avant de pouvoir montrer qq chose, mais c'est toujours sur les rails.
PS: J'ai commencé à récupérer les images de tiles et les maps de niveau de Sonic2, je pense avoir un modèle de donnée qui tient la route pour l'affichage des décors.
La map serait de taille maximum de 128x128 blocs (16ko), chaque bloc a donc une référence sur un octet.
Les 256 blocs de 128x128 pixels sont composés de 8x8 images de 16x16px, chaque définition de bloc fait donc 64 octets (16 ko pour les 256 définitions de blocs). Oui ça fait bien une map de taille maximum de 16384px par 16384px !
Enfin l'index image fait 256x3 (un octet page, deux octets adresse) et pointe vers la routine d'affichage qui sera certainement un dérivé de celle des "sprites compilés".
Cette structure sera à multiplier pour chaque plan de tile a afficher (j'en ai prévu deux, un pour le fond, un autre pour les plateformes).
Les éléments en avant plan par rapport aux sprites seront gérés par le moteur de sprites et non par le système de tilemap.
Dernière précision, on pourra afficher la map à l'écran en déplaçant la "caméra" (zone affichée par l'écran) par pas de 16px (taille d'une image tile). Si vous avez bien suivi on perd donc 8 px en hauteur (l'image sera constituée de 20x16px en largeur et 12x16px en hauteur).