Battletoads NES TAS by feos & MESHUGGAH, improvement over the fastest Battletoads run (1p warps) is 8530 frames (2:22.16). We improved the glitches, the strategy and polished the action overall comparing to both 1p & 2p runs.

Movie objectives

  • Emulator used: FCEUX 2.1.6 (syncs on official 2.1.4 release)
  • 2 Players
  • Uses death to save time
  • Uses warps
  • Heavy glitch abuse
  • Heavy luck manipulation

History

After I finished Battletoads & Double Dagon I was searching for a good game suitable for an interesting TAS. I already had some thoughts towards Battletoads, but didn't want to merely polish the previous runs (that was rather easy due to my use of TASEditor and the age of these runs) without implementing any new glitches.
While reading Emu-Land.net forum I saw how ReZistanse played around with the jet death glitch, breaking the game & creating various weird objects. The point of the glitches was that you can call the Level End object in levels 3 and 5 after sitting on a jet/surfboard with just one toad and dying.
I started deep trial'n'error work to get this 0x7F in address 0x3CD, then asked some guys advanced in NES code knowledge to help me to improve my own WIP. After finishing the whole test run of the game I asked in IRC if MESHUGGAH would like to help and he kindly agreed.
Now it's 2011.11.11 and I'm submitting the result of our work.
I used this script in my run.

Stage by stage comments

Level 01: Ragnarok's Canyon

Not a big room for action as we need to kill only 2 monsters & hit the Warp. But yes, the right toad jumps onto a rock with low speed normally (even in Phil's movie), and you shall get the proper position for him to be able to jump at the highest speed (128, the speed of normal walk & jump). Also you shall not hit the scrolling screen border as you lose all your speed at the moment. After touching the upper ground I make the toad run, as always.
Warp to level 3.

Level 03: Turbo Tunnel

There is a trick in doing a final kick to an enemy with stunned status. One toad charges him and just before the first lag frame you shall press B with a second toad. The enemy status is already set to stunned in that pre-lag frame (while the damage is accounted only next frame) and it allows you to initialize the deadly blow earlier.
The rats get dropped from midair outside the screen. If you make the first hit too early, the second, kick, won't reach the enemy because he's offscreen. The last rat, falling from above, is scrolled away alive as in FODA's run.
Green Vaders (stealing your HP) were killed with laggy air charges in Phil's TAS, FODA used only simple hits and so did I.

Jet Death Glitch

One toad gets on the jet, another holds the screen from scrolling. The dead end for jets is tied to the screen position, not hardcoded into a level position, so, if you keep the screen left enough you can easily jump into a hole.
After respawning you can affect the layout and palette of the level heavily and have a great direct access to objects addresses. The main guess was that the game thinks you are in a race mode and creates obstacles, but because of pointers' faults they turn into wrong objects. Actually you can create any object of the game, but the target one is Level End (0x7F in address 0x3CD) that ends the level instantly with the same animation as in level 12.
The exact work of this glitch wasn't studied as we had luck to get the fastest result without heavy debugging.

Level 04: Arctic Caverns

Checkpoint 1

To hit the first ice block crashing the first checkpoint wall I used this combo: make a simple hit, and while the after-hit animation lasts, the block gets stopped by you; then make a charge, while the second toad jumps up and scrolls the screen. The barrier gets ice block hits only if it's onscreen.
FODA attacked the block first time with a charge too, so he had to keep the second toad behind to prevent hitting him instead of the block. Pause between charges and later scrolling were obsoleted by me.

Checkpoint 2

After passing the first checkpoint you run down the slope and charge left. One toad hits right then to change the direction, and another has to kill the snowman to minimize lag. You shall match the proper position to reach the snowman with a simple hit, not activating double-fist hit animation. After this hit FODA keeps flying left, but I make one more hit to the right while still in air, and can get in time for a faster ice block attack.
FODA attacked the ice block with a right direction charge. That makes the block to fly to the right wall first, and only then fly to where we need. These walls don't kill our acceleration, so it's possible to hit the wall in a running jump, then wait some time falling down the wall, and only then do a charge, to the left in my case, so the block flies left instantly.
To minimize lag I kill both snowmen and change the direction after passing floors not with a running charge, but with a simple hit when possible.
I also discovered a possibility to hit the block near the checkpoint wall without lag.

Checkpoint 3

Here we meet the jump trick for the first time. When you jump onto a higher floor, you can gain 11 pixels per frame (in height) instead of 2-4, if you match the correct position. That was used on each floor.
Reaching the snowman that early, I think I broke some scrolling routine, so all the future vertical scrolling will occur with broken map.
I tried to throw 2 snowballs with both toads, then jump left with one of them (pass the wall & start scrolling earlier), while the second keeps throwing. But this appeared to be slower than what you see.

Checkpoint 4

After falling with the block on your hands you shall throw it right and 1) not hit the rock much, it will kill the speed, 2) scroll the screen right far enough to get the block hitting the checkpoint wall onscreen. That prevented me from killing a snowman, that caused some lag. But now all hits between ice and stone are accounted.
Used the same non-laggy hit to break the wall.

