Logicielsmoto.com

Nous sommes le 28 Mar 2024, 22:55

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 52 messages ]  Aller à la page 1, 2, 3, 4  Suivante
Auteur Message
 Sujet du message: Teo version 1.8.1
MessagePosté: 30 Mai 2012, 21:57 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
La version 1.8.1 de Teo est disponible sur SourceForge :

https://sourceforge.net/projects/teoemulator/

... où vous pourrez aussi trouver les versions suivantes. Et quelques versions précédentes.

Ce qu'il y a de plus dans cette version :

Code:
- ROMs incluses dans les packages
- Emulation des imprimantes PR90-055, PR90-600, PR90-612
- exécution cycle par cycle des instructions
- émulation des instructions non standard
- émulation des postcodes non standard pour TFR/EXG
- émulation des postcodes non standard pour indexé
- émulation du postcode 0x00 pour PSHS/PSHU/PULS/PULU
- ajout et internationalisation des saptools et des k7tools
- plus de message de confirmation à la sortie de Teo
- sous Linux :
  - passage à GTK+ 2.12
  - réduction du temps de ralentissement usleep()
  - gestion de la configuration lorsque le device impliqué n'est pas monté
  - reset à chaud de Teo si erreur de configuration
  - traitement du son par ALSA plutôt que par OSS
  - passage au combobox pour les fichiers sous Linux et ajout de boutons pour les vider
  - F12 pour l'appel du débogueur


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Teo version 1.8.1
MessagePosté: 31 Mai 2012, 13:55 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Prehisto a écrit:
La version 1.8.1 de Teo est disponible sur SourceForge

Cool!
Citation:
- émulation des instructions non standard

Super, je connais quelque progs de 257octets qui vont descendre à 255. :love:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 05 Juin 2012, 14:23 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
Que font exactement les mouvements de pile avec un postcode a 0 ? Equivalent a nop ou ca fait des trucs plus subtils ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 05 Juin 2012, 18:07 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Rien, en fait. Ça coûte le prix d'un mouvement de pile immobile.

Code:
      PSHS    ($00)     (5 cycles + 0 cycle)


PS: et désolé de répondre aussi tard, je n'ai reçu aucun message de notification :L


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: buzzer bizarre
MessagePosté: 01 Juil 2012, 14:45 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Il y a un truc bizarre avec le buzzer. Le code basic suivant:
Code:
DO:POKE &HE7C1,PEEK(&HE7C1) XOR 8:LOOP

faisait du bruit avec les versions antérieures (ainsi que sous les autres emuls). Mais avec la 1.8.1, le to8 reste silencieux.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 01 Juil 2012, 14:47 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Ah. Un bon petit programme de test, en tout cas.

Tu parles de la version Windows ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 01 Juil 2012, 14:53 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
oui windows. Avec la 1.8.0 le code faisait du bruit.

Donc c'est une modif entre la 1.8.0 et la 1.8.1. Si ca le fait sous linux et sous win, c'est dans l'emul du registre $E7C1 que le changement a du avoir eu lieu (les imprimantes c'est en $E7C1 ?)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 01 Juil 2012, 15:28 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Effectivement, dans hardware.c, à la fonction SetDeviceRegister(), il y avait :

Code:
        /* PIA 6846 système */
        case 0xE7C1:
            mc6846_WriteCommand(&mc6846, val);
           
            if ((mc6846.crc&0x30) == 0x30)
                to8_PutSoundByte(mc6809_clock(), mc6846.crc&8 ? 0 : (mc6821_ReadPort(&pia_ext.portb)&0x3F)<<2);
            break;

que j'ai transformé en :
Code:
        /* PIA 6846 système */
        case 0xE7C1:
            mc6846_WriteCommand(&mc6846, val);
            break;

J'ai eu à pas mal travailler sur le son, j'avais trouvé quelque chose qui évitait, justement, une légère friture qui n'existe pas sur un vrai Thomson dans certaines situations, mais ça a l'air de ne pas encore être au point.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 01 Juil 2012, 15:40 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Prehisto a écrit:
J'ai eu à pas mal travailler sur le son, j'avais trouvé quelque chose qui évitait, justement, une légère friture qui n'existe pas sur un vrai Thomson dans certaines situations, mais ça a l'air de ne pas encore être au point.

Changer le bit 3 de $E7C1 était la façon de faire du son sur TO7/70. Sur les schemas, il me semble que ce bit du 6846 n'est relié à rien. Mais en réalité, il doit bel et bien servire à quelque chose car les vieux jeux qui font du son en utilisant ce bit (ANDROIDE je crois) produisent bel et bien du son sur TO8.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 01 Juil 2012, 15:53 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Ben je viens d'essayer Androïdes sur Teo (disquette test pour Teo prise sur Nostalgies Thomsonistes), je n'ai pas l'impression que le jeu ait été amputé du son.

