hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.34k stars 2.18k forks source link

Assassin's Creed Bloodlines flickering geometry with vertex cache on (v0.9.5) #4555

Closed gordonfreeman01 closed 10 years ago

gordonfreeman01 commented 10 years ago

Some geometry flickers fairly regularly (mostly in the far plane, sometimes in freshly loaded higher LOD models such as bridges, etc) when vertex cache is on. Tested on v0.9.5, this can easily be reproduced by loading the first level (skipping the tutorial) and observing the coconut tree as it moves in the wind right at the start of the level. In cities, freshly loaded buildings tend to flicker around the corners (bits of it nodding in and out of visibility). Turning off vertex cache completely solves this issue but I do not know how this would affect other games.

unknownbrackets commented 10 years ago

Well, some games are going to flicker with vertex cache. This also happens to ClaDun and Jikandia. I think one or multiple of the Project Diva games have issues with it too.

We may be able to reduce caching with the vertex decoder jit, which may improve it. Otherwise, the solution is to turn off the cache.

The cache basically works under the assumption that the game will reuse existing vertices every frame. In most cases, we correctly detect when it changes the vertex. But if we checked every single frame, performance would be terrible.

This is similar to the texture cache issue (where text sometimes takes a moment to draw correctly, etc.)

-[Unknown]

gordonfreeman01 commented 10 years ago

Thanks for the details, was wondering about the underlying mechanics at play here :) Maybe a settings db would be useful for automatically setting the compatibility options per game? PCSX2 and PJ64 use this system and given the complexity underlying this excellent emulator I think it would be quite useful especially given the thorough testing the games already have.

unknownbrackets commented 10 years ago

Well, maybe. There are something between 1000-2000 games released for the PSP, including minis and what not. This is a lot more than the 400 or something for the N64, but not as many as the 4000 or something released for the PS2.

I think it's better to try to maximize support for each one before adding hundreds of individual hacks.

-[Unknown]

gordonfreeman01 commented 10 years ago

That is true, I was just thinking that since options like the vertex cache are for general performance and do not seem to be hacks as such and more along the lines of a compatibility setting it could be useful to start building a wiki-powered db maintained by the community of such settings which do not require per game code changes. The emulator is still WIP but it does look like the high level settings have stabilised somewhat.

gordonfreeman01 commented 10 years ago

Closing this issue as it is actually a compatibility setting that needs to be set, not actually an emulation accuracy issue as such.