[ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par __sam__ »

Quant je vois le code ASM:

Code : Tout sélectionner

DRAW_VLC macro
          direct  $d0                  ; following code uses d0
          LDA     ,X+
Draw_VL_a_macro\?
          STA     $C823
 ../..
          LDA     $C823                ;Decrement line count
          DECA    
          BPL     Draw_VL_a_macro\?    ;Go back for more points
          JSR     Check0Ref            ;Reset zero reference if necessary
Je me dit que le BPL final n'autorise que 127 valeurs et pas 255 en fait.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par hlide »

Soit, le polygone fait 112 points (X, Y) et la boucle lit bien point par point. On devrait être donc dans les clous, non ?
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par __sam__ »

Oui oui.. ca a l'air ok. C'est juste que plus haut dans le fil on parle de 255 polygones, mais que le code ASM dit 127 en vrai.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par hlide »

Ok, il faudra le prendre en compte en effet.

Des détails sur les DAC ici : https://www.beardypig.com/internal-4329 ... 7961fd.txt
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par hlide »

The LENGTH of the RAMP pulse is critical if the screen is to appear stable, you MUST disable the interrupts during the vector drawing cycle
as an interrupt occuring when RAMP is active would alter the length of the RAMP pulse.
Est-ce que l'on observe bien cette règle pour commencer ?
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par hlide »

Bon à la lecture du dernier lien que j'ai mis, je pense avoir une idée de ce que fait le timer T1 : c'est un compteur positionné à 255 qui permet d'activer le RAMP durant tout ce temps. Cela correspondrait à la méthode 1 en fin de lien.
1) The most likely way the EXEC ROM does it (IMHO). We have a FIXED length
of RAMP pulse for ALL vectors. Then with the 8 bit DAC values we
have a 255 unit resolution on vectors in both the X and Y axis. This
doesnt mean the screen resolution os 256x256, depending on the values
used for RAMP time and XY integrator offset a 255 unit vector could
be extremely small OR very large, its because everything is done
relative to the last integrator position. I reckon this method involves
the least calculation. You fix RAMP and then set the unit length with
the XY integrator offset.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par 6502man »

Test sur machine réelle et effectivement il y à un fort scintillement, pourtant quand j'avais fait des tests je n'avais pas remarqué un scintillement à ce point :roll:

Mais sinon le rendu est excellent :
_KdrawX_falkor_1.jpg
_KdrawX_falkor_1.jpg (116.84 Kio) Consulté 3680 fois
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par 6502man »

_KdrawX_falkor_3.jpg
_KdrawX_falkor_3.jpg (118.8 Kio) Consulté 3679 fois

le tank rend super bien sur la VRAIE VECTREX :
_KdrawX_falkor_4.jpg
_KdrawX_falkor_4.jpg (106.58 Kio) Consulté 3679 fois

Pour l'arbre il n'y à pas le défaut comme constaté sur l'ému :roll:
_KdrawX_falkor_2.jpg
_KdrawX_falkor_2.jpg (116.99 Kio) Consulté 3679 fois
Je pense que l'hypothèse de nombre de vecteurs limité plausible, je vais tester quelque chose ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par 6502man »

Je me suis basé sur cette information pour faire mon programme :

Je n'ai pas vu à aucun moment de limitation hormis que l'on utilise l'accumulateur A (8 bits) donc 255 maximum ????

Après j'ai pas déroulé tout la ROM pour vérifier :roll:

Code : Tout sélectionner

;-----------------------------------------------------------------------;
;       F3CE    Draw_VLc                                                ;
;                                                                       ;
; This routine draws vectors between the set of (y,x) points pointed    ;
; to by the X register.  The number of vectors to draw is specified     ;
; as the first byte in the vector list.  The current scale factor is    ;
; used.  The vector list has the following format:                      ;
;                                                                       ;
;       count, rel y, rel x, rel y, rel x, ...                          ;
;                                                                       ;
; ENTRY DP = $D0                                                        ;
;       X-reg points to the vector list                                 ;
;                                                                       ;
; EXIT: X-reg points to next byte after list                            ;
;                                                                       ;
;       D-reg trashed                                                   ;
;-----------------------------------------------------------------------;

Draw_VLc:       LDA     ,X+
                BRA     Draw_VL_a
                
..../....                

