CPC Rulez
https://cpcrulez.fr/forum/

Changement rapide de palette
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5067
Page 1 sur 1

Auteur :  neocps1 [ 01 Juin 2013, 18:18 ]
Sujet du message :  Changement rapide de palette

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


merci beaucoup!

Auteur :  neocps1 [ 01 Juin 2013, 18:29 ]
Sujet du message :  Re: Changement rapide de palette

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 ?

Auteur :  Megachur [ 01 Juin 2013, 18:48 ]
Sujet du message :  Re: Changement rapide de palette

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...

Auteur :  neocps1 [ 01 Juin 2013, 18:54 ]
Sujet du message :  Re: Changement rapide de palette

avec outi, ca veut dire qu'il faut intercaler des out (c),c pour
pouvoir sélectionner l'index de la couleur ?

Du style :

out (c),c
outi
inc bc

j'ai bon ?

Auteur :  hERMOL [ 02 Juin 2013, 13:31 ]
Sujet du message :  Re: Changement rapide de palette

oui c'est ca : le 1er OUT sélectionne ton "pen" puis avec la commande OUTI qui point les datas en hl , lui fix ca couleur tout en incrémentant hl. :magic:

Code :
   ld hl,pal_datas
   ld a,0
nextcol:
   ld b,#7f
   out (c),a    ; sel pen
   outi          ; fix couleur
   inc a         ; prochain pen
   cp #10      ; 16eme encre ?
   jr nz,nextcol

Auteur :  fano [ 02 Juin 2013, 14:00 ]
Sujet du message :  Re: Changement rapide de palette

Faudrait peut être un INC B derrière le OUTI car il me semble que ça décremente B

Auteur :  Plissken [ 02 Juin 2013, 16:23 ]
Sujet du message :  Re: Changement rapide de palette

fano a écrit :
Faudrait peut être un INC B derrière le OUTI car il me semble que ça décremente B


Exact !

Auteur :  hERMOL [ 02 Juin 2013, 17:04 ]
Sujet du message :  Re: Changement rapide de palette

oui c'est ballot! , merci l'exemple est modifier

Auteur :  neocps1 [ 02 Juin 2013, 18:26 ]
Sujet du message :  Re: Changement rapide de palette

Pour ma part, j'ai choisi de me passer de boucle.

Exemple pour le mode 1:

Code :
   ld   hl,#Palette
   ld   bc,#0x7f00
   out (c),c
   outi
   inc c
   out (c),c
   outi
   inc c
   out (c),c
   outi
   inc c
   out (c),c
   outi

Auteur :  Hicks [ 03 Juin 2013, 10:03 ]
Sujet du message :  Re: Changement rapide de palette

Il y a encore plus rapide. Pour changer les 16 encres du mode 0 :
Code :
LD HL,Palette
LD BC,#8080
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
LD B,C
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
LD B,C
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
LD B,C
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI
OUTI


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)).

Auteur :  hERMOL [ 03 Juin 2013, 10:11 ]
Sujet du message :  Re: Changement rapide de palette

l'OCR de cet article est dispo la --> https://cpcrulez.fr/coding_amslive16-les_gros_ports.htm

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/