Victory and Defeat motions (Patreon)
Content
Not every bit of work that goes into making Beach Paradise/Gravure Studio is all that glamorous. A lot of it is very tedious. This is one such case. I'd like to give you all a brief window into what working on this project looks like sometimes.
Motion Data Tool, by Doutoko, viewing a Defeat motion
This is a tool for viewing scene data. It handles model animation data, lighting configurations, sound effects, cuts and camera data, and lots more that I'm aware of and unaware of.
The tool maker, Doutoko, helpfully labelled certain functions that he discovered the utility for, like the frame count used for timing functions, the start flag, sound flags, etc.., but many functions are still unknown and unlabeled. I'm no programmer like he is, but the reality is that even with a wealth of programming expertise, discovering functions and code for a game without the source code is ultimately a practice in trial and error.
A different tool maker, Fallingcat, creator of Autolink, implemented a 60fps flag to movies at my request, when a Tumblr user (way back when I used Tumblr!) helped me by discovering the address for the function that toggles 60/30 fps cap in cheat engine. This allowed Fallingcat to implement it because like I said, finding such functions is largely a process of trial and error, and the person who found the 60fps flag did so by just toggling address bytes and seeing what happens, and for that, god bless him.
However, by uncapping the framerate to 60fps, it caused movies that were designed for 30fps to play at 2x speed. I bypassed this problem by exporting all new Beach Paradise/Gravure Studio scenes at 60fps. However, I didn't want to re-export every single Victory/Defeat scene for a couple reasons. One is that it would be a lot of annoying work to solve a problem that ultimately doesn't affect the main feature I'm focused on, which is new scenes, and secondly because I wanted to find a long term solution to this problem that was less tedious to fix. Re-exporting the frame data at 60fps for pre-existing 30fps scenes would mean I would have to go through and change all the frame timings in the scene too, which, while not necessarily super complicated, is really annoying!
Of course, there's a function for determining frame interpolation speed. This is common sense as it's a basic function of how games work, but while it's comforting to know such a function exists, finding it in a game with no available source code is easier said than done!
However, thankfully, I managed to find it, by trial and error of copy pasting different addresses into the movie data tool function and seeing what it would do. it was 0x0040.
Frame interpolation speed
The rather large value of 268435456 is half the default value, and by injecting this into existing victory/defeat scenes, we can view them at a normal speed at 60 fps by changing the speed at which frames interpolate by half. All in all, a big victory for me. Now begins the tedious process of injecting this value into all pre-existing motion data.