TASVideos

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

Submission #4308: pirohiko & FinalFighter's NES Rockman in 00:32.11

Console: Nintendo Entertainment System
Game name: Rockman
Game version: JPN
ROM filename: Rockman (J).nes
Branch:
Emulator: FCEUX 2.1.5
Movie length: 00:32.11
FrameCount: 1930
Re-record count: 98415
Author's real name:
Author's nickname: pirohiko & FinalFighter
Submitter: pirohiko
Submitted at: 2014-05-13 14:01:32
Text last edited at: 2015-07-28 16:02:25
Text last edited by: feos
Download: Download (954 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)

Game objectives

  • Aims for fastest time
  • Manipulates luck
  • Uses game-breaking glitches
  • Achieves credits early

DelayFFObjectGlitch

DelayObject is taken out from bank2 (usually bank6, instead) when NMI interrupts the process of objectFF. Object 00-FF appears in the Iceman stage. FinalFighter discovered that $600 was executed, when DelayObject55 appeared. We increase the number of instructions executed in one frame by manipulating music, drop items and Rockman's action so that NMI interrupts the particular process in the frame.

Instructions

ObjectFireDelay is manipulated by DropItems. $23 increases every frame, and DelayObject55 may appear when $23 is 55.
$0023 55
$0600 54 F8 50 4D 54 F8 F8
$0650 00 AC 21 00 6B 17 00
$06F0 1B 3C 3E 1B 3D 3C 20

DelayObjects is taken out

$0023 56
$0600 54 F8 50 4D 54 F8 F8
$0650 3C AD 22 1F 6C 18 00
$06F0 03 3C 3E 01 3D 3C 55

DelayObject55 calls $600

  0600: 54 F8 NOP F8,X               ; Y of Rockman = 54
  0602: 50 4D BVC $0651              ; Y of Rockbuster1,2 = 50,4D
  0650: 3C UNDEFINED (NO USE)        ; ObjectFireDelay of DelayObject3 = 3C
  0651: AD 22 1F LDA $1F22 = #$0A    ; ObjectFireDelay of DropItems = AD,22
                                     ; ObjectFireDelay of DelayObject1 = 1F
  0654: 6C 18 00 JMP ($0018) = $C460 ; (instruction of StageClear)
                                     ; ObjectFireDelay of DropItems = 6C,18
                                     ; ObjectFireDelay of DelayObject55 = 00
                                     ; Input of Controllers = $0018 = 60,C4
  C45E: A9 00 lda #$00
  C460: 85 31 sta $31(CurrentStage)  ; <-- Jumped here
  C462: 4C 0C C1 jmp $C10C

History

  • 11/01/21 - FinalFighter found DelayObjectFFGlitch.
  • 14/04/29 - FinalFighter read about the article of SMB3 ACE TAS. http://ch.nicovideo.jp/TAS/blomaga/ar516177
  • 14/04/30 - FinalFighter remembered that some objects had called a RAM address. http://www.yuko2ch.net/rockman/JumpAddressList.txt
  • 14/05/01 - Creation of LuaScripts. FinalFighter and pirohiko confirmed by some cheats that DelayEnding in IceManStage was possible.
  • 14/05/08 - We began to work on a new TAS.
  • 14/05/13 - New TAS completed!

Detailed article with some pictures (written in Japanese)

http://ch.nicovideo.jp/TASVideos/blomaga/ar529967
こちらには日本語による詳細な解説・図説があります。

Special Thanks

  • Shinryuu - He looked at and encouraged our TAS.
  • cstrakm - He discovered the DelayWaterCurrent. It led to the discovery of DelayObjectGlitch.
  • Inzult - He verified DelayObjectGlitch with the real NES.
  • Tekepen - Explanation of 6502 was helpful.
  • Kureyuni - Explanation of undefined code of 6502 was helpful.
  • AlphaBeta, NinjyaSuperK, Vagla, Bisqwit - Rockman1's analysis data were helpful.
  • adelikat, Nach, Dwedit - The problem of Old PPU of FCEUX was solved by them.
And...
  • Thank you, everyone of TASVideos.

P.S.

Rockman went to the Iceman stage and felt like going back home. It'll come out after the credits that Rockman actually doesn't complete the game. Press start after the credits, and you'll see...

The next is renewal of Rockman2!


Nach: So this is quite a TAS to deal with. No matter how I handle it, someone is going to want to strap a bomb to my car. I'm surprised I even have the guts to judge this run, as some of the comments leave me feeling the heat of the fire and gasping for air. Hopefully, now you'll understand why I did not rush to judge this, and I'm sorry for the delay.

On the one hand, most of the gameplay is cut, and all we're left with is a quick jump to the ending credits. On the other hand, only a single icy level is played (with a different single level marked as completed). This run crashes part of the game mechanics as the previous run does, albeit a bit differently, and that run's glitch usage's doesn't beat the game in a flash.

Now, unless you were living under a rock, inside a bubble, or in a wood shed for the past few years, you saw the previous run, loved it, and don't want the previous movie obsoleted. The completion state is also controversial, as to whether the game is really completed or not, and possibly this run should be rejected.

I personally tango to my own metal, and like to handle things in a shocking and most electrifying manner, although fairly so. I find the cool thing to do in this situation would be to create a new branch, but being mindful of the issues, not the one you were thinking. This is setting a new precedent, one which may require further recategorization of existing movies, and that's okay.

I deem the following branches viable:

  • All levels completed using every technique available (the currently published run).
  • All levels completed without using the magnet beam, which incidentally is responsible for most of the glitches seen in the above branch, and is also deemed impossible by the creators.
  • A quick as possible run (this run).

This kind of branching also helps with other problematic games we've seen like Super Mario World, Super Mario Land 2, Super Metroid, and Kirby Super Star, which incidentally, all those games actually report some sort of completion percentage.

Accepting this run for the new low completion branch for this game (which also happens to be game-end glitch or whatever we're currently calling it).

Guga: Processing...


Similar submissions (by title and categories where applicable):