Skip to content

Kirby Triple Deluxe: Notes #56

@soiryl-pas

Description

@soiryl-pas

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::Functions:

  • 5, for the pause menu and sun stone menu to open
  • 4, 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions