Project64 Forums

Project64 Forums (http://forum.pj64-emu.com/index.php)
-   Project 64 - v2.x - Issues (http://forum.pj64-emu.com/forumdisplay.php?f=2)
-   -   Tricky unexpected behavior (http://forum.pj64-emu.com/showthread.php?t=5023)

tony971 29th April 2015 03:05 PM

Tricky unexpected behavior
 
HatCat, AIO, and I have been trying to pin down the cause of some issues I've been having with builds since the 2.1 release (haven't exactly tracked down which commit caused it). Here's what's going on:

Playing Zelda OoT will spawn CN64System:RunRSP - Unknown memory action errors. They happen at various times, but they're not random. They're setting dependent.

This is when I can expect the errors:
http://i.imgur.com/4cewdKC.png

Now the extra tricky part is that this seems to be computer dependent. I gave my compiled version of pj64 to both HatCat and AIO and they were unable to reproduce my errors. I've tested on two Windows 8.1 machines with Ivy Bridge/Haswell CPUs. The Ivy Bridge also uses a discrete Nvidia GPU. I compiled using Visual Studio 2013 and the VS2013 makefile (on each machine). Any idea what it might be?

HatCat 29th April 2015 03:46 PM

Quote:

Originally Posted by tony971 (Post 61748)
HatCat's fork of angrylion's RDP also causes the error at ROM boot with both the stock RSP and HatCat's RSP.

Wouldn't that mean you get the error with other LLE graphics plugins, e.g. Jabo's D3D8 LLE with my rsp?

retroben 29th April 2015 05:41 PM

How well does GlideN64 run the two Zelda games compared to the powerful Jabo 1.6.1 plugin?
Maybe theboy181 could make a video or two showcasing both Zelda games with GlideN64 using various parts of the games like activating the lens of truth and a few other problem areas that affect other plugins.

The 1.6.1 version of the Jabo plugin runs both Zelda games pretty much flawlessly with even the after-image effect on Majora's title screen.

RPGMaster 29th April 2015 08:19 PM

Quote:

Originally Posted by HatCat (Post 61750)
Wouldn't that mean you get the error with other LLE graphics plugins, e.g. Jabo's D3D8 LLE with my rsp?

Well, all variants of Angrylion's plugin can't run Super Smash Bros with Protect Memory enabled, yet other LLE plugins can.
Quote:

Originally Posted by tony971 (Post 61748)
Now the extra tricky part is that this seems to be computer dependent. I gave my compiled version of pj64 to both HatCat and AIO and they were unable to reproduce my errors. I've tested on two Windows 8.1 machines with Ivy Bridge/Haswell CPUs. The Ivy Bridge also uses a discrete Nvidia GPU. I compiled using Visual Studio 2013 and the VS2013 makefile (on each machine). Any idea what it might be?

Certainly I know that it's a CPU recompiler issue with Protect Memory. The message is supposed to show for everyone, but for some unknown reason, it doesn't.

HatCat 29th April 2015 08:38 PM

Must be that they're not fully buffering the RDP command FIFO data then.

After all, the more you HLE something, the less dependencies it has on other components of the emulator being done properly.

HatCat 29th April 2015 08:40 PM

Quote:

Originally Posted by RPGMaster (Post 61761)
The message is supposed to show for everyone, but for some unknown reason, it doesn't.

Could it by any chance be related at all to the fact that zilmar thinks error messages and failures are only important information to testers who Enable Debugger as a run-time option in the binary?

tony971 29th April 2015 11:50 PM

Quote:

Originally Posted by HatCat (Post 61750)
Wouldn't that mean you get the error with other LLE graphics plugins, e.g. Jabo's D3D8 LLE with my rsp?

Actually, Jabo's D3D8 LLE doesn't get the error at all with your RSP. (at least at the known fail points)

tony971 30th April 2015 01:28 AM

Here's the extent of my testing. This is a chart of when I'll get the error:

http://i.imgur.com/4cewdKC.png

RPGMaster 30th April 2015 07:15 PM

Quote:

Originally Posted by HatCat (Post 61762)
Must be that they're not fully buffering the RDP command FIFO data then.

After all, the more you HLE something, the less dependencies it has on other components of the emulator being done properly.

Hmm, I might try debugging Super Smash Bros, to see where it crashes, with Angrylion's plugin.
Quote:

Originally Posted by HatCat (Post 61763)
Could it by any chance be related at all to the fact that zilmar thinks error messages and failures are only important information to testers who Enable Debugger as a run-time option in the binary?

I don't think so, because I always have Enable Debugger on. I highly doubt zilmar would prefer it being hidden (unless he knew all along and couldn't be bothered to fix it :p ). He could have done a better job hiding it, if that was honestly his intention. Since hardware seems to be a factor, I doubt it's intentional. Also, tony already sent us his folder, so that eliminates the possibility of it being related to settings. I just think PJ64's error detection code is faulty. It reminds me of instances where DisplayError didn't work ;/ .

The key issue is that RDRAM access during SP_DMA is blocked (due to Protect Memory), when it's not supposed to be blocked.

If you want to always be aware of the problem, just put the SP_DMA_WRITE function inside of
Code:

__try{
    //SP_DMA_WRITE goes here
} __except(EXCEPTION_EXECUTE_HANDLER) {
    DisplayError("SP_DMA_WRITE");
}


HatCat 1st May 2015 02:00 AM

Quote:

Originally Posted by RPGMaster (Post 61785)
If you want to always be aware of the problem, just put the SP_DMA_WRITE function inside of

mk will do.


All times are GMT. The time now is 12:38 PM.

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