TAVERNIER 6809
Modérateurs : Papy.G, fneck, Carl
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
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
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
-
- Messages : 7966
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: TAVERNIER 6809
Hey, j'ai souvenir de ce programme! Je l'avais adapté sur mon TO9 à l'époque 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
Rahhhh les pages bleues de SVM.. que de souvenirs
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: TAVERNIER 6809
Ouah du raytracing sur Tavernier 6809
Impatient de voir le résultat
Impatient de voir le résultat
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
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
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
Re: TAVERNIER 6809
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 ?
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 ?
Re: TAVERNIER 6809
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 ? ^^
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Bonjour à tous
Voici la première image donnée par mon TAVERNIER avec ce programme de Ray-Tracing
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
Voici la première image donnée par mon TAVERNIER avec ce programme de Ray-Tracing
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
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
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
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
Re: TAVERNIER 6809
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 ????
Re: TAVERNIER 6809
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.
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
-
- Messages : 7966
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: TAVERNIER 6809
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:et devient ceci qui donne ca au bout de très très très longtemps (même sous TEO en vitesse max)
(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.
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?
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
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
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.
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: TAVERNIER 6809
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.
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.
L'obstacle augmente mon ardeur.
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
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
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
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Bonjour à tous,
Voici une nouvelle image de ce que donne ma carte couleur VM9938 greffée sur mon TAVERNIER
Michel
Voici une nouvelle image de ce que donne ma carte couleur VM9938 greffée sur mon TAVERNIER
Michel
- Pièces jointes
-
- Image Fractale.JPG (279.95 Kio) Consulté 5509 fois
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
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
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