How Cartridges worked on the Nintendo Game Boy | MVG
Ойындар
A closer look at how Cartridge's work on the Nintendo Game Boy and Game Boy Color
► Consider supporting me - / modernvintagegamer
Sources/Credits:
► / memory-and-memory-mapp...
► gbdev.gg8.se/wiki/articles/Th...
Social Media Links :
► Facebook : / modernvintagegamer
► Twitter : / modernvintageg
► IG: / modernvintagegamer
► BandCamp : modernvintagegamer.bandcamp.com/
► The Real MVP Podcast : player.fm/series/the-real-mvp
#Nintendo #Gameboy #Cartridges
Пікірлер: 788
The Gameboy is the perfect example of using technically outdated technology to make a truly awesome product noone had seen before. The game gear and lynx might have been more advanced, but with battery life being small, no one could really play them for long periods of time.
@Darkdaej
3 жыл бұрын
Indeed. The Game Gear might have basically been a portable Master System, the 6 AA batteries it required (and how fast it munched through them) was definitely a major downside.
@nickpavloff8977
3 жыл бұрын
Many more parallel ideas need made.... think differently
@theannoyedmrfloyd3998
3 жыл бұрын
That's why Atari made a D Cell battery pack which plugged into the Adapter power jack. A friend of mine had the car adapter. We all bought the AC Adapter because I never needed to play my Lynx on the go.
@CrossedCoder
3 жыл бұрын
The battery life of the game gear was actually good, just not in comparison to a slightly beefed up calculator (dmg). Blue LEDs did not exist at the time of the game gears release, which is why it had to rely on a compact fluorescent tube to provide backlight. This tube is what actually consumed the majority of the battery life. Remember that the nintendo switch has the same battery life as the game gear. Oh how far we have come 💁♂️
@Kalvinjj
3 жыл бұрын
@@CrossedCoder true about the technology used and all, but I don't think it's fair to compare battery life between products nowadays with rechargeable Li-Ion ones that last for quite a few cycles, vs disposable batteries or the occasional Ni-Cd ones (that sucked) or Ni-MH (which some people say were super common in early 90s meanwhile many people didn't even see them until the early 2000s... very varying experiences regarding those. Also price wasn't what it was in early 2000s). But it indeed is quite terrible how fast a Switch goes through it's battery, and I would even say that the Lynx and Game Gear competed between each other, while the Game Boy was doing it's own thing barely related, and that proved successful instead. The Game Boy went with a cheaper and more feasible alternative, the other two went with the cutting edge. Hard to even think they competed.
it always blows my mind back when hardware was so limited, programmers had to be really creative just to do simple things things we now take for granted. it adds a certain magic to the finished products.
It's always a good day when MVG uploads.
@autodidact7127
3 жыл бұрын
Talk about it.
@rebmcr
3 жыл бұрын
It's called "Monday"
@instanoodles
3 жыл бұрын
I do enjoy Monday mornings
@abominati0n
3 жыл бұрын
We a bunch of nerds lol
@Deutschehordenelite
3 жыл бұрын
I hate mondays
A lot of this is wrong. You can't combine AF into a single 16-bit register (except when saving/restoring to stack). F isn't a general purpose register, it's flags from the previous operation. The hardware and games don't use the header information at all. The Game Boy only checks that the logo is correct (a failed license control system) and the header isn't corrupted. Super GB and GB Color check for some flags to enable their features, but nothing uses the type/size fields. Games were generally coded to assume they had the correct chips (because why wouldn't they?) and would just go ahead and use them without needing any setup or checking. The MBC chips are basically just simple latches for the high address lines of the ROM chip. Nothing prevents a game from trying to access more banks than it really has. It would typically just read back an earlier bank because the higher address lines aren't being used. It's all fairly simple transistor logic, so there's no complex protocols or verification. You just directly control the hardware. How the ROM area and extra RAM are split up is entirely up to the cartridge. While most (all?) licensed games followed the rules outlined in the video, they aren't enforced by anything. You can make a cartridge with different bank sizes, different control methods, ROM in the region usually used for RAM and vice versa. The only restriction is that it needs to have the logo and startup code mapped to 0100 at power on. (Some unofficial cartridges even did some timing/mapping tricks to swap out the logo for a different one after it was verified, so they could display their own!) Technically there's no limit to how many banks you could add to such a custom cartridge, either.
@nagi.desuuu
3 жыл бұрын
This feedback would be helpful!
@ISSOtm
3 жыл бұрын
MBC6, an official mapper, has one switchable area at 4000-5FFF, and another one at 6000-7FFF (gbdev.io/pandocs/#mbc6)
@jeffreyonline
3 жыл бұрын
ok got it
@crayzeape2230
3 жыл бұрын
There are at least 3 other errors in this presentation, did you spot them?
@boardante8454
3 жыл бұрын
@@crayzeape2230 yeah he thinks he is smarter than the expert
I don't like saying "when the system knows [...] thanks to the header information" that I just feel is completely inaccurate. The header information is purely descriptive, and its only useful parts used by the boot ROM is just the Nintendo logo portion and Header checksum. The only real use of all of it is as metadata for emulation (or perhaps Super Game Boy). A game's code only rightfully assumes that the hardware is already present and does not base itself on the header information to know. The system itself is completely blind to this and doesn't do anything in particular, the game will do the job needed itself.
@MrCheeze
3 жыл бұрын
I was about to make the same comment. A real game boy DOES NOT USE this header information, it is simply documentation of what the cartridge circuitry itself contains. This is meant to solve the problem NES ROMs had, which is that a ROM dump alone tells you nothing about what hardware the cart contains and is therefore not enough information to emulate the game, for example.
@0LoneTech
3 жыл бұрын
This video has some rather rough misinformation. At about 5 minutes in the presenter demonstrates they haven't understood that the cartridge is literally where the game is running from; there's no load step, nor memory to hold bank 0. Next comes the direct contradiction of "the programmer didn't need to write their own controller code for the bank switching" quickly followed by "they were still responsible ... to let the MBC chip know". It's all magic! The best part of the video is the cut in to note that nothing here is unique or new to the Game Boy, as the rest of the script misleadingly suggests.
@Cwiiis
3 жыл бұрын
heh, was going to leave a comment with words to this effect (and also what @LoneTech says). Glad to see it's the top comment. The Gameboy is a fantastic piece of hardware, classic Nintendo in that it's very well-balanced and economical, but in terms of uniqueness, capabilities and being ahead of its time, the Atari Lynx is *far* more interesting.
@ssl3546
3 жыл бұрын
This is a weird video, MVG is extremely knowledgeable about consoles and (under his name Lantus) worked on several different emulators. This video has the kind of casual inaccuracies I'd expect from someone who just read a couple wikipedia articles.
@TheMAZZTer
3 жыл бұрын
Super Gameboy wouldn't care since it has the same physical cart as the Gameboy. Otherwise yeah I was going to point out a lot of the same stuff you did. In addition AFAIK the split of 16kb between bank 0 and bank X was probably up to the cart. The Gameboy is just asking the cart "what is at address 0x3000?" and the cart has complete freedom in how it answers. So the bank switching didn't need to be supported by the Gameboy at all, it was all on the cart. But it was standardized by the set of standard MBC chips commonly used, hence the common behavior of a 16kb bank 0. AFAIK there was nothing stopping someone from making bank 0 8kb or making a bank X and a bank Y that could be switched independently. You could even remove the a dedicated bank 0, but the problem is the code you are running from when switching banks should not change since, well, you need to be able to read the code you want to keep running. Most reliable way to do this is set aside some address space which is guaranteed to not change when bank switching and always do bank switching from there, which is exactly what bank 0 does. The innovative thing about the Gameboy it would seem is how far Nintendo took advantage of being able to cram custom hardware into each cart. I am sure they wished they had added some of those capabilities to the system itself, as it would have been cheaper overall to not have to make this hardware for each cart but just each system, but of course lessons learned would go on to influence future Gameboy hardware design. It's also worth noting carts were well established by the GB era. Atari and their competitors back in the day used them. NES used them of course, and NES carts used custom hardware as well (IIRC SMB3 2D scrolling was only possible thanks to this). Some arcade cabinets allowed you to swap out boards to have different games run (not sure where in the timeline this falls if it predates home consoles or not, but it is definitely the most primitive way to do it).
MVG, I love you, but I'm annoyed that there a whole bunch of small inaccuracies in the video. If you're interested, the next time you're going to do a video about Gameboys, I can offer to proofread the script. (I'm the person who runs the GB dev wiki, btw.)
@ModernVintageGamer
3 жыл бұрын
ill take you up on that. ill reach out
@Gameboygenius
3 жыл бұрын
@@ModernVintageGamer great! My e-mail address is nitro2k01@gmail.com.
@funkykoval2099
3 жыл бұрын
@@Gameboygenius Great guys! Make a video about programing together!
@raviolisoup8389
3 жыл бұрын
@@funkykoval2099 I agree with you!
@UpcycleElectronics
3 жыл бұрын
@@Gameboygenius Thanks for volunteering like this. And thanks MVG for making the effort to get others to proofread. As a hardware enthusiast, this kind of practical application of the interface between hard/software is the primary reason I watch this channel. It's easily digested tidbits about vintage computing and hardware hacking with a simple to follow context. I get the impression that this channel is probably 'a software guy's take on the hardware.' Don't misunderstand, this is a valuable perspective as well, as it hints at what is truly necessary information between soft/hardware devs. By getting deeper into the hardware with accuracy, the channel increases it's value to me as a viewer. -Jake
Great video - sure there are some small inaccuracies but it does a good job of explaining the basics. I was a Gameboy Color programmer back in the day, we used MBC 5 for a 4MB cartridge and external save-ram. It's tricky to develop with bank switching in mind, because the moment you switch banks, that entire bit of ROM is now filled with entirely different data, so if you want to access some of the same things (like animated status bar graphic tiles), you either have to keep those in the extremely limited Bank 0, or load them into the even more limited RAM, or duplicate them in whatever banks you are switching to while the status bar is on the screen. When you start developing a game, you'll organize it - "Bank 64 for minigames A and B, Bank 65 for combat effects, Bank 66 for the title screen and menu", etc. But by the end, you are cramming bits wherever they can fit, it gets ugly.
@eDoc2020
3 жыл бұрын
Doesn't the GBC only display from VRAM? Couldn't you just switch to the bank with the needed tiles only once per frame during the update routine? = But yeah, it's just plain so much easier to develop software with a linear memory map. Devs for 16-bit x86 will have similar difficulties with segment switching as GBC (and other) devs have with bank switching.
@Dreamwriter4242
3 жыл бұрын
@@eDoc2020 I was trying to quickly come up with a simple example of the need for shared data :) Been like 16 or 17 years since I actually developed on GBC, so my memory is hazy of exactly what the problems were we ran into, but we pushed the system HARD, far beyond what it was designed for (ie, hundreds of colors per frame), so ran into a lot of tricky bits because of the need for bank switching.
I received a Gameboy for my 10th birthday, and it was one of the best gifts I ever received. So many happy hours with that console. Strange to think that was 28 years ago. Utilising the cartridges to get more space is bloody genius!
In the very late 90s, I was briefly fascinated by assembly programming on TI graphing calculators. They were Z80-based systems (the one I had, anyway) and were in some ways comparable to Gameboys. It's great to get an idea of just how different the actual Nintendo Gameboy was, though.
I love how you always have Axelay's ost in the background, I love that game as well.
I love watching these, even though I don't understand a ton of the terminology used. Great stuff.
*Planet* *X* by _The_ _8_ _Bit_ _Guy_ utilizes bank switching. It's not just cartridges but mostly cartridges. Another awesome video about the Gameboy!
I love all the videos you do because they're so well put together. You have such an extensive knowledge of how these old consoles work. It really is cool to learn about how these parts of your childhood did what they did.
Fun fact : Bank-switching is how you did SVGA programming in DOS.
@DryPaperHammerBro
3 жыл бұрын
Huh, cool
@wesleymays1931
3 жыл бұрын
[The 8086 just didn't have enough memory space for all that VRAM]
You would like my new Game Boy Advance Tech Demo! :)
Love these deep dives. Always so approachable and I feel like I'm learning too. Great stuff.
Thanks for the video. You are helping so much not only to preserve this information, but making it available to people like me, who loves videogames, but had no idea how things work in the background. Keep going with the good work.
I am 25 years old and still have my turquoise GBC from '99 in good working condition. There's nothing like retro handhelds for nostalgia :)
@Kalvinjj
3 жыл бұрын
My purple one from 2002 is still going too, tho I had to replace the polarizer and give it some Retrobright treatment. It did get played a LOT and usually on the sun (how it's pretty much supposed to be after all given it's purely reflective screen). Have modded quite a few Game Boys but I think I'll leave that one stock for memories sake (besides I do like it's screen anyway and like playing on the sunlight).
@bengoshi4
3 жыл бұрын
Good man, I still have my GB blue/black ( play it loud version) since '97, perfectly working 👍🏻👍🏻
Oh man I've been stuck watching all your videos for the last 2 days. You're so damn good at producing this content, I'm hooked!
I love your camera and how you edit the video 😍 The colors are rich and vivid; the picture- crisp. Absolutely love it.
Love your videos dude! Super informative to say the least.
I've love to hear a more detailed explanation on how the NES's more advanced mappers worked too, please!
"have you ever wondered how cartridges worked in game systems" Me: "no" Also me: watches 11 and 1/2 minute video
@travishunt8832
3 жыл бұрын
also me again: I don't need sleep, I need answer
@simpleman8883
3 жыл бұрын
11.51 minutes*
I love the focus MVG has on hardware on his channel. Stuff like this is absolutely fascinating to me.
Love the work and detail you put into this. Thanks!
FINALLY, another MVG video. Tbh the happiness when a new MVG video comes out is immeausureable
Wow, the auto captions struggled with this video
@8-bitgamer675
3 жыл бұрын
Yes, the original language is definitly portuguese
@dmtm
3 жыл бұрын
The auto-captiobs wasnt well "port"-ed well.
@surrodox
3 жыл бұрын
Have fun seeing English in Portuguese!
@hedgehog125
3 жыл бұрын
@@surrodox Oh, that's why. Why are there english words in there though?
@emilycampbell6375
3 жыл бұрын
yeah, youtube seems to struggle with australian (or maybe it's south african?) accents
A beard really suits you. Definitely keep it.
@TexasHollowEarth
3 жыл бұрын
Like Kratos & shit.
I love your work! It’s nice to know that there are other people into this.
Your videos are always making my day, thank a lot, honestly
I love your videos no ads no sponsors just interesting stuff, its always great to see a new video coming out! who would dislike these videos?
These videos always have some of the best obscure "techie" facts. Thank you for the time and research you put into these vids.
The MB Microvision had a much more interesting cartridge system, the CPU was stored in the cartridge plate! Would love to see a video on that The first 256 bytes are actually used for the BIOS of the gameboy. The BIOS is swapped out when it finishes processing and the first 256 bytes are no longer reserved once the game itself is actually running With the proper mapper you can make both banks swappable, although it does make programming more complicated. Also, with the correct technique you can hot swap cartridges by copying a short look into RAM so that the processor is no longer looking at the cartridge while you swap it, and then you can jump back into the reset vector yourself to start the new game. It was never done in practice but it is possible!
@phonewithoutquestion80
3 жыл бұрын
What's more, the design of the cartridge lacked built in ESD protection, same for the console itself, if you wanted to get the most life out of your Microvision, you MUST apply that foil sticker.
@AiOinc1
3 жыл бұрын
@@phonewithoutquestion80 Well to be fair, neither did the Gameboy for the majority of it's life. The Gameboy just had the luxury of shrouded contacts and nearly 20 years of technological improvements to the hardware which helped protect it even without dedicated ESD protection.
@electronicengineer
3 жыл бұрын
@@AiOinc1 The gameboy also did not have a spring-loaded, plastic, sliding, cover that acted as a "piezo zapper" (think electronic ignition lighter), like the MB Microvision did. People liked pulling this lid on the cartridge back and letting it snap closed, over and over (probably similarly satisfying as popping bubble wrap), ultimately being the cause of the majority of blown Microvision cartridges. The reciprocating action of pushing the plastic lid in and out created a high enough charge to become an ESD sensitive device destroyer. Not a well thought out cartridge design.
Man, I love your videos and we have the same interests. I lay down confy and put your videos... always good and relaxing.
I fucking love these videos. Learning the ins and outs and all of the intricacies of classic consoles and homebrew and all of that. Great job as always MVG!
Your channels content is top notch and always interesting!
Another amazing tech documentary. This always shine my day.
Awesome video, one of the best yet!
The best part of a Monday morning is a MVG video
Always great to witness your technological knowledge as a fellow Australian. You'd make a great teacher. Really interesting to see how nintendo took old technology and transcended its limits.
Amazing! Thanks for the upload MVG. Keep it up! 😁
Another neat and technical video! Thanks!
Your analysis of game consoles' architecture is always superb
Love learning about the gameboy tech!
This is a brilliant video! Loved it.
Thank you so much, your videos really improve my day
Excellent video, as always!
Let us not forget that Star Ocean was also as large as Tails of Phantasia on silicon, actually bigger when its brass tax, you see Star Ocean is technically bigger, as it is compressed using the S-DD1 chip and in its decompressed state, the game is 96Mb or 12MB. Love the video mate, it is good reference material for so much more than the its title would have you assume, thank you for this.
This stuff is like magic to me... and often goes way over my head, but I like learning anyway! I’d love to see a video that explains how cartridges were actually made
Great video! Learned something new.
I wasn't expecting that to be so interesting and detailed.
Best way to start my week. I always watch MVG Monday morning along with my morning coffee. 👍👍👍
Keep up the good work! Love ur videos
Great video. Really fascinating stuff about the GameBoy. Wish I understood more about coding.
The Gameboy Pocket was the first system I owned as a child, and holds a special place in my heart. Thanks for the video!
Bethesda in 2018: I'm sorry guys I can't handle your 16 gb of ram and 8 cores 16 threads 4.0 GHz to deliver 16 times the detail. Nintendo in 1989: this isn't even my final form.
Great video, very retro game mechanics explained esq :)
Another awesome video man, always look forward to when a new one comes out :) , keep it up :D.
This is one of my all time favourite channels
Thank you so much for sharing this knowledge.
Another new piece of information, thank you!
Very much enjoying learning the technical side of gaming, A+ content
Thanks for this explaination! Very enjoyable!
Thank you MVG I was always curious about this!
just awesome love youre videos thanks!
Nice solid cover of the subject MVG, Nice job!
Shame about the inaccuracies, but it's way above my knowledge and I think MVG pitched it at the right level for the most part. All fascinating stuff and to read the comments is great too!
Gameboy is probably my favorite family of electronics all time. I'd love a look at how the different cartridge systems work.
You sir are definitely amazing! I can't get enough of your videos!
Ah, another video I do not even a little understand but am endlessly entertained by. Just in time for lunch too!
Now that you mentioned bank-switching, I'd say why don't you do a video about the Atari 2600 hardware?
1:27 One Energizer battery and one Duracell battery. _Silently raging due to mild OCD_
@nikoskabbadias
3 жыл бұрын
Pepsi in a Coca Cola glass...I dont givea damn
@pauls4522
3 жыл бұрын
Me: opens an RC cola. Everyone: what the hell is that?
@HiddenMeadowMus
3 жыл бұрын
Lol
no scene of you inserting the cart into a gameboy went smooth. Well done.
great video, mate. The legacy of the Game Boy seems well earned. It's crazy how that little machine managed to stay relevant through no less than 4 console generations. It's also really crazy to see what the homebrew community has been able to do with the thing. Like that new fancy Game Boy Color video player that could run things like the full original Pokémon opening with music, sound, and everything.
Very nice, I can see why it's your favourite piece of hardware.
Ah the mixed batteries in the gbc. Brings me back to the good old days of scrounging up batteries from tv remotes.
Love the Amiga action replay MKIII cartridge on your shelf
Your content is simple amazing man
The beard’s looking well MVG - keep it growing!
@stinchjack
3 жыл бұрын
Beards help save the planet by using less razorblades :P
I had a headache just watching this video.. I LIKE IT !!
I may be 21, but I grew up playing Mario Deluxe, and Rampage on an old Atomic Purple Gameboy Color that my dad gave me when I was 5-6, and I loved it. I also loved tech in general from what I recall I'd take things apart, and put them back together often back then, and my parents tried to encourage it, which I'm thankful they did. We didn't have much else, cause we wasn't well off, or anything. However I loved the things I did have, and enjoyed them thoroughly. I don't have that old Gameboy Anymore due to so many moves, it must have gotten left behind, or lost along the way. However I recently reacquired a Gameboy Color Atomic Purple online, and have been playing Pokemon Yellow, it's so much fun I even forget I can play modern games now on my Switch, Gaming PC, or PS4. I don't know if it's just nostalgia, but it's true what they say, nothing beats playing on the original Hardware. I also have a DMG, and I love the bulk it has, it just fits in my hands so well, even if the LCD is so much better on the Color.
I remember these back in 2000 in elementary school my friend had a yellow game boy and played Pokémon red green and blue GTA and couple other games. I remember it being really cool for being 10 years old at that time
Great video, congrats and thank you!
Bank switching was common in the 8-bit days, most of the old home computers were doing some form of that, at least to switch between their own ROMs and parallel RAM sections. Even the Atari 2600 from 1979 did it. However the Gameboy was solid in wrapping up the best of the whole era.
Oh boy countless hours spent with this beautiful handheld console.. Worth every single penny, the one i have still works flawlessly to this very day.
I don’t understand much of this technical talk but they’re still good videos to watch.
I remember a long time back there was a very special cart made ...it had a cable out the back that would connect to Aprilia scooters (Direct injection models) and you could derestrict them. First time I seen it I was amazed , it was cheap enough and all you needed was a regular gameboy to use it.
I'd say taxi 2's intro - although much shorter - is even more impressive as it's a real movie scene instead of an animation and all on GBC.
Great video. GBC..sweet memories
New favourite tech channel 😎👍
One of the main benefits of the old cartridge technology, just think of the modern day equivalence (not counting digital): You have multiple discs that you have to swap manually. These cartridges did it automatically at the speed of light!
Your videos are awesome. They even made me start coding with the goal to make my one game.
Man I love your videos
Fascinating topic, thank you sir, makes me want to try to write to the gameboy
This was a lot more interesting than I expected.
can you make a playlist of all vidoes where you explain in depth of how the code/hardware works the whole video and make more videos like this i really like these videos.
ok this has been a question I always wondered, thank you for this video
Wow, so cool glad you explained how the Gameboy worked, even though I don't understand what is being explained! :D Yeah, the Gameboy is such a good example of technology, like how Cannon Fodder had the intro video segment!
Awesome stuff!!
It's always a good day when MVG uploads, 🎮😎🕹.