Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New fb validity check #428

Closed
wants to merge 25 commits into from
Closed

New fb validity check #428

wants to merge 25 commits into from

Conversation

gonetz
Copy link
Owner

@gonetz gonetz commented Apr 27, 2015

No description provided.

gonetz and others added 22 commits March 21, 2015 22:59
Custom game section format:

[%Romname%]
%section_name%/%parameter%=%value%
...
%section_name%/%parameter%=%value%

Romname is the internal rom name. You may get it from Project64.rdb file. Rom may have different internal name for different regions. In that case the section must be duplicated for each internal name.
IMPORTANT: replace all spaces ' ' in the name by underscores '_'.

File contains custom setting for Rayman 2. Use it as example.

Supported custom settings:

video/multisampling

texture/maxAnisotropy
texture/bilinearMode

generalEmulation - all, 

frameBufferEmulation - all

bloomFilter - all
Update GLideN64.ini NVIDIA-Optimized
…deN64 into Predator82Germany-custom_ini

Conflicts:
	GLideN64.ini
All Japanese ROMs (No-Intro) added & little fixes
- general settings - GLideN64.ini
- custom game settings - GLideN64.custom.ini

custom.ini file is read only.

Important: Checksum for Japanese roms are converted to upper case for uniformity.
Checksums with lowercase characters will not work!
Note: depth buffer copy is on by default, so these changes are redundant.
Its made only to emphasize that this setting is essential for correct work of the mentioned games.
@Predator82Germany
Copy link
Contributor

[MARIOGOLF64]
Good_Name=Mario Golf (E)(J)(U)
frameBufferEmulation\validityCheckMethod=0

[MARIOTENNIS]
Good_Name=Mario Tennis (E)(U)
frameBufferEmulation\validityCheckMethod=1

[MARIOTENNIS64]
Good_Name=Mario Tennis (J)
frameBufferEmulation\validityCheckMethod=1

[MICKEY%20USA%20PAL]
Good_Name=Mickey's Speedway USA (E)
frameBufferEmulation\validityCheckMethod=0

[MICKEY%20USA]
Good_Name=Mickey No Racing Challenge (J) / Mickey's Speedway USA (U)
frameBufferEmulation\validityCheckMethod=0

[THE%20LEGEND%20OF%20ZELDA]
Good_Name=The Legend Of Zelda - Ocarina Of Time (E)(U)(J)
frameBufferEmulation\validityCheckMethod=1

[ZELDA%20MASTER%20QUEST]
Good_Name=The Legend Of Zelda - Ocarina Of Time - Master Quest
frameBufferEmulation\validityCheckMethod=1

@gonetz
Copy link
Owner Author

gonetz commented Apr 27, 2015

If a game works with no difference for any validityCheckMethod option, it's better to remove that setting from custom settings for this game at all.

validityCheckMethod=1 for Zelda OOT is essential with no doubt.
Have you checked other games, which had validityCheckMethod = Fill RDRAM with other options?
May be Zelda is the only bad case which need it? It would be great, because Fill RDRAM is dangerous.

I'd like to get results for #410 and #416
@purplemarshmallow, where are you?

@purplemarshmallow
Copy link
Contributor

I commented in #416 looks like validityCheckMethod = Fill RDRAM is needed but I think it's safe

@Predator82Germany
Copy link
Contributor

Have all tested which have validityCheckMethod in custom.ini but not Pokemon

@purplemarshmallow
Copy link
Contributor

Fill RDRAM seems to work much better now. I tested #323 but I can't reproduce a crash with the latest build. But it would be risky to use it for every game.

@purplemarshmallow
Copy link
Contributor

But fingerprint method works really good. Only 2 games seem to have a problem with it. Zelda OOT and Pokemon Stadium 2. I can't find any other games.

@baptiste0602
Copy link
Contributor

@Predator82Germany : For Mario Tennis, Fill RDRAM is useful to fix some shadows.

With fingerprint :
image

With fillRDRAM :
image

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