;-----------------------------------------------------------------------;
;       F3DA    Draw_VL_a                                               ;
;                                                                       ;
; This routine draws vectors between the set of (y,x) points pointed    ;
; to by the register.  The current scale factor is used.  The vector    ;
; list has the following format:                                        ;
;                                                                       ;
;       rel y, rel x, rel y, rel x, ...                                 ;
;                                                                       ;
; ENTRY DP = $D0                                                        ;
;       A-reg = the number of vectors to draw                           ;
;       X-reg points to the vector list                                 ;
;                                                                       ;
; EXIT: X-reg points to next byte after list                            ;
;                                                                       ;
;       D-reg trashed                                                   ;
;-----------------------------------------------------------------------;

Draw_VL_a:      STA     $C823

;-----------------------------------------------------------------------;
;       F3DD    Draw_VL                                                 ;
;                                                                       ;
; This routine draws vectors between the set of (y,x) points pointed    ;
; to by the X register.  The number of vectors to draw must already be  ;
; specified in $C823.  The current scale factor is used.  The vector    ;
; list has the following format:                                        ;
;                                                                       ;
;       rel y, rel x, rel y, rel x, ...                                 ;
;                                                                       ;
; ENTRY DP = $D0                                                        ;
;       X-reg points to the vector list                                 ;
;                                                                       ;
; EXIT: X-reg points to next byte after list                            ;
;                                                                       ;
;       D-reg trashed                                                   ;
;-----------------------------------------------------------------------;

Draw_VL:        LDD     ,X

.........
                
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par hlide »

Comme je m'en doutais, on voit des lignes plus sombres que d'autres au moment de la capture de la photo. J'ai vérifié le loup rendu avec ParaJV en comparaison avec la photo et on voit très clairement des dérives. De manière général, il est recommandé de se recadrer par rapport au centre plus souvent pour réduire la dérive. Bon là, il s'agit d'un amusement. :)
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par 6502man »

Oui c'est du loisir, mais ca n’empêche d'essayer d'avoir le meilleur résultat possible !!!

J'ai fait un petit slideshow interactif des images de Flakor à essayer sur ému et machine réelle :
KDrawX_Falkor.zip
(2.08 Kio) Téléchargé 97 fois
Il faut appuyer sur un des 4 boutons pour afficher les différentes images ;)

Quand on voit que cela ne pèse que 3 Ko, ont rêve d'avoir une trentaine d'images sur une cartouche :wink:

Allez Falkor au boulot il faut remplir la cartouche de 32ko :lol:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par hlide »

Alors j'ai finalement trouvé un émulateur qui reproduit bien mieux le scintillement et la persistance (après avoir baissé certains réglages du Display qui étaient saturés) : https://drive.google.com/file/d/15-_Ch8 ... _8ELiO5tf0

J'ai testé les quatre images de Falkor et je contaste le scintillement sur le tank et sur l'arbre. Il faut baisser les deux paramètres dans Display > Advanced settings > Beam surtout. Avec Display > Advanced settings > Electronics on peut reproduire les dérives.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par hlide »

J'ai l'impression que pour l'arbre le dessin prend trop de temps.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par Falkor »

6502man a écrit : 13 juin 2020 17:44Allez Falkor au boulot il faut remplir la cartouche de 32ko :lol:
Je vais surtout améliorer et partager ma moulinette pour que tout le monde puisse tester :wink:

Cool si les rendus passent bien sur la machine physique. :)
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: [ Vectrex ] VeKtorX et KdrawX de quoi faire de zolies dessins vectoriel sur sa Vectrex

Message par Falkor »

Corrigé un bug dans ma moulinette : mes polygones n'étaient pas fermés pour former un countour clos, d'où des segments s'arrêtant n'importe où.

Voici un exemple d'image. Première étape, je redimensionne en 255*255 pixels :
bear.png
bear.png (16.89 Kio) Consulté 3650 fois
Ensuite je lance la moulinette, qui lance (entre autre) une détection de contour (d'où la nécessité de les fermer à l'exportation...)
cv.png
cv.png (48.07 Kio) Consulté 3650 fois
Ici on a 8 contours, et le plus "long" contour est constitué de 87 points. J'ai quelques leviers pour tenter de réduire ces quantités à moins de 255 (filtrage, décimation des segments), mais ce n'est pas forcément évident. (Les images épurées comme celles présentées fonctionnent bien).

J'exporte ensuite tout les contours en calculant les coordonnées relatives entre points. Et après compilation :
bearV.png
bearV.png (159.47 Kio) Consulté 3650 fois
Je travaille à rendre la moulinette plus conviviale...!
Répondre