So, I have just discovered that on all versions of the game, the cutscene for the lights puzzle in Tarmac Trouble will only play once after starting up the game (without completely exiting and restarting the game).
This basically means that if you do the tarmac trouble light puzzle, then load a completely blank file and do a run, you won't get the helicopter dropping cutscene in your run.
With this in mind, I think that we should start rejecting runs with this skip, since it's a glitch that must be set up before the run starts, and a "full" reset could be considered closing, and re-opening the game.
Due to this, we will start rejecting any new runs with this cutscene skip.
IMPORTANT:
IN ORDER TO AVOID THIS, AND AVOID RUNS FROM BEING REJECTED, BE SURE TO COMPLETELY RESTART THE GAME ONCE YOU'VE COMPLETED THE LIGHTS PUZZLE AT ALL. (For emulators, you can simply load a savestate after a clean start of the game)
I will work on finding the exact reason why this is occurring, and work a fix into my reset function on my trainer so that it will prevent the cutscene from being skipped. Until then, you must restart the game after doing the lights puzzle, and before doing runs.
Comments and thoughts encouraged below.
So I decided that I didn't like practicing on PC version vs N64 since I didn't have things like savestates, and the extra cheats that I created for the N64 version, etc.
So, I decided to make a trainer to assist in practicing/testing for the PC version of Toy Story 2.
Note: This will only work with the US PC version of TS2.
Here's a screenshot:
And you can download the tool from the resources tab for this game.
(Direct Links for convenience) https://www.speedrun.com/static/resource/znkwt.exe mirror: https://mega.nz/file/PhUVnaSL#yP7SQQreZyqT9RbK9ZYewMgTLEsXoo8WqvvQHdD8cu4
Note: Not sure how some antivirus programs will detect this. Since it is meant to write values in memory for other processes, it's possible that some antivirus programs may flag this as a malicious file, although I can assure you that it's clean.
So, since Capridog's run just tied the world record, I figured I would make this forum post explaining my timing methodology which led me to determine that these runs most likely tied exactly to the frame.
Some things to note: Brandon's run was using the autosplitter. The way that works is the autosplitter actually looks at the memory values in the emulator itself to determine when to start/split. Due to this, it is impossible for the autosplitter to split early, since the value in memory would have had to already change (meaning the action has occurred) before it will split.
For the start of the run, buzz's first frame of movement will cause his animation to change, showing his left leg lifting up, which is how we can determine the first frame of movement.
Also note that both videos are in 30fps, meaning that one video frame is roughly 33 milliseconds (0.033 seconds).
We'll start by looking at the start of Brandon's run.
Here is the last video frame before movement in Brandon's video:
Here is the first video frame of movement in Brandon's video:
Examining this, since the first video frame of movement shows the timer at 0.01, the worst case scenario of the autosplitter splitting late would mean that it theoretically could have started up to 0.02 seconds late. Also note that in my experience, however, the autosplitter is rarely ever more than 0.01 seconds off, so in all likelihood, the start of the timer for Brandon's run is likely started within less than 0.01 seconds of the actual time.
Now lets look at Capridog's run.
Here is the last video frame before movement in Capridog's video:
Here is the first video frame of movement in Capridog's video:
Unfortunately, Capridog is not using the autosplitter, and the way that the video frames line up, we have a difference of 0.05 seconds here, effectively meaning that the real start could have occurred somewhere between 0.32 and 0.37 seconds on the timer.
Now lets look at the final frames of the runs. Brandon's video first again.
Here is the last video frame before the run ended in Brandon's video:
And here is the first video frame of the run ending in Brandon's video:
You can tell this is the last frame because the blacksmith in the last frame has started his first frame in his death animation (most easily determined by the fact that the blacksmith has started to "jump" up (part of his death animation)).
Fortunately here, there is only a 0.02 second window in the timer between video frames, meaning that this run could have ended any time between 28:44.93 and 28:44.95
Now lets look at Capridog's run.
Here is the last video frame before the run ended in Capridog's video:
Here is the first video frame of the run ending in Capridog's video:
You can tell this is the last frame because the health bar started to pan up (which means the boss has been finished), even though the blacksmith's death animation didn't start on the same frame.
Again, fortunately here, there is a relatively small 0.03 second window in the timer between video frames, meaning that this run could have ended any time between 28:45.26 and 28:45.29
Now looking at edge case scenarios: The shortest that Brandon's run could've been is: 28:44.93 (assuming that the autosplitter started within 0.01 seconds of the start of the actual run) The longest that Brandon'r run could've been is 28:44.97 (assuming the autosplitter started 0.02 seconds late, and the first video frame was the same as the actual ending frame of the run)
The shortest that Capridog's run could've been is: 28:44.89 (assuming that the first video start frame was the same as the actual game start frame, and that the actual ending game frame occurred less than 0.01 seconds after the previous video ending frame) The longest that Capridog's run could've been is: 28:44.97 (assuming that the first video start frame occurred less than 0.01 seconds after the previous start frame, and the ending video frame occurred at exactly the same time as the actual ending frame)
Given this information, we have about a 1 frame window that Brandon's run could actually be, and a 2-3 frame window that Capridog's run could have ended.
Given the general accuracy of the autosplitter, it is VERY likely that the recorded time for Brandon's run is accurate to the 0.01 seconds, meaning that his ending time is VERY likely between a 44.94 and a 44.96. All the other possible times are very unlikely
In general, when comparing timing of video vs actual game frames, it is statistically most likely that the actual time will fall in the middle of the possible window (this would follow a bell curve distribution).
Based on this fact, it is most likely that Capridog's actual ending time sits somewhere around 44.94, however due to the nature of this timing, it could fairly easily be +/- about 0.02 seconds (due to evaluating the standard deviations of video vs actual game frame timings)
Given the most likely scenarios of 44.94-44.96 and 44.92-44.96 being the windows of time, the most likely combination of these ranges gives us an outcome there is about a 75% chance that the runs end with less than a 0.03 second gap (which is less than one frame).
Given all of this, it is most likely that the runs likely ended on the same game frame, meaning that these runs are an exact tie.
However, given all of this, the next most likely (and not at all far-fetched) scenario is that Capridog's run was actually 1 frame faster than Brandon's run. The likelihood of Brandon's run being faster than Capridog's run is very unlikely.
So while I will record these runs as an exact tie, it is impossible to know 100% whether or not it was an actual tie.
Since an exact tie is the most statistically likely scenario, that's how I have officially record the run.
Edit: I wasn't super happy with all of this since it wasn't a definitive answer, so I did a lot more testing that I'm not going to try to get into here (timing based soley on video fps, rather than tracking using the timer on the video, do some test recordings and actually getting some standard deviations for game frame times vs video frame times to make a better mathematical model, etc, etc). Depending on how you measure it, Brandon could have won by up to 2 frames or Capri could have won by up to 2 frames, however I still stand behind the idea that the most likely scenario is an exact tie.
Edit 2: I've spent over 5 hours simply timing this different ways, creating a few different statistical models, etc to try and get a better definitive answer. Unfortunately, it's impossible to know for sure because of the videos themselves. I am officially declaring this a tie, and that's (basically) final. It would take quite a bit of testing and showing better methods than what I've already tried to convince me that a different outcome is more likely at this point. Everything seems to point to the most likely probability of an exact, frame per frame tie.
The following is my comment on the matter of the IL leaderbords:
As of right now the IL leaderboards are functional. Yes, it is true that most games tend to handle ILs differently, where they might only have a few category in ILs, which is simply like an "any%" or "100%" for an individual level which doesn't relate to the full game speedruns. (i.e. beat the level as fast as possible [in ts2 case, this would be getting one token], or collecting and completely beating a single level).
As of right now, the current IL boards have the 100% category that is the most "common" among IL boards, and is what you might consider a "traditional" IL category. This means that if you really want a "traditional" IL category, simply submit it as a 100% IL run.
Note: It currently does not have something such as an "any%" level (which in this case would mean 1 token), however if people really want something like this, it can be added no problem.
A common argument against the current IL boards is that they have too many categories. Well, fortunately, too many categories does not actually take away any functionality. If you don't like the extra categories, you can simply ignore them. Removing functionality by removing existing categories doesn't make a lot of sense, simply to match what is "common" among other games' boards.
Another common complaint is that since the IL categories are related to the routes for the main runs (which, by the way, isn't true for levels with re-visits since revisit splits aren't on the IL boards), that when the full game route changes, then the IL category route changes, thus potentially invalidating all the existing IL runs. This argument is indeed, true, however it is also somewhat frivelous. Since I have completely rerouted the game over 2 years ago, there has been only 1 change to the token route of ANY of the categories. On top of this, the change simply swapped which tokens we get in 1 particular level, (number of tokens per level has never changed), effectively just making the level faster without any fundamental route changes by needing to grab different tokens in different levels. This means that the number of tokens we were grabbing in each level 2 years ago, are the same that number that we are grabbing today. While the run itself has improved over time with new tricks, this has ONLY lowered the time of individual levels, never changing the fundamental routes themselves. IF there does come a day where a trick so durastic is found that it would change the token route of the levels, then yes, ILs will be changed and invalidated for the affected levels. Because of this, it does not make sense to delete entire IL categories based on the idea that some edge case COULD occur at some point in time which would invalidate runs. If you don't like the idea of your IL run being potentially invalidated by future routes, then don't run and submit ILs for categories like 30 or 40 token where the fundamental token route could theoretically change. If you don't like the category, you don't have to submit runs. You are more than welcome to only do ILs for a category like 100% or Max% which could fundamentally never change regardless of the full game route.
Something else to note is that a lot of people complain about the IL boards, but don't actually do any ILs themselves. If someone came with a bunch of recorded ILs that they couldn't submit because there wasn't an appropriate category, then we can discuss if the category makes sense and should be added, but there is no need to remove existing categories.
If you would like to discuss why a category should be added, feel free. If you would like to discuss why a category (and thus functionality) should be removed, then feel free, however keep in mind that (as mentioned above), arguments such as "it's not how it's normally done/it's not like other games" or "it looks cluttered" will likely be ignored without a better justification.
Discord for live discussion here: https://discord.gg/0yDqPvBZfrHdIS1r
(Mirror for all links) http://pastebin.com/X5L2qBA4
TS2 PC Trainer: https://www.speedrun.com/static/resource/znkwt.exe https://mega.nz/file/PhUVnaSL#yP7SQQreZyqT9RbK9ZYewMgTLEsXoo8WqvvQHdD8cu4
Install TS2 Cheats: http://www.speedrun.com/tools/Install_TS2_Cheats_o4kqe.zip https://mega.nz/#!WwNFFIpC!guJmr9UJlxauFIGCsIbtUUbc8nYBGMXljEY2pcckDp0 http://www.mediafire.com/view/nuf115h57sdo8ud/Install_TS2_Cheats.bat
Modified Project64.cht (with extra TS2 Cheats): https://mega.nz/#!zwdCmAbY!vNcZz77KEKbctAa05idvdHKfIrVGGEFeNKVQarZPUdU http://www.mediafire.com/download/0z3565izcq0ob75/Project64.cht
Blank 30 Token Splits: http://www.speedrun.com/splits/Toy_Story_2_Any_N64_Blank_wtvaf.zip https://mega.nz/#!7wNRDJaR!CTzDygo_q5HZLEFhlwjqoeGgw52HJFN7mdubB75aHDA http://www.mediafire.com/view/unbpgny7by339y9/Toy_Story_2_Any_N64_Blank.lss
Blank 100% Splits: http://www.speedrun.com/splits/Toy_Story_2_100_Blank_5n0rb.zip https://mega.nz/#!v081DB6a!YDswmjj-rNC5toS5eLBkKmkb1CiEVm-grAuMPZlfBkQ http://www.mediafire.com/view/06szcakk1680tki/Toy_Story_2_100_Blank.lss
WR 30 Token Splits: http://www.speedrun.com/splits/Toy_Story_2_Any_N64_WR_1nzwf.zip https://mega.nz/#!G80QHLya!QBf-Y-IheWc20xLOT6CYJW7Cfi7E_EZGCGIyTuDczv0 http://www.mediafire.com/view/u4birco0qkwtd7k/Toy_Story_2_Any_N64_WR.lss
WR 100% Splits: http://www.speedrun.com/splits/Toy_Story_2_100_WR_ohspg.zip https://mega.nz/#!rl01FDKR!Bf_gHCcjnFazoYYEN7T7uibX5YUvJ67lI8oaaGlhQ4U http://www.mediafire.com/view/ma74r21ldtb7ka4/Toy_Story_2_100_WR.lss
PJ64 Starting Savestate: http://www.speedrun.com/saves/Toy_Story_2_U.pj1_qorc7.zip https://mega.nz/#!P9FRzLrQ!F-pdWAl3inK0CgfmQw0t32MbgBnc7iXcd7IL4-0-INw http://www.mediafire.com/download/79alsc8d4cqr645/Toy_Story_2_%28U%29.pj1.zip
PJ64 100% Savestate: http://www.speedrun.com/saves/Toy_Story_2_U.pj2_k2t3h.zip https://mega.nz/#!rwNTXJQI!b_74a3HgNPYpiVZlP2XUtUEjssk4nS78YBaONQpUfi8 http://www.mediafire.com/download/wz9t49059dl2obd/Toy_Story_2_%28U%29.pj2.zip
Coin Counts For Every Level: http://www.speedrun.com/toys2/guide/9pi83 http://pastebin.com/CZ4nufgi House: 93 Neighborhood:99 Construction: 72 AnG: 103 Toy Barn:71 Space land:89 Elevator: 63 Penthouse: 72 Airport: 72 Tarmac: 88
Item Counts For Every Level: http://www.speedrun.com/toys2/guide/fxpc1 http://pastebin.com/cEvSHjDG Andy's House: 93 Coins 6 Batteries 3 Extra Lives 1 Green Laser Andy's Neighborhood: 99 Coins 5 Batteries 1 Extra Life 1 Green Laser Bombs Away: 0 Coins 4 Batteries 0 Extra Lives 0 Green Lasers Construction Yard: 72 Coins 4 Batteries 2 Extra Lives 1 Green Laser Alleys and Gullies: 103 Coins 3 Batteries 3 Extra Lives 1 Green Laser Slime Time: 0 Coins 0 Batteries 0 Extra Lives 1 Green Laser Al's Toy Barn: 71 Coins 5 Batteries 1 Extra Life 1 Green Laser Al's Space Land: 89 Coins 3 Batteries 1 Extra Life 1 Green Laser Toy Barn Encounter: 0 Coins 4 Batteries 0 Extra Lives 0 Green Lasers Elevator Hop: 63 Coins 0 Batteries 0 Extra Lives 1 Green Laser Al's Penthouse: 72 Coins 5 Batteries 1 Extra Life 1 Green Laser The Evil Emperor Zurg: 0 Coins 0 Batteries 0 Extra Lives 0 Green Lasers Airport Infiltration: 72 Coins 3 Batteries 0 Extra Lives 1 Green Laser Tarmac Trouble: 88 Coins 5 Batteries 1 Extra Life 1 Green Laser Prospector Showdown: 0 Coins 0 Batteries 0 Extra Lives 0 Green Lasers
Tarmac Puzzle Light Patterns: http://www.speedrun.com/toys2/guide/jwbev http://pastebin.com/2e8ggDXv B_ _R 2 3 4
BG _G_R 4 2 3
BG_R BGY_ 1 4 3
B_Y_ BG 4 2
B_Y_ YR 4 2
GY B_Y_ 3 1 2
_G_R GY 3 1
Y_ _G 4 1 2
YR _G_R 4 2 1
R Y 3 4 1
N64 Cheat Codes: http://www.speedrun.com/toys2/guide/crln4 http://pastebin.com/zNbQGpHX Go to the main menu of the game, and enter these codes by doing the following inputs with the analog stick. You will here a sound play confirming once you have entered the code correctly. Note - This does not work on PC
Level Select UP, UP, UP, UP, DOWN, DOWN, UP, UP, DOWN, DOWN, DOWN
Power Ups DOWN, DOWN, DOWN, DOWN, UP, UP, DOWN, DOWN, UP, UP, UP, UP, UP