This is just a quick update to let everyone know I've finally figured out why the dynarec wasn't working in Super Smash Bros. The problem has taken a lot longer to identify than I'd hoped - in part because it was a particularly tricky bug but also because I've not had as much time to work on Daedalus recently as I would have liked.
Anyway, I managed to spend a few hours this weekend isolating the problem, and after a little experimentation I've been able to come up with a temporary workaround. With the fix in place SSB is running at around 30-40fps in game on the PSP, which is very exciting.
Now that I've identified the problem my next job is to come up with a permanent, robust solution to help fix similar problems in other roms. I also want to add some improved checks in the debug build to help spot other situations where this problem arises.
For those that are interested I'll post an update shortly (within the next day or so) with some of the technical details.
-StrmnNrmn
Showing posts with label bug fixes. Show all posts
Showing posts with label bug fixes. Show all posts
Sunday, June 10, 2007
Thursday, February 08, 2007
Behold! An update!
Wow, it's been a long time since the last update. A really long time. How did that happen?
I've always found it quite hard to find the time to update the blog. Usually when I have some free time in the evenings (that's free time spent doing things other than eating, socialising, and getting stuff ready for work), the choices I have are:
I'm going to finish off this reintroduction with a broad overview of some of the stuff I've been working on. This is all stuff that will be present in R9, which I'd like to release this month.
There's quite a lot in that list, so I highlighted the two most significant points. In summary R9 will be much faster, with audio support. I'll write a bit more about these changes in particular over the next few days (promise!)
-StrmnNrmn
I've always found it quite hard to find the time to update the blog. Usually when I have some free time in the evenings (that's free time spent doing things other than eating, socialising, and getting stuff ready for work), the choices I have are:
- Do some new development on Daedalus
- Play games/watch TV/relax
- Reply to a few emails/comments, post a new entry here
I'm going to finish off this reintroduction with a broad overview of some of the stuff I've been working on. This is all stuff that will be present in R9, which I'd like to release this month.
- Added support for RGBA 4444 and 5551 textures, saving a bunch of memory in the front end.
- Tidied up all the texture conversion code, fixing a few bugs in the process
- Fixed the width/height of FillRect calls in 1 and 2 cycle mode (fixed a few small graphical issues)
- Fixed a blending bug (fixed a few small graphical issues)
- Use 16-bit textures on the PSP to represent 16-bit N64 textures. Saves time converting, saves memory, and faster rendering
- Added mirrored texture support (this fixes lots of small graphical glitches)
- Fixed a LoadTile bug, allowing a couple of hacks to be removed (this also fixes various small graphical glitches)
- Added some new blend modes for various roms
- Fixed the Tri2 command for F3DLX microcodes
- Fixed a bug in busy-wait detection (this wasn't working correctly with dynarec code, net result is a small speedup)
- Fixed a few dynarec stability issues (relating to exceptions occuring mid-trace)
- Added audio support :)
- Added the ability to dump textures (developer builds only at the moment)
- Fixed screenshots. Again.
- Implemented cmp.s, cvt.s, cvt.w, mtc1, mfc1, bc1f, bc1t, j, cfc1, ctc1, daddu, trunc.w.s, bc1t, bc1f, bc1tl, bcifl, bnel, beql, blezl, bgtzl, bltzl, blezl in dynarec (this gives a decent speedup)
- Avoid setting the branch delay flag and current PC in generated dynarec code unless absolutely necessary (this gives another small speedup)
- Much better memory access handling in dynamically recompiled code (this gives a BIG speedup :)
- Use a second code buffer for generated dynarec code, to avoid polluting the instruction cache (this gives another small speedup)
- Further improve the memory access handling in generated dynarec code (another small speedup)
- Fix register usage analysis for lwc1/swc1/mfc1/mtc1 which was preventing base registers used in these instructions from being cached (another small speedup)
- Have compensation blocks restore nobbled registers, so on-trace code does't need to reload (another small speedup)
There's quite a lot in that list, so I highlighted the two most significant points. In summary R9 will be much faster, with audio support. I'll write a bit more about these changes in particular over the next few days (promise!)
-StrmnNrmn
Subscribe to:
Posts (Atom)