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 ;--------------------------------------------------------------
