Orion_ a écrit :
Kevin> Project / Add files / extgraph.a / OK
raté, NOTEPAD et Fichier BATCH RULEZZZZZZZZZZZZZZZZ
bon, je sais, je sais, ch'ui trop une merde en asm
(même pas capable d'afficher un sprite![]()
)
voila mon, code, et sa marche pas, je pense pas mettre trompé
pourtant, j'ai essayer de tout bien suivre comment c'etait expliquer dans graphlib.h et sa marche po
78: movem.l d0-d1,-(a7) ; Sauvegarde les registres 79: move.l graphlib::plane0,a1 ; Destination Plan0 80: lea 1(pc),a0 ; adresse sprite Plan0 81: move.w 3,d0 ; X 82: move.w 4,d1 ; Y 83: moveq #-1,d3 ; Masque 84: jsr graphlib::put_sprite_mask 85: move.l graphlib::plane1,a1 ; Destination Plan1 86: lea 2(pc),a0 ; adresse sprite Plan1 90: jsr graphlib::put_sprite_mask 91: movem.l (a7)+,d0-d1 ; Restaure les registres
sprite0: dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF sprite1: dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF
include "romcalls.h" ;en attendant que je finisse le nouveau nostub.h pour TIGCC bra _main ;saute les données include "sprite.h" ;plans dans tigcc.a (gray.s) L_plane equ __L_plane D_plane equ __D_plane PutGraySprite MACRO movem.l d0-d2/a0-a1,-(a7) ; Sauvegarde les registres move.l L_plane(PC),-(a7) ; Destination Plan1 move.l D_plane(PC),-(a7) ; Destination Plan0 move.l #$FFFFFFFF,-(a7) ; Masque pea.l \2(pc) ; Plan1 pea.l \1(pc) ; Plan0 move.w #32,-(a7) ; Hauteur (La largeur est donnée par le choix de ; la routine - GraySprite32_BLIT. Il y a aussi ; une version GraySprite8X_BLIT pour des tailles ; arbitraires.) move.w \4,-(a7) ; Y move.w \3,-(a7) ; X bsr GraySprite32_BLIT ; Équivalent de graphlib::[i][/i]put_sprite_mask lea.l 26(a7),a7 ; Restaure la pile movem.l (a7)+,d0-d2/a0-a1 ; Restaure les registres ENDM xdef _ti89 xdef _nostub _main: PUSH_LCD_MEM ROM_CALL ScreenClear bsr GrayOn PutGraySprite sprite0,sprite1,#15,#15 ROM_CALL ngetchx bsr GrayOff POP_LCD_MEM rts
include "doorsos.h" include "graphlib.h" include "userlib.h" xdef _main xdef _ti89 xdef _comment PutGraySprite MACRO movem.l d0-d1,-(a7) lea \1(pc),a0 move.w \3,d0 ; X ;note que c pas très malin d'utiliser une macro dans ce genre de cas, puisque tu pourrais éventuellement mettre un moveq ici, selon les cas move.w \4,d1 ; Y ;note que c pas très malin d'utiliser une macro dans ce genre de cas, puisque tu pourrais éventuellement mettre un moveq ici, selon les cas moveq #-1,d3 move.l graphlib::plane0,a1 jsr graphlib::put_sprite_mask lea \2(pc),a0 move.l graphlib::plane1,a1 jsr graphlib::put_sprite_mask movem.l (a7)+,d0-d1 ENDM _main: jsr graphlib::clr_scr jsr graphlib::gray4 move.w #1,graphlib::choosescreen ;ba et ça faudrait pitet pas l'oublier #roll# PutGraySprite sprite0,sprite1,#15,#15 jsr userlib::idle_loop jsr graphlib::gray2 rts sprite0 dc.w 32,32/8 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF sprite1: dc.w 32,32/8 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $00,$00,$00,$00 dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF dc.b $FF,$FF,$FF,$FF _comment dc.b 'voili voila voilou',0 end
Kevin Kofler a écrit :
ExtGraph est plus pratique de toute façon, parce qu'elle peut afficher les 2 plans en même temps (un seul appel de fonction au lieu de 2).![]()
Kevin Kofler a écrit :
Soit tu fais exprès, soit tu n'as pas compris le principe des librairies statiques! Si tu n'utilises pas la fonction, elle n'y sera pas.
graphlib::put_sprite2 equ graphlib@000C ;-------------------------------------------------------------- ;put_sprite(x,y,sprite,maskadress) ; ; Puts the sprite pointed to by a0 on the screen ; at (d0,d1). The adress of the mask is a2 ; ;Input: d0.w = x ; d1.w = y ; a0.l = adress of the sprite ; a2.l = adress of the mask ; Sprite format is: ; sprite: dc.w 5 ;-> height of the sprite ; dc.w 1 ;width in bytes ; dc.b %11111000 ; dc.b %01110000 ; dc.b %00100000 ; dc.b %01110000 ; dc.b %11111000 ; ; (...) ; ; mask: dc.b %11111000 ; dc.b %11111000 ; dc.b %11111000 ; dc.b %11111000 ; dc.b %11111000 ; ; ;Output: nothing ; NO REGISTERS DESTROYED ;--------------------------------------------------------------