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
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour à tous

J'ai ressortis un vieux programme basic que j'avais trouvé dans la revue "Science et Vie Micro" Février 1989 (image 1).
Il s'agit d'un petit programme assez didactique de raytracing que j'ai fait tourner sur Atari ST à l'époque.
Il permet de générer une vingtaines d'images et de créer une petite animation

L'année dernière j'ai repris ce même programme sur mon PC en Basic GFA (Cf image 2 ci-dessous)

Puisque mon TAVERNIER à découvert la couleur, j'ai entrepris de traduire ce programme en TBASIC
pour le faire tourner sur mon TAVERNIER. C'est fait, le programme tourne et permet d'afficher ces images....

Le problème que je rencontre, vous l'avez deviné, c'est que pour effectuer les calculs et afficher une image
il faut compter une quinzaines d'heures.... ci-après l'image précédente en train d'être générer sur mon TAVERNIER (image 3)

Bon, ce n'est pas spectaculaire mais quel plaisir de voir mon humble 6809 rivaliser avec l' AMD Phenom II X4 840 Processor 3.20 GHz de mon PC !

A plus lorsque j'aurai réussi à avoir une image complète

Michel
2020-04-27 - Raytracing.jpg
2020-04-27 - Raytracing.jpg (540.77 Kio) Consulté 6190 fois
IMAGE 8.jpg
IMAGE 8.jpg (34.08 Kio) Consulté 6190 fois
P1050704.JPG
P1050704.JPG (98.97 Kio) Consulté 6190 fois
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: TAVERNIER 6809

Message par __sam__ »

Hey, j'ai souvenir de ce programme! Je l'avais adapté sur mon TO9 à l'époque :D C'était la folle époque où je laissais tourner le TO9 des jours durant pour calculer de la 3D sous diverses formes ou des fractales , faire des animations de tout ca, etc. Je m'étais fait un programme pour imprimer sur une Mannesmann-Tally un poster "gigantesque" (pour l'époque) de l'ensemble de Mandelbrot reparti sur plein de feuilles A4 collées entres-elles (c'est là qu'on comprends qu'il faut trouver des astuces pour pas perdre de temps dans la cardioïde centrale).

Rahhhh les pages bleues de SVM.. que de souvenirs 8)
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
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: TAVERNIER 6809

Message par 6502man »

Ouah du raytracing sur Tavernier 6809 :shock:

Impatient de voir le résultat :D
Phil.

www.6502man.com

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

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

Oui il me faut un peu de temps pour obtenir une image complète... !

Mais avant de laisser le micro tourner toute une nuit, je cherche une combine pour gagner du temps
J'ai une petite question sur la commande LMCM du VDP
Cette commande permet de transférer une zone du contenu de la VRAM vers la RAM CPU.....

La documentation explique que pour certaines commandes (logical move) le transfert s'effectue non pas en Byte mais en dot
Il semble en effet que le transfert ne porte que sur un octet sur deux…
As-tu une idée de ce qui me gène dans l'utilisation de cette Cde ?

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

Re: TAVERNIER 6809

Message par 6502man »

Salut, Michel,

Comme je le disais précédemment (quelques posts en arrière) selon le mode graphique choisi la répartition mémoire est découpée en adresses paires et impaires .

Après je ne suis pas sûr d'avoir bien compris ta question, mais quand tu utilises les commandes du VDP certaines s'utilisent en dots (coordonnées écran "virtuel") et d'autres en adresses mémoires, j'ai pas replongé dans la doc mais de mémoire ....

Si tu me donnes un exemple concret avec ce qui gène je pourrais aider un peu plus ?
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: TAVERNIER 6809

Message par hlide »

