1

j'ai à faire un bogue incompréhensible: grin

QQun pourrait regardé ce q'il peut faire pour moi j'ai essayé de faire une routine de sprite du genre graphlib 'mais sans pompé ce que JM à fait ! smile' ; [...] Tout me semble correct mais il y a un blem !
Regardez plutôt:

zlklib:tongueut_sprite
zlklib@0009:
;d0.w = X
;d1.w = Y
;a0.l ecran
;a1.l sprite
;a2.l mask
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
move.w (a1)+,d4
move.w (a1)+,d5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;d4.w = hauteur
;d5.w = largeur
sub.w #1,d4 ;On enlève 1 à d4 à cause du dbf
sub.w #1,d5 ;aussi.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
move.w d0,d7 ;on sauvegarde d7
put_sprite_start:
move.w #1,d3 ;on affiche un octet!
movem.l d0-d1/a0-a2,-(a7) ;On sauvegarde!
bsr sprite8 ;On affiche le sprite à [d0.w,d1.w] sur le buffer dont l'adresse est ds A0.l ,sprite a1.l ,mask a2.l
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
movem.l (a7)+,d0-d1/a0-a2

add.w #1,a2 ;on passe à l'autre octet sur le mask
add.w #1,a1 ;Et sur le sprite
;barre affiché !!!
add.w #8,d0 ;On ce place X à 8 pixel plus loin on saute un octet!
dbf d5,put_sprite_start ;recommence si nécéssaire
move.w d7,d0 ;On replace le X
add.w #1,d1 ;On incrémente le Y => ligne suivante!
dbf d4,put_sprite_start ;recommence une ligne si nécessaire !
rts


j'appelle cette routine de la façon suivante!

move.l #$4c00,a0 ;Plan d'affich...
move.l #sprite,a1
move.l #mask,a2
move.w #10,d0
move.w #10,d1
jsr zlklib:tongueut_sprite
jsr doorsos::GKeyIn
rts

sprite:
dc.w 2
dc.w 2
dc.w %1000000101111111
dc.w %1000000101111111

mask:
dc.w %1000000101111111
dc.w %1000000101111111



Eh ben ça m'affiche un gribouilli!
LinuX Powa (:

2

Arff!!!J'ai trouvé pourkoi ça ne passait pas!

maintenant tout est oki!

mais pour ceux que la programmation amuse je laisse la bestiole sans réponse smile
LinuX Powa (:

3

g pas cherché , mais ca doit pas etre bien compliqué ...
"I read the game.dll assembly more easily than you read the joke on the back of your box of Cocoa Pebbles, and have spent the past 2 1/2 years navigating it." ©

4

effectivement super facile une erreur:d'innattention smile
LinuX Powa (:

5

pourquoi tu enleve 1 a la largeur ?
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

6

pardon j'avias pas vu dbf wink
elle pas tres optimizer cette routine wink
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

7

je crois qu j'ai trouve si ton sprite tu l'affiche avec sprite8(qui doit sans doute afficher un sprite de 8x?) alors ton sprite si il fait comme tu l'as dis 2 de haut alors avec sprite 8 tu affiche:
dc.w %10000001
dc.w %01111111
l'unen desous de l'aute non ?

Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

8

ben planté smile
en fait' sprite8 affiche un sprite de 8 mais de hateur d3.w

c'est pour cela que je mets un move.w #1,d3 en fait il doit faire la boucle 1 fois donc je met 1 puis dans la routine sprite8 j'enlève 1 à ce registre à cause du dbf ' ,donc il va faire la boucle une fois ! smile

Mais j'ai remplacé cette routine par:
une routine affichant un octet!
du coup plus besoin de d3.w

ce qui donne:

zlklib:tongueut_sprite
zlklib@0009:
;d0.w = X
;d1.w = Y
;a0.l ecran
;a1.l sprite
;a2.l mask
clr.l d5
clr.l d4
move.w (a1)+,d4
move.w (a1)+,d5
;d4.w = hauteur
;d5.w = largeur
sub.w #1,d5 ;On enlève 1 à d4
sub.w #1,d4
move.w d0,d7
;??????????????
put_sprite_start:
bsr afficheoctet
;octet affiché! smile
add.w #1,a2
add.w #1,a1
add.w #8,d0 ;On se place à 8 pixels plus loin
dbf.w d5,put_sprite_start
;???????????????
move.w d7,d0 ;On replace le X
add.w #1,d1 ;On incrémente le Y
dbf.w d4,put_sprite_start
rts


l'erreur n'as pas été corigé mais ou il y a des points ? eh ben il manque qqchose qui permettra de faire la routine fontionné impeccable smile
LinuX Powa (:

9

ben la j'ai la fleme de chercher ! sad
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

10

euh, je suis hyper intéressé par une routine 8,16 ou 32 optimisée à fond (parce qu'elle va beaucoup me servir pour rtype), qu'est-ce qu'il faut changer pour que ce soit + rapide ?
:D

11

juste un petit truc plutot pratique...

tu mes ton sprite comme ca:


mon_sprite:
dc.b 2 ;hauteur
dc.b ...
dc.b ..

et apres:
lea mon_sprite,a0 (pas desoin de pc)
move (a0)+,d3
...

12

Oui,oui, mais je sais pourkoi j'ai pas fait ça !! smile
LinuX Powa (:

13

>lea mon_sprite,a0 (pas desoin de pc)

Oui, mais si tu mets le (PC), le code sera plus optimisé! (A68k ne fait pas automatiquement le PC-relatif.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

14

Et oui. Pourquoi ce conseil, Nhdpp ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

15

ca sert a koi de mettre Pc, sr c'est kio la difference ente a7 et sr ?
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

16

>ca sert a koi de mettre Pc

La référence est relative plutôt qu'absolue et donc prend moins de place et est aussi plus rapide.

>sr c'est kio la difference ente a7 et sr ?

attention Ne confonds pas sr et sp! (Je me suis aussi fait avoir d'abord, merci Thibaut de me corriger!)

a7=sp

sr n'a rien à voir!!!
[edit]Edité par Kevin Kofler le 08-07-2001 à 15:50:55[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

a7 = sp

sr c'est le Status Register, qui n'a rien à voir avec le pointeur de pile.

Kevin tu es fatigué, ou c'est moi ??
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

18

Oui, je suis fatigué. C'est corrigé.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

C'est rien, c'est humain wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

20

Pour sr, c'est le status register (registre d'états).

Il se divise en flags utilisateur et flags système.

Dans l'octet inférieur (flags utilisateur) sont enregistrés les résultats des tests et comparaisons, et beaucoup d'autres instructions remplissent également ces flags.

Par exemple, des instructions comme beq vérifient un bit de ce registre et effectuent le saut ou non selon la valeur de ce bit. beq ne saute que si le flag Z (le bit 2 de SR) est à 1.

Dans l'octet supérieur sont enregistrés les flags système (mode superviseur/mode utilisateur, trace, masque d'interruptions). On n'a le droit de changer ces octets qu'en mode superviseur:
* Pour passer en mode superviseur, il faut utiliser le trap #12.
* Pour modifier le masque d'interruptions, il faut utiliser le ROM call OSSetSR ou le trap #1 ou alors passer en mode superviseur.
* Pour activer le mode trace, il faut passer en mode superviseur.
[edit]Edité par Kevin Kofler le 08-07-2001 à 16:05:15[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité