So I'm new here and I just 100% this game (KHFM not the others), troubleshooting my way through, so I thought I should post here and let people know how I solved the various issues I encountered. If I need to change anything to follow the rules of the forum, please let me know. I used Rpcs3 build 0.0.4-7170 for this game.
First and foremost: My Build
i7-7700k @ 4.8GHz
x2 GTX 970
16 GB DDR4 RAM @ 3200MHz
Emu and games on SSD
OVERALL SETTINGS I USED:
CPU
PPU/SPU: recompilers (LLVM & ASMJIT respectively)
SPU threads: auto
Firmware: load liblv2.sprx only
additional: none
GPU
Renderer: Vulkan
Aniso: 16
Default Res: 1920x1080
Res Scale: 100%
Res Scale Thresh: 128x128
additional: none
I also have my Maximum Pre-Rendered Frames set to "1" and triple-buffering turned off in my nvidia driver settings, I have them set to this on all games to reduce input lag and never changed them, so IDK if they influence any of the issues below (whether alleviating or aggravating), but there they are.
Notes:
* SPU/PPU: all settings load, only precise spu interpreter had any issues (severe audio stuttering)
* SPU threads: all work fine, lower might be faster but I never noticed
* firmware: either the load liblv2.sprx only or auto worked just fine
* I never used any additional options except the loop detection and I found it was more stable with that off
* Either Renderer is fine, I found Vulkan to be faster, never tested DX12
* Anisotropy had 0 impact on stability
* Default Res impacts specific issues outlined below, same with Res Scale:
* If you use Res Scale: make sure you LOWER the threshold by an equal about (you can just set it to 1x1 in my experience to avoid issues) so that menus and shadows load correctly
* DO NOT USE GPU SCALING WITH VULKAN, its a time bomb, you'll freeze eventually, whether its 5 seconds, or 5 minutes, but it never takes too long. Its fine to use with OpenGL.
* Write Color Buffers is used to load Jafar and Atlantica (along with other settings, detailed below) but otherwise just slows your game down.
* Vsync kinda sucks, I think its trying, but not even driver forced Vsync seems to eliminate tears fully and constantly, maybe playing in windowed instead of fullscreen changes things.
To get from the game selection screen to the specific game, there are two ways to do this. Use Vulkan and the settings I used (I think vulkan is all that's necessary, but I never got it to work 100% of the time could be res or res scale related too), or use the boot self/elf option and select the "kingdom.self" file from .../ps3game/usrdir folder. I used the latter method every time because it was faster; don't need to watch the copyright and title card sequences twice now do I?
60 FPS ISSUES:
So I used the 60 fps code (1020D1017 value:0) in cheat engine throughout most the game except for the times it broke the game, which were:
- Sometimes on Agrabah and Deep Jungle, when opening a chest or moving between screens in the cave of wonders the game screen goes black (except the HUD) and you are forced to restart the game (I seem to remember this happening very occasionally on monstro as well but it happened on Agrabah and Deep Jungle constantly, esp in Cave of Wonders and Hippo Lagoon)
- Every time performing a red or green trinity the game crashed at the white screen transition before the animation starts
- Voice acted cutscenes sometimes started the next line (I'm guessing its just the next audio file) way too early, like earlier than even twice as fast.
- Gummi missions ran at double speed, not really game breaking, in fact I enjoyed this "feature"
- On Halloweentown, the lantern elevators that take you between areas will run at double speed at 60fps, also you will crash while trying to load the next area at 60fps
- Also on Halloweentown, sometimes using the grave doors which take you between areas will crash the game at 60fps
- Text menus and conversations run at double speed, just another "feature"
- interestingly, save menus and title screen run at double speed even though they natively run at 60fps, hurray for "features"!
- Lights in general flicker at 60fps, not all of them, but you notice it every once in a while, mostly noticed at Tritons palace and Zone 3 of Traverse Town, write color and opengl reduce this slightly.
- In general it seems if your game gets stuck at a black or white screen (NOT just an image like with atlantica) then just try again at 30fps. On deep jungle after all the chests were opened I was able play at 60 for the rest of the game.
MONSTRO ISSUES:
When in any area except the mouth, you might get texture mapping erros, ie black lines or blocks between the different textures. From what I can tell just by observing, it seems like the texture just aren't the right size to fill in the rendered world.
The fix seems to confirm this to me. Use render scale at 100% with default threshold (or just use strict rendering for less clicks) and load in whatever resolution you want with the default res option. (I played at 1080).
Another issue I observed was during voice acted cutscenes, during visual transitions, sometimes the screen would go black, showing only a single texture in the upper left corner (a monstro intestinal texture). It would resolve itself during the cutscene and seemed to happen mostly when the cutscene cut to pinnochio. It didnt happen every time it cut to pinnochio and it didn't happen to only pinnochio. But when it happened it was almost always when the scene cut to pinnochio. I think what's happening is the game is using a fade transition and the emulator, for whatever reason, instead of just using a blank buffer, its using a single texture file, and then gets stuck until the next fade. Only problem here is a less enjoyable cutscene, doesn't affect gameplay.
The last monstro related issue, which I think is related to the last one, is it seemed like the intestinal texture kinda got stuck in the buffer or cache or something, because when I went to 100 acre woods after monstro, the river on the swing map had repeating translucent monstro textures flowing with ripples, instead of just regular blue water. Restart (not soft reset, either way save first) fixes this, which is why I think its cache or buffer related. It doesn't affect gameplay or stability but is an eyesore.
ATLANTICA/JAFAR ISSUES:
The issue here, of course, is the emulator seems to just present the last frame before you last opened the save/gummi menu while game is still being rendered behind it, it even has the stretching "underwater" effect on that frame when loading into Atlantica.
First time I loaded Atlantica(and Genie Jafar) I used these settings, I dont' think all of them were necessary, because I was able to reproduce with different settings when I returned later:
CPU
PPU/SPU: Recompile
Threads: 1
Firmware: automatically load libraries
additional: none
GPU
Renderer: Opengl
Default Res: 1280x720
additional: Write color buffers/use gpu texture scaling/strict rendering/disable vertex
Every other time I tried to load this world these settings worked:
CPU
PPU/SPU: Recompiler
Threads: auto
Firmware: load liblv2.sprx only
additional: none
GPU
Renderer: Vulkan
Default Res: 1280x720
additional: Write color buffers/strict rendering
The settings that seemed to matter to get in to the world seemed to be write color buffers/strict rendering/default res (720p) everything else seemed to be your own preferences provided they worked on earlier worlds. If those don't work try the first set of settings I used, failing that, cry.
Additionally, once you're in the world and save the game, you can change your settings how you see fit, the only exception I found was I could not use default res 1080p, however I COULD default 720p but turn strict rendering off and use 150% render scale to still play at 1080p.
For agrabah I used the same settings as for atlantica the first time (with opengl) But since the bug had the same symptoms I suspect the second set of settings I used would work too.
The second time I went to Hollow Bastion, using the bubble to get the previously inaccessible underwater chest at the beginning of the world caused the same bug as with Jafar/Atlantica, and the same settings fix it, I'm not sure if the other bubbles can experience this bug or not, but I'd just use the atlantica settings until you're done with the Gateway of the World and Waterway sections.
Related to this, anytime a "spacial warp" effect was used (dark portals, xemnas) a similar affect was seen, but only within the "ripples" and distortion fields, I'm assuming the settings wouldfix it but I never bothered to test.
TRAVERSE TOWN:
This:
https://thumbs.gfycat.com/EcstaticLividF...mobile.mp4
That weird black frame with white objects is not at gif encoding or video recording artifact, that happens in the render.
This is the still image of the problem:
https://i.imgur.com/lYEFGVQ.png
Mostly experienced with the accessory shop (both with and without Cid) but seen with the other shops as well. Sometimes that frame would look worse or last a few frames longer (esp at 60fps), but never gets stuck at this frame.
I never found a resolution for this, doesn't really affect gameplay that much, just jolting.
END OF THE WORLD:
None of the bugs above were experienced at The End of the World, even the Atlantica terminus loaded just fine using my preferred settings.
HOWEVER, in the final cutscene, when it's supposed to show all the sepia tone pictures showing Riku's and Sora's friendship and childhood, it gives the Atlantica bug, I never tried again with Atlantica settings, but I assume it would resolve this, I think the several and rapid white fade transitions cause this problem, but honestly I'm not a programmer, so I'm just postulating. Again, doesn't affect gameplay.
Closing Notes:
In general this game ran great, rarely experiencing fps dips (never dipped when playing at 30fps) using my preferred settings. OpenGL would dip with either complex enemies/animations or with several simple enemies. Write color buffers also dips with vulkan sometimes. But other than these caveats, and the issues above, this game was very stable and smooth and with workarounds you can 100% this game. It ran at a smooth 60fps 1080p throughout the vast majority of the game, 4k had performance issues on my system, but was also at 60fps about half the time, 8k ran at a "smooth" 30 fps with some dips. these performance dips are probably because of the 970s and their awesome memory partition issues, I assume 980+ and 1060+ wouldn't have as bad performance.
Sidenote: The opening cutscene had a giant black bar cover the bottom third of the screen, idk what causes this, I didn't try very hard to work around this, only tried 2 different res scale settings with no difference found, but in hindsight, I might have had the default res at 1080, so I might have actually changed nothing in effect xD I never experienced problems with pre-rendered cutscenes again though (I think the ending cutscene is the only other one? Maybe the secret endings too?).
And there's my big long post about the stability of Kingdom Hearts Final Mix on this emulator.
TL;DR: Use strict rendering/1280x720/write color buffers to load Atlantica/Jafar/Hollow Bastion bubbles, if game freezes at black screen w/ or w/o HUD (opening chests or moving b/w areas) or white screen (red/green trinity's) try again w/ 30fps, use 30fps for voice acted cutscenes, don't use res scaling for monstro, don't use gpu scaling with Vulkan, and finally use 30 fps for lantern elevators and grave doors on Halloweentown.
Pro Tip: you can use hotkeys with the CheatEngine to set the values of codes, just right click the code, click change hotkeys, set your keybinding, select "set value to:" from the drop down and then enter the value into the field. If you set a hotkey to set the value to "1" and another to set the value to "0", you switch between 30fps and 60fps without even alt-tabbing by hitting your hotkey (1 for 30fps and 0 for 60fps)