Bon à quand un Tavernier multi-CPU (voire multi-VDP, mais là ça risque d'être chaud pour pas grand chose), histoire d'accélérer le Ray-tracing ? ^^
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour à tous

Voici la première image donnée par mon TAVERNIER avec ce programme de Ray-Tracing :D

Le programme en TBASIC tourne mais il faut compter une quinzaine d'heures pour générer l'image.
J'ai donc trouvé un chemin plus rapide

Je génère l'ensemble des pixels de l'image à partir du même programme en BASIC-GFA
Pour éviter d'obtenir un trop gros fichier, les pixels sont générés sous la forme suivante
IMAGE08 FCB 252,35 => 35 pixels de couleur 252
FCB 28,62 => 62 pixels couleur 28
FCB 252,61 => 61 pixels couleur 252
etc

Sous cette forme le fichier de l'image n°8 fait 19Ko.
Une fois chargée en mémoire, l'affichage sur TAVERNIER avec la carte VM9938 est rapide.
L'animation obtenue avec plusieurs images devrait être satisfaisante.
Reste à voir les limitations que je vais rencontrer avec l'espace mémoire….
A plus
Michel
IMAGE08.JPG
IMAGE08.JPG (163.28 Kio) Consulté 6036 fois
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour 6502man

Voici une copie d'un essai effectué avec la commande LMCM

Transfert d'une zone de la VRAM vers RAM CPU

Init RAM CPU
>I 1000 6000 00

Remplissage de 16 octets de la VRAM
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Octet 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10

Lancement de la cde LMCM avec les paramètres suivants
Adresse des datas en RAM CPU: 1000
Logical Operation: 00
Coordonnee origine X: 0000
Coordonnee origine Y: 0000
Nombre de points en X: 0010
Nombre de points en Y: 0001
Vers la droite D ou la gauche G: D
Vers le bas B ou le haut H: B

Examen RAM CPU
>D 1000 20

0 1 2 3 4 5 6 7 8 9 A B C D E F
1000 02 04 06 08 0A 0C 0E 0E 00 00 00 00 00 00 00 00 ................
1010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
>


Relance de la Cde en modifiant l'origine pour x
Adresse des datas en RAM CPU: 1020
Logical Operation: 00
Coordonnee origine X: 0001
Coordonnee origine Y: 0000
Nombre de points en X: 0010
Nombre de points en Y: 0001
Vers la droite D ou la gauche G: D
Vers le bas B ou le haut H: B

Examen RAM CPU
>D 1000 40

0 1 2 3 4 5 6 7 8 9 A B C D E F
1000 02 04 06 08 0A 0C 0E 0E 00 00 00 00 00 00 00 00 ................
1010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

1020 03 05 07 09 0B 0D 0F 0E 00 00 00 00 00 00 00 00 ................
1030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
>

En conclusion, selon va valeur de l'origine, les octets transférés en RAM sont différents

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

Re: TAVERNIER 6809

Message par 6502man »

Dans la commande LMCM tu dois avoir mal programmé un des paramètres car ca donne l'impression que le décalage s'additionne à la valeur de l'origine ????
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Asic512
Messages : 128
Inscription : 30 juin 2019 21:13

Re: TAVERNIER 6809

Message par Asic512 »

Bonsoir,

J'étais aussi friand du cahier central de SVM et je me souviens aussi de cet article de ray-tracing ! Savez-vous d'ailleurs si on peut trouver les listings de SVM tapés quelque part ?


Pour rebondir sur le message de Sam, si on lance ce programme de ray-tracing dans dcmoto à la vitesse d'émulation maximale, quel temps de calcul peut-on espérer ?
Autre question : est-il "facile" de faire une animation sur Thomson une fois quelques images calculées ? Quelque chose comme la démo Tic-Toc sur Spectrum par exemple.
Asic512
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: TAVERNIER 6809

Message par __sam__ »

DCMoto marche au max à 10x la vitesse initiale, donc même rapide c'est lent. S'il n'y avait pas la limite à x10, un PC moderne devrait faire tourner à 100 ou 1000x peut-être (vu que le PC tourne à >1ghz, soit 1 000 000x la vitesse de la machine émulée, ce qui laisse 1000 cycles x86 pour une instruction 6809 on est large je pense.)

Si je peux me permettre de "polluer ce topic", je m'étais fais à l'époque une sorte d'éditeur de "basic GFA" pour thomson permettant de faire de la programmation structurée (le programme était alors converti en basic thomson standard pouvant être executé par la suite). L'un de mes programmes de RAY-Tracing s'écrivait alors ainsi:

Code : Tout sélectionner

REM *************************
REM **     RAY-TRACING     **
REM ** (C) DEVULDER Samuel **
REM **         1989        **
REM *************************

GOSUB 320x200
SX%=1
IF 0
  CLEAR,,16
  FOR I%=0 TO 15
    A%=I%+16*I%
    DEFGR$(I%)=A%,A%,A%,A%,A%,A%,A%,A%
    PALETTE I%,273*I%
  NEXT
  GOSUB 160x200
  SX%=2
ENDIF

DIM E(322)
DIM I(10)  ' PILE DES INTENSITES

X0=40      'POSITION
Y0=0       'DE L'
Z0=10      'OEIL

XE=20      'POSITION
YE=0       'DE L'
ZE=5       'ECRAN

XO=0       'POSITION
YO=0       'DE L'
ZO=5       'OBJET

XL=15      'POSITION
YL=15      'DE LA
ZL=7       'LUMIERE
RL=2       'RAYON

IA=1/15    'INTENSITE AMBIANTE 

UX=YE-Y0
UY=X0-XE
UZ=0
R=SQR(UX*UX+UY*UY+UZ*UZ)
UX=UX/R
UY=UY/R
VX=(ZE-Z0)*(XE-X0)
VY=(ZE-Z0)*(YE-Y0)
VZ=(XE-X0)^2+(YE-Y0)^2
R=SQR(VX*VX+VY*VY+VZ*VZ)
VX=VX/R
VY=VY/R
VZ=VZ/R

BA%=1

FOR J1%=0 TO 200@BA%-1
  FOR I1%=0 TO 320@BA%@SX%-1
    J%=100-J1%*BA%
    I%=SX%*I1%*BA%-160
    X1=X0
    Y1=Y0
    Z1=Z0
    X2=(XE-X0)+3*(UX*I%+VY*J%)/100
    Y2=(YE-Y0)+3*(UY*I%+VY*J%)/100
    Z2=(ZE-Z0)+3*(UZ*I%+VZ*J%)/100
    N%=0
    GOSUB RAYON
    GOSUB PLOT
  NEXT
NEXT
SCREEN,,1
A$=INPUT$(1)
END

PLOT:
  ' Diffusion d erreur
  E=I(1)+E(I1%+1)
  IF E>.5
    PSET(I1%,J1%)
    E=E-1
  ENDIF
  E(I1%+2)=E(I1%+2)+E*.5
  E=E*.25
  E(I1%+1)=E
  E(I1%)=E(I1%)+E
RETURN

PlOT16:
  PATTERN128+15*I(1)
  BOXF(4*I1%-1,J1%-1)-(4*I1%+4,J1%+1)
  BOX(4*I1%-1,J1%-1)-(4*I1%+4,J1%+1)
RETURN
RAYON:
  N%=N%+1
  IF N%<>10
    I(N%)=0
    GOSUB CIEL
    GOSUB PLAN
    GOSUB OBJET
    GOSUB LAMPE
    C=CP
    XN=XNP:YN=YNP:ZN=ZNP
    X=XP:Y=YP:Z=ZP

' C=1  DIFFUSION
' C=0  MIROIR
' C=-1 LAMPE
' C=-2 CIEL NOIR 

    IF C=-1
      I(N%)=1
    ENDIF
    IF C=1
      X1=X:Y1=Y:Z1=Z
      X2=XL-X:Y2=YL-Y:Z2=ZL-Z
      GOSUB OMBRE
      IF TST=-1 OR X2*XN+Y2*YN+Z2*ZN<0
        I(N%)=IA
      ELSE
        R=SQR(X2*X2+Y2*Y2+Z2*Z2)
        I(N%)=IA+(1-IA)*(X2*XN+Y2*YN+Z2*ZN)/R
      ENDIF
    ENDIF
    IF C=0
      GOSUB RFL
      X1=X:Y1=Y:Z1=Z
      GOSUB RAYON
      I(N%)=I(N%+1)
    ENDIF
    IF C=-2
      I(N%)=0
    ENDIF
  ENDIF
  N%=N%-1
RETURN

RFL:
  SC=2*(XN*X2+YN*Y2+ZN*Z2)
  X2=X2-SC*XN
  Y2=Y2-SC*YN
  Z2=Z2-SC*ZN
RETURN

OMBRE:
  DM=ABS(X1-XL)+ABS(Y1-YL)+ABS(Z1-ZL)
  CC=C
  GOSUB OBJET
  TST=0
  C=CC
  IF DM<ABS(X1-XL)+ABS(Y1-YL)+ABS(Z1-ZL)
    TST=-1
  ENDIF
RETURN

CIEL:
  CP=-2
  DM=1E38
RETURN

TSTLAMPE:
  TST=0
  A=X2*X2+Y2*Y2+Z2*Z2
  B=X2*(X1-XL)+Y2*(Y1-YL)+Z2*(Z1-ZL)
  C=(X1-XL)^2+(Y1-YL)^2+(Z1-ZL)^2-RL^2
  D=B*B-A*C
  IF D>=0
    TST=-1
    D=SQR(D)
    K1=(-B-D)/A
    K2=(-B+D)/A
    GOSUB MINK1K2
    IF K<0
      GOSUB MAXK1K2
      IF K<0
        TST=0
      ENDIF
    ENDIF
  ENDIF
RETURN

MINK1K2:
  K=K1
  IF K2<K
     K=K2
  ENDIF
RETURN

MAXK1K2:
  K=K2
  IF K1>K
     K=K1
  ENDIF
RETURN

LAMPE:
  GOSUB TSTLAMPE
  IF TST=-1
    C=-1
    X=XL
    Y=YL
    Z=ZL
    GOSUB DISTANCE
  ENDIF
RETURN

TSTPLAN:
  K=-Z1/Z2
  TST=(K>0)
RETURN

PLAN:
  GOSUB TSTPLAN
  IF TST=-1
    X=X1+K*X2
    Y=Y1+K*Y2
    Z=0
    XN=0
    YN=0
    ZN=1
    C=1
    GOSUB DISTANCE
  ENDIF
RETURN

TSTOBJET:
  TST=0
  A=Z2*Z2-X2*X2-Y2*Y2
  B=Z2*(Z1-ZO)-X2*(X1-XO)-Y2*(Y1-YO)
  C=(Z1-ZO)^2-(X1-XO)^2-(Y1-YO)^2
  D=B*B-A*C
  IF D>=0
    TST=-1
    D=SQR(D)
    K1=(-B-D)/A
    K2=(-B+D)/A
    GOSUB MINK1K2
    IF K<0
      GOSUB MAXK1K2
      IF K<0
        TST=0
      ENDIF
    ENDIF
    TST=-TST*(Z1+K*Z2<=ZO) 
  ENDIF
RETURN

OBJET:
  GOSUB TSTOBJET
  IF TST=-1
    X=X1+K*X2
    Y=Y1+K*Y2
    Z=Z1+K*Z2
    C=1
    XN=(X-XO)
    YN=(Y-YO)
    ZN=SQR(XN*XN+YN*YN)
    R=SQR(XN*XN+YN*YN+ZN*ZN)
    XN=XN/R
    YN=YN/R
    ZN=ZN/R
    GOSUB DISTANCE
  ENDIF
RETURN

DISTANCE:
  D=ABS(X-X1)+ABS(Y-Y1)+ABS(Z-Z1)
  IF D>.001 AND D<DM
    DM=D
    XP=X
    YP=Y
    ZP=Z
    XNP=XN
    YNP=YN
    ZNP=ZN
    CP=C
  ENDIF
RETURN

320x200:
  CONSOLE0,24,0,0,0
  SCREEN3,4,4
  LOCATE 0,0,0
  CLS
RETURN

160x200:
  IF PEEK(&HFFF0)=2
    P%=PALETTE(6)
    PALETTE6,PALETTE(1)
    PALETTE1,P%
  ENDIF
  CONSOLE,,5,,1
  POKE &HE7DC,123
  SCREEN,,0
RETURN
END
et devient ceci

Code : Tout sélectionner

6000 REM *************************
6001 REM **     RAY-TRACING     **
6002 REM ** (C) DEVULDER Samuel **
6003 REM **         1989        **
6004 REM *************************
6005 CLEAR,,16
6006 GOSUB  6121
6007 FOR I%=0 TO 15
6008 A%=I%+16*I%
6009 DEFGR$(I%)=A%,A%,A%,A%,A%,A%,A%,A%
6010 PALETTE I%,273*I%
6011 NEXT
6012 GOSUB  6127
6013 DIM I(10)  ' PILE DES INTENSITES
6014 X0=40      'POSITION
6015 Y0=0       'DE L'
6016 Z0=10      'OEIL
6017 XE=20      'POSITION
6018 YE=0       'DE L'
6019 ZE=5       'ECRAN
6020 XO=0       'POSITION
6021 YO=0       'DE L'
6022 ZO=5       'OBJET
6023 XL=15      'POSITION
6024 YL=15      'DE LA
6025 ZL=7       'LUMIERE
6026 RL=2       'RAYON
6027 IA=1/15    'INTENSITE AMBIANTE
6028 UX=YE-Y0
6029 UY=X0-XE
6030 UZ=0
6031 R=SQR(UX*UX+UY*UY+UZ*UZ)
6032 UX=UX/R
6033 UY=UY/R
6034 VX=(ZE-Z0)*(XE-X0)
6035 VY=(ZE-Z0)*(YE-Y0)
6036 VZ=(XE-X0)^2+(YE-Y0)^2
6037 R=SQR(VX*VX+VY*VY+VZ*VZ)
6038 VX=VX/R
6039 VY=VY/R
6040 VZ=VZ/R
6041 BA%=4
6042 FOR J1%=0 TO 200@BA%
6043 FOR I1%=0 TO 160@BA%
6044 J%=100-J1%*BA%
6045 I%=2*I1%*BA%-160
6046 X1=X0
6047 Y1=Y0
6048 Z1=Z0
6049 X2=(XE-X0)+3*(UX*I%+VY*J%)/100
6050 Y2=(YE-Y0)+3*(UY*I%+VY*J%)/100
6051 Z2=(ZE-Z0)+3*(UZ*I%+VZ*J%)/100
6052 N%=0
6053 GOSUB  6062
6054 PATTERN128+15*I(1)
6055 BOXF(4*I1%-1,J1%-1)-(4*I1%+4,J1%+1)
6056 BOX(4*I1%-1,J1%-1)-(4*I1%+4,J1%+1)
6057 NEXT
6058 NEXT
6059 SCREEN,,1
6060 A$=INPUT$(1)
6061 GOTO 5000
6062 'RAYON:
6063 N%=N%+1
6064 IF N%<>10 THEN GOSUB 6135
6065 N%=N%-1
6066 RETURN
6067 'RFL:
6068 SC=2*(XN*X2+YN*Y2+ZN*Z2)
6069 X2=X2-SC*XN
6070 Y2=Y2-SC*YN
6071 Z2=Z2-SC*ZN
6072 RETURN
6073 'OMBRE:
6074 DM=ABS(X1-XL)+ABS(Y1-YL)+ABS(Z1-ZL)
6075 CC=C
6076 GOSUB  6113
6077 TST=0
6078 C=CC
6079 IF DM<ABS(X1-XL)+ABS(Y1-YL)+ABS(Z1-ZL) THEN GOSUB 6153
6080 RETURN
6081 'CIEL:
6082 CP=-2
6083 DM=1E38
6084 RETURN
6085 'TSTLAMPE:
6086 TST=0
6087 A=X2*X2+Y2*Y2+Z2*Z2
6088 B=X2*(X1-XL)+Y2*(Y1-YL)+Z2*(Z1-ZL)
6089 C=(X1-XL)^2+(Y1-YL)^2+(Z1-ZL)^2-RL^2
6090 D=B*B-A*C
6091 IF D>=0 THEN GOSUB 6156
6092 RETURN
6093 'LAMPE:
6094 GOSUB  6085
6095 IF TST=-1 THEN GOSUB 6164
6096 RETURN
6097 'TSTPLAN:
6098 K=-Z1/Z2
6099 TST=(K>0)
6100 RETURN
6101 'PLAN:
6102 GOSUB  6097
6103 IF TST=-1 THEN GOSUB 6171
6104 RETURN
6105 'TSTOBJET:
6106 TST=0
6107 A=Z2*Z2-X2*X2-Y2*Y2
6108 B=Z2*(Z1-ZO)-X2*(X1-XO)-Y2*(Y1-YO)
6109 C=(Z1-ZO)^2-(X1-XO)^2-(Y1-YO)^2
6110 D=B*B-A*C
6111 IF D>=0 THEN GOSUB 6181
6112 RETURN
6113 'OBJET:
6114 GOSUB  6105
6115 IF TST=-1 THEN GOSUB 6190
6116 RETURN
6117 'DISTANCE:
6118 D=ABS(X-X1)+ABS(Y-Y1)+ABS(Z-Z1)
6119 IF D>.001 AND D<DM THEN GOSUB 6204
6120 RETURN
6121 '320x200:
6122 CONSOLE0,24,0,0,0
6123 SCREEN2,0,0
6124 LOCATE 0,0,0
6125 CLS
6126 RETURN
6127 '160x200:
6128 IF PEEK(&HFFF0)=2 THEN GOSUB 6214
6129 CONSOLE,,5,,1
6130 POKE &HE7DC,123
6131 SCREEN,,0
6132 RETURN
6133 GOTO 5000
6134 GOTO 5000
6135 '*IF0:
6136 I(N%)=0
6137 GOSUB  6081
6138 GOSUB  6101
6139 GOSUB  6113
6140 GOSUB  6093
6141 C=CP
6142 XN=XNP:YN=YNP:ZN=ZNP
6143 X=XP:Y=YP:Z=ZP
6144 ' C=1  DIFFUSION
6145 ' C=0  MIROIR
6146 ' C=-1 LAMPE
6147 ' C=-2 CIEL NOIR
6148 IF C=-1 THEN GOSUB 6219
6149 IF C=1 THEN GOSUB 6222
6150 IF C=0 THEN GOSUB 6228
6151 IF C=-2 THEN GOSUB 6234
6152 RETURN
6153 '*IF1:
6154 TST=-1
6155 RETURN
6156 '*IF2:
6157 TST=-1
6158 D=SQR(D)
6159 K1=(-B-D)/A
6160 K2=(-B+D)/A
6161 K=MIN(K1,K2)
6162 IF K<0 THEN GOSUB 6237
6163 RETURN
6164 '*IF3:
6165 C=-1
6166 X=XL
6167 Y=YL
6168 Z=ZL
6169 GOSUB  6117
6170 RETURN
6171 '*IF4:
6172 X=X1+K*X2
6173 Y=Y1+K*Y2
6174 Z=0
6175 XN=0
6176 YN=0
6177 ZN=1
6178 C=1
6179 GOSUB  6117
6180 RETURN
6181 '*IF5:
6182 TST=-1
6183 D=SQR(D)
6184 K1=(-B-D)/A
6185 K2=(-B+D)/A
6186 K=MIN(K1,K2)
6187 IF K<0 THEN GOSUB 6241
6188 TST=-TST*(Z1+K*Z2<=ZO)
6189 RETURN
6190 '*IF6:
6191 X=X1+K*X2
6192 Y=Y1+K*Y2
6193 Z=Z1+K*Z2
6194 C=1
6195 XN=(X-XO)
6196 YN=(Y-YO)
6197 ZN=SQR(XN*XN+YN*YN)
6198 R=SQR(XN*XN+YN*YN+ZN*ZN)
6199 XN=XN/R
6200 YN=YN/R
6201 ZN=ZN/R
6202 GOSUB  6117
6203 RETURN
6204 '*IF7:
6205 DM=D
6206 XP=X
6207 YP=Y
6208 ZP=Z
6209 XNP=XN
6210 YNP=YN
6211 ZNP=ZN
6212 CP=C
6213 RETURN
6214 '*IF8:
6215 P%=PALETTE(6)
6216 PALETTE6,PALETTE(1)
6217 PALETTE1,P%
6218 RETURN
6219 '*IF9:
6220 I(N%)=1
6221 RETURN
6222 '*IF10:
6223 X1=X:Y1=Y:Z1=Z
6224 X2=XL-X:Y2=YL-Y:Z2=ZL-Z
6225 GOSUB  6073
6226 IF TST=-1 OR X2*XN+Y2*YN+Z2*ZN<0 THEN GOSUB 6245 ELSE GOSUB 6248
6227 RETURN
6228 '*IF11:
6229 GOSUB  6067
6230 X1=X:Y1=Y:Z1=Z
6231 GOSUB  6062
6232 I(N%)=I(N%+1)
6233 RETURN
6234 '*IF12:
6235 I(N%)=0
6236 RETURN
6237 '*IF13:
6238 K=MAX(K1,K2)
6239 IF K<0 THEN GOSUB 6252
6240 RETURN
6241 '*IF14:
6242 K=MAX(K1,K2)
6243 IF K<0 THEN GOSUB 6255
6244 RETURN
6245 '*IF15:
6246 I(N%)=IA
6247 RETURN
6248 '*IF16:
6249 R=SQR(X2*X2+Y2*Y2+Z2*Z2)
6250 I(N%)=IA+(1-IA)*(X2*XN+Y2*YN+Z2*ZN)/R
6251 RETURN
6252 '*IF17:
6253 TST=0
6254 RETURN
6255 '*IF18:
6256 TST=0
6257 RETURN
qui donne ca au bout de très très très longtemps (même sous TEO en vitesse max)
Sans titre.png
Sans titre.png (83.5 Kio) Consulté 5920 fois
(un jour j'en ferais une Démo en ASM, promis)

Faire une animation ? Oui c'est facile en basic THOMSON avec les instructions PUT/GET/SAVEP. J'avais ainsi aussi porté le programme Cinetix de SVM Micro et fait une animation.
cinetix_sam.zip
faire run"VISU", puis entrer NOM=CIN et NUM=19 par exemple.
(86.24 Kio) Téléchargé 121 fois


Quant à la démo TIC-TOC, elle a gagnée à la Forever de l'an dernier. Dommage que celle de cette année n'ait pas (encore) eu lieu, on aurait peut-être vu encore mieux, qui sait?
Dernière modification par __sam__ le 04 mai 2020 21:59, modifié 5 fois.
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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: TAVERNIER 6809

Message par Daniel »

Je peux faire une version de dcmoto à 1000x pour essayer. C'est un domaine inexploré, je n'ai aucune idée du résultat, il faudra probablement supprimer la sortie son pour éviter un plantage.

Pour faire une animation sur Thomson, il faut pouvoir stocker les images à afficher. La RAM est souvent insuffisante, surtout avec les machines de première génération. Avec un contrôleur de carte SD, par exemple SDDRIVE, on sait faire des vidéos de longueur illimitée.

Ça ne concerne pas le Tavernier, nous sommes complètement hors-sujet, il faudra ouvrir une autre discussion.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour,
Je constate ne pas être le seul à tenter de faire tourner des routines de ray-tracing sur d'ancienne machine....

J'ai un peu avancé avec mon TAVERNIER maintenant équipé de la carte VM9938
Je parviens maintenant à charger des images en utilisant la commande HMMC du VDP et à recréer une mini animation.
La taille des images et leur nombre sont à choisir en fonction de la mémoire disponible
Ci-dessous l'écran chargé avec quatre images successives au format 128x106

A plus
Michel
Ray-tracing.JPG
Ray-tracing.JPG (170.38 Kio) Consulté 5863 fois
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour à tous,

Voici une nouvelle image de ce que donne ma carte couleur VM9938 greffée sur mon TAVERNIER

Michel
Pièces jointes
Image Fractale.JPG
Image Fractale.JPG (279.95 Kio) Consulté 5474 fois
Avatar de l’utilisateur
michel guyot
Messages : 612
Inscription : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot »

Bonjour,

En tenant compte du mode de tracé du VM9938 dans la routine de génération de l'image fractale, l'écran en 256 x 212 est cette fois pleinement rempli...
Michel
Image Fractale 07.JPG
Image Fractale 07.JPG (249.42 Kio) Consulté 5425 fois
Répondre