(Link to video)
Submission Text Full Submission Page
This is an improvement of 18360 frames to the published glitched run and an improvement of 4494 frames to MUGG's unsubmitted, faster glitched run.
I started it immediately after I saw TASeditor's post in the Kirby's Adventure thread about a glitch he had recently found to clip through sloped hills. As soon as I watched his video demonstrating the glitch, I was motivated to spend the rest of my afternoon and night creating this improvement to the glitched run of my favorite game.

About the run

  • Emulator used: FCEUX 2.2.1 (Old PPU)
  • Aims for fastest time
  • Takes damage to save time
  • Abuses glitches
  • Genre: Platform

Room by room comments

Room 1

  • I tried and tried to improve the beginning of this level, and almost did by 1 frame, but I just couldn't manipulate those Waddle Doos to jump toward Kirby and also not use their laggy attack, so I just hand-copied the same (apparently perfect) input over.
  • I discovered a little trick to turn Kirby around right before he swallows the Mix, saving a few frames because he doesn't have to turn around after the transformation.
  • I had some trouble sliding off of the tall mesa and not taking damage from the Hot Head and losing my ability or killing it and bouncing very high (both scenarios would waste time). By sliding off the mesa at just the right frame, I bounce low enough to enter the door without wasting a whole bunch of time.