Checkpoint 5

Nothing special.

Checkpoints 6

Killing the snowman to prevent lag and pass the checkpoint by pressing forward every other frame (shall match the right odd/even frame to get it to work).

Falling through the floor

The glitched map scrolling doesn't allow you to see what actually happens, but it's visible in this video. I stand on an ascending slope (/) and press left+right for some time. My toads start sliding down vertically, shifting their Z positions. Then they fall down because their Z position gets lower than the lowest floor ground. When they are behind the rock, I press left+right again, they get shifted right very fast, and fall away from the rock. After they land you can see that their Z position is still lower that normal.
But this won't work if you don't activate the 7-th checkpoint. Or just let it appear at least. >_>
I run right until this direction scrolling spawns the yellow spikes above the screen. They get blown after they are scrolled away (downward) and all the subsequent objects can spawn normally (almost normally, as you see a terrible lag and glitches, and the game may crash during this laggy part).
Right direction scrolling destroys the big snowball and lag disappears. Just before the blue wall I have to cross the spikes gap, but the yellow platform appears only at some camera position.

Checkpoint 8

Passing through another checkpoint wall I still can spawn the Warp object. I keep the same down-shifted Z position for the toad that falls down (moving the camera downward).
Warp to level 6.

Level 06: Karnath's Lair

Room 1

Some dancing in music rhythm, including walking/running/turning near the end.
There is an invisible platform on the snake's nose, that appears randomly, depending on toads positions and allows to jump into an out hole earlier. Phil got better positioning and spawned this platform earlier.

Room 2

This charge trick was suggested by PJ (TheSuperSNES) and worked perfectly. After the toad was knocked down, running, he doesn't need to press forward 2 times again, you just keep holding right and he resumes running.
Warp to level 8.

Level 08: Intruder Excluder

Beginning

Run upward! Press left+right for a frame, let go, hold. Add jump to this combo to cross the no-floor holes and move the camera faster. Die with one toad and hit the checkpoint at the last frame before restart.

Respawn

Springs require the correct frame to push jump to throw you higher.
Use the 11 pixel trick to jump on the platforms sooner.
The main improvement is near the end, when you need to jump through electric fields inside the moving platforms. If you match the correct time & position, you can ignore these things and not wait until the current goes off.

Robo-Manus

I hate Robo-Manus! Only if you get the propitious timer value, he acts so that you can hit him with these lower attacks all the way and he jumps only once or twice. After he starts jumping he can be knocked down, then he falls over the toad and kills him. You shall position the toad horizontally so that he won't be killed neither by Robo-Manus feet nor by his bullets.
And to prevent his high jumps you wait some frames before hitting him, then as he jumps after one toad's punch, he instantly gets a hit by another, not trampling anyone.
There's a trade-off. Instead of killing him normal way I allowed him to jump and crash my partner. At the moment partner was pressing left+right, so he went not left or right, but up with this foot-cake!

Level 09: Terra Tubes

Checkpoint 1

This trick was suggested by Sonikkustar. As always we push A from the level start and jump over the tube edge, but not too much because otherwise we'll get into water and it will discrease our speed. Going right for some pixels allows us to fall in midair and return to water when we pass the floor.
And now we don't jump out of the water, we keep swimming out of bounds until the chekpoint! Kill the toad to minimize lag and get sure the gear will spawn correctly.

Checkpoint 2

I throw the partner up through the tube to activate the 3rd gear at the very moment of wall crash, previous runs needed to pass the grey wall normal way and only then activated the gear. The used trick allowed me to show something new for this level, like being on the both sides of the gear.

Checkpoint 3

