Go Back   Project64 Forums > Public Version > Project 64 - v2.x - Issues

Reply
 
Thread Tools Display Modes
  #31  
Old 29th January 2015, 11:58 PM
RPGMaster's Avatar
RPGMaster RPGMaster is offline
Alpha Tester
Project Supporter
Super Moderator
 
Join Date: Dec 2013
Posts: 2,008
Default

Quote:
Originally Posted by HatCat View Post
Looks normal, the DMA register values I mean.
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.
Reply With Quote
  #32  
Old 30th January 2015, 12:33 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,236
Default

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:
Originally Posted by RPGMaster View Post
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.
Oh yeah you're right. I forgot 0xD06D38 assumes the presence of 16 MB of RDRAM, and Project64 only allows you to allocate up to 8 MB RDRAM (conventional N64 expansion pak accessory).

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.
Reply With Quote
  #33  
Old 30th January 2015, 01:04 AM
RPGMaster's Avatar
RPGMaster RPGMaster is offline
Alpha Tester
Project Supporter
Super Moderator
 
Join Date: Dec 2013
Posts: 2,008
Default

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:
Originally Posted by HatCat View Post
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.
Oh I didn't know that was valid. I just assumed if I saw that error, it meant something bad . So I guess BattleTanx read's 0's. I saw the error message happen even in CPU interpreter for that game. I guess DMA needs work then. zilmar made it so that when SP DRAM DMA address > 0x800000, it exits the DMA function.

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.
Reply With Quote
  #34  
Old 30th January 2015, 01:47 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,236
Default

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.
Reply With Quote
  #35  
Old 31st January 2015, 01:22 AM
RPGMaster's Avatar
RPGMaster RPGMaster is offline
Alpha Tester
Project Supporter
Super Moderator
 
Join Date: Dec 2013
Posts: 2,008
Default

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:
Originally Posted by HatCat View Post
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.
I know it's a hack. I bet that's why WDC save states are unreliable. I read about yeilding in the docs. It was a good read . I'm going to have to look more closely at certain instructions like MTC0. Good idea about raising the limit, I'll try experimenting with it again.
Reply With Quote
Reply

Tags
evangelion

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT. The time now is 01:10 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.