[Thomson] DCMOTO nouveau

Couvre tous les domaines de l'émulation logicielle ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
mastacut
Messages : 288
Inscription : 14 mars 2016 05:12
Localisation : Thionville-Luxembourg-Belgique (Lorraine) Moselle

Re: [Thomson] DCMOTO nouveau

Message par mastacut »

Daniel a écrit :J'ai fait .....
La couleur (sur 24 bits) des lignes intermédiaires est calculée en fonction de l'option choisie :
Option 0 : AND avec 0xffffff de la couleur de la ligne précédente = copie de la ligne précédente
Option 1 : AND avec 0xdfdfdf de la couleur de la ligne précédente
Option 2 : AND avec 0xbfbfbf de la couleur de la ligne précédente
Option 3 : AND avec 0x000000 de la couleur de la ligne précédente = ligne noire
Les valeurs choisies pour le AND peuvent évidemment être ajustées,......... Je compte sur vos propositions pour améliorer la prochaine version.
L'idéal c'est ce que tu viens d’énoncer :
Daniel a écrit :Pour respecter les couleurs, il faudrait à la fois éclaircir les lignes de balayage et assombrir les lignes intermédiaires ....
Option 1 : 0xdfdfdf
Image

Tout compte fait il me parait assez bien comme ça, mais modifier uniquement l'option 3 :

Option 0 : AND avec 0xffffff
Option 1 : AND avec 0xdfdfdf
Option 2 : AND avec 0xbfbfbf
Option 3 : AND avec 0x808080 <--- précédemment 0x000000

Ou tester ces valeurs ci-dessous. L'option 1 reprend la valeur de l'option 2 mais commence trop entrelacé : Selon avis ... :?:

Option 0 : AND avec 0xffffff
Option 1 : AND avec 0xbfbfbf <--- précédement Option 2
Option 2 : AND avec 0x808080 <--- Nouvelle Valeur
Option 3 : AND avec 0x404040 <--- Nouvelle Valeur

Valeur testé sur Photoshop CS6 : Par tranche de 25%
Image
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] DCMOTO nouveau

Message par Daniel »

Nouvelle version 2016.05.10 de dcmoto_nouveau, avec un algorithme amélioré pour la simulation des lignes de balayage.
http://dcmoto.free.fr/emulateur/index.html
dcmoto_20160510.png
dcmoto_20160510.png (31.84 Kio) Consulté 5485 fois
Trouver une bonne solution n'est pas aussi simple qu'on le croit, j'ai essayé pas mal d'algorithmes différents avant de trouver celui-ci. J'en suis à peu près satisfait, ce qui n'exclut pas des améliorations possibles. Plutôt qu'un long discours je poste le code brut.

Code : Tout sélectionner

 int r1, v1, b1;      // composantes de la couleur de la ligne de balayage
 int r2, v2, b2;      // composantes de la couleur de la ligne intermediaire
 int rvb;             // intensite de base de la ligne intermediaire
 extern int balayage; // option choisie pour l'effet de balayage (de 0 a 3)

 r1 = (color[c] >> 16) & 0xff;  // intensite rouge
 v1 = (color[c] >>  8) & 0xff;  // intensite vert
 b1 = (color[c] >>  0) & 0xff;  // intensite bleu
 rvb = (r1 + v1 + b1 + 3) / 6;  // intensite moyenne divisee par 2

 switch(balayage)
 {
  case 1 :  //effet de balayage faible
   r2 = (rvb + r1 + 1) / 2;
   v2 = (rvb + v1 + 1) / 2;
   b2 = (rvb + b1 + 1) / 2;
   break;
  case 2 :  //effet de balayage moyen
   r2 = (rvb * 3 + r1 + 2) / 4;
   v2 = (rvb * 3 + v1 + 2) / 4;
   b2 = (rvb * 3 + b1 + 2) / 4;
   break;
  case 3 :  //effet de balayage fort
   r2 = rvb;
   v2 = rvb;
   b2 = rvb;
   break;
  default : //pas d'effet de balayage
   r2 = r1;
   v2 = v1;
   b2 = b1;
   break;
 }

 pcolor[n] = (r1 << 16) | (v1 << 8) | b1; // couleur ligne de balayage
 scolor[n] = (r2 << 16) | (v2 << 8) | b2; // couleur ligne intermediaire


