#1  
Old 31st October 2014, 02:10 AM
RPGMaster's Avatar
RPGMaster RPGMaster is offline
Alpha Tester
Project Supporter
Super Moderator
 
Join Date: Dec 2013
Posts: 2,008
Default Additional Options for RSP

While on my quest to improving game compatibility with LLE graphics in RSP recompiler, I found the reason why Star Wars Rogue Squadron does not work. It is due to the SP_SEMAPHORE_REG implementation and the CPU-RSP synchronization that was needed for games like WDC.

I don't think it's necessary to always force these 2 options on.
Reply With Quote
  #2  
Old 31st October 2014, 10:11 PM
the_randomizer's Avatar
the_randomizer the_randomizer is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Sep 2008
Location: USA
Posts: 1,136
Default

Quote:
Originally Posted by RPGMaster View Post
While on my quest to improving game compatibility with LLE graphics in RSP recompiler, I found the reason why Star Wars Rogue Squadron does not work. It is due to the SP_SEMAPHORE_REG implementation and the CPU-RSP synchronization that was needed for games like WDC.

I don't think it's necessary to always force these 2 options on.
Interesting, shocking how something as minute as that can make a game not work.
__________________
My rig:
CPU: Intel Core i7 4470 3.4 GHz to 3.9 GHz
Video card:: MSI nVidia GTX 970 4 GB GDDR5
OS: Windows 7 Professional 64-bit
RAM: 16 GB DDR3 SDRAM 10600
HDD: 2 x Western Digital 1 TB HDDs
Monitor: 23" Asus Full HD LED

Oh, and Snes9x > Zsnes in every way
Reply With Quote
  #3  
Old 31st October 2014, 10:30 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 the_randomizer View Post
Interesting, shocking how something as minute as that can make a game not work.
Stuff like this seems to be a common issue in emulation. That's why I keep saying, even you could fix things. But I understand that you are more interested in HLE, and given the games you play, I don't blame you. I have an idea for you though. Log on aim when you get the chance .

Anyway I forked PJ64 2.1's RSP yesterday, and started fixing simple problems in that current version. For now I'm simply doing accuracy changes. Don't know if I'll bother with optimizations, especially since it's easy to mess up, and who knows if my changes will be accepted.
Reply With Quote
  #4  
Old 1st November 2014, 12:09 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

They are not "forced options", and there never was any reason to test this game with PJ64 RSP recompiler because it was already broken to begin with. It's only ever been playable on the RSP interpreter plugin, long before the explanation this thread presents.

Nor is there any reason why to not force these two "options" on with the main RSP core as long as nothing is HLE'd, which is already covered by the plugin. So if you don't want timing accuracy, HLE the audio for example so the plugin won't attempt it.
Reply With Quote
  #5  
Old 1st November 2014, 12:38 AM
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
They are not "forced options", and there never was any reason to test this game with PJ64 RSP recompiler because it was already broken to begin with. It's only ever been playable on the RSP interpreter plugin, long before the explanation this thread presents.

Nor is there any reason why to not force these two "options" on with the main RSP core as long as nothing is HLE'd, which is already covered by the plugin. So if you don't want timing accuracy, HLE the audio for example so the plugin won't attempt it.
Well, on RSP 1.7.0.3, Rogue Squadron worked in RSP Recompiler. It even works in ziggy's modified PJ64 1.4 RSP recompiler.

While it's true that enabling HLE audio disables 1 of those options, it's evident that the recompiler implementation for CPU-RSP synchronization is not quite 100% stable. Plus, even I prefer LLE audio sometimes. Depends on the game, really. Even on your interpreter RSP, the intro's graphics are glitched when enabling the Semaphore Lock, when using Jabo's LLE, in Rogue Squadron.

Options are nice to have.
Reply With Quote
  #6  
Old 1st November 2014, 01:16 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

Quote:
Originally Posted by RPGMaster View Post
Well, on RSP 1.7.0.3, Rogue Squadron worked in RSP Recompiler.
It never fully worked.

Used to have talks with zilmar about what it could be that was breaking the RSP recompiler, and yes that was back when RSP 1.7.0.3 was the latest version. I told him it was probably DMA alignment on the recompiler, but he never had time to try it (or at least critique my idea). What exactly it is that's still broken...you would have to check more in-depth to the ROM because I don't remember what zilmar was talking about.