Room 2

  • Kirby moves slower on slopes, so I jump over all of them in this room and all but one in the next (you'll see why).
  • The way I puff up and spit at the Bronto Burt is the fastest I found to do it without accidentally manipulating the Sparky at the end of the room to use his very laggy attack.

Room 3

  • I jump once at the very beginning to manipulate the Hot Head to not use his laggy attack on screen (he uses it after I leave the screen, but the level doesn't lag).
  • By jumping very high over the Poppy Bros. Jr., I make the Waddle Doo jump too, preventing him from using his laggy attack and just getting in the way of the glitch.
  • You can't clip through the slope with just one jump. You need at least two 1-frame jumps, one right after the other. The first jump pushes you into the line of the slope (where the game can push you back out if it wants to), and the second one decisively puts you on the other side of the line.
  • Once Kirby is inside the slope, I turn to stone to slow his lateral movement to move him slowly into the water (so he doesn't skip right to a swimming animation) and then use the stone glitch to skip to the credits.

Suggested Screenshots

1232, 1801, 1858

Thanks to

  • TASeditor for finding, sharing, and demonstrating this clipping glitch
  • MUGG for his previous glitched runs

feos: Setting to delayed until the frame war ends and we finally have a new movie.
feos: The framewar is over, CoolKirby promised to cancel this submission in favor to the final one, I guess it won't harm is I do so while he is away.

Skilled player (1707)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
MESHUGGAH's WIP
"Leaves the level 1 frame earlier by different ending (running and dash and U). Good luck with syncing."
What do you mean by "Good luck with syncing"? What causes it to desync? @TASeditor The wip you posted shows a pink screen at the end instead of the credits. =o
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
TASeditor wrote:
MESHUGGAH wrote:
How many lag frames did you get and how close are you to MUGG's "RNG" (enemies actions on different frames)?
After trying alot I managed to remove some lag frames. So this is now three frames faster. The enemies are not hard to manipulate.
Good. I couldn't find more improvement that saves frames only subpixels, but it looks it doesn't changes anything. Will continue optimization when someone uploads the fastest one. Also I have a few questions still I'm a noob at this game: - What are the conditions to "eat something and start the power up roulette"? - Is the 1st room is the only place where you can gather stone? I think 3rd room would be much better - How the **** does the RNG works? edit: jlun2: the RNG change makes desync.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Editor, Skilled player (1506)
Joined: 7/9/2010
Posts: 1317
MESHUGGAH wrote:
Also I have a few questions still I'm a noob at this game: - What are the conditions to "eat something and start the power up roulette"? - Is the 1st room is the only place where you can gather stone? I think 3rd room would be much better - How the **** does the RNG works?
1st: Kirby needs to inhale two enemies at the same time. 2nd: I think it would be slower, since the distance of two enemies is greather than in the first room. 3rd: The RNG can manipulated with jumping.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
TASeditor wrote:
1st: Kirby needs to inhale two enemies at the same time. 2nd: I think it would be slower, since the distance of two enemies is greather than in the first room. 3rd: The RNG can manipulated with jumping.
Thank you for the answers. Well in 3rd room you can inhale the 1st (on the platform) and 2nd in one instant blow, and that guy who crosses the "wallclipping" shouldn't be there. I will try to re-implement some tricks in 1st room, maybe I'm just missed these RNG's. (particularly the tricks: swallowing 3 enemies in 1st room to avoid damage, manipulating the 1st creature to jump and inhale below to start running 2 frames faster, manipulating the subpos before blowing the 2 enemies, different jumping around purple and next creature). I think I will investigate it tomorrow or the day after.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11274
Location: RU
Probably the final movie would need to be marked as a co-authorship of you all.
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 (608)
Joined: 11/8/2010
Posts: 4012
feos wrote:
Probably the final movie would need to be marked as a co-authorship of you all.
I think the standard way to do it is to put the name of everyone in the submission text. We could make this a co-authorship (I'm all for that), but everyone would have to agree to it (and I don't think MUGG wants to be a coauthor if it'll be published on this site). By the way, how do you people measure subpixels and lag? FCEUX's lag counter doesn't seem to work, and I've never worked with subpixels.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11274
Location: RU
The case is that this project is now being developed as a common WIP and it would be true to credit all the actual contributors. I don't think SM64 crowd works differently. EDIT: There is a lua unction in new FCEUX to set or unset lag depending on something. I'll try to modify this script if you give me the address that indicates lag in Kirby: http://sourceforge.net/p/fceultra/code/HEAD/tree/fceu/trunk/output/luaScripts/CustomLagIndicator_RvT.lua
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 (608)
Joined: 11/8/2010
Posts: 4012
Yeah, I think you're right. But like I said, everyone would probably have to agree. If we went that route, we could just replace the submission file and add the rest of the authors. EDIT: Thanks, feos!
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
feos wrote:
Probably the final movie would need to be marked as a co-authorship of you all.
Actually I'm just saw that CoolKirby made a very short NES game, so I looked in, and found an "somewhat obviously optimizable" part (jumping length and position). The only reason I'm optimizing what others do is because I don't want to TAS but it's easy with MUGG's lua script from Thread #57: Kirby's Adventure. I won't be offended if I'm not marked as coauthor, since I won't start TASing it just help others to punish another NES game under 1 minute.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Editor, Experienced player (608)
Joined: 11/8/2010
Posts: 4012
MESHUGGAH wrote:
The only reason I'm optimizing what others do is because I don't want to TAS but it's easy with MUGG's lua script from Thread #57: Kirby's Adventure.
Oh, wow, that's amazing! It looks incredibly helpful for optimizing this game. Thanks for the link!
jlun2 wrote:
@TASeditor The wip you posted shows a pink screen at the end instead of the credits. =o
Huh? It syncs for me (on USA PRG0).
Editor, Skilled player (1506)
Joined: 7/9/2010
Posts: 1317
Damn, those lag frames are unforgivable.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11274
Location: RU
Test please. Now you don't need to have lag reset on each savestate. You just save and load and have lag displayed as usual in fceux, and its count is saved and loaded properly as well. Download KirbyAdventure-LagHUD.lua
Language: lua

-- 2013 -- lag couter by feos -- HUD by MUGG lagged = false function Stuff() gui.opacity(0.2) gui.drawbox(149,8,258,32, "black") gui.opacity(0.95) xspeed = memory.readbyte(0x05B9)+memory.readbytesigned(0x05Ba)*256 yspeed = memory.readbyte(0x05Bd)+memory.readbytesigned(0x05Be)*256 xpos = memory.readbyte(0x0083)+memory.readbytesigned(0x0095)*256+memory.readbyte(0x0071)/256 ypos = memory.readbyte(0x00b9)+memory.readbytesigned(0x00cb)*256+memory.readbyte(0x00a7)/256 gui.text(150,9," \n \n ") gui.text(150,9," pos speed\n(X):\n(Y):", "green") gui.text(172,17, math.floor(xpos*1000)/1000) gui.text(224,17, xspeed) gui.text(172,25, math.floor(ypos*1000)/1000) gui.text(224,25, yspeed) end function DetectLag() LagFlag = memory.readbyte(0x01a5) if LagFlag == 1 then lagged = true else lagged = false end end function SetLag() if lagged then emu.setlagflag(true) else emu.setlagflag(false) end end memory.registerexecute(0xC373, DetectLag) memory.registerexecute(0xC323, SetLag) emu.registerafter(Stuff)
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 (608)
Joined: 11/8/2010
Posts: 4012
Works perfectly for me (in FCEUX 2.2.1). Thanks, feos!
Emulator Coder, Skilled player (1141)
Joined: 5/1/2010
Posts: 1217
CoolKirby wrote:
jlun2 wrote:
@TASeditor The wip you posted shows a pink screen at the end instead of the credits. =o
Huh? It syncs for me (on USA PRG0).
For me, it crashes with messed up screen (FCEUX 2.2.1), but works in 2.2.0.
Editor, Skilled player (1506)
Joined: 7/9/2010
Posts: 1317
Ilari wrote:
CoolKirby wrote:
jlun2 wrote:
@TASeditor The wip you posted shows a pink screen at the end instead of the credits. =o
Huh? It syncs for me (on USA PRG0).
For me, it crashes with messed up screen (FCEUX 2.2.1), but works in 2.2.0.
It works for me both in 2.2.0 and 2.2.1
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Editor, Experienced player (608)
Joined: 11/8/2010
Posts: 4012
I've only been using 2.2.1 and his movie works fine with that.
Emulator Coder, Skilled player (1141)
Joined: 5/1/2010
Posts: 1217
CoolKirby wrote:
I've only been using 2.2.1 and his movie works fine with that.
Got it to sync (as in not crash) using 32-bit FCEUX 2.2.1.
Editor, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
0x003E and 0x003F are RNG addresses. Thank you for improving the lua script feos. Can you explain to a lua noob like me what the second to last and last lines do?
memory.registerexecute(0xC373, DetectLag)
memory.registerexecute(0xC323, SetLag)
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11274
Location: RU
Being a lua noob has nothing to do here, since it is debugger stuff :D The address $01A5 gets incremented to 1 and decremented back to zero every frame (2 changes per frame, both occur on non-lag frames). And on lag frame it gets incremented once more. So the first function (DetectLag) detects if it incremented the second time, or, address $C373 (increment $1A5) was executed while the value of $1A5 was ALREADY 1. So when this value becomes 2 actually, I set my variable to true, otherwise it is false. Then the second functions gets registered when the routine that polls controllers ends ($C323 is RTS for this routine). It is when FCEUX sets its own lag flag. So when my variable is true, it forces FCEUX to set lag flag in itself at this point. If input isn't polled, FCEUX lag flag isn't overridden and it most likely still sets its internal one. This is why you will see a small diff between the old lag script and this one. The old one showed me a few less lag frames, it maybe didn't count the frames that were marked as lagged by FCEUX itself.
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.
GhostSonic
He/Him
Joined: 3/14/2013
Posts: 61
GhostSonic wrote:
This syncs on PRG1 too. I just thought that was worth noting.
This is no longer true as of the latest improvement by TASEditor. Crashes to a pink screen.
Editor, Experienced player (608)
Joined: 11/8/2010
Posts: 4012
TASeditor wrote:
After trying alot I managed to remove some lag frames. So this is now three frames faster.
Did you ever upload this WIP? I don't see it in your userfiles.
Editor, Skilled player (1506)
Joined: 7/9/2010
Posts: 1317
CoolKirby wrote:
TASeditor wrote:
After trying alot I managed to remove some lag frames. So this is now three frames faster.
Did you ever upload this WIP? I don't see it in your userfiles.
It lagged again in the third room to much :(
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
GhostSonic
He/Him
Joined: 3/14/2013
Posts: 61
GhostSonic wrote:
GhostSonic wrote:
This syncs on PRG1 too. I just thought that was worth noting.
This is no longer true as of the latest improvement by TASEditor. Crashes to a pink screen.
It also doesn't sync on the new PPU, just crashes to a garbled screen. Interestingly, the older runs I tried do sync.
Editor, Experienced player (608)
Joined: 11/8/2010
Posts: 4012
GhostSonic wrote:
GhostSonic wrote:
GhostSonic wrote:
This syncs on PRG1 too. I just thought that was worth noting.
This is no longer true as of the latest improvement by TASEditor. Crashes to a pink screen.
It also doesn't sync on the new PPU, just crashes to a garbled screen. Interestingly, the older runs I tried do sync.
Is that going to be a problem? The new PPU is supposed to be more accurate. Would that make his run illegitimate?
Noxxa
They/Them
Moderator, Expert player (4140)
Joined: 8/14/2009
Posts: 4083
Location: The Netherlands
FCEUX's new PPU doesn't score much better than the old PPU. Also, the new PPU has been noted to be inconsistent with other, more accurate emulators/the console before, such as with some of the more extensive Rockman glitches. Don't rely on either of FCEUX's PPUs to consider anything as "illegitimate".
http://www.youtube.com/Noxxa <dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects. <Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits <adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.