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.
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 :)