La doc et les internettes furent d'une précieuse aide, tout va bien maintenant. En effet je récupérais pas l'adresse au bon endroit
Je viens juste de larguer un nouveau sujet sur NGF à propos du jeu, j'ai bien raconté ma vie et lancé quelques demandes d'idées/avis.
Maintenant, comme prévu, des questions concernant la structure du moteur.
Pour le moment, ça fonctionne comme ça:
Il y a une liste de tasks (pointeurs vers des routines) qui sont installées par les initialisations (écran titre, démo, jeu...) et exécutées à chaque vblank.
Je n'ai pas prévu la possibilité d'ajouter/retirer des tasks hors des initialisations, donc certaines vont lire des flags pour être activées/désactivées au besoin par d'autres.
Il y a des listes de tailles fixes d'éléments en RAM pour les positions et attributs des tirs, des ennemis, des débris, etc... qui sont remplies ou mises à jour pendant l'affichage, et qui sont en même temps traduites dans une "display list", aussi en RAM.
Cette displaylist est toujours traitée avant toutes les tasks, pour que la copie de la RAM vers la VRAM se fasse toujours dans le vblank.
Elle est ensuite vidée, ce qui permet d'optimiser l'allocation des sprites à chaque frame (je vois beaucoup de jeux qui font ça, alors j'imagine que je suis sur la bonne route au moins de côté là).
Il y a 3 catégories de tasks:
*celles qui lisent les joysticks et mettent à jour tout ce qu'il faut: positions, autofire, cheatcodes, entrée des noms des joueurs...
*celles qui mettent à jour des éléments et listes d'éléments en RAM (vaisseaux, tirs, ennemis, explosions, débris), génèrent les ennemis et s'occupent des collisions et copient les attributs dans la displaylist.
*celles qui s'occupent d'afficher le HUD: temps, score, vies...
Avec tout ça, il arrive que la màj de la VRAM déborde du vblank alors qu'il y a pas tant de sprites que ça à l'écran (~30). J'aimerais donc comprendre pourquoi tant peine à en faire si "peu", c'est comme si une centaine de petits move.w par frame prenaient des plombes... et encore je nettoie même pas proprement tous les sprites, ce qui m'empêche pour l'instant d'utiliser les zooms sur les débris.
Aurais-je des choses à changer dans la structure ou la séquence des choses, ou dois-je juste faire avec des accès VRAM super lents ?