Zelda Hit Detection - Behind the Code

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

КОМЕНТАРІ • 302

  • @puzzud
    @puzzud 3 роки тому +140

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

    • @CarbonRollerCaco
      @CarbonRollerCaco 3 роки тому +6

      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.

  • @SweetBean92
    @SweetBean92 3 роки тому +200

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

    • @williamdrum9899
      @williamdrum9899 3 роки тому +7

      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 3 роки тому

      Å pp pp PP p

    • @Outside998
      @Outside998 Рік тому +5

      Hey, it's ancient because it works.

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

      @@Outside998 tried and true

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

      Don’t reinvent the wheel.

  • @gfdgdfgdfgdfggfdgdfgdfgdfg9709
    @gfdgdfgdfgdfggfdgdfgdfgdfg9709 3 роки тому +38

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

  • @rt00155e
    @rt00155e 3 роки тому +244

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

    • @DisplacedGamers
      @DisplacedGamers  3 роки тому +24

      Thank you!

    • @blaynestaleypro
      @blaynestaleypro 3 роки тому +6

      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 2 роки тому +2

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

  • @rmyers99
    @rmyers99 3 роки тому +90

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

    • @ridespirals
      @ridespirals 2 роки тому +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.

    • @1mariomaniac
      @1mariomaniac 16 днів тому

      ​@@ridespirals Except the code itself is much easier to read thanks to high-level programming languages like Java and Python.

  • @malik641
    @malik641 3 роки тому +93

    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 3 роки тому +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 роки тому +40

    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 роки тому +7

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

    • @DoubleBob
      @DoubleBob 2 роки тому +1

      @@joefuentes2977 Look at his channel.

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

      ​@@joefuentes2977thanks god

  • @FinanceNinja
    @FinanceNinja 3 роки тому +2

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

  • @Darxide23
    @Darxide23 3 роки тому +34

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

  • @tsht
    @tsht 3 роки тому +5

    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

  • @DaVince21
    @DaVince21 3 роки тому +8

    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.

  • @ryjelsum
    @ryjelsum 3 роки тому +5

    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.

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

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

  • @livefreeprintguns
    @livefreeprintguns 3 роки тому +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!

  • @DanielWesleyKCK
    @DanielWesleyKCK 3 роки тому +3

    Even among my favorite UA-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

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

  • @press_pause2236
    @press_pause2236 3 роки тому +7

    Easily one of the best channels on YT

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

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

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

  • @aurathedraak7909
    @aurathedraak7909 3 роки тому +2

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

  • @bomberfox5232
    @bomberfox5232 2 роки тому

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

  • @Nakagolas
    @Nakagolas 2 роки тому

    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)

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

  • @El_Chompo
    @El_Chompo 2 роки тому

    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.

  • @ValkyrieTiara
    @ValkyrieTiara 3 роки тому

    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.

  • @TheBreadPirate
    @TheBreadPirate 8 місяців тому

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

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

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

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

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

  • @silvermasked0
    @silvermasked0 3 роки тому +3

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

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

  • @ladiesman2048
    @ladiesman2048 3 роки тому +1

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

  • @nicwilson89
    @nicwilson89 3 роки тому

    10:39 Excellent choice of background music there

  • @dmas7749
    @dmas7749 3 роки тому +1

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

  • @20secondssongs37
    @20secondssongs37 3 роки тому +2

    Heh that's some useful techniques. I might try to use some of it to figure out the damage formula for Final Fantasy 2's bugged Ultima spell.

    • @LonelySpaceDetective
      @LonelySpaceDetective 3 роки тому

      I don't recall the specifics of the bug, but there's a funny story to that: They actually noticed how the spell was bugged in testing, and told the programmer about it, who *then* told them that he wasn't going to fix it because an ancient spell made well before any of the innovations of the modern era being so weak made sense to him. So they tried to fix it themselves, only to find that the programmer *ciphered the source code*, so they couldn't get into it.
      I don't recall the specific names; not big enough of an FF fan for that, but I imagine you can find the story around the net.

    • @20secondssongs37
      @20secondssongs37 3 роки тому

      @@LonelySpaceDetective I know of that story! It's actually one of the reasons i want to figure the formula. I want to understand how exactly he 'cyphered' the code. Or if there's actually any indication he did that since that story seems to be more like a rumor tbh.

  • @jasonanderson6271
    @jasonanderson6271 3 роки тому +1

    Love the Behind the Code series, keep it up!

  • @chrismanning5232
    @chrismanning5232 3 роки тому

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

  • @onceuponapriori
    @onceuponapriori 3 роки тому +1

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

  • @Mick2K
    @Mick2K 3 роки тому +13

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

  • @ElementalTJ
    @ElementalTJ 3 роки тому

    Love the background music.
    Amazing video my dude

  • @godalmighty1188
    @godalmighty1188 3 роки тому

    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.

  • @kakashi0909
    @kakashi0909 3 роки тому +2

    Ive paused my viewing just to aay this. The offset in the magic wand when facing right has a similar effect seen on one of the ghost ai in pacman. When pacman faces down, the pink ghost follows him on a slight left instead of directly down because of a negative byte overflow

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

  • @pentalarclikesit822
    @pentalarclikesit822 2 роки тому

    So finally know the reason why the magic sword looks so weird. . . I am going to miss picturing link with a flamberge, though. . .

  • @aceattveg7757
    @aceattveg7757 3 роки тому

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

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

  • @eddieloius4592
    @eddieloius4592 3 роки тому

    With his knowledge I could make "Hit Anywhere" codes for EVERY GAME EVER!!!!!

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

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

  • @DigiEggz
    @DigiEggz 3 роки тому

    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.

  • @livipup
    @livipup 3 роки тому

    Seems like pretty standard hit detection, but it's cool to see it in assembly

  • @lpfan4491
    @lpfan4491 3 роки тому

    "This wand is stupid, so let's fix it."
    Btw, the routine-conflict spooked me.

  • @GiuseppeGaetanoSabatelli
    @GiuseppeGaetanoSabatelli 2 роки тому

    It would be fascinating to try and "restore" or implement the possibly intended swing animation. It would certainly make the windup feel less like input lag and more like a proper swing like Link's Awakening.

  • @GimblyGFR
    @GimblyGFR 3 роки тому +2

    That was a very, very instructive video. I do program in some middle/high level languages, but never dared to swim in the deep waters of Assembler. With your Behind the Code videos I started warming up to the idea of learning the language. Your content is really didactic. Are you a college graduate in Electronics or some Computer Science? 'Cause you sure seem to be pretty knowledgeable in both.

    • @DisplacedGamers
      @DisplacedGamers  3 роки тому

      Thanks!
      I have a degree in computer science and have programmed professionally. I suppose I have had a hobby in engineering for a rather long time as well. I love all this stuff!
      Assembly is great. Give it a go! Choose your architecture and have fun

    • @GimblyGFR
      @GimblyGFR 3 роки тому +3

      @@DisplacedGamers As a Sega Genesis fan, I'm very interested in the Motorola 68000. People have done wonders with the 68000 in the Genesis, the Amiga and the ST. Actually, there are unbelievable games and demos in all computers and consoles. Some talented programmers have learned how to drain every little drop of power from almost every architecture.

  • @williamdrum9899
    @williamdrum9899 3 роки тому

    Thanks for explaining the Mesen debugger. It's nice to know how to label each memory address. Is there a way to do the following:
    *Label and comment on watches
    *Instantly deactivate or delete all breakpoints
    *Jump to a hex address

  • @nickwallette6201
    @nickwallette6201 3 роки тому

    It might just be that the debugger in this emulator is better than the one the developer used to write the emulator. ;-) That's some really friendly stuff there. Wish I had that for AVR...
    Also, I have always appreciated the level of effort some game devs go to, to handle effects like this. Keeping tracks of multiple events, and the animations involved in those events, and the guards against having incompatible things happening at the same time -- it's a ton of detail that makes for some very tedious architecting, coding, testing, and debugging. My hat's off to those guys doing this back in the late 80s without the aid of the fantastic tools at our disposal now.

  • @bobtheowl2
    @bobtheowl2 2 роки тому

    Amazing breakdown and analysis! Keep up the good work

  • @Lemon_Inspector
    @Lemon_Inspector 3 роки тому

    Saying that conditional branches in assembly work different than a "traditional" if statement sounds kind of funny. It's like saying that riding a horse is different than driving a traditional car.

  • @gustavosalmeron2013
    @gustavosalmeron2013 3 роки тому

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

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

    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.

  • @thistime1483
    @thistime1483 3 роки тому

    I had no idea just how incredibly complex these games were back in the day.

  • @HOWLWOLF
    @HOWLWOLF 3 роки тому +1

    DG, you're the man. I absolutely love your videos.
    Do you ever plan on covering some of the 16 bit consoles? I would love your take on comparing console hardware of the same gen, I know its a topic thats covered a lot. But people don't realize that better hardware doesn't mean better games. The Sega Genesis despite being older and weaker held its own against other 16 bit consoles.

    • @DisplacedGamers
      @DisplacedGamers  3 роки тому +2

      I would like to cover them. Mesen is a great emulator, and there is another version of it does SNES and GB. I feel like I am on a roll with NES right now, but I haven't ruled out other systems.
      The Sega Genesis is one that I wanted to get into even more, but I haven't found an emulator for the system that has a good layout/debugging that is convenient and fast to use. I did some work with the Genesis in the first teaser video for what turned into Behind the Code. It was manageable with the emulators I used at the time, but Mesen honestly raised the bar SO much.
      I also like to have some goals in mind for whatever game I select - like "Collision Detection" for LoZ. Did you have some specific actions/modifications for any particular Genesis games in mind?

    • @ElvisAaronBU
      @ElvisAaronBU 3 роки тому

      I'd be interested in hearing about the technical magic behind Sega Channel.

  • @NIMPAK1
    @NIMPAK1 3 роки тому

    I would love to see a continuation of this with A Link to the Past and Link's Awakening.
    ALttP's hit detection has always been a mystery to me, especially with how it calculates different levels of "height" despite being a 2D game.
    LA would also be interesting since that has a jumping mechanic and it seems that your hurtbox and sword's hitbox dynamically updates during your jump animation while your wall collision box stays stuck to your ground position (as indicated by your shadow). I'm also curious on whether or not LA uses slightly modified LoZ code for some of its functions, since most enemy collision is also a 16x16 box, and the unused sword swing collision looks more similar to the one used in LA.

  • @drloko4013
    @drloko4013 3 роки тому +1

    Just a guess, but it seems like the center point for the weapon, in both vertical and horizontal orientations, is chosen to be in a location that would simulate link swinging a sword in a sweeping motion, rather than stabbing with it. I think this could explain why the weapon center point isn't in the geometric center of the sword. So maybe six pixels versus seven wasn't an oversight, but a deliberate choice.

  • @Sevenigma777
    @Sevenigma777 3 роки тому

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

  • @arlwiss5110
    @arlwiss5110 2 роки тому

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

  • @lustechsource5197
    @lustechsource5197 3 роки тому

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

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

  • @madmanga64
    @madmanga64 3 роки тому

    Your channel is powerful

  • @RRM_Personal
    @RRM_Personal 3 роки тому

    I'm so lost, I just like the pretty pictures

  • @thelinktothepastof7986
    @thelinktothepastof7986 3 роки тому

    I have played Zelda 1 in various forms easily over 15 times. I have done multiple swordless first quest runs, which involve using the Rod a lot.
    I genuinely, until now, have never known about that extra hitbox on the Rod. I've noticed the jank with the sword a bit, but never anything with the Rod. Just...wow. TIL.

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

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

    Loved this! Thanks for the excellent content

  • @HaveYouTriedGuillotines
    @HaveYouTriedGuillotines 3 роки тому

    10:20
    Just for the record, fighting game players have long had names for these states: Startup frames, active frames, and recovery frames.

  • @skins4thewin
    @skins4thewin 3 роки тому

    I always wondered why it seemed oddly difficult to hit the spots where I knew Ganon was. Now I know, since the collision doesn't happen within the entirety of his sprite.

  • @tutuanimacoes6220
    @tutuanimacoes6220 2 роки тому

    18:48 That background music gives me flashbacks

  • @xeridea
    @xeridea 2 роки тому

    Perhaps the sideways sword hitbox is a remnant from possibly having the overhead swing.

  • @EvanOfTheDarkness
    @EvanOfTheDarkness 3 роки тому +3

    For a better visualization I'd suggest using a *square* 16x16 hitbox for the enemies, instead of halving the values. That's a.) what was probably originally intended, b.) includes the entire enemy sprite, c.) does not change the enemy's hitbox depending on Link's direction. That'd make the swords hitbox 8x16 not 12x16, which is half a sprite.

  • @Heymrk
    @Heymrk 3 роки тому +2

    You: *explaining Zelda hit detection*
    Me: "Oh. Ok. If you say so."

  • @ZipplyZane
    @ZipplyZane 3 роки тому

    I don't know if it's possible, but what I've always wanted is the slash functionality from LttP and LA. It looks like having the sword's hitbox also go up to the top like the magic wand would get one step closer. But it really needs to start from 90 degrees off from where link is and move, or just be big enough.
    I've also always thought the stab hitbox was too short, and, yes, off center. Making it on center is great, but I'd also like it a bit longer. Unlike the above paragraph, that seems doable.
    The holy grail thought would be something I doubt could be done. Give me the ability to use the shield with a button. It just seems more intuitive to me.
    I always found combat in LoZ to be so much harder to avoid taking hits than any other game. Anything that would help with that would be welcome to me.
    Ooh-one more: maybe add the sword beam when you have one half heart of damage. Better yet, add it when you're down to half a heart total, as a desperation move.

  • @testaccount4830
    @testaccount4830 3 роки тому

    "copy, paste, tweak, repeat" otherwise known as my essays.

  • @Twenty_Six_Hundred
    @Twenty_Six_Hundred 3 роки тому

    Never clicked so fast, love these videos

  • @ZVINTAO
    @ZVINTAO 3 роки тому

    Keep'em coming buddy!!!!!

  • @ericneuman9130
    @ericneuman9130 3 роки тому

    Loved this - please do more for Zelda 1!

  • @etansivad
    @etansivad 3 роки тому

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

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

  • @somefreshbread
    @somefreshbread 3 роки тому

    Dude this was f***ing great.

  • @metalmachine76
    @metalmachine76 3 роки тому

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

  • @retrogamestudios7649
    @retrogamestudios7649 2 роки тому +1

    Question... how does the wand know to light up a room if u have the magic book in inventory which allows flames to come out of the wand.

  • @aquamidideluxe5079
    @aquamidideluxe5079 3 роки тому +1

    I didn't even know the wand could be used for melee attacks...

  • @rianthreeden
    @rianthreeden 2 роки тому

    Could y'all do a video kind of like this for the screen shake effects in Earthbound when taking dammage? Or the calculations on how many frames are skipped with HP is rolling down at a faster rate?

  • @arthurhenriqued.a.ribeiro2078
    @arthurhenriqued.a.ribeiro2078 3 роки тому

    I like the idea that BEQ and BNQ can also be called BZS and BZC (if Zero is Set and if Zero is Clear, respectively); how useful would those nomenclatures be though?

  • @MaxOakland
    @MaxOakland 3 роки тому +1

    A question has been burning in my mind: how did Gyromite scroll left and right without special mapper chips?

    • @fiskbit1308
      @fiskbit1308 3 роки тому +1

      The NES has enough VRAM to represent two screens, not just one. Simple wiring in the cartridge can control whether those two screens are arranged horizontally or vertically. If you've ever looked at an NROM (mapperless) PCB, you may have seen two pads labeled H and V, which are what control the arrangement by connecting the appropriate PPU address lines to lines controlling the console's internal VRAM (called CIRAM). Some mappers are able to control the mirroring dynamically, so games like Zelda and Metroid can change them on the fly depending on the direction they need to scroll. Mappers can also include additional VRAM in a 2x2 screen arrangement for cleaner scrolling in any direction.