IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

[Prog graphique] Décomposition bitmap en pixels


Sujet :

Assembleur

  1. #1
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut [Prog graphique] Décomposition bitmap en pixels
    Salut

    Mon prof nous a demandé d'afficher une bitmap grace au mode graphique MCGA, il nous a filé la bitmap sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    	; Les deux premiers octets représentent la largeur et la hauteur du sprite
    Sprite	DB 16, 27
    	DB 000,000,000,000,014,014,014,014,014,014,014,014,000,000,000,000
    	DB 000,000,000,032,032,032,014,014,014,014,032,032,032,000,000,000
    	DB 000,000,000,000,000,000,000,014,014,000,000,000,000,000,000,000
    	DB 000,000,000,000,000,000,032,014,014,032,000,000,000,000,000,000
    	DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
    	DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
    	DB 000,018,018,018,014,032,032,014,014,032,032,014,018,018,018,000
    	DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
    	DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
    	DB 000,000,000,000,000,032,032,018,018,032,032,000,000,000,000,000
    	DB 000,000,000,000,032,032,018,032,032,018,032,032,000,000,000,000
    	DB 000,000,000,000,032,018,032,032,032,032,018,032,000,000,000,000
    	DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
    	DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
    	DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
    	DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
    	DB 000,000,000,000,032,032,018,018,018,018,032,032,000,000,000,000
    	DB 000,000,000,000,032,032,032,014,014,032,032,032,000,000,000,000
    	DB 000,000,000,000,032,032,032,014,014,032,032,032,000,000,000,000
    	DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
    	DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
    	DB 018,018,018,014,032,032,032,014,014,032,032,032,014,018,018,018
    	DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
    	DB 018,018,018,000,032,032,014,014,014,014,032,032,000,018,018,018
    	DB 000,000,000,000,000,000,000,032,032,000,000,000,000,000,000,000
    	DB 000,014,014,014,014,014,014,014,014,014,014,014,014,014,014,000
    	DB 014,032,032,032,032,032,032,032,032,032,032,032,032,032,032,014
    la bitmap est donc décomposée en pixels de couleurs. J'arrive à faire ce qu'il demande, c'est a dire l'afficher, en revanche j'aimerais pouvoir afficher d'autres bitmaps pour mon plaisir perso, mais comment les décomposées en pixels comme il a fait ?
    En esperant que vous aller pouvoir m'aider
    Merci pour vos réponses
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Malheureusement je ne peut pas t'aider ( débutant powaa ) mais si tu pouvais montrer comment tu l'affiches, ce serait super sympa.

    Merci

  3. #3
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Malheureusement je ne peut pas t'aider


    si tu pouvais montrer comment tu l'affiches, ce serait super sympa.
    no problem (en plus j'ai mis des commentaires)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    ;procédure d'affichage d'un sprite
    	;arguments :	offset sprite --> si
    	;				hauteur sprite --> cx
    	;				largeur sprite --> bx
    	;				pos_x --> bp
    	;				pos_y --> di
    	mon_draw_sprite proc
    		;on sauvegarde tout ce qu'on change dans cette proc
    		push ax di bp si cx bx 
    		;on donne à :hola:  di les bonnes coordonnées pour l'affichage
    		mov ax,320
    		mul di
    		add ax,bp
    		mov di,ax
    		add si,2
    		boucle1 :
    			push cx
    			push di
    			xor cx,cx
    			mov cl,bl
    			boucle2 :
    				mov al,[si]
    				mov es:[di],al
    				inc si
    				inc di
    			loop boucle2
    			pop di
    			pop cx
    			add di,320
    		loop boucle1
    		; on restaure ce qui a été sauvegardé
    		pop bx cx si bp di ax
    		ret
     
    	mon_draw_sprite endp
    ;-----------------------------------------------
    mais tu sais je débutes en assembleur donc je ne pense pas que ce soit le top
    enfin j'aimerais bien pouvoir afficher d'autre bitmap que la moche filée par mon prof...
    Merci à celui qui pourra m'aider
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Salut,

    En fait les images sont composées en general de deux parties, un header et l'image proprement dite.
    Dans ton cas le header est tres simple, il donne juste la taille de l'image.
    Mais en general un header contient beaucoup plus d'info, compression, codage des couleurs, palette,...

    Ce qu'il te faudrais c'est trouver un document expliquant le format des images, il n'y a helas pas de format generique. Donc pour chaque format il te faudra faire une methode de decodage.

    J'espere avoir repondu a ta question...

  5. #5
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    j'ai envoyé un mail à mon prof, il m'a dit d'utiliser TileStudio, j'ai essayé mais pas trop compris comment cela fonctionnait, je vais chercher des tutos sur le net...
    Merci pour ta reponse
    Et sinon ma fonction d'affichage tu en penses quoi ?
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  6. #6
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    TileStudio
    il a l'air bien compliqué ce logiciel... j'ai trouvé un tuto en anglais mais il n'explique pas comment décomposer la bitmap...
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Ca a l'air super ton truc mais je n'arrive pas a faire fonctionner ta fonction d'affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ;En argument
    mov si,offset Sprite
       mov cx,50
      mov bx,2
      mov bp,10
      mov di,10
    ==> ca n affiche rien

    et quel est ce format?

  8. #8
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Normal, ce n'est que la procédure.. tu dois passer en mode graphique et ensuite :
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Ce n'est pas possible il faut focement specifier l'adresse de l'image pour l'exploiter

  10. #10
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    oui dans SI, et le sprite à afficher est un immense tableau de db (regarde mon 1er post)
    Je ne vois pas trop quel est ton problème ?
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Effectivement j'arrive a voir quelque chose mais le probleme c que ca ne ressemble a rien (des sortes de barro blancs) à - que ca soit ca le sprite.

    C'est pourquoi je pensais qu'il y avait une erreur dans mon affichage.
    Moi j'ai mis le sprite comme une variable dans la section .data
    puis mov si,Sprite
    call mon_draw_sprite

    Sinon ce qui m'interessait c'etait de savoir si le prog de ton prof permetrtait de faire un dessin et de le sortir sous forme de sprite(variable)
    ex : img db ?????
    db ?????
    ...

  12. #12
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Effectivement j'arrive a voir quelque chose mais le probleme c que ca ne ressemble a rien (des sortes de barro blancs) à - que ca soit ca le sprite.
    fais voir ton code stp

    Sinon ce qui m'interessait c'etait de savoir si le prog de ton prof permetrtait de faire un dessin et de le sortir sous forme de sprite(variable)
    ex : img db ?????
    db ?????
    ...
    tu parles de TileStudio je pense, selon le prof oui mais j'ai pas encore reussi ! si tu y arrives fais moi signe !
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Voila mon code avec un peu de retard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    .model small
    .stack 1000h
    .486
     
     
    ;=======================================================
    ;Declaration des macros
    ;=======================================================
    .data	
     
    ;-------------------------------------------------------------------
    ;Tableaux
    ;-------------------------------------------------------------------
     sprite                   DB 16, 27
       DB 000,000,000,000,014,014,014,014,014,014,014,014,000,000,000,000
       DB 000,000,000,032,032,032,014,014,014,014,032,032,032,000,000,000
       DB 000,000,000,000,000,000,000,014,014,000,000,000,000,000,000,000
       DB 000,000,000,000,000,000,032,014,014,032,000,000,000,000,000,000
       DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
       DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
       DB 000,018,018,018,014,032,032,014,014,032,032,014,018,018,018,000
       DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
       DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
       DB 000,000,000,000,000,032,032,018,018,032,032,000,000,000,000,000
       DB 000,000,000,000,032,032,018,032,032,018,032,032,000,000,000,000
       DB 000,000,000,000,032,018,032,032,032,032,018,032,000,000,000,000
       DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
       DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
       DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
       DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
       DB 000,000,000,000,032,032,018,018,018,018,032,032,000,000,000,000
       DB 000,000,000,000,032,032,032,014,014,032,032,032,000,000,000,000
       DB 000,000,000,000,032,032,032,014,014,032,032,032,000,000,000,000
       DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
       DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
       DB 018,018,018,014,032,032,032,014,014,032,032,032,014,018,018,018
       DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
       DB 018,018,018,000,032,032,014,014,014,014,032,032,000,018,018,018
       DB 000,000,000,000,000,000,000,032,032,000,000,000,000,000,000,000
       DB 000,014,014,014,014,014,014,014,014,014,014,014,014,014,014,000
       DB 014,032,032,032,032,032,032,032,032,032,032,032,032,032,032,014
     
     
     
    .code
    ;--------------------------------------------------------
    ;debut du pgm                                           -
    ;--------------------------------------------------------
    main proc
    MOV AX,@data
    MOV DS,AX
     
    ;---------------------------------------------------------
    ; Corps du programme					 -
    ;---------------------------------------------------------
     
    ;-----------------------------------------
     
    mov ah,0
    mov al,12h
    int 10h
     
    MOV   si,offset sprite
     
    call mon_draw_sprite
    CALL arret
    ;--------------------------------------------------------
    ; fin du programme                                      -
    ;--------------------------------------------------------
    		MOV AX,04c00h
    		INT 21h
    main            ENDP
     
    ;==========================================================
    ; Procedures                                              -
    ;==========================================================
    ;-----------------------------------------
    ; arret - attente d'une touche	 	
    ;					 
    ; Auteur	:Julien Azria		 
    ; Description	:attente d'une touche	 
    ;		 provoque l'arret	 
    ; Use		:arret 16(service 0h)
    ;-----------------------------------------
     arret   PROC
             	MOV AH,00h
             	INT 16h
    	   	RET
     arret   	ENDP
    ;--------------------------------------------------------
    ;----------------------------------------------
    mon_draw_sprite proc
       ;arguments :   offset sprite --> si
       ;            hauteur sprite --> cx
       ;            largeur sprite --> bx
       ;            pos_x --> bp
       ;            pos_y --> di
     ;on sauvegarde tout ce qu'on change dans cette proc
          push ax di bp si cx bx
     
          ;on donne à :hola:  di les bonnes coordonnées pour l'affichage
          mov ax,320
          mul di
          add ax,bp
          mov di,ax
          add si,2
          boucle1 :
             push cx
             push di
             xor cx,cx
             mov cl,bl
             boucle2 :
                mov al,[si]
                mov es:[di],al
                inc si
                inc di
             loop boucle2
             pop di
             pop cx
             add di,320
          loop boucle1
          ; on restaure ce qui a été sauvegardé
          pop bx cx si bp di ax
     
    ret
    mon_draw_sprite endp
     
    ;-----------------------------------------------
    end main

  14. #14
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    C'est normal que ca t'affiche n'importe quoi, tu n'as pas respecté ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ;arguments :   offset sprite --> si
       ;            hauteur sprite --> cx
       ;            largeur sprite --> bx
       ;            pos_x --> bp
       ;            pos_y --> di
    Avant d'appeller la procédure, met dans si l'offset du sprite (ça tu l'a bien fait), dans cx la hauteur (ici c'est 27), dans bx la largeur (16) et choisit une position d'absisse x (que tu mets dans bp) et d'ordonnée y (que tu mets dans di). Voila essayes et dis moi
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Je reposte mon code que j'ai changé comme tu as dit et il ne se paase toujours rien(affiche rien)

    Pourrait tu posté ton code stp


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    .model small
    .stack 500h
    .486
     
     
    ;=======================================================
    ;Declaration des macros
    ;=======================================================
    .data	
     
    ;-------------------------------------------------------------------
    ;Tableaux
    ;-------------------------------------------------------------------
     
     sprite                   DB 16, 27
       DB 000,000,000,000,014,014,014,014,014,014,014,014,000,000,000,000
       DB 000,000,000,032,032,032,014,014,014,014,032,032,032,000,000,000
       DB 000,000,000,000,000,000,000,014,014,000,000,000,000,000,000,000
       DB 000,000,000,000,000,000,032,014,014,032,000,000,000,000,000,000
       DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
       DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
       DB 000,018,018,018,014,032,032,014,014,032,032,014,018,018,018,000
       DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
       DB 000,018,018,018,000,032,032,014,014,032,032,000,018,018,018,000
       DB 000,000,000,000,000,032,032,018,018,032,032,000,000,000,000,000
       DB 000,000,000,000,032,032,018,032,032,018,032,032,000,000,000,000
       DB 000,000,000,000,032,018,032,032,032,032,018,032,000,000,000,000
       DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
       DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
       DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
       DB 000,000,000,032,032,018,032,032,032,032,018,032,032,000,000,000
       DB 000,000,000,000,032,032,018,018,018,018,032,032,000,000,000,000
       DB 000,000,000,000,032,032,032,014,014,032,032,032,000,000,000,000
       DB 000,000,000,000,032,032,032,014,014,032,032,032,000,000,000,000
       DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
       DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
       DB 018,018,018,014,032,032,032,014,014,032,032,032,014,018,018,018
       DB 018,018,018,000,032,032,032,014,014,032,032,032,000,018,018,018
       DB 018,018,018,000,032,032,014,014,014,014,032,032,000,018,018,018
       DB 000,000,000,000,000,000,000,032,032,000,000,000,000,000,000,000
       DB 000,014,014,014,014,014,014,014,014,014,014,014,014,014,014,000
       DB 014,032,032,032,032,032,032,032,032,032,032,032,032,032,032,014
     
     
     
    .code
    ;--------------------------------------------------------
    ;debut du pgm                                           -
    ;--------------------------------------------------------
    main proc
    MOV AX,@data
    MOV DS,AX
     
    ;---------------------------------------------------------
    ; Corps du programme					 -
    ;---------------------------------------------------------
     
    ;-----------------------------------------
     
    mov ah,0
    mov al,12h
    int 10h
     
    mov cx,27
    mov bx,16
    mov bp,0
    mov di,0
    mov si,offset sprite
    call mon_draw_sprite
    CALL arret
    ;--------------------------------------------------------
    ; fin du programme                                      -
    ;--------------------------------------------------------
    		MOV AX,04c00h
    		INT 21h
    main            ENDP
     
    ;==========================================================
    ; Procedures                                              -
    ;==========================================================
    ;-----------------------------------------
    ; arret - attente d'une touche	 	
    ;					 
    ; Auteur	:Julien Azria		 
    ; Description	:attente d'une touche	 
    ;		 provoque l'arret	 
    ; Use		:arret 16(service 0h)
    ;-----------------------------------------
     arret   PROC
             	MOV AH,00h
             	INT 16h
    	   	RET
     arret   	ENDP
    ;--------------------------------------------------------
     
    mon_draw_sprite proc
       ;arguments :   offset sprite --> si
       ;            hauteur sprite --> cx
       ;            largeur sprite --> bx
       ;            pos_x --> bp
       ;            pos_y --> di
      ;on donne à :hola:  di les bonnes coordonnées pour l'affichage
      push ax di bp si cx bx
     
          mov ax,320
          mul di
          add ax,bp
          mov di,ax
          add si,2
          boucle1 :
             push cx
             push di
             xor cx,cx
             mov cl,bl
             boucle2 :
                mov al,[si]
                mov es:[di],al
                inc si
                inc di
             loop boucle2
             pop di
             pop cx
             add di,320
          loop boucle1
          ; on restaure ce qui a été sauvegardé
          pop bx cx si bp di ax
     
     
     
    ret
    mon_draw_sprite endp
     
    ;-----------------------------------------------
    end main

  16. #16
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Salut, désolé de pas de l'avoir dit avant mais tu as oublié de faire pointé ES sur l'écran, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mov ax, 0A000h  ;adresse de l'ecran
    mov es, ax
    Et sinon pour le mode graphique, tu met 12h, je connais pas, pour moi c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mov al,13h
    int 10h
    Ce coup si ça devrait etre bon
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Je me disais bien qu'il manquait qqe chose. En tout cas ca marche maintenant.

    J'ai essaye avec un autre bmp(sous forme de variable aussi) et le pb je crois c la palette apparement les couleurs ne sont pas respecté.
    Aurais tu une solution?

  18. #18
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    J'ai essaye avec un autre bmp(sous forme de variable aussi) et le pb je crois c la palette apparement les couleurs ne sont pas respecté.
    Comment as tu fais pour un mettre une autre bmp sous cette forme ? fais voir ce que ça donne stp
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Slt excuse moi si je n'ai pas répondu plus tot mais j'avais une rage de dents à soigner.

    En fait j'ai étudié ton format de sprite, il contient juste comme header la largeur et la longueur.
    Pour ce qui est du reste chaque byte correspond à un pixel et sa valeur correspond à la couleur de celui-ci.Don tu peut en faire toi meme.
    Exemple : 255,255,16,16,255,255 = blanc,blanc,noir,noir,blanc,blanc,
    En fait les couleurs viennent d'une palette mais celle ci n'est pas decrite dans ton format d'image ce qui rend la chose compliqué donc il faut faire des tests pour voir les couleurs....

    Voila en tt cas c bien interessant tt ca.

  20. #20
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    et avec tile studio tu as reussi à faire quelque chose ?
    peut etre que ceci pourrait aider (surement meme, c'est pour générer le code format asm)
    http://info.iut-amiens.fr/~cauchois/...urbo%20ASM.tsd
    à coller dans le dossier de TileStudio
    Voici aussi si tu veux un exemple de projet TileStudio, mais j'ai jamais reussi à en refaire qui fonctionne
    http://info.iut-amiens.fr/~cauchois/...rs/exemple.tsp

    Bon courage !
    Tiens moi au courant
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

Discussions similaires

  1. Processing: la prog graphique expérimentale et amusante
    Par el muchacho dans le forum API graphiques
    Réponses: 0
    Dernier message: 26/10/2010, 07h25
  2. bitmap et pixel
    Par gerard tarquin dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/04/2007, 14h10
  3. [Prog graphique] Quelle librairie utiliser?
    Par vinzzzz dans le forum C
    Réponses: 11
    Dernier message: 23/01/2006, 18h57
  4. Réponses: 14
    Dernier message: 04/01/2006, 14h40
  5. carte graphique et pixels shader
    Par yeeep dans le forum DirectX
    Réponses: 2
    Dernier message: 26/04/2003, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo