30

ricco59 (./29) :
pour le mulu 160, pas de soucis
pour le divs, j'va reflechir un tio peu apres canada/suisse (hockey) wink

divs #16,d0 = lsr #4,d0
Web: http://pmandin.atari.org/
Programmeur Linux, Atari
Spécialité: Développement, jeux

31

Quand on souffle les réponses, autant souffler les bonnes, élève pmdata embarrassed

C'est asr, vu que c'est un divs. Et encore, c'est pas équivalent, l'arrondi ne se fait pas de la même façon pour les nombres négatifs.
(bon OK, dans ce cas précis, faire le calcul en non-signé ne change rien)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

32

-

33

et puis, en même temps, la division n'a pas de raison d'être signée il me semble

de plus, sur un ST, je pense que j'utiliserai effectivement un précalcul pour les masques
il faudrait vérifier avec une table de cycles ce qui est le plus rapide
sur 68030, pas de problèmes, les décalages sont rapides

34

voici mon optimisation

d0 = X
d1 = Y
;---------------------
move.w d1,d2
lsl.w #7,d1 ; Y*128
lsl.w #5,d2 ; Y* 32
add.w d2,d1 ; Y*(128+32)
move.w d0,d3
lsr #4,d3
lsl #3,d3
add.w d3,d1
add.w d1,a0
add.w d3,d3
sub.w d3,d0
move.w #%1000000000000000,d3
lsr.w d0,d3
or.w d3,(a0)

je me suis inspiré de la maniere de trouver le reste d'une divison
1> X % 16
2> (X % 16)*8 (mot dans lequel ecrire)
3> (X % 16)*16 que j'ai remplacé par 2x etape2
4> X - etape3 (bit à allumer)

voili voilou

A+
avatar
Tous mes travaux sont centralisés sur mon piti blog. N'hésitez pas à y faire un tour : https://ricco59.blogspot.com/

35

Pas mal, pas mal smile (j'ai pas vérifié que c'était bon).

On peut améliorer un peu :
move.w	d1,d2 
lsl.w	#7,d1	; Y*128 
lsl.w	#5,d2	; Y* 32 
add.w	d2,d1	; Y*(128+32)
peut être remplacé par
lsl.w	#5,d1
move.w	d1,d2 
lsl.w	#2,d1
add.w	d2,d1
qui prend moins de cycles sur 68000.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

36

ca marche wink
avatar
Tous mes travaux sont centralisés sur mon piti blog. N'hésitez pas à y faire un tour : https://ricco59.blogspot.com/

37

Zerosquare (./35) :
Pas mal, pas mal smile (j'ai pas vérifié que c'était bon).

On peut améliorer un peu :
move.w	d1,d2 
lsl.w	#7,d1	; Y*128 
lsl.w	#5,d2	; Y* 32 
add.w	d2,d1	; Y*(128+32)
peut être remplacé par
lsl.w	#5,d1
move.w	d1,d2 
lsl.w	#2,d1
add.w	d2,d1
qui prend moins de cycles sur 68000.


il y a plus rapide, une table des multiples de 160. En gros cela ferait :

d1.w=numéro de ligne
a0.l=Adresse de la table

add.w d1,d1
move.w 0(a0,d1.w),d1

et hop dans d1 l'offset pour les lignes

GT smile
avatar
Accrochez vous ca va être Cerebral !!

38

Je sais, mais faut pas tout lui filer tout cuit d'un seul coup tongue

Et puis de toute façon, la routine est un peu académique, à part pour les starfields on s'amuse rarement à dessiner point par point wink
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

39

Orion_ (./32) :
(...)
mais c'est vrai que c'est mieux si on trouve par soit même oui


exact wink
avatar
Tous mes travaux sont centralisés sur mon piti blog. N'hésitez pas à y faire un tour : https://ricco59.blogspot.com/