
De plus comment est-il possible par exemple de tomber 1/10 sur un nombre et voir plus sur d'autres nombres avec random?
2.je crois (KK confirmera) que lorsqu'on demande des nombres aléatoires à un intervalle très court la fonction renvoie le même nombre
unsigned long int GCL_RandomSeed; unsigned long int GCL_Random(unsigned long int Max) { GCL_RandomSeed = 0x0019660D * GCL_RandomSeed + 0x3C6EF35F; return GCL_RandomSeed%Max; } void GCL_Randomize() { GCL_RandomSeed = peekIO(0x600017); }
int i; for (i=0; i!=100; i++) tab=srand(100);
C'est pas plutot? for (i=0; i<100; i++) tab=srand(100);
geogeo :
Est-il possible d'utiliser le clavier dans une interruption comme les instruction _keytest...
Où je peux trouver le rowread le plus rapide???
Pour redirigé l'auto int 2 du clavier un SetIntVec suffit? Et une dernière, pour les jeux de shoot'em up, quand on reste appuyer sur la touche de tir les missiles partent avec le même interval alors que lorsque qu'on appuie plusieurs fois sur la touche de tir, les missiles partent avec des intervalles différent, comment réaliser ça??
GoldenCrystal :c'est pas bien de faire comme ça. Une interruption ne devrait servir à rien d'autre qu'a donner des informations au programmes.
Tu peux très bien utiliser des variables globales et les interprêter au bon moment dans la boucle du programme, ça donnera probablement un meilleur résultat et ça sera moins crade.
Garde a l'esprit que si tu changes tes variables pendant le dessin, tu pourrait obtenir des bugs d'affichage.
| d0.w: keyboard row mask | Outputs column mask in d0.b rowread: not.w %d0 andi.w #0x3FF,%d0 move.w %d0,(0x600018) move.w #23,%d0 __rr_loop: dbf %d0,__rr_loop | Read value and store it in d0 move.b (0x60001B),%d0 not.b %d0 rts
geogeo :
J'ai initialisé le compteur de cette façon au démarrage du jeu:
randomize (); srand (65535);
// compute random seed from 0x600017 and FiftyMSecTick unsigned long randnum=255-peekIO(0x600017); if (!AMS_1xx) randnum+=(*((volatile unsigned long*)(_rom_call_addr(4FC))))* (_Gray3PIsRealHW2()?52:78); srand(randnum);
if (!AMS_1xx) randnum+=(*((volatile unsigned long*)(_rom_call_addr(4FC))))* (_Gray3PIsRealHW2()?52:78);
Kevin Kofler
:geogeo :C'est idiot! Seul le dernier règlage compte, et c'est toujours le même!
J'ai initialisé le compteur de cette façon au démarrage du jeu:
randomize (); srand (65535);