-
-
Notifications
You must be signed in to change notification settings - Fork 34
Description
I'd like to share some experiences when playing Kirby Triple Deluxe (EU) on Mikage, I hope it's useful!
I've tried a Debug build, Release build and Release build with -Ofast -march=native -mtune=native -funroll-loops
to compare. The latter two actually only have minute differences in performance, so I'll just clamp them together as "Release".
Nicely enough, the game runs for the most parts with 60fps for me on Release! However, there is a heavy performance hit in the levels, as when progressing through levels, the frame rate drops to 20fps. Interestingly, this frame rate drop is pretty continuous and from what I could test, it's connected to level progression, not time spent ingame/rendering. With Tracy, I can see that GPU Emulation
Zone takes longer and longer to finish, and in the default logs, there can be flocks of 15+ TRACE: Waiting for vertex buffer memory to be free again
lines, so I presume it has something to do with the vertex buffer. Also, when opening the pause menu or touching the Miracle Fruit in the first level for the Hypernova cutscene, it immediately recovers to 60fps, until it resumes with the level, where it drops to the same fps as before.
Crucially, the game needs not yet implemented Pica::AlphaTest::Function
s:
5
, for the pause menu and sun stone menu to open4
, for the first door in the second level
When implemented in shader_gen.cpp
and pica.hpp
according to https://docs.mikage.app/GPU/Internal_Registers/#gpureg_fragop_alpha_test, everything just works neatly out of the box afterwards. I wasn't sure whether these little changes are worth a PR, especially as I thought there could be a reason for these missing right now, so I'm mentioning it here.
As for graphics and audio, I think it's rather likely that there's something wrong with my dependencies, but SDL software rendering and enabling audio don't work for me, only vulkan rendering does. SDL software rendering will only render the last frame and freeze on it, until I switch to vulkan with the 7 key. There's also expectedly some amount of graphical glitches, which like to occur frequently but inconsistently, where I'm however also really not that sure of how much is caused by the application renderer in contrast to my dependencies and my hardware.
As for consistent graphical glitches, the opening cutscene only shows a blob of coloured pixels, similar to #54. From my limited experience with GBA and DS, I would've guessed that there is a mismatch in the Screen-Colour-Format used by the game and expected by the emulator, but the graphics pipeline on 3DS works pretty differently, so that's really just a very wild guess. (Edit: This is due to Y2R, SetReceiving appears in these cutscenes a lot in the logs)