Bonjour, les instructions sont différentes entre les 2 types de processeurs, mais surtout, l'adressage mémoire fonctionne complètement autrement. Il est préférable de trouver des tutoriels x86 (ou mieux, x64 pour maintenant, autant apprendre sur ce qu'il y a de plus récent !)
Pas si facile que ça : J'ai bien compris ce qu'il fallait programmer pour chaque appui ou combinaison de touches enfoncées, mais je bute sur un problème : Si je programme le UP seul, le LEFT seul et le UP+LEFT enfoncés, j'obtiens des 0 avec UP appuyé, des 7 avec le LEFT enfoncé, mais si j'appuie sur le UP et LEFT en même temps, j'aurais sois du 0 ou du 7 comme résultat. Si je laisse les touches enfoncées, je vois bien le 2, le 0 et le 7 qui défilent, mais je n'arrive jamais à afficher le 2. Pour un appui simultané de 2 touches, il faudrait que je neutralise les tests de vérification d'appui d'une seule touche. Je suis peut-être passé à côté d'un petit détail qui fait tout ....
OK... Alors, en fait, lorsque tu appuie sur tes 2 touches UP + LEFT, dans ton code, tu commences par tester UP sans regarder LEFT, et donc tu traites UP avec ton JSR et tu reviens pour tester LEFT ... sans UP et ainsi tu traites pour LEFT et tu reviens pour traiter la suite. Ce qu'il convient de faire est plutôt de tester les combinaisons. Si elles apparaissent, tu les traites et, surtout, tu sors de tout autre traitement pour recommencer ta boucle. Donc commencer par 2 directions + fire, puis les doubles directions, puis les simples directions avec fire, et enfin les simple direction et fire tout seul.
Bien compris. Je m’en étais sorti avec une méthode qui vaut ce qu’elle vaut : une variable appelée trois boutons et activée à 1 lorsque trois boutons sont appuyés et une variable appelée deux boutons et activée à 1 lorsque deux boutons sont activés. Si l’on passe dans le test d’un seul bouton appuyé et que ces 2 variables sont à 1, le test est ignoré. De même si l’on passe dans le test de l’appui de 2 boutons et que la variable 3 boutons est activée, ce test est ignoré. En fin les variables sont remises à 0 lors du relâchement de tout appui de plusieurs touches.
Encore merci pour cette nouvelle vidéo. Pour l’exercice, il n’y a plus qu’à mettre les mains dans le cambouis. 😊
Tout à fait 🎉
C'est pas super compliqué 😜
Je débute en Assembler, est ce que comprendre les bases du 6502 peut m'aider à apprendre x86?
Bonjour, les instructions sont différentes entre les 2 types de processeurs, mais surtout, l'adressage mémoire fonctionne complètement autrement. Il est préférable de trouver des tutoriels x86 (ou mieux, x64 pour maintenant, autant apprendre sur ce qu'il y a de plus récent !)
@RetroProgrammation-fq1cv merci
de rien 👌
Pas si facile que ça : J'ai bien compris ce qu'il fallait programmer pour chaque appui ou combinaison de touches enfoncées, mais je bute sur un problème : Si je programme le UP seul, le LEFT seul et le UP+LEFT enfoncés, j'obtiens des 0 avec UP appuyé, des 7 avec le LEFT enfoncé, mais si j'appuie sur le UP et LEFT en même temps, j'aurais sois du 0 ou du 7 comme résultat. Si je laisse les touches enfoncées, je vois bien le 2, le 0 et le 7 qui défilent, mais je n'arrive jamais à afficher le 2. Pour un appui simultané de 2 touches, il faudrait que je neutralise les tests de vérification d'appui d'une seule touche. Je suis peut-être passé à côté d'un petit détail qui fait tout ....
euhhh... Tu peux me mettre le code qui te donne les 0 et les 7 ?
@@RetroProgrammation-fq1cv Oui, voici :
START_TEST_JOYSTICK
ldy PRA ; port A du joystick $DC00
; *************************************************
; * UP Afficher des zéros à l'écran *
; *************************************************
tya
and #%00000001
bne SUITE1
lda #48 ; caractère 0
jsr FILL_SCREEN
SUITE1
; *************************************************
; * LEFT Afficher des 7 à l'écran *
; *************************************************
tya
and #%00000100
bne SUITE2
lda #55 ; caractère 7
jsr FILL_SCREEN
SUITE2
jmp START_TEST_JOYSTICK
@@RetroProgrammation-fq1cv Tiens, c'est curieux, je t'avais mis une réponse vers 14H00, et celle-ci ainsi que tout le code a disparu ...
OK...
Alors, en fait, lorsque tu appuie sur tes 2 touches UP + LEFT, dans ton code, tu commences par tester UP sans regarder LEFT, et donc tu traites UP avec ton JSR et tu reviens pour tester LEFT ... sans UP et ainsi tu traites pour LEFT et tu reviens pour traiter la suite.
Ce qu'il convient de faire est plutôt de tester les combinaisons. Si elles apparaissent, tu les traites et, surtout, tu sors de tout autre traitement pour recommencer ta boucle. Donc commencer par 2 directions + fire, puis les doubles directions, puis les simples directions avec fire, et enfin les simple direction et fire tout seul.
Bien compris. Je m’en étais sorti avec une méthode qui vaut ce qu’elle vaut : une variable appelée trois boutons et activée à 1 lorsque trois boutons sont appuyés et une variable appelée deux boutons et activée à 1 lorsque deux boutons sont activés. Si l’on passe dans le test d’un seul bouton appuyé et que ces 2 variables sont à 1, le test est ignoré. De même si l’on passe dans le test de l’appui de 2 boutons et que la variable 3 boutons est activée, ce test est ignoré. En fin les variables sont remises à 0 lors du relâchement de tout appui de plusieurs touches.