c'est exactement comme ca (enfin de base ^^)
Dans la partie calcul, tout sauf les ecritures au VDP
-vblank-
ecritures dans le vdp
MAIS on peut aussi ecrire dans le VDP pendant la partie active de l'affichage,
c'est juste un probleme de timing (et que c'est bcp plus lent == prend plus de temps)
En chose essentiel, c'est surtout qu'il faut connaître si ta charge pendant l'affichage actif ne dégueule pas sur le vblank et si la charge du vblank ne dépasse pas pendant l'affichage actif, car cela va avoir pour effet de ralentir le programme ou faire apparaitre des glitchs/corruptions graphiques.
Avec Vingazole on a notre propre lib SMS (full asm), mais le principe du devkit est similaire.
Tu peux ajouter ca dans ton code :
void set_border_color(unsigned char color){
__asm
ld hl,#2
add hl,sp
ld a,(hl)
or #0xF0
out (#0xBF),a
ld a,#0x87
out (#0xBF),a
ret
__endasm;
}
ensuite en debut de code, tu mets
set_border_color(numero de couleur de la palette2);
//avant le vblank (cad apres ta derniere routine)
set_border_color(autre numero de couleur de la palette2);
/juste après le vblank
set_border_color(autre numero de couleur de la palette2);
//juste apres la derniere routine de ton code qui est dans le vblank
set_border_color(autre numero de couleur de la palette2);
Juste faire attention, ca ne prend en compte QUE les couleurs de la palette 2 (celle des sprites)
Tu peux aussi mettre
#define DEBUG 1 //a placer en haut du code
#ifdef DEBUG
#define BORDER(x) (set_border_color(x));
#else
#define BORDER(x)
#endif
pour appeler juste indiquer
BORDER(numero de couleur pal2)
pour que ce soit plus facile a activer/virer à la compilation (juste a masquer la ligne debug pour inhiber)
Cela te donnera quelque chose comme ca,
uniquement visible sous Emulicious et sur le vrai hard.
Dans ma capture, je sais que le "jaune" est ce qu'il me reste en temps d'affichage actif et le vert la taille des données dans le vblank (le temps de vblank max étant tout ce qui au dessus et au dessous du jeu; donc en l'état je n'en utilise que 50%)
Edit. Je ne l'ai pas indiqué mais dans ta boucle (pour un système à 60hz)
- 1 vblank = 60fps
- 2 vblank consécutifs = 30 fps
- 3 vblank consécutifs = 20 fps
...etc.