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
I'm subscribed to hundreds of channels on youtube and I have to say your one of the most underrated channels on UA-cam. Your channel is truly a UA-cam Gem!
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
@@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.
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.
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!
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
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.
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 :)
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."
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
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!
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.
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! :)
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.
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.
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.
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.
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!
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.
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
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!
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!
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! :)
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.
@@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
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
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.
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.
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!
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!
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
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 UA-cam’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.
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
I was just starting to do research on my own nes emulator, went to UA-cam, and MY MAN! Javid to the X9! Hitting me with the deets just one week earlier. long time subscriber, love your channel. thanks g!
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.
@@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.
@@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
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 UA-cam channel or blog to share the process too, but in spanish.
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*
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.
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
@@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
Accidentally happened here. Love this approach you're taking and with such a beloved asset like the NES. Looking forward to the rest of this set immensely. Thanks.
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.
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.
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.
@@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 😀
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 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.
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!
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
Thank you for premiere. What’s the name of the game or genre?
@@serge-otro i think that's secret to keep people hyped
I'm subscribed to hundreds of channels on youtube and I have to say your one of the most underrated channels on UA-cam. Your channel is truly a UA-cam Gem!
I came for the NES emulator. I stayed for the best explanation of HEX and bitwise operations ever.
Seriously
So true!
The bit masking explanation was a thing of beauty.
You are right even in my cs degree I got explanation like that
Me too
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
36:45 - hurt ears
You could have zero-padded the first 5 items!!! Lol, JK. Thanks for the TOC.
Doing god’s work!
Intro is the Best
"The Picture Processing Unit, also known as PPU, sometimes called the Pixel Processing Unit... by me... accidentally."
Comedy gold right there
Im bound to slip up, and then people will nag in the comments XD
May as well call it pixel processor 😂 is it not just a basic GPU?
@@dotslashsatan
because the PPU assemble pictures
and GPU made operations for rendering pictures
@@iyadlamouri6572 so it’s the same?
A sign of a good teacher is engaging someone who already knows the topic.
...Subscribed.
Actually it's the opposite. A good teacher engages someone who doesn't know the topic.
@@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.
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
That was the most intense "fetching a thing out of the attic" sequence
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.
So basically they taught you like Mr. Miyagi... teach you the techniques without explaining what it’s for until later.
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!
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
All NES awesomeness aside this was a really great explanation of bitwise operations. Really helpful thanks
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.
You're quite right, this is a project that "I" can be proud of, a rare thing as you get on in life XD
This is the second video I watch from this channel... damn, you're one HELL of a CODER. Subscribed++ !!
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 :)
Thanks buddy! 😊
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.
I've been trying to build an NES emulator for a long time, I'm hyped for more videos!!!!
Its certainly not been easy, but loads of fun. Thanks Tony!
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!!
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."
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
Old?? Its like 6 months old XD Thanks buddy! XD
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!
Thanks metalsquid, I dont know if i can cover every last detail on UA-cam, but I hope its enough to give people a head start
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.
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! :)
Hey Uniday Studio, thanks!
@@javidx9 hey man was the metal track at the beggining
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.
Pointers and bitwise operations are essential for low level coding in C (drivers and such) not to mention baremetal coding.
Thanks Mateus, yeah, bitwise is going to be really important for this series.
As someone who is learning to code for the NES, your emulator series is quite fun and helpful to watch
Very awesome topic.
This summer I made a Z80 emulator, watching this will be surely fun!
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.
This is a fantastic tutorial for anything bitwise (not just for NES applications), should help in my upcoming interviews. Subscribed.
Cheers Varun!
this channel is every nerd/programmer dream , thank you for the content
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.
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.
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!
WOW, such an exciting series. One of my first loves, NES.
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.
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
Hi Fred, Im a great believer in constraints breeding creativity. Imagine what people could do with modern hardware if the really exploited it...
@@javidx9 those were the simple days
bottom text
Well explained about the bitwise operation, thank you
Thanks Jason!
Hi David. I can't wait until next episode.
Good stuff as always.
Regards.
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!
Thanks for sharing and providing us with free education!
My pleasure EEinJ!
This must be the best bitwise operations explanation I've seen. Very concise and easy to follow!
2:15 holy cow, I remember doing this, it actually worked sometimes!
When he didn't try it a few seconds earlier I was like "dude just blow it and it will work!" hahaha
I am genuinely intrigued by the way you worked your way around the legal thingie lol. great effort btw. thank you
This is going to be an amazing series, I can feel it in mah bones!
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!
I'm HYPED , really looking forward to this :))))
Thanks NTTN!
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! :)
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.
Thank you for the video as always. Hope to see more from this series.
I have so far seen 7 youtube channels start this journey and not one has finished it. I wish you all the best :)
Hi Dave and thanks! The emulator is finished, I just need to make the videos.
@@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
you would make a damn good teacher. can't wait for next parts
Cheers yosoydead!
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
Thanks Davo! I love the NES!
"hello let's make a nes emulator" beautiful introduction!
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
Aunque me he perdido en varios puntos, los conceptos se entienden claramente. Esperando el siguiente vídeo.
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.
I like how casually he mentions completing Shadowgate. Totally gave up after not finding that key to the first locked door.
Lol, full disclosure, it took me and my dad about 3 years of trial and error to beat that game XD
@@javidx9 Rest assured, sir, you're still awesome! We're fortunate to have you UA-cam.
God, where have you been all my life?! Thank you very, very much for this series! :)
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.
Doesn't the standard treat char-type specifically, allowing aliased access through it?
@@ZeroViruzz the aliasing rules allow access through expressions of char type, but not vice versa
Isn't that the DRY principal?
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!
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!
me: "oh building an emulator would be cool!"
me 20 minutes in: o_O
Bro, you haven't even seen PPU right now :' ( I am suffering with PPU right now
My plan is to get first the 6502 core stable and run all test roms. I first go without mapper
hahaha me reight nowq!!!!!
@@joshmeijers9667 I think you got your graphics tiles messed up there
39:18 "The NES is a fascinating machine, and I love it to BITS " Nice pun there!
Looking forward to watching this series!
Such a phenomenal learning resource! Thank you!
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
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 UA-cam’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.
it will be hello world
Very good guesses, thanks for the write up. I lean towards Game Engine with GUI Editor
You saw some car physics code in the last video, so take the educated guess
GTA Clone is my guess.
@BEN1JEN
- Roko's basilisk
Absolutely phenomenal! You're a wonderful teacher and the pacing is superb. I'm very much looking forward to the rest of the series.
wow those explanations of the basics were amazing! thanks :)
Can't wait for the rest of the series! Seems fun...
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
Ah, the sweet nostalgia of blowing into a dysfunctional cartridge
I was just starting to do research on my own nes emulator, went to UA-cam, and MY MAN! Javid to the X9! Hitting me with the deets just one week earlier. long time subscriber, love your channel. thanks g!
lol cheers Jose to the F XD
NES emulators are cool, that's why I got a degree in Computer Engineering
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.
Cheers Dan, I will!
You were playing Rogue Legacy at the beginning, didn´t you? Nice
I was! its a great game, but man I suck at it XD
@@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 :(
@@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.
@@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
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 UA-cam channel or blog to share the process too, but in spanish.
Sounds good Diego, do it!
hahaha! blowing the cartridge! so many memories, but you forgot the last process...
Hit the console!!! , this worked for me everytime, lol!
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*
I followed this video taking notes with pen & paper. I felt like being at Uni, thanks for this work! Keep it going!
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.
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
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.
Same, but i want to do gameboy so it's not really cheating
@@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
OK, fiiiine, I will build an emulator too, but also going to watch the series.
@@veorEL CHEATER!
Accidentally happened here. Love this approach you're taking and with such a beloved asset like the NES. Looking forward to the rest of this set immensely. Thanks.
We’re ok with videos part 6, 7, 8, 9, A, B, C, D, E & F !😁👍🕹🎮
I'm looking forward to the rest of the series! This was a great introduction
Thanks Matthew!
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.
IT'S LEGAL
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.
@@AssopraCartuchos Discord?
@@AssopraCartuchos Or disliked?
@@circuit10 Probably Disney?
infinite respect for the rogue legacy sounds in the begining
I have always wanted to know how this works. Thank you.
Hi Janman, me too!
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.
each and every coders wants to code his own editor ...
What a guy, such complexities broken down to bytesize pieces to understand what is going on. Seriously some awesome content.
Probably FizzBuzz in every language known to mankind
Such a master class, I searched for a NES emu, and ended up learning lots of interesting thing. Thanks!
I'm waiting for the CommandLine and Conquer! =)
lol, thats been on the "to video" list for a while... one day... one day....
I'm really happy that i fount this channel. Really nice content, good job!
I thought I was watching a skillspecs video in the background in the beginning lmao
It's the best explanation of hex and bitwise operations I ever seen. Many colege teatcher need to watch this video.
I scared my gf from busting out laughing(Lying in bed at night) when you hit the power button on the console
I've just started to watch this series of videos, an it's an invaluable job you provided to all of us.
Thanks for sharing this kind of content.
It's a P = NP Proof.
Spoiler alert, n = 1 lmao
@@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 😀
Darknight Ninja damn it Ninja.
Darknight Ninja you damn engineer.
Thanks for doing this. An emulator has been on my todo list for quite awhile. Really looking forward to the series!
what about making handheld ascii game console for $9.99?
I do need a hardware project for next year...
@@javidx9Making a game console!
We finally get to know what all this dedication was about. Great project!!
lol thanks Voldemort!
Teenage Mutant HERO Turtles??? Are they not allowed to use the word "Ninja" there or something?
yes
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!!
Thank you Filipe! Good to hear you've found things useful!
@@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.
The exclusive-or (XOR) symbol is more commonly referred to with a 'caret', not a 'hat' character (^). 22:36
A birthday hat :3
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!
Thanks Lucas!
Amazing content, thanks for sharing. I'm a master system guy, but NES porn is always welcome lol
You're an incredible teacher. I came here out of curiosity, but I subscribed and stayed because of your awesome teaching skills.