Logicielsmoto.com http://www.logicielsmoto.com/phpBB/ |
|
Debut en asm sur TO8 http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=571 |
Page 13 sur 19 |
Auteur: | Samuel Devulder [ 13 Mar 2020, 13:51 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Ah non c'est dans un autre contexte.. qu'il faudra que je publie à un moment ou à un autre un de ces quatres. Oublies, j'ai rien dit (d'utile). |
Auteur: | adnz [ 16 Mar 2020, 16:45 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
j'ai un soucis que je comprends pas sur le joystick 0 DCMOTO>TO8 : OK VRAI TO8 256k : directions ne fonctionne pas, le bouton est OK Code: ... JOYS EQU $E827 ... ... *TEST_JOYSTICK_0 CLRA CLRB jr JSR JOYS cmpb #$03 <- code right LBEQ set_pdir_r jl JSR JOYS cmpb #$07 <- code left LBEQ set_pdir_l jt JSR JOYS cmpb #$01 <- code top LBEQ set_pdir_t jb JSR JOYS cmpb #$05 <- code bottom LBEQ set_pdir_b ... Si quelqu'un voit pourquoi ! merci. |
Auteur: | Samuel Devulder [ 16 Mar 2020, 17:35 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Je ne sais pas trop, mais je trouve que tu fais trop d'appel à JOYS. Une seule fois est suffisante car la valeur B n'est pas changée par les tests consécutifs. |
Auteur: | adnz [ 16 Mar 2020, 18:04 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
ah oui zut c'est vrai. je corrige... [Edit]: voila j'ai enlevé les autres JOYS merci. |
Auteur: | Samuel Devulder [ 16 Mar 2020, 19:43 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Est-ce que ça marche mieux sur la machine réelle ? |
Auteur: | adnz [ 16 Mar 2020, 20:23 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
non, marche pas, je vais tester avec PEEK l'adresse sur le vrai TO8 pour voir les valeurs ! |
Auteur: | Daniel Coulom [ 16 Mar 2020, 20:48 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Quel est le modèle de la manette Thomson ? As-tu testé son fonctionnement avec un ohmmètre en sortie de la fiche DB9 ? As-tu vérifié les soudures du connecteur manette sur la carte mère du TO8 ? Avant d'ouvrir le boîtier, tu peux aussi faire un test par une boucle en BASIC avec STICK et STRIG. |
Auteur: | adnz [ 16 Mar 2020, 21:03 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Manette fonctionnelle, megadrive 3 boutons normal. (mes jeux D7 TO fonctionnes avec.) j'ai tester en faisant peek(&hE7CC), ca fonctionne .... j'ai fais une version avec ça pour voir si ça fonctionne, je test... Code: JOYDIR EQU $E7CC .. LDB JOYDIR jr cmpb #247 LBEQ set_pdir_r jl cmpb #251 LBEQ set_pdir_l jt cmpb #254 LBEQ set_pdir_t jb cmpb #253 LBEQ set_pdir_b [Edit]: - zut ça marche pas ! - la manette fonctionne avec mes jeux originaux TO, mais pas avec mon code ! - sur le TO8 j'ai testé un programme BASIC, locate de peek &he7cc , je vois bien les valeurs 247,251,254,253 avec le meme PAD megadrive - je vais vérifier si le bug n'est pas après !! genre dans le "set_pdir_r" par exemple ! |
Auteur: | adnz [ 16 Mar 2020, 23:41 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
J'ai tester un autre code simple, le joystick (JOYS) fonctionne bien, - Y'a un truc qui doit bloquer E7CC dans mon code(pacman) qui fonctionne pas ! - J'utilise de l'initialisation de PIA pour la lecture de sample au début du programme ! j'ai utilisé ce code Code: ******* autorise la sortie son LDA $E7C5 ORA #$01 * autorise STA $E7C5 * la sortie son LDA $E7C1 ANDA #$F7 STA $E7C1 CLR $E7CF **** Initialisation son LDD #$3F04 STA $E7CD STB $E7CF ******* Initialisation CNA en sortie LDA $E7CF * lecture registre de controle B ANDA #$FB * raz bit 2 STA $E7CF * selection DDRB LDB #$3F * set bits 0-5 STB $E7CD * bits CNA en sortie ORA #$04 * set b2 STA $E7CF * selection PB ça pourrait être à cause d'un truc la dedans ? j'ai trouvé ce post https://forum.system-cfg.com/viewtopic.php?t=6111 je regarde si ça peut m'aider .... Apparement je suis tombé sur le piège du débutant lol... |
Auteur: | adnz [ 17 Mar 2020, 02:19 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
...En faite à chaque fois que je veux lire le joystick puis générer un son je dois reconfigurer le PIA pour l'un ou pour l'autre ? |
Auteur: | Daniel Coulom [ 17 Mar 2020, 15:28 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Non. Il suffit de configurer le PIA musique et jeux en début de programme : - En sortie les bits 0-5 du PORTB (CNA) - En entrée tous les bits du PORTA (positions des deux manettes) et les bits 6-7 du PORTB (boutons d'action). |
Auteur: | adnz [ 18 Mar 2020, 17:55 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
ouais pas simple cette histoire, (sur la vrai machine!) J'ai lu plusieurs fois le datasheet mais pas simple à capter. - j'arrive à avoir du son + directions joystick0 : mais le sons est super cradé !! (genre je crois qu'il faut bloquer la souris (le bit 2 de je sais plus où =0) avant emission du son !) puis le bit 2 de je sais plus où =1 avant la lecture joystick ! - j'arrive à avoir le son net mais pas de directions joystick0 ! note: j'ai vu ce code "Exemple d'initialisation du 6821" ici : https://forum.system-cfg.com/viewtopic.php?f=25&t=6111 LDA <$CE lecture registre de controle A ...etc.. J'imagine qu'ici DP = $E7 ! PS: Faut que je m'exerce vraiment sur la modification en 1 ou 0 mais d'un seul bit, j'ai pas l'habitude encore ! je potasse le wiki de pulkomandy aussi... |
Auteur: | Neotenien [ 28 Sep 2020, 12:20 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
adnz a écrit: Trop cool, ouf, j'ai résolu le soucis... Déplacement tous les 2 pixels : OK Pour le déplacement tous les pixels, trop compliqué pour le moment pour moi ! je vais donc mettre à jour mes routines du pacman, car il est en déplacement tous les 4 px en x ! Dans l'algorithme que j'ai écrit pour l'affichage des sprites (qui vont jusqu'à... n'importe quelle talle), j'utilise un tableau qui mets d'abord les octets de RAMA à la suite, puis les octets de RAMB. Un octet = 2 pixel. Comme j'ai créé un logiciel JavaScript qui permet de dessiner les sprites 16 couleurs et d'afficher les tableaux de codes d'octets RAMA et RAMB c'est hyper rapide en fait pour créer les FCB par la suite (si on n'est pas trop mauvais graphiste). Et ça ne fait qu'un basculement RAMA vers RAMB par Sprite/Tiles!! C'est du temps gagné! Et puisque les tests de transparence ne se font qu'en 30 à 35 cycle en moyenne PAR octet (donc tous les 2 pixels), on peut afficher AU MINS 12 bons sprites en animation 1/10s! Mais ceci sasn les tests de collision ou les scores. |
Auteur: | Neotenien [ 28 Sep 2020, 12:30 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
Samuel Devulder a écrit: Hum... c'est vrai que la conversion nombre binaire en décimal est couteuse (beaucoup de divisions). On peut être plus malin. Au lieu de représenter le score comme un entier 16 bits on peut le représenter comme N octets en mémoire, ces N octets ayant des valeurs entre 0 et 9. Pour convertir un tel nombre en ascii il suffit d'ajouter '0' ($30) aux octets en mémoire. C'est très facile et très rapide. Très bien, ca facilitera l'affichage, mais comment qu'on fait de l'arithmétique avec ca? En fait on a qu'une seule opération à réaliser: l'addition de deux tels nombres. La routine suivante fait NB0 = NB1 + NB2 Code: LDA #5 ; 5 octets (chiffres) par nombre LDY #NB0 ; resultat LDX #NB1 ; 1er nombre LDU #NB2 ; 2e nombre BSR ADD_NB BSR PRINT_NB_Y ... *================================================ * calcule nb(Y) = nb(X) + nb(U) avec A=N=nb de chiffres des nombres ADD_NB PSHS D LEAX A,X ; ajuste X pour aller en fin de nombre LEAU A,U ; idem pour U LEAY A,Y ; idem pour Y CLR CARRY ; effacement de la retenue LOOP1 LDB ,-X ; charge chiffre nb1 ADDB ,-U ; ajoute chiffre nb2 ADDB CARRY ; ajoute retenue CLR CARRY ; effacement retenue CMPB #10 ; chiffre du résultat plus grand que 10 ? BCS PAS_RETENUE ; non => on saute à la suite SUBB #10 ; OUI => on ramène entre 0 et 9 INC CARRY ; et on met la retenue à 1 pour le chiffre suivant PAS_RETENUE STB ,-Y ; on écrit le chiffre du résultat dans nb0 DECA ; décompte BNE LOOP1 ; pas fini ? => on reboucle pour un nouveau chiffre (octet) PULS D,PC *================================================ * affiche nb(Y) par la routine PUTC du moniteur PRINT_NB_Y PSHS D,Y LOOP2 LDB ,Y+ ; charge chiffre 0 à 9 ADDB #$30 ; converti en ascii JSR $E803 ; PUTC affiche le chiffre ascii '0' à '9' DECA ; décompte chiffres restants BNE LOOP2 ; pas fini? => c'est reparti pour un nouveau chiffre à afficher. PULS D,Y,PC *================================================ CARRY FCB 0 ; retenue NB0 FCB 0,0,0,0,0 ; 0 NB1 FCB 1,2,3,4,5 ; 12345 NB2 FCB 0,0,1,6,5 ; 165 NB3 FCB 9,9,9,9,9 ; -1 Ce code est donnée en exemple et peut être rendu à la fois plus petit et plus rapide. Mais je pense que ca nuirait à la compréhension de son fonctionnement. En fait il réalise l'addition exactement comme on l'a apprise à l'école, chiffre par chiffre, en commençant par la droite (LEA du début). Je te laisse expérimenter avec lui. Tu va voir c'est rigolo cette arithmétique chiffre par chiffre (et en plus c'est super facile à convertir en ASCII du coup, cf la routine PRINT_NB_Y qui affiche nb(Y)). Heu ajouter c'est bien ... mais comment je fais décroître le score alors? Et bien c'est facile tu ajoutes 10000-N si tu veux soustraire N. Par exemple soustraire 1 revient à ajouter 9,9,9,9,9 (NB3 plus haut). Soustraire 2 revient à ajouter 9,9,9,9,8... c'est facile! C'est ce qu'on appelle de l'arithmétique complément à 9 + 1. Pour trouver l'opposé additif d'un nombre on fait "chiffre <- 9-chiffre" et on ajoute l'entier 1 au nombre dont les chiffres viennent d'être inversés. A noter: Le complément à 2 du binaire est en fait un complément à 1 + 1 (=2): on remplace tous les bits (chiffres) "b" par leur opposé: "1-b" et on ajoute 1 au résultat. Tout cela marche sur le même principe général. C'est exactement ce que j'aurais conseillé, sauf pour la partie PUTC qui est inopérante en bm16 couleur (ici on affiche des sprites de nombres). Peut-être aussi n'affiicher que les chiffres qui ont changé...(routine de tests à voir si c'est plus rapide) |
Auteur: | adnz [ 17 Nov 2020, 23:39 ] |
Sujet du message: | Re: Debut en asm sur TO8 |
C'est pour être sûr de ce bout de code suivant : Code: wait_vbl TST $E7E7 BPL wait_vbl ;*si positif RTS je suis sûr que le RTS s'execute lorsque le balayage est en bas le l'écran ?? |
Page 13 sur 19 | Heures au format UTC + 1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |