Another look at how to do a "Hello, World!" program on a 6502 game console, in this case the Nintendo Entertainment System or FamiCom. The code is available on GitHub: github.com/Sli...
Пікірлер: 36
@_polpon2 жыл бұрын
Nice video! I made a map for Metroid on the NES using Game Genie, I used sprites because it was much easier to place the tiles where I wanted them and without corrupting the graphics already on screen (also, since I used Game Genie I had limited space). Very interesting to see a simple Hello World program running on the NES and the code behind it :)
@HenkZw3 жыл бұрын
Thank you for this video. I also watched and liked your SNES demonstration. I'm trying to teach myself NES programming, and I tried to follow your demonstration. I learned to program 8051, but NES with its video capabilities is quite a different beast. I hope you'll do more NES stuff, but I see that X16 is a more popular topic now.
@slithymatt3 жыл бұрын
I do have plans for a NES homebrew project. Stay tuned!
@thehollowknerd3858 Жыл бұрын
Give this man more subscribers
@helloww_3 жыл бұрын
thank you. i am a pre-beginner trying to wrap my head around this. i will admit i still dont understand it all but im getting an idea and every bit helps :)
@ShampooCell3 жыл бұрын
Just discovered your channel, but I'm really enjoying your content! I've been teaching myself 6502 development for a few years, and every time I find someone else who knows more than I do it's helpful.
@HelloKittyFanMan.3 жыл бұрын
Thanks for these very interesting videos! It's so satisfying to see someone out there who can experiment with the "What if you tried this?" or "What if you wanted to do that?" questions that may be floating around as oddball curiosities in our heads! Or even sometimes people create those curiosities and then solve them at the same time! I've had curiosities like this before, but this is even one that you sort of created for me and then solved right at the same time, and is very interesting and cool! I've seen other videos like that too, from Action Lab, etc. My internal reaction would be something like, "Oh, I hadn't even thought to be curious about that, but he does make a great point, and now I AM curious about it, and he's about to tell me the answer!" Haha!
@cmyk89643 жыл бұрын
Ah yes, the Printed Circuit Board board and the Non-Maskable Interrupt interrupt. ;)
@CallousCoder3 жыл бұрын
Another great video Matt. I am actually looking into making a light gun game (on LCD) and this is a primer for me on the NES PPU. If I know how to get a sprite and background on the screen, I'm golden :D
@kingbrettpro2 ай бұрын
I want to make a version of Hello, World on the NES where the text flashes like the ? Blocks in Super Mario Bros do. I've always wanted to make my own games, especially since Animal Crossing for the Gamecube has an unused feature that allows you to play almost any NES Game you want using the NES Furniture item. The feature was discovered by James Chambers.
@slithymatt2 ай бұрын
@kingbrettpro the easiest way to do that would be through palette cycling, which is how the ? Blocks work. You would just need a counter that you increment each frame interrupt, then change the palette based on the counter value. You'd just have to choose which two bits in the counter to use to determine the flash frequency.
@michaellosh18514 жыл бұрын
Good job! At first, the separate memory spaces for the main CPU and the PPU can seem confusing. You explained it verbally, but it might have helped to have a diagram that shows how the control registers visible to & usable by the CPU define a moving "window" into the PPU-dedicated video RAM. Future video ideas: Custom Character set version of Hello World (different style font, or build bigger letters from sub-parts defined in custom character cells) - on VIC-20? Bitmap graphic version that displays a fancy, multicolor "Hello World" image.- could be on many platforms like C64, Apple II, X16, Atari 800 Animated sprites that initially obscure a background "Hello World" but then move to uncover it - C64 or X16
@slithymatt4 жыл бұрын
Thanks for your suggestions! I did have to cut off the PPU discussion at some point, and I could have gone on for days on the architecture! Mainly I just wanted to explain it enough to have the code make sense. If that wasn't accomplished, I'll try doing it differently next time.
@Rich-can-do7 ай бұрын
Ty I made a tiny nes rom. Ty for sharing
@Chris-hi2hn2 ай бұрын
The way the nes cpu and ppu talk to each other using a memory address on the cpu bus that deserializes bytes into 16 bit memory addresses on the ppu bus. Is that what's called a translation look aside buffer, or maybe 🤔 a memory management unit?
@ecernosoft30962 жыл бұрын
It actually started at 32K. You can have 40K (32K prg + 8K gfx) with stock system.
@thisisreallyme31302 жыл бұрын
Thanks! Would you entertain the idea of a condensed version that targets C in CC65? Or outline why it isn’t possible? (I know printf would consume all 2K, but could C work, if it pushes bytes to the display? )
@slithymatt2 жыл бұрын
It could definitely work, but I wouldn't advise it. At that point, you are trying to twist C into being a macro assembler. C without clib is a bit painful!
@TheEvilSoft2 жыл бұрын
At one point in the start of this vid, you mentioned that cc65 come with an example chr set. I have been looking for it and cannot seem to find it. Is there a package I am missing on linux? I am on arch and had to pull it from the (AUR), but could not find any optional packages that went along with it.
@slithymatt2 жыл бұрын
Right here: github.com/cc65/cc65/blob/master/libsrc/nes/neschar.s
@TheEvilSoft2 жыл бұрын
@@slithymatt Awesome thank you so much!
@draconic51293 жыл бұрын
"the famicom wasn't really a computer" I disagree with that statement, it had a keyboard and tape drive and it also ran basic.
@slithymatt3 жыл бұрын
The vast majority of users did not have the BASIC keyboard.
@ezekieloruven3 жыл бұрын
...but that isn't even the standard by which a "computer" is measured. A computer is any device that is capable of processing a set of instructions and inputs to output some kind of consistent response based on the aforementioned instructions and input, and is usually required to be "Turing Complete." All video game consoles are computers, even the big arcade cabinets and pong systems of yore without a CPU. Maybe today they are not thought of as computers but the first computer, the Babbage Difference Engine, performed all calculations mechanically and couldn't even be programmed. Later analytical engine designs would eventually lead to what began being called "computers" in the 40's, with the ABC, ENIAC, and the Z4. These devices were programmed with punch cards and were nowhere close to a personal computer (especially today), but they ARE computers! I think Matt could probably have used different phrasing here, because these devices are computers, just computers without all the trappings of home personal computers at the time. What he means is clear so it doesn't really matter, but technically they are computers. They lacked a disk to store data on, character processing functionality, and a lot of the memory that usually came with a PC, but in exchange they had much more flexible video and sound capabilities, connected to a standard television, and were more affordable so a developer looking for a platform to target would ideally have a larger customer base.
@slithymatt3 жыл бұрын
@@ezekieloruven Yeah, I usually try to say "general purpose computer" to be more accurate, but this was an unscripted video. I would call the FamiCom an embedded computer, as it has a limited user interface for a very specific use case. Meanwhile, platforms like the Atari 400 or the ZX Spectrum are just barely general-purpose computers, and really only useful for gaming -- they just happen to have a keyboard and BASIC built in. I would quibble with calling a Pong cabinet or console a computer, as they are certainly not Turing complete devices. They are electronic video devices, but have nothing resembling a computer architecture.
@mad_circuits3 жыл бұрын
Brilliant. New sub you have... *yoda mode: off*
@HelloKittyFanMan.3 жыл бұрын
I bet you did that video even if we haven't seen it. (I just saw it, but still have my point here.)
@tails_the_god3 жыл бұрын
damn.. nintendo systems now have more power beyond anything before yes.. but are so overpriced now.
@HelloKittyFanMan.3 жыл бұрын
"PCB board"? Oops, there's no such thing.
@slithymatt3 жыл бұрын
I will say "PIN number" and "ATM machine" until my dying day!
@HelloKittyFanMan.3 жыл бұрын
Ha, @@slithymatt, you're joking, right? Because why would someone want to develop/maintain an odd habit of putting more effort into somrthing to get less correct results? Please tell me that you're just joking, ha!
@slithymatt3 жыл бұрын
@@HelloKittyFanMan. I am... Kinda. Old habits are hard to break, and the effort to do that must also be considered.
@HelloKittyFanMan.3 жыл бұрын
@@slithymatt: Thanks for your kind replies! That does give me the question: "How do people start these habits in the first place?"
@slithymatt3 жыл бұрын
@@HelloKittyFanMan. That's a good question for a socio-linguist. Definitely not my area of expertise!