Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 30 Nov 2025, 03:44

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Changement rapide de palette

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 11 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
neocps1
 Sujet du message : Changement rapide de palette
Message Publié : 01 Juin 2013, 18:18 
Hors-ligne
Rulezz
Rulezz

Inscription : 28 Mai 2010, 11:34
Message(s) : 100
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


merci beaucoup!


Haut
 Profil  
 
neocps1
 Sujet du message : Re: Changement rapide de palette
Message Publié : 01 Juin 2013, 18:29 
Hors-ligne
Rulezz
Rulezz

Inscription : 28 Mai 2010, 11:34
Message(s) : 100
Localisation : Eteauville, France
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 ?


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Changement rapide de palette
Message Publié : 01 Juin 2013, 18:48 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
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...


Haut
 Profil  
 
neocps1
 Sujet du message : Re: Changement rapide de palette
Message Publié : 01 Juin 2013, 18:54 
Hors-ligne
Rulezz
Rulezz

Inscription : 28 Mai 2010, 11:34
Message(s) : 100
Localisation : Eteauville, France
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 ?


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Changement rapide de palette
Message Publié : 02 Juin 2013, 13:31 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
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


Haut
 Profil  
 
fano
 Sujet du message : Re: Changement rapide de palette
Message Publié : 02 Juin 2013, 14:00 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 15 Août 2008, 13:00
Message(s) : 968
Localisation : Troyes, France
Faudrait peut être un INC B derrière le OUTI car il me semble que ça décremente B

_________________
"NOP" tel est le programme parfait ! court, rapide, lisible et sans bugs (connus)


Haut
 Profil  
 
Plissken
 Sujet du message : Re: Changement rapide de palette
Message Publié : 02 Juin 2013, 16:23 
Hors-ligne
Rulezzzz
Rulezzzz
Avatar de l’utilisateur

Inscription : 13 Nov 2007, 16:09
Message(s) : 911
Localisation : Gallifrey
fano a écrit :
Faudrait peut être un INC B derrière le OUTI car il me semble que ça décremente B


Exact !

_________________
Tout le monde il es beau,tout le monde il est gentil .


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Changement rapide de palette
Message Publié : 02 Juin 2013, 17:04 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
oui c'est ballot! , merci l'exemple est modifier


Haut
 Profil  
 
neocps1
 Sujet du message : Re: Changement rapide de palette
Message Publié : 02 Juin 2013, 18:26 
Hors-ligne
Rulezz
Rulezz

Inscription : 28 Mai 2010, 11:34
Message(s) : 100
Localisation : Eteauville, France
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


Haut
 Profil  
 
Hicks
 Sujet du message : Re: Changement rapide de palette
Message Publié : 03 Juin 2013, 10:03 
Hors-ligne
Rulez
Rulez

Inscription : 27 Oct 2012, 18:09
Message(s) : 63
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)).


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Changement rapide de palette
Message Publié : 03 Juin 2013, 10:11 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
l'OCR de cet article est dispo la --> https://cpcrulez.fr/coding_amslive16-les_gros_ports.htm


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 11 message(s) ] 

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 20 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

Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.