StrmnNrmn vient de donner quelques petites informations sur l'avancée de la prochaine version de son émulateur Nintendo 64.
Il précise donc qu'il a longuement travaillé sur le code qui permettra
l'utilisation du Media Engine pour le son. Il a fait de nombreux progrès mais
cela lui a pris plus de temps qu'il ne l'avait prévu. Il ne lui faudra plus
beaucoup de temps pour finaliser car il ne reste, à priori, que deux bugs
significatifs à corriger. Avec un peu de chance, il devrait avoir fini cette
partie en début d'année prochaine.
Il a aussi écrit un 'job manager' permettant de synchroniser les taches entre le CPU (processeur) et le ME (media engine). Il explique ensuite divers points techniques sur la gestion des taches de façon asynchrone par le ME et précise qu'il envisage la même chose pour le traitement des images. A venir sans doute dans une prochaine release.
Voici l'annonce originale pour les curieux anglophones.
Yuletide Update
It's been a while since the last update so I wanted to give some news on how
things are going with work towards the next release.
I've spent a lot of time working on getting the HLE audio code working on the
Media Engine. I've been making steady progress, but it's been taking longer than
I initially expected. Fortunately, I'm very close to getting all of the audio
processing moved over to the ME - in fact I believe I have just one significant
bug left to fix.
The issue seems to be a very odd synchronisation bug which causes the emulator
to lock up when running the audio processing asynchronously. As with many of
these types of bugs, it's proving quite hard to track down because as soon as I
change the code to debug the problem, the issue goes away. A true Heisenbug :(
What's particularly annoying is that the bug is stopping me from measuring how
much of a difference running the audio code on the ME makes. Hopefully I'll be
able to fix the bug over the Christmas break and be able to publish some timings
over the new year.
As part of this work, I've also been writing a general-purpose 'job manager',
which coordinates batches of work between the main CPU and the ME. The idea is
to build on top of J.F.'s MediaEngine.prx to provide a simple interface for
queing up and dispatching work asynchronously. When a job is added to the queue,
a flag indicates whether the job is suitable for running on the ME, or whether
it should just be run asynchronously on the main CPU instead.
Initially just the audio processing will run through the job manager on the ME,
but eventually it should be possible run other pieces of work asynchronously too.
I'm hoping that it will eventually be possible to move parts of the HLE graphics
processing to run asynchronously too, but I need to investigate things a bit
more first. That's a job for future releases however.
Anyway, that's all for now. I'm off to eat mince pies and watch The Great Escape
on tv. Merry Christmas everyone :)
-StrmnNrmn