You are absolutely right! This is why I cherish these types of games. Because the people who made them had to think out of the box and make compromises and creative solutions to accomplish what they want. As opposed to nowadays where computers are so dreadfully powerful, that you could make whatever you want with literally no limitations or effort. No foresight for memory space or efficiency in the slightest.
When you said "Wait, scrolling in Punch-Out? We'll get to that later", my thought was "Yeah, of course! For the training scene where you run through the city and Doc rides the bike!", but the real answer was MUCH cooler. Any chance you might do a little bonus video about how that scene works? The parallax effect is really cool.
It's probably just multiple uses of the same thing. Whenever sprite 0 is hit, it gets moved down to the next set point and the scrolling speed is updated. At least that's my educated guess.
@@ovalteen4404 the way NES hardware is set up, you can only have one sprite zero hit per frame. Once the hit happens and you get the interrupt, it stops checking until it resets during vblank.
@@Robomandude Bummer. So I analyzed the code itself then. It splits the screen into 10 equal-sized scrolling regions (except for first and last). Region 0 is the NY skyline. Regions 1-9 begin at the water line (where sprite 0 is) and cover a few lines each. Region 10 begins at line 158 and covers the bottom half. It uses a bit rotation scheme for each region to determine when that region should advance. Obviously the closer it gets, the more bits enter the rotation for that region. It uses a precise timing loop to set the horizontal scroll for each region. So it's doing the NES version of "racing the beam". The entire backdrop from sidewalk to NY skyline is background. Coach and Mac are sprites (obviously). The posts are also sprites, and are kept in sync with region 9. So everything above the water runs at one slow speed, and everything below the water runs at the same fast speed, and the 20 or so lines inbetween are where all the parallax magic happens.
that 'whatever this is' in the corner looks like the arm of the ring corner man/coach that stands on the ground of the ring. His arm resting on the ring just happens to coincide where the scroll breaks from top to bottom, that can't have been an accident. How neat...
When I played this as a teenager in the 80s, I always thought programming this game must have been so much simpler than ‘complex’ games like SMB. There’s no moving around anywhere you want, only 1 screen to deal with, and 1 basic mechanic of game play. I had no idea it required the MMC2 and a bunch of tricks to pull it off, and that it would have been next to impossible without that extra chip. Wow…just wow! Thanks for explaining it!
I love that scrolling trick to make Little Mac animate smoothly and the fact that they had to finagle Mario Ref's smooth movement into different tiles for it to also look like smooth sprite movement. Clever stuff indeed. Thank you for making another great video!
Holy crud this blew my mind like 7 times. I always wondered how the programmers rendered such huge opponents along with Mac, and I figured some of it must really be background, but DANG, the developers really pulled out all the tricks here! SCROLLING?!? I never would have guessed that. Awesome job walking us through this, DG!
Nintendo made an updated version, the MMC4, which was used only on three Famicom games. The two Fire Emblem games and Famicom Wars. Though I can't recall offhand what was different from the MMC2. I know in the Fire Emblem games, tiles FD and FE are the left and right window border tiles. That means they are literally used to "open" and "close" the menu tileset on each scanline.
I always knew that Punch Out!!! used some trickery, but it was easy to hand-wave it all and say "Eh, MMC2 witchcraft". But it never settled right with me; sure, the gfx stuff made some sense, but to put the smooth animation on that seemed like a lot. So now you're showcasing the scrolling flag and how the MMC2 steals the show and saves memory and time. I knew that the work involved would have been heavy, but I had no clue how much time was saved by having the MMC2 go "Whoops, new bank!" half-way through a screen draw. I even tried to understand the game, but I didn't fully understand how these pieces fit together. It's really quite amazing to see how much they could do with what they had. I'd have loved to see the Blaster Master and Punchout coders build *anything* together. There's just so much talent between them!
Very cool video! I always wondered how PunchOut had such large, flicker-free sprites. I can see why MMC2 was only used for MTPO... seems like it was designed specifically for that game.
Holy crap, this is so cool to see. I never even considered Punch Out being technically impossible to do with sprites alone. Wow. Would it be too far to call that magic in the programming sense?
"whatever that is" Dang, you can barely see YOUR OPPONENT'S MANAGER?! They really did put a lot of detail into such an early, basic-on-the-surface game.
These assembler pioneers worked some amazing sorcery to get these games to play the way they did! So glad these topics get broke down and explained in a way that not only the seasoned coders can relate to but the non coder can follow and see it in action! 🤘🏼
Holy shit, your videos are such a treat. Not only is the explanation digestible, but these deep dives are tech history. Someone in the god damn 80s came up with this solution to work around the NES' limitations! Top moments for me: 1. Going from "what's with that $FF corridor to Mac's right?" to actually shouting "OF COURSE!!!!" when you revealed the obvious 2. Going from "what do you mean, scrolling? There's no scrolling here", to "OF COURSE IT SCROLLS!" 3. Watching Don Flamenco take a barrage behind the outro cards
I haven't watched your channel in a while but every time I come back it's a treat. This stuff is so fascinating and you always explain it extremely well. The visual hints help a lot.
Super excited on the trajectory of these recent videos - Sprite 0 teasing and hopefully some MMC3(or 4, or 5) game dives to follow, like Kirby's Adventure. Love your work!
@@DisplacedGamers I never even gave an ounce of thought that Little Mac could be scrolling left and right. But now it makes perfect sense. Seems to me like the NES could do this game on its own (no cheater chip) if there were no crowd detail? Slightly related but not really: Sega had some games on the Master System that were ALL background tiles and they were woefully choppy.
Another great video. As someone who loves the MTPO game, seeing the internal gears and mechanisms explaining how it all works is fascinating. Thank you so much!
The wild thing is the MMC2 was only ever used in Punch-Out!! Crazy that Nintendo would have spent the money to develop and fabricate the chip for only one game.
WOW. 🤯 This video was astonishingly, fantastically clear, exploratory, and revealing. I'm truly shocked at how much more went into the game's design than I thought. And believe me, I appreciated the hell outta this game as a child. It was legendarily stunning.
Dude I love your videos. It's kinda like seeing into the mind of the developer when you can see and understand how the code creates the illusion on screen.
Just the perfect video for me! Working with tile based stuff and getting your video in the recommendations. This is both inspiring and.... well, INSPIRING!
It's pretty amazing how limited the capabilities of the NES actually were on it's own, & just how much capability these simple Mapper chips gave the system. Thank god for those chips, or we simply wouldn't have had the amazing experience we had with games on the NES back in the day. I know if it weren't for the NES I surely wouldn't be the gamer that I am now.
Thank you for this video! I've been wondering what the MMC2 chip does that's so different from the others, but I've never had a clear example before this video.
To think that punch out began as a uniquely displayed arcade game with it's vertical 2 screen setup, it makes sense it would be uniquely displayed on the NES as well.
And this is why I love this channel. You really made it easier to understand printing E and D on those tiles. The programmers who innovate to compensate for the hardware at the time impress me more than the games themselves.
This is criminally short! -- Loved every second of it though! Thanks for making this! Would love to learn more about scrolling tricks like the offscreen "sprite" swaps! -- Seems Punch-Out was full of them!!
I've never had a NES or even played one and I don't intend to... but, your explanations and details in presenting such deep technical information - in the most presentable and understandable way is completely brilliant! Just quite an amazing achievement in all your videos, and that's just complements on your presentation, let alone the wonder of breaking-all-this down into byte ;-) size viewer amounts! Cheers to your efforts!
Great episode! Made me feel smart to have deduced what that slab of blue tiles was for, and what scrolling was used for, before you said it. Watching the video felt like solving a logic puzzle; when all the prior points make sense, the final point just slides into place. :)
This game always puzzled me, but at the point you said that Lil' Mac was built out of background tiles I had an "aha!" moment, looking at the screen, seeing the parts that would and wouldn't scroll left and right. The devs were really clever. Always good seeing these deep dives, I always look forward to the next one. Exploring MMC chips and their capabilities would make for a great series!
As soon as you started talking about status bars I went "Oh neat, I wonder where sprite 0 is?" And then you immediately started talking about sprite 0 hit... You know your audience lol!
Dude Ive been wanting a nice comprehensive video on this Chip for years! You always hear MMC this and MMC3 that, when MMC2 has little coverage due to its small number of games.
Little piece of trivia about sprite 0: the Japanese Mario 2 has worlds A-D, but the letter characters are one pixel taller than the numbers, so as soon as the background starts scrolling the bottom row of pixels of the letter scroll with it and come back around every 2 screens.
Poor Little Mac. Even in his own game, he's a background character. But seriously, I always find it impressive the lengths developers will go to simulate what they need to sell the experience. Well done. Before this vid, I never would have known that Mario and Little Mac were part of the background. Mac being in front of the opponent's sprite and moving certainly fooled me.
The interesting use of the name table reminds me of International Karate+ for C64, which is a three player Karate Champ clone. It has the status bar just like Punch Out that takes a considerable amount of the screen, uses sprites to draw player one and two(three sprites tall and wide each, using a size of 8x16 with sprite scaling used(yes, the C64 can do scaling, but only in increments of 100%) to make them square and look massive), with player 3 being drawn using background tiles, using the name table as a double buffer to draw his next frame and then scrolling the screen 100% every frame to make it look as though player 3 is moving. It even uses the unused parts of the name table it never scrolls into(the status bar, which is a good 1/3 of the screen) to store some extra code thanks to the fact the C64s RAM is shared between the 6502 and the VIC 2(C64's graphics chip).
This game is more impressive knowing how clever they had to be designing it. One thing I'm not sure I understand is: Why write FD and FE continuously? The zero-hit only has to happen once, why do the nametable lookups have to happen constantly in the empty space? Is it just a matter of ensuring the tilesets actually get swapped? It strikes me as overkill but I may have missed a detail.
When you explained that the MMC2 chip switched banks as soon as it saw an $FE/FD character I wondered why they simply did not add a single such character on screen. But the need for scrolling and the fact that the background tiles are at times overdrawn by Mac and/or other animations probably explain that "carpet bombing" approach. Part of me still wishes they had been more subtle but I will generously let that go. 😋 Thanks for the video!
You kinda have to love how the Punch-Out team essentially worked around the NES limitations with parallax scrolling, sonething that in itself shouldn't be possible with the NES
That leaves me wondering, though, since CPU is waiting for Sprite 0 hit anyway, why cannot it be used for both setting the H scroll value and changing the CHR ROM bank?I Is it that the MMC2 does not allow to change the bank directly by the CPU, but requires loading of a specific tile ID to do that?
The MMC2 method is already in sync with the pattern reading code. The CPU will be notified that sprite 0 was hit but may not get to it at the same time. Also, programming the bank swap requires something like 5 writes to the same address with bit shifts inbetween, so that's a lot of cycles to spend on a timing-critical application.
The sprite 0 hit could very well have been used for swapping the graphics. But there's one other graphical element that was not mentioned, and that's the "GET UP" text that appears when you're knocked down. The game plots down FD tiles to the left of the text, then FE tiles afterwards in order to make the text use the crowd bank instead of Mac Graphics bank.
@@Dwedit Yes, through this video I was under impression, that there is only one change of CHR banks per frame, at any time. Having more of them per frame would definitely use MMC2's capabilities more.
to this day Punch Out looks impressive. Art and technical achievement in perfect harmony. So much life, personality and humour in every boxer, outclassing Super Punch Out imo.
Even when I was a clumsy little kid struggling to beat Mario Bros and blown away by RBI Baseball, I knew some games like Contra and Punch Out had magic inside the cart. I had a very primitive understanding that my NES was a computer made to play games, but seeing this now... I'm just as impressed as that little kid 😂
i may not have much respect for the play-ability of many NES games, but the way the programmers performed magic to even get what they got is very interesting. they were wizards, using every trick in the book to make ideas works.
I don't know much about mmc2 graphics, but I know that Punch Out handles graphics very differently from any other game I've seen, Like Mac being a BG tile. so I hope this video clears things up.
The unorthodox use of animated background tiles can be seen in both the GB and the Turbo versions of Ninja Spirit. And, regrettably, Cyber Shinobi (*shudders*)
You just blew my mind. Scrolling and background tiles. I would’ve never guessed. One of my favorite NES games and I’m always surprised by it. Wonder how they get the background tiles in front of the sprites? I’m guessing some trickery coding and one color being the transparent color?
That's just a basic feature of the NES. You can set each sprite to go in front of or behind the background. The opponent in Punch-Out!! is made up of a bunch of smaller sprites, so it's possible to have e.g. the top half be in front of the crowd while the bottom half is behind Little Mac, even though there's only one background layer.
im more curious about how they got little mac to show up in front despite being on the background layer, i thought the background layer was always drawn under
I wonder about that too! It's gotta be a sprite priority thing. The sprites can be set to be behind the background. There a might be point before toward crowd where the opponent sprite changes to be in front of the background. Maybe priority changes when the sprite reaches close to Little Macs area. But I'd be curious to hear how exactly!
Cartridge games enabled this sort of added hardware upgrade to make more complex games work on ageing hardware. Squeezing every bit of performance out of minimal hardware is what really makes Nintendo great. It continues on to this day with Switch!
Once again the tech stuff is superb 👍 There's definitely enough data to mess around with by means of GG codes. Like, say, painting completely fresh tile graphics replacing the original Little Mac image into something......more exotic. In the meantime, I recalled an old trick of getting a hero's sprite go behind the foreground layer, like we can easily see in all-time Capcom's classic - Duck Tales whenever Scrooge walks into a secret wall passage. I'm pretty sure it's a simple trick, but still a nicely looking one 🤔
Really loving this channel! Thank you so much for all the work you've been putting into it. It's inspired me to start some SNES dev/hack work. Do you ever plan to cover more of the SNES in the future?
SNES is a possibility. There is so much to talk about for the various systems out there. NES is fortunate to have so much documentation that helps reduce research time (although it still takes quite some time to reverse).
The way punch out utilized the NES' limitations will never not be amazing. Another game is recca. Recca did some magic
limitation breeds ingenuity.
@@theghostofthomasjenkins9643: Something of an increasingly lost art form that not enough people appreciate anymore.
I was confused the first time I played Recca because it looked like it didn't belong on the system.
i'm pretty convinced that recca uses voodoo magic to make the nes do all that
Yes.
I love the cleverness of programmers from the 80s & 90s. Creativity comes from constraints, not unlimited resources.
You are absolutely right! This is why I cherish these types of games. Because the people who made them had to think out of the box and make compromises and creative solutions to accomplish what they want. As opposed to nowadays where computers are so dreadfully powerful, that you could make whatever you want with literally no limitations or effort. No foresight for memory space or efficiency in the slightest.
When you said "Wait, scrolling in Punch-Out? We'll get to that later", my thought was "Yeah, of course! For the training scene where you run through the city and Doc rides the bike!", but the real answer was MUCH cooler.
Any chance you might do a little bonus video about how that scene works? The parallax effect is really cool.
It's probably just multiple uses of the same thing. Whenever sprite 0 is hit, it gets moved down to the next set point and the scrolling speed is updated. At least that's my educated guess.
@@ovalteen4404 the way NES hardware is set up, you can only have one sprite zero hit per frame. Once the hit happens and you get the interrupt, it stops checking until it resets during vblank.
@@Robomandude Bummer.
So I analyzed the code itself then. It splits the screen into 10 equal-sized scrolling regions (except for first and last). Region 0 is the NY skyline. Regions 1-9 begin at the water line (where sprite 0 is) and cover a few lines each. Region 10 begins at line 158 and covers the bottom half.
It uses a bit rotation scheme for each region to determine when that region should advance. Obviously the closer it gets, the more bits enter the rotation for that region. It uses a precise timing loop to set the horizontal scroll for each region. So it's doing the NES version of "racing the beam".
The entire backdrop from sidewalk to NY skyline is background. Coach and Mac are sprites (obviously). The posts are also sprites, and are kept in sync with region 9.
So everything above the water runs at one slow speed, and everything below the water runs at the same fast speed, and the 20 or so lines inbetween are where all the parallax magic happens.
do it!
A video looking at all instances of parallax effect in NES games would be interesting, seeing how different programmers approached it.
You've really helped me appreciate how amazing this game is by 1987 standards.
Or 1988?
that 'whatever this is' in the corner looks like the arm of the ring corner man/coach that stands on the ground of the ring. His arm resting on the ring just happens to coincide where the scroll breaks from top to bottom, that can't have been an accident. How neat...
13:47 I loved that scene where he said "It's scrollin' time" and then scrolled all over the place
I love these deep dives of NES games.
When I played this as a teenager in the 80s, I always thought programming this game must have been so much simpler than ‘complex’ games like SMB. There’s no moving around anywhere you want, only 1 screen to deal with, and 1 basic mechanic of game play. I had no idea it required the MMC2 and a bunch of tricks to pull it off, and that it would have been next to impossible without that extra chip. Wow…just wow! Thanks for explaining it!
I love that scrolling trick to make Little Mac animate smoothly and the fact that they had to finagle Mario Ref's smooth movement into different tiles for it to also look like smooth sprite movement. Clever stuff indeed. Thank you for making another great video!
So, basically we're controlling the background instead of a moving sprite? This is certainly unique!
I always thought the larger opponent in Punch-Out was drawn as background tiles, pretty cool to know Little Mac is the background "sprite"
Me too, but that would not make it possible to have the larger opponent overlap with the crowd as it sometimes happens in the video!
Holy crud this blew my mind like 7 times. I always wondered how the programmers rendered such huge opponents along with Mac, and I figured some of it must really be background, but DANG, the developers really pulled out all the tricks here! SCROLLING?!? I never would have guessed that. Awesome job walking us through this, DG!
Thank you!
Nintendo made an updated version, the MMC4, which was used only on three Famicom games. The two Fire Emblem games and Famicom Wars. Though I can't recall offhand what was different from the MMC2.
I know in the Fire Emblem games, tiles FD and FE are the left and right window border tiles. That means they are literally used to "open" and "close" the menu tileset on each scanline.
I think it was a larger bank switching space. Not too sure
I always knew that Punch Out!!! used some trickery, but it was easy to hand-wave it all and say "Eh, MMC2 witchcraft". But it never settled right with me; sure, the gfx stuff made some sense, but to put the smooth animation on that seemed like a lot.
So now you're showcasing the scrolling flag and how the MMC2 steals the show and saves memory and time. I knew that the work involved would have been heavy, but I had no clue how much time was saved by having the MMC2 go "Whoops, new bank!" half-way through a screen draw.
I even tried to understand the game, but I didn't fully understand how these pieces fit together. It's really quite amazing to see how much they could do with what they had. I'd have loved to see the Blaster Master and Punchout coders build *anything* together. There's just so much talent between them!
Very cool video! I always wondered how PunchOut had such large, flicker-free sprites. I can see why MMC2 was only used for MTPO... seems like it was designed specifically for that game.
Holy crap, this is so cool to see. I never even considered Punch Out being technically impossible to do with sprites alone. Wow. Would it be too far to call that magic in the programming sense?
Bank switching done by hardware compare + the scrolling surprise made this a really fascinating episode. Thanks for dissecting this one for us :)
1:29 - Oh?
Ayo it's BoundaryBreak :00
Little Mac is a background character in his own game
This is without a doubt my favorite channel on YT. Lately I've started to look for your videos a couple days before they get released.
"whatever that is"
Dang, you can barely see YOUR OPPONENT'S MANAGER?! They really did put a lot of detail into such an early, basic-on-the-surface game.
These assembler pioneers worked some amazing sorcery to get these games to play the way they did!
So glad these topics get broke down and explained in a way that not only the seasoned coders can relate to but the non coder can follow and see it in action!
🤘🏼
This is one of the weirdest mappers, totally fascinating to see your breakdown.
Holy shit, your videos are such a treat. Not only is the explanation digestible, but these deep dives are tech history. Someone in the god damn 80s came up with this solution to work around the NES' limitations!
Top moments for me:
1. Going from "what's with that $FF corridor to Mac's right?" to actually shouting "OF COURSE!!!!" when you revealed the obvious
2. Going from "what do you mean, scrolling? There's no scrolling here", to "OF COURSE IT SCROLLS!"
3. Watching Don Flamenco take a barrage behind the outro cards
I haven't watched your channel in a while but every time I come back it's a treat. This stuff is so fascinating and you always explain it extremely well. The visual hints help a lot.
Thank you, DaVince!
Super excited on the trajectory of these recent videos - Sprite 0 teasing and hopefully some MMC3(or 4, or 5) game dives to follow, like Kirby's Adventure. Love your work!
Mmc5 is such a beast, it would take multiple videos for itself only, and I would watch them all XD
Someone was really happy with themselves when they thought up this trick.
These videos always, always make me even more appreciative of the creativity of game devs.
I had read about how PunchOut does its graphics but seeing it in motion truly makes the magic apparent. Nintendo sure had some 8-bit geniuses!
Excellent explanation, thank you! This is very relevant to my interests. :)
You definitely inspired me to create this video. Haha
@@DisplacedGamers I never even gave an ounce of thought that Little Mac could be scrolling left and right. But now it makes perfect sense. Seems to me like the NES could do this game on its own (no cheater chip) if there were no crowd detail? Slightly related but not really: Sega had some games on the Master System that were ALL background tiles and they were woefully choppy.
Another great video. As someone who loves the MTPO game, seeing the internal gears and mechanisms explaining how it all works is fascinating. Thank you so much!
I enjoy programming and find this fascinating. Great work!
People who say their favorite Christmas movie is Die Hard now have a favorite NES side scroller.
Legit lol from me, Gpig20.
The wild thing is the MMC2 was only ever used in Punch-Out!! Crazy that Nintendo would have spent the money to develop and fabricate the chip for only one game.
Love your videos, I always upvote before i even watch them because I know they will be packed with great info. Thank you for making these!
I'm never gonna be able to unsee that interrupt sprite 😭😭😭
wait i have not watched the whole video, oh no this better not ruin the game for me, lol.
I think what you do is really cool!
Thanks, Kosmic!
Out of all the channels i subscribe, this channel I actively check for new videos often. LOVE the technical detail.
Thanks!
I'm a indie game dev and am always inspired by your videos. It's amazing how clever they had to be to get a result that's so seamless.
WOW. 🤯 This video was astonishingly, fantastically clear, exploratory, and revealing. I'm truly shocked at how much more went into the game's design than I thought. And believe me, I appreciated the hell outta this game as a child. It was legendarily stunning.
Dude I love your videos. It's kinda like seeing into the mind of the developer when you can see and understand how the code creates the illusion on screen.
Just the perfect video for me! Working with tile based stuff and getting your video in the recommendations. This is both inspiring and.... well, INSPIRING!
It's pretty amazing how limited the capabilities of the NES actually were on it's own, & just how much capability these simple Mapper chips gave the system. Thank god for those chips, or we simply wouldn't have had the amazing experience we had with games on the NES back in the day. I know if it weren't for the NES I surely wouldn't be the gamer that I am now.
Thank you for this video! I've been wondering what the MMC2 chip does that's so different from the others, but I've never had a clear example before this video.
Each video you do is better than the video before it. Always a great experience!
To think that punch out began as a uniquely displayed arcade game with it's vertical 2 screen setup, it makes sense it would be uniquely displayed on the NES as well.
And this is why I love this channel. You really made it easier to understand printing E and D on those tiles.
The programmers who innovate to compensate for the hardware at the time impress me more than the games themselves.
This is criminally short! -- Loved every second of it though! Thanks for making this!
Would love to learn more about scrolling tricks like the offscreen "sprite" swaps! -- Seems Punch-Out was full of them!!
YAY! another POWERFUL video from DISPLACED GAMERS! good stuff!
that's incredible! it's not often i learn things about the NES, or NES games, i didn't already know. but this one blew my mind!
These punch-out videos are some of the most amazing things I've seen.
12:43 is the greatest anime twist of all time
This was fascinating! I love these types of deep dives!
I've never had a NES or even played one and I don't intend to... but, your explanations and details in presenting such deep technical information - in the most presentable and understandable way is completely brilliant! Just quite an amazing achievement in all your videos, and that's just complements on your presentation, let alone the wonder of breaking-all-this down into byte ;-) size viewer amounts! Cheers to your efforts!
You are missing out.
Displaced Gamers video comes out, I click, watch, and enjoy. Excellent content, sir.
Thank you!
I can't unsee the world dodging as Little Mac dodges, thanks for that DG! ;)
Ha!
Very creative way to work around limitations!
This game absolutely deserves more credits than it is being given for all these tricks.
Great episode! Made me feel smart to have deduced what that slab of blue tiles was for, and what scrolling was used for, before you said it. Watching the video felt like solving a logic puzzle; when all the prior points make sense, the final point just slides into place. :)
This game always puzzled me, but at the point you said that Lil' Mac was built out of background tiles I had an "aha!" moment, looking at the screen, seeing the parts that would and wouldn't scroll left and right. The devs were really clever.
Always good seeing these deep dives, I always look forward to the next one. Exploring MMC chips and their capabilities would make for a great series!
Wow, that is some great technical wizardry right there. I never knew Punch-Out was so sophisticated.
I never imagined that the little mac was drawing as a background!!
Thank you for a great video.
As soon as you started talking about status bars I went "Oh neat, I wonder where sprite 0 is?" And then you immediately started talking about sprite 0 hit... You know your audience lol!
Ironically, the thingy on the right is more audience.
It is fascinating how programmers knew to overcome obstacles to deliver the experience we love to this day.
Dude Ive been wanting a nice comprehensive video on this Chip for years! You always hear MMC this and MMC3 that, when MMC2 has little coverage due to its small number of games.
Just two games use MMC2, Mike Tyson's Punch-Out and Punch-Out Featuring Mr. Dream
Little piece of trivia about sprite 0: the Japanese Mario 2 has worlds A-D, but the letter characters are one pixel taller than the numbers, so as soon as the background starts scrolling the bottom row of pixels of the letter scroll with it and come back around every 2 screens.
Thanks for the video!
I love your videos/classes, DG man! XDDD
Poor Little Mac. Even in his own game, he's a background character.
But seriously, I always find it impressive the lengths developers will go to simulate what they need to sell the experience. Well done. Before this vid, I never would have known that Mario and Little Mac were part of the background. Mac being in front of the opponent's sprite and moving certainly fooled me.
Great Displacer Gamer video for sure.
Awesome, I'm always glad to see a new video, and I somehow missed the one from a month ago? Time to fix that!
The interesting use of the name table reminds me of International Karate+ for C64, which is a three player Karate Champ clone.
It has the status bar just like Punch Out that takes a considerable amount of the screen, uses sprites to draw player one and two(three sprites tall and wide each, using a size of 8x16 with sprite scaling used(yes, the C64 can do scaling, but only in increments of 100%) to make them square and look massive), with player 3 being drawn using background tiles, using the name table as a double buffer to draw his next frame and then scrolling the screen 100% every frame to make it look as though player 3 is moving.
It even uses the unused parts of the name table it never scrolls into(the status bar, which is a good 1/3 of the screen) to store some extra code thanks to the fact the C64s RAM is shared between the 6502 and the VIC 2(C64's graphics chip).
Nicely done, yet again.
Clever! Fantastic video.
That thing you were confused about while discussing the Sprite-0 Hit concept is the opponent's manager's arm, as he's leaning on the ring apron.
I feel like it is more of a leftover if anything.
I love explanations like this!
This game is more impressive knowing how clever they had to be designing it. One thing I'm not sure I understand is: Why write FD and FE continuously? The zero-hit only has to happen once, why do the nametable lookups have to happen constantly in the empty space? Is it just a matter of ensuring the tilesets actually get swapped? It strikes me as overkill but I may have missed a detail.
Tiles FD and FE are blank tiles, so it doesn't hurt anything to display them.
I don't understand most.of.this but your channel still rules. Thanks for all of it.
When you explained that the MMC2 chip switched banks as soon as it saw an $FE/FD character I wondered why they simply did not add a single such character on screen. But the need for scrolling and the fact that the background tiles are at times overdrawn by Mac and/or other animations probably explain that "carpet bombing" approach.
Part of me still wishes they had been more subtle but I will generously let that go. 😋
Thanks for the video!
You kinda have to love how the Punch-Out team essentially worked around the NES limitations with parallax scrolling, sonething that in itself shouldn't be possible with the NES
There were similar horizontal scanline parallax effects in both Mega Man 3 and 5, among other games.
This video is so awesome! Amazing how devs worked hard to bypass hardware limitations.
The scrolling trick is so easy and neat. I love the way developers handle limitations.
I feel like such a dork for gasping and going, "Whoa!" when you first showed the scrolling during his dodges.
That leaves me wondering, though, since CPU is waiting for Sprite 0 hit anyway, why cannot it be used for both setting the H scroll value and changing the CHR ROM bank?I
Is it that the MMC2 does not allow to change the bank directly by the CPU, but requires loading of a specific tile ID to do that?
The MMC2 method is already in sync with the pattern reading code. The CPU will be notified that sprite 0 was hit but may not get to it at the same time. Also, programming the bank swap requires something like 5 writes to the same address with bit shifts inbetween, so that's a lot of cycles to spend on a timing-critical application.
The sprite 0 hit could very well have been used for swapping the graphics. But there's one other graphical element that was not mentioned, and that's the "GET UP" text that appears when you're knocked down. The game plots down FD tiles to the left of the text, then FE tiles afterwards in order to make the text use the crowd bank instead of Mac Graphics bank.
@@Dwedit Yes, through this video I was under impression, that there is only one change of CHR banks per frame, at any time.
Having more of them per frame would definitely use MMC2's capabilities more.
Very cool! Really enjoyed this overview!
I like how they used the backdrop color for the floor ring, its basically a safe zone to load the new graphic
to this day Punch Out looks impressive. Art and technical achievement in perfect harmony. So much life, personality and humour in every boxer, outclassing Super Punch Out imo.
Great explanation
I knew MTPO used some voodoo to do what it did, but I didn't know it went to these lengths. props to the programmers for just the vison this took.
I think the tiles highlighted at 14:05 depict the opponent's coach standing ringside.
Even when I was a clumsy little kid struggling to beat Mario Bros and blown away by RBI Baseball, I knew some games like Contra and Punch Out had magic inside the cart. I had a very primitive understanding that my NES was a computer made to play games, but seeing this now... I'm just as impressed as that little kid 😂
i may not have much respect for the play-ability of many NES games, but the way the programmers performed magic to even get what they got is very interesting. they were wizards, using every trick in the book to make ideas works.
I don't know much about mmc2 graphics, but I know that Punch Out handles graphics very differently from any other game I've seen, Like Mac being a BG tile. so I hope this video clears things up.
Great video!
The unorthodox use of animated background tiles can be seen in both the GB and the Turbo versions of Ninja Spirit. And, regrettably, Cyber Shinobi (*shudders*)
You just blew my mind. Scrolling and background tiles. I would’ve never guessed. One of my favorite NES games and I’m always surprised by it. Wonder how they get the background tiles in front of the sprites? I’m guessing some trickery coding and one color being the transparent color?
That's just a basic feature of the NES. You can set each sprite to go in front of or behind the background. The opponent in Punch-Out!! is made up of a bunch of smaller sprites, so it's possible to have e.g. the top half be in front of the crowd while the bottom half is behind Little Mac, even though there's only one background layer.
Just awesome.
im more curious about how they got little mac to show up in front despite being on the background layer, i thought the background layer was always drawn under
I wonder about that too!
It's gotta be a sprite priority thing. The sprites can be set to be behind the background.
There a might be point before toward crowd where the opponent sprite changes to be in front of the background.
Maybe priority changes when the sprite reaches close to Little Macs area.
But I'd be curious to hear how exactly!
Cartridge games enabled this sort of added hardware upgrade to make more complex games work on ageing hardware. Squeezing every bit of performance out of minimal hardware is what really makes Nintendo great. It continues on to this day with Switch!
Once again the tech stuff is superb 👍 There's definitely enough data to mess around with by means of GG codes. Like, say, painting completely fresh tile graphics replacing the original Little Mac image into something......more exotic.
In the meantime, I recalled an old trick of getting a hero's sprite go behind the foreground layer, like we can easily see in all-time Capcom's classic - Duck Tales whenever Scrooge walks into a secret wall passage. I'm pretty sure it's a simple trick, but still a nicely looking one 🤔
Really loving this channel! Thank you so much for all the work you've been putting into it. It's inspired me to start some SNES dev/hack work. Do you ever plan to cover more of the SNES in the future?
SNES is a possibility. There is so much to talk about for the various systems out there. NES is fortunate to have so much documentation that helps reduce research time (although it still takes quite some time to reverse).