Why is Platforming so Difficult in The Terminator for NES? - Behind the Code

Поділитися
Вставка
  • Опубліковано 19 жов 2023
  • Buttons don't work. Platforms seem to disappear. Sarah doesn't stand a chance!
    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 #Programming #Terminator
  • Ігри

КОМЕНТАРІ • 394

  • @BigHailFan
    @BigHailFan 7 місяців тому +815

    An old wise man that played this once said "WHAT WERE THEY THINKING?!"

    • @Ryowhosakazaki
      @Ryowhosakazaki 7 місяців тому +37

      He's not that old, but he's getting older and a father, that good ol' AVGN.

    • @OFFICIALFUNUSBAND
      @OFFICIALFUNUSBAND 7 місяців тому +41

      Bimmy knows

    • @samholdsworth420
      @samholdsworth420 7 місяців тому +13

      ​@@RyowhosakazakiI think you can consider people in their 40s old.
      I'm 42 😢

    • @Omegashotgun
      @Omegashotgun 7 місяців тому +16

      ​@@Ryowhosakazaki In addition to what that other fellow said, it is reasonable to interpret the phrase "wise old man" as non-literal, as a common turn of phrase.

    • @CrashHeadroom
      @CrashHeadroom 7 місяців тому +4

      ​@@samholdsworth420nah mate, 50s then ya old lol

  • @Darxide23
    @Darxide23 7 місяців тому +312

    It's amazing just how many bad NES games can be "fixed" or at least made playable with just a few lines of code changed.

    • @fernandobanda5734
      @fernandobanda5734 7 місяців тому +10

      Hindsight is everything

    • @konayasai
      @konayasai 7 місяців тому +41

      ​@@fernandobanda5734That's an odd way to spell "play testing".

    • @fernandobanda5734
      @fernandobanda5734 7 місяців тому +14

      @@konayasai Some things, yes. But you don't notice code mistakes by playtesting, especially frame-perfect interactions that you don't even know were frame-perfect.

    • @konayasai
      @konayasai 7 місяців тому +21

      @@fernandobanda5734 I don't know if you've played this game, but most of these things he's fixing are pretty apparent during normal gameplay.

    • @adolfolerito6744
      @adolfolerito6744 7 місяців тому

      @@fernandobanda5734 even a blind monkey with cerebral palsy would know that setting the collision detection to a single pixel in the middle of the player’s feet is an idiotic decision. It’s not something that requires analysis to find out or know, it just need a basic programmer to do their job half decently.

  • @steampunksystems1969
    @steampunksystems1969 7 місяців тому +317

    I worked on the old MMORPG 'Fallen Earth' and it had the same problem up till release when we finally talked the 'designers' into removing the wind up for the jump. Some peoples children :|

    • @nazgulsenpai
      @nazgulsenpai 7 місяців тому +35

      I had a short but extremely fun stint playing Fallen Earth earlier this year and let me tell you, that explains SO MUCH! BTW, it's a fantastically janky hidden gem of an MMORPG though and worth giving a shot. Its also totally free now, not even cash shop.

    • @steampunksystems1969
      @steampunksystems1969 7 місяців тому +43

      @@nazgulsenpaiglad to hear people enjoy it, I actually designed and wrote the whole 'progressive town' system was my first big thing in a game :)

    • @mobcont8335
      @mobcont8335 7 місяців тому +10

      It would be really nice if you could make a video explaining some of the code and choices of the game

    • @vaiyt
      @vaiyt 7 місяців тому +29

      The Miyamoto Principle: when the player presses the jump button, the character should jump.
      Sounds self evident until you compare Mario 64 with Tomb Raider, released around the same time. Or this game.

    • @BrentWalker999
      @BrentWalker999 7 місяців тому +1

      I loved that game!

  • @Treblaine
    @Treblaine 7 місяців тому +96

    It tried to predict the future but forgot there's no fate except what we make for ourselves... ironic.

    • @ag2023en
      @ag2023en 7 місяців тому +2

      They could have fixed the prediction code by multiplying the increment by a variable that tracks which direction the player is holding.
      So, if the player is holding left, the predictions are multiplied by -1. If the player is holding right, it multiplies them by 1. If the player is not holding any direction, it multiplies them by 0.
      This means that if the player chooses not to hold any direction, then the predicted position would be the same as the actual resulting position.

  • @zargon45
    @zargon45 7 місяців тому +231

    Excellent video as always. I almost lost it at the whole "collision is a single pixel" revelation.

    • @rzeka
      @rzeka 7 місяців тому +75

      "If you land on your feet, it doesn't count. You have to land on the empty space in between your feet!"

    • @sandakureva
      @sandakureva 7 місяців тому +30

      Why use many pixel when one pixel do trick?

    • @juliewinchester1488
      @juliewinchester1488 7 місяців тому +43

      ​@@sandakurevaone pixel no do trick

    • @kg4boj
      @kg4boj 7 місяців тому

      Would it take too much assembly code to make it a boolean between 2 pixels?

    • @vuurniacsquarewave5091
      @vuurniacsquarewave5091 7 місяців тому +4

      @@kg4boj Not by much, you'd have to do a "is it more than or equal to, but less than the right edge's X coordinate" and the inverse of that for the other side.

  • @LonelySpaceDetective
    @LonelySpaceDetective 7 місяців тому +91

    This really makes me wonder if the same coding decisions exist in other platformers that exhibit "falling through platforms" behavior; such as The Wizard of Oz on SNES, or if this is more uniquely specific to The Terminator.

    • @thedrunkmonkshow
      @thedrunkmonkshow 7 місяців тому +15

      It's hard to say with certainty in every case without examining the code but about 90% of the time it's simply caused by poor platform map coordinates or landing box size and/or the player's platform detector coordinates being too narrow or in this case a single pixel which is a real novice game coder mistake. A cool workaround I learned lately is that what some games do is by delaying the ground detector after colliding with a floor coordinate by 4 or 5 frames like in the case of Donkey Kong Country where even though your tumbling jump from platform still counts and does that neat "air" jump that speed runners take advantage of. 😃

    • @ninjacat230
      @ninjacat230 7 місяців тому +3

      There's a PlayStation game call Phix the adventure (or something like that) that seems to show similar symptoms, including being able to seemingly partially clip into walls and confuse the graphics engine.
      One particular situation comes to mind where it is possible to fall into the space between a platform and a wall to your death, despite there not being any visible gap between them.

    • @johnsimon8457
      @johnsimon8457 4 місяці тому

      Building a platformer is a minefield of tiny decisions so if it’s someone’s first game and they’re just building these mechanics from first principles … yeah

  • @alexjackson7929
    @alexjackson7929 7 місяців тому +39

    The original 2D Prince of Persia had completely different mechanics for vertical jumps and running jumps--maybe that's what the designers were going for? Definitely a case of the player character mechanics and the level designs being mismatched. Prince of Persia never made you jump between tiny ledges, or fight and platform at the same time. The 1992 Famicom game Moon Crystal has obviously Prince of Persia-inspired animation, including distinct vertical and running jump types, but jumping and landing are always instantaneous in that game.

    • @cdru515
      @cdru515 6 місяців тому +4

      Not to mention that Prince of Persia allows you to catch ledges, thus giving a good margin of error

  • @RadicalRaymondd
    @RadicalRaymondd 7 місяців тому +155

    I love your recent videos these last few months so so much. It feels so satisfying now with an adult with a decent understanding of code to be able to look at these breakdowns and understand *why* the issues that plagued the games featured on AGVN that I grew up watching, happen.

    • @LavaCreeperPeople
      @LavaCreeperPeople 7 місяців тому +1

      Why is Platforming so Difficult in The Terminator for NES? - Behind the Code

    • @SpockvsEgon
      @SpockvsEgon 7 місяців тому +3

      In honor of the AVGN, I want to see a Jeckyll & Hyde video. Why is it so hard to play, and can it be fixed?

  • @benjaminramsey4695
    @benjaminramsey4695 7 місяців тому +96

    I think part of the lesson here is to try to appreciate the hard work that goes into the games that got this stuff right! They probably worked and improved and fixed and improved and rewrote and tested, etc. Good stuff doesn't just happen on its own.

    • @dycedargselderbrother5353
      @dycedargselderbrother5353 7 місяців тому +9

      Something I really appreciate is how right Nintendo got platforming physics in Super Mario Bros. Almost 40 years later and it doesn't feel old at all.

    • @helloofthebeach
      @helloofthebeach 7 місяців тому +3

      It's also important to consider _why_ things went wrong the way they did with games like this. It's impossible to know the story behind every one of these crappy games, but given what we know about the development of games like E.T. for the Atari 2600, I'm willing to bet these developers were set up for failure.
      Were they also bad or incompetent programmers? I'm inclined to think so. But that's not enough to create a train wreck as bad as The Terminator.

  • @CodeIndigo
    @CodeIndigo 7 місяців тому +101

    The look of pure horror that I had while watching this was probably the same as what you had while discovering this. So, SO many bad decisions. I wonder if you've ever considered contacting some of the programmers for these and asking them if they knew why some of these decisions ended up in the final products. The likely answer though is probably "we had a few weeks to build this and the studio didn't budget enough for QA".

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +58

      I assume that would be the case. As far as Radical Entertainment, they were a start-up at the time. The people that worked there basically had to get games out to recoup money invested. It could be they also felt rushed due to the fact the Super Nintendo was already out at the time. Lots of pressure.

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 7 місяців тому +3

      Lazy math. Can’t be too difficult to Intersect a line with a box. Macros to use 8.8 fixed point throughout. Why even start a company if you don’t have any goals?

    • @frikobraun
      @frikobraun 7 місяців тому +12

      ​@@ArneChristianRosenfeldtI guarantee the guy who programmed this buggy stuff isn't the guy who founded the company, likely the low guy on the totem pole fresh out of college

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 7 місяців тому +1

      @@frikobraun so a less dramatic version of doom on 3do

    • @Metal_Horror
      @Metal_Horror 6 місяців тому +2

      ​@@frikobraunthis is my thinking. This reminds me too much of me writing my first platforming logic. It smacks of inexperience, not time constraint.

  • @ItsHyomoto
    @ItsHyomoto 6 місяців тому +9

    We get a peek about the skill level of the programmer here. This input/state lookup table is kind of advanced and even a bit clever. That may give us a fairly important peek into what went wrong: the programmer was not untalented, things like using a tile value for lives is weird but it avoids CPU cycles calculating the tile value. Even stuff like the look ahead, while bugged, represents a novel approach.
    What this suggests to me is that Terminator's flaws may come more directly from the developer under estimating (or intentionally inflating) the difficulty, as was common back then. It's perhaps less easy to appreciate now, but games like T2 on Gameboy can be completed in three minutes: it was not uncommon to make a game harder or more confusing purely to stretch out it's runtime. Couple this with some unintuitive behaviors like single pixel tile collision (which the developers would be aware of) and you have a game that's unexpectedly challenging for the wrong reasons in addition to challenging for more deterministic ones.

  • @thesterndragoon9159
    @thesterndragoon9159 7 місяців тому +14

    I love how sadistic it is to make the jumping box a single pixel despite the fact you already have the entire sprite's hitbox for damage programmed that you could easily have used for the platform detection.

  • @EmeralBookwise
    @EmeralBookwise 7 місяців тому +38

    It's always interesting to see how many of these famously bad games are made all the worse by their coding choices, and by extension just how easily they can sometimes be improved with something as simple as a few GameGenie codes.

  • @craigix
    @craigix 7 місяців тому +16

    Always in awe that you disassembled these and figured out & commented the code. So much work goes in to these videos.

  • @nevyn
    @nevyn 7 місяців тому +29

    Between the last video and this one, I wrote my own first NES game for Ludum Dare, and... 1) much of what I've learned is through your Behind the Code series, so thank you!! and 2) these are so much more satisfying to read/follow now that I "know" 6502 assembly :D

    • @mwk1
      @mwk1 7 місяців тому

      Hope to try it out soon, good luck 👍

  • @Cyclingismywholelife
    @Cyclingismywholelife 7 місяців тому +9

    Older gamer here. To me these kinds of physics is what I always felt the games were designed to be like, though not as sharp as others, you learn to adapt. I don’t hate it, but it chips away at your patience. In the end, it’s very satisfying to beat these types of games. Though coming back to them way later with many “improvements” thanks to hacks and mods, it makes the game feel new and fresh and it gives you a sense of “this is how they intended it to be” which is nice too.

  • @invisghosty
    @invisghosty 7 місяців тому +9

    As others have said, these recent videos have been so nostalgic while also cathartic. It's wonderful seeing games from my early days that caused so much grief get pulled apart, called out, and patched. What you're doing is great! I'd love to see you slowly progress through game platforms, getting more modern with each one, fixing some of the worst offenders of each platform as you go. Superman for N64 would be a wonderful thing to see you, somehow, try to make it less awful to interact with. I'd love to see super ghouls and ghost & contra III for the snes get looked at.

  • @JamieBainbridge
    @JamieBainbridge 7 місяців тому +7

    I'm trying to patch something i want into a SNES game atm. I have someone else's partial bsnes+ debugger symbol notes and comments but it's still so hard. Yet again I am amazed at your clear disassembly and explanation of these games. Just wow dude.

  • @kri249
    @kri249 7 місяців тому +6

    Such a thought provoking video. It's almost like pin pointing where the game messed up and using game genie codes to course correct it from a disastrous game is some kind meta analogy of the movies plot.
    I also love how you recognised assembly code in the Terminators vision. I think James Cameron just threw anything remotely sciency and technical sounding to make the films feel legit, like the T800 processor chip being a superconductor at room temp. I picked up on that years later after learning to use NMR fir my science degrees.

  • @ScrambledAndBenedict
    @ScrambledAndBenedict 7 місяців тому +6

    I've always been fascinated by games with double jump glitches. Wizards and Warriors on NES had a simple one where you could take a hit midair and use it to get a second jump, and looking back now it's probably something really similar like the game thinks the character is on the ground during the hit animation or something.

  • @sypwn
    @sypwn 7 місяців тому +16

    17:13 wouldn't it be better to swap "Land yet?" with "Select"? Otherwise you'll still have the same dropped input if you try to change weapons during that one frame. Swapping "Land yet?" with "Select" would fix both jump and select.

    • @ag2023en
      @ag2023en 7 місяців тому

      I also thought about that. Maybe there's some reason why he decided not to do it?

  • @YellowElevator815
    @YellowElevator815 7 місяців тому +13

    Fantastic video as usual, love the really in depth analysis. I happen to speedrun this game and currently have the fastest known time. So I am intimately aware of all the platforming failures that this game has to offer. Even playing on emulator for practice was so inconsistent, there were so many jumps that seeming fail for no reason and it was a massive challenge to play through with (mostly) no mistakes.
    A few things:
    The "fake" landings where you appear to make it past the edge of a platform but then fall anyway is SO INFURIATING. Theres actually a moment in the run where that happens to me and I was able to react by jumping again before I fell. I taught myself to always spam the jump button on any sketchy landings in case I needed the second chance. Thanks so much for explaining why that shit happens.
    Ok, the single pixel landing detection???? That has to be a joke. But I'm not really surprised. Even your characters stance when standing up straight is so weird. His legs are just bent apart and its hard to tell where your "center" even is. Those tiny platforms at 6:30, at the end of level 1, were such a pain in the ass. Even a veteran gamer is going to have a hard time with it. Not only is it hard to tell where your center is, but the platforms are insanely small for no real reason. Theres not a single other part of the game like that.
    The landing lag... why even include it? Its so crazy how even though jumping is something you have to do so much in this game, it feels like a punishment. Makes you feel slow and weak.Would love for you to dive into why its possible to cancel landing lag with punches and kicks (only available to the player after level 1 and not including the driving levels).
    I know the video was about platforming mainly, but I wish you'd go into detail about maybe the later bosses and levels. They are so bizarre and dont follow any convention. Just a really rushed and broken mess of a game. Just one random tidbit: I learned from a TAS run that the enemy AI is designed to spawn a single enemy in front of you wherever you are facing. The screen has to have no other enemies, and you have to be facing that direction for about 1.5 seconds. This timer resets EVERY TIME you turn around. So you can cheese the game easily by constantly turning back for at least a single frame while running and it will cause enemies to never spawn at all. Hilarious.

    • @XxRipperRooXx
      @XxRipperRooXx 7 місяців тому +1

      What made you want to speederun this game?

    • @YellowElevator815
      @YellowElevator815 7 місяців тому +3

      @@XxRipperRooXx When I was really little, my family had an NES and a handful of games, most were very good like mario, zelda, megaman, kirby, etc. But we had some really shit ones like terminator. I had to revisit the game as an adult to finally finish it, and i got inspired to speedrun as a personal challenge. Every game, no matter how hard, has a strategy you can master. Basically I wanted to play the game like a pro in total spite of the glitchy challenges.

  • @sporedoutofmymind
    @sporedoutofmymind 7 місяців тому +4

    "terminator doesn't store the number of lives, but rather stores a tile"
    If that wasn't indicative of this studios programming practices, I don't know what is.

  • @briankarcher8338
    @briankarcher8338 7 місяців тому +5

    The insights you bring into how these old games worked is astounding. I learn a lot watching these. Your ability to debug these games written by somebody else is next level. Great job!
    Multi-frame bugs are hard to find.

  • @VieneLea
    @VieneLea 7 місяців тому +6

    "Okay, I gotta be honest. I didn't expect more than 9. But why a random number like 6?!" lives rent-free in my head

  • @knghtbrd
    @knghtbrd 7 місяців тому +27

    This game does not need a couple game genie codes, it needs an ipa to rewrite pretty sizable portions of the game's input and collision handling. I'd watch that video with popcorn, but I wonder if other people would have the attention span for what would wind up more a video on NES game architecture by example/counterexample. I wonder if this is the game to use if that kind of video is your goal though.

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +18

      I feel like this game might be a good project for someone in the same way one might buy a house, gut it to the studs, and rebuild.
      One thing of note, however, is that this is a multi-genre game. The overhead driving stages in particular are... something else - no pun intended.

    • @nsf001-3
      @nsf001-3 7 місяців тому +6

      It needs more than an IPA, it needs a Rolling Rock

    • @atmaweapon2803
      @atmaweapon2803 7 місяців тому

      ....or we could all just use the Terminator hack for Journey to Silius and call it a day. 😅

  • @DouglasZwick
    @DouglasZwick 7 місяців тому +12

    I feel like you could also have answered this video's titular question accurately by saying, "Because you jump with the B button and attack with the A button". It truly baffles me that anybody would make an NES platformer as late as 1992 where you don't press A to jump.
    Great video as always! I eat this stuff up. Deep dives into character controller code are my jam. I hope you'll do more and more of them!

    • @LonelySpaceDetective
      @LonelySpaceDetective 7 місяців тому +2

      You know, I wonder if there's any third-party NES controllers that allow swapping A and B with a switch or button macro or something. Feels like it'd be a good selling point for all those companies making retro gaming controllers.

    • @nsf001-3
      @nsf001-3 7 місяців тому +8

      Yeah nearly a decade after SMB1 you'd think everyone already understood the de facto convention. But "up is jump" is even more cursed

    • @LonelySpaceDetective
      @LonelySpaceDetective 7 місяців тому +3

      @@nsf001-3 One of the reasons I made my earlier reply is that a while back, some company made a joystick for retro computers such as the Commodore 64, and it has a switch to make one of the buttons act as tilting the joystick up, because of how there's so many games for the classic microcomputers that did Up is Jump simply out of necessity (they only really supported a single button on the controller 99% of the time).

    • @LonelySpaceDetective
      @LonelySpaceDetective 7 місяців тому +1

      @@nsf001-3 Finally looked up that controller, it's one of Monster Joysticks', uh, joysticks. The ones they make for retro computers have a switch that when flipped makes the joystick not do anything when tilted up, and makes one of the buttons act as tilting the joystick up; completely solving the problem of "Up is Jump".

  • @anon_y_mousse
    @anon_y_mousse 7 місяців тому +2

    I love that you not only diagnose what's wrong, but provide a fix.

  • @Fryguy64
    @Fryguy64 7 місяців тому +4

    I absolutely love these deep dives into broken or poorly-conceived mechanics. It's a satisfying vindication after all these years. And you present them so well, even I (with no programming knowledge) can follow them.

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +4

      Thank you so much for this comment. I try to script videos so they appeal to both programmers and gamers.

  • @igodreamer7096
    @igodreamer7096 7 місяців тому +5

    Love your videos, man. Every and single one of them are a master class of how the games behave and how program them!
    Keep up, DG brother! ⭐⭐⭐⭐⭐

  • @kevinwilley4180
    @kevinwilley4180 7 місяців тому +2

    I remember that this was torn apart on an early episode of Angry Video game Nerd. He ran in to the max 6 lives after leaving the game on overnight rack up score.

  • @trer24
    @trer24 7 місяців тому +5

    And yet if I had rented this game as a kid, I would have forced myself to play through it until I had to return it on Monday. Then 30 years later I would develop nostalgic feelings for it and convince myself that this game wasn’t bad

    • @diamondsmasher
      @diamondsmasher 7 місяців тому

      *Flashbacks of Drakkhen*

    • @Damaniel3
      @Damaniel3 7 місяців тому

      Sounds like me and Deadly Towers, except I had that game for a couple weeks - and actually beat it.
      Does it suck? Yeah. Do I have a weird nostalgia for it? Yep.

  • @volcanicusrex7884
    @volcanicusrex7884 7 місяців тому +16

    It's always interesting to see how some of these old games were. Makes you wonder how many people working on some of these had never made a game before?

    • @volcanicusrex7884
      @volcanicusrex7884 7 місяців тому +1

      @@james66666 yeah, I’m not trying to say these guys were idiots, but if you’d never made a game before, there’s just things that wouldn’t know the first time around.

    • @1stCallipostle
      @1stCallipostle 7 місяців тому +1

      ​@@james66666I imagine the resources did to some degree exist by 1992 though.
      The SNES was already out, Home console gaming was 7 years into it's massive rise

  • @RetroGamer2153
    @RetroGamer2153 6 місяців тому +2

    Can I suggest you take a look into the code for the Double Dragon games or River City Ransom? I'd like your insight into DD's wonky jumps (and kaizo hell).
    Also RCR has some interesting 2.5D maths for collision checks.

  • @joebeezy9471
    @joebeezy9471 7 місяців тому +2

    I love this channel. I love what you’re doing with these old games. It’s amazing to see the behind the scenes. It also makes me feel so much better about being frustrated playing these as a kid. The video you did on TMNT for the NES blew my mind. I knew that damn water level was messed up and it wasn’t my fault!

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +4

      TMNT water level was not your fault at all!

    • @joebeezy9471
      @joebeezy9471 7 місяців тому

      @@DisplacedGamersthanks for the reply. It’s nice to know you’re still reading comments. Whenever I see another video of yours drop I cannot click on the link fast enough.
      If you’re not a teacher, professor, trainer, or in a leadership role where ever you are then the world is seriously missing out. You have a gift. A real gift.
      I literally just sent one of your videos to my wife (a 2 year old video about NES audio coding) because she wanted to know how I know so much technical stuff about video games. Her response “this is what you watch for fun?”
      Yeah, this is what I watch for fun!

  • @CrashCatalogue
    @CrashCatalogue 7 місяців тому +1

    I love these videos where you fix old games because every game deserves a chance to shine. The bonus is how you explain how the game is programmed, giving an insight how the faults are created.

  • @vswitchzero
    @vswitchzero 7 місяців тому +2

    Really enjoyed this video! I was always a big fan of the Terminator movies and rented this game back in the day. It was sooo frustrating and difficult. I clearly remember the issue of missing platform jumps too. I spent hours playing it getting nowhere. At least I know why now 😆

  • @Foggen
    @Foggen 7 місяців тому +1

    That prejump/landing animation looks so wobbly it makes my knees hurt

  • @jonothanthrace1530
    @jonothanthrace1530 7 місяців тому +6

    I have to say, the crummy jumping sprite does not help with the feel of the jumping.

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +10

      I feel like if an artist drew these sprites, they would be embarrassed. However if a computer programmer drew them, they would feel pretty darn good.

  • @marscaleb
    @marscaleb 7 місяців тому +2

    16:15 that reminds me of Double Dragon 3 on the NES. I saw lots of people complain about moves "just not working" even though "they did them right." I've thought about that a lot and wondered how it even happens. I've written enough janky game code that I know its possible, but sometimes it baffles me to think anyone actually released a game THAT bad. And yet, here we are...

  • @nickwallette6201
    @nickwallette6201 7 місяців тому +3

    I think this highlights one of the problems with ASM code... it's so verbose, and the syntax doesn't immediately give you context of what that code does, that it invites mistakes. For one, it's just easier to miss stuff. But two, it takes a lot more work to find something that needs to be changed, figure out how to fix it, and avoid breaking a dozen other things in the process. So, probably, there was a long laundry list of "we should fix this" items that someone looked at, felt their heart sink, and decided to just let it ride... :-)

  • @theparticularist5373
    @theparticularist5373 7 місяців тому +1

    The way the game determines how many lives the player has completely blew my mind. Instead of calculating the amount of lives and then looking up which graphic tile to render based on the result, it directly calculates which tile to render.
    And the real kicker is, I think I actually understand why they chose this method - saving processor cycles. This method basically skips the middle step, thus saving some processor time. That's an optimization trick that I definitely would have never thought of.

  • @sandakureva
    @sandakureva 7 місяців тому +1

    1:08 I guess the more things change, the more they stay the same.
    In the 80s/90s, cool looking computer code in the movies was unassembled 6502 Assembly.
    In the 20s, it's uncompiled C++.

  • @Touchfuzzy_YT
    @Touchfuzzy_YT 7 місяців тому +2

    The number of Terminator references in this video lmao

  • @teranokitty
    @teranokitty 7 місяців тому +1

    'B' button to jump...in an NES game!!?
    *gamer rage intensifies*
    Fantastic video as always!

  • @thedrunkmonkshow
    @thedrunkmonkshow 7 місяців тому +2

    I'm sure if you interviewed the programmer who coded this game asked him what happened he'd probably come clean and say, "Yeah man my bad. This was one of my first titles while working for the company." lol 😃

  • @jmanclan
    @jmanclan 7 місяців тому

    This just showed up in my feed and its fascinating. Going to have binge this series, awesome video.

  • @VoiceDisasterNz
    @VoiceDisasterNz 7 місяців тому +1

    Now you can jump all over those giant q-tips and half disappeared blocks.

  • @samp.8099
    @samp.8099 7 місяців тому +1

    Every NES game covered by the AVGN needs a video like this

  • @RealCaptainAwesome
    @RealCaptainAwesome 7 місяців тому +41

    I love this series. I need to send it to my mom who got mad at me whenever I would rage at games when I was a kid. I was totally right. Haha 😂

    • @Sinn0100
      @Sinn0100 7 місяців тому +3

      Oh my God, I need to do the same thing. I used to get so freaking lit over this stuff and this is pure vindication. I'm doing it!

    • @dycedargselderbrother5353
      @dycedargselderbrother5353 7 місяців тому +1

      "Oh my god it was total bullshit this whole time!"

    • @chrisbg99
      @chrisbg99 7 місяців тому +1

      When I learned about how some fighting games were programmed to read your button inputs and able to react instantly I was like "Hah hah, I knew the game was cheating."

  • @krank23
    @krank23 7 місяців тому +2

    Great video! As someone whose job includes teaching basic game programming to high school kids, it's nice to have stuff to show them - at least the ones that want a little more in-depth knowledge. I absolutely have students who'll gobble this up =)

  • @Doommaster1994
    @Doommaster1994 7 місяців тому +1

    For anyone wondering, this game was programmed by Chris Robertson. He also worked on a bunch of NHL titles.

  • @frankt4971
    @frankt4971 7 місяців тому +1

    This channel is so cool! Thanks for the video, I'm definitely subbing!

  • @opalpersonal
    @opalpersonal 7 місяців тому

    your writing is greatly improving every episode and i like the slightly more casual tone it's taking! keep up the great work!

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +1

      Thanks. It is one of the toughest things to refine, and each new game/subject presents a new challenge.

  • @partlyawesome
    @partlyawesome 7 місяців тому +3

    Great as always

  • @WolfieBeat
    @WolfieBeat 7 місяців тому

    Great video! I discovered your channel not too long ago and have been binge watching your videos, lol. Finding out all of the quirks of the NES games that I played as a kid is really brings back memories. Do you have any plans to cover the PC-Engine/Turbografx-16 console? Either way, thanks for the videos and keep up the good work!

  • @mukinha
    @mukinha 7 місяців тому

    Excellent video! I'm glad to se content like this!

  • @skRapKlan
    @skRapKlan 7 місяців тому

    Love these videos! Thanks so much - keep up the good work!

  • @arraybytes7214
    @arraybytes7214 7 місяців тому

    I rally enjoy this series, hope you never run out of ideas.

  • @slot9
    @slot9 7 місяців тому

    So interesting! And quite hilarious to see what is going on behind the scenes of the frustration.

  • @crtinkering7323
    @crtinkering7323 7 місяців тому

    Fire 🔥 as always!!!! So glad to have a weekend episode!

  • @Dave-kq7gv
    @Dave-kq7gv 7 місяців тому +2

    once I took a class on x86 assembly & decided NEVER AGAIN. These videos are so insightful & approachable they make me want to relook ASM. Thanks, jerk!
    ❤❤

  • @megaing1322
    @megaing1322 3 місяці тому

    I love specifically the single-pixel player collision. Ofcourse, with modern hindsight, we can easily say "yeah, don't do that, or if you do, at least make the hitboxes of the platforms bigger". But these kinds of lessons might not have been well known at that time, and have to be learn via mistakes. Today, we have games such as this to thank for not repeating this in modern games.

  • @Jademalo
    @Jademalo 7 місяців тому +9

    Question about lives - how does it tell whether or not you are out of lives and to give you a game over?
    It seems weird to me they would not update the cap but remember to update what value counts as 0

    • @CodeIndigo
      @CodeIndigo 7 місяців тому +4

      It's likely just a comparison against the text parser's result for the 0 tile--- which was probably updated when the tileset was changed because it would have rendered the visuals to be total garbage. That raises the question of why they didn't bother setting the cap to be a comparison against the 9 tile... but then again who are we to question the wisdom of the giants of industry who brought us that instant classic, Rocky and Bullwinkle for the NES. 🙄

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +6

      So I did have a section in this script that went into a bit more detail about that, however I cut it for time/pacing.
      They likely changed the location of the graphics and naturally updated the tile-specific checks in the game for default reserve lives (immediately apparent when starting up the game in the event they missed the code update). If they forgot the "Game Over" logic, that would have also been apparent when they were still alive after dying and had symbols showing up in the Lives box during play testing.
      The cap on reserve lives is an easy item to overlook and would be super low priority (if even thought about) during play testing. As far as reviewing the code itself... did they hardcode the value or use a constant? You'd think they would have had minLives/maxLives constants and naturally updated the tile ID values at the same time if they made a change... but maybe not!

    • @Jademalo
      @Jademalo 7 місяців тому +2

      @@DisplacedGamers Awesome, ty! This definitely sounds like a high quality, well developed video game lol.

    • @mwk1
      @mwk1 7 місяців тому

      @@Jademalo what happened to this dev studio after the game?

  • @Xray_Mike
    @Xray_Mike 7 місяців тому

    This was a great video. thank you for making it.

  • @syntaxerror9994
    @syntaxerror9994 7 місяців тому

    Videos about how memorable games work are great, but I'm really liking videos like this; exploring jank in broken games!

  • @CMDBob
    @CMDBob 7 місяців тому +3

    Another fascinating video about some really dodgy collision detection and input handling. Amazing to realise that the Radical Entertainment that made this would later go on to make the amazing Simpsons Hit and Run. Food for thought, really.

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +6

      They had just started up and were likely trying their best to get some titles released and start making money.

    • @CMDBob
      @CMDBob 7 місяців тому +2

      Oh definitely. The first games are always the hardest, and they got em released which is an achievement in and of itself.

  • @Calemdoscope-uq1yg
    @Calemdoscope-uq1yg 7 місяців тому

    James Bond Jr game contains specific feature - you slip off the platform's edge, so staying on just one pixel results in instant fall. And it's obvious it goes opposite to how all games tought us, that you can literally stand in mid-air safely.

  • @NeoGames2
    @NeoGames2 7 місяців тому +4

    The second I saw the pixel thing I knew you were pretty much going to feature everything the AVGN talked about and I know you're doing it with him in mind which I really appreciate. Watching you explain the issues in a way he couldn't because you dig into the game's code is really fascinating. I'd love to see you tackle Wizard of Oz for the SNES next if possible because it has similar issues of falling through platforms. Also I'd love to see a second video tackling on the whole random "6 max lives" issue and why the crouching mode even exists

    • @AB0BA_69
      @AB0BA_69 7 місяців тому +1

      I can imagine the Nerd watching this video and saying to himself "Mother fuck..." because he was right 😂

    • @ponocni1
      @ponocni1 7 місяців тому

      It would be totally fine for that pixel collision if they increased width of colision boxes of platforms

    • @Patashu
      @Patashu 7 місяців тому

      @@ponocni1 Or if they added coyote timing, or changed graphics so they looked thinner. But coulda woulda shoulda.

  • @Metal_Horror
    @Metal_Horror 6 місяців тому

    Reminds me so much of screwing around with platforming logic while writing my first game. Says something about the experience level of the programmer(s).

  • @apollolux
    @apollolux 7 місяців тому

    “Do or do not, there is no jump.” - The Yodanator, probably

  • @trzy
    @trzy 7 місяців тому

    It's wild to see that old games tended to use single pixel or few-pixel probes for collision detection rather than a box or line overlap test. I know the latter is more expensive, especially on early 80's 8-bit chips, but surely couldn't have been *that* expensive if done carefully.

  • @Tonbizzle
    @Tonbizzle 7 місяців тому

    6:14 "I know you don't want additional problems, but oh, we certainly have them."
    Sounds like life. Ha.

  • @connercoughran4677
    @connercoughran4677 7 місяців тому

    Great video, per usual.
    Would you be willing to look into Ninja Gaiden 1 again? Is there a Game Genie code that makes it so you don't get sent back to 6-1 if you die on the final boss?

  • @Soumein
    @Soumein 7 місяців тому

    Neat. Can't say I see too many people giving this kind of technical explanation. While I can't read the code instructions, the explanation filled in the gaps, I think.

  • @FluffyTheGryphon
    @FluffyTheGryphon 7 місяців тому +4

    I know Retro Game Mechanics Explained took a look at the Card Shuffler code in Super Mario Bros 3's Memory Match game, but could you take a look at it and provide fixes to make it properly operational? Love your deep dives!

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому

      Hmm. I'll have to check out their video.

    • @MattHughson
      @MattHughson 7 місяців тому +1

      There is a patch out already!

  • @ZephyreSyx
    @ZephyreSyx 6 місяців тому

    Don't know if I've asked on the channel but I would love to see behind the code for Gauntlet and Gauntlet 2 NES how they handle moving around tons of enemies. They both handles it differently while the first appears to treat it as interactive tiles while the second appears more sprite-like.

  • @animatrix1490
    @animatrix1490 6 місяців тому

    I think this was my first video of yours and I'm sold. Tell me more about janky game programming, wise one

  • @Sigh95
    @Sigh95 6 місяців тому

    I really hope one day you cover that NES Frankenstein game. I’m specifically curious about how the vines work or why the game genie codes are the way they are.

  • @jhaluska80
    @jhaluska80 7 місяців тому

    I love this kind of analysis. Some of these bugs feel like the programmer never really played another platformer games and didn't know how the characters should feel.

  • @rabiroden
    @rabiroden 7 місяців тому

    I'm just here to express approval for the acknowledgment of Bucky O'Hare

  • @hola3535
    @hola3535 7 місяців тому +1

    You always impressed me.

  • @zfmag
    @zfmag 6 місяців тому

    I love these debugging/fixing old games videos

  • @EvilCoffeeInc
    @EvilCoffeeInc 7 місяців тому +3

    Funny, Mary Shelley's Frankenstein for SNES has jumping just like this game, I think for the same reasons, and the jumping ALSO feels like garbage in that game!

  • @arcadelinkauthor
    @arcadelinkauthor 7 місяців тому

    Thank you so much for these videos, they're quickly becoming one of the things I look forward to most!
    This is kind of a random question, but I noticed that 16-bit values often seem to be stored backward in these NES games, low-byte/high-byte, like processing a jump is $ED05 but it is stored as $05 $ED. Is there a reason that these values are stored in this way?
    I would personally swap them, just for my own percieved ease of use, but I bet theres a good reason and it would bite me in the ass.

    • @TakuikaNinja
      @TakuikaNinja 7 місяців тому +1

      Endianness. It's a good read on Wikipedia.

  • @pleaserespond3984
    @pleaserespond3984 7 місяців тому

    "Every game is a sandbox game when you can reprogram it" -- hah, true. That's how I "played" Doki Doki Literature Club. I went in almost blind - I just knew weird things happen, and when the 4th wall breaking started, it kind of irked me. I'm not sure why, but at the time I simply didn't care to play along with the game. So I said "oh, you wanna break the 4th wall? OK", unpacked the game files and just edited it to skip straight to the good ending. That was actually trivial since the game code was just plain python scripts in a zip file.

  • @bigedwerd
    @bigedwerd 7 місяців тому

    Awesome series. If you take suggestions, I'd like to throw Psycho Fox into the mix as it's a good enough game, but feel that the momentum is all wrong. It's missing that initial momentum of other platformers so jumps feel so stiff. I think a little tweaking could really improve the game overall.

  • @honorablejay
    @honorablejay 7 місяців тому

    I'd like to see you go over changing the player collision pixel to widen it and see what that would do for the platforming. It would also be interesting to see what would happen if you combined that with removing the standing jump animation.

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому

      The math would have to be reworked in such a way that player dimensions would be specified as part of the calculations.

  • @VinsCool
    @VinsCool 7 місяців тому +1

    Jesus Christ, I thought I created very questionable 6502 ASM routines, but this achieved so much worse.
    I could not make a input handler this bad even if I tried to, and I know I made a pretty cursed input handler routine before, at least it had the merit of getting most of the job done, with overlapping states being taken into consideration as well.

  • @qweeq14
    @qweeq14 7 місяців тому

    This is the only channel that actually "reviews" games as games are after all programs. You need to review the code to review a program.

  • @renakunisaki
    @renakunisaki 7 місяців тому +1

    Instead of 6 codes, could you just have it put you in the neutral state instead of the landing state? Or change the task list pointer so they're identical?

  • @jamisondonald384
    @jamisondonald384 7 місяців тому

    This was great. More, please

  • @user-uo6cq1cp3u
    @user-uo6cq1cp3u 7 місяців тому +1

    Considering you said the same developer made Rocky & Bullwinkle, another game known for iffy platforming, I’m curious if it has the same problem with a one-pixel landing. And while it’s not an NES game, I’m also curious about the Game Boy game Castlevania: The Adventure, because it seems to have the opposite problem: your collision box is almost too big, where sometimes it looks like you’re standing/walking in midair but you’re still on the edge of a platform.

  • @catsithgaming
    @catsithgaming 7 місяців тому

    I learned some assembly, and wondered what NES code looked like. Now I know.

  • @Azziee
    @Azziee 7 місяців тому

    No idea how you pick those games, but I love that those were in AVGN.

  • @XaqNautilus
    @XaqNautilus 7 місяців тому

    The power of a game genie code is amazing. My favorite is still DD2C-AF6F for Super Mario World. My brother actually found it. It actually makes Mario and Luigi's jumping power infinite, and if you are holding jump when you touch down on a surface you can hover out.

  • @jeremyparsons2944
    @jeremyparsons2944 7 місяців тому

    imagine the ice physics a 1 pixel position check would have if the landing didn't zero your velocity

  • @wChris_
    @wChris_ 7 місяців тому +1

    Can you increase the size of every platform such that its half a terminator width wider? Or would that require changing way to much. This could maybe be done in the collision checking routine, but im not sure if its possible, without moving any code around. Also your improvements could lend itself to a very nice patch, have you heard of IPS or BPS patches yet?

    • @VinsCool
      @VinsCool 7 місяців тому

      The pixel collision size honestly could get a simple revamp by simply moving it a few pixels left or right depending on the direction being faced, and then extend the check to a range based on the coordinates of the original displaced pixel, followed by a number such as 8 additional pixels,
      This would give a much more forgiving collision detection for sure for just a handful of new instructions.

  • @nightbirdds
    @nightbirdds 7 місяців тому

    Have you thought about maybe making an IPS patch out of these sorts of fixes? Just curious. Always love these deep dives and it shows me that even a professional studio can make errors and oversights.

    • @DisplacedGamers
      @DisplacedGamers  7 місяців тому +2

      All of my effort is put into producing the video. Sometimes other people have taken the changes I have made and created IPS patches for them. They have likely improved upon them as well. All of my changes are usually geared toward using a minimal number of Game Genie codes (with a few exceptions depending on the video/change).

    • @nightbirdds
      @nightbirdds 7 місяців тому +2

      @@DisplacedGamers Totally fair, I'd say. As to a part 2, well I wouldn't mind seeing this game get its Judgement Day.
      All the best, man.

  • @bedwablackburn
    @bedwablackburn 7 місяців тому

    Thoughts on a possible future video. CV III/Alumajou Densetsu?
    Like how the holy water stunlocks in US but not JP and stuff like why Sypha's lightning ball attacks deal multihit damage in the JP version?