|
#31
|
||||
|
||||
![]()
Basically, PJ64's RSP checks for various things. That error message pops up when SP DRAM DMA address > 0x800000. In that picture it's 0xD06D38.
I'll have to do more testing later, to see what's causing the issue. |
#32
|
||||
|
||||
![]()
RPGMaster, does this mean you're getting the crashing too and not just him? Because for me, it never happens with the RSP interpreter, but he says he has it turned on. All I have to do is stand around and get my ass beat; nothing to it really, no crash.
Quote:
Doesn't really make it an invalid address though...if that happens it just means you read 0 from DRAM (or if writing, the write is NULL). PJ64 could emulate that easily.
__________________
http://theoatmeal.com/comics/cat_vs_internet |
#33
|
||||
|
||||
![]()
I have yet to see it happen in RSP interpreter. So I believe there is a problem with the RSP recompiler. There's quite a few things where the recompiler code doesn't match interpreter. I would have committed more stuff, if I was 100% certain my changes were 100% correct. In particular, MFC0 is not only incomplete, but I also don't like the way it handles exiting, when RSP_MfStatusCount reaches 10. I think there's at least 1 issue in MTC0 too.
Quote:
![]() Edit: I'll wait until some pull requests get accepted, before I continue testing to figure out this issue. Last edited by RPGMaster; 30th January 2015 at 01:31 AM. |
#34
|
||||
|
||||
![]()
The RSP isn't supposed to exit after any number of MFC0 status reads anyway. That's something of a hack in and of itself, so I'm not really worried about how the recompiler does it. You could try raising the MFC0 limit from 10 to 10000 though to prevent it from triggering for games that don't need it.
__________________
http://theoatmeal.com/comics/cat_vs_internet |
#35
|
||||
|
||||
![]()
Sigh, looks like I underestimated the difficulty of tracking down this problem. I don't really know a good way to trace it, since it seems to be sorta random. If there was a consistent way to get the error, without requiring inputs or loading save states, it would be easier to track down. So far, I know that the register responsible for the problem is V0. I also noticed the same value of V0 is always in some random DMEM location. That's all I got so far. None of my experimental changes fixed it ;/ .
Quote:
![]() |