TAVERNIER 6809

C'est la catégorie reine de l'ordinophile, 8 bits et pas un de plus!
Single board ou bus S-100 acceptés.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Quel problème ?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

Plus de problème ! Après des instructions BITA #$01 ou BITA #$80, j'ai utilisé des branchements BEQ au lieu de BNE et vis versa !
J'ai réussi à reprogrammer toutes les commandes , sauf SEARCH qui reste à tester
Tout ceci en Mode GRAPHIC 7 et pour l'instant la carte répond bien ! :D

Il faut que je me penche maintenant sur les autres Mode…

A plus
Michel
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

J'ai réussi à utiliser toutes les commandes en mode graphic 7...
Je me penche maintenant sur la mise en oeuvre des sprites…la doc dont je dispose explique beaucoup de chose sur ce qu'il faut installer en VRAM mais peu sur la mise en oeuvre des sprites

Aurais-tu un simple exemple de code mettant en oeuvre d'un sprite sur l'écran... ?

Merci d'avance
Michel
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour,
Une autre variante..
P1050597.JPG
P1050597.JPG (253.23 Kio) Consulté 3927 fois
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

Si je n'ai pas de problème avec le mode G7, j'aurai besoin d'un peu d'aide pour les autres modes !

J'essaie par exemple d'afficher deux ou trois sprites en mode G2...mais je rencontre une difficulté pour initialiser le système

Avec une image résiduelle qui restait dans la VRAM, j'ai obtenu un début de fonctionnement (affichage de sprites et déplacement de ceux-ci)

En nettoyant la VRAM plus rien ne s'affiche !

J'initialise les registres VDP avec les valeur suivantes mais que faut-il écrire au minimum dans la VRAM ?

FCB $02,REG0
FCB $62,REG1
FCB $06,REG2
FCB $FF,REG3
FCB $03,REG4
FCB $36,REG5
FCB $07,REG6
FCB $01,REG7
FCB $08,REG8
FCB $02,REG9
FCB $00,REG10
FCB $00,REG11

A plus
Michel
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Re-bonjour 6502man

J'ai refais un essai en utilisant le programme que tu m'avais transmis fin janvier - J'ai juste vidé la zone SCREEN
En relançant mon programme dans cette structure qui reste en VRAM, j'obtiens un affichage qui va me permettre d'avancer et de comprendre des choses ! :D
A plus
Michel
Avatar de l’utilisateur
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Salut Michel,

Pour la gestion des sprites c'est pas très compliqué, mais c'est différents selon le mode graphique choisi hormis la taille qui est toujours un multiple de 8.


Si ont reprend l'exemple pour le mode 2 que je t'avais donné tu peux voir que la VRAM est partitionné en zone réservé au formes et couleurs pour le fond et pour les dessins des sprites ainsi que pour les attributs des sprites, comme ceci :

Code : Tout sélectionner

VdpRegdatas:    
		;	 R0	      R1	   R2 =$1800   R3=$2000   R4=$0000   R5       R6       R7     
    	FCB $02,$80, $60,$81, $06,$82,    $ff,$83,   $03,$84,   $36,$85, $07,$86, $01,$87
        ;    R8       R9       R10     R11
        FCB $08,$88, $02,$89, $00,$8a ,$00,$8b
        
;   ----   GRAPHIC MODE 2 ----        
;  R0 = 0   DG  IE2 IE1 0   0   1   0
;  R1 = 0   BL  IE0 0   0   0   SI  MAG
;  R2 = 0   A16 A15 A14 A13 A12 A11 A10      ;pattern name table adresse
;  R3 = A13 1   1   1   1   1   1   1        ; color table adresse
;  R10= 0   0   0   0   0   A16 A15 A14      ;   "     "      "
;  R4 = 0   0   A16 A15 A14 A13 1   1        ;Pattern generator adresse
;  R5 = A14 A13 A12 A11 A10 A9  A8  A7       ;Sprites attributes adresse 
;  R11= 0   0   0   0   0   0   A16 A15      ;   "         "       "
;  R6 = 0   0   A16 A15 A14 A13 A12 A11      ;Sprites pattern adresse 
;  R7 = 0   0   0   0   BD3 BD2 BD1 BD0      ; Color back/borderground
;  R8 = MS  LP TP   CB  VR  0   SPD BW
;  R9 = LN  0  S0   S1  IL  E0  NT  DC
R6 te permet de définir l'adresse des dessins de sprites et R5 + R11 l'adresse des attributs de sprites.
Il faut que je regarde la doc mais de mémoire la couleurs des sprites en mode graph2 est défini dans les attributs de cette manière :
Octet 1 : coordonnées verticales des sprites => D0 inhibe sprite detect
Octet 2 : coordonnées Horiz
Octet 2 : Numéros de dessin de sprites
Octet 4 : Couleur du sprites (monochrome)

