I re-wrote a lot of the internal handling of compiled code a few builds ago. This is one of the few games that came off worse for wear for it. I was debugging in to it today to see if I could understand what was going on with the game and why it behaved worse.
I have worked out why the game is worse off. Where in 1.6 I could use protected memory and the game worked great. I currently have to turn on other self modification methods that slow the game down significantly. What the game is doing is it has 3 buffers with code in memory and one virtual address pointing to these code blocks. It constantly is changing the buffer that it points to, so turning on self mod methods detects this change and constantly recompiles these buffers.
What broke it in latter beta builds is that I found the virtual address and said this code already existed and replaced it with the old one. So it had both virtual locations pointing to the same physical location. I had built the original solution on how games like golden eye and conkers bad fur day used the TLB. I am going to re-write some of the function lookup to make use of Physical address as well as virtual address. I hope I should be able to fix this problem in the next beta build. Read here to get access to the beta development of pj64

woah. leading on from this zilmar seems to have just a made a performance breakthrough - which imho we needed - core should be 50% faster (!) for the next build (due sometime next week?), applies to many of the difficult rare games.. maybe he'll post about this too (it lead on from this issue).