Nickel, là on commence à attaquer les choses sérieuses, rien de plus jubilatoire que de bouger son perso à l'écran 👍👍 il y à 2, 3 trucs qui me dérangent, mais je t'embête pas continue comme ça, vidéos pas trop longues, bien expliquées, concises 💕
Merci ! Au contraire, si des choses ne te plaisent pas, n'hésites pas. En tant que débutant en assembleur, je suis preneur de toute remarque qui permette de m'améliorer. Et ca pourrait même servir à d'autres.
@@yreggor Disons que c'est pas que ça ne me plait pas. regarde ta BOUCLE_JEU tu fais un test clavier ensuite tu testes les touches exemple avec CP 242 suivi d'un CALL Z,GAUCHE à la fin de ta routine GAUCHE, tu fais un RET hors, ton programme vas reprendre APRES ton CALL Z,GAUCHE, soit au CP 243 le problème de faire comme ça, c'est que tu peux avoir un "faux" positif, car au retour de ton RET, tu connais pas la valeur de A, du coup ça peut enclencher une condition qu'on ne veut pas il est plus judicieux de faire un JP Z,GAUCHE, et à la place de ton RET dans ta routine GAUCHE, tu le remplaces par un JP BOUCLE_JEU, ainsi ton programme vas reprendre au CALL &BB1B, recharger A, et réinitialiser ton FLAG quand on à plusieurs tests, et je pense qu'il vas en avoir d'autres par la suite , ça peut poser problème pour ce qui est du &BD19 je pense qu'en la plaçant à la fin de la routine AFFICHE_PERSO, ça devrait résoudre le problème de clignotement, sinon à la fin de la routine EFFACE_PERSO le fait de mettre le BD19 dans ta boucle principale, fait qu'il exécute en permanence le BD19, ralentis ta boucle, puisque tu attends à chaque fois la synchro vbl, ce qui fausse, je pense, ton keyboard speed voilà, rien de bien grave ;)
Super merci de donner envie aux gens de s'éssayer à l'assembleur Z80. Quelques points, - J'aurais fait un test de Carry JR NC,BOUCLE_JEU avec le vecteur de clavier tel qu'il est décrit... Comme A est modifié on ne sait comment si le CARRY=0, il pourrait y avoir des valeurs parasites d'après la description du vecteur... - Tu utilises peu JR, toujours JP... JR est plus rapide dans les boucles courtes (1 octet de moins à lire en mémoire). Perso je ne fais des JP que si JR ne marche plus (erreur de build) ou si il faut tester des flags non accessibles dans JR (positif/negatif par exemple) - CP fait la même chose que SUB sans modifier A. Donc c'est A - l'info dans CP (tu dis le contraire dans ta video). Pour checker le flag Zero ce n'est pas grave (0=A-Info=Info-A). Mais pour tester le Carry ou le Signe, ça inverse la logque. - Pour le BD19. Ca dépend un peu de ce qu'il y a à faire... Il faut faire tous les effacements / déplacements / affichages avant que l'écran n'affiche les nouveaux graphismes. Quand il y a beaucoup d'éléments et de logique, il est bon de préparer tout ce qu'il y a à faire avant de lancer le process de mise à jour de l'affichage (des fois en triant les éléments à gérer du haut vers le bas). Perso, dans ton cas, je l'aurais mis au début de la routine EFFACE_PERSO, comme ça l'effacement et l'affichage se font durant le VBL que lorsqu'il faut déplacer ton bonhomme et ta boucle d'attente n'est pas ralentie). Pour info, les tests de clavier BASIC se font tous les 300ms (lors des interuptions).
Le joystick sous le basic génére du code ascii , le vecteur utilisé devrait fonctionner avec En utilisant la commande Print asc("direction joystick") Il devrait te retourner la bonne valeur à tester
Oui, je n'ai pas creusé la question mais en y regardant rapidement, le vecteur &BB24 sert à tester les joysticks. A et H contiennent l'état du premier joystick et L l'etat du second. Les bits 0 a 5 de ces registres se placeront a 1 si les directions suivantes sont respectées ; haut, bas, gauche, droite, feu 2, feu 1. Exemple, pour un joy pointe vers le haut avec le bouton de feu enfonce, l'accumulateur aura ses bits 0 et 5 mis a 1.
Merci très clair et agréable à suivre. Vivement la suite !
Merci beaucoup :-)
Excellent merci pour le travail
Merci 🙂 !
Superbe vidéo. Ca me donne envie de programmer mon Amstrad.
Merci ! Ce commentaire me fait très plaisir. N'hésitez pas à vous lancer, vous ne le regretterez pas.
Tombé dessus "par hasard" ... 😅
Super bien fait ! Merci !
Surtout : IL FAUT CONTINUER ET NE RIEN LÂCHER !!! :3
#Courage 😉
Merci pour ces encouragements 🙂 !
Nickel, là on commence à attaquer les choses sérieuses, rien de plus jubilatoire que de bouger son perso à l'écran 👍👍
il y à 2, 3 trucs qui me dérangent, mais je t'embête pas
continue comme ça, vidéos pas trop longues, bien expliquées, concises 💕
Merci ! Au contraire, si des choses ne te plaisent pas, n'hésites pas. En tant que débutant en assembleur, je suis preneur de toute remarque qui permette de m'améliorer. Et ca pourrait même servir à d'autres.
@@yreggor Disons que c'est pas que ça ne me plait pas.
regarde ta BOUCLE_JEU
tu fais un test clavier
ensuite tu testes les touches exemple avec CP 242 suivi d'un CALL Z,GAUCHE
à la fin de ta routine GAUCHE, tu fais un RET
hors, ton programme vas reprendre APRES ton CALL Z,GAUCHE, soit au CP 243
le problème de faire comme ça, c'est que tu peux avoir un "faux" positif, car au retour de ton RET, tu connais pas la valeur de A, du coup ça peut enclencher une condition qu'on ne veut pas
il est plus judicieux de faire un JP Z,GAUCHE, et à la place de ton RET dans ta routine GAUCHE, tu le remplaces par un JP BOUCLE_JEU, ainsi ton programme vas reprendre au CALL &BB1B, recharger A, et réinitialiser ton FLAG
quand on à plusieurs tests, et je pense qu'il vas en avoir d'autres par la suite , ça peut poser problème
pour ce qui est du &BD19 je pense qu'en la plaçant à la fin de la routine AFFICHE_PERSO, ça devrait résoudre le problème de clignotement, sinon à la fin de la routine EFFACE_PERSO
le fait de mettre le BD19 dans ta boucle principale, fait qu'il exécute en permanence le BD19, ralentis ta boucle, puisque tu attends à chaque fois la synchro vbl, ce qui fausse, je pense, ton keyboard speed
voilà, rien de bien grave ;)
Merci pour tes remarques. Effectivement, avec tes suggestions, mon code sera largement meilleur. Merci beaucoup !
Super merci de donner envie aux gens de s'éssayer à l'assembleur Z80.
Quelques points,
- J'aurais fait un test de Carry JR NC,BOUCLE_JEU avec le vecteur de clavier tel qu'il est décrit... Comme A est modifié on ne sait comment si le CARRY=0, il pourrait y avoir des valeurs parasites d'après la description du vecteur...
- Tu utilises peu JR, toujours JP... JR est plus rapide dans les boucles courtes (1 octet de moins à lire en mémoire). Perso je ne fais des JP que si JR ne marche plus (erreur de build) ou si il faut tester des flags non accessibles dans JR (positif/negatif par exemple)
- CP fait la même chose que SUB sans modifier A. Donc c'est A - l'info dans CP (tu dis le contraire dans ta video). Pour checker le flag Zero ce n'est pas grave (0=A-Info=Info-A). Mais pour tester le Carry ou le Signe, ça inverse la logque.
- Pour le BD19. Ca dépend un peu de ce qu'il y a à faire... Il faut faire tous les effacements / déplacements / affichages avant que l'écran n'affiche les nouveaux graphismes. Quand il y a beaucoup d'éléments et de logique, il est bon de préparer tout ce qu'il y a à faire avant de lancer le process de mise à jour de l'affichage (des fois en triant les éléments à gérer du haut vers le bas). Perso, dans ton cas, je l'aurais mis au début de la routine EFFACE_PERSO, comme ça l'effacement et l'affichage se font durant le VBL que lorsqu'il faut déplacer ton bonhomme et ta boucle d'attente n'est pas ralentie). Pour info, les tests de clavier BASIC se font tous les 300ms (lors des interuptions).
Merci beaucoup pour ces précisions. Ca va m'être très utile. 🙂
Super video, j'imagine qu'il faudrait rajouter du code pour supporter le joystick, le manuel n'est pas tres clair concernant les numeros a utiliser.
Le joystick sous le basic génére du code ascii , le vecteur utilisé devrait fonctionner avec
En utilisant la commande
Print asc("direction joystick")
Il devrait te retourner la bonne valeur à tester
Oui, je n'ai pas creusé la question mais en y regardant rapidement, le vecteur &BB24 sert à tester les joysticks. A et H contiennent l'état du premier joystick et L l'etat du second. Les bits 0 a 5 de ces registres se placeront a 1 si les directions suivantes sont respectées ; haut, bas, gauche, droite, feu 2, feu 1. Exemple, pour un joy pointe vers le haut avec le bouton de feu enfonce, l'accumulateur aura ses bits 0 et 5 mis a 1.
Il y'a les codes ASCII suivants pour le joystick 0 : Gauche 8, Droite 9, Haut 11 et Bas 10
Après avoir vu la video d'un youtuber expliquant l'ASM sur Amiga je dirais que le call BD19 devrait se faire juste avant d'afficher et d'effacer.
Merci bien ! Je vais tester cela.