Pour le dessin des sprites il sont organisé par bloc de 8 octets en mode simple sinon en mode MAG (magnificient) la taille est de 16x16 et donc organisé par bloc de 32 octets.

Je sait pas si j'ai était clair dans mon explication ???

Dès que j'ai un peu de temps je fait un petit code d'exemple si tu veux ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

Sur la base du programme que tu m'avais transmis, J'ai analysé en détail la structure des données transmises dans la VRAM…
Je pense avoir saisi ce qu'il faut y mettre au moins pour le mode G2

Comme je te l'ai dit en vidant la partie SCREEN (juste l'image) j'ai réussi à faire défiler trois sprites sur l'écran …
Ils ne sont pas en couleur, pas au bon endroit mais bon, je progresse !

Le mode G7 est finalement très simple
Cette construction de l'image à partir de patterns me déroute un peu, je découvre le monde MSX !

Merci pour ton aide

A plus
Avatar de l’utilisateur
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Pour le mode G2 c'est déroutant au début surtout que l'écran est divisé en 3 zones de 256 patterns soit 768 patterns pour remplir l'écran et de plus une pattern d'une zone ne peut être utilisée dans une autre :lol:
Avec ça il faut gérer forme et couleurs qui sont repartis indépendant ce qui au total te fait 2 x 3 zones de 256 patterns :wink:
Pour arriver à gérer tout ça il faut créer la table des noms qui te permet d'organiser pour chaque zone quel patterns forme et couleurs et à tel endroit de l'écran :roll:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

Bonne nouvelle, j'ai réussi à faire défiler mes trois sprites sur l'écran, il y a juste un point parasite et la position des sprites à vérifier mais la routine fonctionne.
Oui, la gestion de toutes les composantes des images est relativement complexe. Je suppose qu'il existe des outils pour concevoir les écrans de jeux MSX...
Je vais faire un tour sur le mode TEXTE histoire de completer ma culture….
A plus
Michel
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

J'ai oublié l'image du jour..
P1050606.JPG
P1050606.JPG (165.13 Kio) Consulté 3771 fois
Avatar de l’utilisateur
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Il y à des utilitaires qui existent :

- BMP2MSX
pour convertir des images en graphiques MSX dans les différents modes

-MultiPaint un soft très sympa pour faire du dessin en G2 uniquement, il peut aussi permettre de faire des dessins pour d'autres machines CPC, ZX, AMIGA,ST, ...

Après tu auras souvent besoin d’adapter à tes besoins les données comme toujours .
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour,

Je viens d'installer Kicad 5 sur mon micro et je vais essayer de transcrire mon schéma sous Kicad, voir de créer un PCB….

Je suis parti d'un schéma existant (Extension MSX2 128Ko VRAM - RGB Transistors - machine ct80msx2 je crois)
Les composants V9938 et les mémoires 41464 doivent bien avoir été déjà créés avec leurs empreintes sous Kicad, voir même le schéma initial…
Quelqu'un aurait-il une idée où chercher ?

Michel
Avatar de l’utilisateur
michel guyot
Messages : 616
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour,
Je pensais rencontrer plus de difficultés pour utiliser Kicad… finalement l'élaboration du schéma me semble assez intuitive, y compris la création de symboles. Pour la création d'empreintes je ne sais pas encore ….
A plus
Michel
Patrick
Messages : 2019
Inscription : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: TAVERNIER 6809

Message par Patrick »

Pour la 41464, l'empreinte est du DIP18 classique.
C'est un peu plus compliqué pour le V9938, mais il existe des générateurs en ligne.
Par exemple, pour les symboles et les empreintes.
Sur cette page, tu peux télécharger ce fichier qui comporte les symboles et empreintes qu'il te faut.

Pour te faciliter la tâche, voici le contenu du fichier DIP64-S.kicad_mod qu'il te suffira d'importer dans une librairie d'empreintes pour pouvoir l'affecter au V9938 :

Code : Tout sélectionner