Mais c'est vrai qu'il va falloir faire avec plutôt que sans. Donc je note ça comme régression, et ce sera rectifié.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 01 Juil 2012, 16:18 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Prehisto a écrit:
Ben je viens d'essayer Androïdes sur Teo (disquette test pour Teo prise sur Nostalgies Thomsonistes), je n'ai pas l'impression que le jeu ait été amputé du son.
Oui tout a fait. C'est pour ca que je me demande comment il produit du son. Je pensais qu'il n'agissait que sur $E7C1, mais lorsque je le desassemble, je vois ceci:
Code:
84BF 1A50       ORCC   #$50                 3
84C1 7D6105     TST    $6105                7
84C4 2722       BEQ    $84E8                3
84C6 73E7CD     COM    $E7CD                7
84C9 7D6102     TST    $6102                7
84CC 2708       BEQ    $84D6                3
84CE B6E7C1     LDA    $E7C1                5
84D1 8808       EORA   #$08                 2
84D3 B7E7C1     STA    $E7C1                5
84D6 7A610A     DEC    $610A                7
84D9 260D       BNE    $84E8                3
84DB B66109     LDA    $6109                5
84DE B7610A     STA    $610A                5
84E1 7A6106     DEC    $6106                7
84E4 2602       BNE    $84E8                3
84E6 8DB4       BSR    $849C                7
84E8 BCE7C6     CMPX   $E7C6                7
84EB 3B         RTI                      16/4
Donc en gros il touche toujours à $E7CD, et si $6102 est différent de 0 (on a pas de joystick?), il va tripatouiller $E7C1. On dirait bien qu'il joue (!! :p) sur les deux tableaux.

A noter: truc hyper cool, le son est généré par interruption TIMER laissant libre le reste du CPU pour le jeu (le cpu n'à qu'à modifier $E7C6 pour varier la fréquence du son).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 06 Juil 2012, 12:52 
Hors ligne

Inscription: 27 Avr 2006, 09:04
Messages: 101
@Sam
Je me disais bien qu'android devait fonctionner aussi sans le DNA (c'est en débuguant le son de mon émulateur avec android que je m'étais rendu compte qu'il l'utilisait).
Merci pour ton analyse.

Sinon, je rebondis à propos du buzzer. Quelqu'un sait quelle est la fréquence maximum de sortie du buzzer sur To9? (8Khz?)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 07 Juil 2012, 00:41 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Tomix3 a écrit:
Sinon, je rebondis à propos du buzzer. Quelqu'un sait quelle est la fréquence maximum de sortie du buzzer sur To9? (8Khz?)
Non 8khz c'est hyper faible. Le 6809 peut produire des sorties échantillonnées à 44khz (donc freq maxi de 22khz), et avec le buzzer on peut aller encore plus haut:
Code:
2     A000 86   E7       ini    lda    #$E7
6     A002 1F   8B              tfr    a,dp
4     A004 96   C1       loop   lda    <$E7C1
2     A006 88   08              eora   #8
4     A008 97   C1              sta    <$E7C1
3     A00A 20   F8              bra    loop
La boucle prend 4+2+4+3=13cycles, soit un son à environ 38khz au lieu de 22khz (il faut 2 tour de boucle pour faire une période). Pile dans les ultrasons et on ne devrait rien entendre en théorie.

En pratique on entendra rien non pas à cause des ultra-sons, mais parce que le haut-parleur agit comme un filtre passe-bas à la fréquence de coupure entre 10 et 20khz. Donc la fondamentale à 38khz se trouvera fortement amortie. Au mieux on devrait entendre un très léger bourdonnement correspondant aux basses fréquences créées par l'interruption timer je pense. Je n'ai pas vérifié. Si quelqu'un se sent le courage, ca serait marrant de vérifier cette théorie.

Sur les emuls c'est plus complexe parce que le son est échantillonné et qu'on a pas coupure du spectre, mais repliement de ce dernier. TEO sous windows échantillonne le son à 51.2khz. On a donc repliement du spectre autour de 25.6khz. Les 38khz théoriques ont une frequence conjuguée de 51.2-38=13khz. On devrait donc entendre une note assez forte à cette fréquence.

Je viens de faire le test avec TEO 1.7.7 et AUDACITY sur le code du début. J'obtiens le spectre suivant:
Image
On voit bien que le pic restitué est à 12.7khz; vraiment pas très loin du 13khz théorique. CQFD ;-)

En fait ce que cela suggère pour avoir une émulation plus fidèle serait d'introduire un filtre à 20khz dans la partie audio pour éviter le repliement des fréquences >= 25.6khz et ainsi éviter l'apparition du beep à 13khz là ou un vrai TO serait probablement silencieux (hypothèse qui reste à vérifier cela dit).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 07 Juil 2012, 07:59 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Je vais quand même éclaircir quelques points :

J'ai effectivement effectué quelques transformations du côté du son, principalement pour Linux, mais qui ont eu des répercussions pour Windows.