Quote:
Originally Posted by RPGMaster View Post
While it's true that enabling HLE audio disables 1 of those options, it's evident that the recompiler implementation for CPU-RSP synchronization is not quite 100% stable.
Just because the semaphore timing fix being emulated causes the recompiler to crash, doesn't mean it's the "direct" cause. That's another assumption being made here. It's kind of like saying...I fixed my emulator for the SLL (shift left) opcode to shift left instead of right, but now instead of garbled graphics the game just crashes. What you may have found is an indirect effect, not necessarily a flaw in the "recompiler implementation" (not even sure one exists really ?? thought it was just a cheat call to the interpreter logic but correct me if I'm wrong).

Quote:
Originally Posted by RPGMaster View Post
Even on your interpreter RSP, the intro's graphics are glitched when enabling the Semaphore Lock, when using Jabo's LLE, in Rogue Squadron.
What does that have to do with anything? You're not meaning to imply that a visual side effect with correct, accurate RSP emulation when using a bug-prone, unfinished and unstable LLE graphics plugin like Jabo's LLE automatically means that the RSP should have an option to be emulated less accurately?

More like, the RDP should be emulated more accurately. I just tried it and your bug report happened only with Jabo's LLE, not other LLE plugins. So just because breaking RSP emulation timing causes a feedback bug that works in Jabo's LLE's favor, doesn't necessarily mean it needs to become an option.

Quote:
Originally Posted by RPGMaster View Post
Options are nice to have.
They're permanent features to accurate emulation; it was my design choice to implement them as options in my own emulator so that it could work on other emulator cores besides pj64 2.x. Other than that, I saw little purpose to making them as options.

Last edited by HatCat; 1st November 2014 at 01:23 AM.
Reply With Quote
  #7  
Old 1st November 2014, 02:36 AM
RPGMaster's Avatar
RPGMaster RPGMaster is offline
Alpha Tester
Project Supporter
Super Moderator
 
Join Date: Dec 2013
Posts: 2,008
Default

I admit I have made some assumptions here, but I didn't mean to suggest that stripping out accuracy is the way to go in the long run. I was just thinking that at least for now, until everything is fixed, there should be some sort of option to get certain things to work.

I'm merely suggesting a temporary quick fix, since who knows when these problems will actually be fixed. Either way is fine with me, whether zilmar actually fixes the real problems, or implements temporary options. I'm willing to help him out if he wants.

I understand you probably don't like these sort of ideas , which is totally fine by me. I personally implemented it as an option, just for testing purposes and the fact that I don't only use PJ64 2.1.
Quote:
Originally Posted by HatCat View Post
It never fully worked.
Can you elaborate on this? I'm going to try and see what I can fix. I am simply unaware of issues, other than it not being able to get past the intro on versions 1.7.0.4 - 1.7.0.9. Not suggesting you're wrong though.

Quote:
Originally Posted by HatCat View Post
Just because the semaphore timing fix being emulated causes the recompiler to crash, doesn't mean it's the "direct" cause. That's another assumption being made here. It's kind of like saying...I fixed my emulator for the SLL (shift left) opcode to shift left instead of right, but now instead of garbled graphics the game just crashes.
When it comes to recompiler only issues, I generally just blame the recompiler. I'm already aware of quite a few recompiler bugs. So for Rogue not being able to go past the intro, it may not be the direct cause. I still question whether the recompiler implementation is good enough. Quick fixes are just nice, for problems that may not be solved anytime soon.
Quote:
Originally Posted by HatCat View Post
What does that have to do with anything? You're not meaning to imply that a visual side effect with correct, accurate RSP emulation when using a bug-prone, unfinished and unstable LLE graphics plugin like Jabo's LLE automatically means that the RSP should have an option to be emulated less accurately?

More like, the RDP should be emulated more accurately. I just tried it and your bug report happened only with Jabo's LLE, not other LLE plugins. So just because breaking RSP emulation timing causes a feedback bug that works in Jabo's LLE's favor, doesn't necessarily mean it needs to become an option.
I am aware of how Jabo's LLE is not accurate. I did assume that there's a possibility that the Semaphore implementation was not perfectly accurate. When I truly want to make sure I know what's wrong, when it comes to graphics, I use Pixel Accurate plugin as a reference. Really though, the graphical glitches just made me want to investigate the cause. Weird things like that, tend to grab my attention sometimes i guess.

Quote:
Originally Posted by HatCat View Post
They're permanent features to accurate emulation; it was my design choice to implement them as options in my own emulator so that it could work on other emulator cores besides pj64 2.x. Other than that, I saw little purpose to making them as options.
Fair enough .

Quote:
Originally Posted by HatCat View Post
What you may have found is an indirect effect, not necessarily a flaw in the "recompiler implementation" (not even sure one exists really ?? thought it was just a cheat call to the interpreter logic but correct me if I'm wrong).
While it's true that it was mostly just a cheat call to the interpreter function, there's more to it than that, when it comes to recompilers. For example, when setting every recompiler instruction to do a cheat call, it may fix certain games like Super Smash Bros, Gauntlet, Kirby, etc in LLE graphics, but other games like Wave Race and Rogue Squadron are still broken. It's kinda funny how one mistake in SW, caused many games to break and it's been broken for years!

One example of a recompiler implementation flaw in the current source is that they never took account for the possibility that the instruction at 0xFFC could be JR. So that's why Wave Race64 and Star Wars - Shadows of the Empire never worked in LLE gfx, for RSP recompiler. There may be other bugs with branching that I'm unaware of. I need to start focusing more on that.

I need to start dumping some microcode for various games with issues.

Last edited by RPGMaster; 1st November 2014 at 05:50 PM.
Reply With Quote
  #8  
Old 1st November 2014, 12:30 PM
Wally123's Avatar
Wally123 Wally123 is offline
Senior Member
 
Join Date: Jul 2013
Location: Freedonia
Posts: 159
Default

If it helps, I partially solved the brassy noise problem...I mounted my front center stereo speaker on two halves of an empty double pack of Trident White. It took care of the vibration issues, but still sounds a bit brassy in the mid tones. I will experiment with another speaker I have that is a bit larger when I can find a place for it. Maybe an equalizer setting should help a bit.

I for one think it wise to make an RSP plugin that has a menu which allows one to enable or disable certain audio filters. I prefer HLE because it allows for the use of high quality sounds and filters that LLE might not be able to take care of.

I agree with both you and HatCat in that while it is a good thing to accurately emulate the N64, it is also equally important to code PJ64 so that it is working at a palatable speed. It is of my opinion that you are both right and may not realize it...and it is because I see the common ground between accuracy and speed. The controller timing needs to be accurate...the game play timings for each trigger button need to be accurate. However, I also agree that, for now, the rsp audio audio needs to be fast (whether LLE MME or HLE), the graphics need to be able to be tweaked so that people can find what works best for their systems (how could one not want a 4k resolution???).

To be short...I think that we need to focus on how the each of the games feel to play before we jump too heavily into the obsessive machine accuracy that seems to bog down Dolphin quite badly.
__________________
"I find television very educating. Every time somebody turns on the set, I go into the other room and read a book."

~Groucho Marx
Reply With Quote
  #9  
Old 1st November 2014, 12:32 PM
Wally123's Avatar
Wally123 Wally123 is offline
Senior Member
 
Join Date: Jul 2013
Location: Freedonia
Posts: 159
Default

Quote:
Originally Posted by RPGMaster View Post
I admit I have made some assumptions here, but I didn't mean to suggest that stripping out accuracy is the way to go in the long run. I was just thinking that at least for now, until everything is fixed, there should be some sort of option to get certain things to work.

I'm merely suggesting a temporary quick fix, since who knows when these problems will actually be fixed. Either way is fine with me, whether zilmar actually fixes the real problems, or implements temporary options. I'm willing to help him out if he wants.

I understand you probably don't like these sort of ideas , which is totally fine by me. I personally implemented it as an option, just for testing purposes and the fact that I don't only use PJ64 2.1.
Can you elaborate on this? I'm going to try and see what I can fix. I am simply unaware of issues, other than it not being able to get past the intro on versions 1.7.0.4 - 1.7.0.9. Not suggesting you're wrong though.

When it comes to recompiler only issues, I generally just blame the recompiler. I'm already aware of quite a few recompiler bugs. So for Rogue not being able to go past the intro, you're right that it's not the direct cause. Quick fixes are just nice, for problems that may not be solved anytime soon.
I am aware of how Jabo's LLE is not accurate. I did assume that there's a possibility that the Semaphore implementation was not perfectly accurate. When I truly want to make sure I know what's wrong, when it comes to graphics, I use Pixel Accurate plugin as a reference. Really though, the graphical glitches just made me want to investigate the cause. Weird things like that, tend to grab my attention sometimes i guess.

Fair enough .

While it's true that it was mostly just a cheat call to the interpreter function, there's more to it than that, when it comes to recompilers. For example, when setting every recompiler instruction to do a cheat call, it may fix certain games like Super Smash Bros, Gauntlet, Kirby, etc in LLE graphics, but other games like Wave Race and Rogue Squadron are still broken. It's kinda funny how one mistake in SW, caused many games to break and it's been broken for years!

One example of a recompiler implementation flaw in the current source is that they never took account for the possibility that the instruction at 0xFFC could be JR. So that's why Wave Race64 and Star Wars - Shadows of the Empire never worked in LLE gfx, for RSP recompiler. There may be other bugs with branching that I'm unaware of. I need to start focusing more on that.

I need to start dumping some microcode for various games with issues.

The only issue I have with SSB is that the PS2 Dualshock Controller's design is not at all suitable for it. It works perfectly fine for me.
__________________
"I find television very educating. Every time somebody turns on the set, I go into the other room and read a book."

~Groucho Marx
Reply With Quote
  #10  
Old 1st November 2014, 12:34 PM
Wally123's Avatar
Wally123 Wally123 is offline
Senior Member
 
Join Date: Jul 2013
Location: Freedonia
Posts: 159
Default

I think that Jabo's LLE graphics is inaccurate because it was meant to be that way so the widescreen hack would work properly. Too bad Jabo's is an utter pain to get hi res textures working.
__________________
"I find television very educating. Every time somebody turns on the set, I go into the other room and read a book."

~Groucho Marx
Reply With Quote
Reply

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 09:22 AM.


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