16 Seconds of Super Mario Bros Explained in 12 Minutes

preview_player
Показать описание


Become a member of the community!

Music
Vividity

Novadrome
@officialnovadrome

Footage

The Slow Mo Guys
@theslowmoguys

Gaster
@gaster_

Kosmic
@Kosmicd12

Niftski
@Niftski

AndrewG
@AndrewgSpeedruns

Web2000
@lain_web2000
Рекомендации по теме
Комментарии
Автор

Some of you have pointed out errors I've made in the video and I'd like to address them, the two I'm seeing the most are:
1. Mario isn't Sprite 0
2. Sprite 0 wasn't created by the software team, it's part of the hardware functionality

Mario being Sprite 0 was a joke I included that hasn't landed for a lot of people, for those of you with a technical knowledge of the NES it rightly didn't make sense for Mario to be Sprite 0 as there as good reasons for him to not be Sprite 0. For those of you that may be encountering these concepts for the first time it created confusion and made the video harder to follow. In the future I won't be making jokes with concepts core to the topic of the video, thanks for the feedback on that. In this instance I could have explained why the coin sprite was used and why Mario isn't a good spite 0, that added context may have helped clear up some of the confusion.

As to Sprite 0 being created by the software team, this was an error on my part, the team that made SMB didn't create a function in the code for sprite 0, it's a part of the hardware. Thanks to everyone that pointed this out, I should have clued in when reading the NESDEV wiki that it wasn't a software thing.

Thanks for bringing these issues to my attention, it's important for info to be correct and I'll work harder to ensure that it is in future uploads.

Abyssoft
Автор

This whole video is a convoluted way of saying that "the sprite zero is used to tell when a v-blank ends; if it's blank it never ends". Let me explain what actually happens in a clear way:

Sprite zero is used to determine when a special state called a v-blank ends. A vertical blank, or v-blank, is the time between the last line of the current frame and the first line of the next frame, which is never defined clearly in the video for some reason. You can think of it as the time between frames. The v-blank is important because it is the time the PPU is NOT accessing the sprites and is instead waiting for the next frame(it's idle), meaning that this is the time when you can safely update data in shared memory or registers without causing a data race(writing to memory that's currently being read).

Super Mario Bros. uses the little coin there to determine when a v-blank ends. There's nothing particularly ground-breaking or genius about this, they just decided it made sense since it's always there. The coin, which is sprite zero, is used by the NES to calculate a pixel-hit against the background(it's not used for collision detection like this video seems to suggest). If opaque pixels overlap, then a sprite zero hit is considered to have happened. This means that amongst other things, games can use it to tell when a v-blank period ends, as the hit state is cleared before the electron gun starts drawing the next frame, thus allowing programmers to know when it's unsafe to access memory shared with the PPU.

This means that in Super Mario Bros. you can lock the game in an infinite loop by finding a way to corrupt the UI coin(sprite zero) such that it becomes a fully transparent sprite, which consequently would never trigger the v-blank end state. Players found out that a specific set of steps causes buffer overflow that overrides sprite zero with arbitrary memory garbage that makes it transparent. This makes the game believe it's unsafe to update the graphics and it ends up locked in an infinite loop waiting for the now impossible v-blank end state.

In other words: sprite zero is used to tell when the time between frames ends, and if it's transparent, it never ends. By following a specific set of steps, players can cause a buffer overflow that overrides sprite zero with garbage memory that makes it transparent, thus locking the game in an infinite loop waiting for the v-blank end state.

dantemeriere
Автор

Sorry to be "that guy" but a couple things are a bit iffy imo:
* Sprite 0 is clearly intended for the purpose of doing something like a scrollbar, it's not a genius move on Miyamoto's part.
* The devs of SMB didn't "create a function called a sprite 0 hit", the sprite 0 hit is something built-in to the hardware that the developers made use of.

GuyDude-hkuy
Автор

Gotta say the engagement bait here is really subtle, he gets so much else in this video wrong that it seems entirely possible he wouldn't even know how to pronounce miyamoto's name

zoew.
Автор

the way you pronounced shigeru miyamoto phsyically hurt

nutelllla_
Автор

please tell me all the obvious mistakes are intentional ways to get people to write angry comments for engagement.

sleepyzeph
Автор

This crash is crazy! Very impressive! Does this mean that Super Mario Bros has a new speedrun category? Crash percent?

beatziegraham
Автор

Please get someone who understands how CRTS and the NES work to help you with the technical details as I did not understand most of what you said. Just a minor criticism since you make great videos, just a way for you to improve :D

AriScarlet
Автор

This is a video that you watch, then turn to Retro Game Mechanics Explained and re-binge the entire thing so you truly understand what's going on lol

thelord
Автор

5:39
CRTs don't send information in the form of light, but instead in the form of an electron beam, which is shot by a device quite literally called an "electron gun"
these electrons then excite the phosphorescent coating on the back of the tube, which causes it to glow

adicsbtw
Автор

This video feels a little rushed and underdeveloped.

Mathster
Автор

shageroh maiyamoto is a very brilliant man

glassta
Автор

the technical explanations and diagrams in this video are full of inaccuracies and blatant errors. any research was clearly done very hastily, with no attempt to actually understand what's going on. issues range from misnaming several concepts (and mispronouncing the name of one of the most prolific video game designers of all time), to completely misrepresenting what a sprite-zero hit actually does and why it works. i honestly think you should delete this video and either rewrite it with help from somebody who knows what they're talking about, or just scrap it altogether

ultiomos
Автор

POV: you are watching a man explain something he doesn't himself understand

pafnutiytheartist
Автор

"This is the fastest someone has ever managed to crash the game"
*laughs in hitting the console with a hammer*

vibrantoucan
Автор

I understood nothing except "make coin count go up 4 times in 1 frame while coin count ends in 1=crash"

dillmo
Автор

Your technical details are incorrect in some aspects. I won't go too far into detail since most of the comments are already pointing this out. But I really hope you get someone who actually knows the NES proofread your work. As stuff like Sprite Zero was not an invention by Miyamoto. But a hardware quirk as the NES draws to the screen, you could ask it to notify the register after the first sprite is rendered and then execute whatever you want.

Sinistar
Автор

Every time he said the sprite 0 hit was at the same time each frame while playing a video of Mario moving all over the place, I got distracted trying to figure out how that could possibly be true. I don't know what the purpose of lying about that for so long was, but as least lie in a way that doesn't break the explanation

sysop
Автор

The technical explanation in this video is inaccurate to a degree which is almost satirical...

GusLeeney
Автор

Well, that certainly wasn't a BAD video... but... definitely an explanation of questionable accuracy. Fine enough for a VERY rough overview I guess?

DaveyL