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

Поділитися
Вставка
  • Опубліковано 25 гру 2024

КОМЕНТАРІ • 410

  • @BigHailFan
    @BigHailFan Рік тому +900

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

    • @Ryowhosakazaki
      @Ryowhosakazaki Рік тому +43

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

    • @TiwazGoudsnor
      @TiwazGoudsnor Рік тому +48

      Bimmy knows

    • @samholdsworth420
      @samholdsworth420 Рік тому +15

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

    • @Omegashotgun
      @Omegashotgun Рік тому +17

      ​@@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 Рік тому +365

    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 Рік тому +13

      Hindsight is everything

    • @konayasai
      @konayasai Рік тому +46

      ​@@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 Рік тому +25

      @@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 Рік тому +354

    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 Рік тому +39

      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 Рік тому +257

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

    • @rzeka
      @rzeka Рік тому +82

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

    • @sandakureva
      @sandakureva Рік тому +32

      Why use many pixel when one pixel do trick?

    • @juliewinchester1488
      @juliewinchester1488 Рік тому +46

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

  • @ItsHyomoto
    @ItsHyomoto Рік тому +18

    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.

  • @Treblaine
    @Treblaine Рік тому +120

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

    • @ag2023en
      @ag2023en Рік тому +4

      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 Рік тому +100

    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 Рік тому +16

      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 10 місяців тому

      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

  • @CodeIndigo
    @CodeIndigo Рік тому +116

    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  Рік тому +69

      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 Рік тому +4

      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 Рік тому +19

      ​@@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 Рік тому +5

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

  • @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 Рік тому +47

    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

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

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

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

  • @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 4 місяці тому +3

      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.

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

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

  • @YellowElevator815
    @YellowElevator815 Рік тому +15

    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.

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

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

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

  • @anon_y_mousse
    @anon_y_mousse Рік тому +4

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

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

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

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

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

  • @teranokitty
    @teranokitty Рік тому +2

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

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

  • @crtinkering7323
    @crtinkering7323 Рік тому +2

    Thanks!🎉🎉🎉🎉

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

  • @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?

  • @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 4 місяці тому +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 4 місяці тому

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

  • @frankt4971
    @frankt4971 Рік тому +2

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

  • @megaing1322
    @megaing1322 10 місяців тому +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.

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

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

  • @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 😆

  • @jmanclan
    @jmanclan Рік тому

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

  • @arraybytes7214
    @arraybytes7214 Рік тому

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

  • @elodvezer1790
    @elodvezer1790 День тому

    man i love learning! subbed

  • @partlyawesome
    @partlyawesome Рік тому +3

    Great as always

  • @slot9
    @slot9 Рік тому

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

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

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

  • @Touchfuzzy_YT
    @Touchfuzzy_YT Рік тому +3

    The number of Terminator references in this video lmao

  • @Doommaster1994
    @Doommaster1994 Рік тому +2

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

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

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

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

  • @syntaxerror9994
    @syntaxerror9994 Рік тому

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

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

  • @RetroGamer2153
    @RetroGamer2153 Рік тому +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.

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

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

  • @mukinha
    @mukinha Рік тому

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

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

  • @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 3 місяці тому

      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!

  • @Foggen
    @Foggen Рік тому +1

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

  • @crtinkering7323
    @crtinkering7323 Рік тому

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

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

  • @hola3535
    @hola3535 Рік тому +1

    You always impressed me.

  • @RealCaptainAwesome
    @RealCaptainAwesome Рік тому +43

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

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

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

  • @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 😃

  • @Xray_Mike
    @Xray_Mike Рік тому

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

  • @SaneRetro
    @SaneRetro Місяць тому

    6:59 On my platformer game, I have one pixel area at the foot to check for ground collissions but another hitbox for where the sprite should be (it also has a collission logic). I do this to manipulate jump buffering and have a precise coyote time in game, I wonder why they didn't try to implement similar ideas. I guess at the time the 'feel' of the movement was very often not taken into consideration.

  • @crt_rex
    @crt_rex 28 днів тому +1

    I beat this game on a livestream tonight. It took me two streams to get it done. Horrific. Thank God for your video to let folks know how broken this game is, lol.

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

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

  • @zfmag
    @zfmag Рік тому

    I love these debugging/fixing old games videos

  • @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?

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

  • @MoosieSingh
    @MoosieSingh Рік тому +1

    I love this so much

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

  • @jamisondonald384
    @jamisondonald384 Рік тому

    This was great. More, please

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

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

  • @animatrix1490
    @animatrix1490 Рік тому

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

  • @escape209
    @escape209 Рік тому +1

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

  • @starleaf-luna
    @starleaf-luna 3 місяці тому

    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.

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

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

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

  • @qweeq14
    @qweeq14 Рік тому

    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.

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

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

  • @Sigh95
    @Sigh95 Рік тому

    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.

  • @Tonbizzle
    @Tonbizzle Рік тому

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

  • @PhilipMurphy8Extra
    @PhilipMurphy8Extra Рік тому

    Displaced Gamers is a great video on UA-cam

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

  • @VoiceDisasterNz
    @VoiceDisasterNz Рік тому +1

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

  • @Hchris101
    @Hchris101 Рік тому

    I like this channel 👍

  • @miguelsilveira6623
    @miguelsilveira6623 Рік тому +2

    I would love to see if we could change the collision detection from one point (pixel) to a pixel plus offset depending where you are facing.

    • @DisplacedGamers
      @DisplacedGamers  Рік тому +3

      I think scope creep is legitimate here. If you go to the trouble of implementing a width for the player, you are still faced with "predicting the future" for collision detection. That in mind - do you rewrite collision detection so it examines where you are instead of where you might be in the future? If that is the case, do you then add ejection logic similar to other games?

    • @VinsCool
      @VinsCool Рік тому +1

      The improvements would make sense to then take the troubles to also add ejection logic, yeah.
      Honestly I think the entire code would need to be rewritten just to make the game more playable, and I don't think it is really worth the troubles going for it because the game isn't even that good anyway lol