The .app happens to be a tweaked version of the one provided when
grabbing a copy of the game from Steam, as I am unfamiliar with the
process of collecting frameworks into an app bundle, at least with
cmake/qmake. All you need to do is replace the .app in
~/Library/Application Support/Steam/SteamApps/OneShot/ to play on Mac!
This was causing a bug where if you had 4 choices you could access
another page with blank choices? Rather than try to figure out why
that's happening I'm opting to remove the functionality entirely, as
we're short on time and we don't even have any choice dialogues that
have more than 4 choices anyways.
The previously YIQ-based algorithm turned out to be both slow,
and horribly inaccurate.
Another algorithm based on rotating the color value in the
RGB cube along the diagonal axis was also considered, which was
acceptable in terms of accuracy, and very fast.
In the end, I decided on a HSV-based one, because it is by far
the most accurate one, while still being a tad faster than the
YIQ solution.
Algorithm source: gamedev.stackexchange.com/a/59808/24839
A very simple GPU time benchmark when shifting a 2048^2 bitmap:
YIQ rot RGB rot HSV shift
radeon 13.4 ms 2.8 ms 11.4 ms
intel 13.0 ms 6.0 ms 10.5 ms
radeon: HD 3650 mobility
intel: N3540 integrated (Baytrail)
However hue shifting has never shown up as a bottleneck before,
so these are more academic.
The interpreter needs to +1 to the index before saving or else
quit_game_bed will have the game stuck in an infinite loop of quitting
the game when reloading, but we need to -1 immediately after because
otherwise the interpreter will skip a command after this is called.
The game would try to catch up in frames when a window prompt was
opened, so if the window was open for 140 frames the game would process
the next 140 frames instantly after the game was closed. To fix this, I
have the window prompt time how long it's opened and then I tell the
game to sleep for however many frames it was opened for.
Credits message works but does not yet have all the desired features,
will finish up later.