Submission #6078: sugarfoot's Arcade Double Dragon in 06:10.56

MAME-rr 0.139 v0.1 beta
Submitted by sugarfoot on 8/24/2018 7:13 AM
Submission Comments
This run (5:57) is a 20 second improvement of the previous submission (6:17). First time I've ever broken the 6 minute mark! Huge gains in route optimization after lots of research, and better understanding of AI/Game mechanics
Speedrun Playtime based on time between Player is controllable, to the final kill shot on boss.


  • Emulator used: Mame-RR 0.139-v0.1-beta
  • Difficulty: Easy


  • Lots of enemies thrown into cliffs, holes, ledges, you name it!
  • Intentional damage taken for positioning
  • Intentional Death to save time
  • Improved combo sequences
  • Lots more dynamite in Stage 4!
  • Intentionally hit trade to improve time

Link to previous submission (6:17 completion)

Special Acknowledgment

I would like to give a huge thank you to r57shell - without his help/patience explaining things to me, I never would have finished this video (My adventures trying to recreate stage 2 ledge glitch were my breaking point: Forum/Posts/473282)

RAM Watch, Combos, etc

Please visit forum thread Forum/Topics/19968 - I maintain this thread for general speed run notes

Overview of Improvements Below!

Stage 1, Battle Sequence 1 (Black Roper, White Roper, White Williams)

Stronger grouping of enemies, simultaneous kills, saved 28 frames

Stage 1, Battle Sequence 2 (Linda, White Williams, Adobo)

Better use of knockdown time between emeies, stronger coordination of hits between enemies, this saves me ~40 frames

Stage 1, Battle Sequence 3 (Black Roper, White Williams, Bolo)

~100 frames saved. Discovered it's faster to not try and kill Black Roper and Bolo at same time. Instead I do damage on Bolo as soon as possible (first frame he's active on screen)

Stage 2, Battle Sequence 1 (White Williams, Black Williams, Roper)

50 frames saved using intentional death route, and manipulating AI to keep Black Williams stuck in place (game marks him as dead)

Stage 2, Battle Sequence 2 (Black Williams, White Roper)

Saved another 70 frames with an optimized route to throw White Roper on ledge. But I'm also losing a little time thanks to additional lag frames from all the enemies on screen

Stage 2, Battle Sequence 3 (Mix of Lindas, Ropers/Williams, Jeff)

How to get enemies to fall off ledge:
  • 100% guaranteed - works on All Enemies: (Y, Y_frac) < (FF, 00)
  • Roper/Williams: (Y, Y_frac) <= (FF, 40)... not 100% reliable, not familiar enough with Assembly code to understand the fall and fetch ground logic
Y position manipulation: I jam Lindas into corner to adjust their Y positions. I do this because otherwise, the Y values will never be below (FF, 00)
Why do you have to manipulate Y position? I do this to guarantee the final Y positions of the last 1 or 2 steps before enemies get to ledge are divisible by 2 (Y % 2 == 0). This is the only way to 100% guarantee Y will be equal to FE when get to ledge. The slight "bump" I give to Lindas by elevator changes their Y value to something that guarantees I'll get a Y value equal to FE.
If I don't manipulate Y positions, All direct paths to ledge (meaning mobs never walk back up towards elevator) always result in the same Y values once they get to the ledge. This leaves the Y positions for Lindas always greater than (FF, 00).

Stage 3, Battle Sequence 1 (White Williams, Black Roper x2, White Roper, Linda)

Discovered I don't have to walk all the way into corner to throw enemies off ledge.
Also do a better job optimizing battle of Black Roper and Linda.
70 frames saved

Stage 3, Battle Sequence 2 (White Roper, Williams x 3)

Huge savings gained by punching Williams immediately back into pit. This combined with better enemy route saves me almost 200 frames

Stage 3, Battle Sequence 3 (Bolo x 2, Williams x 2, Roper)

Use of punch instead of kick to knock Williams into pit.

Stage 3, Battle Sequence 4 (Williams, Roper, Adobo x 2)

Another 400 frames shaved off total time
I use the knife on Adobos instead of Roper - walking straight to end of stage to kick off battle ASAP.

Stage 3, Battle Sequence 5 (Jeff x 2, Roper)

No real change here

Stage 3, Boss Fight

Minor optimizations/cleanup save a few frames

Stage 4 - Double Bolos, Roper x 2, Williams

This was a first attempt at bundling all enemies together for kills. Lots of intentional damage here to keep my dynamite and knife throwers in place
Although the approach was highly optimized, it was only 1 frame faster overall (thanks to lag frames from all those enemies on screen)

Stage 4 - Boss Fight

200 Frames faster - discovered Willy can teleport glitch, and I take a straight path to edge of ledge

What's next? How fast can you make this????

There's "instant death" logic in the Assembly code for this game, but I'm not sure how many different places call this subroutine (still analyzing code). At the moment, I don't think it's related to anything except stage 4 gargoyle spears, and dynamite blast hitting 1P or 2P.. might not be too useful
Stage 4 group battle prior to boss fight. Definitely lots of improvements to be had there - ideal goal is to kill everything with two sticks of dynamite (much faster than knives, as it's 32HP of damage per hit vs 16HP of damage)
Stage 2 ledge falls may also be optimizable (Unfortunately my assembly knowledge isn't strong enough yet to figure this out).

feos: All I can say here is that I loved it. Accepting as an improvement to [3703] Arcade Double Dragon "1 player" by sugarfoot in 06:44.34.
fsvgm777: Processing.
Last Edited by adelikat on 10/27/2023 3:16 AM
Page History Latest diff List referrers