π
<-

[TUTO][AXE] la façon la plus rapide de dessiner des pixels

Regroupement de tous les tutoriaux z80 (82/83/84)

[TUTO][AXE] la façon la plus rapide de dessiner des pixels

Message non lude nikitouzz » 22 Oct 2012, 23:03

Vous vous êtes souvent demandé comment dessiner des pixels d'une façon particulièrement rapide :) Voici la solution :

On sait que l’écran est composé de 96x64 pixels c'est-à-dire qu'il est partagé en 64 lignes de 12 octets chacun ( car un octet est égal à 8 bits et 8x12=96 :) )

Nous allons donc nous en servir :)

Pour cette technique, nous allons récupérer le numéro de l'octet en fonction des coordonnées (X,Y) du pixel que l'on veut dessiner.

  1. On sait qu'une ligne fait 12 octets de long donc Yx12 donnera le premier octet de la ligne Y. Si on y ajoute ensuite X/8, on obtient l'octet codant le point de coordonnées (X,Y).

    On a donc le code :
    Code: Tout sélectionner
    :(Yx12)+(X/8)+L6->P

    (on stocke le résultat obtenu dans la variable P. )
  2. Il faut maintenant trouver le numéro du bit à allumer parmi les 8 bits de cet octet, et là, rien de plus simple : il suffit d'écrire :
    Code: Tout sélectionner
    {X^8+GDB0}
    :)

    :O :O mais d'où vient ce GDB0 ??? :O :O.

    C'est en faite le numéro du bit à dessiner contenu dans une chaîne hexadécimale qui est celle-ci :
    Code: Tout sélectionner
    :[80402010080040201]->GDB0

    Cette chaîne s'explique facilement car en binaire elle donne :
    Code: Tout sélectionner
    -10000000
    -01000000
    -00100000
    -00010000
    -00001000
    -00000100
    -00000010
    -00000001


    :)
  3. Maintenant, il suffit d’allumer le pixel correspondant en ajoutant ( fonction "or" ) la place de l'octet (stockée dans P) et le numéro du bit à allumer dans l'octet correspondant et de faire un petit "Dispgraph" :

    Code: Tout sélectionner
    :.TEST
    :[8040201008040201]->GDB0
    :Clrdraw
    :0->A
    :0->B
    :B*12+(A/8)+L6->P
    :{A^8+GDB0} or {P}->{P}
    :Repeat Getkey
    :Dispgraph
    :End


    Et en version optimisée :

    Show/Hide spoilerAfficher/Masquer le spoiler
    Code: Tout sélectionner
    :.TEST
    :[8040201008040201]->GDB0
    :Clrdraw
    :0->A->B
    :{A^8+GDB0} or {B*2*2*3+(A/2/2/2)+L6->r2}->{r2}
    :While 1
    :Dispgraph
    :EndIf Getkey
Dernière édition par nikitouzz le 23 Jan 2013, 16:16, édité 3 fois.
Mes records personnels :
2x2x2 : 2.18 secondes / 2x2x2 une main : 21.15 secondes / 2x2x2 yeux bandés : 47.59
3x3x3 : 5.97 secondes / 3x3x3 une main : 49.86 secondes
4x4x4 : 1.49 minutes / 4x4x4 une main : 6.50 minutes
5x5x5 : 4.10 minutes / 5x5x5 une main : 18.02 minutes
6x6x6 : 8.10 minutes
7x7x7 : 16.03 minutes
9x9x9 : 58.26 minutes

megaminx : 5.59 minutes / pyraminx : 7.91 secondes / square-one : 1.07 minutes

Image
Avatar de l’utilisateur
nikitouzzModo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 42.7%
 
Messages: 1016
Images: 1
Inscription: 16 Fév 2012, 18:39
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Fac de maths

Re: [AXE] la façon la plus rapide de dessiner des pixels en

Message non lude Bisam » 23 Oct 2012, 11:52

Bel article, nikitouzz.
Je me suis permis de modifier un peu tes phrases (en plus de corriger les fautes d'orthographe). J'espère que j'ai bien respecté ce que tu voulais dire et que tu ne m'en voudras.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [AXE] la façon la plus rapide de dessiner des pixels en

Message non lude nikitouzz » 23 Oct 2012, 12:00

:) Je t'en remercie fortement :)

Et j’espère que tu en as appris un peu plus sur l'axe en même temps :)

Mais non il y a un passage où tu t'es trompé ( écriture des bits avec "or" ) je le corrige :)
Avatar de l’utilisateur
nikitouzzModo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 42.7%
 
Messages: 1016
Images: 1
Inscription: 16 Fév 2012, 18:39
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Fac de maths

Re: [AXE] la façon la plus rapide de dessiner des pixels en

Message non lude Persalteas » 07 Mai 2013, 08:38

à déplacer dans la section tutoriels :bj:
Show/Hide spoilerAfficher/Masquer le spoiler
(Et sinon nommez moi modérateur du forum z80, que je le fasse tout seul :P )

*sifflote*
Avatar de l’utilisateur
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 6.2%
 
Messages: 2337
Images: 113
Inscription: 04 Fév 2010, 00:00
Localisation: Evry (France)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PhD candidate, Bioinformatics


Retourner vers Tutoriaux

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 16 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2668 utilisateurs:
>2637 invités
>22 membres
>9 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)