Tool-assisted game movies
When human skills are just not enough

Submission #3411: MUGG's NES Kirby's Adventure "glitched" in 05:44.57

Console: Nintendo Entertainment System
Game name: Kirby's Adventure
Game version: USA PRG0
ROM filename: Kirby's Adventure (U) (PRG0) [!].nes
Branch: glitched
Emulator: (unknown)
Movie length: 05:44.57
FrameCount: 20708
Re-record count: 18020
Author's real name: Christoph H.
Author's nickname: MUGG
Submitter: mugg
Submitted at: 2011-12-28 00:01:40
Text last edited at: 2012-01-08 15:10:21
Text last edited by: Nahoc
Download: Download (4025 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:

(Link to video)

About the run

  • Takes damage to save time
  • Uses a game restart sequence
  • Abuses glitches
  • Removes lag like a boss
  • Genre: Platform

Used emulator: fceux-2.1.5-win32

This run goes to the credits 30 minutes and 57.30 seconds faster than JXQ's run, by using a new glitch. (In the comparable sections, I saved about 5~6 seconds.)

This video which I found some years ago started it all! I deemed the stone glitch in 6-1 as shown in the video useless because in my initial tests I could make FCEU only crash and there was nothing more to it. Also, the player used either Nestopia or Nintendulator (I cannot remember which), so I considered it an emulation bug.

Just a few days ago I looked at the video again, and tried testing it on FCEUX. I almost concluded it to be useless again, but by pausing the game at the same frame it crashes I could get different results and often it went to the credits sequence! So I posted about this in the forum topic to start up some discussion on it. Inzult and CoolKirby console-verified the glitch and I did quite a bit of glitch hunting in order to find a way to do the glitch early in the game. Luckily, I did find a way:

There is a very tight passage Kirby can move into, at the bottom of the screen. By moving back into the water - from the side - he can do the glitch. There are a lot of places like this and 2-3 just happens to have the first such place so it's the level the glitch is used in.

About the stone glitch

The glitch happens if you transform into stone kirby at the same time you are underwater. This can only happen when moving into a body of water from below or from the side. The glitch thereupon crashes the game or makes it go to the credits sequence, rarely it can warp you to random places. I had it play the world 1 intro and then warp me into world 5, level 1, room 2. And I had it warp me into the level end sequence, then I got out of world 1, level 1's door and nothing was unlocked...

Due to the nature of the glitch it will send you to the credits screen (by pausing on the same frame it crashes) almost all the time, or it won't at all. I got the credits glitch to work by taking the savegame from JXQ's run when he arrived at 6-1, mixing for stone in one of the previous levels and then doing the glitch in 6-1. I noticed the glitch doesn't work very well when you played through a sequence of levels beforehand - which might be why my initial tests on FCEU didn't bear fruit because I didn't reset the game back then. When the game is freshly reset, the credits glitch could be performed quite reliably.

So this TAS needed to reset the game somewhere prior to entering 2-3, which is the level the credits glitch is done in. But no matter how it was planned, quite a lot of time would be lost.

If I had reset after 1-3, 1-4 or 2-1, I would have lost UFO and there weren't any opportunities for quick mixes right at the next stage's beginning. I just figured that going to 1-1 after finishing 2-2 and mixing for stone there, then doing the glitch in 2-3 was the fastest. Of course it would save quite some time not having to reset the game, but the credits glitch just never happened in any of my no-reset tests I did in this TAS.

Memory addresses

address purpose
01A5 Lag flag (FCEUX' lag counter doesn't work well with the game)
05B9 X Speed Low-byte
05BA X Speed High-byte
05BD Y Speed Low-byte
05BE Y Speed High-byte
0083 X Position Low-byte
0095 X Position High-byte
0071 X Position subpixels
00B9 Y Position Low-byte
00CB Y Position High-byte
00A7 Y Position subpixels

The lag flag address 01ED JXQ posted about in the topic doesn't work at all. I don't know if this is due to erroneous memory search or due to the PRG0 and PRG1 difference.

I wrote a Lua script that shows X/Y Position, speed and lag on the screen. When loading a state using F1~F10, the lagcount is cleared. There are two problems with my script though: When holding F1~F10, lag occuring when currently not in frame-by-frame mode isn't counted. And sometimes when pressing F1~F10 too quickly, it doesn't register and the lagcount isn't cleared.

Thanks to

Inzult: For console-verifying the credits glitch
CoolKirby: For having someone to talk to in the forum topic, and also console-verifying the glitch
Everyone else who posted in the forum topic and was interested

Mukki: Judging...

Mukki: Accepting for publication as a separate "glitched" category.

Nahoc: Processing...

Similar submissions (by title and categories where applicable):