1

-

2

Ben tu sauves le fond dans un buffer memoire, puis apres tu le recopies ?

3

-

4

un buffer c un tampon, une zone mem que tu alloue d'une maniere ou d'une autre.

5

-

6

void glaux_put_string(short x, short y, char *str) { while (*str)  {  gl_put_sprite_16(x, y, *(str++));  x+=8;  } }

7

Orion_ a écrit :
un buffer memoire confusconfus attend, je prend mon bouquin, je vais essayer de comprendre.

Tu as besoin d'un livre pour ça?
 pea.l (3840).w
 ROM_CALL HeapAllocPtr
 addq.l #4,a7

et c'est bon!
sinon, pour les operations sur les chaines ?
en fait je voudrais faire un truc comme sa:
chaine := 'Ma chaine....'; For i := 1 to length(chaine) do DrawStr(i*6,1,chaine[ i ]);

Déjà, DrawStr affiche déjà la chaîne entière. Ce que tu voulais probablement dire est DrawChar.
Ensuite, l'équivalent d'un for est une boucle dbra (parfois, on doit aussi coder à la main, mais là, dbra va bien):
 pea.l chaine(PC)
 ROM_CALL strlen
 addq.l #4,a7
 move.w d0,d3
 subq.w #1,d3
 lea.l chaine(PC),a2
 moveq.l #1,d4
loop:
 move.w #4,-(a7) ;A_NORMAL
 move.b (a2)+,d0
 ext.w d0 ;je pense que ça passe même sans ça, mais on va travailler proprement
 move.w d0,-(a7)
 swap d4
 addq.w #6,d4
 swap d4
 move.l d4,-(a7)
 ROM_CALL DrawChar
 addq.l #8,a7
 dbra.w d3,loop

J'espère que je ne me suis pas trompé.
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é

8

-

9

Attention, j'avais oublié 2 lignes à la fin de la boucle. (Je viens de les rajouter.)
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é

10

-

11

Orion_ a écrit :
pea.l chaine(PC) ; on "charge" la chaine
ROM_CALL strlen ; regarde sa taille
addq.l #4,a7 ; restore la pile (.L donc 4)
move.w d0,d3 ; on place le resultat dans d3
subq.w #1,d3 ; on retire 1 pour dbra (qui s'arrete a -1)
lea.l chaine(PC),a2 ; on charge la chaine dans a2
moveq.l #1,d4 ; d4=1
loop:
move.w #4,-(a7) ;A_NORMAL
move.b (a2)+,d0 ; ??????
ext.w d0 ; ?????
move.w d0,-(a7) ????
swap d4 ; ???????
addq.w #6,d4 ; on avance de 6 pixel (??)
swap d4 ; ??????
move.l d4,-(a7) ; ???
dbra.w d3,loop ; on loop jusqu'a la fin de la chaine
heu, ou est la fonction DrawChar la dedans ?????

Dans les 2 lignes que j'avais oubliées. grin Il manque un ROM_CALL DrawChar et un addq.l #8,a7. Ils y sont maintenant.
au fait, une fois qu'on a fait:
pea.l (3840).w
ROM_CALL HeapAllocPtr
addq.l #4,a7
on balance nos donnée dans quel reg ??

Tu as un pointeur vers tes 3840 octets en a0. Donc tu copies tes données en (a0). Par exemple (ne code surtout pas comme ça, memcpy est fait pour ça):
 move.l #1,(a0)+
 move.l #2,(a0)+
 ...
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é

12

Sinon, pour le morceau que tu ne comprends pas:
 move.b (a2)+,d0 ;prélève l'octet en (a2) et incrémente a2. En gros: [i]char d0;char *a2;d0=*(a2++);[/i]
 ext.w d0 ;extend le [i]char[/i] en un [i]short[/i]. En gros: [i]short d0_w;char d0_b;d0_w=d0_b;[/i]
 move.w d0,-(a7) ;passe le [i]short[/i] sur la pile
 ;(Tout ça parce qu'un [i]char[/i] doit toujours être promu en [i]short[/i] pour pouvoir le passer sur la pile.)
 swap d4 ;échange les 2 mots de d4
 addq.w #6,d4 ;oui, on avance de 6 pixels
 swap d4 ;échange les 2 mots de d4.
 ;(Tout ça pour rajouter 6 au mot de poids fort de d4. On aurait aussi pu mettre:
 ;[i]addi.l #$60000,d4[/i].)
 move.l d4,-(a7) ;passe d4 sur la pile. On passe les 2 coordonnées à la fois comme ça.
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é

13

-

14

-

15

-

16

heu, dbf ne va pas jusqu'à -1... mais jusqu'à 0, tu dois soustraire -1 au nombre d'itérations pke même si tu as 0 itérations, la boucle se fera au minimum une fois, puisque le dbf est en bas de la boucle... c pour ça. la dbf en lui même arrête de brancher a 0
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

17

-

18

C'est la même chose.
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

Kevin, j'ai pas trop étudié ta source, mais pourquoi fais-tu appel à strlen au début confus
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

-

21

Orion : j'y ai pensé, heureusement je ne suis pas encore aussi con que ça, merci wink
Le truc c'est que je doute que Kevin ai commis l'énormité de compter le nombre de caractères avant l'affichage : ce serait surprenant comme stratégie de la part d'un pro comme lui roll
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.

22

-

23

eek Des fois j'ai l'impression de rêver, sur ce forum fou

Bon, tu sais comment se termine une chaîne de caractères ?? Alors à partir de là tu peux trouver par toi-même comment modifier l'algorithme de façon à ne pas avoir besoin de la longueur des chaînes.


roll
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.

24

-

25

Nan nan nan désolé mais ce n'est pas un problème d'implémentation (c'est à dire que le fait que tu débutes en ASM68k ne peut pas excuser), mais c'est un problème d'algorithmie, des plus simples en plus !
(je ne suis pourtant pas un boss en algorithmie)
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.

26

-

27

lol rotfl

28

Le coup de l'empilage/restauration à l'intérieur de la boucle, je sais pas si c'est Kevin qui te l'a donné, mais ce n'est pas très optimisé forbidden

Le cmp.b #0,d0 (d'ailleurs optimisable en tst.b d0) est inutile car les flags du SR sont positionnés automatiquement selon la valeur de destination par la plupart des instructions 68k (dont move).

Ca plante parcequ'avant de sortir, tu as empilé un mot (move.w #4,-(a7)) que tu ne dépiles pas avant le rts.
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.

29

-

30

Mais ya un truc que je comprends pas, DrawStr fait déjà très bien ce travail non ?
T3 member
TimeToTeam : A new generation of games for TI