Je me suis rendu compte que l'appel aux systèmes traitant le son provoquaient un usage CPU proche de 100%. Je me suis donc appliqué (du moins pour Linux) à ne générer le son que lorsque cela était requis. Ça a nécessité de créer des filtres passe-bas et passe-haut rudimentaires, qui ont très bien fonctionné avec la version 10.04 de Ubuntu. L'avantage certain est que l'usage CPU est passé de 100% à moins de 20%.

Dès l'instant où je suis passé à la version 12.04 de Ubuntu, je n'ai eu que des problèmes : ALSA semble ne plus répondre comme avant, A tel point que seule la version à 100% d'usage CPU fonctionne correctement. J'ai cherché tant bien que mal un solution, sans l'avoir trouvé jusqu'alors.

Samuel, es-tu d'accord pour intégrer l'équipe de Teo sur SourceForge ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 07 Juil 2012, 10:31 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Prehisto a écrit:
Je me suis rendu compte que l'appel aux systèmes traitant le son provoquaient un usage CPU proche de 100%. Je me suis donc appliqué (du moins pour Linux) à ne générer le son que lorsque cela était requis. Ça a nécessité de créer des filtres passe-bas et passe-haut rudimentaires, qui ont très bien fonctionné avec la version 10.04 de Ubuntu. L'avantage certain est que l'usage CPU est passé de 100% à moins de 20%.

Donc le filtre logiciel réduit l'usage CPU. C'est surprenant.

Sais tu si le code ci-dessus fait du bruit sur un vrai TO ou si comme je le suppose il est (relativement) silencieux? En effet je ne sais pas si ma théorie du filtrage correspond à la réalité, ni même si le bit b3 de $E7C1 altère bien le buzzer. Si ca se trouve sur un TO8, comme indiqué dans les docs, la pinoche correspondante n'est vraiment pas utilisée. J'ai décortiqué la routine "qui fait du bruit" en $F214. Elle ne passe pas par le buzzer, mais par $E7CD. Donc il semblerait que même le moniteur évite le buzzer pour faire du son.

J'ai testé le programme basic sous MESS. Sur un TO7 il fait du bruit. Sur un TO8 il est silencieux. Il y a un truc là dessous. Si ca se trouve TEO a parfaitement raison de ne pas émuler ce bit 3 en $E7C1. Que dit une vraie machine, buzz ou pas Buzz?

Citation:
Dès l'instant où je suis passé à la version 12.04 de Ubuntu, je n'ai eu que des problèmes : ALSA semble ne plus répondre comme avant, A tel point que seule la version à 100% d'usage CPU fonctionne correctement. J'ai cherché tant bien que mal un solution, sans l'avoir trouvé jusqu'alors.

Donc as tu retiré le filtre? Pour info, j'ai fait l'analyse spectrale du même bout de code sous DCMOTO. Le spectre est totalement différent de celui de téo:
Image
    * Il n'y a aucune fréquence après 10khz. DCMOTO doit donc utiliser un filtre autour de là.
    * Le pic le plus fort est à 6khz.
Le pic à 6khz s'entend parfaitement bien. On pourrait croire que cela signifie que la boucle ne tourne pas à 13cycles, mais je crois plutôt que c'est lié à l'échantillonnage réalisé par l'émulateur. On peut supposer que ce signal est le 1er repliement de celui à 38khz. Il a donc lieu autour de la fréquence de (6+38)/2 = 22khz, soit une fréquence d’échantillonnage de 44khz. C'est plausible. (C'est rigolo cette rétro-ingéneering à base d'analyse spectrale ;-) )

Ce que j'en conclue, c'est que malgré le filtre de DCMOTO, l’échantillonnage envoie les 38khz maxi vers une fréquence très basse (6khz) parfaitement audible, ce qui doit discriminer entre un émulateur et une vraie machine. Rah je rage ne ne pouvoir échantillonner un vrai thomson pour regarder son spectre pour savoir si on a droit à ces fréquences parasites ou pas aussi en vrai.

Enfin il faut pondérer ce critère de fidélité. Il ne se produit que si on joue du son à plus de la moitié de la fréquence d'échantillonnage de l'émul. Il faut vraiment le chercher pour le trouver ;-)

Citation:
Samuel, es-tu d'accord pour intégrer l'équipe de Teo sur SourceForge ?

Pourquoi pas, mais j'avoue ne pas trop savoir quoi faire, n'ayant pas de TO8 pour comparer.

[ADDENDUM]Sur dcmoto_20120301 le son d'intro de SPACE-PROJECT est complètement foireux. Ca ressemble à du bruit (bug dans l'emul?). J'en ai profité pour tracer le spectre qui devient bien plus continu (vive le bruit!).
Image
On voit bien la fréquence de coupure à 10-12khz assez pentue. Par contre je n'arrive pas à comprendre d'où vient la pente à -3db/octave qui débute à 1khz. C'est peut être le bruit qui n'est pas complètement blanc (il est vrai que c’était de la musique à l'origine).


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 52 messages ]  Aller à la page 1, 2, 3, 4  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 15 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com