(module DIP64-S (layer F.Cu) (tedit 5436EA2F)
  (descr "64PIN DIP SHRINK 1.78MM PITCH PINS, 19.05MM PITCH ROWS")
  (tags "64PIN DIP SHRINK 1.78MM PITCH PINS, 19.05MM PITCH ROWS")
  (attr virtual)
  (fp_text reference REF** (at -1.02 -13.08) (layer F.SilkS)
    (effects (font (size 1.27 1.27) (thickness 0.0889)))
  )
  (fp_text value DIP-64-S_W19.05mm (at 18.16 -0.89) (layer F.SilkS)
    (effects (font (size 1.524 1.524) (thickness 0.3048)))
  )
  (fp_text user %R (at -19.05 2.54) (layer F.SilkS)
    (effects (font (size 1.27 1.27) (thickness 0.0889)))
  )
  (fp_arc (start -25.84958 -1.09982) (end -25.84958 -4.09956) (angle 180) (layer F.SilkS) (width 0.127))
  (fp_line (start -25.99944 10.44956) (end -25.99944 -11.34872) (layer F.SilkS) (width 0.127))
  (fp_line (start 32.89808 10.44956) (end -25.99944 10.44956) (layer F.SilkS) (width 0.127))
  (fp_line (start 32.89808 -11.34872) (end 32.89808 10.44956) (layer F.SilkS) (width 0.127))
  (fp_line (start -25.99944 -11.34872) (end 32.89808 -11.34872) (layer F.SilkS) (width 0.127))
  (pad 64 thru_hole circle (at -24.3078 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 63 thru_hole circle (at -22.5298 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 62 thru_hole circle (at -20.74926 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 61 thru_hole circle (at -18.96872 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 60 thru_hole circle (at -17.28978 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 59 thru_hole circle (at -15.50924 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 58 thru_hole circle (at -13.7287 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 57 thru_hole circle (at -11.94816 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 56 thru_hole circle (at -10.16762 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 55 thru_hole circle (at -8.38962 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 54 thru_hole circle (at -6.60908 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 53 thru_hole circle (at -4.82854 -9.99998) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 52 thru_hole circle (at -3.048 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 51 thru_hole circle (at -1.27 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 50 thru_hole circle (at 0.40894 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 49 thru_hole circle (at 2.18948 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 48 thru_hole circle (at 3.96748 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 47 thru_hole circle (at 5.74802 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 46 thru_hole circle (at 7.52856 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 45 thru_hole circle (at 9.3091 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 44 thru_hole circle (at 11.08964 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 43 thru_hole circle (at 12.86764 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 42 thru_hole circle (at 14.69898 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 41 thru_hole circle (at 16.47952 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 40 thru_hole circle (at 18.15846 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 39 thru_hole circle (at 19.939 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 38 thru_hole circle (at 21.71954 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 37 thru_hole circle (at 23.49754 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 36 thru_hole circle (at 25.27808 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 35 thru_hole circle (at 27.05862 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 34 thru_hole circle (at 28.83916 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 33 thru_hole circle (at 30.6197 -9.98982) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 32 thru_hole circle (at 30.78988 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 31 thru_hole circle (at 29.00934 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 30 thru_hole circle (at 27.2288 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 29 thru_hole circle (at 25.44826 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 28 thru_hole circle (at 23.66772 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 27 thru_hole circle (at 21.88972 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 26 thru_hole circle (at 20.10918 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 25 thru_hole circle (at 18.32864 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 24 thru_hole circle (at 16.53794 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 23 thru_hole circle (at 14.75994 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 22 thru_hole circle (at 13.07846 9.08812) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 21 thru_hole circle (at 11.29792 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 20 thru_hole circle (at 9.51992 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 19 thru_hole circle (at 7.83844 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 18 thru_hole circle (at 6.0579 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 17 thru_hole circle (at 4.2799 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 16 thru_hole circle (at 2.49936 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 15 thru_hole circle (at 0.71882 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 14 thru_hole circle (at -1.05918 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 13 thru_hole circle (at -2.83972 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 12 thru_hole circle (at -4.61772 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 11 thru_hole circle (at -6.49986 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 10 thru_hole circle (at -8.27786 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 9 thru_hole circle (at -10.0584 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 8 thru_hole circle (at -11.83894 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 7 thru_hole circle (at -13.61948 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 6 thru_hole circle (at -15.39748 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 5 thru_hole circle (at -17.17802 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 4 thru_hole circle (at -18.95856 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 3 thru_hole circle (at -20.7391 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 2 thru_hole circle (at -22.6187 9.0678) (size 1.19888 1.19888) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
  (pad 1 thru_hole rect (at -24.29764 9.0678) (size 1.17348 1.17348) (drill 0.79756) (layers *.Cu *.SilkS *.Mask))
)
Cette empreinte est directement extraite du fichier dont je donne le lien.
Patrick
Répondre