Dernière modification par Daniel le 11 mai 2016 08:22, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
mastacut
Messages : 288
Inscription : 14 mars 2016 05:12
Localisation : Thionville-Luxembourg-Belgique (Lorraine) Moselle

Re: [Thomson] DCMOTO nouveau

Message par mastacut »

Daniel a écrit :Nouvelle version 2016.05.10 de dcmoto_nouveau, avec un algorithme amélioré pour la simulation des lignes de balayage.
http://dcmoto.free.fr/emulateur/index.html
Trouver une bonne solution n'est pas aussi simple qu'on le croit, j'ai essayé pas mal d'algorithmes différents avant de trouver celui-ci. J'en suis à peu près satisfait, ce qui n'exclue pas des améliorations possibles. Plutôt qu'un long discours je poste le code brut.
Je viens de tester, cette version dcmoto_20160510 est sur la bonne voie, je vais tester avec différents jeux et voir le graphismes et les couleurs.
J'ai Télécharger le Source de L’émulateur Amstrad Caprice32 et j'essais de voir ou se trouve le Code de l'effet de Balayage pour essayer de comprendre les Valeurs qui ont été utilisées et comparer.

Source Caprice32 : https://mega.nz/#!EAMGVQSZ!Y1-2JMSC9Jod ... bPzJyeY5S0
Executable Windows : https://mega.nz/#!5FM0hbSB!ool0OcQWDkjI ... oTmA0ZzW5k

Comparaison avec L'emulateur Amstrad Caprice32 avec a peu près le même jeux de couleur (les palettes sont differentes):
Caprice32 avec Effets De balayage (Scanlines):
PS : Le fait d'augmenter l'intensité des ligne intermediaire est bien sur DCMOTO, par contre en Zoomant les Lignes de Balayages de l'emulateur Caprice32 je me suis aperçu qu'elles étaient Totalements noires.
Image
DCMOTO:
Version dcmoto_20160510 Actuelle Option 3 : (Les caracteres jaunes sur font noir, les lignes de balayage sont gris foncé sur les caracteres jaune sur fond noir, et il en va de même si l'on applique d'autres jeux de couleurs)
Image
DCMOTO:
Version dcmoto_20160508 precedente Option 3: (Semble identique a CAPRICE32)
Image

PS : Du moins je suis pas sur a 100%, après réflexion, je sait pas si il faut se baser sur le modèle de Caprice32 ou autres Emulateurs, et laisser les lignes de balayages totalement noire ou Utiliser ton Algorithme comme tu le fait en appliquant un balayage de différent niveau de gris et en augmentant l'intensité des lignes intermédiaires proportionnellement en fonction des Option 1,2,3 .... pour préserver la même intensité ... :idea:

Ton Algorithme est bon ....
Daniel a écrit :Trouver une bonne solution n'est pas aussi simple .... J'en suis à peu près satisfait .....
Je le Pense aussi .... ça a l'air satisfaisant, Pour l'instant je retiens cette version dcmoto_20160510 comme référence.

A moins de faire mieux, mais pas moins bien ! :wink:

Peut être essayer de laisser les lignes de balayages totalement noire, et de jouer uniquement sur l'intensité des lignes intermédiaires ? .... c'est une idée :idea:

Le Fait qu'une ligne sur 2 soit Totalement noire, rend l'intensité de l'image automatiquement basse, il faut aussi ne pas dénaturer les couleur d'origine en augmentant les lignes intermédiaires sauf si les couleurs sont respectées...... c'est pas de la tarte !!! :roll:
Dernière modification par mastacut le 12 mai 2016 02:19, modifié 5 fois.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Thomson] DCMOTO nouveau