I shifted Z positions of toads differently to make the water section look crazy. Also, I activate the first water gear with one toad and another swims behind it. Zitz was faster because he jumped into water after 4-th gear, while Rash was activating the checkpoint, and so, Zitz activated the first water gear when Rash was still behind.
At the next gear I use out of bounds trick again and you can see some non-game area. Check this video for more below-the-map stuff. This way I pass the grey wall with Zitz and touch the checkpoint just before the game restarts (couldn't kill Rash earlier as his death prevents further horizontal scrolling). After restart the second toad appears further on the map too.

Checkpoint 4

OOB again! We need to scroll the screen down and spawn the last duck to let the rest objects appear. While one toad scrolls downward, another cuts valuable distance.
The main problem in going left+right too much in this level is that if you get Z position shifted up and then fall down (when the floor gets loaded off the memory), you lose ability to activate checkpoints and hit your partner.
And what exactly is done by Zitz at the last OOB glitch can be seen on that picture.
To hit the End checkpoint I used running charge attack as it increases the speed of the dead toad too.

Level 10: Rat Race

Pick your partner with Zitz and jump. The jump height affects how soon the camera will start scrolling downward.
Unfortunately the Rat-racer doesn't account hits until he hits the ground, dead (or until you destroy the bomb). I mean, you can charge him as much as you wish, but he has no stunned status before the mentioned point, so you can't blow him away during the race.
And after he gets my air hit, I activate this final kick just in midair. To be able to reach him horizontally I need to let him fall near the right wall (by blowing the bomb a bit later).

Level 11: Clinger-Winger

Game Over children. I failed everything, didn't beat the game.
Kidding.
I tried to keep the hypno-sphere close, but not too much not to make you bored of that.
If you run left at the race end, you can be caught by autoscrolling and autodying :)

Level 12: The Revolution

Strategic improvements, acting behind the tower. Nothing new that haven't been mentioned earlier.

Level 13: Armageddon

Dark Queen

She's just more insane than Robo-Manus and Roper (from Bt&DD) coupled. After each successfull hit got from you she strives to jump higher, above your jump zone (prevent her from jumping high by letting her to hit you). But you still need to keep her as near to you horizontally as possible, not to jump over the whole screen each time.

MESHUGGAH's Comments

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 are 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
  • Ending 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 Ending

The 3rd level end 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 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 may 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 affect the desired address and "spawn" Level End!
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 have 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 go 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 "visit" different areas. To complete this level, you have to go 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 several frames shortcuts.
However, this submission file has a 2 frame save possibility, which didn't made use of because the game has a timing rule: starting a level on an 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! =)

RAM addresses

Suggested screenshot


DarkKobold: Judging!

adelikat: Replacing submission file with one that is 22 frames faster. According to the author the HypnoSphere battle has been improved to match Phil's time.
sgrunt: Replacing the submission file again with another 2 frame improvement.

DarkKobold: Accepting as an improvement to the "1p warps." I removed the branch, to stay consistent with other publications. Using warps is considered any%, and is similar to SMB1, 2, and 3. Many 2 player movies do not have the 2 player branch name, such as Contra, Super C, Double Dragons, and other Battletoads movies.

Brandon: Publication underway and encoding primary / 10-bit 444 / 512kb.

