Inscription : 28 Mai 2010, 11:34 Message(s) : 99 Localisation : Eteauville, France
Bonjour,
j'ai un écran avec une partie en mode 1 (les 8 premières lignes), et le reste en mode 0, chacune avec sa propre palette.
Comment faire pour minimiser le cout du changement de palette ? C'est à dire éviter de perdre plusieurs lignes d'affichage à cause du code pour changer de mode et définir la palette ?
Mon code pour charger la palette est le suivant:
;; Set playfield palette ld hl,#_pPlayfieldPalette ld bc,#0x7f00
;; répéter X fois (16 pour le mode 0 par exemple) ld a,(hl) out (c),c out (c),a inc hl inc bc
Inscription : 12 Juin 2008, 20:29 Message(s) : 1709
neocps1 a écrit :
autant pour moi, le problème venait d'ailleurs.
Pour les spécialistes, il y a-t-il une façon plus rapide de définir la palette ?
tu peux utiliser l'instruction "outi" ou mettre en dur tes couleurs dans les registres comme cela : ld bc,&7f00 out (c),c ld hl,&4e4f ld de,&4a4b out (c),l inc c out (c),c out (c),h inc c out (c),c out (c),d etc...
Ce qui prend 6+3+8*4*5=169 NOPs, environ 2.5 lignes. Explication technique (version courte) : le Gate Array est sélectionné si bit15=0 et bit14=1 (ce qui est le cas après le premier OUTI => #7f80) et le C=#80 sert "en gros" à ne pas sélectionner un autre périphérique (mettre en route le moteur par exemple . Crédits : Madram est le premier a avoir "trouvé" cette astuce (voyez Amslive 16, page &12 (tout est scanné sur PnP)).
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum