Logicielsmoto.com

Nous sommes le 26 Oct 2020, 20:31

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 194 messages ]  Aller à la page Précédente  1 ... 9, 10, 11, 12, 13
Auteur Message
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 13 Mar 2020, 13:51 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1265
Localisation: Brest
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).

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 16 Mar 2020, 16:45 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 215
j'ai un soucis que je comprends pas sur le joystick 0 :voyons:

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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 16 Mar 2020, 17:35 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1265
Localisation: Brest
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.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 16 Mar 2020, 18:04 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 215
ah oui zut c'est vrai. je corrige...

[Edit]: voila j'ai enlevé les autres JOYS merci.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 16 Mar 2020, 19:43 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1265
Localisation: Brest
Est-ce que ça marche mieux sur la machine réelle ?

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 16 Mar 2020, 20:23 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 215
non, marche pas,

je vais tester avec PEEK l'adresse sur le vrai TO8 pour voir les valeurs !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 16 Mar 2020, 20:48 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 611
Localisation: Provence (France)
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 16 Mar 2020, 21:03 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 215
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 :voyons:

- je vais vérifier si le bug n'est pas après !! genre dans le "set_pdir_r" par exemple !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 16 Mar 2020, 23:41 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 215
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...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 17 Mar 2020, 02:19 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 215
...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 ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 17 Mar 2020, 15:28 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 611
Localisation: Provence (France)
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).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 18 Mar 2020, 17:55 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 215
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...



Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 28 Sep 2020, 12:20 
En ligne

Inscription: 21 Fév 2020, 11:38
Messages: 95
adnz a écrit:
Trop cool, ouf, j'ai résolu le soucis...
Déplacement tous les 2 pixels : OK
Image

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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 28 Sep 2020, 12:30 
En ligne

Inscription: 21 Fév 2020, 11:38
Messages: 95
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. :voyons: 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)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 194 messages ]  Aller à la page Précédente  1 ... 9, 10, 11, 12, 13

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Bentoc, Neotenien et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com