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.
The only way to truly be sure if this works on console is to actually try and verify on console. I don't own the game so I can't go and do that.
For posterity, though, here's a short list of what runs do and don't sync on the new PPU, all tested on PRG0:
Orignal by CoolKirby - Syncs
TASeditor 38.44 - Syncs
MESHUGGAH 38.35 - Syncs
MESHUGGAH 38.3 - Syncs
was0x 37.39 - Syncs
TASeditor 37.27 Personal note: wrong person - Syncs
CoolKirby 37.26 Note: One FRAME - Crashes to a garbled screen
MUGG 36.39 - Crashes to pink screen
TASeditor 36.37 - Crashes to garbled screen.
I could fix CoolKirby's run by pressing an extra L at the last frame (so it's BLR instead of BR).
All I see that the game tries to execute $3C3F subroutine which is undefined and you can manipulate to load other values.
In TASeditor's 36.37, the game doesn't wants to execute this address so he manipulated on the last manipulatable frame with various buttons which skips through various subroutines, so this can't be fixed the same way as CoolKirby's.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
That would explain it. The last two runs should have crashed if the authors hadn't have pressed Start, while the older ones were going to run to the credits anyway.
I did some testing and it seems that the game will crash with a colored or garbled screen with values of 0-129 of that subroutine and jump to the credits with values of 130-255.
I'm going to try and roll the credits without manipulating, but I don't know how to make sure this address rolls the credits.
You shouldn't rely on this address solely. The glitch is CPU clock* dependent (you can verify this by pressing input at 4th (1st non-lag) frame and see that the only thing changes is the cpu clock.
It's possible (and I already done) to fix any runs on any PPU (for example TASEditor's 2186 frame tas on new ppu), so this isn't an issue. Don't ask me why it triggers the credit.
*edit: or ppu cycle... I'm a noob
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Hey Ghost, in case you ever get to console verify this, it seems that the movie I tested synced well (until the crash) when I replaced the reset with a soft reset (by holding Start+Select+A+B).
Would that mean delaying the frame would change it? Or only a completely different sequence of input or events (the enemies using their attacks or jumping, for instance)?
I debugged it as well and I agree that there are strange things going on. I not sure but the code basically jumps to $904A with the wrong bank loaded (?) and then executed a bunch UNDEFINED instructions and BRKs until it sometime executes a RTI and starts executing normal code (credits routine?).
I decided to join this frame war so here is my 2183 frames run (3 frames faster than current). I optimized the jump through the slope which might can be optimized even more (AAAAH LAG)
Warning: Might glitch to creditsI will finish this ACE soon as possible
(or will I?)
The only way to truly be sure if this works on console is to actually try and verify on console. I don't own the game so I can't go and do that.
For posterity, though, here's a short list of what runs do and don't sync on the new PPU, all tested on PRG0:
Orignal by CoolKirby - Syncs
TASeditor 38.44 - Syncs
MESHUGGAH 38.35 - Syncs
MESHUGGAH 38.3 - Syncs
was0x 37.39 - Syncs
TASeditor 37.27 Personal note: wrong person - Syncs
CoolKirby 37.26 Note: One FRAME - Crashes to a garbled screen
MUGG 36.39 - Crashes to pink screen
TASeditor 36.37 - Crashes to garbled screen.
Hey Ghost, in case you ever get to console verify this, it seems that the movie I tested synced well (until the crash) when I replaced the reset with a soft reset (by holding Start+Select+A+B).
What do you mean by reset? Was there a reset in this movie? Sorry if I sound naive.
Joined: 10/12/2011
Posts: 6435
Location: The land down under.
Masterjun wrote:
I decided to join this frame war so here is my 2183 frames run (3 frames faster than current). I optimized the jump through the slope which might can be optimized even more (AAAAH LAG)
36.383... three frames faster than:
Spikestuff wrote:
Joined: 8/14/2009
Posts: 4089
Location: The Netherlands
Spikestuff wrote:
Masterjun wrote:
I decided to join this frame war so here is my 2183 frames run (3 frames faster than current). I optimized the jump through the slope which might can be optimized even more (AAAAH LAG)
36.383... three frames faster than:
Spikestuff wrote:
TASVideos uses a different framerate to calculate the time compared to what Microstorage uses.
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.
I decided to join this frame war so here is my 2183 frames run (3 frames faster than current). I optimized the jump through the slope which might can be optimized even more (AAAAH LAG)
Very nice. did you just improve the slope jump part? or did you use MESHUGGA's first room improvement as well?
I decided to join this frame war so here is my 2183 frames run (3 frames faster than current). I optimized the jump through the slope which might can be optimized even more (AAAAH LAG)
Very nice. did you just improve the slope jump part? or did you use MESHUGGA's first room improvement as well?
I used your movie but I guess there are more optimized WIPs somewhere in this thread
Warning: Might glitch to creditsI will finish this ACE soon as possible
(or will I?)
Here's a one frame improvement until entering room 3.
I saved one frame in room 2 but I'm not sure if the 3rd room will work as fine because the last enemy doesn't like to jump...
I might look into the physics of this game and understand how the slope jump works...
Warning: Might glitch to creditsI will finish this ACE soon as possible
(or will I?)
Joined: 4/17/2010
Posts: 11475
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
Anyone knows what affects their behavior? Having a list of RAM addresses could help to figure out.
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.
I have to say, I'm really liking how tightly this run is being optimized. I never could've done all this debugging and such, so I'm glad that others who can utilize those methods to improve the run have done so. This is going to be one solid, hard-to-beat final run.
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
This is what makes TASVideos so great. We have a submission, others take it and improve it. I have been watching some Zelda Speedruns and those games are broke. I thought Nintendo knew how to make a game. Guess not. Mario has some broken mechanics, Zelda has bad clipping issues in their 3D games, and now Kirby, just sends you to the end of the game just because you went into some water.
When TAS does Quake 1, SDA will declare war.
The Prince doth arrive he doth please.
I strongly suspect that no remotely-complicated game is free of game-breaking bugs. :) It's just that Mario, Zelda, et al get thousands of times more scrutiny than most other games, so their bugs are more likely to be brought to light.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 4/17/2010
Posts: 11475
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
Since this submission doesn't imply any judgment decision anymore (nothing to accept or reject), I'm thinking of setting it to delayed until you guys come up with something more or less final. Then as I said, there shall be a new submission crediting all the actual authors, and this one will then be canceled/rejected. What do you think?
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.
By testing I figured out that if you don't jump, the next enemy will always do the same. Then I searched RAM for a value that changes only after I jumped and I found $003E and $003F. A quick cheat test and I found out that these affect what the enemies do and thus they are the RNGs.
Now how do they advance?
Well, after going through a trace log I couldn't really find a simple formula for it but I wrote a lua script that calculates future RNGs. It does a lot of shifting and rotating with these two values... 11 times.
And how do they determine what the enemy does?
I could somewhat simplify that formula. It adds and subtracts a few values indexed by $003E and the result is a number between 0 and 3 so that there are 4 different things that the enemy can do.
For example a Waddle Doo:
0 - jumping
1 - walk
2 and 3 - attack
Why does jumping call the RNG?
Because it is not jumping that changes the RNG, it is landing! The star that flies away from Kirby when he touches the ground can have 8 different directions.
(It is determined by $003E % 8 where 0 is upwards and then it goes clockwise so that 7 is top left)
The lua script can be found here.
With that knowledge I went ahead and completely started a new movie but I didn't find any better routes for RNG. I could however reduce the lag for some places... only to get more lag on other places (sometimes even slowing down can remove lag frames). I ended up with a total of 2183 frames... which we already had... damn.
btw, to make that movie work on the new PPU just replace the last frame by an input that presses every button except Select
Warning: Might glitch to creditsI will finish this ACE soon as possible
(or will I?)