Open Rinnegatamante opened 8 years ago
A link to the affected game would be nice to test this on faster systems.
Basically any single game with a cutscene is affected by this problem. I noticed this problem in Zelda Link's Awakening (where the whole game runs also at pretty low fps but it can be referred to screen tone issue at least for ingame framerate maybe) and in Grimm Adventures ( http://gbatemp.net/attachments/scr_34_combined-png.43660/ )
That's not really a cutscene but just clever event scripting with pictures. Tested this on a 3DS now and I guess it's so slow because for this text animation it has to load one picture per animframe and this is super slow as you already noticed. It's even noticable when a message box appears ingame that it has a delay because loading the Face graphic takes too long :(
This is probably only fixable with asynchronous IO (IO in an extra thread). But this would require changing the whole Player code to achieve this. We already provide Async file access for the web version but that's not suitable because this solved a different problem (waiting for file download), the IO itself is synchrionous. So I don't expect a fix for this in the next months, they have to life with this.
Can't this be mitigated at least with JPG images support for Pictures since libjpeg-turbo is really fast on decoding images? (lpp-3ds for example provides a video decoder based only on libjpeg-turbo for MJPEG decoding that can handle videos at 30 fps without framedrops with CPU software rendering).
The Player doesn't support JPEG and no game uses JPEG.
We should figure out first if it's the file access that is slow or the libpng usage. But I bet it's the access.
When i was working on the video decoder i tried also to use PNG frames instead of JPG ones and at least for lodepng (the decoder i use on lpp-3ds for PNG files), it wasn't able to handle videos with a good framerate cause decoder was SLOOOOOW (it went at like 3-4 fps).
It looks like the interpreter can't handle properly cutscenes. During such scenes, framerate is 0 on both N3DS and O3DS.