Reverse Engineering Game Code from the Neutral Zone

Ойындар

Ever hear that the neutral zone in Yars' Revenge uses the game's code for its graphics? How does it work, and is it possible to reverse engineer that code just from playing the game? It's all explained right here.
LINKS
Support the channel on Patreon: / rgmechex
Join the RGMechEx Discord Server: discord.rgmechex.com
Follow RGMechEx on Cohost: cohost.org/RGMechEx
INLINE LINKS
Racing the Beam: • Racing the Beam Explai...
SOURCES
Digital Press Interviews: www.digitpress.com/library/in...

Пікірлер: 650

  • @HowardScottWarshaw
    @HowardScottWarshaw5 ай бұрын

    I'm impressed. This is a very thoughtful and intricate analysis. I also love the irony that the code responsible for displaying the neutral zone is also the graphics for the neutral zone. I must say, though I always thought I had made it extremely tough to ascertain the code from the display, I'm both glad and relieved to see it passed a very stringent test here. Thank you so much for this! Yars truly, :) HSW

  • @RGMechEx

    @RGMechEx

    5 ай бұрын

    I'm slightly disappointed that I couldn't crack it any further, but it was still fun to analyze and see how far I could possibly take it. Thanks for the comment, and for the game I could make a video about!

  • @shona-sof

    @shona-sof

    5 ай бұрын

    Halfway through this video I thought that someone needed to make sure Howard saw it. Glad to see this comment!

  • @urdnal

    @urdnal

    5 ай бұрын

    Off topic but playing Yars' Revenge in the dark with it lighting up the whole room, the neutral zone mesmerizing me, is a very distinct and loved early gaming memory for me. Want you to know I appreciate it. (Also, ET wasn't that bad and it blew my mind to see a Yar in a well the couple of times it happened.)

  • @ToyKeeper

    @ToyKeeper

    5 ай бұрын

    That's amazing.❤ I used the same trick in my torch firmware "Anduril", reading from ROM to get values for a pseudo-random number generator. So when the torch is in candle mode or lightning mode, it's technically blinking out the program's machine code. But I continuously added the least-signficant bits of its voltage and temperature ADC readings too, to make it more of a true random.

  • @JustWasted3HoursHere

    @JustWasted3HoursHere

    5 ай бұрын

    @@shona-sofI thought the same thing, which is why I sent Howard an email to let him know about it! There's a video on KZread somewhere where Howard talks about the whole process of developing Yars Revenge* but I'll be darned if I can find it now. I should have bookmarked it! - Russell Jones * Especially the revelation he had on how to control the main ship: He was originally thinking of an Asteroid-esque control scheme where right and left rotate the ship, up is thrust and down was a warp or something similar. He finally realized that up/down/left/right are the perfect controls by themselves, with the fire button launching the shot.

  • @AlexxForest
    @AlexxForest5 ай бұрын

    Ironically for Atari, just dumping the rom would be easier than reverse-engineering the code using an image.

  • @gordontaylor2815

    @gordontaylor2815

    5 ай бұрын

    Yeah, but the Atari legal team wouldn't have known that back in the day. They got paranoid as soon as they heard the phrase "game code being drawn to the TV screen"...

  • @SECONDQUEST

    @SECONDQUEST

    5 ай бұрын

    ​@@gordontaylor2815that's specialized hardware, and I highly doubt they were actually worried, just wanted to protect their IP.

  • @CptJistuce

    @CptJistuce

    5 ай бұрын

    ​​@@SECONDQUESTAn EPROM programmer was not at all specialized hardware for a programmer of the day. Ironically, displaying the code onscreen would have afforded it more copyright protection than not in the early days of 1982.

  • @09jjohns

    @09jjohns

    5 ай бұрын

    The dev stated that if someone did reverse engineer the code from the Neutral Zone, they deserved it, which could be argued in court as permission to reverse engineer it from the image, AND as a license to copy and use that code. Dumping the rom would be clear theft.

  • @CptJistuce

    @CptJistuce

    5 ай бұрын

    @@09jjohns It was Time-Warner's code, not his. However, depending on when in 1982 the game came out, there's a few months where it WOULDN'T be clear theft. 1982 was a big year for copyright protection of computer programs distributed in ROMs, with multiple cases establishing that yes, data in ROM ICs was covered. Before that time, the argument was that only human-readable works were copyrightable, and hence a listing of your code was copyrightable but not the contents of a ROM, disk, or magnetic tape. So while the writing was on the wall there was still a brief window of time you could, legally, copy that floppy.

  • @LendriMujina
    @LendriMujina5 ай бұрын

    If you squint, the Neutral Zone being the game's entire world blown open for all to see lines up with the in-universe lore of it being the remains of one of the Yars' home planets. In a meta sort of way.

  • @CarbonRollerCaco

    @CarbonRollerCaco

    4 ай бұрын

    And it fits the game being a metaphor of Ray Kassar, head of Atari in those days, getting revenge on Activision (the OG one, not the one that Bobby Kotick used to ru(i)n) for "breaking" his empire with unlicensed games that cut into recurring profit for Atari.

  • @CrisperPoet
    @CrisperPoet5 ай бұрын

    25:45 "It's about to get pretty technical, and if you don't have a good grasp on how assembly and machine code works, it might be a little difficult to follow." Man, you lost me like three years ago, at this point I'm just here for the flashing lights while my brain tickles my ear as it drips on the floor.

  • @christophercampbell6884

    @christophercampbell6884

    Ай бұрын

    Well said. I just come to this channel to feel smart and nod my head to the information given while having no clue what the hell is going on.

  • @WhoLover

    @WhoLover

    12 күн бұрын

    i read this as he said it. this happens a lot to me

  • @PearangeProductions
    @PearangeProductions5 ай бұрын

    I love how all the text in this video looks like it was actually drawn on the Atari 2600. Love little details like that.

  • @mattiviljanen8109

    @mattiviljanen8109

    5 ай бұрын

    2160p60 bandwidth well spent :) (Okay, the intro and outro graphics benefit from it)

  • @AutodidacticPhd

    @AutodidacticPhd

    5 ай бұрын

    Yeah, I still get a kick out of this one little detail in the pacman kill screen ep, when he's explaining what happens when you add 1 to 255, and the carry bit on the end just falls off the equation and bounces on the rest of it on the way down.

  • @andre_601

    @andre_601

    5 ай бұрын

    Does that also include possible colours the Atari 2600 would be able to draw? That would be peek design detail for me.

  • @CptJistuce

    @CptJistuce

    5 ай бұрын

    ​@@andre_601It looks right to me. The VCS actually has a fairly large color palette to choose from, so it isn't hard. 8 luminance values, 16 chroma values. That results in 128 color options(8 of which are just black and white shades).

  • @Arcsin27

    @Arcsin27

    4 ай бұрын

    Oh yeah this dudes channel has such intricate and awesome graphical details!!

  • @timmowarner
    @timmowarner5 ай бұрын

    I always thought the odd look of the canon when the Neutral Zone wasn't in the level was a stylistic choice. Amazing to discover it was the only way to display it!

  • @idontwantahandlethough

    @idontwantahandlethough

    5 ай бұрын

    right?! Love finding out stuff like that :)

  • @youtubeforcinghandlessucks

    @youtubeforcinghandlessucks

    25 күн бұрын

    not the only way, the laziest to program way is probably more like it. in the end still a stylistic choice, but based not just on the style of the visuals, but combined also with the style of the code and the effort required for it.

  • @Damien.D
    @Damien.D5 ай бұрын

    I've happily spent 40 minutes of my life appreciating every explanations that a very talented person makes by trying to decipher what is, in the end, nothing more than a very fun and elegant way to make a random number generator. Fun fact, the "last level" of Pacman is also made of the game code, albeit not voluntarily :P

  • @forgiveman

    @forgiveman

    5 ай бұрын

    And there is a video on this same channel explaining the how/why this happens.

  • @CallousCoder

    @CallousCoder

    5 ай бұрын

    I did a video where I hacked the Pacman game to get to the kill screen and indeed it's about 512 bytes (probably less but half a screen) of the code. I have never ever gotten to that screen myself hence I had to hack it :D

  • @noway2831

    @noway2831

    4 ай бұрын

    BRO THAT WAS 40 MINUTES???

  • @mrmimeisfunny
    @mrmimeisfunny5 ай бұрын

    A good way to get the clean data from the neutral zone using late 70s early 80s tech would be to flip the BW switch on the Atari and feed the video output into an oscilloscope. From there you know the neutral zone will be rendered every line in the same place. Edit: Turns out the BW switch doesn't work in Yar's Revenge. Still considering each pixel is made of two dots it would still create a meaningful signal even with color.

  • @_MasterLink_

    @_MasterLink_

    5 ай бұрын

    Wait, on my 2600 flipping that switch does nothing on this game and it remains in color. I know the switch works as the Telegames cartridge does go black and white, but this one does not. I know the switch is software, but perhaps it works differently on some systems? Mines a 4-switcher.

  • @sugar_700

    @sugar_700

    5 ай бұрын

    This is because Yar's Revenge doesn't support BW switch.

  • @tylisirn

    @tylisirn

    5 ай бұрын

    You do realize that it would be an analogue oscilloscope, not a storage oscilloscope (those were expensive as heck). It would be practically impossible to read. If you had access to a storage oscilloscope, you almost certainly had access to a PROM reader and could trivially just dump the cartridge. (In fact, dumping the cartridge wasn't hard at all for any electronics hobbyist. If anyone really wanted the source, that's what they'd do.)

  • @nsf001-3

    @nsf001-3

    5 ай бұрын

    Just plug it into a BW television. Bam

  • @_MasterLink_

    @_MasterLink_

    5 ай бұрын

    @@nsf001-3 And yet that wouldn't work anyway, as mentioned in the video. Even with a perfect capture, just too much is missing to properly reconstruct.

  • @jaywolfenstien
    @jaywolfenstien5 ай бұрын

    Ever since I learned the neutral zone is the game's code, I've always wanted to see a programmer take a crack at deciphering it. Dream come true. Now if only we can get HSW to react to this, my life would be complete.

  • @spunkyre3917

    @spunkyre3917

    5 ай бұрын

    They did, see pinned comment!

  • @JeraWolfe

    @JeraWolfe

    18 сағат бұрын

    Your life is complete.

  • @narayanbandodker5482
    @narayanbandodker54825 ай бұрын

    The "neutral zone" is sometimes not visible in 30fps on KZread because of the flicker

  • @Phroggster

    @Phroggster

    5 ай бұрын

    I kept thinking "what's this dude even talking about" at the beginning before I remembered that my phone defaults to data saver resolutions. 1440p/60 cleared my initial confusion right up.

  • @K-Anator

    @K-Anator

    5 ай бұрын

    Thankfully that should only be an issue for people watching in 480p and under, unless KZread has started giving different devices different framerate options that aren't available on desktop.

  • @Haganeren

    @Haganeren

    5 ай бұрын

    I was JUST seeing that and wanted to make a comment about it !

  • @GeneralBolas

    @GeneralBolas

    5 ай бұрын

    Oh *that's* why I couldn't see it. As an old Atari player from back in the day, I knew it was supposed to be there, but it wasn't visible.

  • @potato9832

    @potato9832

    5 ай бұрын

    Unfortunately, this is a common issue for many Atari 2600 games that use flicker (i.e. sprite/playfield multiplexing and scanline flickering) to exceed the native graphics capabilities of the 2600. Some people might be surprised to discover the Atari 2600's native frame rate was 60 Hz (for NTSC, 50 Hz for PAL), which can be unexpected given it's a console from the 1970s. The 60 Hz frame rate is also why Atari sprite movement can look very fluid when movement uses 2 byte fixed-point arithmetic without flicker. We've come to expect fluid movement on more modern powerful consoles. (See Atari 2600 demoscene and modern homebrews.)

  • @Manabender
    @Manabender5 ай бұрын

    33:27 There is a flaw in this logic; the just-greyed box could be a JMP instruction, in which case what comes next need not be a valid instruction. Any bytes immediately after an unconditional jump could be data from some data table, so anything is potentially valid.

  • @randomcatdude

    @randomcatdude

    5 ай бұрын

    was just thinking that too this is all assuming an uninterrupted branchless instruction flow

  • @RGMechEx

    @RGMechEx

    5 ай бұрын

    This is true. I decided to leave it out of the video since it just made things more complicated. But in practice this would be a valid concern.

  • @DiThi
    @DiThi5 ай бұрын

    I heavily suspect that the fact that only half of the rows were drawn was pure coincidence, and the guy didn't realize his reversal method mapped it to the same bytes.

  • @Dark.Shingo
    @Dark.Shingo5 ай бұрын

    My biggest takeaway from this video is that Howard Scott Warshaw was a damn genius. Which I already knew but it's always nice to see another display of his prowess. Also, making this video takes another genius, always a pleasure to watch.

  • @HokoraYinphine
    @HokoraYinphine5 ай бұрын

    i was watching on data at 30 fps and the entire neutral zone at around 2:01 is completely invisible! I didnt even notice you were talking about that til you mentioned some of it was offscreen while zooming into seemingly nothing! the beginning of the video requires 60 fps to see the whole thing haha

  • @Craig1967
    @Craig19674 ай бұрын

    Up until now, I thought that I was King of "Going Down The Rabbit Hole." I now humbly transfer that crown to you. This project you undertook required patience of unimagable amount. This is something that reminds me of my High School days when I had Atari 400 and 800 computers. I figured out how to copy cartridges to disk as binary files. Some games would not run, and I had to reverse engineer the code to figure out why. Usually there was some code that would write back to ROM memory space that would not do any harm if it was a legit cartridge installed. However if the game was running in RAM, it would kill it by overwriting itself. I was able to replace all that "anti-piracy" code with NOP instructions. Wow, good memories come back thanks to your video.

  • @SuperSmashDolls
    @SuperSmashDolls5 ай бұрын

    Absolutely excellent. I'm still wondering why Atari management was worried about game code being copied this way, though. Just dumping the ROM on the cartridge would be way easier, and people did that.

  • @thewhitefalcon8539

    @thewhitefalcon8539

    5 ай бұрын

    Lawyers, man...

  • @CptJistuce

    @CptJistuce

    5 ай бұрын

    At this time, Atari management was Time-Warner. Ironically, displaying the code onscreen at the beginning of 1982 would have actually afforded them STRONGER copyright protection, since the case law establishing that code on a ROM is afforded protection would only happen later that year.

  • @Jerhevon

    @Jerhevon

    4 ай бұрын

    @@CptJistuce Also, this was Atari that absolutely would not put game dev names in any publicly accessible credits lest their programmers get poached.

  • @stevenolson3977
    @stevenolson39775 ай бұрын

    Oh man....that bit at the end about the code that draws the neutral zone...this is a fantastic example of a "strange loop" as defined by Tom7

  • @nsf001-3

    @nsf001-3

    5 ай бұрын

    Eatin' boots since 1982

  • @bitblit
    @bitblit5 ай бұрын

    A small change in the ROM should allow for the neutral zone to be rendered every frame whilst the quotile shield is never rendered, giving us access to all of the data in the ROM minus the least significant bit. If the Atari had the equivalent of a game genie the branch instruction could be changed to always draw the neutral zone. Building off of this if you run this in an emulator and change address $FAF3 from 0x9003 (bcc $FAF8) to 0x3A3A (NOP x2) then the game will draw the neutral zone every frame and every piece of code can be seen.

  • @Roverd26
    @Roverd265 ай бұрын

    I love the idea of checking which interpretation of the binary code results in the most valid/common opcodes! Reminds me of reading gene sequences, where a sequence can be interpreted 3 ways depending on where you start reading it. (DNA is made of codons, which are kind of like opcodes made out of 3 base pairs. Starting on a different base pair results in wildly different codons, and you can check which interpretation is the most likely to be valid by checking how long it takes you to run into a STOP codon.)

  • @angeldude101

    @angeldude101

    5 ай бұрын

    Instead of disassembling 8 digit binary groups, you get to disassemble 3 digit quaternary groups (which are effective 6-bit). I find it kind of funny that nature managed to come up with what's basically a "terminator byte." Whether you'd interpret it like a string's null terminator or a subroutine's return instruction, it's still pretty cool how much there is in common.

  • @peterfireflylund

    @peterfireflylund

    5 ай бұрын

    I remember being taught that in high school biology. Then we asked the teacher how the cell read the right sequence: how did it choose the correct strand and how did it get the reading direction right? Turns out she didn’t understand the question. We spent a long time, maybe 15 minutes, trying to explain it to her. Then we collectively decided she was stupid :) (Denmark, late 80’s, no Google, no Wikipedia, no internet.)

  • @SECONDQUEST

    @SECONDQUEST

    5 ай бұрын

    ​@@peterfireflylund I highly doubt she didn't understand the question. She didn't have an answer because that's more the realm of physics and chemistry anyway.

  • @Sypaka

    @Sypaka

    5 ай бұрын

    So i am not the only one to compare DNA to computer code, where the compiler is our own body. DNA could also be a large TAR archive and the "human compiler" just scans through it until it finds the block - like a LOAD XXXX instruction. I even dare to say, certain blocks are AND/OR/XOR'd to form a new variance. Because if you see the Y-Chromosome, it has stuff missing in it and can't exist on it's own. THis is called Y0 and any baby with this is unable to form and dies early. I'd like to call the Y-Chromosome "a patch". It integrates, overwrites some portions and then keeps "compiling" normally as an X would. Recessive Genes could be a result of an AND/OR/XOR, thats why brown eyes for example are more dominant then blue, if you think of them as 0/1 , but they aren't. Hell, maybe call blue eyes an "else default" case, so you are left with "is_brown" or "is_green" IF checks. Anyway, I think it really safe to assume human DNA to be code and the base RNA found in all woman to be a key/checksum like "if remote.DNAinit not equal self.DNAinit; exit"

  • @Tkmined

    @Tkmined

    5 ай бұрын

    Damn, didn't know we had STOP instructions in our dna sequences lol. Learn something new everyday! Guess it makes sense. How is the cell supposed to know when to stop printing RNA or or when to stop building a protein if there wasn't a marker.

  • @AB-Prince
    @AB-Prince5 ай бұрын

    I would say that although it's more or less impossible to unscramble the code from the color blocks, the fact that you can more or less reverse engineer the code that displays the neutral field from looking at the graphics, I would say, technically counts as extracting code from the neutral field graphics, albeit not the code that is hidden in the field. considering that also just by chance, the code to draw the field ends up becoming field is rather fitting to the goal of unscrambling the code.

  • @Nikola_M

    @Nikola_M

    5 ай бұрын

    I'd say that "fitting" would be a better word than "ironic" in the last sentence

  • @AB-Prince

    @AB-Prince

    5 ай бұрын

    @@Nikola_M thanks, english is my first language but I suck at properly conveying information. fixed it.

  • @jogloran
    @jogloran5 ай бұрын

    These skills are going to be real useful for hardware archaeology, when we recover damaged firmware developed centuries in the past and need to get them working again.

  • @CptJistuce

    @CptJistuce

    5 ай бұрын

    Eh, just splice frog DNA in over the missing parts. What could go wrong?

  • @PopeGoliath

    @PopeGoliath

    5 ай бұрын

    Instructions unclear. Lilypad stuck in ceiling fan.

  • @lavacat720

    @lavacat720

    4 ай бұрын

    ​@@CptJistuceinstructions unclear: my router is going ribbet ribbet and catching flies

  • @AgentLazarus

    @AgentLazarus

    Ай бұрын

    Instructions Unclear: my di%# is in my throat

  • @AutodidacticPhd
    @AutodidacticPhd5 ай бұрын

    With regard to your closing comment, I suspect we could further surmise that anyone who did have the time and experience needed to deduce the code from the neutral zone could probably write their own (UX identical) version of the game from scratch in less time than it would take to untangle that mess and fill in the blanks accurately.

  • @ozziegerff
    @ozziegerff5 ай бұрын

    "Challenge Accepted"

  • @brinleyhamer729

    @brinleyhamer729

    5 ай бұрын

    You first

  • @TheRedCap

    @TheRedCap

    5 ай бұрын

    "Challenge Accepted" >40 minutes in the video hell yeah

  • @stevethepocket
    @stevethepocket5 ай бұрын

    It took me forever to remember what other game you already covered that grabbed a chunk of its own code as a substitute for pseudorandom data. It was _Pac-Man_ using it to determine random directions to move at intersections. I wonder how many other games over the years have used that trick in one way or another.

  • @williamdrum9899

    @williamdrum9899

    5 ай бұрын

    I imagine anything that had a TV static effect was doing it. Nowadays you get a segfault if you tried this

  • @nikkiofthevalley

    @nikkiofthevalley

    2 ай бұрын

    ​​@@williamdrum9899Yep, because modern CPUs don't let you read random memory for security reasons. It'll let you read your own memory, of course, but you're pretty likely to end up reading invalid memory if you're trying to do something like this.

  • @OhSayWhatIsTruth
    @OhSayWhatIsTruth5 ай бұрын

    It's amazing with what developers can do with such a limited piece of hardware. Thanks for the video!

  • @ExpoM3rker
    @ExpoM3rker23 күн бұрын

    Whoever did these captions need a raise, using colors is something I don’t see a lot do. They even move it too!

  • @dirkkrohn1907
    @dirkkrohn19075 ай бұрын

    This was one of the 2600 games that I had back in the day. Thanks for the memories, and happy holidays to you and your family.

  • @TheWarmotor
    @TheWarmotor5 ай бұрын

    Never thought about using the second bit as a mask in XOR instructions. I typically use XOR instructions to zero out large blocks of registers in one instruction by making my bit matrix both of the input fields as well as the output field. The instruction set allows 125 registers at a time, allowing me to zero out (up to) all 125 in one very fast instruction. This is for low level code on dedicated microcontrollers for industrial automation, where every byte and clock cycle count. Next time I'm working on a large bit matrix, I'll probably look at it a little differently :)

  • @canebro1

    @canebro1

    5 ай бұрын

    That is funny. My last job I remember seeing a macro for an efficient memset to 0, but never looked at the assembly behind it. Now I wonder if it used XOR or not.

  • @nikolthomas2544

    @nikolthomas2544

    5 ай бұрын

    @@canebro1 Probably. Most CPUs have one or more versions of' a "XOR 'thing' with itself" instruction which is generally the most efficient way to set 'thing' to zero.

  • @gtabro1337
    @gtabro13375 ай бұрын

    Bro really put the inner workings of the game on literal display

  • @Tuxfanturnip

    @Tuxfanturnip

    5 ай бұрын

    why write code to generate a random-looking bit pattern when you already have one on the ROM?

  • @CptJistuce

    @CptJistuce

    5 ай бұрын

    ​@@TuxfanturnipFlashbacks to the Pac-Man RNG.

  • @craftersshaft
    @craftersshaft5 ай бұрын

    i think the neutral zone would be a great teacher, they never dwell on the least significant bits

  • @nsf001-3

    @nsf001-3

    5 ай бұрын

    I *C* what you did there (It's assembly but bear with me)

  • @wolfetteplays8894

    @wolfetteplays8894

    4 ай бұрын

    Nice pfp

  • @nameless......................

    @nameless......................

    4 ай бұрын

    @@nsf001-3 on the topic of characters being used, i □ unicode

  • @aner_bda
    @aner_bda5 ай бұрын

    I remember playing this game as a young kid, maybe about 6 or 7. I had no clue what I was doing, or how to play it. But I still do have distinct memories of it.

  • @stevethepocket

    @stevethepocket

    5 ай бұрын

    This was definitely one of those games you didn't want to throw out the manual for. One great thing about the switch to discs is that people finally started holding on to the packaging for their games, since storing discs without their cases is much more of a pain. I was lucky enough to end up with not just the manual for this one, but the little comic book that explains the backstory in more detail. I still don't know if that came with the game or was something you had to buy separately or order from the back of a cereal box or whatever.

  • @maxinealexander9709
    @maxinealexander97094 ай бұрын

    I really appreciate that the subtitles were actually good, and adjusted position when needed based on screen contents. Thank you!

  • @Chrisuan
    @Chrisuan5 ай бұрын

    Absolutely beautiful video, please never stop making them

  • @mozzapple
    @mozzapple2 ай бұрын

    At first I was extremely confused because I couldn't see the neutral zone at all, but when the section about the flickering started, I realized I just needed to up the quality to 60fps

  • @iwastherobloxianminecrafter

    @iwastherobloxianminecrafter

    Ай бұрын

    Woah! Rad.

  • @nickwallette6201
    @nickwallette62015 ай бұрын

    This all sounds like EXACTLY the argument that inspires things like HDCP. If that were a possibility in the 80s, Atari may have demanded the game use an encrypted channel to the TV. Pirates would then simply dump the ROM, grabbing every byte, in order, with no obfuscation or masked bits. But, gamers would have to upgrade their TVs, VCRs, and switch boxes to avoid scrambled video. Or maybe I'm just bitter that I can't get my Mac Mini desktop to show up through an HDMI KVM, HDMI Matrix, and HDMI to DisplayPort adapter without disconnecting the cable two or three times every morning. Because god forbid I vid-cap my Outlook window and share it on the Internet...

  • @SteveNeubauer
    @SteveNeubauer5 ай бұрын

    I love the premise of this video! I used to play Yars' Revenge like crazy in the Atari days, and I think I was vaguely aware of the trivia of the neutral zone sometime recently, AND I am fascinated by your videos. This video is for *me* so thank you for it!

  • @StormyBuckets
    @StormyBuckets5 ай бұрын

    the content of your videos tends to go straight over my head, but it's still so fun to listen to!

  • @mattshu
    @mattshu4 ай бұрын

    First video I’ve seen from this channel. What an amazing style you use! Unique!❤

  • @mattrodriguez1712
    @mattrodriguez17125 ай бұрын

    Amazing video. I hadn’t thought about Yar’s Revenge since I was a kid. I loved that game and this is incredibly interesting.

  • @unnamed82979
    @unnamed829794 ай бұрын

    This is video is amazing. Love the amount of effort you put into it. Great visuals, great explanations, great everything. 10/10 I don't know how I missed out on this KZread channel. But I pulled out my phone on which I am signed in and dropped a like and sub.

  • @codingidiot6754
    @codingidiot6754Ай бұрын

    absolutely incredible video, couldnt stop watching. I dont even know anything about machine code or assembly at all but this had me hooked. Sad that it seems impossible to fully decode, but getting that far in the first place is arguably cool enough. And dont even get me started on the editing. Definitely one of the highest quality channels about cool niche coding stuff out there, dont stop doing what you're doing.

  • @aceae4210
    @aceae42105 ай бұрын

    the subtitles for this video are very well done, thanks for having them

  • @KeviRun
    @KeviRun5 ай бұрын

    This is definitely high on the list of the best videos that you have made! Technically detailed but also easy enough to follow along with. There may be an opportunity for me to meet HSW at a future event and if I do, I will be sure to ask if he has seen this video/ recommend it to him, and ask his opinion of your methodology to dissect the game; and I will be sure to pass along what he says in DM if it happens. Thanks for all of the great content!

  • @ElliLavender
    @ElliLavender4 ай бұрын

    I only understood like half of this, but you explained it so well, that I still feel like I've got a grasp on everything solid enough to leave the video satisfyied. Thank you, that was really interesting!

  • @noahwinslow3252
    @noahwinslow32524 ай бұрын

    Really beautiful and well done presentation. Thank you for all the time and effort it must have taken to make this!

  • @NinF37
    @NinF375 ай бұрын

    Absolutely fantastic video as usual! As someone who doesn’t touch code, and doesn’t know assembly, this was still super easy to follow. Extra kudos for the captions, which move out of the way when it would normally block something! ❤

  • @igNights77
    @igNights775 ай бұрын

    Amazing investigative work. Keep those videos coming!

  • @pseudolimao
    @pseudolimao2 күн бұрын

    This is fantastic. I loved my uni class on assembly code and havent really used much of the knoweldge gained, but i can confidently say it made me able to follow this video, and able to understand the monumental effort you put into it. Good job!

  • @theantipope4354
    @theantipope43544 ай бұрын

    Truly a lovely piece of reverse-engineering analysis, & it brought back a lot of memories! I never worked on Atari 2600 code, but I did work on lots of code for other 6502 based machines of that era. Thanks for the excellent work.

  • @knightsofthebedrock938
    @knightsofthebedrock9385 ай бұрын

    I never have any clue what you’re talking about but I watch every video you make. Thanks for the great content!

  • @greatcanadianmoose3965
    @greatcanadianmoose39655 ай бұрын

    This is actually really insane, I love this!

  • @memesalldayjack3267
    @memesalldayjack32674 ай бұрын

    this was super interesting, well paced and very well animated, very good job

  • @ladydelorean
    @ladydelorean5 ай бұрын

    That is a gorgeous work of art, thank you. 💞

  • @SpringySpring04
    @SpringySpring045 ай бұрын

    So interesting to see your videos, its always a blast

  • @ZeroHourProductions407
    @ZeroHourProductions4075 ай бұрын

    Imagine making your source code the template for game mechanics. This game was before my time, but that is a madness i can admire!

  • @gordontaylor2815

    @gordontaylor2815

    5 ай бұрын

    If you've watched the "racing the beam" episode, you'll understand that the devs back in the day had to be a little bit mad to be doing this kind of thing. This is why you'll often see them affectionately called terms like "wizard" and "magician" on fan forums; it's a tongue-in-cheek way of describing what they are. :)

  • @canebro1

    @canebro1

    5 ай бұрын

    They essentially need to create random numbers, so what better way than just randomly grabbing from your source code? You know it will be sequence of non-zero numbers, and as long as you do a little fiddling it is essentially unreadable. Plus, as he said at the end, anyone willing to actually decode it probably deserves it, and should probably be hired.

  • @CptJistuce

    @CptJistuce

    5 ай бұрын

    There's a lot of crazy going on in VCS coding. When you have 4Kbytes of ROM, 128 bytes of RAM, and a CPU that almost has to draw the image on the TV in real-time... you get creative in terrifying ways.

  • @potaxpotax
    @potaxpotax5 ай бұрын

    This is a work of art. And I mean both the game AND your video. Thanks.

  • @Longuncattr
    @Longuncattr5 ай бұрын

    34:18 It's not true that $9Exx is a "garbage" location, it would just be a mirror of something (in this case, a ROM address), since the 6507 variant of the 6502 has only 13 address lines but still computes 16-bit addresses internally. Now of course Yars' Revenge is a plain old 4K cartridge with no extra RAM, so storing to an address with A12 set truly is nonsense for this game, but it's worth mentioning. Plus, some particularly advanced bankswitch schemes do interesting things in exploiting the various sorts of incomplete address decoding that the VCS has. Very cool video!

  • @whamer100
    @whamer1005 ай бұрын

    this is by far one of the coolest videos ive seen in a long time

  • @BrunoValads
    @BrunoValads4 ай бұрын

    What an amazing research, I'm really impressed of how far you could get thru this visual reverse engineering

  • @ElTaitronAnim
    @ElTaitronAnim4 ай бұрын

    Amazing work! And the ingenuity of old-school programmers like this is really impressive too.

  • @sa3270
    @sa32705 ай бұрын

    Atari put out a magazine called Atari Age back in the 80s, and sometimes they would include some high-level technical explanations related to their hardware and games, and I could swear that they mentioned once that the Neutral Zone in Yar's Revenge was based on the game's code.

  • @larswadefalk6423
    @larswadefalk64234 ай бұрын

    Worst mindf*ck I've seen in a long time. Oh man, the patience and tolerance to just move forward is just amazing. Total awe. Thanks.

  • @Color-Theory
    @Color-Theory5 ай бұрын

    Thank you for sharing! Amazing as always!

  • @jchadwick4918
    @jchadwick49185 ай бұрын

    The fact that you managed to unpack that much of the code using only understanding of assembly op codes, operation lengths and bit masking is… awesome. Same vibes as archaeologists trying to decrypt worn away texts from millennia past. You never cease to amaze.

  • @Lin_The_Cat_
    @Lin_The_Cat_4 ай бұрын

    Omg that transition from the analogue TV static-y shot of the win screen to the crisp digital emulated shot of the win screen at 1:36 was brilliant.

  • @jajoothecoolman
    @jajoothecoolman4 ай бұрын

    THE CAPTIONS ARE WELL MADE THANK YOU

  • @Richie086
    @Richie0864 ай бұрын

    Wow you are one smart dude! Glad people like you exist and are willing to explain how this works to the rest of us.

  • @creightonholub
    @creightonholub5 ай бұрын

    Thank you for doing a video on one of my oddly favorite childhood games!

  • @srb2er
    @srb2er5 ай бұрын

    NEW RGME DROPPED!! LET'S GOO!!! Interesting design choice of them using the code as a actual game design choice

  • @metalpachuramon
    @metalpachuramon3 ай бұрын

    Well, what else can I say that everyone else hasn't said but kudos! This is the kind of rabbit hole that I like diving into, it's so refreshing seeing some true software and hardware engineering in action!

  • @mrtwinky2007
    @mrtwinky20075 ай бұрын

    Awesome work as always, Keep it up

  • @lorensims4846
    @lorensims48463 ай бұрын

    Wheee! This was fun! Yeah, I can see how some kid playing Yar's Revenge could get excited upon learning that the source for the game was being used to draw the Neutral Zone. But I agree. In the early '80s there really wouldn't be a practical way to decipher that code even to the extent you were able to. This all takes me back to when I learned everything I ever needed to know about computer science on my Atari 800. I really appreciate that text you used for your displays. It looks like a real small font from back in the day. It looks great! Atari 8K BASIC was so slow that we were practically forced to use 6502 Assembly Language pretty quickly. I never had an Atari VCS (2600), I saw computer games as graphics demos for me to figure out how they were done. That "Neutral Zone" looks like the kind of noise I often saw to represent energy fields in the better games. It's not at all surprising that the most convenient source of "noise" would be the machine code.

  • @StephenBryant
    @StephenBryant5 ай бұрын

    It's amazing to see the switching in real time of the graphics while pausing the video and using , and . to go back and forth. (You go into this right after I added the comment LOL )

  • @sesemuller4086
    @sesemuller40865 ай бұрын

    That topic came out of nowhere! Good video though!

  • @ric8248
    @ric82485 ай бұрын

    I believe the explosion when you kill the boss also uses the code. I once coded a ATARI 2600 emulator and I was baffled that whenever I took a screenshot of Yar's Revenge I could only see either the safe zone or the enemy's shield.

  • @SECONDQUEST

    @SECONDQUEST

    5 ай бұрын

    You coded a whole emulator and didn't know about flicker? Dude what.

  • @ric8248

    @ric8248

    5 ай бұрын

    @@SECONDQUEST Mate I can't know what techniques every game uses. In fact when you code an emulator you just create the engine. I did know though that the Pacman ghosts were render each 4th frame, because that is more notorious, but for Yar's Revenge it was once every other frame, so until you see it in action you just don't know.

  • @NicolasGasnier
    @NicolasGasnier4 ай бұрын

    Impressed by the patience and deductions you put in all your videos. Well as for decoding the code that way, I can only agree with you that no one back in the days would have tried. If someone had the electronic & programming skills to understand the inner working of the console, it would have been much much easier to do a ROM dump.

  • @jamesburnett3585
    @jamesburnett35854 ай бұрын

    Holy shit. My phone auto set it to 480p 30fps and I couldn't see the neutral zone at all lmao. It took till you explained how it worked that I went back and switched it to 60 fps.

  • @KurtSchwind
    @KurtSchwind5 ай бұрын

    Amazing analysis. Well done.

  • @BabaNamKevalamGames
    @BabaNamKevalamGames4 ай бұрын

    this guy is amazing, im glad i just subscribed to thism channel.

  • @AFourEyedGeek
    @AFourEyedGeek3 ай бұрын

    What ever this is, I want more of it, its fantastic. Great work.

  • @roastinNAVY
    @roastinNAVY2 ай бұрын

    Currently going to school for electrical engineering technology and covering microprocessors right now, so this is pretty cool. As an avid player of this in my '90s childhood, because I got it as a hand-me-down from my Aunt/Uncle, that's also a huge plus.

  • @vlasiy5550
    @vlasiy55505 ай бұрын

    Thank you for that video. This is incredible how much we can say about game code, using one visual effect. Sorry for my English

  • @ohnoitschris

    @ohnoitschris

    5 ай бұрын

    Your English in your comment was perfect.

  • @klaudialustig3259
    @klaudialustig32594 ай бұрын

    This video was a great Christmas present!

  • @matthewmangan6251
    @matthewmangan62515 ай бұрын

    4:00 to 6:00 is some of the most awesome analysis I’ve ever seen

  • @lis6502
    @lis650224 күн бұрын

    oh how i love such deep dives into obscure techniques. Especially on 6502 which thanks to von Neumann's memory architecture doesn't distinct between "program" and "data" segments. Therefore we can experience wonders such as self modifying code to save some memory or even executing some graphics data which happen to be valid machine code if read correctly. Leaving all that aside i am astonished by sheer amount of work put in here. Until you showed exact code drawing neutral zone i though that color might be at least missing byte's nibble. Also representation of data-code as blocks and guessing how PC would look like after it was very clever. Amazing video.

  • @ozzie_goat
    @ozzie_goat4 ай бұрын

    No idea who did your captions, but they are on point my guy

  • @MCMcommunications
    @MCMcommunications5 ай бұрын

    Just some helpful tips: sequence rhymes with patience, it does not sound like sequins. Also, sleuthing should have the same TH sound as its root, not the harder one. You keep saying if something WERE at times when the subjunctive is incorrect. If there is true uncertainty, especially if if really means whether, it should be WAS. Also, either is singular and uses a singular verb (arguably neither does too); and (37:20) you choose between one thing AND another thing, not OR. All this is offered to help polish your incredibly detailed and well-narrated videos! A treat as always to watch.

  • @phantom-chan2940
    @phantom-chan29404 ай бұрын

    oh god that viewers like you thank you thing sent me back years

  • @SkyanUltra
    @SkyanUltra4 ай бұрын

    this is really cool! honestly i would love a whole video on the process of reverse engineering the code from games. i always wondered how people managed to crack the code for Super Mario 64, OoT, and Paper Mario 64

  • @Tethrarxitet
    @Tethrarxitet4 ай бұрын

    The captions here are interesting. And quite amazing.

  • @Clancydaenlightened
    @Clancydaenlightened4 ай бұрын

    6:01 the tia chip is mostly implemented using latched polynomial counter and some shift register style logic

  • @jummy0
    @jummy05 ай бұрын

    oh these color-coded subtitles are _exquisite_

  • @agvulpine
    @agvulpine5 ай бұрын

    This is the type of data forensics that wins million dollar jury verdicts. You should spend all of your energies on becoming a highly sought after (and well paid) expert witness in your field. This presentation alone has the court convinced beyond a reasonable doubt.

  • @claudiusraphael9423
    @claudiusraphael94235 ай бұрын

    "Elementary, Watson." ... Nice voyage into deduction. Thx for sharing!

  • @endrankluvsda4loko172
    @endrankluvsda4loko1724 ай бұрын

    I must say I'm diggin the jist of your jibe! It's got me all fired up over here!

  • @dholmlund
    @dholmlund2 ай бұрын

    At 3:47 - I like how your frame counter numbers are coloured with player 1 and player 2 yars colors!! :D It's cool how each Yars is a different color! :)

  • @fyrewire
    @fyrewire4 ай бұрын

    loved this video. It inspired me to add some things to my logic gate cpu

  • @byWilliamJMeyer
    @byWilliamJMeyer4 ай бұрын

    Thank you! Most of it goes over my head but I still think it's cool.

  • @obscurity3027
    @obscurity30273 ай бұрын

    Yars Revenge was the game that got me hooked on video games when I was 6 years old. I’ve never looked back.

  • @MrMemetic321
    @MrMemetic3213 ай бұрын

    Underrated channel

Келесі