[EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

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

Modérateurs : Carl, Papy.G, fneck

Zebulon
Messages : 1236
Inscription : 02 nov. 2020 14:03

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Zebulon »

Oui je comprends maintenant. Tu émules quasiment au niveau du fonctionnement interne de la puce. Les deux applications critiques sont les démos et les protections.
Lone
Messages : 16
Inscription : 26 nov. 2020 09:53

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Lone »

Hello,

Pour être passé également par là (émulateur en T-state, affichage du moniteur au pixel, etc), il est effectivement compliqué - mais pas impossible d'optimiser le tout.

Le problème vient surtout du fait que l'optimisation est en général nuisible à un code compréhensible, logique et extensible.

J'ai opté, par exemple, pour une "compression" des temps morts : comprendre, détecter tous les "ticks" qui ne sont pas dépendant d'autre chose, pour tous les traiter en même temps : Lors du calcul d'un T-State, par exemple, on sait que le prochain T-state ou il se passera quelque chose ne sera pas avant, admettons, 3 ticks. On va donc ne pas repasser dans la routine avant, ce qui évite de passer dans du code inutile (et couteux, les appels de fonctions coutent cher sur les CPU modernes, à cause des problématiques de pipeline et de cache).
Idem sur le moniteur : Je calcule 16 pixels d'un coup, en reportant les modifications effectives, pour éviter un passage dans une longue fonction 16 fois (ce qui m'a, par exemple, fourni le plus gros gain de perf).

Après, on peut aussi expérimenter pour tenter d'améliorer les choses : switch ou tableau de fonction ? etc, etc..
C'est un boulot particulièrement passionnant, mais qui prend également beaucoup de temps...
Dmanu78
Messages : 186
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

Re: [EMULATION AMSTRAD CPC] AMSpiriT - work in Progress

Message par Dmanu78 »

Hello Lone,

C’est exactement cela. Tu as parfaitement résumé la problématique à laquelle je suis confronté. Ce que l’on gagne en précision, on le perd en lisibilité du code. J’essaye justement de bien commenter mon code pour pouvoir le reprendre sans trop de mal plus tard et comprendre pourquoi je l’ai écrit comme cela.
En ce moment, j’optimise à minima, j’essaye juste de minimiser les appels de fonctions, très gourmandes en ressources CPU effectivement et je court-circuite les tic inutiles, çe qui me permet de limiter la casse. S’ajoute à cela l’usage d’options de compilation qui privilégient la performance et ça passe pour le moment.…
Mais une fois finalisé, je ferai effectivement des optimisations plus efficaces comme regrouper l’affichage des pixels par 8 ou 16…Il y a plein de trucs à tenter. :)
Répondre