Zelda Hit Detection - Behind the Code

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 มิ.ย. 2024
  • Code walk through sword collision detection, sword/wand states, and the wand collision bug.
    If you would like to support this channel, here is a link to the Displaced Gamers Patreon page - / displacedgamers
    Twitter: / displacedgamers
    Facebook: / displacedgamers
    Instagram: / displacedgamers
    Music by Wolf and Raven:
    / @wolfandraven
    Featured Game Genie Codes:
    (Take note that I have not tested these with a real cartridge)
    Sword Damage Boost: NNOLTIAO
    White Sword Damage Boost: NNOLYIAX
    Magic Sword Damage Boost:NNOUAIAK
    Fast Sword: ZAOEUTPA
    Sword Centering Mod (Vertical Sword): YAKUTTTA
    Sword Centering Mod (Horizontal Sword): PAVLYTTE
    Wand Melee Fix CMP: ZUSLIIAL
    Wand Melee Fix BNE: ESSLTIEP
    0:00 Intro
    1:42 Item Usage Conflict
    3:27 Overview and Emulator Helpfulness
    6:00 Begin Code Trace
    9:40 Sword States and Comparing Values
    14:50 Resume Code Walk
    19:04 Execution Time?
    20:35 Enemy Size and Hitboxes?
    24:47 The Wand Melee Bug
    28:05 An Abandoned Sword Animation?
    29:03 Fix the Wand Melee Bug
    31:42 Removing Sword Wind-Up
    32:57 Outro
    #ZELDA #CODE #PROGRAMMING
  • เกม

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

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

    I felt so personally called out at "Ancient programming technique: copy, paste, tweak, repeat"

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

      I used this trick to create a 2 player co-op mode for my game. The attack button input scripts for each player are separated but their content is largely the same

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

      Å pp pp PP p

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

      Hey, it's ancient because it works.

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

      @@Outside998 tried and true

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

      Don’t reinvent the wheel.

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

    That was cool to show that Ganon didn't teleport.

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

      Doesn't he teleport right after getting hit, though? He warps to either south corner so you can't just run up to him and spam the sword, at least not if you don't know what's happening.

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

    I'm not even a programmer and this was totally fascinating to me.

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

      actual programming work isn't even that different from this, at least debugging and bug hunting. you don't need to deal with assembly much these days, but inspecting program state as it's running, writing debug logging or visualizations, and helper scripts is very common, it's a lot of fun sometimes.

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

    What an amount of work to produce this video. Congratulations on the final result and thank you for it. Respect.

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

      Thank you!

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

      I can't believe these old games were programmed in assembly. How did they do it? Did you really have to be some kind of insane whiz just to program nintendo games? Did they use some kind of reference book/chart or something?

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

      @@blaynestaleypro There actually would be a reference book, yeah. Effectively the user manual for the microprocessor they were using, it'd have the specs, pinout, registers, and a big ol' reference for the entire instruction set, in case anyone needed to go double-check the syntax or side-effects of a given instruction. (It wouldn't be huge, but it'd likely be between 100-300 pages). Programmers might also use it to check an instruction's performance (many simple instructions would take one sub-microsecond cycle, but more complex ones like multiply, divide, memory access, or shenanigans of convenience like comparisons or arithmetic with a value in memory could easily take several. Depending on the processor you were working with, sometimes there were instructions that'd eat a dozen or more clock cycles).

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

    The displaced sword hitbox is also a hint that there is a swinging animation supposed to be there.

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

    I'm only at 4:30 and as a fellow coder, I really appreciate all the effort that went into just these first 4 minutes!
    It's easy to tell that you're dedicated to doing a superb job - you leave no stone unturned. I really appreciate that. I look forward to seeing this channel grow. Great job, man.

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

      Thanks!

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

      For real, even just to get to the first few minutes must've required an insane amount of time working in/with various tools. Most of my reverse engineering is based around more traditional means and methods (ie: executables or shared libraries) and I've always wanted to dig more into old school code (especially regarding all the architectures and assembly language). Cheers for creating this, it's great stuff!

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

    Im trying to get into code and your behind the code series is really making this stuff look really easy. Not gonna lie, when I first looked at assembly code, I was bombarded by the countless lines. Keep up the great work.

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

      The biggest struggle for me personally was branching. 6502 Assembly (the NES programming language) doesn't use if/elseif/else like modern languages. I would often get it backwards, especially with AND statements.

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

    As the lead developer of Zelda Classic, I always enjoy seeing this type of analysis of the original game code, quirks, and bugs. Well done, and thank you.

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

      As creator of this universe, I always enjoy seeing my human creations thanking each other and telling the truth. Thank you!

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

      @@joefuentes2977 Look at his channel.

    • @VirtuaVirtue
      @VirtuaVirtue 10 หลายเดือนก่อน

      ​@@joefuentes2977thanks god

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

    Holy crap I love these Behind the Code videos so friggin much.

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

    This is an example of how great hit detection works. Would you consider explaining how a game with poor hit detection works and why it feels unsatisfactory?
    I ran across your channel a few days ago and thoroughly enjoy the deep dives into my childhood favorites.

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

    Ganon sliding remembers me of good old "invisibility is the poor's man teleportation skill" in tabletop RPG ^^

    • @williamdrum9899
      @williamdrum9899 3 ปีที่แล้ว

      Haven't gotten to that part yet but I can assume Ganon has a "blank" action frame

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

    Honestly I'm just seeing this video now and I really appreciate all the hard work you put into it to not only break down the code but give visual representation of what is what with LUA and Mesen. Again, it still is amazing that 35 years later the same principles apply today with 2D games ever since then. The idea that Nintendo timed individual PPU frames assembly-wise with the collision detection to such a degree is remarkable and inspiring with any modern projects I work on today.

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

    I like how each video focuses on something different. Not just a different game, but a different mechanic.

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

    Loved the video! It's nice to see stuff like this presented in a consumable format. I've done a lot of technical work on Zelda 1 and came to the same conclusion you did about the sword likely having a swing animation originally and using the magical sword for an angled frame. In addition to the swing being active for the rod, it's also active for both the sword and rod for item collision, allowing some pretty amazing overhead pickups.
    In the process of making tools for this game, I discovered various other weird things with collision. For example, all items perform collision 3 pixels higher than they should to compensate for room treasures being placed 3 pixels too low; item collision with weapons all use Link's hitbox size instead of the weapon's because Link is moved to the weapons' positions for the collision checks; beams and arrows change their hitbox shape when Link changes between horizontal and vertical direction because their size is determined the same way as the sword's and rod's; Link's collision is misaligned on the overworld because he is drawn 2 pixels lower to align better with the background graphics; and the second fire and bomb slot has bugs with burning trees and interacting with dodongos because these objects don't properly handle a second slot.
    Really enjoying your content so far and looking forward to what you do next. Keep up the good work!

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

    If we consider that maybe there was supposed to be a swinging animation to the sword, then the fact that the hitbox is slightly offset to the left and to the top respectively makes a lot more sense. Those boxes would have more overlap with the actual area of the sword swinging animation.

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

    Even just to get to the first few minutes of this video must've required an insane amount of time working in/with various tools. Most of my reverse engineering is based around more traditional means and methods (ie: executables or shared libraries) and I've always wanted to dig more into old school code (especially regarding all the architectures and assembly language). Cheers for creating this, it's great stuff!

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

    Dude, I just discovered your channel and this is the most detailed yet accessible set of retro game reverse engineering videos I've come across. You've almost singlehandedly made a lot of assembly coding concepts clearer to me. You're doing a lot right.

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

    Fun fact, link moves on a grid. He can freely move up/down or left/right, but when changing from left/right to up/down (or vice versa), link will turn and align himself with the grid. I believe this is also why the screen wrap and block clipping glitches occur (link aligning himself and collision checks not happening during alignment)

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

    I always knew for a long time that the wand's melee attack was bugged as it was striking things just above me (and I sure abused this fact while fighting Darknuts alright). It was very interesting to hear this detailed explanation as to why.

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

    Even among my favorite TH-camrs, there are few instances where I would watch an entire 30+ minute video without skipping around. This is one of them. Kudos!

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

    I love seeing these tours of how old games got things accomplished (or attempted to but didn't). Very cool!
    Also, @3:52 where you talk about how Mesen has Lua scripting built in and the scripts can interact with the emulation: yo dawg we heard u like programming so we put a programming in ur programming so u can program while u program
    Also also, @4:04, "using an ancient programming method called copy/paste/tweak/repeat": am dead

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

    One of my favorite channels

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

    UNFFFF another Behind the Code, gotta drop everything and immediately watch. I'm working on BASIC and then assembly on my C64, and I already know a tiny bit of both, so that makes videos like these all the more interesting. :D

  • @Acoha7
    @Acoha7 3 ปีที่แล้ว

    I’ve never studied assembly code however the way you explain it is extremely easy to follow. I have great respect for the work you put in your videos. Amazing work.

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

    This is a really neat video, thank you :)
    When you demonstrated the hitbox I was also immediately thinking of an overhead-swing like in Links Awakening for the gameboy. So this theory is sound to me

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

    Easily one of the best channels on YT

  • @nekononiaow
    @nekononiaow 3 ปีที่แล้ว

    I am amazed by 1) the amount of work you put into documenting the disassembled code in the debugger and figuring out the general logic, 2) the fantastic features of Mesen which allowed you to do so and 3) the amount of effort required to explain all of the above in video. I cannot imagine how much time this must have required for edition and cleanup.
    From a fellow (game) coder -> fantastic work! Thanks. 😉

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

    You're back!
    I love these because in game dev these days, it's different for sure, but the principles of manipulating sprites and inputs are very similar and manipulating how and when certain things happen.
    And you're like, the only one who analyzes the Assembly language so widely used back then.
    Keep it up! I love these so much!

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

    Love this channel, I've watched three videos so far and enjoyed every one of them. Thank you!

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

    When you showed the hitbox during wind up on the magic wand animation I immediately thought of the swings from Link's Awakening. Really amazing when you can only imagine what a prototype for Zelda 1 originally looked like or could have been. I wonder why they scraped the idea of a bigger and flashier sword swing in Z1? Amazing.

    • @williamdrum9899
      @williamdrum9899 3 ปีที่แล้ว

      Probably because it was harder to program. Programming a projectile attack is so much easier than a sword.

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

    Those assembly classes in college actual helped in understanding all this. This is pretty amazing.

  • @michaelemory3102
    @michaelemory3102 3 ปีที่แล้ว

    I LOVE your behind the code
    segments! Keep it going!

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

    Love the Behind the Code series, keep it up!

  • @TheBreadPirate
    @TheBreadPirate 4 หลายเดือนก่อน

    I am amazed you can tell what all the numbers mean. You're a wizard!

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

    MAN, I ABSOLUTELY LOVE THE SERIES!! Please, keep doing it! Liked and subscribed

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

    With the rise of RISC architectures in consumer systems (especially on Apple platforms), I started getting serious with learning assembly this year, specifically ARMv8. CISC architectures always seemed so, so complex and messy, but RISC (and ARM in particular) appeal. It's with this context (and ~20 years of programming in C, Rust, Python, etc.) that I started watching your Behind the Code videos. I appreciate that I can actually follow the code once I know what the instructions do. Bravo and please keep making videos! :)

  • @nreiss
    @nreiss 3 ปีที่แล้ว

    Thank you for this great video, your recent videos have been a pleasure to watch.
    Keep up the great work!

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

    Your predicition about the overhead slash seems right on the money. It all falls into place so perfectly. Would love to see a game genie code for that. Would definitely improve the combat of the OG Zelda.

    • @CarbonRollerCaco
      @CarbonRollerCaco 3 ปีที่แล้ว

      I'm thinking they (tried to) get rid of it because of the directional imbalance and the Darknut issue that came with it. That and they probably thought a stabbing motion worked better with the sword and wand shots. Heck, the wand might not have been intended to do melee damage and that could've just been a leftover from reusing the sword code for it. They didn't seem to care much that it happened that way, though; something like that'd just be another serendipitous Easter egg in Miyamoto's mind like tile edge wall jumping or the Minus World in SMB-a bug that was let pass as a free secret.

  • @skins4thewin
    @skins4thewin 3 ปีที่แล้ว

    Awesome job actually including codes in the video's. That is a really cool bonus & makes me want to try them out!

  • @Sevenigma777
    @Sevenigma777 3 ปีที่แล้ว

    Love these type of vids been waiting for a new one. Thanks for the upload and the hard work!

  • @ElementalTJ
    @ElementalTJ 3 ปีที่แล้ว

    Love the background music.
    Amazing video my dude

  • @chrismanning5232
    @chrismanning5232 3 ปีที่แล้ว

    What channel have I stumbled upon? A new favorite, clearly. Love the effort.

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

    as a coder, this is amazing. all for a sword animation, i love coding these games or recoding these.

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

    Amazing breakdown and analysis! Keep up the good work

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

    This is amazing stuff man -- looking forward to learning new things about these older NES games and how they function! :D
    I am really into data-driven code, and you can't get more data-driven than Assembly! -- Subscribed!
    Please make more of these kinds of collision-oriented data-design scenarios so I can reference them and share them with others!!

  • @atomicnoexcept
    @atomicnoexcept 3 ปีที่แล้ว

    Thank you so much for providing these in-depth videos!!

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

    I just discovered your channel and is AWESOME! Thank you so much for your effort making these videos!

  • @josephlucas502
    @josephlucas502 3 ปีที่แล้ว

    Love these videos! I always learn so much from them. Keep em coming.

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

    I love this type of content. I can't wait until we are at this point with games from 10 or 15 years after this one, getting into the source code and understanding and possibly fixing and upgrading it. It's just so much easier to learn on these NES games than PC games from 2006, so this channel is the perfect way to get into the subject.

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

    Thats a lot of information to take in. You made it easy to understand though! Great video mate! Thumbs up!

  • @BluesM18A1
    @BluesM18A1 3 ปีที่แล้ว

    One of these days I am going to take the deep-dive into learning 6502 assembly and videos like these are going to be the biggest help. I eagerly await more videos like these in the future.

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

    Good to see videos like this. NES code looks much harder to understand for a layman than more modern programs.

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

    mmhm. yeah. mmhm. I know some of these words.

  • @RamonAlonsoLopezMartinez
    @RamonAlonsoLopezMartinez 3 ปีที่แล้ว

    Thank you so much for all your videos.

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

    I think one of the most interesting things regarding combat in this game is blocking, so I'd love to see a breakdown of that. In particular, the interplay between a Darknut's shield and Link's bombs is fascinating

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

    Nice choice of very fitting (80s style) music.

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

    I love the topic I just went through a similar rabbithole of ASM recently and I just watched LUA scripting used in the exact same way in "A Cat Explains the Sonic 1 Spike Bug" which is a similar explainer video but for Sonic 1

  • @ZVINTAO
    @ZVINTAO 3 ปีที่แล้ว

    Keep'em coming buddy!!!!!

  • @lustechsource5197
    @lustechsource5197 3 ปีที่แล้ว

    Another great video letting me know how the games I grew up with worked. Thanks!

  • @aceattveg7757
    @aceattveg7757 3 ปีที่แล้ว

    I don’t know anything about coding but these videos are always interesting. Great idea for a series.

  • @_polpon
    @_polpon 3 ปีที่แล้ว

    Excellent video! Very informative and interesting!

  • @DevilsHandyman
    @DevilsHandyman 3 ปีที่แล้ว

    I have never played any of the Zelda games (I know!) but I did enjoy seeing the game code and the explanation on how it all works.

  • @etansivad
    @etansivad 3 ปีที่แล้ว

    What a fun idea for a video. Thanks for posting this.

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

    I've watched a bunch of these videos over the last week but the moment you called Zelda an "action adventure game" and not an action RPG is the moment I subbed.

  • @madmanga64
    @madmanga64 3 ปีที่แล้ว

    Your channel is powerful

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

    10:39 Excellent choice of background music there

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

    Geez that's a lot of work, reverse engineering assembly code sounds like hell to me

  • @Novastar.SaberCombat
    @Novastar.SaberCombat 3 ปีที่แล้ว

    Before you even GOT to the 'wacky wand HD', omg... I remember and knew what was coming, lol :D
    I LOVED 'hitting' enemies ABOVE me... by striking downward... AWAY from them (as a kid). :D What a trip.

  • @GameFeverOnline
    @GameFeverOnline 3 ปีที่แล้ว

    Very good video, Great Work

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

    Sick man. Very cool. I would love to see you make a Zelda hack game. I bet you would do an amazing job with it. Thanks for these videos.

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

    your theory about the sword swing being in the prototype - then removed, and the 3/4 swing sword used as an icon, as such being the origin of the wand bug. Damn that was clever.

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

    I'm surprised this channel doesn't have more subs. The TH-cam algorithm kinda sucks for anything meaningful

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

    Awesome video! The code introspection was very interesting. Can you do something on map storage in zelda, and how link collides with the map data (walls and such)?

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

      Yes, I'd like to watch that too.

  • @Twenty_Six_Hundred
    @Twenty_Six_Hundred 3 ปีที่แล้ว

    Never clicked so fast, love these videos

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

    explained everything very well i thought it was going to be a headache to follow along but it wasn't

  • @metalmachine76
    @metalmachine76 3 ปีที่แล้ว

    Very cool -- gives me some ideas for my LoZ projects!

  • @ericneuman9130
    @ericneuman9130 3 ปีที่แล้ว

    Loved this - please do more for Zelda 1!

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

    Yknow for the Wand-Melee-Bug, I had an idea. I think the reason for why the hitbox comes above his head is not that he was going to raise it to the air before pointing it toward his target, but rather he was raising it up to bring it down onto the target's head, like one would with a mace.

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

    You just got a new subscriber.

  • @sternik8936
    @sternik8936 3 ปีที่แล้ว

    Great video. This was very informative. Hope your work will be used in Zelda remaster edition :)

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

    Dude this was f***ing great.

  • @TheN64man
    @TheN64man 3 ปีที่แล้ว

    It's nice to see how debuggers change for different systems and emulators. The NES debugger has lots of nice features, yet it still shares many similarities to the N64 debugger I use. I'd love to see a video about it if you made one!

  • @Video-Games-Are-Fun
    @Video-Games-Are-Fun 3 ปีที่แล้ว +1

    zelda 1 had perfect hit detection. i never thought i was hitting someone and it didn't register. it was perfect.

    • @deoxal7947
      @deoxal7947 3 ปีที่แล้ว

      Not in my experience. Link's stab attack often seems out of reach for me. If only he slashed like in Awakening or A Link to the Past, then I wouldn't need perfect aim all the time.

  • @grymmjack
    @grymmjack 3 ปีที่แล้ว

    I love your videos

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

    Neat video! Thanks for uploading!
    Seems like you put in plenty of work into detailing, so I'm a bit sad I don't understand a lot of coding & math terminology. Still pretty informative!

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

    I'm watching this after taking a computer architecture class and now the 6502 Assembly language actually makes sense now.

  •  3 ปีที่แล้ว +1

    I really wish you had more subscribers. Your videos are awesome, very well made and, as a fellow coder, so we'll explained!
    I hope you grow big, even tho usually channels that are informative/educative tend to keep to a niche audience =/

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

      Thank you. It is definitely a lot more difficult to gain subscribers when you push deeper into technical elements.

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

    I loved seeing how this all worked!
    Hey, could you review the sword attack from Link to the Past? I've honestly been curious about that for a long time. There is a whole sweeping arc; does the game just snapshot portions of a sweep? Does it check an arc or a box? I really want to know!

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

    its so awesome! i love it the code

  • @sophiakostavas8360
    @sophiakostavas8360 3 ปีที่แล้ว

    Great Video

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

    Did you see how they handled aligning sprites to ensure better collision detection? From what I've heard, Zelda would nudge the sprite in line with other sprites when you would change direction. Since Link can move any number of pixels, the code would put you on certain rows or columns when you turned, so you were not misaligned from the enemies.

  • @TRex-fu7bt
    @TRex-fu7bt 3 ปีที่แล้ว +5

    Uncanny timing (Bismuth released an explainer about the bugs/exploits in a Zelda speed run)

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

      Oh nice! I'll have to check it out

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

      @@DisplacedGamers bismuth took his sweet time too god he had too much time on His hands

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

    The sword swing animation theory is further supported by how high the hitbox when facing east/west. My first thought for the upward bias was that it originally had a different animation.

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

    "What is going on in a... _C_ ...of assembly code"

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

      Random trivia, Sonic Spinball was coded in C, instead of assembly, to get it out on time. As a result, the game ran at 30hz instead of the normal 60hz. It is possible to write c code on the genesis and get 60fps, but they only had a very small window to make the game (Like six to nine months I wanna say) and so they chose to write the engine in C and target 30hz, letting the overhead eaten by not writing in bare metal.

    • @TheJadeFist
      @TheJadeFist 3 ปีที่แล้ว

      @@etansivad That's kind of a shame, I'm sure more people would have appreciated the game if it ran at 60. I always had a bit of a soft spot for it, but I'd be lying if I said it felt like "blast processing"

    • @etansivad
      @etansivad 3 ปีที่แล้ว

      @@TheJadeFist I don't think it's that big of a deal it ran at 30; I thought the game was a really fun hybrid between sonic and pinball. Reminded me a lot of alien crush and demon crush on TG16.

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

    fascinating and informative. hell if i understood anything outside hitbox sizes and placement though

  • @ClockworkBard
    @ClockworkBard 3 ปีที่แล้ว

    I love these videos and this is all really great stuff, but I also have to say that I was at around the 10:00 mark when I was totally derailed and went: "Do I have Wolf and Raven going in another tab? No, it's this one. Is he playing Wolf and Raven? He is! Have I been listening to it for the last 10 minutes? I have! Awesome!!!" Anyways, now back to our regularly scheduled program. Content is really compelling as always.

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

    I had no idea Zelda collision detection would so interesting I'd watch half an hour video about it

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

    Good work :)

  • @xeostube
    @xeostube 3 ปีที่แล้ว

    very nice work. just the right level of detail, though at times I wished for pseudocode instead or in addition to raw assembly. Next, perhaps dive into how the individual screens are generated from the somewhat sparse map?

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

    I do my disassembly and analysis in OpenOffice Calc (free open source Excel). I wrote an assembler/disassembler in a script for it, but I always start with an execution log, then fill in the blanks with the disassembler. It's already a spreadsheet, so I can add not only comments but also structured data and calculations, as well as name tables for variables and types. This Mesen thing sounds like it has some awesome runtime integration, though.