TASVideos

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

Game Information

NES Darkwing Duck

Darkwing Duck (1992) is a platformer somewhat similar to Mega Man in gameplay and difficulty. The arrow gun allows the player to climb up walls and use creative shortcuts so that the absolute shortest route can be taken. In case you are wondering why the character keeps on jumping so much, it is because he has to wait a short amount of time before being able to walk. With constant jumping these stops can be avoided.

Total movies: 2


[Tier: Moons][Console-verified]NES Darkwing Duck (USA) "pacifist, no subweapons" in 12:35.66 by feos.
FCEUX movie (.fm2) (date: 2015-06-03)
MKV file via BitTorrent (Modern HQ) (size: 20.25 MB, length: 14:09)
MP4 file via BitTorrent (Compatibility) (size: 29.46 MB, length: 14:09)
Mirror archive.org (MKV Modern HQ)
Mirror archive.org (MP4 Compatibility)
Watch on (www.youtube.com)
Submission #4666 — Author's comments
Discuss this movie
Rating: 7.3 (12 votes)
View Publication
- Contains speed/entertainment tradeoffs
- Demonstration
- Pacifist version
- Takes damage to save time
- Heavy luck manipulation
- Genre: Platform
The city of St. Canard is plagued by an unseen crime wave. The intelligence agency S.H.U.S.H. suspects that the shady organization F.O.W.L. and their valued operative Steelbeak are its causes. The caped superhero Darkwing has made quite some enemies in the criminal circles thanks to his past heroic deeds, and now the entire city has to pay for that. Naturally, the valiant duck is determined to travel through the dangerous streets of St. Canard, defeat his foes, and foil Steelbeak's plans.

Darkwing Duck is a side-scrolling platform game featuring the titular character from the Disney television series. The gameplay is similar to Duck Tales, also resembling Mega Man games in many ways. Darkwing's default weapon is a gas gun; special adapters that modify its functions can be collected during exploration. By using his cape, Darkwing is able to deflect some of the enemy projectiles. Weapons can be changed via a sub-screen.

For a "pacifist" type of completion, this run avoids killing enemies (they might also have dropped health refills, so health management is mandatory), and to offer maximum variety in addition to the any% version, doesn't use the subweapons (yet to save a single enemy's life, a single arrow is used). It offers some fresh action and manipulation on bosses, but can't be done entirely along with pacifist, so feos has to use a single arrow to save a single enemy's life.


[Tier: Stars][Console-verified][Fastest Completion]NES Darkwing Duck (USA) in 10:59.5 by AnS & Randil.
FCEU movie (.fcm) (date: 2007-08-24)
MKV file via BitTorrent (Modern HQ) (size: 21.24 MB, length: 11:57)
MP4 file via BitTorrent (Compatibility) (size: 30.08 MB, length: 11:57)
Mirror archive.org (MKV Modern HQ)
Mirror archive.org (MP4 Compatibility)
Watch on (www.youtube.com)
Submission #1673 — Author's comments
Discuss this movie
Obsoletes movie #174 (11:35.15)
Rating: 8.0 (57.5 votes)
View Publication
- Takes damage to save time
- Heavy luck manipulation
- Genre: Platform
Darkwing Duck (1992) is a platformer somewhat similar to Mega Man in gameplay and difficulty. The arrow gun allows the player to climb up walls and use creative shortcuts so that the absolute shortest route can be taken. In case you are wondering why the character keeps on jumping so much, it is because he has to wait a short amount of time before being able to walk. With constant jumping these stops can be avoided.

This movie is a joint venture between AnS and Randil to improve the previous run by Walker Boh, resulting in 35.7 seconds saved through means of extensive optimization, luck manipulation and lag removal. We recommend reading the authors' comments for more details.

See this run replayed on an actual Famicom console.

Total movies: 3


[Tier: Moons]NES Darkwing Duck (USA) in 13:26.95 by Walker Boh.
Famtasia movie (.fmv) (date: 2004-05-05)
MP4 file via BitTorrent (size: 22.3 MB, length: 14:50)
MP4 file via BitTorrent (Modern HQ) (size: 26.14 MB, length: 14:50)
Mirror www.archive.org
Mirror www.archive.org (MP4 Modern HQ)
Watch on (aktanusa.000webhostapp.com)
Watch on (www.youtube.com)
Submission #1219 — Author's comments
Discuss this movie
Rating: 6.1 (3 votes)
View Publication
- Genre: Action
- Genre: Platform

This movie has been obsoleted!

Click here to see the movie that obsoleted it.
This was the first Darkwing Duck publication. The author avoided taking damage and it features the route choice retained in the next few publications. The author does a good job of manipulating gas refills to use the super arrow more.

