Hello everyone, posting here firstly to introduce myself to the TASVideos community and secondly to inform you of some recent findings I have made regarding BK.
My name is Isotarge, I work as a developer for a
small game studio in South Australia. Recently I have been working on several projects to do with speedrunning and TASing N64 games, specifically Donkey Kong 64 and Banjo Kazooie. As a result Cronikeys, Exchord, Hyper and RingRush have been in touch with me regarding these games.
I've been doing extensive research into several aspects of these games, posting my findings to a small project on GitHub, currently called
ScriptHawk which includes Lua scripts and RAM watches for use with BizHawk and extensive documentation for several games.
My biggest find in BK so far is explaining how the "random trajectory" value is interpreted by the game, originally documented by Kirkq in 2013. It's a float, not an unsigned long and gets set to whatever Banjo's current facing angle is (between 0 and 360 degrees) when you destroy something.
There are at least 3 parameters which determine trajectory: Angle, Horizontal force and Vertical force. Horizontal force is located right after angle in memory, it is also a float and is always set to 1 when something is destroyed. You can set this value higher to perform interesting shots like shooting the Jiggy that the last hut in MM spawns straight into Ju-Ju's mouth, as shown
here. I have not yet figured out where vertical force is derived from or even where it is in memory but it certainly does vary, possibly being set by the PRNG.
I will be working closely with Hyper during the BK 100% TAS process and look forward to seeing our understanding of how this game works progress.
If you would like to chat with me live, I regularly stream BK/DK64 research to my
twitch page.
Cheers, Isotarge.