| 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. ![]() 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/ |
|