Banz99 / Final-Fantasy-Type-0-Hd-Unlocker

Asi plugin that inject custom resolutions and framerate into the game.
43 stars 3 forks source link

Soft lock in Chapter 3 at 60fps #12

Open okHowl opened 1 year ago

okHowl commented 1 year ago

When in the magitek section towards the end of the level, the game will not spawn the second solider to pilot the MA, resulting in a softlock. (Order is Initial MA-> 1st soldier -> second soldier never spawns)

reproduced 3 times at 60, switched to 30 spawn happened normally and was able to progress. Running at 720p on Steam Deck

Banz99 commented 1 year ago

Ugh, this thing really seems to never end. Can you try the previous release and tell me if it happened as well?

okHowl commented 1 year ago

I downloaded the fifth release to try, but I encountered Issue #7 of the door just before the MA room not fully opening

okHowl commented 1 year ago

Wasn't sure if I should open a new issue or not since I've encountered technically the same problem. At the end of the first section of the first mission of Chapter 5 when you have to secure the area so the airship will return, the game won't spawn the Dracobaltians after the initial Wingverns, softlocking the game. Switched to 30fps and it worked. Maybe something wrong with scripted enemy spawns?

Banz99 commented 1 year ago

It's not really a matter of enemy spawns per se, the stuck door had the same core issue. Basically the game is coded to have some actions be X frames long. That translates to a certain timing at 30fps, and another at different framerates. My problem is that I can't simply adjust X to be double at 60, or quadruple at 120, that softlocks the game as early as the beginning cutscene, because sometimes X isn't actually a number of frames but some other counter that needs updating without being increased. I tried to make some logic for distinguishing when it is, but it's flawed in some places. What you're experiencing is probably the Dracobaltians being spawned outside the screen and not being able to enter the area. The ideal solution would be to intercept the read from game files when it's actually a counter, but I haven't managed to do it so far.