Let me summarize feedback from this thread and from #416

  1. Fill RDRAM is the most reliable method for detection frame buffer validity. purplemarshmallow also found that it's current use does not cause crash in games which crashed before. I guess that this improvement is caused by the fact that I use Fill RDRAM only for auxiliary frame buffers in that version. Main frame buffers are checked using pure Copy RDRAM method, which is safe.
  2. Fingerprint gives less reliable result. Again, fingerprint method is used only for auxiliary frame buffers.
  3. Plugin still can detect height of auxiliary buffer wrong. Fill RDRAM will cause crash in that case. We don't find such cases, but I can't believe that my code can handle all possible cases. N64 games are very insidious. Fingerprint fills only 2% of buffer area and thus has very little chance to spoil program data in RDRAM.

Conclusion: in fact, I've implemented 2 different methods for validity detection of auxiliary frame buffers: fill and fingerprint. Validity detection for main frame buffers silently uses safe copy method only. Thus, we need only these two methods in GUI. 0 for fingerprint, 1 for fill RDRAM
Since fingerprint is more safe and works fine for most games, I suggest to use it as the default one.
Few games, namely Zelda OOT , Mario Tennis and Pokemon games will get validityCheck=1 (fill) in custom ini. validityCheck option must be removed for other games in custom ini.
That solution will make the project most compatible and safe.

If everyone agree with me, let's finish that work and push it to release level.
I'll correct code and GUI.
@purplemarshmallow, @Predator82Germany and @baptiste0602 : please prepare custom.ini, which I can pull, check and push to release branch.

When we finish with that work, testing can be continued: set validity method to fill in GUI and test as many games as possible. If no crash or other bad things will happen, we may use Fill as main and only method for validity detection of auxiliary frame buffers, and remove that option at all. That would be great.

@purplemarshmallow
Copy link
Contributor

Fill RDRAM causes a fatal error with knockout kings 2000
The framenuffer effect still does not work #350

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

:(

@Predator82Germany
Copy link
Contributor

Same crash message like with Donkey Kong 64 (E) #355 & #358

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

@Predator82Germany - does it crash with any option, or only with Fill RDRAM?

@Predator82Germany
Copy link
Contributor

Have all off & only fill on (crash) with fingerprint it works

New bad news: F-Zero X crash after cup select (all regions) with both validity checks

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

Ok, now we know cases, where Fill does not work. Since Fingerprint is default, it's not a problem.
We may force set it for the games, which crash with Fill option for safety.

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

I'll check F-Zero

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

Stupid mistake in my yesterday fixes. Will be fixed and uploaded soon

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

F-Zero fixed

@Predator82Germany
Copy link
Contributor

May we should force all knowed settings to get the best result for users, so they can do nothing wrong if they change settings in gui

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

Users still able to shot themselves in a leg if they want to: custom ini use is optional.

But the idea is good. What you suggest to add to custom settings?

@Predator82Germany
Copy link
Contributor

In this thread
http://gliden64.boards.net/thread/93/gliden64-custom-game-settings
I´ve stored all required settings for most playability til today
When something should forced than this

@Predator82Germany
Copy link
Contributor

You´ve send the wrong file?

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

When? Which one?

@Predator82Germany
Copy link
Contributor

F-Zero X fix has sam date / time how before

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

It is not so in my archive. dll file has CRC32=2B773240

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

Try download again

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

I downloaded the archive. It is correct.

@Predator82Germany
Copy link
Contributor

GLideN64_new_validity_check_final is filename
Have E0A43419

@purplemarshmallow
Copy link
Contributor

F-zero x still crashes with f zero x fix
so I think it's the wrong file

@Predator82Germany
Copy link
Contributor

lol we should report plugin errors & get download-isues :D

It´s quiet too quiet ...

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

Reuploaded

@Predator82Germany
Copy link
Contributor

Works

@gonetz
Copy link
Owner Author

gonetz commented Apr 28, 2015

As expected :)
No idea, what was wrong with previous upload.

@Predator82Germany
Copy link
Contributor

May filename
Before Knockout Kings 2000 crash the Rumble-Pack message disappears may its a rumble issue & not fill-fail (I´m dreaming :D)

Edit: Should I create such a *.ini or you´ll first thinking about it?

@gonetz gonetz closed this May 2, 2015
@gonetz gonetz deleted the New_fb_validity_check branch May 2, 2015 12:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants