Another tip when laying out a PCB. Before you order the board, print it out on paper and lay any components you have on the pads to see if they match. I do this with all my boards. Of course Murphy's gonna get you anyway on something stupid, but at least it'll usually be something you can rework at home. Excellent work on the project, I've very much enjoyed the videos :) Cheers
THIS! just finished my first PCB project. What a surprise when I got the PCB back and my main IC section was way too small! So, yes, definitely print out your PCB and lay your parts on them. I do that now and it has saved me from many more problems.
Yup, would 100% suggest this too, really helps when sending off to china, not so bad if you fabricate yourself but still stops you wasting time. *has flashbacks to the 5 versions of a Dual Flat No leads part*
This is one of the greatest channels that never uploads. And good on you for it too! Your videos are always such high quality. Unlike most other channels on UA-cam where there is this _expectation_ of content, you're in a lucky spot where you can upload whatever the heck you've been toying with in your mind lately and it's a lovely surprise that treats your audience to some unexpected good times. ...Plus you're a low-key super-genius.
Yeah, if he knew we'd stick around that long, he should have just gone on some more about it! Give us 2 hours of overly detailed circuit troubleshooting and jury-rigging! XD
Im in 4th year electronics engineering and some of my collegues look at me like im some sort of genius when I show them my electronic or embedded projects but damn man.. It hurts my mind to see how smart you are
That is beautiful work. That part about reverse emulating the CPU to make the audio better made me realize you are nearly to the point where the sole function of the Nintendo itself is to render video and audio from a hilariously convoluted set of inputs. I.e., it's basically a set of D/A converters and hardware that sends signal to a TV.
Yeah, but the point is, it's a GREAT party trick to pull with anyone who has an old NES lying around (AKA, fellow geeks. XD) I mean, who WOULDN'T be confused/amazed if you popped in an old zelda or mario cartridge, then booted up Windows (Or, well, Linux in this case) or a far more modern game that can run on a Pi.
I'm more curious to know if you can inject/manipulate code in the cpu itself.. this could make the Raspberry Pie a software SuperFX-ish expansion to enhance native-run NES code/homebrew :)
Thank you for including both your set-backs and breakthroughs in your video--it helps other folks like me feel empowered to push through on our own ambitious projects. I wouldn't have guessed you'd encountered so many problems from the presentation in your previous video, so if you can still get a great result than surely we'll be able to push through as well!
This is an interesting idea. I have also suggested to him checking out baremetal Raspberry Pi programming. I have even posted the list of links showing what retroprojects are possible when you program the RPi in this way, but the post with the links did not show up (probably has to be accepted manually by suckerpinch)...
Yeah, good call. I was thinking a RTOS like QNX to fix the glitching, but I was forgetting about the existence of the Linux RT kernel. Gotta dig more into that one of these days.
It doesn't need to be RTOS, there are just a few settings that you can change to make it more amenable to real-time processing ( sched_rt_period_us and sched_rt_runtime_us ) and sched_setscheduler to set it to SCHED_FIFO. It may also help to lock the pages in memory so they don't get swapped out.
The actual method of the hack is not very interesting on the switch I'll agree with that but it's still interesting to look at and use all the homebrews and ports!
I wouldn't this consider a hack, not like mordern consoles and privilege escalation attacks as they are different ball game completely this is simply electrical engineering essentially bus stuffing the NES kinda by being able to feed data essentially every clock cycle, in a way he is just dma'ing to the ppu using the raspi which bypassed normal hardware limitations set by stock console hardware, you can access any info about the NES down to the Mobo schematics (and yes you can legally make reproduction NES Mobo from them as hardware patents are expired which is what the clone makers should actually do), it's less of a hack(not really a hack but someone after 30 years took time to research and build essentially a dsp expansion cartridge like the super fx on snes )and more like adding an expansion like ram or graphics card on a pc, I am doing something like this with the 2600, using 6502(no not 6507) with additional 64k ram, ay-3-8910 and atmega8515(or 644)
IHatePuns godel Escher and bach is an awesome book. I read it like probably 10 years ago. so worth the time it took to read. would highly recommend reading it all the way through. 😎
When you showed the image of your neighbors old PCs I shed a tear! I had the futuristic looking Compaq Presario growing up and that was my entrance to things tech and computing! Loved that computer and to see it again, after forgetting all about it for roughly 20 years brought it all back! Great Vids!
Thank you for making these videos! They're always a blast to watch and I'm consistently amazed by the breadth of knowledge you have when it comes to computer science!
How have I missed your channel for so long? Absolutely brilliant content that inspires me to want to perform similar projects myself. Thanks for the detailed explanation and walkthrough of your project.
40 min videos? - normally No...but watching you condense months of learning into a 40 minute adventure - Yes! Thanks for being humble enough to share your misunderstandings too. That's where real learning takes place. Great Video.
I know this is mega old by now. But your progression through the electrical aspects of this is great. Everything you describe is what every new EE goes through. Why don't these transistors work like I think, why can't I drive this, what is TTL, etc is great! It's very impressive that your persevered. Many of these problems can be super frustrating and difficult to figure out. As I'm sure a million nerds already (jokingly) pointed out, use less vias!
Here's a thing I encountered with a raspberry pi, I did a project thing... With a pi, and it worked great on my desk, but when I mounted it inside a cabinet with control gear (contactors) it'd false trigger, the RF noise from the contactors coming in and out and the sparks therein were enough to trigger the inputs. Now yea there's ways to stop that in hardware, and the debounce thing... I tried those and they were kinda lackluster, eventually I had to fix it in code, the contactor spikes were very very short, so I ignored short triggers. I guess this is testament to why you should use industrially hardened and shielded PLC controllers, but they ain't cheap and for a thing you're not sure is gonna work or not... Eh, big investment. Ultimately I ended up using optocouplers, debounce (even though they shouldn't bounce) and ignored everything less than half a second long. That's hacky, maybe things like that are supposed to be... Low level programming itself is really hacky and janky anyway... Regardless, how do you harden a pi against this? Didn't just happen to the pi either, I had a digital plug in timer... That did it too, and it was just in the same room as some contactors not in their cabinet it was in its own... Seemingly their RF spike is so harsh that just being in the same room is enough, and this thing isn't an Ali express or an amazon thing... But it would still false trigger. Tl;dr: contactors are noisy as hell and they will trigger micro controllers, and I don't really know how to remove that entirely and in an elegant way. Edit: also, I wonder if it's possible to take the output from a genesis/megadrive, and force it through the NES, thus kinda... Playing sonic on a NES.
I have no idea about many things you were talking about but I found your thinking process fascinating. Really cool video about showing how you thouught about this project exactly.
This was amazing. I really appreciate you going through the simple mistakes and misconceptions you had. As a fellow software guy (I'm assuming) and hardware dabbler, it's really nice to see your process. I never really quite groked the tri-state logic thing until this, even though I've designed and fabbed a board or two using KiCad. Also you schematic looks so much nicer than my first one :)
Reminds me of all those years ago when I would void the warranty on everything electronic I've ever owned which all of us hardware geeks did. My first FM pocket radio was source for my first transistors harvested to use on my first breadboard which still had fahnstock clips instead of binding posts. My first stereo I added digital frequency display to the analog dial attaching the LED board to the pointer so it moved with the dial. Oh, the memories... Also great explanation and animation of transistor(s). Transistor theory and application isn't always understood the same way by everyone, you have to get your hands on them and build and see results to get it to click.
I LOVED seeing how you pulled off this project. I must say, though, that every time you upload something I have to go back and rewatch a few of your videos to remember what got me to subscribe. XD I hope you upload more often in the future; you make great, interesting content.
You are a Genius man, we need more enhancements and more knowledge from you, Please keep working in the vblank solution and the sound. we need this to learn more about your work.
Very, very cool! A couple points though: - Both the NES and SNES use the SAME chips in the controllers, just the SNES chains a second chip per controller to allow for >8 bits. The bit order is designed in. It would be possible to make the NES read a SNES controller using a simple modified plug and having the routine read all 12 valid bits (4 unused, 16 total). - The NES 5v regulation uses a standard linear regulator (7805?) and if you are truly pulling 1A with the pi alone then you are past its specification. i.e. You may end up frying the NES and your pi. Consider supplemental 5v directly into your custom cart. (I would measure actual power draw first.) -Greg
I wrote a program in Java a while ago that converts any picture into a ZX Spectrum picture. The ZX Spectrum was a bit more restrained, as the NES but it had the same concept, producing monochrome and colour clashy graphics. I used the same techniques as you did pretty well to render the picture, lots of fun to write but it was a devil to debug. I thought I was doing alright, you know, gave myself a pat on the back. Great way to spend a weekend.... then I watched this and wow, yeah... got some work to do. Good one man!
dude what you have done here is fucking amazing. I love the fact that you could actually run an snes game on an nes albeit with the help of a rasberry pie and your genius brain but it would seem like you could do so much more with this. I would love to see you finish this project. You really should it would get much more attention if you kept at it. I am sure there are a great deal of people out there that would even pay for something like this so they could tinker with running other things on an nes. You should finish this for the NES and then move onto the SNES. Just being able to directly control the consoles with a rasberry pie cart is just really cool.
As someone who has an extremely brief history in going to classes in electronics having to do with small circuit boards, this video was very enlightening. It also reminds me of certain video demonstrations in Tool Assisted Speedruns (TAS) done for various Games Done Quick (GDQ) charity marathons. In many of those demonstrations, normal expectations are far exceeded by what can be achieved when you load inputs from outside of a normal game board or controller.
This has been a really interesting watch. I should pick up that "write down good ideas" thing. It sounds like a really good way to figure out new projects to do.
I'm really happy that you discussed a little bit about reverse emulating the NES sound hardware. Your video actually gave me ideas to try to figure out how to somehow make the NES do some kind of frequency modulation. It might not be possible, but you might be able to modulate the pulsewidth waveforms really quickly to get something similar to phase modulation. Like you said earlier, the NES does allow for small samples with a low bitrate so you can just upload a bunch of samples and make the NES play them. It would be interesting to figure out if you could make the NES hardware do things like Fast-Fourier Transforms so you could do vocoder effects. I do know that some Famicom games allowed for additional sound hardware within a game's ROM to allow for things like FM synthesis and audio effects. This is the case for the Japanese release of Castlevania III ua-cam.com/video/h2JWRJZwvJo/v-deo.html. I think the disk system allowed for extra sound capabilities as well like with The Legend of Zelda: ua-cam.com/video/tVumJ-z1F9E/v-deo.html. I don't know if the American NES allows for additional sound hardware like that, but it might be worth looking into! Anyway, great content as always! Edit: As I was writing this, I was listening to the flute example from the NES version of The Legend of Zelda, which is clearly doing a vibrato effect. If that's being controlled by one of the other waveforms (or an LFO I had no idea existed on the NES), then you should absolutely be able to to FM synthesis on an NES.
as a programmer who has dabbled with hardware, it helps immensely to have a fun, compelling project. that way when things inevitably go sideways, or just don't work at all, you retain motivation to dig into documentation, wikipedia, whatever it takes to "get something working."
There are NES games, such as a 3d polygonal space game (yes for the nes) that achieves 3d by doing what you said at the end of the video, computing data off site (on the cartridge chips) and simply feeding that "prerendered" data into the nes (as a continually shifting pallet and/or sprite, which is actually a "time lapsed" drawn graphic, not just a pallet or sprite). The fact that you arrived at the pallet idea (though don't forget sprites) on your own is pretty impressive! (Then again everything you do is, so no surprise there!)
Damn. I think this is the first project of yours I've seen and it was certainly very interesting. It'll be upsetting when I no longer have the time to watch hours of UA-cam videos, but I might as well make the most if it while I can and to that end I'm going to check out your back catalogue now. Thanks dude!
Good times. Reminds me of when I got the N64 for Christmas but didn't know it lacked an RF adapter. I was crestfallen. I couldn't play it on my old TV. Then I got the bright idea to crack open my old NES and bridge the NES's RF and RCA outputs and used it as a pass through for the N64
About getting sound to work, some tool assisted speedrunners managed to get pretty good audio quality entirely through the controller ports and even video with a SNES with the same method. Look up Tasblock 2017 if you want to see it.
On the SNES, all graphics that you want to display must be copied by way of the CPU (or rather, its DMA engine) to the internal video RAM (VRAM) of the console. The PPUs have no direct connection to the cartridge slot so you basically can't feed data in the same way. Moreover, you can only access the SNES's VRAM when the PPUs aren't displaying anything, so only during blanking or when you force the display off. That means you have very limited bandwidth to copy image data to the VRAM for display, around 6kBytes per frame (unless you want to letterbox by forcing the display off for parts of the screen). That's enough for the Super Gameboy to stream the Gameboy picture at 60 frames per second but not much more. MSU1 video streaming demos exist but they are typically lacking either screen real estate, frame rate, or number of colors. So in terms of how this works the SNES could actually do less than the NES here.
wow wow wow, this was an awesome project to see! Thankfully a commenter below linked to the project files, but those would be great to throw in the video descriptions as well for people to access. :)
Fun thing about 3.3V CMOS and 5V TTL is that they *are* directly compatible, usually both ways (e.g. 74ALS series outputs 3V as "1", for others I'd use a small series resistor, say 33-100Ω). Yes, you can directly drive any TTL chip using 3.3V CMOS signal. If you need to convert 3.3V CMOS to 5V CMOS, you could use 74HCT chip. To do it very fast you could go with 74ACT / 74ABT series. Tried it, works, drives things very strong too (and adds ringing to long wires).
This is one of the worst most amazing things I've ever seen. I always thought executing arbitrary code on Super Mario World to play Super Mario Bros. was the worst, but you've achieved new fantastic grounds! I just love all your stuff.
I really envy your skills in electronics and low level programming, I've always wanted to hone mine, but never got the time to do so, thus I still sit at the very basics I learned in college.
this is good stuff man. Yeah, I watched the 40 mins all the way through. Mainstream UA-cam will obviously have different videos in store but it doesn't mean there's no room for long, technical, quality content. Keep it up!
Your videos are the best on the internet. I can't wait for the next one. I always watch them multiple times, especially if they are about cycles? Please make more videos faster, If I had money I would want to give it to you to help you fund resistors and antique ROM cartridges.
The first thought that went through my mind when you mentioned using a microcontroller was using an arduino as a frame buffer and a raspberry py's video out to fill the arduino.
Nice video for students or classrooms. Admire your work and watched all the 44 minutes of the video, and I'm just an a enthusiast. First time I've seen a board customization. Didn't know it was "that easy" to do a custom board 🙂🙂
Pls let me know when you get onto sound. My goodness. You have blown my mind sir. I'm gonna get my head back in the code and electronics book, you have reignited my dwindling Hobbyist bug.
40 minute videos are the one...because there is a 1.5 x button for those who talk too slow or pack too little in. you do neither...well for a electronics flunk like me
I think I've watched every suckerpinch video ever made and I have never been disapointed, other than the fact that there aren't more of them. But I know that's part of what makes them great.
I, in fact, love larger videos. And much more to see the projects being made rather than to just see the final product because then I can learn how to avoid issues the creator found himself in.
I was wondering if this would be possible a couple years back but I didnt had a knowlage to do it and now here I am. I though it would look better but its more than I though it would be capable of. Great job man
This experiment brings to mind the philosophical conundrum of determining at what point the NES is still an NES as you augment and supplement more components and more powerful hardware. Damn fascinating to watch, though.
I like to think that your concept of reverse emulating the nintendo in this way reminds me of what is actually done with the superFX chip in the super nintendo. You're adding supplemental processing to the current system.
Another tip when laying out a PCB. Before you order the board, print it out on paper and lay any components you have on the pads to see if they match. I do this with all my boards. Of course Murphy's gonna get you anyway on something stupid, but at least it'll usually be something you can rework at home. Excellent work on the project, I've very much enjoyed the videos :) Cheers
THIS! just finished my first PCB project. What a surprise when I got the PCB back and my main IC section was way too small! So, yes, definitely print out your PCB and lay your parts on them. I do that now and it has saved me from many more problems.
Yup, would 100% suggest this too, really helps when sending off to china, not so bad if you fabricate yourself but still stops you wasting time. *has flashbacks to the 5 versions of a Dual Flat No leads part*
Wow this is such a good tip. Thank you!
1:1 fit checks are essential
Another way is to use the 3D view (available in KiCad, Altium, etc).
This is one of the greatest channels that never uploads.
And good on you for it too! Your videos are always such high quality. Unlike most other channels on UA-cam where there is this _expectation_ of content, you're in a lucky spot where you can upload whatever the heck you've been toying with in your mind lately and it's a lovely surprise that treats your audience to some unexpected good times.
...Plus you're a low-key super-genius.
One of the other greats is Michael Reeves.
@@zdelrod829 michael reeves is not compatible lmao
@@zdelrod829 michael is funny i’ll give him that but there is no way he could do anything even nearly this complex
43:03
> Except maybe you.
Thanks for making and sharing this! I love these.
Yeah, if he knew we'd stick around that long, he should have just gone on some more about it! Give us 2 hours of overly detailed circuit troubleshooting and jury-rigging! XD
I would have watched more
Yes pleaaaase
"please fix my mistakes" haha
I've actually watched the whole thing twice now.
Im in 4th year electronics engineering and some of my collegues look at me like im some sort of genius when I show them my electronic or embedded projects but damn man.. It hurts my mind to see how smart you are
That is beautiful work. That part about reverse emulating the CPU to make the audio better made me realize you are nearly to the point where the sole function of the Nintendo itself is to render video and audio from a hilariously convoluted set of inputs. I.e., it's basically a set of D/A converters and hardware that sends signal to a TV.
Yeah, but the point is, it's a GREAT party trick to pull with anyone who has an old NES lying around (AKA, fellow geeks. XD) I mean, who WOULDN'T be confused/amazed if you popped in an old zelda or mario cartridge, then booted up Windows (Or, well, Linux in this case) or a far more modern game that can run on a Pi.
Pop in a NES zelda cartridge and be playing Ocarina Of Time
BrickOfDarkness Nah mate, get a Wii U emulator and play Breath of the Wild.
"But can it run _Crysis_ ?"
I'm more curious to know if you can inject/manipulate code in the cpu itself.. this could make the Raspberry Pie a software SuperFX-ish expansion to enhance native-run NES code/homebrew :)
This is kinda the most amazing channel on UA-cam. Really hope you’re gonna get a bigger audience
this is really true
"Harder Drive" and "GradIEEEnt half decent" are absolute gems
I would totally watch more 40mins of this.
Thank you for including both your set-backs and breakthroughs in your video--it helps other folks like me feel empowered to push through on our own ambitious projects. I wouldn't have guessed you'd encountered so many problems from the presentation in your previous video, so if you can still get a great result than surely we'll be able to push through as well!
I'm going back and rewatching all of your videos. They are awesome man, I always look forward to what you are going to do next.
That's great! Thanks :)
Have you considered using the linux real-time kernel? It might help with the graphics glitches.
This is an interesting idea. I have also suggested to him checking out baremetal Raspberry Pi programming.
I have even posted the list of links showing what retroprojects are possible when you program the RPi in this way, but the post with the links did not show up (probably has to be accepted manually by suckerpinch)...
Yeah, good call. I was thinking a RTOS like QNX to fix the glitching, but I was forgetting about the existence of the Linux RT kernel. Gotta dig more into that one of these days.
It doesn't need to be RTOS, there are just a few settings that you can change to make it more amenable to real-time processing ( sched_rt_period_us and sched_rt_runtime_us ) and sched_setscheduler to set it to SCHED_FIFO. It may also help to lock the pages in memory so they don't get swapped out.
Nintendo switch hacked: not so intresting to watch
Nes hacked: that is what I am talking about!
Nice work man! : )
The actual method of the hack is not very interesting on the switch I'll agree with that but it's still interesting to look at and use all the homebrews and ports!
I wouldn't this consider a hack, not like mordern consoles and privilege escalation attacks as they are different ball game completely this is simply electrical engineering essentially bus stuffing the NES kinda by being able to feed data essentially every clock cycle, in a way he is just dma'ing to the ppu using the raspi which bypassed normal hardware limitations set by stock console hardware, you can access any info about the NES down to the Mobo schematics (and yes you can legally make reproduction NES Mobo from them as hardware patents are expired which is what the clone makers should actually do), it's less of a hack(not really a hack but someone after 30 years took time to research and build essentially a dsp expansion cartridge like the super fx on snes )and more like adding an expansion like ram or graphics card on a pc, I am doing something like this with the 2600, using 6502(no not 6507) with additional 64k ram, ay-3-8910 and atmega8515(or 644)
This is awesome. I love these deep dives into your projects.
You bet your bottom dollar that I watched this to the end. Every second. I want the rest of your great explanations. This is so fun
I always look forward to an upload from you. Thanks for sharing.
Thanks for watching! :)
Your joke reminded me of how I never quite made it through Gödel Escher Bach. I also found your take on human augmentation to be well articulated!
Gödel Escher Bach: i'll still finish it, some day! 😰
IHatePuns godel Escher and bach is an awesome book. I read it like probably 10 years ago. so worth the time it took to read. would highly recommend reading it all the way through. 😎
Be careful with finishing GEB
* SPOILER ALERT *
On the last page The Author sends you back to the first page in the most devious way.
This one of the best binging I've ever had. These videos are amazing.
When you showed the image of your neighbors old PCs I shed a tear! I had the futuristic looking Compaq Presario growing up and that was my entrance to things tech and computing! Loved that computer and to see it again, after forgetting all about it for roughly 20 years brought it all back! Great Vids!
I would absolutely love to see a part two of reverse emulation and thus turn the Nintendo into a husk.
Thank you for making these videos! They're always a blast to watch and I'm consistently amazed by the breadth of knowledge you have when it comes to computer science!
How have I missed your channel for so long? Absolutely brilliant content that inspires me to want to perform similar projects myself. Thanks for the detailed explanation and walkthrough of your project.
40 min videos? - normally No...but watching you condense months of learning into a 40 minute adventure - Yes! Thanks for being humble enough to share your misunderstandings too. That's where real learning takes place. Great Video.
wow watching that first vid I never would have guessed you were winging as hard as you were. awesome stuff man
I know this is mega old by now. But your progression through the electrical aspects of this is great. Everything you describe is what every new EE goes through. Why don't these transistors work like I think, why can't I drive this, what is TTL, etc is great! It's very impressive that your persevered. Many of these problems can be super frustrating and difficult to figure out. As I'm sure a million nerds already (jokingly) pointed out, use less vias!
I am both terrified and comforted by the fact that people exist out there with this level of patience and skill.
Here's a thing I encountered with a raspberry pi, I did a project thing... With a pi, and it worked great on my desk, but when I mounted it inside a cabinet with control gear (contactors) it'd false trigger, the RF noise from the contactors coming in and out and the sparks therein were enough to trigger the inputs.
Now yea there's ways to stop that in hardware, and the debounce thing... I tried those and they were kinda lackluster, eventually I had to fix it in code, the contactor spikes were very very short, so I ignored short triggers.
I guess this is testament to why you should use industrially hardened and shielded PLC controllers, but they ain't cheap and for a thing you're not sure is gonna work or not... Eh, big investment.
Ultimately I ended up using optocouplers, debounce (even though they shouldn't bounce) and ignored everything less than half a second long.
That's hacky, maybe things like that are supposed to be... Low level programming itself is really hacky and janky anyway...
Regardless, how do you harden a pi against this? Didn't just happen to the pi either, I had a digital plug in timer... That did it too, and it was just in the same room as some contactors not in their cabinet it was in its own... Seemingly their RF spike is so harsh that just being in the same room is enough, and this thing isn't an Ali express or an amazon thing... But it would still false trigger.
Tl;dr: contactors are noisy as hell and they will trigger micro controllers, and I don't really know how to remove that entirely and in an elegant way.
Edit: also, I wonder if it's possible to take the output from a genesis/megadrive, and force it through the NES, thus kinda... Playing sonic on a NES.
I have no idea about many things you were talking about but I found your thinking process fascinating. Really cool video about showing how you thouught about this project exactly.
This was amazing. I really appreciate you going through the simple mistakes and misconceptions you had. As a fellow software guy (I'm assuming) and hardware dabbler, it's really nice to see your process. I never really quite groked the tri-state logic thing until this, even though I've designed and fabbed a board or two using KiCad. Also you schematic looks so much nicer than my first one :)
Reminds me of all those years ago when I would void the warranty on everything electronic I've ever owned which all of us hardware geeks did. My first FM pocket radio was source for my first transistors harvested to use on my first breadboard which still had fahnstock clips instead of binding posts. My first stereo I added digital frequency display to the analog dial attaching the LED board to the pointer so it moved with the dial. Oh, the memories... Also great explanation and animation of transistor(s). Transistor theory and application isn't always understood the same way by everyone, you have to get your hands on them and build and see results to get it to click.
your content is always wonderful. I always love it. never change. keep it up :)
very intresting. almost like a takeover of an nes.
Almost 3 years later I came to re-watch both videos and they're still good. I wonder if you ever got around reverse-emulating the CPU ?
of all the channels I subscribe to, this one gets me the most excited when I see an upload. Thank you for the amazing content man!
I LOVED seeing how you pulled off this project. I must say, though, that every time you upload something I have to go back and rewatch a few of your videos to remember what got me to subscribe. XD I hope you upload more often in the future; you make great, interesting content.
You are a Genius man, we need more enhancements and more knowledge from you, Please keep working in the vblank solution and the sound. we need this to learn more about your work.
I would very much so enjoy seeing the rest of your list good sir, please don't shy away from posting more on this, this is huge!
Very, very cool! A couple points though:
- Both the NES and SNES use the SAME chips in the controllers, just the SNES chains a second chip per controller to allow for >8 bits. The bit order is designed in. It would be possible to make the NES read a SNES controller using a simple modified plug and having the routine read all 12 valid bits (4 unused, 16 total).
- The NES 5v regulation uses a standard linear regulator (7805?) and if you are truly pulling 1A with the pi alone then you are past its specification. i.e. You may end up frying the NES and your pi. Consider supplemental 5v directly into your custom cart. (I would measure actual power draw first.)
-Greg
40 minutes isn't nearly enough. More.
...please.
* aren't
@@HelloKittyFanMan. nah he's right. 40 minutes is a singular as it essentially is the same as using the word "length"
@@NinjaKurosai That's weird. Why is a plural of minute considered a singular?
@@MattZelda because its referenced to in the whole not individually
Please do more. I love this sort of thing, being able to make more complicated use of old hardware
I wrote a program in Java a while ago that converts any picture into a ZX Spectrum picture. The ZX Spectrum was a bit more restrained, as the NES but it had the same concept, producing monochrome and colour clashy graphics. I used the same techniques as you did pretty well to render the picture, lots of fun to write but it was a devil to debug. I thought I was doing alright, you know, gave myself a pat on the back. Great way to spend a weekend.... then I watched this and wow, yeah... got some work to do. Good one man!
I laughed to tears at your demand. And then I went to watch the other video.
I'm a little late but... great stuff! Especially appreciate you talking about the roads taken that didn't work out, very helpful.
I am up for a v2 of the project with sound, etc. And another 40min video
dude what you have done here is fucking amazing. I love the fact that you could actually run an snes game on an nes albeit with the help of a rasberry pie and your genius brain but it would seem like you could do so much more with this. I would love to see you finish this project. You really should it would get much more attention if you kept at it. I am sure there are a great deal of people out there that would even pay for something like this so they could tinker with running other things on an nes.
You should finish this for the NES and then move onto the SNES. Just being able to directly control the consoles with a rasberry pie cart is just really cool.
Watched the whole 40 minutes. Will be watching it several more times while on my quest to make a functioning graphics card on an FPGA. Thanks!
As someone who has an extremely brief history in going to classes in electronics having to do with small circuit boards, this video was very enlightening. It also reminds me of certain video demonstrations in Tool Assisted Speedruns (TAS) done for various Games Done Quick (GDQ) charity marathons. In many of those demonstrations, normal expectations are far exceeded by what can be achieved when you load inputs from outside of a normal game board or controller.
Supremely Annoying Debugging Noise
by Tom7
Nominated for Best Game Soundtrack of 2018
"10/10" - IGN
It is always a fantastic surprise when you show up in my subscription feed.
Love this. I wish there were updates. Very cool
I can't wait to see just how far you're able to take this. This is way beyond what I thought was possible on a NES, no matter the method.
This has been a really interesting watch. I should pick up that "write down good ideas" thing. It sounds like a really good way to figure out new projects to do.
i and many others will watch every new video every time they come out, no matter the length.
that’s a cool looking microphone btw.
That was superb. Good job. I'd really love to hear it playing sound too.
Amazing content.
I especially appreciate leaving the errors and the subsequent debugging of those errors and gotchas. I would watch more :)
I'm really happy that you discussed a little bit about reverse emulating the NES sound hardware. Your video actually gave me ideas to try to figure out how to somehow make the NES do some kind of frequency modulation. It might not be possible, but you might be able to modulate the pulsewidth waveforms really quickly to get something similar to phase modulation. Like you said earlier, the NES does allow for small samples with a low bitrate so you can just upload a bunch of samples and make the NES play them. It would be interesting to figure out if you could make the NES hardware do things like Fast-Fourier Transforms so you could do vocoder effects.
I do know that some Famicom games allowed for additional sound hardware within a game's ROM to allow for things like FM synthesis and audio effects. This is the case for the Japanese release of Castlevania III ua-cam.com/video/h2JWRJZwvJo/v-deo.html. I think the disk system allowed for extra sound capabilities as well like with The Legend of Zelda: ua-cam.com/video/tVumJ-z1F9E/v-deo.html. I don't know if the American NES allows for additional sound hardware like that, but it might be worth looking into!
Anyway, great content as always!
Edit: As I was writing this, I was listening to the flute example from the NES version of The Legend of Zelda, which is clearly doing a vibrato effect. If that's being controlled by one of the other waveforms (or an LFO I had no idea existed on the NES), then you should absolutely be able to to FM synthesis on an NES.
Bro.
FM synthesis on the NES is super neat.
That would be great.
I mean, Pictionary’s ost (made by Tim follin) kinda gets there.
You should see if you can do a build of doom on this setup, that would be so cool.
Man, this was so awesome- I wish I had your perseverance
as a programmer who has dabbled with hardware, it helps immensely to have a fun, compelling project. that way when things inevitably go sideways, or just don't work at all, you retain motivation to dig into documentation, wikipedia, whatever it takes to "get something working."
I really loved that. Thanks for sharing Tom. I hope you tackle the high resolution audio idea some time.
There are NES games, such as a 3d polygonal space game (yes for the nes) that achieves 3d by doing what you said at the end of the video, computing data off site (on the cartridge chips) and simply feeding that "prerendered" data into the nes (as a continually shifting pallet and/or sprite, which is actually a "time lapsed" drawn graphic, not just a pallet or sprite).
The fact that you arrived at the pallet idea (though don't forget sprites) on your own is pretty impressive! (Then again everything you do is, so no surprise there!)
Amazing project, happy to watch a 40 minute breakdown of it as well :D
Damn. I think this is the first project of yours I've seen and it was certainly very interesting. It'll be upsetting when I no longer have the time to watch hours of UA-cam videos, but I might as well make the most if it while I can and to that end I'm going to check out your back catalogue now. Thanks dude!
Good times. Reminds me of when I got the N64 for Christmas but didn't know it lacked an RF adapter. I was crestfallen. I couldn't play it on my old TV. Then I got the bright idea to crack open my old NES and bridge the NES's RF and RCA outputs and used it as a pass through for the N64
Fantastic project. It's nice to see someone do this for the love of seeing if they can.
About getting sound to work, some tool assisted speedrunners managed to get pretty good audio quality entirely through the controller ports and even video with a SNES with the same method. Look up Tasblock 2017 if you want to see it.
Pretty awesome stuff. Makes me wonder what an SNES can do. I wonder if you could make an SNES play PS1 games.
He could make an NES play PS1 games.
On the SNES, all graphics that you want to display must be copied by way of the CPU (or rather, its DMA engine) to the internal video RAM (VRAM) of the console. The PPUs have no direct connection to the cartridge slot so you basically can't feed data in the same way.
Moreover, you can only access the SNES's VRAM when the PPUs aren't displaying anything, so only during blanking or when you force the display off. That means you have very limited bandwidth to copy image data to the VRAM for display, around 6kBytes per frame (unless you want to letterbox by forcing the display off for parts of the screen). That's enough for the Super Gameboy to stream the Gameboy picture at 60 frames per second but not much more.
MSU1 video streaming demos exist but they are typically lacking either screen real estate, frame rate, or number of colors.
So in terms of how this works the SNES could actually do less than the NES here.
NES=SNES=WII=WIIU=NINTENDOSWITCH
Myles Johnston no. SNES playing Mario 64
No wait Atari Playing freaking skyrim
wow wow wow, this was an awesome project to see! Thankfully a commenter below linked to the project files, but those would be great to throw in the video descriptions as well for people to access. :)
My lord, hope all this work pays off. Just so you know, we are all there by your side!
Fun thing about 3.3V CMOS and 5V TTL is that they *are* directly compatible, usually both ways (e.g. 74ALS series outputs 3V as "1", for others I'd use a small series resistor, say 33-100Ω). Yes, you can directly drive any TTL chip using 3.3V CMOS signal. If you need to convert 3.3V CMOS to 5V CMOS, you could use 74HCT chip. To do it very fast you could go with 74ACT / 74ABT series. Tried it, works, drives things very strong too (and adds ringing to long wires).
With 40k subs and 41k views, I would argue that all of your subs viewed this video! Keep up the great work!
The way you explain this is amazing and very inspiring. Thank you!
Thanks! :)
This is one of the worst most amazing things I've ever seen. I always thought executing arbitrary code on Super Mario World to play Super Mario Bros. was the worst, but you've achieved new fantastic grounds! I just love all your stuff.
I really envy your skills in electronics and low level programming, I've always wanted to hone mine, but never got the time to do so, thus I still sit at the very basics I learned in college.
I've watched this video and all your videos at least 3 times. Love your stuff. Please make more interesting things!
Thank you for watching and for the encouragement (:
this is good stuff man. Yeah, I watched the 40 mins all the way through. Mainstream UA-cam will obviously have different videos in store but it doesn't mean there's no room for long, technical, quality content. Keep it up!
Your videos are the best on the internet. I can't wait for the next one. I always watch them multiple times, especially if they are about cycles? Please make more videos faster, If I had money I would want to give it to you to help you fund resistors and antique ROM cartridges.
Definitely enjoyed watching. Thanks for making this supplementary video explaining the magic tricks.
This is the best thing I have watched in a while! One year too late, but subscribed
I just finished watching everything, I wish you made videos like this more often!
39:55: "I have some ideas what's causing that [noise and blinking]"
Thanks for your architecture dive. That's a pretty rad project.
The first thought that went through my mind when you mentioned using a microcontroller was using an arduino as a frame buffer and a raspberry py's video out to fill the arduino.
YES, MORE.
Once again, love your work and these long explanations are fascinating.
I don't know what the world would do without diligent people like you.
Interesting topic and you made the whole 40 minutes of video to feel like instant, it was so well made!
Totally thought this was fifteen or twenty minutes. I check the time? It's been forty minutes! Great vid, really held my attention!
Nice video for students or classrooms. Admire your work and watched all the 44 minutes of the video, and I'm just an a enthusiast.
First time I've seen a board customization. Didn't know it was "that easy" to do a custom board 🙂🙂
Pls let me know when you get onto sound. My goodness. You have blown my mind sir. I'm gonna get my head back in the code and electronics book, you have reignited my dwindling Hobbyist bug.
40 minute videos are the one...because there is a 1.5 x button for those who talk too slow or pack too little in. you do neither...well for a electronics flunk like me
That is amazing. I get so excited whenever i see you post a new video.
i really love this project and this supplemental content. really quality stuff suckerpinch, i think i will check out the rest of your channel now too
Thanks! I hope you like the other stuff too :)
I think I've watched every suckerpinch video ever made and I have never been disapointed, other than the fact that there aren't more of them. But I know that's part of what makes them great.
slug on a stick
Really good explanation of tri-state/high impedance states
Thanks! Your videos and projects are so amazing... Just the kind of thing I wanted to know, but didn't know to ask.
Usually I stalk channels for weeks or even months before actually dropping a sub, but that really got me interested!
I, in fact, love larger videos. And much more to see the projects being made rather than to just see the final product because then I can learn how to avoid issues the creator found himself in.
You did a great job explaining your work. I am definitely looking forward to more of your videos.
I was wondering if this would be possible a couple years back but I didnt had a knowlage to do it and now here I am.
I though it would look better but its more than I though it would be capable of.
Great job man
This experiment brings to mind the philosophical conundrum of determining at what point the NES is still an NES as you augment and supplement more components and more powerful hardware. Damn fascinating to watch, though.
Beautiful work! I'd love to know how you can solve the noise and blinking issues. Maybe a follow up at some stage?
I really enjoy all of your projects, and always share them around whenever I see a new one. Keep up the great work :)
thanks! :)
im excited to see in a couple years if/when you update your graphics on this! It’s an awesome tool and totally made me laugh
Great work. You truly have a gift. I'd love to see just how far you could take this project.
I like to think that your concept of reverse emulating the nintendo in this way reminds me of what is actually done with the superFX chip in the super nintendo. You're adding supplemental processing to the current system.