StrmnNrmn on the Daedalus SSB dynarec bug

 Daedalus - Image 1 

For those who have been waiting for another Daedalus update from StrmnNrmn, you’re in luck. The intrepid retro console dev has released another update on the Super Smash Bros. Dynarec bug on Daedalus. The post is on the uber long side so we’ll do our best to translate some of the juicy stuff for you.

In his last update, StrmnNrmn discussed the use of a fragment simulator to track down bugs and in this post, he discussed another tool he uses to track down problems. He discussed a “special synchronization mode” where modes can be used: producer or consumer. He also touched on the subject of using a synchroniser that can tell you where the codes have gone out of whack. According to him, he used macros to put a set of sync points on Daedalus to determine the problem with Super Smash Bros.

Anyway, he detailed his methods in tracking down the bug and in the end, found out that the problem wasn’t with Daedalus at all, but with the Super Smash Bros rom. Here’s a bit of what he said:

Getting back to SSB, it looked like I had found the root cause of the problem – somehow the rom was replacing the instructions in memory, essentially a form of self-modifying code (it’s more likely it was just loading a new section of code into RAM from ROM, but it’s still essentially self-modifying). The dynarec system was oblivious to these changes and so it ended up trying to execute stale instructions that it had cached when creating the fragment, potentially many thousands of cycles ago.

As it turns out, the problem wasn’t a Daedalus thing but still, StrmnNrmn promised that he’s going to find a work around. Stay tuned for that issue of Debugging and Emulation 101.

 Daedalus - Image 1 

For those who have been waiting for another Daedalus update from StrmnNrmn, you’re in luck. The intrepid retro console dev has released another update on the Super Smash Bros. Dynarec bug on Daedalus. The post is on the uber long side so we’ll do our best to translate some of the juicy stuff for you.

In his last update, StrmnNrmn discussed the use of a fragment simulator to track down bugs and in this post, he discussed another tool he uses to track down problems. He discussed a “special synchronization mode” where modes can be used: producer or consumer. He also touched on the subject of using a synchroniser that can tell you where the codes have gone out of whack. According to him, he used macros to put a set of sync points on Daedalus to determine the problem with Super Smash Bros.

Anyway, he detailed his methods in tracking down the bug and in the end, found out that the problem wasn’t with Daedalus at all, but with the Super Smash Bros rom. Here’s a bit of what he said:

Getting back to SSB, it looked like I had found the root cause of the problem – somehow the rom was replacing the instructions in memory, essentially a form of self-modifying code (it’s more likely it was just loading a new section of code into RAM from ROM, but it’s still essentially self-modifying). The dynarec system was oblivious to these changes and so it ended up trying to execute stale instructions that it had cached when creating the fragment, potentially many thousands of cycles ago.

As it turns out, the problem wasn’t a Daedalus thing but still, StrmnNrmn promised that he’s going to find a work around. Stay tuned for that issue of Debugging and Emulation 101.

Add a Comment

Your email address will not be published. Required fields are marked *