NES Emulator Part #1: Bitwise Basics & Overview

Поделиться
HTML-код
  • Опубликовано: 12 янв 2025

Комментарии • 923

  • @javidx9
    @javidx9  5 лет назад +273

    I wanted to see what this premier thing was all about - it's not something I'm gonna start using regularly. Just this time felt appropriate XD Also, if you want to submit for showcase video, or featuring on the website, fill this in! forms.gle/zegqonbDsgugkunW8

    • @serge-otro
      @serge-otro 5 лет назад +2

      Thank you for premiere. What’s the name of the game or genre?

    • @sweetberries4611
      @sweetberries4611 5 лет назад

      @@serge-otro i think that's secret to keep people hyped

    • @Pridetoons
      @Pridetoons 5 лет назад +12

      I'm subscribed to hundreds of channels on youtube and I have to say your one of the most underrated channels on RUclips. Your channel is truly a RUclips Gem!

  • @olearycrew
    @olearycrew 5 лет назад +912

    I came for the NES emulator. I stayed for the best explanation of HEX and bitwise operations ever.

    • @ZapDash
      @ZapDash 5 лет назад +19

      Seriously

    • @lossen1984
      @lossen1984 4 года назад +10

      So true!

    • @IgnisTMage
      @IgnisTMage 4 года назад +20

      The bit masking explanation was a thing of beauty.

    • @FelipeDWB
      @FelipeDWB 4 года назад +8

      You are right even in my cs degree I got explanation like that

    • @jasonleo
      @jasonleo 4 года назад +4

      Me too

  • @darkfoxfurre
    @darkfoxfurre 5 лет назад +497

    0:00 Intro
    2:30 Overview
    5:24 Legality of Emulation
    6:25 NES Game Collection
    8:27 NES Reference Guide
    10:06 Hexadecimal Notation
    15:18 Bitwise Operations
    24:06 Bit Fields
    27:39 NES Hardware Overview
    38:30 Summary
    39:54 Outro

    • @eleanorprins
      @eleanorprins 5 лет назад +34

      36:45 - hurt ears

    • @NOCTUMSEMPRA
      @NOCTUMSEMPRA 4 года назад +6

      You could have zero-padded the first 5 items!!! Lol, JK. Thanks for the TOC.

    • @Danny-we4vz
      @Danny-we4vz 3 года назад +2

      Doing god’s work!

    • @48-_
      @48-_ 2 года назад

      Intro is the Best

  • @Naveication
    @Naveication 5 лет назад +512

    "The Picture Processing Unit, also known as PPU, sometimes called the Pixel Processing Unit... by me... accidentally."
    Comedy gold right there

    • @javidx9
      @javidx9  5 лет назад +45

      Im bound to slip up, and then people will nag in the comments XD

    • @JJ-Streaming
      @JJ-Streaming 3 года назад

      May as well call it pixel processor 😂 is it not just a basic GPU?

    • @iyadlamouri6572
      @iyadlamouri6572 3 года назад

      @@JJ-Streaming
      because the PPU assemble pictures
      and GPU made operations for rendering pictures

    • @JJ-Streaming
      @JJ-Streaming 3 года назад +2

      @@iyadlamouri6572 so it’s the same?

  • @Quiltfish
    @Quiltfish 5 лет назад +212

    A sign of a good teacher is engaging someone who already knows the topic.
    ...Subscribed.

    • @numalesoybea1348
      @numalesoybea1348 4 года назад +3

      Actually it's the opposite. A good teacher engages someone who doesn't know the topic.

    • @Quiltfish
      @Quiltfish 4 года назад +31

      @@numalesoybea1348 I was thinking more that if a teacher can engage without boring someone who already knows the topic, that's a good sign for if they were to try teaching someone to whom it's still new and exciting. I could probably have worded it better, both times.

  • @SparxableTunes
    @SparxableTunes 5 лет назад +166

    Your skill in programming might come in 2nd compared to your skill in teaching. Thank you so much for all of the videos throughout the years

  • @deathreus
    @deathreus 4 года назад +20

    That was the most intense "fetching a thing out of the attic" sequence

  • @xotmatrix
    @xotmatrix 5 лет назад +16

    This is going to be good. Building an emulator from scratch from data sheets and reference material is a great exercise. I had the same attitude as you when I made my Apple II emulator. I always avoided looking at other emulator code because I knew it was something I eventually had to do for myself. It's unbelievably satisfying when things start to come alive.

    • @javidx9
      @javidx9  5 лет назад +10

      You're quite right, this is a project that "I" can be proud of, a rare thing as you get on in life XD

  • @256k_
    @256k_ Год назад +3

    your little talk about the NES and how much it means to you and that photo in the end made me want to go and hug my own NES that i've owned for 30 years now. that photo of you as a child might as well have been me. years and years of fun memories of the NES playing duck hunt with my dad who kept getting angry at the dog when he missed all the ducks, playing with my mom, playing with friends, seeing the joy on a friend's face as a full grown adult finishing super mario bros for the first time ever.
    "the NES made me who i am today" 100% accurate.
    thank you for the fantastic education

  • @curtis9701
    @curtis9701 5 лет назад +30

    I have to say thank you! I just finished my first year of computer engineering and we were introduced into bitwise. The way they delivered the information was very spliced up. I needed to see where the heck it all leads to and not just being able to change a bit or how memory is stored ect..
    I clicked on this video out of curiosity and was like DAM... Being able to visually see the end product how everything gets tied together and what the mechanics are at the mircrochip level and massively informative. Thank you! This was more helpful than my prof. I can't wait to watch the rest of these. Im going to share it with other students because no one really understand where it all led to. Thank you kind sir.

    • @tech6hutch
      @tech6hutch 4 года назад +2

      So basically they taught you like Mr. Miyagi... teach you the techniques without explaining what it’s for until later.

  • @TwennyBux
    @TwennyBux 5 лет назад +62

    All NES awesomeness aside this was a really great explanation of bitwise operations. Really helpful thanks

  • @dambros
    @dambros 5 лет назад +27

    This is something I've always wanted to try but had no idea where or how to start without simply copying/pasting other people's code. Great opportunity for me to learn how it should be done! Thanks for this!

  • @Jdozjsnwj783
    @Jdozjsnwj783 5 лет назад +6

    Hey, I know this video is old but I just wanted to thank you. I have experience writing c++ for Arduino, but not 'real' c++ and your videos always leave me with ZERO questions. You are clearly extremely knowledgeable about c++ and your explanations, pacing, humour is all TOP. Props to you David, I appreciate your content

    • @javidx9
      @javidx9  5 лет назад +4

      Old?? Its like 6 months old XD Thanks buddy! XD

  • @rhornak2381
    @rhornak2381 2 года назад +7

    Your intro brought back amazing memories ! Blow the cartridge was always the perfect fix for me xD
    I am sad I didn’t see your video sooner, the NES is one of my favorite console (mostly because of Super Mario Bros 3) and I always wanted to try building an emulator, but it takes a lot of time to investigate read datasheets, etc, I never took the time to do it.
    Deep thanks, you are a good teacher :)

    • @javidx9
      @javidx9  2 года назад +2

      Thanks buddy! 😊

    • @SoDamnMetal
      @SoDamnMetal 2 года назад +1

      He forgot the final step though, blow away any possible dust in the console then firmly and tightly insert the cartridge. If that all fails... RIP.

  • @oneoutoffive
    @oneoutoffive 5 лет назад +31

    I've been trying to build an NES emulator for a long time, I'm hyped for more videos!!!!

    • @javidx9
      @javidx9  5 лет назад +6

      Its certainly not been easy, but loads of fun. Thanks Tony!

  • @fredtaylor9792
    @fredtaylor9792 3 года назад +1

    I'm just a tourist here. I'm just interested in what's happening under the hood as I play the old games and I'm extremely grateful for your hard work on these videos. It's content i've been interested in and haven't found until now. Thank you, thank you, thank you!

  • @dthewave9466
    @dthewave9466 5 лет назад +10

    This was the shortest and easiest explanation of how hexadecimals work, I have ever seen. Great work, looking forward to the rest of the series!!

  • @metalsquid
    @metalsquid 5 лет назад +20

    I've always wanted to know how to go about writing an NES emulator but could never quite put all the pieces together. Totally excited for this series and eagerly await the remaining parts!

    • @javidx9
      @javidx9  5 лет назад +2

      Thanks metalsquid, I dont know if i can cover every last detail on RUclips, but I hope its enough to give people a head start

    • @EpicestGamer
      @EpicestGamer 5 лет назад

      Yeah, one of my current pet projects may require me to write an NES emulator where I'm able to write in some sort of custom peripheral, so this actually came just in time, as I'm still working on the software thats gonna be running on the emulator, so this could give me not only good insight on how the NES works and how best to use it, but also a good place to start from when working on my emulator for my project.

  • @NOCTUMSEMPRA
    @NOCTUMSEMPRA 5 лет назад +5

    This is the second video I watch from this channel... damn, you're one HELL of a CODER. Subscribed++ !!

  • @DaveChurchill
    @DaveChurchill 5 лет назад +2

    I have so far seen 7 youtube channels start this journey and not one has finished it. I wish you all the best :)

    • @javidx9
      @javidx9  5 лет назад +1

      Hi Dave and thanks! The emulator is finished, I just need to make the videos.

    • @DaveChurchill
      @DaveChurchill 5 лет назад

      @@javidx9 That's awesome! I am really looking forward to it. I teach C++ to 3rd and 4th year university students and enjoy your examples and presentation style.
      Have you seen Bisqwit's video on writing an NES emulator? The lookup table he uses is a work of art

  • @jajwarehouse1
    @jajwarehouse1 5 лет назад +51

    The first time I played an NES game way back when it was released, the thing that went through my mind at the time was "I want to extract the data from this cartridge and get it to work on a computer."

  • @amberdean1263
    @amberdean1263 5 лет назад +2

    I've been dabbling in programming since I was a child and only really getting serious about it over the past few years. Building an emulator is an absolutely huge dream of mine, and I can't express how grateful I am that you're composing a series like this. You're helping me to digest so many concepts much more quickly.

  • @MateusAntonioBittencourt
    @MateusAntonioBittencourt 5 лет назад +5

    I think this is an amazing project. As someone who only recently got into coding... I think this is gonna be a HUGE educational series. I'm fascinated by how things were programmed back in the day... and how hardware worked.
    This already helped me a lot... bitwise is something I didn't understand very well even though I used sometimes for some specific things... But now I can see how powerful it can be. Can't wait for the next videos.

    • @JyrkiKoivisto
      @JyrkiKoivisto 5 лет назад +2

      Pointers and bitwise operations are essential for low level coding in C (drivers and such) not to mention baremetal coding.

    • @javidx9
      @javidx9  5 лет назад +1

      Thanks Mateus, yeah, bitwise is going to be really important for this series.

  • @recklesflam1ngo968
    @recklesflam1ngo968 4 года назад +2

    As someone who is learning to code for the NES, your emulator series is quite fun and helpful to watch

  • @UnidayStudio
    @UnidayStudio 5 лет назад +69

    Born too late to discover the world, too earlier to fiscover the universe (I guess), at the right time to watch this amazing youtube channel.
    Congrats for another fascinating video! :)

    • @javidx9
      @javidx9  5 лет назад +5

      Hey Uniday Studio, thanks!

    • @ruddymolina7044
      @ruddymolina7044 4 года назад

      @@javidx9 hey man was the metal track at the beggining

  • @Rx7man
    @Rx7man 4 года назад +1

    39:18 "The NES is a fascinating machine, and I love it to BITS " Nice pun there!
    Looking forward to watching this series!

  • @porsupollo9349
    @porsupollo9349 5 лет назад +10

    dude, youtube just recommended me your video, i thought it would be entertainent for sure but i wasn't expecting to ended up learning how exadecimal and binary works lmao, and i haven't used complex math in about 9 years, you're an incredible teacher.

    • @javidx9
      @javidx9  5 лет назад +6

      Hi porsu, thanks thats very kind of you, and welcome! I try to show things at a high level but always in a practical application sense, so its pleasing to hear youve enjoyed this.

  • @boba1fett742
    @boba1fett742 2 года назад +1

    this channel is every nerd/programmer dream , thank you for the content

  • @FredM80
    @FredM80 5 лет назад +4

    I really like NES philosophy : all tiles and sprites, and what programmers made with it, with so few memory. I studied some times ago the SupermarioBros 1 encoding, and also Zelda 1 encoding : how they put huge maps on so few bytes. This is amazing

    • @javidx9
      @javidx9  5 лет назад +1

      Hi Fred, Im a great believer in constraints breeding creativity. Imagine what people could do with modern hardware if the really exploited it...

    • @sweetberries4611
      @sweetberries4611 5 лет назад

      @@javidx9 those were the simple days
      bottom text

  • @Atomizer74
    @Atomizer74 5 лет назад +2

    I came to this channel because I was recommended the 3d Graphics Engine Part 1, instead of just clicking on the video I went to the channel and looked at the playlists, considering I have delved into creating my own emulators in the past, this was the first playlist I ended up checking out.
    I started with a Chip8 emulator, with intention of going on to a NES emulator after, looking at my old development backups however, that was back in 2008, so it has been over 10 years since I seriously worked on emulation, I am super keen to dive back in, and this series has re-ignited my own passion for it.

  • @waseinmalwar1854
    @waseinmalwar1854 5 лет назад +7

    Very awesome topic.
    This summer I made a Z80 emulator, watching this will be surely fun!

  • @Gordolone
    @Gordolone 5 лет назад +1

    I discovered your channel recently and I really like your content and how you explain things. The tube is filled with programmers making videos about the best language, how to become the best programmer, some stupid program examples, how did I make a career, and than there are channels like yours, genuine, actual people programming and doing the tube for passion and with love for programming. Those are the channels I love. Keep up the good work and keep loving it!

  • @eleganteatinginjapan659
    @eleganteatinginjapan659 5 лет назад +17

    Thanks for sharing and providing us with free education!

    • @javidx9
      @javidx9  5 лет назад +3

      My pleasure EEinJ!

  • @raiker02
    @raiker02 3 года назад +1

    This must be the best bitwise operations explanation I've seen. Very concise and easy to follow!

  • @HenrikoMagnifico
    @HenrikoMagnifico 5 лет назад +4

    Such a phenomenal learning resource! Thank you!

  • @fahadkhankhattak8339
    @fahadkhankhattak8339 3 года назад +1

    I am genuinely intrigued by the way you worked your way around the legal thingie lol. great effort btw. thank you

  • @ThinDi3sel
    @ThinDi3sel 5 лет назад +7

    This is a fantastic tutorial for anything bitwise (not just for NES applications), should help in my upcoming interviews. Subscribed.

  • @jasonleo
    @jasonleo 4 года назад +2

    Well explained about the bitwise operation, thank you

    • @javidx9
      @javidx9  4 года назад

      Thanks Jason!

  • @gabrielferrer8061
    @gabrielferrer8061 5 лет назад +7

    Hi David. I can't wait until next episode.
    Good stuff as always.
    Regards.

  • @dr.pulque5386
    @dr.pulque5386 5 лет назад +2

    God, where have you been all my life?! Thank you very, very much for this series! :)

  • @HumbertTheHorse
    @HumbertTheHorse 5 лет назад +5

    WOW, such an exciting series. One of my first loves, NES.

  • @n.penkow
    @n.penkow 5 лет назад +2

    As a kid I always wondered how my NES works. Now I'm at the end of my engineering bachelor degree and I can understand how most of the electronics work, but I had no reference to look till now for the NES working principle. Thanks to you this is not the case anymore. Great series. Looking forward to the next part! :)

    • @javidx9
      @javidx9  5 лет назад +1

      Thanks Nikolay! Its great getting comments from people who were enthusiastic about the workings of technology when they were children. I worry that this is in decline these days.

  • @nttn3666
    @nttn3666 5 лет назад +4

    I'm HYPED , really looking forward to this :))))

    • @javidx9
      @javidx9  5 лет назад +1

      Thanks NTTN!

  • @mariouriel5057
    @mariouriel5057 4 года назад

    It's cool that people like you make this type of videos; really shows to see things that you don't have idea that existed

  • @JohnDlugosz
    @JohnDlugosz 5 лет назад +12

    26:45 No, you can't. That is "undefined behavior". I know that is a traditional trick that we have used for decades, but with newer optimizer technology these things no longer work reliably (really).
    So don't write such a union in every place you want the whole word -- make a single function (or template) that does this, and have *all* uses call that one place, Then, when your new compiler breaks the code, you only have one place to fix, using the idiom or compiler pragmas that work for that compiler. Note that new std library functions will be available to help with this, since everyone knows how awkward it is in the current specification. It's called bit_cast or something like that.
    Hmm, I should post an article on Code Project about that. Using type traits and metaprogramming, you could have a template like:
    auto x = as_word(s1);
    where s1 is a variable of that bit-field struct type. It would be smart enough to know that it turns into an unsigned char or std::byte.

    • @ZeroViruzz
      @ZeroViruzz 5 лет назад

      Doesn't the standard treat char-type specifically, allowing aliased access through it?

    • @sdkrystian
      @sdkrystian 5 лет назад

      @@ZeroViruzz the aliasing rules allow access through expressions of char type, but not vice versa

    • @SerBallister
      @SerBallister 4 года назад

      Isn't that the DRY principal?

  • @DavoMelendez
    @DavoMelendez 4 года назад +2

    Oh man you are such a Master... I have been fascinated with the NES since I met it back in the 90's when I was 9 year old. I've researched a lot by myself but this is by far one of the best global working prionciple explanation of this machine that I've seen.. way to go, keep doing it, Hello from Venezuela

    • @javidx9
      @javidx9  4 года назад

      Thanks Davo! I love the NES!

  • @Catishcat
    @Catishcat 4 года назад +3

    infinite respect for the rogue legacy sounds in the begining

  • @zrodger2296
    @zrodger2296 4 года назад +1

    I knew from one of your other videos that this had a good intro to bitwise operations. I used to know all that stuff; this was a good refresher. But then whoa! New stuff! Now maybe I want to watch the whole series? Absolutely invaluable content! Thank you!

  • @konferansjer
    @konferansjer 5 лет назад +11

    2:15 holy cow, I remember doing this, it actually worked sometimes!

    • @paulobueno1
      @paulobueno1 3 года назад

      When he didn't try it a few seconds earlier I was like "dude just blow it and it will work!" hahaha

  • @musicinsession
    @musicinsession 4 года назад +1

    I can't believe I only discovered this channel now! Why is it that if I look up a movie trailer on youtube I get bombarded with TMZ and E bullcrap, but when I watch 50 minutes of pure gold content like this one I get ZERO recommendations... Anyyway mate, amazing content you helped me loads!!

    • @javidx9
      @javidx9  4 года назад +1

      Thank you Filipe! Good to hear you've found things useful!

    • @musicinsession
      @musicinsession 4 года назад

      @@javidx9 thank YOU mate, for taking the time to explain things so clearly! I always struggled with bitwise operators and never really understood their real-life applicability (even though I know they are much much faster). As a humble suggestion would be good to see a video about how to apply bitwise in real-life scenarios, like audio and video for example.

  • @thomas3754
    @thomas3754 5 лет назад +21

    "hello let's make a nes emulator" beautiful introduction!

  • @CrystalBit
    @CrystalBit 5 лет назад +2

    I followed this video taking notes with pen & paper. I felt like being at Uni, thanks for this work! Keep it going!

  • @yosoydead
    @yosoydead 5 лет назад +3

    you would make a damn good teacher. can't wait for next parts

    • @javidx9
      @javidx9  5 лет назад +1

      Cheers yosoydead!

  • @DiegoSLTS
    @DiegoSLTS 5 лет назад +2

    This is so good. I tried to make an NES emulator some years ago but I never got it to work for any real game. Currently I've been working in a GameBoy emulator and since I have a few real games already working I was considering starting a RUclips channel or blog to share the process too, but in spanish.

    • @javidx9
      @javidx9  5 лет назад +1

      Sounds good Diego, do it!

  • @UberMun
    @UberMun 5 лет назад +3

    This is going to be an amazing series, I can feel it in mah bones!

  • @svenbtb
    @svenbtb Год назад +2

    Just finished reading Vol 1 of Write Great Code, your explanation of bitwise operations is a lot easier to follow lol. thank you for this! I'm definitely not at the level yet in my learning of C++ to try writing a whole emulator but it looks like it would be a REALLY fun project, definitely want to give this a try sometime!

    • @javidx9
      @javidx9  Год назад

      It's a great challenge but I agree not a project to start with. There are simpler emulators though, or why not even design your own fantasy console. That's why coding's a great hobby!

  • @LisandroDuran
    @LisandroDuran 5 лет назад +4

    Aunque me he perdido en varios puntos, los conceptos se entienden claramente. Esperando el siguiente vídeo.

  • @FernandoPonteFilho
    @FernandoPonteFilho 5 лет назад +2

    I love to see emulators being developed, still a newbie on programming world and loving explanation, and yes, the NES community have a lot a documentation available but for me, series like yours are really inspiring to build things and undestanding better how these wonderful machines worked.

  • @uncoherentramblings2826
    @uncoherentramblings2826 5 лет назад +3

    Thank you for the video as always. Hope to see more from this series.

  • @dannyarnold9823
    @dannyarnold9823 5 лет назад +1

    Thanks for creating a 8 bit project, I decided to write a commodore 64 game to improve my understanding the underlying machinations of an 8-bit game, Now I'm sure that your series will be invaluable in helping me in achieving my goals, Keep up the good work.

    • @javidx9
      @javidx9  5 лет назад

      Cheers Dan, I will!

  • @justsomeguy8385
    @justsomeguy8385 5 лет назад +102

    me: "oh building an emulator would be cool!"
    me 20 minutes in: o_O

    • @cortexauth4094
      @cortexauth4094 5 лет назад +7

      Bro, you haven't even seen PPU right now :' ( I am suffering with PPU right now

    • @marcelcevani5688
      @marcelcevani5688 4 года назад +1

      My plan is to get first the 6502 core stable and run all test roms. I first go without mapper

    • @joshmeijers9667
      @joshmeijers9667 4 года назад

      hahaha me reight nowq!!!!!

    • @tech6hutch
      @tech6hutch 4 года назад

      @@joshmeijers9667 I think you got your graphics tiles messed up there

  • @anshsharma3964
    @anshsharma3964 3 года назад

    i was searching for bitwise operators a few days ago and today it was in my recommended section and now I understand bitwose basics.
    You sure should make a few teaching playlists

  • @iii720
    @iii720 5 лет назад +3

    I like how casually he mentions completing Shadowgate. Totally gave up after not finding that key to the first locked door.

    • @javidx9
      @javidx9  5 лет назад +3

      Lol, full disclosure, it took me and my dad about 3 years of trial and error to beat that game XD

    • @iii720
      @iii720 5 лет назад

      @@javidx9 Rest assured, sir, you're still awesome! We're fortunate to have you RUclips.

  • @watsonwrote
    @watsonwrote 5 лет назад +2

    I'm looking forward to the rest of the series! This was a great introduction

    • @javidx9
      @javidx9  5 лет назад +1

      Thanks Matthew!

  • @louis-etiennemessier8003
    @louis-etiennemessier8003 5 лет назад +3

    wow those explanations of the basics were amazing! thanks :)

    • @whatamievendoing
      @whatamievendoing 5 лет назад

      Can't wait for the rest of the series! Seems fun...

  • @josephruiz831
    @josephruiz831 5 лет назад +1

    I was just starting to do research on my own nes emulator, went to RUclips, and MY MAN! Javid to the X9! Hitting me with the deets just one week earlier. long time subscriber, love your channel. thanks g!

    • @javidx9
      @javidx9  5 лет назад

      lol cheers Jose to the F XD

  • @happydays3300
    @happydays3300 5 лет назад +4

    hahaha! blowing the cartridge! so many memories, but you forgot the last process...
    Hit the console!!! , this worked for me everytime, lol!

    • @benjaminkeebler4218
      @benjaminkeebler4218 4 года назад

      There's the one in the middle though.. Put the cart almost all the way in so that the edge drags on the console door front edge as it snaps down. That was the trick that got about 30% of the carts to startup. Mind you, you can wipe all your saved Zelda runs this way... *sigh*

  • @dustinwilson2311
    @dustinwilson2311 5 лет назад +2

    Absolutely phenomenal! You're a wonderful teacher and the pacing is superb. I'm very much looking forward to the rest of the series.

  • @biggtk
    @biggtk 5 лет назад +3

    Ah, the sweet nostalgia of blowing into a dysfunctional cartridge

  • @DiegoLopesCF
    @DiegoLopesCF 5 лет назад +2

    Absolutely amazing!! I'll definitely watch the whole series.
    Just one thing, at 27:00 you could have explained padding and byte order, depending on the platform and compiler, the bitfields won't have the same order or padding.

    • @javidx9
      @javidx9  5 лет назад +2

      Thanks! This is correct, but in this instance it doesn't matter. I group bits out of convenience of programming and not out of necessity for emulation, thus I dont really care how the compiler packs things, so long as bit 6 is whatever bit 6 should be.

  • @veda-powered
    @veda-powered 5 лет назад +19

    Okay so here’s what I’m thinking:
    - Operating System: Possibly, but large amounts of C would probably be needed
    - Game Engine (with full GUI editor etc.): Doesn’t seem to go with the theme of the channel, and there’s already the PGE and CGE which seem to work better for tutorials because everything is defined by the code, with no extra pop ups.
    - Emulator: seems kinda likely especially an emulator for a “fantasy console” that never actually existed, but to use it you’d need to write assembly code, or a compiler, which is a whole other thing.
    - Compiler: Seems like it might be a little boring to most people (not me, probably not most people who watch this channel regularly), specifically new viewers, also might not really have a use...
    - Compiler + Emulator: Seems like at this point there’s to much for one project and what’s the point of not just using the PGE?
    - Minecraft clone: doesn’t seem like it would be as special as he makes it sound, and everyone else on RUclips’s already done it too.
    - Just a very fancy game: Again seems not “special”, also that would need community assets, which for obvious reasons are currently unavailable.
    - A Troll: Seems a little mean, and not in good taste in my opinion, also not April 1st, and nothing points to it being fake, that said the announcement does seem a little fishy, maybe just because of the slightly cheesyness of certain parts.
    - Mundane project: same as troll, not really that mean though, and I don’t think I’d mind that much.
    - Half Life three: no rights to the franchise.
    - Skynet: Does explain the robot arm videos... but where would he get the servers?
    - Zombie AI to force everyone to use a neural link into Minecraft(in collaboration with Elon): Most likely possibility.
    To be clear I’d find most these things awesome (well, everything above troll), also sorry about grammar and such written on Mobile at three AM like most comments.

    • @sweetberries4611
      @sweetberries4611 5 лет назад

      it will be hello world

    • @RaymondHulha
      @RaymondHulha 5 лет назад +1

      Very good guesses, thanks for the write up. I lean towards Game Engine with GUI Editor

    • @obinator9065
      @obinator9065 5 лет назад

      You saw some car physics code in the last video, so take the educated guess

    • @sam-n9v
      @sam-n9v 5 лет назад

      GTA Clone is my guess.

    • @cmanatlan
      @cmanatlan 5 лет назад

      @BEN1JEN
      - Roko's basilisk

  • @sebastianrengelclaros3558
    @sebastianrengelclaros3558 11 месяцев назад +1

    Such a master class, I searched for a NES emu, and ended up learning lots of interesting thing. Thanks!

  • @hanagomikusohana9118
    @hanagomikusohana9118 5 лет назад +3

    Congrats for the spectacular content. But, sorry i need write some correction for term "PIXEL". PPU Patent of the FAMICOM / NES (and similar primitive 80's video console computer) don't call "PIXEL" to picture information on VIDEO RAM or CARTRIDGE ROM.
    "The temporary memory stores the motion picture character
    data for a single scanning line by retrieving the motion
    picture attribute table memory "US4918434.pdf
    However, now we call Pixel to "picture element" from "raster image", the NES / FAMICON can not process "raster image". In particular on the NES / FAMICOM the RAM / ROM contain minimun "Picture information" for line Scanin process (to TV raster exploration), actually the image is a composition for CRT TV form all "Picture Characters gets from ROM/RAM".
    On other words, On modern PC, emulation, the image is really "Raster Image", the PC get ROM information an translate a RASTER VIDEO RAM (or similar GPU Texture information on RAM). If you compare whit PPU proccesing it's completely contrary.

  • @dedraks
    @dedraks Год назад +1

    It's the best explanation of hex and bitwise operations I ever seen. Many colege teatcher need to watch this video.

  • @burntt999
    @burntt999 4 года назад +16

    I scared my gf from busting out laughing(Lying in bed at night) when you hit the power button on the console

  • @patrickbateman455
    @patrickbateman455 5 лет назад +2

    I'm really happy that i fount this channel. Really nice content, good job!

  • @Cpt.Zenobia
    @Cpt.Zenobia 5 лет назад +9

    The 4 dislikes are from Nintendo HQ. next is an angry letter from their lawyers. although this is purely for educational proposes, so I think its all good.

    • @circuit10
      @circuit10 5 лет назад

      IT'S LEGAL

    • @valshaped
      @valshaped 5 лет назад +2

      Despite what Nintendo would have you believe, creating an emulator for their platforms is legal, so long as you don't use leaked internal documents, or copyrighted material (i.e. Nintendo's own NES emulator) to *create* it.

    • @circuit10
      @circuit10 5 лет назад

      @@AssopraCartuchos Discord?

    • @circuit10
      @circuit10 5 лет назад

      @@AssopraCartuchos Or disliked?

    • @valshaped
      @valshaped 5 лет назад +1

      @@circuit10 Probably Disney?

  • @jeangodecoster
    @jeangodecoster 4 года назад +1

    that's the fastest I've ever subscribed to a channel. Thank you sir, looking forward to become a better programmer through following this series, and most definitely, a better performance-aware programmer with what I anticipate to be a throng of performance optimisation patterns throughout the series

  • @monolyth421
    @monolyth421 5 лет назад +41

    NES emulators are cool, that's why I got a degree in Computer Engineering

  • @flyingsquirrel3271
    @flyingsquirrel3271 5 лет назад +2

    This is quality content. I liked and subscribed during the intro :D

    • @javidx9
      @javidx9  5 лет назад

      Thanks Flying Squirrel!

  • @davidbeckers6460
    @davidbeckers6460 5 лет назад +6

    Probably FizzBuzz in every language known to mankind

  • @dred05m61
    @dred05m61 5 лет назад +1

    I really like this video: it is basic and non-formal. Anyone can jump into programming without being a geek (like some RUclipsrs do). They sound weird, have awkward use of language and irritative behavior. By this video I felt comfortable, because this guy knows his stuff.

    • @javidx9
      @javidx9  5 лет назад +1

      Thanks dred05m, I used to teach lots of non native speaking students, and I learned to appreciate concise and well paced spoken language as a means of conveying information, but not patronizing at the same time. I try to apply that to all my videos.

    • @dred05m61
      @dred05m61 5 лет назад

      javidx9 You‘re a good teacher, nothing more I can add. A good teacher is somebody who can teach and can listen to his students.
      Sadly the UK is going to exit the EU, what do you think of this ?

  • @HA7DN
    @HA7DN 5 лет назад +109

    I like it, I love it, but I'm not gonna watch it.
    Why?
    Coz I'm plannig to do the same thing in the future, and I want to do it myself.

    • @stropheum
      @stropheum 5 лет назад +5

      Same, but i want to do gameboy so it's not really cheating

    • @Bunny99s
      @Bunny99s 5 лет назад +7

      @@stropheum The gameboy is much simpler. It's essentially a mix between an Intel 8080 and a Zilog Z80 and pretty much everything is memory mapped as far as I remember. So all I/O is done through memory read / write.
      Here's a nice overview of the instruction set of the LR35902 CPU
      www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html
      This wiki should contain all you need:
      gbdev.gg8.se/wiki/articles/Pan_Docs

    • @veorEL
      @veorEL 5 лет назад +2

      OK, fiiiine, I will build an emulator too, but also going to watch the series.

    • @HA7DN
      @HA7DN 5 лет назад

      @@veorEL CHEATER!

  • @jayadeepmir7496
    @jayadeepmir7496 5 лет назад

    I've always been an admirer of this channel. Teaching through real world application rather than just some random puzzles to solve. That may be fun too, but this is what really enrosses every learner.

  • @BlueJayBonsai
    @BlueJayBonsai 5 лет назад +6

    We’re ok with videos part 6, 7, 8, 9, A, B, C, D, E & F !😁👍🕹🎮

  • @xsk37chx
    @xsk37chx 5 лет назад +1

    Thanks for doing this. An emulator has been on my todo list for quite awhile. Really looking forward to the series!

  • @Janman81
    @Janman81 5 лет назад +5

    I have always wanted to know how this works. Thank you.

    • @javidx9
      @javidx9  5 лет назад +1

      Hi Janman, me too!

  • @mistervoldemort7540
    @mistervoldemort7540 5 лет назад +2

    We finally get to know what all this dedication was about. Great project!!

    • @javidx9
      @javidx9  5 лет назад +1

      lol thanks Voldemort!

  • @DocMacLovin
    @DocMacLovin 5 лет назад +9

    each and every coders wants to code his own editor ...

  • @benjohnson7610
    @benjohnson7610 5 лет назад +1

    I don't know who you are but I am subscribed now. I've always wondered how to make a proper emulator and never had the time to break down the code myself. I will definitely be following this series and I hope you can get this project done 100% as soon as possible.

  • @MattLoveday
    @MattLoveday 5 лет назад +13

    It's a P = NP Proof.

    • @darknightninja9773
      @darknightninja9773 5 лет назад +4

      Spoiler alert, n = 1 lmao

    • @mattt2684
      @mattt2684 5 лет назад

      @@darknightninja9773 He's talking about complexity theory and the complexity zoo BTW
      It's really interesting stuff though and I recommend you check it out 😀

    • @lekhapratap1652
      @lekhapratap1652 5 лет назад

      Darknight Ninja damn it Ninja.

    • @obinator9065
      @obinator9065 5 лет назад

      Darknight Ninja you damn engineer.

  • @JohnDlugosz
    @JohnDlugosz 5 лет назад

    25:00 Note that the arrangement of bit fields in the word is _implementation dependent_ . Maybe the first field listed goes in the least significant bits, maybe it goes in the most significant bits. What I do now-a-days is include a static_assert that the whole word value is what I expect from a list of fields. However, thought C++17 you can't cast or type-pun the memory location to view as a whole word, so I used a test function called at run-time. In C++20, you will be able to write this test as a constant expression and thus use a static_assert.

  • @12ryudragon
    @12ryudragon 5 лет назад +50

    You were playing Rogue Legacy at the beginning, didn´t you? Nice

    • @javidx9
      @javidx9  5 лет назад +13

      I was! its a great game, but man I suck at it XD

    • @ruadeil_zabelin
      @ruadeil_zabelin 5 лет назад +1

      @@javidx9 Ye I wish I was better at it. I really want to get far in it but I die before I get a chance to do much of anything :(

    • @lionelt.9124
      @lionelt.9124 5 лет назад +2

      @@ruadeil_zabelin We all start off that way. After a while it'll take you more than half an hour to die. Your hands will react before you're aware of what is going on. There is a zen to it learn from hours of experience.

    • @ruadeil_zabelin
      @ruadeil_zabelin 5 лет назад +1

      @@lionelt.9124 That's true.. i'm not sure if i want to invest that time in Rogue legacy. If i had to pick then i'd pick kaizo mario.. like Grand poo world 2

  • @tristacho5472
    @tristacho5472 4 года назад

    I wanted to watch this series when it came out but I kept getting distracted, and now that I've decided to work on my own gameboy emulator and am looking for info on emulation in general this video series is clutch. Thank you for taking the time to go into detail on everything and taking us along for the project

  • @LaughDonor
    @LaughDonor 5 лет назад +6

    The exclusive-or (XOR) symbol is more commonly referred to with a 'caret', not a 'hat' character (^). 22:36

  • @mfahru4767
    @mfahru4767 5 лет назад +1

    just found out your channel! It's really good since most of us young programmer will be just starting out with either javascript or python. So no "low level" stuff like memory management, pixel processing, etc etc that you keep focusing on. Really interesting to see how it goes, keep. making videos :)

  • @InspireTheory
    @InspireTheory 5 лет назад +8

    I'm waiting for the CommandLine and Conquer! =)

    • @javidx9
      @javidx9  5 лет назад +2

      lol, thats been on the "to video" list for a while... one day... one day....

  • @GodofWar1515
    @GodofWar1515 5 лет назад +1

    A great video David. Very great video. And because I actually did some studying on Bitwise operations and masking for understanding code in a recent Tetris project. I was able to follow along in your video. Enabling me to learn more than before. Thanks again!

  • @IDE_Busmaster
    @IDE_Busmaster 5 лет назад +5

    I thought I was watching a skillspecs video in the background in the beginning lmao

  • @dsasilentsound
    @dsasilentsound 5 лет назад +1

    Really looking forward to this series! Great work so far.