Message par 6502man »

Question technique: quel est exactement le phénomène physique qui donne ce balayage sur les écran cathodique ?
De ce que je sait les écran cathodique affiche un seul point à la fois mais tellement vite que l’œil perçoit une image complète (illusion d'optique).
mais est ce que le balayage est du à l’oscillation à 50Hz du courant ou ca n'a rien à voir ?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
mastacut
Messages : 288
Inscription : 14 mars 2016 05:12
Localisation : Thionville-Luxembourg-Belgique (Lorraine) Moselle

Re: [Thomson] DCMOTO nouveau

Message par mastacut »

Maintenant il ne manque plus que l'option Plein écran avec la résolution native 4/3 THOMSON et ceux des Ecrans LCD Actuels :

Car le ZOOM rends la résolution native et les graphismes flouté, exécuter l’émulateur en plein écran avec sa résolution Native (ou la plus proche, si la résolution de l’écran le permet, ou celle desiré), serait l'idéal.

Exemple : Caprice32 3.6.1 : https://mega.nz/#!gUlkCRAZ!nw7Lh_esKyML ... AlkTA7TXeU

Image

Et la les autres emulateurs n'auront qu'a bien se tenir ..... Tremblement de terre de chez THOMSON Daniel Laboratory ... :wink:
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] DCMOTO nouveau

Message par Daniel »

6502man a écrit :est ce que le balayage est du à l’oscillation à 50Hz du courant ou ca n'a rien à voir ?
Ca n'a strictement rien à voir.

Avec un moniteur monochrome le rayon cathodique produit sur l'écran une image en forme de disque, clair au centre et plus sombre sur les bords. En se déplaçant horizontalement ce disque donne l'impression d'une ligne claire au centre et d'un espace plus sombre de part et d'autre.

Avec un moniteur couleur c'est plus compliqué car le masque de l'écran intervient, mais le résultat est à peu près le même : le faisceau d'électrons donne une couleur plus claire au centre et plus sombre en périphérie.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] DCMOTO nouveau

Message par Daniel »

mastacut a écrit :Maintenant il ne manque plus que l'option Plein écran avec la résolution native 4/3 THOMSON
Dans la version 2016.05.12 de dcmoto_nouveau une option a été ajoutée pour forcer la proportion 4/3.
Normalement elle devrait fonctionner aussi bien en fenêtre et en plein écran. Les tests avec un écran 16/9 restent à faire.
dcmoto_20160512.png
dcmoto_20160512.png (13.35 Kio) Consulté 5428 fois
[Edit 1]
Il reste un petit bug dans le déplacement de la souris et du crayon optique, je vais le corriger dans les heures qui viennent.

[Edit 2]
Version corrigée de dcmoto_nouveau mise en ligne à 18h35.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Thomson] DCMOTO nouveau

Message par 6502man »

Merci Daniel pour les explications :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
mastacut
Messages : 288
Inscription : 14 mars 2016 05:12
Localisation : Thionville-Luxembourg-Belgique (Lorraine) Moselle

Re: [Thomson] DCMOTO nouveau

Message par mastacut »

j'ai fait un petit break d'une semaine,

- Je vais d'ici peu me concentrer sur ce très intéressant post car il nécessite de la collaboration et tous nos avis pour que l'émulateur puisse bénéficier d'options supplémentaires tel que le plein écran Windows, l’effet de balayage ( qui est déjà parfait ), le format 16/9 et 4/3 ( présent aussi ), et quelques résolutions native en plein écrans ( et non un zoom sur résolution Windows ) de manière à améliorer l'expérience pour une immersion TOTALEMENT THOMSON.

C'est ce que je propose.

Que toutes les personnes intéressées puisse s'impliquer et donner son avis ... ça serait vraiment bénéfique.

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

Re: [Thomson] DCMOTO nouveau

Message par __sam__ »