This is a historic movie, submitted and obsoleted before the creation of the database-based (and wiki-based) site engine, before July 2004.

It was inserted to the database in a history revival project by Bisqwit in autumn 2006.


[Tier: Moons]NES Darkwing Duck (USA) in 11:35.15 by Walker Boh.
Famtasia movie (.fmv) (date: 2004-08-27)
AVI file via BitTorrent (size: 35.11 MB, length: 12:49)
Mirror www.archive.org
Watch on (www.youtube.com)
Submission #293 — Author's comments
Discuss this movie
Obsoletes movie #73 (12:32.87)
Rating: 6.8 (20 votes)
View Publication
- Takes damage to save time
- Heavy luck manipulation
- Genre: Action
- Genre: Platform

This movie has been obsoleted!

Click here to see the movie that obsoleted it.
This is the fifth Darkwing Duck movie made, and the second one published. This movie is 58 seconds faster than the previous version by the same author.

The game is a basic platformer but thanks to a certain weapon this movie never gets boring. The arrow gun allows the player to climb up walls and use creative shortcuts to optimize all movements so that the absolute shortest route can be taken. In case you are wondering why the player keeps on jumping so much, it is because landing and not jumping again immediately makes the player stop for a short period of time. With constant jumping these landings can be avoided.


[Tier: Moons]NES Darkwing Duck (USA) in 12:32.87 by Walker Boh.
Famtasia movie (.fmv) (date: 2004-05-29)
MP4 file via BitTorrent (size: 21.68 MB, length: 13:56)
Mirror www.archive.org
Watch on (aktanusa.000webhostapp.com)
Watch on (www.youtube.com)
Submission #203 — Author's comments
Discuss this movie
Obsoletes movie #617 (13:26.95)
Rating: Too few votes (1) to display
View Publication
- Genre: Action
- Genre: Platform

This movie has been obsoleted!

Click here to see the movie that obsoleted it.
Fourth release of Darkwing Duck timeattacks - this version by Walker Boh again.
This is 18 seconds faster than the previous version by Frenom.
#49157545983691035 - Arrow Glitch
dwd - arrow glitch.bk2.bk2 (3.19kB bk2 movie [NES])
Uploaded 2018-08-14 19:21:37 by Zimond (2 files)
For NES Darkwing Duck (6 files)
In 00:16.87 [1014 frames], 332 rerecords)
2614 views, 235 downloads

BK2 begins from savestate

Info Download

#39495253931246512 - Platform Skip - Megavolt
mvplatformskip.bk2 (2.93kB bk2 movie [NES])
Uploaded 2017-06-05 15:53:50 by Zimond (2 files)
For NES Darkwing Duck (6 files)
In 00:08.94 [537 frames], 179 rerecords)
4159 views, 330 downloads

BK2 begins from savestate

Info Download

#20153532394606087 - DWD SB 0kills
zerokillssteelbeakconcept.fm2 (1007kB fm2 movie [NES])
Uploaded 2015-01-16 14:26:53 by EgixBacon (19 files)
For NES Darkwing Duck (6 files)
In 12:25.51 [44804 frames], 4707 rerecords)
6397 views, 648 downloads
This movie is just to show that you can avoid killing a certain enemy by using an arrow to go over the top. This branches off from the previous WIP - the actual run will not use arrows.
Info Download

#20111382951453684 - Darkwing Duck final level
darkwingduckarrrowwalk.fm2 (49.3kB fm2 movie [NES])
Uploaded 2015-01-14 16:53:28 by XYZ (1 file)
For NES Darkwing Duck (6 files)
In 00:32.15 [1932 frames], 20 rerecords)
6257 views, 615 downloads

FM2 file begins from a savestate

Info Download

#20105242395548292 - Pacifist Duck - 6/7 done
darkwingpacifist6levelsdone.fm2 (903kB fm2 movie [NES])
Uploaded 2015-01-14 10:15:15 by EgixBacon (19 files)
For NES Darkwing Duck (6 files)
In 11:09.1 [40212 frames], 4425 rerecords)
6375 views, 638 downloads
The 6 bosses have been taken down, now it's time to figure out what the heck to do about Steelbeak's stage.
Info Download

#18557461694126948 - Darkwing Duck - Pacifist Test Run
darkwingpacifisttest.fm2 (1.03MB fm2 movie [NES])
Uploaded 2014-11-05 17:20:22 by EgixBacon (19 files)
For NES Darkwing Duck (6 files)
In 13:04.91 [47172 frames], 2651 rerecords)
6616 views, 646 downloads
Just a little something I made over the course of about 11 days. Rules: 1) Do not kill enemies except where absolutely necessary. 2) No sub-weapons. Not sure whether I want to make a submit-able run because at times I really hated TASing this (hint: Liquidator crows, etc.).
Info Download

