Page 3 of 7

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 03 Jul 2018, 10:28
by Limonadd
Super, merci beaucoup Eupharius :D

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 03 Jul 2018, 10:31
by Epharius
Correction, tu peux utiliser le unique ou le continu, c'est comme tu veux je crois que dans une boucle ça ne doit pas changer grand chose. Perso j'utilise le unique scan tout le temps.

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 03 Jul 2018, 11:26
by Adriweb
Le scan continu, il vaut (beaucoup) mieux désactiver les interrupts pendant.
Cf. https://github.com/CE-Programming/CEmu/issues/259

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 03 Jul 2018, 11:36
by Limonadd
D'accord, mais au fait pourquoi il faut désactiver les interruptions? (et il faut les désactiver pour n'importe quel mode si on veut scanner le clavier ?)

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 03 Jul 2018, 12:21
by Adriweb
Parce que sinon l'OS va aller modifier le réglage pour ses propres besoin, et ça peut donner des résultats pas fiables (on peut le voir en tapant plusieurs touches du haut plus ou moins rapidement).
Et sinon, pas besoin pour le reste, non, il me semble - à confirmer par les experts...

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 03 Jul 2018, 12:29
by Limonadd
Ok super merci beaucoup !

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 04 Jul 2018, 13:03
by Limonadd
Bonjour! Oui c'est encore moi désolé xD mais j'ai un problème avec l'input je vous explique. Tout d'abord je vous montre le jeu en basique que j'avais fais: (attention c'est moche)
Image

Le principe est simple, on esquive les étoiles, et on doit tirer sur le rond qui apparait à un endroit aléatoirement en haut.
Je suis donc en train de le refaire en assembleur:
Code: Select all

Loop:
  di
  ld hl, $F50000
  ld (hl),2
  ld a,($F5001E)
  bit 1,a
  call nz,Moove_Left
  bit 2,a
  call nz,Moove_Right
  bit 3,a
  call nz,Shoot
  ei
  ;reste du code...
  jr Loop

On appuie sur les flèches droite ou gauche pour se déplacer, et la flèche du haut pour tirer.
Mais en fait dans mon code, quand j'appuie sur la flèche de gauche par exemple, c'est tellement rapide que le curseur à le temps de se déplacer de plusieurs crans vers la gauche. Ce que j'aimerais, c'est que quand quand j'appuie sur le flèche de gauche, il ne se déplace que d'un seul cran, et que même si je la garde enfoncée, il ne bouge plus, et que donc il ne se déplacera que une fois qu'on rappuiera à nouveau sur la touche.

Image
Voilà ce que ça donne. J'ai essayé plusieurs trucs mais j'arrive pas à faire en sorte qu'il ne se déplace qu'une fois, même si on appuie très brièvement , il a le temps de se déplacer de 2 ou 3 crans tellement c'est rapide... Je n'arrive pas à "bloquer" la touche. (enfin si mais après les touches ne marchait plus du tout ensuite xD) J'aimerais donc qu'il faille relacher la touche et rappuyer afin de pouvoir se déplacer à nouveau. Quelqu'un aurait -il une solution?

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 04 Jul 2018, 15:25
by Epharius
Pour ton jeu, ce sera suffisant d'utiliser la romcall _getky qui fonctionne à peu près comme _getkey mais qui ne bloque pas l'exécution de ton programme. L'avantage ici c'est que comme _getkey, _getky bloque la touche flèche appuyée pendant quelques instants, faisant en sorte que quand on appuie sur une flèche longuement, on bouge d'abord d'un cran, on attend un peu moins d'une seconde, et ensuite on bouge la flèche comme ce qu'elle fait avec ton programme.
Bon c'est dur d'être clair en expliquant ce qu'elle fait mais utilise là, tu comprendras de quoi je parle. À noter attention que les codes des touches ne sont pas les mêmes que ceux de _getkey, même si le fonctionnement reste très proche. Regarde dans ton include pour les codes mais son utilisation c'est en gros :
Code: Select all
call _getky
cp skLeft
call z,moveleft
cp skRight
call z,moveright
...

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 04 Jul 2018, 15:46
by Limonadd
Ok merci beaucoup pour ton aide ! Mais dans le tuto j'avais vu une autre romcall qui s'appelait _GetCSC ou un truc comme ça, qui est aussi censée ne pas bloquer le programme. Du coup y'a une différence entre _GetKy et _GetCSC? (je sais pas si tu connais cette romcall)

Re: Plusieurs questions sur l'assembleur

Unread postPosted: 04 Jul 2018, 15:49
by Epharius
heu oui pardon, j'ai du me tromper, utilise getcsc, je ne sais pas pourquoi j'ai getky dans la tête