1

j'ai un pb dans mon prog, qui plante (l'écran s'efface et la calc gèle) à cause de ces lignes:

for (j = 0; j < 960; j ++)
if (*((long*)GX_GetDarkPlane (Collisions) + j) != 0)
goto Exit;

pk?

d'autre part, thibault, pk les buffers de GX font 10k?

2

je viens de me rendre compte, ça plante pour j >= 255 confus

3

si je cast pas GX_GetDarkPlane en long*, ça revient au meme, ça plante a j = 255

4

Est-ce que ta variable 'j' ne serait pas déclarée en unsigned char, par hasard ?

5

si comme le dit jackiechan, tu l'as mal déclaré : tu as du avoir des warning quand tu as compilé ! faut les lire les warnings ! ils ne disent pas que des bétises !

6

Bizarre, si on déclare une variable en char, un warning apparait ("Comparaison is always true due to limited range of data type"), mais si on la déclare en unsigned char, il n'y a plus de warning... confus

7

ah oui! j'ai vérifié !
bizarre, bizarre,... un bug peut-être ? hum

8

merde désolé sad
en effet je l'avais déclaré comme unsigned char black

9

n'empeche que ma routine, ki est censé détecter si mon buffer est vide ou pas, ne fonctionne pas sad

10

Si tes lignes sont exprimées sous forme d'équations paramétriques, tu peux trouver s'il y a une intersection avec 2 additions, 2 multiplications et 1 division il me semble.
Mais il faudrait que tu passes par des nombres à virgule fixe pour avoir un minimum de précision.

11

je veux éviter les équations justement grin

12

Ton code est lent wink Je propose une optimisation :
long *double_mot= GX_GetDarkPlane (Collisions);
short j;
for (j=960; j--; )
  if (*double_mot++ != 0)
    goto Exit;
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.

13

oui oui, je comptais bien l'optimiser smile

14

Déclare bien j de type signed short si tu veux qu'un dba soit généré.
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

mais un dbra sera généré automatiquement dans le code que tu me proposes, meme en déclarant j non signé, non?

16

Oui, TIGCC remarque que la valeur est inférieure à 32767. Mais si jamais j est unsigned et que tu ne donnes pas le nombre d'itérations à la compilation (c'est à dire que tu n'affectes pas de nombre à j, mais une variable), tu n'obtiendras pas dbf, mais subq/bne.
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.

17

ah oui c vrai smile