Positioning

Y subpixels roll "randomly" every frame, like in Duck Tales and Chip'n'Dale.

Randomness

Addresses $E4-$E7 get RORed every gameplay frame, and sometimes additional small manipulations are done with either $E4-$E5 or $E6-$E7 whenever random even is about to occur (item drops from dying enemies, bosses actions).

End values can be affected by killing enemies at different frames, by spawning enemies that roll RNG at different frames.

Bosses

Each boss has his own randomness (if any) and can't be manipulated during the fight. But they roll their RNG routines at fixed time relatively to boss room start, so by entering it at different frames one should be able to manipulate the pattern the boss will take during the whole fight.

The Liquidator

He moves around the screen, then whenever he reaches position 0x40, 0x80, or 0xC0, he rolls RNGs 3 and 4, puts to Y register, reads from $9F6F + Y register what he should do: show up or resume swimming.

QuackerJack

Runs around a platform until you step on it, the next frame jumps up or down from it. If he is at the top, he will jump down, if at the bottom, he will jump up, but if he is in the middle, he rolls RNGs 1 and 2, puts to Y register, then reads from $9969 + Y register for whether he should jump up or down.

Wolfduck

Is vulnerable only when the Moon is covered with a cloud, which travels by the rule: when the room fades in, the cloud is covering the Moon, and the timer ticks from 78 to 0 every frame, then the cloud starts moving left around the screen. When it reaches the Moon again, it counts down from 0xB4 to 0 and starts moving again.

Megavolt

Jumps on a middle platform, rolls RNGs 3 and 4, puts result to Y register, reads from $AA69 + Y register for whether he should jump up or stay on the platform. Then shoots from the platform he's on and walks off to cross the screen and jump on the other middle platform, to roll RNG once again.

Moliarty

Starts fixing whichever machine gets broken. Walks around the platform until you touch it, then he throws a hammer in you and jumps away. His behavior doesn't really matter, since even with default gun he dies in one cycle.

Bushroot

At certain moments, while jumping, $049F decrements from 7 to 0. If Bushroot is jumping when that address is 6, 4, or 2, he will roll RNGs 1 and 2, write the result to Y register, then read from $A83F for what he should do next.

Steelbeak

His behavior also doesn't matter, since bullets can reach him from the back after going through him.

Script

  function getb(i,offset)
  	return memory.readbyte(i+offset)
  end
   function getw(i,offset)
  	return memory.readword(i+offset,i+offset+0x10)
  end
  function object(slot)
   	a 	= 0x400 + slot
  	facing	= getb(a,0x000)
  	timer1 	= getb(a,0x010)
  	state	= getb(a,0x020)
  	timer2	= getb(a,0x030)
  	yScr	= getb(a,0x040)
  	xScr	= getb(a,0x050)
  	ySub	= getb(a,0x060)
  	xSub	= getb(a,0x070)
  	timer3	= getb(a,0x080)
  	action	= getb(a,0x0d0)
  	xPos	= getw(a,0x0f0)
  	yPos	= getw(a,0x110)
  	xVelSub	= getb(a,0x130)
  	xVel	= getb(a,0x140)
  	yVelSub	= getb(a,0x150)/256
  	yVel	= memory.readbytesigned(a+0x160)
  	id	= getb(a,0x170)
  	if yVel >= 0
  	then ySpd = yVel + yVelSub
  	else ySpd = yVel - yVelSub
  	end
  	if action > 0 then
  		--gui.text(xScr,yScr,string.format("%X",state))
  		gui.text( 1,1,string.format(
  			"X: %04d.%d\nY: %04d.%03d\nS: %.3f",
  			xPos,xSub/25.6,yPos,ySub,ySpd))
  	end
  end
  function rng()
   	rng1 = memory.readbyte(0xe4)
  	rng2 = memory.readbyte(0xe5)
  	rng3 = memory.readbyte(0xe6)
  	rng4 = memory.readbyte(0xe7)
  	gui.text(10,10,string.format("%02X:%02X:%02X:%02X",rng1,rng2,rng3,rng4))
  end
  function stuff()
  	xCam		= memory.readword(0xfc)
  	yCam		= memory.readword(0xfa)
  	bossInv		= memory.readbyte(0xed)
  	bossHP		= memory.readbyte(0xee)
  	bossSlot	= memory.readbyte(0xef)
  	bossX		= memory.readbyte(0x450+bossSlot)
  	bossY		= memory.readbyte(0x440+bossSlot)
  	if bossHP > 0 then
  		gui.text(bossX,bossY,string.format("%d\n%d",16-bossHP,bossInv))
  	end
  	--rng()
  	object(0)
  	gui.text(xScr,yScr,memory.readbyte(0x50))
  end
  emu.registerafter(stuff)