Ah j'ai trouvé un bug. Il est présent dans tous les dcmoto depuis 2015/05/29 au moins, et y compris dans dcmoto_nouveau: sous basic faire

Code : Tout sélectionner

poke &hE7DD,1:? hex$(peek(&hE7DD))
ou équivalent.

Sur DCmoto, le tour devient rouge comme attendu et il retourne 1 (la dernière valeur écrite). Sur la machine réele, c'est rouge aussi, mais il retourne toujours $CC quelle que soit la valeur écrite. Visiblement $E7DD est en lecture seule sur la machine réele.
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: [Thomson] DCMOTO nouveau

Message par Daniel »

Bien vu et merci pour le rapport de bug ! Je corrige immédiatement et la prochaine version de dcmoto nouveau retournera $CC.

Il y a très certainement d'autres anomalies du même type dans l'émulateur. On les détecte parfois grâce aux bugs des programmes, comme par exemple la lecture d'une zone en écriture seule.

Je me souviens d'un cas sur MO6, avec Marche à l'Ombre. Un bug du programme lui fait lire une adresse où il n'y a rien (ni RAM, ni ROM, ni registre). La valeur retournée par le MO6 est telle que par miracle on retombe sur une instruction valide et le programme continue. J'ai du modifier dcmoto pour retourner la même valeur, sinon le programme plantait.

Sur Alice32, j'ai eu un truc assez cocasse. Il faut savoir qu'une partie de la mémoire est initialisée à la mise sous tension avec des valeurs croissantes, et ainsi l'adresse $4B52 (par exemple) contient $52, $4B53 contient $53, etc... Un programmeur a fait une erreur dans un test, au lieu de tester l'octet de poids faible de l'adresse il a testé le contenu, et ça marche malgré l'erreur grossière. Dans dcalice ça ne marchait pas car toute la RAM était initialisée à zéro. Je n'ai trouvé l'explication que beaucoup plus tard (grâce à Patrice), et j'ai pu corriger dcalice.
Dernière modification par Daniel le 06 mars 2017 22:13, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
jb_jb_fr
Messages : 391
Inscription : 29 mars 2010 10:36
Localisation : Essonne (91)
Contact :

Re: [Thomson] DCMOTO nouveau

Message par jb_jb_fr »

Ce n'est pas une histoire de mémoire initialisée, mais une lecture du bus d'adresse.
L'Alice32 est construit autour d'un 6803. Ce dernier, pour pouvoir utiliser 64Ko d'espace mémoire utilise un bus Multiplexé.
Donc sur A0-A7 il y a aussi D0-D7. Donc s'il n'y a pas de périphérique, le Microprocesseur relit les 8bits de poids faible de son adresse émise précédemment.
C'est un truc classique sur les bus multipléxé.

Jacques
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: [Thomson] DCMOTO nouveau

Message par nicolho »

jb_jb_fr a écrit :[...] Donc sur A0-A7 il y a aussi D0-D7 [...]
Oui, intéressant d'apprendre ces "trucs" qui servaient à économiser des lignes sur le bus. Récemment j'avais vu que la console NES faisait de même pour les "accès cartouche" de son processeur graphique (PPU)...
Jacques, quelles sont, à ta connaissance, les autres machines populaires qui utilisent ce système ?
Avatar de l’utilisateur
jb_jb_fr
Messages : 391
Inscription : 29 mars 2010 10:36
Localisation : Essonne (91)
Contact :

Re: [Thomson] DCMOTO nouveau

Message par jb_jb_fr »

Je ne connais pas tous les microprocesseurs, mais par exemple je sais que le 8085 a également un bus multiplexé.
C'est d'ailleur ce qui m'a mis la puce à l'oreille.
Car j'avais bossé il y a tres longtemps sur le 8085. Et effectivement j'avais été surpris de voir que la data correspondait à l'adresse basse.

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

Re: [Thomson] DCMOTO nouveau

Message par __sam__ »

Le 6809, et le 68000 sont aussi multiplexé je crois. C'est très courant 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
Répondre