Mega Man 2 - Quick Man A.I. Explained - Behind the Code

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ก.ย. 2024
  • Breakdown of Quick Man's Behavior and the BUGS in Mega Man 2 for the NES
    If you would like to support this channel, here is a link to the Displaced Gamers Patreon page - / displacedgamers
    Twitter: / displacedgamers
    Facebook: / displacedgamers
    Instagram: / displacedgamers
    Music by:
    / hariboosx
    / @wolfandraven
    #NES #MegaMan #Programming

ความคิดเห็น • 298

  • @Truffle_D_Toad
    @Truffle_D_Toad 2 ปีที่แล้ว +286

    Quick Man is so fast that he runs into a wall before even realizing he hit it.

  • @Frewition
    @Frewition 2 ปีที่แล้ว +70

    Quick was always my favorite robot master. It's fun that the running into walls was made a canon part of his character. The lore says that he moves so fast that got his visual processing lags behind his actual movement

    • @tjcihlar1
      @tjcihlar1 2 ปีที่แล้ว +4

      Oh I hated the guy, too many deaths. And after having to go through the stage with the instakill bars.

    • @newton4010
      @newton4010 9 หลายเดือนก่อน +1

      ​@@tjcihlar1 sane, after playing the japanese version of Mega Man the Wily Wars ( Rockman Mega World ), which is the best version to play ( the PAL version is slowed down ), I sufferend against this guy. Each shot dealt 1 damage, each shot = 1 damage. It's basically impossible to kill that guy so I used 2 of his weaknesses.

  • @zazelby
    @zazelby 2 ปีที่แล้ว +436

    I read recently somewhere that Quickman's AI was designed with a flat floor in mind, so the devs raised the floor of Quickman's room like that to deliberately trigger the AI mistakes and make him a little easier than he otherwise would have been. And then, later, you fight him on a flat floor during the rematch to make him harder. I wish I could find where I read that again. (I'll post again if I can find it) :D

    • @GeneralBolas
      @GeneralBolas 2 ปีที่แล้ว +66

      That's weird because, while the raised floor does give you some opportunities to take advantage of his AI, it also makes it much harder to jump *over* him when he charges at you. On flat ground, jumping over him is pretty easy.

    • @kruks
      @kruks 2 ปีที่แล้ว +8

      @@JamieVegas - Yep. You're welcome.

    • @rickwhite3817
      @rickwhite3817 2 ปีที่แล้ว +1

      @@JamieVegas p

    • @InternetSlavicMan
      @InternetSlavicMan 2 ปีที่แล้ว +21

      @@JamieVegas While this is a theory I thought of in a few minutes, I think it's plausible. Mega Man 2 was developed in the free time of the team between other projects. So, because of that it had some time crunch. Which means some of the rough edges of the game weren't ironed out in time for the release. I think Quick Man's A.I. bugging out on the raised floor is a part of that.

    • @KaizomanGD
      @KaizomanGD 2 ปีที่แล้ว +12

      First the flat floor applies to all the remaches with some things like metal man’s conveyer being removed and flash man not having ice physics. The second thing is that Quick Man is actually much harder to fight on the original arena than the flat floor. I have done buster only and no damage runs on almost every robot master in every game and I for a fact know it took me longer to do a perfect run on quick man on the original elevated room than the flat floor. Also the bugs make him even harder as sometimes he will just run over the gaps while sometimes he will get stuck and the player doesn’t know which of the sequences will happen.

  • @topazlight1586
    @topazlight1586 2 ปีที่แล้ว +267

    It's so interesting how clumsy AI coding results in a slight difficulty increase during the endgame rematch! Kinda reminds me of how Space Invaders' gradually increasing speed is really just slowdown decreasing as the player reduces the number of sprites the game has to keep track of.

    • @jasonblalock4429
      @jasonblalock4429 2 ปีที่แล้ว +30

      Yeah, it's one of those cases where you have to wonder if the bugs were deliberately left in. It seems like the "buggy" version of the fight is more dynamic and interesting than a "fixed" version. He's easier to hit if he gets stuck, but you can never predict when you'll get a clear shot. It's a bit of accidental randomness that works in the fight's favor.

    • @MakotoIchinose
      @MakotoIchinose 2 ปีที่แล้ว +4

      TL;DR: It's not a bug, it's a feature

  • @poopoo-dk4hu
    @poopoo-dk4hu 2 ปีที่แล้ว +11

    roahmmythril must be relieved, his long time rival explained...

  • @SmeddyTooBestChannel
    @SmeddyTooBestChannel 2 ปีที่แล้ว +54

    this channel is one of the few times i genuinely get excited for someone to lecture me over the internet about something

  • @ValkyrieTiara
    @ValkyrieTiara 2 ปีที่แล้ว +100

    I wonder if this might have been a known bug that was left in on purpose? Quick Man in his "broken" state is already arguably the hardest of the 8 robot masters in Mega Man 2, so the additional "downtime" to get a few hits in now and then as well as what is effectively a randomization of his jump count could have been seen as being better than the intended behavior, and was intentionally left in. Sometimes "good enough" is better than a polished product lol

    • @MasterKnightDH
      @MasterKnightDH 2 ปีที่แล้ว +3

      Wouldn't the nullification of the first jump make the second jump's boomerangs harder to combat simply by making them less predictable? There are times when speed is less of a threat than unpredictability.

    • @ValkyrieTiara
      @ValkyrieTiara 2 ปีที่แล้ว +5

      @@MasterKnightDH Possibly! But two things with that:
      First, I don't know the exact stats for that fight specifically, but GENERALLY speaking their weapon is a robot master's weakest attack. Conversely, worst thing you can usually do when fighting a boss is hug him. This is one of the primary reasons why Quick Man and Heat Man (and, to a lesser extent, Air Man) tend to be the most troublesome fights, and Bubble Man and Flash Man tend to be easier. It's really easy to stay away from the latter, and really hard with the former. To put it another way: Quick Man's most lethal attack is touching you, and I'll take making it easier to avoid that than boomerangs any day of the week.
      The second thing is that, with Quick Man specifically, the hardest part isn't even avoiding damage from boomerangs OR him. It's landing return fire. Any battle with Quick Man is going to fundamentally be a war of attrition, and I feel like anything that makes it easier to hurt him consistently is a hard nerf to the fight.

    • @kered13
      @kered13 2 ปีที่แล้ว +2

      @@ValkyrieTiara Heat Man is very easy, his pattern is simple and and reactable. He's easily the easiest boss in MM2 to beat without taking damage.

    • @kered13
      @kered13 2 ปีที่แล้ว +3

      @LordGoomba Crashman has a simple pattern that is easily manipulated. Once you get it down he is easy to beat with just the buster.

    • @michaelruiz6530
      @michaelruiz6530 2 ปีที่แล้ว +1

      I wouldn't say quick is the hardest it just impossible not to get hit due to his random AI cause the buster does a lot of damage even on difficult. just come to the battle with full health and with luck you will easily win.

  • @fourtwizzy
    @fourtwizzy 2 ปีที่แล้ว +25

    Four years for a CS degree, better education in less than 20 minutes. Keep up the good work my friend.

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน

      what does a CS degree have to do with game dev? its a little broad dontcha think

    • @fourtwizzy
      @fourtwizzy 7 หลายเดือนก่อน

      @@jennjennjenn61992 How did you watch this video and walk away with thinking it is about “game dev”?

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน

      @@fourtwizzy my friend this entire video is gamedev material, how did you watch this video and walk away thinking it "wasn't about game dev" ?

    • @jessedaniels2230
      @jessedaniels2230 7 หลายเดือนก่อน

      @@jennjennjenn61992 My amigo. One does not teach game dev by dissecting a video game, showing you the assembly code, and then how to modify said values using Game Genie codes. The video isn't teaching you how to remake or create Megaman 2 in Unity. They are literally reverse engineering the game code, to find what is wrong, and then fixing it. This has far more to do with computer science than it does game dev. Go ask a game dev the last time the debugged assembly code, or didn't use a premade engine and didn't use a high level programming language.
      Maybe you don't see the parallels between this and computer science, so only believe it to be "game dev"?

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน

      @@jessedaniels2230 my friend there is a lot to address in your comment, a lot of assumptions that make you look silly. There are new NES games made all of the time, assembly code is still code and everything mentioned in all of these videos are used in game dev. I'm not sure where you are getting "unity" from, but that is amateur shit. You sound like a person that doesn't, and cannot, make games - so please stop trying to lecture me about this video that is literally about game development at the core. What are you using the code for? Websites? Is that your CS degree? No? See how assuming works?

  • @nodever2hacksmetroid
    @nodever2hacksmetroid 2 ปีที่แล้ว +57

    SNES ASM hacker here. We love your videos man, you do a great job showing the technical details but quickly summarizing it in an easily digestible way with great visual aids. Of course it helps that Mega Man is one of my favorite NES games. Great work :)

  • @ejmc6378
    @ejmc6378 2 ปีที่แล้ว +9

    15:39 "The vertical check sees that his top right side is stuck in what it assumes is the ceiling." See, I wasn't entirely sure I was following what was going on until you said this, and then it all clicked into place with a horrified, "Oh no. Oh no no no no".

  • @makeitrein7366
    @makeitrein7366 2 ปีที่แล้ว +162

    Definitely an interesting breakdown on AI, especially in a capcom game. Its interesting to see how something as arbitrary as his failed ejection code changes the fight drastically when its fixed. Not sure when you would even get a chance to shoot him! Better get flashman's weapon and pray

    • @residentgrey
      @residentgrey 2 ปีที่แล้ว

      the many tricks to get more out of less create interesting situations.

    • @megacadgeo9758
      @megacadgeo9758 2 ปีที่แล้ว +7

      RoahmMythril Did a no-damage, buster-only run of QUICK MAN's stage. The video is like 10 years oldor something tho

    • @wandwoodgames5699
      @wandwoodgames5699 2 ปีที่แล้ว

      RoahmMythril, is a name I have not heard in years.

    • @TARINunit9
      @TARINunit9 2 ปีที่แล้ว +1

      "Fixed" Quick Man would probably be considered easier by the hardcore players because he would be far more predictable. Vanilla Quick Man can jump randomly and shoot randomly depending on whether or not he gets stuck in the wall. "Fixed" Quick Man does not shoot randomly, you will always be able to tell when he will shoot, making it much easier to dodge

    • @residentgrey
      @residentgrey 2 ปีที่แล้ว

      @@wandwoodgames5699 who is or was RoahmMythril? Feel free to reply with as many game tropes and lines as you please.
      EDIT: AAAAND I see the original line now...lol

  • @Eyetrauma
    @Eyetrauma 2 ปีที่แล้ว +4

    I’m imagining Dr. Wily watching this video and getting increasingly frustrated until he throws a clipboard across his lab

  • @MaxOakland
    @MaxOakland 2 ปีที่แล้ว +7

    I read that Megaman 2 was made under an extremely tight schedule and they only had time to test if the code worked, but didn’t have time to refine it or make sure it worked *well*
    That explains a lot about this

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน

      nah this was on purpose, the ejection looks more natural than the programming fix

  • @thecunninlynguist
    @thecunninlynguist 2 ปีที่แล้ว +65

    I love these breakdowns. As a kid I used to just try and rush most mega man bosses. One AI break down that would be interesting to learn about is the one in Final Fantasy tactics. There have been a few times I've seen it be clever, and more times where they were dumb (mostly ally AI)

    • @residentgrey
      @residentgrey 2 ปีที่แล้ว +5

      I read a piece on the corelation to code in ff5 being relatable to FFT code. Through it I was able to revise my own play strategies in ff5 and got me thinking of how FFT could be fixed to work better. There are many flaws and untold features that need light shed on them in both games frankly.

    • @arciks11
      @arciks11 2 ปีที่แล้ว

      @@residentgrey Do you have a link to that article?

    • @MrVariant
      @MrVariant 2 ปีที่แล้ว +1

      I did an AI FFT battle with description text th-cam.com/video/Zwuu99twlNw/w-d-xo.html
      You need good setup like tailwind (defender) and geomancer as well as use berserker for who attacks. No idea how to set up turn 1 golem. Shame setup is probably needed, let alone Agrias is only good as another class as holy knight has low attack. Did a ton of exploits with that game too.
      Though a technical info like this I couldn’t do.

    • @residentgrey
      @residentgrey 2 ปีที่แล้ว +2

      @@MrVariant geomancy was my go-to backup skill after the samurai blade skills. Hell Ivy alone ended up clutch too many times with its excellent Stop chance. There are some interesting combinations that work in that game, so much so I opt for those combos instead of really using much of what is available.

    • @MrVariant
      @MrVariant 2 ปีที่แล้ว +1

      @@residentgrey oh sure glad I could help. The power garb helps Agrias there as well though surprisingly she makes a better monk with equip sword for higher physical attack and holy sword. Lol the game makes no sense. I know a speed run where rpg limit break abused the time mage's quick for draw out when not doing the obvious with math skill and farmed jp fast by the Friendly Fire Tactics moniker (I'd throw stone or tailwind myself). I owned midlight deep on chocobo with Ramza as an onion knight with glacier gun on chocobo, and Reis' holy breath is rapha on steroids, doing about 400 damage per random hit.
      Final boss I had a vid didn't even get a final turn without Orlandu and reacts by buffing faith lol. th-cam.com/video/WVrKIGX0Gr4/w-d-xo.html

  • @VinsCool
    @VinsCool 2 ปีที่แล้ว +65

    You know the Quick Man flicker would have made so much more sense if it was actually on purpose to give the illusion he moves so fast he blurs.
    I was surprised to learn this was a bug all along! I think this could totally work out, have a simple counter where 1 pixel is added every other frame in either direction, AFTER the velocity logic.
    That would look pretty convincing for running/jumping in a direction at the speed of, well, QUICK, lol

    • @VinsCool
      @VinsCool 2 ปีที่แล้ว +3

      I wonder how much work would be needed to fix the Quick Man's entire behaviour, that would be a pretty cool ROMhack project...
      it's funny how much the explanations make a lot of sense, and make me wonder "did they even test their stuff?" lol

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน

      Don't take it for fact that it's a bug, to me it seems like it's on purpose

  • @spinyjustspiny3289
    @spinyjustspiny3289 2 ปีที่แล้ว +4

    I always thought that Quick Man running into walls was a statement on Wily's recurring "good enough" methodology for designing his robot masters. He made Quick Man run fast, but his processors can't quite keep up with his feet. Kind of like how some species of bug are so small and so fast that they need to stop mid-run because their eyes don't catch enough light.

  • @honorablejay
    @honorablejay 2 ปีที่แล้ว +55

    Wait a minute, Quickman can block certain weapons??? I've never seen that happen before.

    • @serPomiz
      @serPomiz 2 ปีที่แล้ว +13

      you actually have to hit him with those, and generally taht does not happen unless you're testing damages, or have no idea of what's his weackness

    • @speedypichu6833
      @speedypichu6833 2 ปีที่แล้ว +4

      @@serPomiz Yeah, I have only seen it to beat the game without getting hit, because this boss is a massive run killer

    • @smegulate9826
      @smegulate9826 ปีที่แล้ว +2

      Don't remember seeing that either. Seems like a useful deliberate strategy

    • @asteroidrules
      @asteroidrules 21 วันที่ผ่านมา

      I guess that explains why his Battle Network counterpart does the same thing. Quickman.EXE blocks all attacks when he's stationary and can only be damaged while he's jumping or throwing boomerangs.

  • @awesomedata8973
    @awesomedata8973 2 ปีที่แล้ว +15

    Also -- Thanks for fixing Quick Man.
    It's very strange to see him behaving the way he was _meant_ to behave in that stage! :D

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน

      no one is confirming he was *meant* to behave that way

  • @toffeeFairy
    @toffeeFairy 2 ปีที่แล้ว +18

    Always fun to see how one flip in the order messes up everything after that.

  • @Grizabeebles
    @Grizabeebles 2 ปีที่แล้ว +2

    There's an in-universe explanation for bosses in MegaMan games to have bugged code. Dr. Light designed the processing hardware and AI code of the original robot masters while Dr. Wiley took lead on the power core and body design.
    Quick Man having flawed code for handling collisions is just... funny.

  • @luridsorcerer
    @luridsorcerer 2 ปีที่แล้ว +20

    When I first started trying to program games I made exactly the same kinds of mistakes. If that puts me on par with Capcom's NES-era team, I'll consider myself in good company!

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน

      no one has confirmed this was a mistake

  • @ScrambledAndBenedict
    @ScrambledAndBenedict 2 ปีที่แล้ว +3

    I'm willing to bet those glitches were left in to make Quick Man more manageable to defeat. Notably too, his AI was written with a flat arena in mind but they added those bumps to make him easier, no doubt knowing he'd get hung up on them as well to provide more opportunities to hit him (which is why the Wily Stage rematch is so much harder: you fight him in a flat arena that time).

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน +1

      exactly. I don't know how anyone would ever see this as a bug unless they didn't actually grow up with an NES

  • @awesomedata8973
    @awesomedata8973 2 ปีที่แล้ว +12

    This was, by far, my favorite video! -- Great job on the technical explanations and animated visualizations!!! :D

  • @omegarugal9283
    @omegarugal9283 2 ปีที่แล้ว +9

    these vids are highly educative, im working on my own megaman maker game and coding is my current goal

  • @VinsCool
    @VinsCool 2 ปีที่แล้ว +2

    Displaced Gamers and Retro Games Mechanics Explained uploaded the same day, this is going to be a nice Friday night

  • @jordanscherr6699
    @jordanscherr6699 2 ปีที่แล้ว +9

    Remember that this game was coded quickly, early in gaming's history and during the team's spare-time. So I'm thinking this is a combination of bugs and getting the boss done as swiftly as his character. Not a good combo for being careful with the order of operation.

    • @TravisTev
      @TravisTev 2 ปีที่แล้ว

      Quite plausible. It could even be that the developers were aware of some of the flaws but only had time and resources to devote to more important development issues; such situations seem not uncommon in the industry.

    • @jordanscherr6699
      @jordanscherr6699 2 ปีที่แล้ว

      @@TravisTev That's my thoughts, in particular here. The bottom line is they had a bum-wrap (Poor Conditions) with which to make a classic game. They succeeded, but at the cost of missing some fine details and cleanup. If you want MM2 refined, look for the "Megamix" patch for the game online. It smooths out A LOT of what the team missed without altering the game too radically. Even give you the option of applying fixes as one sees fit.

    • @Gnidel
      @Gnidel 2 ปีที่แล้ว

      Also, Quick Man is a robot. It makes sense from a lore standpoint that Dr. Wily made some bugs.

  • @malkaviangrin9440
    @malkaviangrin9440 ปีที่แล้ว +1

    This is such a cool channel. Every time I watch something from you, I learn a little more about code, despite being a coder at a few jobs. It's so interesting to see under the hood of my childhood games.

  • @vineheart01
    @vineheart01 2 ปีที่แล้ว +10

    i remember hearing that Quikman's difficulty was more due to the broken code than design, and supposedly the designers knew the code was broken but because of the difficulty spike and lack of any game-breaking issues they left it alone.
    Hear-say of course.
    But hearing this...i dunno how truthful that is anymore. If hes constnatly in the air surely thats harder than what we got

    • @DisplacedGamers
      @DisplacedGamers  2 ปีที่แล้ว +17

      Thanks for leaving this comment, vineheart01. I have heard this line of reasoning for many of the bugs found in various games - another example being the pendant bug in Faxanadu. The game thinks you have the pendant at the start of the game and then takes away the power if you pick it up. Some have claimed the developers did it as a lazy fix for the difficulty, but this line of thought doesn't make sense to me.
      Unless the developers for Game X specifically state that they knew something was broken and they left it that way due to time constraints OR that yes, they did make a "dumb tweak" to adjust game difficulty, I am going to assume things like Quick Man getting stuck in a wall or inverse pendant logic in Faxanadu are simply bugs rather than a poor programmer's design tweak for difficulty.
      To specifically answer the Quick Man issue - If I were the programmer and was allowed the time to fix the bug, I would have:
      1: Fixed the wall ejection logic vs velocity application order and also corrected the off by one bug.
      2: Probably have noticed the change in difficulty and suggested to the project lead/designer that we increase the frame count for Quick Man's running phase - literally change one value. Heck - I may have even made the tweak without asking depending on my working relationship with other people on the dev team.

    • @ZipplyZane
      @ZipplyZane 2 ปีที่แล้ว

      @@DisplacedGamers My issue is that, unlike the off-by-one errors, this seems a weird bug to have show up. Why would you run these in the wrong order in the first place?

    • @vineheart01
      @vineheart01 2 ปีที่แล้ว +3

      @@ZipplyZane Probably just early development woes, theres a TON of decision or shortfalls in the old games that nobody would even consider an issue these days, they'd just casually fix it and move on.

    • @nickwallette6201
      @nickwallette6201 2 ปีที่แล้ว +6

      @@ZipplyZane I think it's easier to see these logic errors when you're looking at a finished code base. But remember, the specific routines that we're seeing now may have appeared (been programmed) in ANY order, and the code within changed in minor or major ways, at any time. Who knows what state it was in, when a given bug was introduced, and then how it changed afterward.

    • @Phryj
      @Phryj 2 ปีที่แล้ว +8

      @@ZipplyZane One thing to keep in mind: Capcom only let the team work on the game in their spare time AND still expected them to have it complete within a certain time frame. The fact they had to deal with these constraints, ended up releasing it somewhat incomplete and with flaws, and yet it is still considered one of the best games of all time is nothing short of incredible.

  • @ItsHyomoto
    @ItsHyomoto 11 หลายเดือนก่อน

    I don't know if it's the most important part of the video, but I enjoy seeing you look for the simplest solution to a problem. It would be easy to go, "Okay, we'll rewrite it but good this time." Easy, in quotations of course, but asking, "What is the simplest change we could make that would solve the issue, or even just have the largest impact?" is a great skill. Watching you demonstrate how to break down code, analyze it, and then look for improvements has probably helped a lot of people become better programmers.

    • @DisplacedGamers
      @DisplacedGamers  11 หลายเดือนก่อน +1

      Thank you! Attempting to use a Game Genie for a fix helps restrict me to changing just a few bytes - although I break the rules and create a new subroutine on occasion.

  • @residentgrey
    @residentgrey 2 ปีที่แล้ว +11

    it would have been better to have had a flat and low floor with platforms above in that boss stage too. I can also see some other movement logic that could scan better now. This brings forth many other options for a fix or enhancements.

    • @DisplacedGamers
      @DisplacedGamers  2 ปีที่แล้ว +10

      I agree. The room layout for Quick Man doesn't really seem like a good design for his a.i. - broken or not.
      Yet! It is possible that the room layout was designed in that way to help curb the difficulty for the player. Him running inside a "channel" in the floor will cage him momentarily.

  • @birdrun4246
    @birdrun4246 2 ปีที่แล้ว +8

    It's fascinating to me that these games don't use a common 'eject from wall/floor' routine for everything, Especially since the robot masters and Megaman are all the same size and do running/jumping physics.

    • @jennjennjenn61992
      @jennjennjenn61992 7 หลายเดือนก่อน

      that incorrect, they don't do the same running/jumping physics - literally in this video mega man and quick man have different velocities

  • @RiffRock51
    @RiffRock51 24 วันที่ผ่านมา

    Little did I know when first playing this game as a kid that 30+ years later I'd be watching an in-depth breakdown of Quick Man's behavior.

  • @topbravo
    @topbravo 2 ปีที่แล้ว +2

    This one was so much fun! Thank you for taking the time to make this.

  • @RaposaCadela
    @RaposaCadela 2 ปีที่แล้ว +2

    This is great! With the patch, Quickman became way more nimble, but at the same time way more predicable. I think that balances it. Some boss batles in the Megaman series feel like you gotta get lucky (ie Shadowman) and this was one of them, but now it's clear something really wasn't working correctly

  • @ccanaves
    @ccanaves 2 ปีที่แล้ว +1

    That "ejection" being in the wrong place made me remember something similar that happens in Rockman/Megaman 4 when you beat a boss. There's an animation where Rockman/Megaman runs to the middle of the screen, jumps and stays floating in mid-air to "absorbe" the new power. But what happens if Rockman/Megaman is already standing in the middle of the screen? Well, the animation skips the jump and suddenly "teleports" Rockman/Megaman to mid-air. I haven't looked at the code, but probably there's some kind of routine that goes something like "check distance to center of the screen > run to center > jump", then call the "absorbe" routine; but if you're already there at the center, it skips the routine completely and goes directly to "absorbe power" in mid-air, skipping the jumping part.
    I remember when I was a kid having fun trying to position megaman exactly in the middle to trigger this after every boss fight. Want to investigate it?

    • @lpfan4491
      @lpfan4491 2 ปีที่แล้ว

      That seems like a case of incorrect branching instead. "If this is the case, then jump to that other place in the code", except they put said point one action too late.

  • @geraq0
    @geraq0 7 หลายเดือนก่อน

    This is fascinating, I'm both amazed and grateful for this bug as it makes the battle more unpredictable and at the same time it makes it a little easier.

  • @beaulachance7439
    @beaulachance7439 2 ปีที่แล้ว +2

    Time for some coffee and code. Love these vids!

  • @freddywondercat1362
    @freddywondercat1362 2 ปีที่แล้ว +1

    Idk how easily this can be checked, but I wonder how many of the bugs w/ this boss carried over to the Mega Man 3 re-fight.

  • @pointedspider
    @pointedspider 2 ปีที่แล้ว

    With the title alone, you will never run out of content!

  • @MaestroUJ
    @MaestroUJ 2 ปีที่แล้ว +2

    Okay! I was wondering what codes Dr. Wiley used! Genius work but it looks like he may have designed him to quickly!

  • @user-sl6gn1ss8p
    @user-sl6gn1ss8p 2 ปีที่แล้ว +5

    This is one of those times you could make a case that it's not a bug, it's a feature

    • @MrCheeze
      @MrCheeze 2 ปีที่แล้ว +2

      At least, if any balance tweaking of the boss was done, it was done based off the "broken" code, not the fixed version.

  • @DouglasZwick
    @DouglasZwick 2 ปีที่แล้ว +7

    This is so so so cool, and I would love to see more stuff like this! I have a few of questions for you (edited to address one that was already asked and answered):
    1. When you talk about "floating-point" math in this video, is it really IEEE 754 floating point as we know it in the modern era, or is it just fixed-point math using pixels combined with subpixels? Or some other thing? *Edit: it seems that it is some kind of fractional fixed point, as answered in a comment below. So never mind this one!*
    2. When Quick Man is ejected from a wall, it appears that his subpixels aren't cleared the same way that Mega Man's are. This just means that the ejection logic for Quick Man is different from the logic for Mega Man, right? Like they don't simply use the same process for some reason? If so, any idea why? If not, am I missing something?
    3. Quick Man appears to be ejected horizontally while running into a 16-pixel-high block, but you said his code only checks one point for horizontal ejection, and it's at the top of his head. How is he ejected horizontally in this case?
    I have a bottomless curiosity for stuff like this, so it goes without saying that this is like in my top three favorite TH-cam channels. Please keep up the great work!

    • @vuurniacsquarewave5091
      @vuurniacsquarewave5091 2 ปีที่แล้ว +1

      This kind of fixed point fractional values are great to "fake" smoothness when you otherwise have a noticeably low resolution for anything, be it the screen, sound fidelity, graphical fidelity, movement, etc.

    • @possible-realities
      @possible-realities 2 ปีที่แล้ว +1

      Came here to ask the same questions 2 and 3 :)

    • @williamdrum9899
      @williamdrum9899 2 ปีที่แล้ว +1

      I highly doubt it's IEEE 754, with the limited RAM of the NES you don't really want to burn 8 bytes on a single value. You technically have 2k of ram but after taking into account sprites, music, and the call stack, in practice you have about $500 bytes for game logic

    • @Bobbias
      @Bobbias 2 ปีที่แล้ว

      On the subject of ejection logic: from what I've heard about the production of the megaman games, I wouldn't be surprised if that was a case of copy-paste gone wrong or something.

  • @zyad48
    @zyad48 ปีที่แล้ว

    I just found your channel and these videos are an absolute blast to watch.
    I've been getting into gamedev myself and these videos really show off a lot of particular tricks and solutions to problems that i find genuinely invaluable.
    As interesting as these videos are on a surface level to me (I love tech and programming) they're absolutely amazing reference material. The quality in the editing and explanations are top notch

  • @Arikayx13
    @Arikayx13 2 ปีที่แล้ว +1

    More of these please! The code behind why AI does odd things is fascinating!

  • @crashnip
    @crashnip 2 ปีที่แล้ว +1

    Fun to learn how monsters and machines attack in old games :)

  • @warmCabin
    @warmCabin 2 ปีที่แล้ว +3

    Fantastic video as always! Peanut gallery incoming:
    0:53 I see that DEX at 879E--is that necessary? Could they have increased the subsequent addresses by 1?
    2:08 But in a TAS, hoo boy. RNG manipulation so easy it'll spoil you for life.
    5:00 Floating point? _What?_ That's amazing!
    18:05 FCEUX has a cool feature called the Code Data Logger that can tell you, for every byte, whether it's been used as code, data, or neither.
    There's a rare glitch where Quick Man will do his blocking stance when hit with a weapon that should damage him. No idea how it works.

    • @infinite_sun_rays
      @infinite_sun_rays 2 ปีที่แล้ว +2

      Mesen has a Code Data Logger too, among other _powerful_ debugging capabilities

    • @GeneralBolas
      @GeneralBolas 2 ปีที่แล้ว +3

      "Floating point? What? That's amazing!" It's not *really* floating-point. It's fractional fixed point; treating certain low bits as fractional. The math works out the same; it's all in interpreting what it means.

    • @warmCabin
      @warmCabin 2 ปีที่แล้ว +1

      Ah I gotcha. Same as usual pixels + subpixels.

    • @warmCabin
      @warmCabin 2 ปีที่แล้ว

      I've also seen a cool vector routine that can compute and I think even scale a vector between two points.

    • @DisplacedGamers
      @DisplacedGamers  2 ปีที่แล้ว +3

      Hmm. I wonder what is going on with the blocking logic when MM is using a valid weapon.
      Sorry about the use of "floating point." I just used it as a term that many other programmers would recognize and would help me complete a sentence and keep rolling. Showing the fractions as decimals in the slides was another way to just make it easier to read. It is still just an unsigned number from 0 to 255 behind the scenes.

  • @zennvirus7980
    @zennvirus7980 2 ปีที่แล้ว

    Prime example of "a bug that became a feature", whether intentionally or not. Such a simple AI, yet all is issues and their ramifications are amazing. And the greatest fact of it is that it works, and beautifully.

  • @juanatenco453
    @juanatenco453 2 ปีที่แล้ว +18

    The main point of those video: Quick Man is so quick that he outruns the game's logic.
    I'm not that good at coding, let alone assembly coding, but I like to watch these videos just to have a glimpse on how my favorite games work.

    • @maverick_loneshark
      @maverick_loneshark 2 ปีที่แล้ว

      I think you are missing a few key points regarding uneven hit detection boundaries, logical order of operations for collision resolution specific to Quick Man, as well as redundant conditionals & subroutines... but yes, Quick Man is quick.

  • @adonisx82
    @adonisx82 2 ปีที่แล้ว +1

    Well thanks man, I was just about to go to bed when I came across this now I’m goin down a rabbit hole 😂

  • @bpelectric
    @bpelectric 2 ปีที่แล้ว +4

    Fascinating. I've done a little reverse engineering of Strider for NES, which seems to have a similar issue with 'wiggling' when running against the wall. Probably a similar mistake in the order of moving vs ejecting code. I might spend some more time looking at this now that you've revealed a likely culprit!

    • @DisplacedGamers
      @DisplacedGamers  2 ปีที่แล้ว +3

      Oooh! That's great. Strider for NES is... an interesting subject. I haven't played it in a long, long time, but I want to say that play control was not quite where it should have been? Like something felt a little off?

    • @possible-realities
      @possible-realities 2 ปีที่แล้ว +2

      I think incorrect order can't be enough for the oscillation. It has to be that the subpixel position is not reset during ejection (as seems to be the case in this video I think?) Then the order of ejection and movement shouldn't matter for the oscillation behavior, but of course it matters if you want to avoid being inside of a wall!

    • @TravisTev
      @TravisTev 2 ปีที่แล้ว +1

      @@DisplacedGamers Yeah, Strider fascinates me a lot. Play control is definitely weird. Strange behavior when you jump while running against a wall, frequent cases of jumps being “eaten” during certain situations like running downhill (where you hear the sound but the character just doesn't leave the ground, kind of like the Quick Man issue in a way), etc. That game would be an interesting one for a technical dive, I think.

    • @bpelectric
      @bpelectric 2 ปีที่แล้ว +1

      @@DisplacedGamers Yeah, it's particularly fascinating, since it has a troubled dev history, with the US version shipping and the JP one getting canned - but a preprod cart was found and dumped of the JP ROM not that long ago, and the movement code is different. Seems better in some ways and worse in others, but being able to compare the code in two different states of development was part of what made it interesting to me.

  • @mitchellpatterson3044
    @mitchellpatterson3044 2 ปีที่แล้ว +6

    ROAHM! ROAHM WE FOUND IT!!!

    • @NicoEvaluates
      @NicoEvaluates 2 ปีที่แล้ว

      This was explained by Fellon in 2015, to which Roahm also replied: th-cam.com/video/RBYhn781J3M/w-d-xo.html

  • @mikek191
    @mikek191 2 ปีที่แล้ว +1

    This boss haunted my childhood. Hardest mega man robot master

  • @anthonyroundtree5
    @anthonyroundtree5 2 ปีที่แล้ว +1

    My first thought was Quick man was treating steps like walls and his collision detection really couldn't tell the difference. If his head bumps into anything, then he's hit a wall (or mega man) hence the decision to program him the way they did. But, I'm not looking at the code (nor would I understand what I was seeing). Nevertheless, this was a fascinating video.

  • @djrmarketing598
    @djrmarketing598 2 ปีที่แล้ว +1

    It's hard to believe there's anything but just some time crunched programmers who did the best they could for corporate bosses who didn't care much about QA, just that the release date was met for a popular sequel. The boss fight was a minute or two of the game experience, and I'm sure someone said "Hey boss the jump codes kinda f*cked but it works just good enough.."... Or maybe they just didn't have "external" emulator type debuggers like we do today.

  • @Ratheronfire
    @Ratheronfire 2 ปีที่แล้ว +1

    I started trying to learn romhacking not too long ago, and I tried to fix this bug as part of a set of quality of life improvements. Admittedly my solution was a lot less in-depth than yours but it seems to work: I just flipped Quick Man's direction whenever his AI picks a new action, since in practice it seems like he always does that anyway.

  • @Tom-cq2ui
    @Tom-cq2ui 2 ปีที่แล้ว

    Really makes me wonder where is the line between intelligence and an organism/computer following simple tasks.
    Lovely breakdown!

  • @ShelbyAQD
    @ShelbyAQD 2 ปีที่แล้ว +1

    Fascinating.
    I've never gotten into ROM-hacking, but used to use emulators and savestates to try and reverse-engineer how enemies and bosses worked in games. I wonder how many behaviors that I had assumed were do to RNG were actually from errors like this...

  • @krickrack
    @krickrack 2 หลายเดือนก่อน

    I wouldn't be surprised that it started as a bug but was left in the code as a feature. In this case the bug makes the boss easier to hit but at the same time his pattern seems more random. If the bug dosen't break anything it can be used as a feature. It could be an easy solution to add more randomness to the boss pattern. Imagine if later in the game you would fight him again but now the bug is fixed and the boss is quicker but his pattern is clearer!

  • @RollingBobbyJones
    @RollingBobbyJones 2 ปีที่แล้ว +1

    I feel like this is a massive help to those that edit Boss AI in rom hacks and such

  • @marscaleb
    @marscaleb 2 ปีที่แล้ว +3

    This was the most fascinating (and useful) video you've done about Mega Man 2 thusfar.
    (Though admittedly it required groundwork set by previous videos.)
    I had never supposed that so much of his randomness was actually created by errors in the code.
    Now I'm curious about so many other robot masters. What are the other bosses' patterns, and what factors may have influenced their apparent challenge? Were the bosses in the later games easier to master because their behavior was less buggy, or was this just part of the changes in design?

  • @aeolusstone5260
    @aeolusstone5260 2 ปีที่แล้ว

    MegaMan and programming discussion in one video? LIKED.

  • @kri249
    @kri249 2 ปีที่แล้ว

    Since I'm currently learning coding it's nice to hear familiar terms. Before it was even mentioned I suspected Megamans position would be factored in the AI logic. I love your eork with these videos Chris, keep em coming mate. They're always a treat.

  • @areaxisthegurkha
    @areaxisthegurkha 2 ปีที่แล้ว

    Quick Man with Metal Man's projectiles seem so OP.

  • @Xstioph
    @Xstioph 7 หลายเดือนก่อน

    As always, way above my head, but still very enjoyable to watch! 👌

    • @DisplacedGamers
      @DisplacedGamers  7 หลายเดือนก่อน

      Thanks for watching and sticking with it!

  • @sagacious03
    @sagacious03 2 ปีที่แล้ว

    Neat analysis video! Thanks for uploading!

  • @IaconDawnshire
    @IaconDawnshire 2 ปีที่แล้ว

    And I was listening to Quickman's music from The Megas today

  • @stevep9177
    @stevep9177 2 ปีที่แล้ว +3

    Quick Man was already the hardest robot master and you want to make him harder?

  • @AmaroqStarwind
    @AmaroqStarwind 2 ปีที่แล้ว +1

    Quick Man: *gets stuck*
    Mega Man: “Should I help him, or finish him?”

  • @raymondbd21
    @raymondbd21 2 ปีที่แล้ว +1

    Thanks for the info. I'm going to load up Mega Man 2 on the old NES and kick Quick Man's ass right now.

  • @Voidsworn
    @Voidsworn 2 ปีที่แล้ว +2

    Wouldn't mind playing a ROMhack with all the bugs and stuff fixed, just to see how different it could be.

  • @intangiblematter_misc
    @intangiblematter_misc 2 ปีที่แล้ว +9

    I’m watching this at 255 views. Perfect

    • @Lemon_Inspector
      @Lemon_Inspector 2 ปีที่แล้ว +5

      Oh no, now it has 0 views

    • @nickwallette6201
      @nickwallette6201 2 ปีที่แล้ว +1

      Oh that explains why the first time it loaded as an unboxing of an air fryer.

  • @pokepe12
    @pokepe12 2 ปีที่แล้ว

    I've been looking for a channel liek yours for a long time, im glad i finnaly found it.

  • @DeepWeeb
    @DeepWeeb 2 ปีที่แล้ว +2

    Nice video as usual, but about the Doc Robots from Mega Man 3? Do they copy the code from Mega Man 2 wholesale or do they recreate it, have they even done some corrections to it?

    • @DisplacedGamers
      @DisplacedGamers  2 ปีที่แล้ว +1

      I'd have to reverse MM3 to find out. It is possible someone else has already looked at it and can answer this.

  • @The9gods
    @The9gods 2 ปีที่แล้ว +1

    At first I was thinking there was going to be a bug section. I was kind of right with that being the whole video was basically quickman's bugs, with some coding in between.

  • @50shadesofbeige88
    @50shadesofbeige88 2 ปีที่แล้ว

    I'm having fun watching these with my nephew. He's a young aspiring programmer. I think you do a fantastic job explaining basic concepts, and he doesn't get frustrated or tired while watching.

  • @SECONDQUEST
    @SECONDQUEST 2 ปีที่แล้ว

    I'm so excited!

  • @hardcase7753
    @hardcase7753 2 ปีที่แล้ว +1

    wait...didnt they write something about the running into walls thing into quick man's lore at some point?

  • @Harbinger28567
    @Harbinger28567 ปีที่แล้ว

    @17:30 - Quickman handlers! Hahaha! Sounds funny 😀

  • @marquesgorham4226
    @marquesgorham4226 2 ปีที่แล้ว +1

    I like this it would be cool if you did AI explained for other megaman robot masters it would be a really cool series

  • @Valientlink
    @Valientlink 2 ปีที่แล้ว

    Huh, never knew Quick Man would essentially be stunned by the metal blade

  • @ShinMajin
    @ShinMajin 2 ปีที่แล้ว +2

    Quick, somebody get this to Roahm!

  • @Fieari
    @Fieari 2 ปีที่แล้ว +1

    Hmm... fixing this bug makes him more jumpy and difficult to hit, but also more predictable. Perhaps more calls to the random routine should be added to do 1, 2, or 3 jumps, and also to randomize the running time? Then again, to make his AI more thematically difficult, it would be interesting if you could make him do mini hops to go up and down the "steps" in the room as he runs so as to not get stuck, maybe reverse direction when reaching the outer walls. Not sure if all this is possible within the game space available though.

  • @daserfomalhaut9809
    @daserfomalhaut9809 2 ปีที่แล้ว

    This is why I dont think I'd ever make a game. This boss is not a complicated fight but this looks like it was extremely difficult to code.

  • @williamdrum9899
    @williamdrum9899 2 ปีที่แล้ว +2

    2:46 Had there been four choices for quick man to jump they could have just done LDA $4A AND #3 and skipped that whole integer division thing. For NES programming is it better to bend your game design around the CPU or just accept that sometimes you need to do actual multiplication/division?

  • @Ragesauce
    @Ragesauce ปีที่แล้ว

    I've always wondered why you cannot shoot when using flash man's power up, even though he can clearly shoot you while you are frozen. I have wanted to use this power instead of just freezing time, it felt extremely useless during quick man fight without being able to fire as well, is this because they made it do damage to quick man while he was frozen, and if you fired a shot it would cause issues? a history of why this was left out would be really entertaining to watch!

  • @igormonteiro9210
    @igormonteiro9210 2 ปีที่แล้ว

    14 boomerangs and we have almost a bullet-hell here, but i really like to try these absurd gameplay

  • @LethalBubbles
    @LethalBubbles 11 หลายเดือนก่อน

    nitpick: I don't get screens like"warning tech stuff" if someone is turned off by it, then they should have the idea for themselves to not watch it. no need to suggest they do so. seems like it would discourage people who might be learning this stuff for the first time. Why would they be watching the video about explaining NES game AI if they didn't want to see tech stuff?
    this entire series is golden, though, including this one. seriously great stuff

    • @DisplacedGamers
      @DisplacedGamers  11 หลายเดือนก่อน

      I don't really worry about it as much at this point in time versus when I made the Quick Man video. Thank you for your comment. More technical stuff is arriving in the future!

  • @perfect.stealth
    @perfect.stealth 2 ปีที่แล้ว +1

    I could watch these all day. I mean I already do

  • @franccoeurguy4735
    @franccoeurguy4735 2 ปีที่แล้ว

    Quick Man is my favorite MegaMan character

  • @autumnshinespark
    @autumnshinespark 2 ปีที่แล้ว +1

    Wow, I can follow the ASM with my knowledge of 16-bit 65816! Very cool and enlightening. Do you know how the code is documented? My own mod is in dire need of better organization, and I could use a guide.

  • @cmj2b
    @cmj2b 2 ปีที่แล้ว +1

    Reason #21 why I am not a game designer, just a gamer

  • @ChoosenOneStudios
    @ChoosenOneStudios 2 ปีที่แล้ว

    Really great vid :)

  • @D3nz3lCr0ck3r
    @D3nz3lCr0ck3r 2 ปีที่แล้ว

    Wow, that's some sweet content!
    Hey, mate, sorry for the stulid question, but just out of curiosity: How did you manage to get the code for the game? Is it any kind of rom to code converter or something like that?

    • @SwervingLemon
      @SwervingLemon 2 ปีที่แล้ว

      Cool thing about ROM systems is that the code is relatively easy to dump from the cart and they didn't encrypt the contents back then.

  • @Sephiel263
    @Sephiel263 2 ปีที่แล้ว +1

    Thank you so much for asking a question I had for years if not decades. Do you think the devs knew about the bug but left it in to make the fight easier? Also is the bug still present in the Doc Robot refight in MM3?

  • @renardleblanc5030
    @renardleblanc5030 2 ปีที่แล้ว

    Here's my 3 hypotheses for how this happened:
    1) copy&paste accident (too convenient).
    2) someone noticed the behaviour, and thought it looked like Quick was freaking out, and just went with it (sloppy, dubious).
    3) someone broke the code while fixing something else (most likely, imho).

  • @em00k
    @em00k 2 ปีที่แล้ว

    Great stuff, I'd love to see more on the fixed maths used - I take it's 4.4? Love these videos.

  • @cityhunter1978
    @cityhunter1978 2 ปีที่แล้ว

    I love this series of deep dives into Mega Man 2, thanks so much for these videos!
    MM2 is my all-time favourite NES game. I've played through it countless times. My boss order is actually quickman first, which is no easy feat without the flashman timer.
    A ROM patch with all of these tweaks and fixes to improve the game would be great since we can only apply a few game genie codes at a time. Crossing my fingers!

  • @ericsbuds
    @ericsbuds 2 ปีที่แล้ว

    really great video

  • @MetalHeadMarc
    @MetalHeadMarc 2 ปีที่แล้ว

    Great vid. I would say the "glitch" in him completing a first jump by falling into the floor, but it makes him more erratic to the casual player and isn't that the point?

  • @snowmyr
    @snowmyr 2 ปีที่แล้ว +1

    Thanks!