All pastes #2093849 Raw Edit

Someone

public text v1 · immutable
#2093849 ·published 2011-11-11 18:27 UTC
rendered paste body
Feos contacted me on IRC near the end of DTC4 when I mentioned that I debugged some useful things for Rockin Kats. He told me about his Battletoads project which had a problematic area about finishing the 3rd level after pulling out a nifty glitch that skipped loading new game logic (dying with a jet by limiting the scrolling with P1 on the left side). I started to experiment with it and after some weeks I came up with some useful informations and inputs that used in this run (it was actually the result of multiple discussion sessions on ICQ and testing different things during this): Starting the game 1 frame faster, Warping as fast as possible on Level 3, Understanding Level 9 checkpoint system", Reducing lag frames for cutscenes by manipulating to load those which could be loaded fastest in to the memory.

--Level 3 warp--
The 3rd level warp trick is manipulated to start warping on the 2nd frame you respawn. This is the result of a long experimentation.
Originally AnS debugged and dumped many useful informations regarding the game's objects (IDs, memory regions for different type of objects, etc). What I mostly did is experimenting with different inputs on different while watching the memory, what memory locations changes to what values. He mentions  that the "end of the level" object ID is 0x7F, which means you need to press R+L+D+U+T+S+B (2^7+2^6+2^5+2^4+2^3+2^2+2^1 = 0x7F) on one of the "control" frames (the 2nd or 4th frame you respawn) to "spawn" it. This only works if you die with a jet before actually loading the new, different "game rules" when you normally would pass through the checkpoint bar. Luckily, I didn't had to manipulate the pointer where it should get loaded, so only the object ID needed (and different objects need different memory locations, and most of them doesn't work because of the glitched up state). Since you have to press T to input 0x7F, the 1st frame contains that T to do a pause-unpause very fast. The A on P1 pad 4th frame and R on P2 pad used to also ignore many lag frames.

It's actually much more complex and elaborate, debugging it would take months or more, so just to show the possibilities of this special state: pressing different buttons before respawn changes more than 100 memory values, also the pointers goes wrong, the game could halt easily, you can also get a glitched game over screen and many more funny things that feos already found. The only possible improvement should be somehow moving the pointer before pressing the desired input (0x55 to warp 2 levels) on the 2nd or 4th frame. This can be done by manipulating the pointer location (which could be done mostly by trial and error because of huge craziness in the game logic) then dying and pressing the object ID's input on the next time you respawn.

--Level 9 checkpoint system--
This level uses a special indicator which increases as you "visits" different areas. To complete this level, you have to go from step by step. This is located at 0x0585. After this, feos came up with a very impressive route by going through these crucial areas to finish the level without staying in bounds through the whole time (which is slower than going out of bounds).

So I'm glad that I could help feos to create this amazing TAS, he made a very good job, he also resynced everything just because of 1 frame save (starting the game 1 frame faster by pressing different input at the title screen and cutscene). However, this submission file has a 2 frame save which didn't made use of because the game has a timing rule: starting a level on a odd frame is different than starting it on an even frame. I realized that it's possible to shorten the cutscene before level 8 which leads to a faster respawn by 2 frames. This 2 frames is reserved because this level's route (the input used throughout the run) changes the boss movement pattern and also has to slowdown on some spots because you would get a much more problematic route (you have to avoid the 2nd enemy by going slower by 1 frame, later you have to go 1 frames slower again to skip being electrified). This means that it's not 100% you could improve this run by starting faster this level.

I hope you like this TAS that feos made with a few helps by me. Bye! =)