fxrobin a écrit:
Bentoc a écrit:
Tu peux utiliser soit la zone données ($A000) soit la zone cartouche ($0000) pour monter les pages 2 ou 3, c'est au choix ...
Tu me conseilles quelle technique du coup ? plutôt la zone cartouche ?
Salut
J'ai lu vite fait sur le projet en double buffering..
Alors pour résumer, les banques ram physique 0 à 3 peuvent être choisies pour l'affichage écran (je ne reviens pas sur ce qu'a dit Sam dessus c'est très complet)... Mais ne pas oublier que la zone "logique "$4000-$5000" dite "RAM écran" est toujours utilisable. La banque RAM 0 (physqiue) correspond toujours à l'espace logique 4000-5FFF pour le CPU (6809), mais tu peux aussi l'adresser "en même temps" à l'espace RAM données.
Donc, sur les TO8, ty peux basculer n'importe laquelle des 32 banque RAM physique (de 16 kO) en espace logique RAM Donnée (A000-FFFF) ET utiliser une des 4 banques physiques (0-3) en affichage écran, SAUF la 1 (qui est la RAM système en espace Logique 6000-9FFF : Il vaut mieux éviter de la positionner en affichage écran) TOUT en sachant que la banque physique 0 est constamment dans l'espace Logique 4000-5FFF (et en 0000-3FFF pour les MO6).
Tu as donc
- 1 registre qui indique la banque physique pour l'affichage (0, 2 ou 3)
- 1 registre qui indique la banque physique (0 à 31) à positionner en RAM logique de données (A000-DFFF)
- L'espace RAM écran (4000-5FFF) qui pointe toujours dans la banque RAM physique 0
- L'espace RAM Système (6000-9FFF) qui pointe toujours vers la banque physique 1. Cet espace est là où tu écris normalement tes routines assembleurs (ça te donne jusqu'à 16 kO ya de quoi faire!)
Mon conseil est de se servir de cette zone RAM écran (4000-5FFF) comme "buffer fond d'écran". C'est à dire que tu recopie les partie d'écran pour chaque sprite vers la banque physique 2 quand c'est la 3 qui est affichée et vice versa.
Une fois que tu as entièrement écrit les datas de la banque 2, tu bascules l'affichage écran vers cette RAM là et tu balance la RAM 3 dans l'espace logique A000-DFFF.
Voilà comment on arrive à faire du double Buffer, c'est à dire sans voir les effacement de sprite ou les désalignement en cas de scrolling...
Pourquoi, aussi choisir l'espace logique RAM écran comme buffer ? Parce que tu as toutes les fonction assembleur de la ROM qui écrivent dedans (Cercles, box etc etc)...
Mais ces fonctions de la ROM fontionnent dans tous les modes Vidéo (et donc BM2, BM4 également) SAUF en BM16.
En BM16, tu n'as AUCUNE des fonctions de la ROM qui ne marche (J'ai testé les fonction BOXF, PRINT etc en BM16 essaye et tu verra!), même pas l'écriture de caractère (Thomson a du oublier de faire ça à l'époque alors qu'il a rajouter des truc comme le langage Logo)... Ca veut dire qu'il faut tout réécrire pour le mode BM 16 (ou se servir du travail d'autres thomsonistes, notamment pour l'affichage de caractères).
J'espère avoir été compréhensible dans ce que j'ai écrit... Le mieux est de voir le manuel technique des TO8/TO9 et TO9+ (P 120/121) pour comprendre le système des banques RAM sur ces ordinateurs.