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

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 พ.ย. 2024

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

  • @BigHailFan
    @BigHailFan ปีที่แล้ว +879

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

    • @Ryowhosakazaki
      @Ryowhosakazaki ปีที่แล้ว +41

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

    • @TiwazGoudsnor
      @TiwazGoudsnor ปีที่แล้ว +45

      Bimmy knows

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

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

    • @Omegashotgun
      @Omegashotgun ปีที่แล้ว +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 ปีที่แล้ว +5

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

  • @Darxide23
    @Darxide23 ปีที่แล้ว +354

    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 ปีที่แล้ว +12

      Hindsight is everything

    • @konayasai
      @konayasai ปีที่แล้ว +45

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

    • @fernandobanda5734
      @fernandobanda5734 ปีที่แล้ว +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 ปีที่แล้ว +24

      @@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 ปีที่แล้ว

      @@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 ปีที่แล้ว +341

    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 ปีที่แล้ว +38

      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 ปีที่แล้ว +46

      @@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 ปีที่แล้ว +12

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

    • @vaiyt
      @vaiyt ปีที่แล้ว +31

      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 ปีที่แล้ว +2

      I loved that game!

  • @zargon45
    @zargon45 ปีที่แล้ว +251

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

    • @rzeka
      @rzeka ปีที่แล้ว +80

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

    • @sandakureva
      @sandakureva ปีที่แล้ว +31

      Why use many pixel when one pixel do trick?

    • @juliewinchester1488
      @juliewinchester1488 ปีที่แล้ว +45

      ​@@sandakurevaone pixel no do trick

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

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

    • @vuurniacsquarewave5091
      @vuurniacsquarewave5091 ปีที่แล้ว +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.

  • @Treblaine
    @Treblaine ปีที่แล้ว +114

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

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

      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.

  • @LonelySpaceDetective
    @LonelySpaceDetective ปีที่แล้ว +99

    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 ปีที่แล้ว +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 ปีที่แล้ว +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 9 หลายเดือนก่อน

      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

  • @RadicalRaymondd
    @RadicalRaymondd ปีที่แล้ว +160

    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 ปีที่แล้ว +1

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

    • @SpockvsEgon
      @SpockvsEgon ปีที่แล้ว +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?

  • @alexjackson7929
    @alexjackson7929 ปีที่แล้ว +45

    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 11 หลายเดือนก่อน +5

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

  • @CodeIndigo
    @CodeIndigo ปีที่แล้ว +114

    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  ปีที่แล้ว +66

      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 ปีที่แล้ว +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 ปีที่แล้ว +18

      ​@@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 ปีที่แล้ว +2

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

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

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

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

    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 ปีที่แล้ว +10

      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 ปีที่แล้ว +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.

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

    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.

  • @EmeralBookwise
    @EmeralBookwise ปีที่แล้ว +42

    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 ปีที่แล้ว +16

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

  • @nevyn
    @nevyn ปีที่แล้ว +31

    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 ปีที่แล้ว +1

      Hope to try it out soon, good luck 👍

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

    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.

  • @YellowElevator815
    @YellowElevator815 ปีที่แล้ว +14

    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 ปีที่แล้ว +1

      What made you want to speederun this game?

    • @YellowElevator815
      @YellowElevator815 ปีที่แล้ว +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.

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

    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.

    • @JohnSmith-fq3rg
      @JohnSmith-fq3rg 3 หลายเดือนก่อน +2

      They had to get a "working" movement system built, they built it. Single pixel clearly worked on whatever test levels they tested it on enough to say they hit their deadline to their manager. Next job, combat, attacks and collisions, they built it. A single pixel width hitbox would guarantee all attacks could be dodged simply by jumping no matter how early or late, so that had to be done correctly the first time. Someone designed the level designs, game went to qa, complaints were noted yet a solution to issues which could be chalked up to "player skill" were never developed or implemented, game made it out the door on deadline and the company made money. That's it.

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

    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.

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

    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.

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

    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.

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

    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.

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

    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.

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

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

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

    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  ปีที่แล้ว +5

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

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

    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 ปีที่แล้ว +3

      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 ปีที่แล้ว +9

      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 ปีที่แล้ว +4

      @@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 ปีที่แล้ว +2

      @@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".

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

    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.

    • @JohnSmith-fq3rg
      @JohnSmith-fq3rg 3 หลายเดือนก่อน +1

      It's a bad state machine design. But when all you have is a 6502 to handle all the logic, you have to just accept stuff like that sometimes.

    • @ScrambledAndBenedict
      @ScrambledAndBenedict 3 หลายเดือนก่อน

      @@JohnSmith-fq3rg Honestly though, I'm actually fond of little glitches that don't actually break the game. It gives them personality I think. My all-time favorite glitches are things like the Minus World, where you can find entire areas of games that aren't even supposed to exist.

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

    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  ปีที่แล้ว +5

      TMNT water level was not your fault at all!

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

      @@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!

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

    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++.

  • @igodreamer7096
    @igodreamer7096 ปีที่แล้ว +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! ⭐⭐⭐⭐⭐

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

    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.

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

    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...

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

    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 =)

  • @samp.8099
    @samp.8099 ปีที่แล้ว +3

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

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

    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 ปีที่แล้ว

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

  • @vswitchzero
    @vswitchzero ปีที่แล้ว +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 😆

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

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

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

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

  • @knghtbrd
    @knghtbrd ปีที่แล้ว +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  ปีที่แล้ว +19

      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 ปีที่แล้ว +8

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

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

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

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

    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.

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

    "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

    • @ThePreciseClimber
      @ThePreciseClimber 9 หลายเดือนก่อน

      And now we know. They fucked up. :P

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

    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... :-)

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

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

  • @megaing1322
    @megaing1322 8 หลายเดือนก่อน +1

    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.

  • @trer24
    @trer24 ปีที่แล้ว +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 ปีที่แล้ว

      *Flashbacks of Drakkhen*

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

      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.

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

    "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.

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

      10 months late but I believe that saved like 8 bits of space by not having a serparate variable... which really isn't that impressive considering that 1 pixel platforming hitbox, but yay optimization!

  • @RetroGamer2153
    @RetroGamer2153 11 หลายเดือนก่อน +3

    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.

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

    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  ปีที่แล้ว +6

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

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

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

  • @Dave-kq7gv
    @Dave-kq7gv ปีที่แล้ว +3

    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!
    ❤❤

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

    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 ปีที่แล้ว +2

      @@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 ปีที่แล้ว +2

      ​@@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

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

    "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.

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

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

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

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

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

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

  • @thedrunkmonkshow
    @thedrunkmonkshow ปีที่แล้ว +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 😃

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

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

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

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

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

      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.

  • @RealCaptainAwesome
    @RealCaptainAwesome ปีที่แล้ว +42

    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 ปีที่แล้ว +4

      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 ปีที่แล้ว +2

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

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

      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."

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

    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  ปีที่แล้ว +1

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

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

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

  • @NeoGames2
    @NeoGames2 ปีที่แล้ว +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 ปีที่แล้ว +1

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

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

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

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

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

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

    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.

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

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

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

    The number of Terminator references in this video lmao

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

    Great as always

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

    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.

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

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

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

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

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

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

  • @FluffyTheGryphon
    @FluffyTheGryphon ปีที่แล้ว +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  ปีที่แล้ว

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

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

      There is a patch out already!

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

    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 ปีที่แล้ว

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

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

    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.

  • @EvilCoffeeInc
    @EvilCoffeeInc ปีที่แล้ว +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!

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

    I have 2 Game Genies and have confirmed you can diasy chain them lol If I had this game I would totally try it!

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

    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.

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

    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).

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

    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.

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

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

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

    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.

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

    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 ปีที่แล้ว +5

      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

      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 ปีที่แล้ว +3

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

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

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

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

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

  • @VinsCool
    @VinsCool ปีที่แล้ว +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.

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

    Interestingly, I wonder if they went by the tile ID instead so that would be Game Genie / memory hackers of the time would search for the number of lives, lose, 1 and search for that number next. Or maybe it was just pure laziness, they didn't need to calculate the Tile ID index and add the numbers.

  • @TJ-wg3ud
    @TJ-wg3ud ปีที่แล้ว +3

    I remember being so mad as a kid when nes games “cheated”. It’s kind of funny that the games were actually cheating by being crappy.

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

    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 ปีที่แล้ว +2

      Endianness. It's a good read on Wikipedia.

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

    Man, I never thought that I will return to watch your videos after that TMNT underwater level explanation, because it was too much. Like, when I was watching it I was nearly sleeping. It was just too much of a information for my casual brain to handle. The same here. I was just trying to poke myself in to a forehead to not fall asleep. This is what happens when a casual gamer, who loves to play video games, tries to watch educational videos, even if they are about video games.

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

    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  ปีที่แล้ว +3

      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 ปีที่แล้ว +3

      @@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.

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

    a jump startup isn't necessarily a bad thing. i don't know how appropriate it is for a platformer, but i know some fighting games do that. but it has to be short; i know Super Smash Bros historically has been pretty consistently around 3-6 frames of "Jumpsquat."
    this game looks like it takes way too long, so it ends up feeling unresponsive and clunky.

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

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

  • @ErikLarson-l9k
    @ErikLarson-l9k ปีที่แล้ว +2

    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.

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

    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  ปีที่แล้ว

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

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

    The dev would redeem themselves 10 years later with The Simpsons: Hit and Run

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

    A pixel. A single pixel for collision detection. Dear god.
    Makes me wonder if there were similar problems with the Simpsons NES games. The jumping was so disgustingly finicky. And yet it somehow managed to perfectly capture the feeling of wearing cement shoes. 🤪

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

    It doesn't seem like that these were inexperienced programmers -- just that they were under a time and money crunch and decided 'eh, good enough' and released it.
    I wonder if Rocky and Bullwinkle suffers from the same issues?

  • @starleaf-luna
    @starleaf-luna 2 หลายเดือนก่อน

    the lives oddity is exactly why you should never use raw tile IDs. always use a normal integer; you can always add a set value to it for displaying. then you can limit it to 9 easier, it's protected from tile ID changes, and when you do shift tile IDs and forget to update the life counter code, you'll at least spot it.

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

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

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

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

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

    You always impressed me.

  • @Calemdoscope-uq1yg
    @Calemdoscope-uq1yg ปีที่แล้ว

    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.

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

    I love these debugging/fixing old games videos