CPC Rulez
https://cpcrulez.fr/forum/

[EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windows
https://cpcrulez.fr/forum/viewtopic.php?f=7&t=6596
Page 2 sur 3

Auteur :  Longshot [ 10 Déc 2021, 16:36 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Citer :
je suis déjà très demandeur pour avoir des jeux de tests plus complets dans le test 1 de "SHAKER"

Tu trouveras la version 1.9 de SHAKER avec les jeux de résultats ici :
http://logonsystem.fr/html/downloadlogon.htm

Dans cette version j'ai ajouté 3 pages supplémentaires de tests sur les accès en écriture du Z80A.

WINAPE 2.0 Beta 3 fait globalement un bon score, mais il n'est cependant pas parfait.
Il émule mal les instructions LDI et EX(SP),HL par exemple.

Je n'ai pas implémenté quelques instructions comme INI ou RST n, mais ce serait à faire.

Auteur :  dlfrsilver [ 10 Déc 2021, 21:58 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Longshot a écrit :
Citer :
je suis déjà très demandeur pour avoir des jeux de tests plus complets dans le test 1 de "SHAKER"

Tu trouveras la version 1.9 de SHAKER avec les jeux de résultats ici :
http://logonsystem.fr/html/downloadlogon.htm

Dans cette version j'ai ajouté 3 pages supplémentaires de tests sur les accès en écriture du Z80A.

WINAPE 2.0 Beta 3 fait globalement un bon score, mais il n'est cependant pas parfait.
Il émule mal les instructions LDI et EX(SP),HL par exemple.

Je n'ai pas implémenté quelques instructions comme INI ou RST n, mais ce serait à faire.


Bon, Longshot, J'ai tenté de discuter avec César, par rapport à ce que tu as expliqué en disant que les émulateurs qui tournent en NOP et pas en T-states c'était même pas la peine.

Est-ce que tu peux développer ? César m'a indiqué qu'aucune démo ne se servait de cette caractéristique, et qu'en plus ça grève pas mal l'émulation.

Peux-tu apporter des explications sur la réelle nécessitée par exemple de passer CPCEC de NOP à T-States ?

Merci d'avance.

Auteur :  dlfrsilver [ 10 Déc 2021, 23:21 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Longshot a écrit :
Citer :
je suis déjà très demandeur pour avoir des jeux de tests plus complets dans le test 1 de "SHAKER"

Tu trouveras la version 1.9 de SHAKER avec les jeux de résultats ici :
http://logonsystem.fr/html/downloadlogon.htm

Dans cette version j'ai ajouté 3 pages supplémentaires de tests sur les accès en écriture du Z80A.

WINAPE 2.0 Beta 3 fait globalement un bon score, mais il n'est cependant pas parfait.
Il émule mal les instructions LDI et EX(SP),HL par exemple.

Je n'ai pas implémenté quelques instructions comme INI ou RST n, mais ce serait à faire.


Il m'a dit entre autre au sujet de l'émulation NOP/T-states ceci : "T-states, je suis clairement pas d'accord car le Z80 du CPC est codé en dur au stepping 4 T/NOP."

Que peux-tu répondre à ceci ? :)

Auteur :  dmanu78 [ 11 Déc 2021, 10:21 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Sans rentrer dans le débat NOP vs T-States, il est certain que l’intérêt de ce test reste "théorique" puisqu'en pratique cela ne changera rien au résultat mais c'est très utile pour vérifier le degré précision de l'émulateur par rapport à la machine réelle. Le but de tout émulateur est de tendre vers une émulation parfaite et ce genre de tests extrêmes testant les timings d’écriture en mémoire au sein même d'une instruction permet justement de le faire.

Je peux y voir un intérêt sur des démos à R0 = 1, dans lesquels les ruptures interviennent toutes les 2µs et donc au sein même d'une instruction CPU.

Merci Longshot pour ces tests complémentaires qui m'ont permis de corriger un décalage de timing dans l'instruction EX (SP), HL. :)
Je vous mets en téléchargement ci-dessous la nouvelle version de l'émulateur 0.473b intégrant les derniers correctifs à la suite de la nouvelle démo de Longshot et de Shaker (version 32 et 64 bits). N'hésitez pas si vous avez des retours ;)

En parallèle, je lis avec gourmandise le guide de Longshot et j'en viens de plus en plus à la conclusion qu'il va falloir que je réécrive complètement le code émulant le CRTC. J'ai fait des choix assez structurants dans l'écriture de cette partie du code ("bufférisation" de certains registre notamment) et je m'aperçois que, certes ça fonctionne plutôt pas mal, mais au prix de "verrues" présentes dans le code et qui ne sont pas très propres.
Je pense qu'au final chaque CRTC aura son propre bout de code. Actuellement c'est une routine commune à l'ensemble des CRTC mais cela crée plein d'exceptions et un code de moins en moins lisible...Un petit chantier supplémentaire qui s'annonce...

Auteur :  marcel [ 11 Déc 2021, 10:52 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

dlfrsilver a écrit :
Peux-tu apporter des explications sur la réelle nécessitée par exemple de passer CPCEC de NOP à T-States ?


Prenons l'exemple d'une instruction à 7 T-States qui prendra deux nops, l'exécution n'est pas 4+4 mais 3+4 ou 4+3 (+1 T state d'attente pour rester synchro avec le Gate array)

Si ton instruction écrit quelque chose ça ne se passe pas au NOP près mais au T-State près. Tu peux gérer le décalage autrement et rester au NOP mais il faut gérer le décalage

Auteur :  Longshot [ 11 Déc 2021, 11:50 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Ce que SHAKER fait, une démo peut le faire aussi. :D
Ce programme démontre juste les différences entre un émulateur et le hardware réel, rien de plus.
Il n'impose rien à personne.

Je n'ai jamais écrit "les émulateurs qui tournent en NOP et pas en T-states c'était même pas la peine."
Si Cngsoft pense que CPCEC n'a pas besoin d'évoluer sur l'émulation du Z80A, c'est son choix.
Je ne vais pas disserter ou polémiquer sur la "nécessité" du niveau de précision d'un émulateur sur tel ou tel domaine.

Cngsoft est assez grand pour exprimer son avis seul et je ne suis pas sûr qu'il t'ait demandé d'être son intermédiaire sur des échanges privés.
Donne plutôt simplement ton avis personnel sur le sujet. :-?

WINAPE date de 1999 et gère le Z80A ainsi sans problème de performance.
AMSPIRIT gère aussi le Z80A ainsi.
DManu78, son auteur, décrit parfaitement et en détail le fonctionnement du test 1 de SHAKER.
Il donne l'exemple de l'instruction EX (SP),HL traitée en 19 cycles.
https://forum.system-cfg.com/viewtopic. ... 11#p199011

Auteur :  Longshot [ 11 Déc 2021, 13:08 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Citer :
"Si ton instruction écrit quelque chose ça ne se passe pas au NOP près mais au T-State près."

Tout à fait.
C'est vrai sur les écritures en RAM (1 NOP couvre 2 octets).
En RAM, cette mauvaise gestion peut entrainer des glitches visuels (certes rares).

Mais c'est vrai aussi sur les I/O.
L'I/O a lieu durant le 5ème NOP d'un OUTI et durant le 3ème NOP d'un OUT(C),reg8.
Or cette précision est insuffisante.

Le CRTC, par exemple, peut réagir différemment avec une I/O générée durant le 5ème NOP via un OUTI et une même I/O générée durant le 3ème NOP d'un OUT(C),reg8. Voir ACCC chapitre 13.6.2.
On peut très bien vouloir obtenir un effet 1 via un OUTI ou un effet 2 via un OUT(C),r8

Auteur :  dlfrsilver [ 11 Déc 2021, 18:55 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Longshot a écrit :
Ce que SHAKER fait, une démo peut le faire aussi. :D
Ce programme démontre juste les différences entre un émulateur et le hardware réel, rien de plus.
Il n'impose rien à personne.

Je n'ai jamais écrit "les émulateurs qui tournent en NOP et pas en T-states c'était même pas la peine."
Si Cngsoft pense que CPCEC n'a pas besoin d'évoluer sur l'émulation du Z80A, c'est son choix.
Je ne vais pas disserter ou polémiquer sur la "nécessité" du niveau de précision d'un émulateur sur tel ou tel domaine.

Cngsoft est assez grand pour exprimer son avis seul et je ne suis pas sûr qu'il t'ait demandé d'être son intermédiaire sur des échanges privés.
Donne plutôt simplement ton avis personnel sur le sujet. :-?

WINAPE date de 1999 et gère le Z80A ainsi sans problème de performance.
AMSPIRIT gère aussi le Z80A ainsi.
DManu78, son auteur, décrit parfaitement et en détail le fonctionnement du test 1 de SHAKER.
Il donne l'exemple de l'instruction EX (SP),HL traitée en 19 cycles.
https://forum.system-cfg.com/viewtopic. ... 11#p199011


Bien évidemment. De mon côté, je voulais simplement savoir ce qu'il est préférable de faire, tout simplement.

Citer :
Je n'ai jamais écrit "les émulateurs qui tournent en NOP et pas en T-states c'était même pas la peine."


J'ai compris ça dans le sens ou un ému qui tourne en 'NOP' ne permet pas d'avoir la précision qu'on peut obtenir via une gestion en 'T-states'.

J'ai bien compris que le CRTC est une immense table de vérité, constituée de compteurs.

Le but de ta documentation, c'est qu'un auteur d'émulateur puisse faire évoluer son émulation CRTC, et timings aussi.

Autrement, pourquoi avoir faire une documentation aussi fournie et complète ?

Auteur :  Longshot [ 12 Déc 2021, 00:11 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Citer :
J'ai compris ça dans le sens ou un ému qui tourne en 'NOP' ne permet pas d'avoir la précision qu'on peut obtenir via une gestion en 'T-states'.

Ce n'est pas moi qui l'ait écrit, mais je pense que c'est vrai.

Citer :
Le but de ta documentation, c'est qu'un auteur d'émulateur puisse faire évoluer son émulation CRTC, et timings aussi.

Lire le préambule tu dois! :wink:
Son but est d'apporter des informations détaillées sur le fonctionnement des différents circuits CRTC 6845 implémentés dans les CPC.
Ca peut aussi servir à un auteur d'émulateur si il a envie de faire les choses dans l'ordre sans bidouiller pour faire tourner chaque nouvelle démo.

Citer :
Autrement, pourquoi avoir faire une documentation aussi fournie et complète ?

Sans doute pour les personnes qui ont envie de développer sur CPC....Il en reste.... :?

Auteur :  Nouille2Feu [ 12 Déc 2021, 10:42 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Bonjour à tous.
En premier lieu, je tenais fermement à féliciter DMANU pour son émulateur.
Cela fait plaisir de voir émulateur made in France qui promet beaucoup et de l’engouement de son créateur à parfaire le travail.
Certes le chemin est encore long mais il est clair que cet émulateur qui est déjà fonctionnel est fort intéressant.

Jusqu’à présent je ne jure que par mon Amstrad ( crtc 0 ) et Winape.
Mais malheureusement Winape bien que extrêmement complet à encore des petites lacunes.
Exemple : le CRTC 1 « La démo de « Futur » dans 30 years mégadémo » .
Et comme le code source n’est pas disponible (choix que je respecte) j’ai bien peur qu’il ne verra plus aucunes mises à jour.

Bravo pour le travail (que j’ai parcouru sur le forum system-cfg avec beaucoup de plaisir).
Bon il reste beaucoup de travail et il ne sert à rien aujourd’hui de faire une « todo-list » style le son du lecteur, le clavier en anglais etc..
Le principal est avant tout la précision dans les timmings qui est déjà un travail titanesque.

J’en profite aussi pour féliciter Longshot pour son document « AMSTRAD CPC CRTC COMPENDIUM » et aussi pour tout ce qu’il a apporté à l’Amstrad et qui aujourd’hui continue d’apporter (La technique du RVLL. Un seul mot : Bravo) .
J’ai tellement été admiratif de ton travail fin des années 80 avec d’autres noms qui m’ont marqué (Fefesse, Overflow, NWC, P007, Naminu,Fred crazy, Pict, 5kb, Bmc) avant la nouvelle génération qui arrivait dans les années 90/2000
Ma démo préférée est la Longshot (les yeux de Béatrice Dalle).
Je me souviens qu’un ami à moi avait troqué son Msx yc-64 par un Amstrad et qui avait gardé son écran Thomson. Il passait par un modulateur-adaptateur péritel de chez Amstrad et la démo Longshot ne passait pas :D

@dlfrsilver. J’ai un souvenir de ce pseudo sur un forum Amiga qui parlait de vie missiles et grenade infinie sur cannon-fodder. Le jeu plantait car un registre explosait vu qu’il n’était pas possible d’avoir autant de recrue :D. Ce n’est peut-être pas le même dlfrsilver.

Encore un fois félicitation à DMANU.

Auteur :  Fredouille [ 12 Déc 2021, 11:30 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

La documentation réalisée par Longshot permet de comprendre et donc d'améliorer tout développements liés au CRTC. Et je suis très reconnaissant qu'il ait pris la peine de le faire car j'en aurait été incapable.
Sans même toucher au CRTC, l'émulation globale du CPC en est très vite améliorée.

Merci à toi Longshot :)


En fait, ce qui m'ennuie, ce sont les remarques désobligeantes venant de personnes qui ne sont même pas destinataires de ces connaissances, visant à critiquer ce travail alors qu'ils ne vont même pas ouvrir ces documents.

Auteur :  dlfrsilver [ 13 Déc 2021, 13:43 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Nouille2Feu a écrit :
Bonjour à tous.
En premier lieu, je tenais fermement à féliciter DMANU pour son émulateur.
Cela fait plaisir de voir émulateur made in France qui promet beaucoup et de l’engouement de son créateur à parfaire le travail.
Certes le chemin est encore long mais il est clair que cet émulateur qui est déjà fonctionnel est fort intéressant.

Jusqu’à présent je ne jure que par mon Amstrad ( crtc 0 ) et Winape.
Mais malheureusement Winape bien que extrêmement complet à encore des petites lacunes.
Exemple : le CRTC 1 « La démo de « Futur » dans 30 years mégadémo » .
Et comme le code source n’est pas disponible (choix que je respecte) j’ai bien peur qu’il ne verra plus aucunes mises à jour.

Bravo pour le travail (que j’ai parcouru sur le forum system-cfg avec beaucoup de plaisir).
Bon il reste beaucoup de travail et il ne sert à rien aujourd’hui de faire une « todo-list » style le son du lecteur, le clavier en anglais etc..
Le principal est avant tout la précision dans les timmings qui est déjà un travail titanesque.

J’en profite aussi pour féliciter Longshot pour son document « AMSTRAD CPC CRTC COMPENDIUM » et aussi pour tout ce qu’il a apporté à l’Amstrad et qui aujourd’hui continue d’apporter (La technique du RVLL. Un seul mot : Bravo) .
J’ai tellement été admiratif de ton travail fin des années 80 avec d’autres noms qui m’ont marqué (Fefesse, Overflow, NWC, P007, Naminu,Fred crazy, Pict, 5kb, Bmc) avant la nouvelle génération qui arrivait dans les années 90/2000
Ma démo préférée est la Longshot (les yeux de Béatrice Dalle).
Je me souviens qu’un ami à moi avait troqué son Msx yc-64 par un Amstrad et qui avait gardé son écran Thomson. Il passait par un modulateur-adaptateur péritel de chez Amstrad et la démo Longshot ne passait pas :D

@dlfrsilver. J’ai un souvenir de ce pseudo sur un forum Amiga qui parlait de vie missiles et grenade infinie sur cannon-fodder. Le jeu plantait car un registre explosait vu qu’il n’était pas possible d’avoir autant de recrue :D. Ce n’est peut-être pas le même dlfrsilver.

Encore un fois félicitation à DMANU.


Je suis bien la même personne :)

Auteur :  dlfrsilver [ 13 Déc 2021, 13:49 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Longshot a écrit :
Citer :
J'ai compris ça dans le sens ou un ému qui tourne en 'NOP' ne permet pas d'avoir la précision qu'on peut obtenir via une gestion en 'T-states'.

Ce n'est pas moi qui l'ait écrit, mais je pense que c'est vrai.

=> c'est également mon avis. J'essaie de convaincre César, mais c'est pas gagné.
Je manque d'arguments pour ça :/

Citer :
Le but de ta documentation, c'est qu'un auteur d'émulateur puisse faire évoluer son émulation CRTC, et timings aussi.

Lire le préambule tu dois! :wink:
Son but est d'apporter des informations détaillées sur le fonctionnement des différents circuits CRTC 6845 implémentés dans les CPC.
Ca peut aussi servir à un auteur d'émulateur si il a envie de faire les choses dans l'ordre sans bidouiller pour faire tourner chaque nouvelle démo.

=> c'est exactement ce que j'ai compris Longshot. Et justement, comme César se galère à bidouiller pour faire tourner chaque nouvelle démo, c'est clairement l'idéal ton document.
Par contre, la grande question que tout auteur d'émulateur se pose, c'est sous quelle forme programmer l'émulation du CRTC.
Sous quelle forme le faire ? Une table avec des variables qui peuvent changer au besoin suivant les algos qui régissent les registres du bouzin ? Ou autrement ?


Citer :
Autrement, pourquoi avoir faire une documentation aussi fournie et complète ?

Sans doute pour les personnes qui ont envie de développer sur CPC....Il en reste.... :?


Mais trop ! :D

Auteur :  dmanu78 [ 31 Déc 2021, 00:39 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

@Nouille2Feu
Merci pour ces encouragements. Content que l'émulateur te plaise à ce stade. Il reste effectivement pas mal de boulot dessus mais ses fondations me semblent désormais solides.
Il est vrai que je travaille surtout sur la précision de l'émulation, sous le capot, sur des points, parfois de détails, qui ne se voient pas forcément à l'écran.
Pas d'effet bling-bling, de filtres écrans, d'options à tiroir à n'en plus finir...d'une part parce que je n'en ai pas les compétences techniques (je ne suis pas informaticien de métier) et parce que ce n'est pas forcément ce que je recherche. J'ai choisi un design volontairement simple et épuré, quelques icônes, quelques menus déroulant et .. c'est tout.
Mais sous son apparente simplicité tourne un moteur complexe, extrêmement précis, gourmand en ressource CPU, passablement compliqué à mettre au point, mais permettant des ajustements très fins.
Le but étant de se rapprocher le plus possible et le plus naturellement du monde du fonctionnement hardware d'un vrai CPC.

J'aime à penser qu'un émulateur, c'est un peu comme une horloge suisse de très haute précision. Tout part d'un tic/Tac, (l'oscillateur quartz) et à partir de là, c'est comme si tout un ensemble d'engrenages s'animaient et se synchronisaient à l'échelle de la microseconde pour former un tout cohérent. Ramené à l'émulateur c'est la justesse de la synchronisation des tic/tac du z80<=> Gate Array <=> CRTC entre autre qui va permettre de s'approcher de l'émulation parfaite.

En ce moment, je retravaille beaucoup sur l'émulation du CRTC. Le guide de Longshot est une mine d'or qu'il faut patiemment digérer. Sa lecture m'a permis de comprendre que j'avais fait fausse route sur pas mal de points. J'ai donc décider de "casser" mon jouet, heu ..mon code pour mieux le reconstruire avec de nouvelles règles.
Après 3 semaines de réécriture, l'émulation du CRTC_0 commence à donner des résultats intéressants, avec une émulation plus fidèle, même dans les cas le plus extrêmes, avec un code plus simple. J'arrive désormais à reproduire les tests 6 et 7 de shaker, particulièrement compliqués à émuler...

Image
Test 6 à R0 = 1: Des ruptures de 2µs à gérer, ça devient tendu. Quelques démos exploitent ces techniques de rupture (s&koh / Overflow Preview test 2)

Image
Test 7 à R0 = 0: Un vrai casse tête à émuler tant on rentre dans le domaine de l’extrême. Je crois qu'aucune démo n'exploite ce mode à ce jour.

Patiemment, je prends donc tout le temps qu'il faut pour bien le bâtir, brique par brique. Il reste encore plein de points à parfaire. L'émulateur doit encore gagner en précision et en maturité mais quand ce sera fait, et seulement après, je m'occuperai de lui ajouter des fonctionnalités dites "ergonomiques"...Un travail de longue haleine assurément... :)

Auteur :  norecess464 [ 31 Déc 2021, 05:20 ]
Sujet du message :  Re: [EMU] AMSpiriT - Nouvel émulateur Amstrad CPC pour windo

Salut ! Toujours un plaisir de lire ta progression !

Ton effort me fait penser a celui exposé dans ce très-inspirant article: https://arstechnica.com/gaming/2011/08/ ... -emulator/

Shaker est en passe de devenir un véritable "ACID Test" pour les émulateurs :) Il serait intéressant de pouvoir jauger ta progression en ayant le nombre de tests SHAKER qui passent comparés au nombre total de tests SHAKER (pour chacun des CRTC supportés).

Je me demande jusqu’à quel point ton émulateur est dédié a Windows. Est-ce uniquement l'interface graphique / intégration avec le système (lecture des inputs, "GetTickCounts", etc) ? Si un jour tu souhaites rendre ton émulateur plus universel, je te suggère d'essayer d'en faire un portage pour la librairie SDL. Non pas que SDL soit fantastique, mais il est d'ordinaire assez facile ensuite de partir de cette librairie pour faire tourner a peu près n'importe quoi n'importe ou :) Pense a Raspberry PI, MacOS, Linux.. la communauté Amstrad est assez "éclatée" en terme d'OS lorsqu'il s'agit d'utiliser un ordinateur moderne.

Bon courage pour la suite des choses :)

Page 2 sur 3 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/