DarkKobold: There are three things on this site that I'd like to see obsoleted. 1p warpless, 2p warpless and ... and... what's the third one? EPA. There you go. Is it really the EPA? No.
Fixed obsoletion chain in my decision. Oops.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15585
Location: 127.0.0.1
This topic is for the purpose of discussing #3356: feos & MESHUGGAH's NES Battletoads in 11:04.72
Player (246)
Joined: 8/6/2006
Posts: 784
Location: Connecticut, USA
'Waydigo,' this was a nice improvement. Glitchiness was a plus.
Synahel
She/Her
Former player
Joined: 1/19/2011
Posts: 260
Location: France
OK that was amazing. I didn't know Toads could pass through walls, swimming into thin air. "Eh? Background? What for?" By the way, when is this game going to be released for the Xbox? Gamestop doesn't want to answer this anymore. Obvious Yes.
Brandon
He/Him
Editor, Player (191)
Joined: 11/21/2010
Posts: 914
Location: Tennessee
I'll get the downloadable encodes done shortly.
All the best, Brandon Evans
Joined: 7/2/2007
Posts: 3960
Well, that was...different. Nice to see a new level of disrespect towards how the game's supposed to be played. Great work, guys!
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2227
Location: Georgia, USA
Incredible. It's been a long time since an update happened to the Battletoads runs, and this was well worth it. This is really impressive. First of all, I really like some of the strategy changes, like the activation of the Stage 6 warp and the use of toads behind the tower in Stage 12. Some stages got WAY harder to follow what the heck was going on, like Stages 4 and 9. On top of this, there was some very nice style, such as the dancing to the first snake in Stage 6 and the taunting of the whirly ball in Stage 11. Congratulations, guys. You get a huge Yes vote. However, I've got two questions: * Could you summarize how much each stage was improved? * Should this be a new category or not? I'm partial to saying that this should be used to get rid of the 1-P warpless run, since that run is less interesting and doesn't show anything too different from the 2-P warpless run.
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Duh.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Joined: 11/12/2011
Posts: 18
This is my first time posting on forums, altough i've been lurking on this site for 2 years now. But this run has driven me to praise it. That's just what I love in TASing: breaking the poor game until our childhood is avenged! Great job guys!
Come squeeze and suck the day, come carpe diem baby
Active player (435)
Joined: 9/27/2004
Posts: 650
Location: Canada
Haha, fantastic job!
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11478
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Comparison table is to be done. As for branch, 1p warps was supposed the fastest possible Battletoads, and now we see that it's not, because you can't break level 3 with 1 toad, not to say strategic domination of 2p over 1p. The main reason why 1p was the fastest is that the hypno-sphere needs gameover. But here I save more time than is lost due to gamover. Falling through the floor in level 4 may be done with just 1 player. I think, 1p warpful run now contains nothing unique over 1p warpless (as the latter contains input copies of the former) and over my run. So, while 1p strategies may still be interesting, I thought I can obsolete "the fastest toads" - 1p warpful, and leave both warpless runs as they are.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Editor, Experienced player (941)
Joined: 7/20/2011
Posts: 345
Wow, is this even a game anymore? That was awesome, and here's another yes vote.
Current thoughts: Hachiemon (J) for GBA.
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
If anyone interested, here's the experimentation I did about trying to simulate the same as this video shows: http://www.youtube.com/watch?v=_e9xdvXR8m0 This is done by - warping from level 1 to level 3 started as P2 - going through the 1st checkpoint by going to the very left of the screen to make the checkpoint bar despawn effect unvisible on the screen - dying in the 1st obstacle. This way when you respawn, the 1st checkpoint bar will be still there. To do the glitching starting at ~0:01, you need to press reset. After experimenting this, it looks like that this could only happens if you were in a special lag frame. You can try to step into 1 line through debugger and you will get the same effect for 1 frame. If you do this constantly, it won't work because they will be simple lag frames. I also think the same as the video's author: this is either the result of a bad cart or emulating issues of FCEUX. If you restart without any lag frames, the only thing you can achieve is make an empty cutscene text because you can change 2-3 memory values that won't be reseted. Notice that this state uses a "different game logic" than the warp does.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Joined: 2/20/2010
Posts: 209
Location: I'm in space
Super awesome improvements, amusing glitches, no-brainer yes!
Oh, play it cool. Play it cool. Here come the space cops.
Skilled player (1827)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
Great improvement, a yes vote from me!
fsvgm777
She/Her
Senior Publisher, Player (226)
Joined: 5/28/2009
Posts: 1214
Location: Luxembourg
All I can say is that Stages 3, 4 and 9 got destroyed. As such, very easy yes vote from me.
Steam Community page - Bluesky profile Oh, I'm just a concerned observer.
Active player (298)
Joined: 3/2/2010
Posts: 154
Location: Taiwan
Level 03 and 09 great improve~ Level 09 Improved more than my estimate Yes , vote
Expert player (3643)
Joined: 11/9/2007
Posts: 375
Location: Varberg, Sweden
Awesome run, no need to say more! Looks like feos has gotten more interested in pure time attacking now as, opposed to the BTDD run, this time the battletoads didn't battle toads.
feos wrote:
Only Aglar can improve this now.
Joined: 2/25/2006
Posts: 407
How was the Youtube video encoded? I downloaded the 4K file (I assume that's the "Original" quality version, 676MB) and it doesn't play in anything but DivX o_O
Ryzen 3700X, ASUS Crosshair VIII Hero (WiFi) Motherboard, 32GB 3600MHz RAM, MSI Geforce 1070Ti 8GB, Windows 10 Pro x64 http://tasvideos.org/Nach/FranpaAlert.html
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11478
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
feos wrote:
Comparison table: http://oi42.tinypic.com/258s7pt.jpg
Nice table! 2 player level 9 is faster than 1 player, that's awesome!
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Joined: 6/4/2009
Posts: 570
Location: 33°07'41"S, 160°42'04"W
Easy yes vote, what have you done to this poor game?
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
Level 3 was beaten senseless, I like it. Yes vote! (The other improvements where also cool)
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11478
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Improved HypnoSphere battle to match Phil's time (saved 22 frames overall). http://dehacked.2y.net/microstorage.php/info/463386079/battletoads-2p-warps-feos-meshuggah-39951.fm2 Replace the file please. Updated the comparison so far. http://feos-theos.narod.ru/ToadsTableNew.png
I used this Script for the run: Download Battletoads.lua
Language: lua

-- Battletoads NES -- Positions, speeds and hitboxes (not actual bounding boxes, just object frames) -- The onscreen data is placed above 8th scanline not to cover the lifebars much LastCamX = 0 function ShowBoxes() -- Camera position and display CamX = memory.readbyte(0x87) + 256*memory.readbyte(0x88) CamY = memory.readbyte(0x89) + 256*memory.readbyte(0x90) gui.text(170, 1, "CamX " .. CamX) gui.text(170, 9, "CamY " .. CamY) gui.text(170, 17, "CamS " .. CamX - LastCamX) -- X scrolling speed -- Player 1 position X1 = memory.readbyteunsigned(0x3FD) + 256*memory.readbytesigned(0x3EE) Y1 = memory.readbyteunsigned(0x439) + 256*memory.readbytesigned(0x42A) Z1 = memory.readbyteunsigned(0x493) + 256*memory.readbytesigned(0x40C) ScrX1 = X1 - CamX ScrY1 = memory.readbyteunsigned(0x493) - memory.readbyteunsigned(0x475)+8 -- Player 2 position X2 = memory.readbyteunsigned(0x3FE) + 256*memory.readbytesigned(0x3EF) Y2 = memory.readbyteunsigned(0x43A) + 256*memory.readbytesigned(0x42B) Z2 = memory.readbyteunsigned(0x494) + 256*memory.readbytesigned(0x40D) ScrX2 = X2 - CamX ScrY2 = memory.readbyteunsigned(0x494) - memory.readbyteunsigned(0x476)+8 -- Player 1 display (with subpixels) gui.text( 1, 1, "1X " .. X1 .. "." .. memory.readbyteunsigned(0x448)) gui.text( 1, 9, "1Y " .. Y1 .. "." .. memory.readbyteunsigned(0x4CF)) gui.text( 1, 17, "1Z " .. Z1 .. "." .. memory.readbyteunsigned(0x457)) -- Player 2 display (with subpixels) gui.text( 85, 1, "2X " .. X2 .. "." .. memory.readbyteunsigned(0x449)) gui.text( 85, 9, "2Y " .. Y2 .. "." .. memory.readbyteunsigned(0x4D0)) gui.text( 85, 17, "2Z " .. Z2 .. "." .. memory.readbyteunsigned(0x458)) -- Player 1 hitbox, shadow and horizontal speed gui.box( ScrX1-10, ScrY1-30, ScrX1+10, ScrY1, "#00FF0000") gui.box( ScrX1-10, memory.readbyteunsigned(0x493)+8, ScrX1+10, memory.readbyteunsigned(0x493)+10, "#00FF0000") gui.text(ScrX1- 9, ScrY1-16, memory.readbyteunsigned(0x565), "#00ff00ff") -- Player 2 hitbox, shadow and horizontal speed gui.box( ScrX2-10, ScrY2-30, ScrX2+10, ScrY2, "#FFCC0000") gui.box( ScrX2-10, memory.readbyteunsigned(0x494)+8, ScrX2+10, memory.readbyteunsigned(0x494)+10, "#FFCC0000") gui.text(ScrX2- 9, ScrY2-8, memory.readbyteunsigned(0x566), "#FFdd00ff") LastCamX = CamX end emu.registerafter(ShowBoxes);
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Very nice run, awesome. And I agree with feos that this movie successfully obsoletes all previous movies. I vote for a triple obsoletion.
It's hard to look this good. My TAS projects
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11478
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
adelikat wrote:
Very nice run, awesome. And I agree with feos that this movie successfully obsoletes all previous movies. I vote for a triple obsoletion.
Wait. Let's still leave warpless 1p and 2p. Both 1p runs are almost frame perfect, and I don't wanna tas 2p warpless because I couldn't invent better autoscrolling decisions than we all know (well, I can, but it won't be very different. Errr.... okay, maybe I'll try to beat warpless sometimes lol).
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.