I carefully studied how NES jumping/gravity works a number of years back, trying to figure out how to get jumping to feel right in my game. I didn't have the benefit of taking apart the code because I don't know ASM, I reverse engineered it by slowing down an emulator, counting pixel movement for each frame, placing it all in a chart, and then calculating manually what was going on. It was a lot of effort, but I manage create a perfect reconstruction of the jumping from Mega Man. ...which I later threw out the window because I made my sprites taller for artistic reasons, and the values from Mega Man no longer felt right, so I had to find all new values for my gravity and jumping. Anyway, what I wanted to say was: even though I already understood how jumping and gravity works in Ninja Gaiden, it was SO SATISFYING to watch you go over all the details and values.
That's quite a story! I am sorry you had to throw it out, but I'll bet it was a good exercise to help find what you felt was right for jumping. Glad you liked the video!
Share the videos to everyone you know. The algorithm stomped on his channel a couple of months ago and stopped recommending the videos to non-subscribers.
Excellent video. Speaking of the screen wrap, i've had a rare occurence where if Ryu is at the right vertical position as he's falling into a pit and gets hit by an enemy at a pixel-perfect moment, he will also wrap, avoiding said pit death. Your data explains it perfectly.
@@chiarosuburekeni9325 Yeah, it's so good. I honestly think all action games should be designed so that, if you're good enough, you never have to wait around.
@@thewhitefalcon8539 No,the tricks in between the normal horizontal sections can be incredibly precise. I have tried speed running this game and you will never get the same time because of tricks like fast ladder climbs, quick kills on the final bosses, various damage boosts etc.
Would LOVE for this to be a long-running series. I love playing around with game genie codes and finding ways to tweak the game mechanics in interesting ways. Double jump alone changes so many games!
I try to integrate game manipulation along with code analysis in these videos just so people have more take home points from the video. Ninja Gaiden went overboard... definitely on purpose.
This is becoming my favourite series. It's amazing how much is invested in the code for something as simple as a jump. It reminds me of formulas and how all the math components are incorporated just to get the exact measurement. Absolutely mind blowing.
I'm a software developer and retro game enthusiast. I grew up playing NES and SNES games. I only found your channel recently, but it's absolutely fantastic. I appreciate the insane amount of work you do with your reverse engineering efforts. Keep up the great work!
I would have loved to have had a deep dive like this decades ago when I played the game on the NES! The original Ninja Gaiden was the only one of the original 3 I was never able to beat back then. I always ended up dying somewhere on the final bosses and got too frustrated going back to 6-1 to continue on. Great video!
I'm convinced that you can show us the c ways to make all unnecessarily difficult NES games fun. Man, how I wanted to like Blaster Master or Ironsword back in the day. they were just too damn hard!
This is easily the best video about Ninja Gaiden on this entire site. You have a better grasp of the game's mechanics than every person who has reviewed this game... and this isn't even a review. I love when you show off Game Genie codes in these videos to fix certain issues, and I must say, NG definitely needed them! The reduced knockback alone almost brings this game up to par with its NES sequels (well, the level design and boss fights still suck, but there's not much that can be done about that). I am enthusiastic to see videos on The Dark Sword of Chaos and The Ancient Ship of Doom in the near future.
I stumbled onto this video while attempting to reverse-engineer Ninja Gaiden's jump mechanics in Game Maker. I definitely wasn't expecting a Game Genie code to start at 6-3 after a final boss death; the impossible dream of a million childhoods. Now I might actually be able to beat this fucking game after 20 years. You guys are the _real_ game genies.
20:05 "I'll spare you how we get here" ... aw, really? I love your code walkthroughs! I've mentioned before that I'm learning assembly and these videos have been pretty helpful for giving real walkthroughs of real code.
Was Karnov used in the intro as a bad example of physics? Because it's absolutely perfect for that and I laughed. Never played a Data East game in my life that wasn't overtly clunky and awkward to control.
Slash cancel is also necessary to swing your sword in the air without using up any chakra/chi while equipped with the pinwheel power-up. Helps massively when trying to save them for the final boss
When I was a kid playing this game when it was new, I discovered a way to avoid pit death by tapping start or select, whichever paused the game. You would have to pause and unpause the game repeatedly a ridiculous amount of times, or at a certain frequency, I'm not sure which. As you fall into a pit while doing this you would fall from the top of the screen just as observed here. This was not done with a game genie, it was strictly a glitch of some kind, I am not aware of the popularity of this glitch or whether or not it is known by others. This was discovered out of sheer frustration and trying to avoid the death, kind of like being in denial that I was about to die. Give it a try. Love the video.
This happened to me occasionally as well, but without pausing / unpausing. It seemed to happen only when I got knocked in a pit from enemy damage. I think it might be when you are knocked into a pit while in midair? Someone posted a video of it here: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-2_V5goh5KGk.html
Phenomenal video as always. If there's one improvement I can suggest, it would be to exploit the functionality of Mesen to name RAM locations for when you show code in the debugger. It's one of the best aspects of assembly to make it more human-readable, you can name anything and never have to look at many numbers if you don't want to. So instead of saying "86 hex" you can come up with a name and refer to it by that name in your speech as well.
I'm with you on this. I think I started to do it just a bit when I was putting together the Dragon's Lair video but removed some of it before editing. I felt the same way you do when I was editing this video as stating the hex values really interrupted the flow since I wasn't doing a line by line walk on any code for NG. I feel like I have enough videos in the series to start streamlining some of the assembly + hex to read more like logic/design or heck - even pseudocode for people unfamiliar with assembly and/or hex. Whatever variables names I use, I want to try to keep them as short as possible (don't we all...) for the sake of space during the video presentation. TL;DR: Thanks, VuurniacSquarewave. I agree.
It’s interesting how they made the jump go a farther distance in the PAL version, instead of speeding it up. Would be cool to see it sped up as well, for the ultimate easymode version of the game 😂
I need to try a few of these game genie codes. Especially the extra knockback looks fun! After finishing this game hundreds of times, it will be fun to play it in a different way.
This is one of the channels that makes every game fascinating. Well done, it's amazing! Regarding the knockback code, the issue I see with the no horizontal knockback is that it's an insta-kill if you get touched in mid-air.
This is great! I'm a software engineer and loved playing Ninja Gaiden growing up, so I really appreciate this insight. I have a new channel to binge watch :) I never did beat it vanilla... hmm... bouncy pits...
Best quote of the entire video. "Ninjas do not make mistakes" We all had to learn that the hard way in Ninja Gaiden . If you made a mistake you got what you got. And it usually sounded like this. tin tong tin tong, ding tin tong tin tong. tong ting tong. It was at that moment that you knew you messed up.
This is really awesome! I like the way you present ROM hacking as understandable and accessible -- it's very inspiring. And as an added bonus some of my favourite games get improved with new Game Genie codes! Although I've beaten NG, I'm looking forward to using the final bosses code to practice the second one more. I wonder if it's possible to do something similar on NG3 -- "fixing" the double damage and new checkpointing system that sends you quite far back after every death would make the game much more fun I think. The Japanese version is fun, and having a middle ground in difficulty of the North American version with codes like these would be a nice next step for easing into the pain that is the NA version of NG3 :). Thank you again, and I'm looking forward to the next video whatever it is!
I will probably make some big changes to Ninja Gaiden 3. I don't know the scope of GG codes vs "just make it a ROM patch" yet. I try to put the manipulation of the game in the hands of the viewer/player where I can. Make it something people can do without software if they just have the cart and a GG.
@@DisplacedGamers Awesome! I'm looking forward to seeing what you come up with (and how you did it!). And yeah, I think GG codes wherever possible work well and are fun to play with.
correction: Mario bros was designed such that the air deceleration was applied as an addition to the motion vector that has the opposite direction as what mario is facing instead of what direction mario is moving because they assumed this would be the same, and they could save a few lines of code checking signs and such. This means that you are being accelerated accidentally instead of decelerated when Mario moves in a direction counter to what he is facing. Same thing as the infinite backwards long jump glitch in Mario 64. Its not a feature, its a bug. Its a pleasing bug, but it wasn't something they intended, so thus it is not a designed feature. That said, I appreciate that there are people who take cheating seriously, and aren't just using cheats as an excuse to deride how others want to play games. I cheat in all my single player games, and I'm proud of it. I've made most of the cheats I use.
Your proud to cheat? I understand being proud of your ability to make cheats, but to be proud of the cheating itself? that's odd to me, but you do you. cheating in singleplay hurts no one and can be quite fun.
It's cool to cheat if it means experiencing the game in a new one Or perhaps it allows you to even play it On a side note, most GoldenEye 007 speedrunners use a GameShark, but not for cheating, but because it has Region Bypass and allows to boot up the game if the cartridge is faulty most of the time
The No Damage run wasn't accomplished until 2020 (killing the demon head falling off the last boss was an issue as it can't be dodged). But I loved the 1HKO combo code- that would've been brutal as a kid.
Yea, it can be dodged if you use the multi jump-strike method. Jump then tap strike and down at same time, down simply cancels the jump and allows you to strike as many times as you can tap button before hitting ground. 16 strikes for the head then 16 more for body and Boom, a no hit run. I only know of one player to accomplish it.
Your choice of music is always so excellent. This was another great video! I would love to see another look at Ninja Gaiden, this time at its famous cutscenes, just to see if we can take a deep dive into some of the logic that dictates how they are structured. Maybe it's simpler than I think, but I feel it would be a fun thing to examine.
i love your channel im a big nintendo fan and i consume loads of content about nintendo but never would i have thought i would love the science behind the code so much your explanations are pretty clear and simple to understand and i can hear in your voice how much fun u are having urself while making ur videos so i subbed after seeing like 3 videos and am now binging ur content =) lots of love and thanks for the effort and ur videos
I'm kinda curious about how to add a recovery mechanic that many current indie platformers have implemented: The jump-on-knockback mechanic. During a knockback, you can still make a jump mid-air.
From what I saw while making observations, there is a bit in the status flags that sets if something is "in-progress" for Ryu. It is used to determine if an action can be taken or not. If this were expanded upon, there could be some bit-combo checks that would work for checking stunned/knockback and allowing a jump. A jump would be limited to just a single jump after hit. You'd have to start checking situations like - hit, then you jump, then you get hit again during your recovery jump... what happens? Allow another jump? How high can you go on screen with this? Etc.
There's something that I understood in this amazing video, that's any Genie Code break the terror feelings that the game has some how input in our minds during decades. 👏👏👏
Exceptionally great video! We incorporated a lot of these changes in our Deadpool NES hack, so its really neat seeing things here! I also added your video to our official NG speedrun discord :) As always, amazing stuff! Keep up the good work!
Could you do a breakdown on slash canceling? Also...cape analysis 3:14 - The wall is wearing the cat as a cape, the cat is almost wearing Ryu as a cape, and Ryu is wearing the mountain as a cape. 3:51 - The cat is wearing the bird as a cape. That was a good cape analysis.
Ryu's doesn't have a capped maximum falling speed so he can fall much faster if he falls from a greater height. If his speed is greater than 8, he can screen-wrap from bottom to top in a single frame, meaning the check to see if he's "below" the bottom of the screen returns false.
This is an excellent piece of work. Thank you. As a programmer I'm never quite as interested in how to cheat the game as just learning how they made it work back then. That said, I can't help but be impressed by your "pit spit". I think if you run into overflow again you might consider explaining exactly why ADC #$00 adds 1 at this point, specifically the overflow flag. (maybe CLC as well situationally) Given the detail of the explanation of overflow it seems the target audience would include people who don't know assembly. Even among people who know a little programming the ADC instruction's behavior might not be obvious, especially because you explain the ADC #$37 line shortly before, and the lack of an ADD instruction on the 6502.
@@DisplacedGamers There are all sorts of game genie codes, some casually mentioned on tetris subreddit, others on CTWC outlets and beyond. I frequently use one to change the Delayed Auto Shift speed, or to disable the animation at the end unless you max out. There was a user who recently coded in modern Tetris hard drop and ghost piece effect (this being beyond codes, and an actual patch). I don't have any one specific request, but it would make for an interesting topic and there is quite a large community growing these days. Thanks!
This is excellent stuff! -- Would love to see more! - In particular, I enjoyed the heck out of the fun tweaks that I would have never found with the Mesen emulator myself! :D It would really be fun to see some of your process on how to get your eyes used to swimming through the vast oceans of code!! PS: My inner-8-year old is jumping for joy at these Game Genie codes btw! :D
Since we have the acceleration due to gravity of the game, we can determine the actual sizes of things. g = 9.8 m/s^2 = 55/256 pixels/(frame)^2 At 60 frames per second, g = 1547 pixels/s^2 So 1 pixel is 6.3 mm Ryu is 32 pixels tall (I think). So he's only about 8 inches tall.
The other interpretation is that we're seeing things at "ninja speed," that is, the game is slowed down relative to how fast Ryu is moving. Assuming that Ryu is 2 m tall, each pixel would be about 63 mm. Acceleration is 13.4 mm per frame. That means we're seeing 27 frames per second. The game is slowed down by half for us.
Dying to any of the final boss's forms gives you a message: "You and your ninjas are dead. GAME OVER." And *then* you get kicked back to stage 1. That was pretty fun to watch, maybe now I'll actually give Ninja Gaiden a try, see if the helpful codes will help me avoid becoming part of the ever-growing "death by those Ninja Gaiden birds" statistic. (...why did I immediately get the mental image of the Duck Hunt dog laughing at the player, replacing the 'death' fanfare specifically if it's a bird that kills you, either by damage or by knocking you into a bottomless pit?)
As a game designer who wants to get into platformer design, this is invaluable. Only retro game jump mechanics that are well documented are just Mario, and maybe Sonic. It's very interesting to see how other games did this.
The thing I most remember about this game is that it plays amazing. So crisp controls. Castlevania jump though... That's punishment and a half. In my opinion the most you need to finish this game is despawning that one hooded guy on the platform in 6th stage. And perhaps you want to die before the last boss if your hp is low so you get to resume before the boss. And try to finish the last boss in one go, because if my memory serves right, you get a hp refill only on the first try.
Nice video! I've played a fair bit of NG1 and have seen certain parts of the game where you screen wrap indefinitely if you fall in a pit. Would that be because somehow it's skipping the death check? I've mostly noticed this happen in 5-2 and 6-1. Some interesting things happen when you press L+R simultaneously: Ryu has a tendency to moonwalk in whatever direction you're "leaning" on the d-pad with.
I streamed and beat Ninja Gaiden about five years ago and it was easily one of the most frustrating games I'd ever played. The knockback combined with enemy respawn checkmarks makes for a miserable experience at times. (Birds!)
Man I used to get wrecked by this game. I stayed up all night long one time to beat this game and figure out every thing. Man I used to skip school to play part 2 on nes. To this day I do no regret it.
This content is utterly amazing and it deserves mass liking. What's the memory address we can poke and patch out RU-vid's checks for number of likes? 😆
I've already beaten Ninja Gaiden and its sequels, though I did so using occasional savestates--only at the beginning of boss fights, so I wouldn't have to play through the whole stage again. (I did buckle in and add some more for NG3 to make that game's checkpoint system not suck total ass, but that's neither here nor there...) I think it would be a nice quality of life change to just have a code that removes the whole "-1" thing and have it start you on the boss stage again. I assume doing this would have you change -1 into -0, and make the check to see if the stage number is greater than 13 to make it check some unreasonably high value, but I don't really know this stuff well enough to make actual functional Game Genie codes. Got any clue what those codes would be? (I'm really just asking for NG1 since you clearly already know the stuff and have it laid out. Similar codes for NG2 could be nice too, though for that one I'd rather the final boss gauntlet send you back to the first form, since they don't refill your life between phases like NG1 does and as such being able to restart on each form would make it too easy.)