This run beats my last attempt by 3.77 seconds of game time and 97 frames of real time. One of those frames comes from power on and is entirely from emulation differences between then and now.
As usual with runs of the Punch-Out games, this TAS aims for in-game time, then real time. Because some of Mac's actions (star punches, stunned punches) briefly stop the clock, these don't always go together.
However, there's a glitch which results in faster in-game times at the cost of about a minute of real time. If Mac lands a rapid punch unstunned, the clock will stop and will not start again. The only way to start it again is to do something that would normally stop the clock, such as throwing a star punch or knocking the opponent down.
The clock stop glitch only gives faster times on four fights, meaning most of the run would be unchanged. The original plan was to combine the two runs into a single tasproj, with the four clock stop fights as separate branches. Unfortunately that isn't possible right now, so this run contains only the no clock stop branch. A submission using clock stop will follow.
The Fights
Glass Joe: 42.00
Von Kaiser: 35.61
Piston Honda I: 36.97
Don Flamenco I: 14.97
King Hippo: 37.61
Great Tiger: 47.48
Bald Bull I: 52.82 (was 55.25)
Phase 1 uses the 18 second knockdown again. This strat relies on refilling Bull's star dodge counter at the right time, and the 18 second knockdown puts me in a much better position for the rest of the fight.
The end of phase 1 is slightly delayed so Bull goes right into his hook pattern at the start of phase 2.
Getting two jabs and two star punches in during the wait for Bull's phase 2 rolling jabs is frame perfect. In fact, it's only possible by precisely manipulating his guard timer during the second hook. Otherwise the frame needed to lower his guard afterward would be too much.
Annoyingly, Bull is left with 1 HP after the last star in phase 3.
This fight is faster in real time by 32 frames.
Piston Honda II: 39.97
Soda Popinski: 43.48
Bald Bull II: 1:08.48 (was 1:08.82)
Turns out adelikat's strat was the correct one all along. The key here is a 2 frame delay on the seventh jab. The clock is then at 20 seconds when Bull recovers, and he switches patterns earlier, cutting a few frames off the wait for the first hook.
Switching back to the old strategy gets all the real time loss from the previous run back, plus a little extra, totalling to 48 frames.
Don Flamenco II: 58.00
Mr. Sandman: 2:16.48
I always thought the dancing during the first 50 seconds was a little sloppy, but I couldn't really come up with anything better this time.
Super Macho Man: 43.25 (was 44.25)
After dodging Macho's uppercut, stunning him once before cancelling the next punch saves time over just waiting. Macho has a sort of frame rule where his super spin forces the clock to the next second, so the improvement saves exactly one second.
Macho can actually land in two different places if knocked down with a jab. One is closer to the center, and saves time from a shorter walk back. This is just enough to save another 16 frames.
Mike Tyson: 1:58.xx
If the decimal is included by looking at the RAM or doing the fight in Another World Circuit, the time is 1:58.61
Joined: 4/17/2010
Posts: 11475
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
I'm curious too.
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.
Emulator Coder, Site Developer, Site Owner, Expert player
(3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
WOW!
The Super Macho Man improvement of 1 second doesn't necessarily surprise me, but the Bald Bull 2 fight sure did.
It's amazing there's still improvements to be found after all the these years
I think I had a WIP that saved a few more frames shortly after that last one, but for the most part I haven't touched it since then.
Not giving up on it though. TMNT 4 is gonna be priority 1 now that I'm back.
I was wondering, has any dis-assembly work been done on this game to get some strong evidence of where things are optimal or not? It still looks like it's mostly empircal guess work finding strategies and it would interesting to know if there are any really un-intuitive strategies that could still save more time.
I was wondering, has any dis-assembly work been done on this game to get some strong evidence of where things are optimal or not? It still looks like it's mostly empircal guess work finding strategies and it would interesting to know if there are any really un-intuitive strategies that could still save more time.
We had a (very short) discussion on this very subject in TASVideos Discord just a few days ago:
[10:45 PM] moozooh: with mtpo's popularity i'm surprised its cpu opponent logic hasn't yet been disassembled and thoroughly mapped out
[10:54 PM] RetroEdit: Maybe there are edge cases in the logic that were overlooked? But yeah, I'm a bit surprised too.
[10:56 PM] adelikat: you say that as if doing so would mean optimal strats would be easily found
[10:56 PM] moozooh: well, save for bruteforcing that's also the only way to find optimal strats...
[10:57 PM] RetroEdit: In conjunction with effective search algorithms, yeah, I would expect fully disassembling the behavior to yield optimal strats.
[10:58 PM] MemoryTAS: Certain games have disassembled for years and yet still new discoveries could come
[10:58 PM] MemoryTAS: that's not to say that it's not powerful but
[10:58 PM] moozooh: mtpo has a different decision tree compared to most games
For one, I'm positive that if any further improvements are to be found, that's how they will most likely be found.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Also, how TMNT 4: Turtles in Time TAS is going? Your last wip posted was 3 years ago.
I'm curious too.
I think I had a WIP that saved a few more frames shortly after that last one, but for the most part I haven't touched it since then.
Not giving up on it though. TMNT 4 is gonna be priority 1 now that I'm back.
How do you find all of the improvements you keep finding? I do a lot of testing, and in my submission, I couldn't find anything else.
DJ Incendration
Believe in Michael Girard and every speedrunner and TASer!
Did you not see the part where they’re referring to a completely different game?
[14:15] <feos> WinDOES what DOSn't
12:33:44 PM <Mothrayas> "I got an oof with my game!"
Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet
MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish
[Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person
MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol
Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
It is one of my favorites, too. How do you keep finding all of these improvements? I've done a bunch of tests, but I wasn't able to find anything else in my 17:39.19.
DJ Incendration
Believe in Michael Girard and every speedrunner and TASer!
This TAS is incredible. Obvious yes vote. Also I think Tyson's final time with the decimals should be added to the publication text if the movie gets published.
I was wondering, has any dis-assembly work been done on this game to get some strong evidence of where things are optimal or not? It still looks like it's mostly empircal guess work finding strategies and it would interesting to know if there are any really un-intuitive strategies that could still save more time.
I did some work around the time of my first TAS to understand opponent behavior better, but back then I was more interested in deciphering their patterns and actions than looking for mistakes in the code that controls those actions. I've lost a lot of what I had back then, but know enough of the important memory addresses and the -- scripting language? Whatever the phrase I'm looking for is -- for their patterns to look them up whenever I need to.
(One of these days I really need to make that flow chart showing EXACTLY how messy Piston Honda 1's pattern is. There are random branches, random delays, and random attack skips all over the place, and figuring out his pattern was the only way I ever got the TAS strat to work in the first place.)
There are a few weird edge cases and mechanics in this game, but so far none of them have been useful for speeding up the TAS. They always end up not working in the places they would be most helpful. As a sample:
Knocking down Don Flamenco 2 at a specific frame at 1:28 causes him to stay in his aggressive pattern once he gets up instead of going into his 1:30 taunting. This would be useful in a few fights if it worked on anyone else; I've especially wanted to find a way to keep Tyson in uppercuts after 1:30. But the only other fight where this works is Glass Joe; knock him down at a specific frame at 0:38, and he'll get up, skip his taunt, and do nothing for the rest of the round.
A lot of boxers are scripted to extend their stun timer after one of their jabs if you're in the middle of one of your own jabs, in order to prevent the punch from landing unstunned for a star. On Von Kaiser, this happens a couple frames late, leaving a two frame window where he can be hit unstunned, followed by another two frame window where he can be stunned for SIX hits off of a jab instead of five. An extra stunned hit would be really helpful against say Bald Bull 2, where you'd get more star punch opportunities in the first 20 seconds, or Mr. Sandman, where you could get a few more punches worth of damage in before 0:50. But only Von Kaiser has this weird quirk.
The delayed stun glitch used on clock-stop Super Macho Man is possible on any fight where you can dodge an attack and follow up with a blocked punch. I'd hoped to use this on Soda Popinski to speed up the fight; you'd counter the first hook for a star, then dodge the second hook and throw a blocked gut punch. Because of the glitch, when you intercept his uppercut to activate the knockdown flag, it would stun him, and you could use a star immediately instead of cancelling the second uppercut. Unfortunately, even if I left dodge to get a longer stun timer than I would from ducking, it runs out before I get to his first uppercut.
Just a few days ago, I noticed that some addresses used by infinite stun combos were active during the Tyson fight. A working infinite would be huge here because of how long it takes to deal damage. After investigating, I found that it was impossible to start the infinite combo because of a bug. There's an address, 03B0, that's supposed to store the ID of Mac's last evasive action; if this indicates a duck, then alternating left-right punches will be an infinite combo. But the code only goes down the branch that stores the last action if it was a dodge, making it impossible to indicate a duck. Freezing that address to hex 0E will allow the infinite to work, and the Game Genie code NYEPKZEE & NYEPSZEE will change Mac's ducking behavior so it can activate the infinite. Even if it had worked properly, Tyson's round 1 stuns are too short to activate it; the only time you can do it is after ducking an uppercut in round 2 or 3.
Didn't mean to sit on that question for so long.
EDIT: Just remembered that 03B0 actually does double duty. After the infinite combo starts, it's used to indicate which hand Mac punched with last; 01 for a punch with the left hand, 00 for the right hand. These are used to check whether Mac is punching with the correct hand to continue the infinite, and freezing it to hex 0E will cause those checks to fail. Editing the address without freezing it will still work.
Also I think Tyson's final time with the decimals should be added to the publication text if the movie gets published.
I guess that isn't happening, huh.
Vested editors can add said information at any time.
[16:36:31] <Mothrayas> I have to say this argument about robot drug usage is a lot more fun than whatever else we have been doing in the past two+ hours
[16:08:10] <BenLubar> a TAS is just the limit of a segmented speedrun as the segment length approaches zero