Super Mario World - Random Number Generation

  Рет қаралды 373,483

Retro Game Mechanics Explained

Retro Game Mechanics Explained

Күн бұрын

How does random number generation work in Super Mario World? It's all explained right here.
LINKS
Twitter (updates): / retrogamemechex
Patreon (support): / rgmechex
Discord (discussion): discord.rgmeche...
INLINE LINKS
Learn more assembly instructions: Coming soon!
SMW Yoshi Clips Explained: • Super Mario World Yosh...
SMW Powerup Incrementation Explained: • Super Mario World Powe...

Пікірлер: 559
@KairuHakubi
@KairuHakubi 7 жыл бұрын
I always thought those birds looked unnaturally natural.
@DRSDavidSoft
@DRSDavidSoft 5 жыл бұрын
@@RandomNameLastName811 Indubitably indeed!
@sabin97
@sabin97 5 жыл бұрын
@@RandomNameLastName811 it's truly true....
@gurbuzsanl3626
@gurbuzsanl3626 5 жыл бұрын
Y'all dummy dumbs
@gunarcom
@gunarcom 4 жыл бұрын
Someone put some heart and soul into those birds and it shows.
@General12th
@General12th 2 жыл бұрын
I wonder if those birds were supposed to show up in more places and get more screen time, thus justifying the extra effort that went into them. Or maybe it was late in development and some programmer had a free hour to burn just for fun.
@nebularain3338
@nebularain3338 4 жыл бұрын
I love this. Assembly is still the dark arts for many people, and it's often brushed over or dumbed down, so to have it explained this way is very helpful. More please!
@bojcio
@bojcio Жыл бұрын
Honestly, you can't explain assembly to non technical laypeople without dumbing it down a lot, its extremely abstract. As far as 99.9% of humanity is concerned assembly doesn't even exist and how computers work is literally the dark arts. What I'm saying basically there's no way to talk about assembly other then to go all out or dumb it down completely. People will either know what you're talking about or be completely clueless.
@CoTeCiOtm
@CoTeCiOtm 8 жыл бұрын
11:54 What?!?!?! I am mindblown!! In all the years I have been playing this game, I have never, ever seen a 1-up come out by Kamek! I didn't even know that was possible!
@omikronweapon
@omikronweapon 7 жыл бұрын
I don't even recall a thwimp. Can't be certain about the coins though. Very interesting.
@piratesephiroth
@piratesephiroth 7 жыл бұрын
Yeah I've played the game enough to see that happening.
@CoTeCiOtm
@CoTeCiOtm 7 жыл бұрын
OmikronWeapon I was playing yesterday and I actually got a Thwimp twice!
@mike309game
@mike309game 7 жыл бұрын
i already got one
@trenzinhodaalegria8012
@trenzinhodaalegria8012 7 жыл бұрын
I have but only once. Its VERY very rare.
@MrJibaku
@MrJibaku 4 жыл бұрын
I’m too stupid to understand these videos, but still am entertained.
@ryanvandoren1519
@ryanvandoren1519 4 жыл бұрын
Not stupid mate, just inexperienced.
@thecianinator
@thecianinator 4 жыл бұрын
@@ryanvandoren1519 it's just a colloquialism, I for one have no idea what an "exclusive or" is and it's never explained in the video, but I know I'm not stupid. I'm just stupid at watching this video. I still like it though
@nebularain3338
@nebularain3338 4 жыл бұрын
Do you have any programming experience at all? If not then you are not stupid. If you had been coding for 20 years and still didn't understand this, then "maybe" you would be stupid.
@VoidHalo
@VoidHalo 4 жыл бұрын
Stupidity and ignorance are two very different things. And I assure you, you are not stupid. You simply don't understand what's being said. But believe me when I say you're capable of understanding it one day. Just don't worry so much about understanding it and just learn what you can when you can, but keep trying to learn. Never stop trying because you won't learn if you don't try. Just look up things you don't understand one thing at a time, and take as long as you need to understand them. If you find there's something else you need to know in order to understand what you've looked up, then take a step back and look that up. Don't worry about your end goal, just enjoy the journey and keep at it. I'm in the process of learning this stuff myself, so here are a few topics to get you started. 6502 CPU, there's a good primer called EASY6502 which depending on your skill level, may or may not be helpful. But you will find it helpful at some point. Hexadecimal and binary numbers are the best place to start if you're completely new to this stuff. Logic gates/logical operations, like NOT, AND, OR, NAND, NOR, and XOR would be the next step. Windows comes with a calculator with a programmer mode that will let you play with these operations on hex and binary numbers once you understand them better. There's also a free program called logisim that will let you play with logic gates and make logic circuits so you can play with them and see how they work. It also lets you make more complicated digital circuits to the point where you can start to make parts of a CPU or even an entire CPU if you know enough. It's a great tool for learning about this stuff. CPU registers would probably be the next logical step after learning that stuff. This stuff alone should take you quite some time to get comfortable with. But like I said, don't be afraid to look stuff up. Consult multiple sites, videos and resources if you don't understand one. Take your time and be patient. And don't give up. Before you know it, you'll be learning about stuff you never would have imagined you would understand. Even if you just learn binary and logic gates it will probably give you a huge boost to your self esteem and your confidence in your ability to learn. Some of this may be helpful. Some of it may be useless to you. Some may not even interest you. Or none of it may interest you. But I hope you at least get something out of this post I've made. It's probably a bit all over the place, but my hope is it can at least get you started in the right direction. Finally, if you're looking for a video series to understand CPUs from a hardware level, Ben Eater has a great series here on KZbin where he builds a CPU from the ground up using electronics and chips etc. It can be very helpful in understanding assembly language to understand how a CPU works like that as well. Best of luck to you in your endeavour. Enjoy the journey and be patient and persistent. I know I've already said that, but it's the most important advice I can give you. Cheers.
@evanaorrandomguywhodosenot3713
@evanaorrandomguywhodosenot3713 4 жыл бұрын
@@VoidHalo OMG YOUR SUPER SMART
@jdaster64
@jdaster64 8 жыл бұрын
Looking forward to this series! I'm loving how many TAS-ers / glitch-hunters are doing this sort of fully-fleshed out explanation of glitches and game mechanics these days! Also, I love the "extended 1-up sound" in the intro.
@RyanFaeScotland
@RyanFaeScotland 6 жыл бұрын
Well, that's my weekend viewing sorted. Thanks for the list. I' sure you've saw them but for anyone who hasn't DotsAreCool and SethBling also have some good stuff. It's Mario specific but also discusses how the SNES works.
@nedwork
@nedwork 5 жыл бұрын
Me too. Edit: He actually “RGM” explained it in his latest vid. (rgm means retro game mechanics)
@phantazap
@phantazap 4 жыл бұрын
If you're interested in pokemon glitches, one person I recomend a good bit is RETIRE.
@VoidHalo
@VoidHalo 4 жыл бұрын
I agree. It's wonderful how many resources on this sort of thing are popping up on KZbin. I wasn't aware of the other channels you mentioned though. So thanks for that. I'll be sure to check them out.
@jimmyhirr5773
@jimmyhirr5773 3 жыл бұрын
Another recommendation: decino has a lot of videos about how Doom and Doom II work.
@LeviathanRX
@LeviathanRX 5 жыл бұрын
My boss calls the RNG to determine whether or not I get a raise, it never calls back tho.
@BlazingShadowSword
@BlazingShadowSword 4 жыл бұрын
It sounds like it's calling to the wrong area in the ROM. You might need to pipe through the floor to reach the ROM and break the block that keeps returning as a 0 for a raise. I warn you though, if you aren't careful you'll corrupt reality.
@PC_Simo
@PC_Simo 4 жыл бұрын
Does he also call RNG to determine, whether or not he fires you?
@LeviathanRX
@LeviathanRX 4 жыл бұрын
I dug through reality and broke the wrong block, now I'm laid off. oops
@imveryangryitsnotbutter
@imveryangryitsnotbutter 3 жыл бұрын
@@LeviathanRX So YOU'RE the one that caused COVID!
@MyNaymIsSnek1526
@MyNaymIsSnek1526 18 күн бұрын
@@BlazingShadowSwordMEEEDIIIC!
@DavidVitez
@DavidVitez 6 жыл бұрын
This wasn't just a good gaming video, this was a fantastic computer science video. *Subscribed!* The breakdown of the assembly and pseudo-code functions was really good and I especially loved the graphs of the random outputs and how you highlighted the important parts of the data via color and animation.
@MellyMellouange
@MellyMellouange 7 жыл бұрын
That was a good video about SMW's RNG. Actually taught me which address to use in order to make the seed different ~ One of the sprites I made ticked the RNG every frame Mario is on the ground. Since it's a more dynamic element, it works well to make it less of a pattern.
@eddievhfan1984
@eddievhfan1984 6 жыл бұрын
BTW, if anyone was interested, the PHY and PLY instructions are to PusH the Y register onto the stack and PulL (pop) to pop the stack top into Y. This is the RNG subroutine saving the value in Y while it uses the register for other purposes, then restores the value of Y prior to going back to where the subroutine was called.
@Coolfolder
@Coolfolder 5 жыл бұрын
2:16 "Click here to learn more assembly instructions" The hover-over text says "Coming soon!" and I'm looking forward to it! I know i could probably find this information elsewhere online but I enjoy how you explain things :)
@rm_steele
@rm_steele 3 ай бұрын
still waiting?
@SandTurtle
@SandTurtle 2 жыл бұрын
i love how you just popped onto the platform with top-tier editing
@marscaleb
@marscaleb 7 жыл бұрын
I'm honestly surprised how few calls the game uses for random numbers.
@wilekrowan3610
@wilekrowan3610 5 жыл бұрын
The random fire and birds are hypnotizing. It feels like it gives the game a unique personality.
@dixie_rekd9601
@dixie_rekd9601 7 жыл бұрын
no idea why youtube recommended this to me but this video is incredibly well made.
@Mullkaw
@Mullkaw 5 жыл бұрын
Oh boy, I can't wait to learn more assembly instructions!
@knuti27
@knuti27 4 жыл бұрын
Guess you can, or, must, because that still hasnt happened.
@arielsproul8811
@arielsproul8811 4 жыл бұрын
We need to learn reality-assembly to call the assembly video
@suezuccati304
@suezuccati304 3 жыл бұрын
Ersanio has a tutorial where he explains each opcode, it's really helpful
@guntertv304
@guntertv304 7 жыл бұрын
I didn't understand a thing, but it sounds smart, so i like it
@Chaos89P
@Chaos89P 6 жыл бұрын
The "Random number generator" creates a pseudo-random number based on a complex set of values (the "seed," I think) that has a tendency to change constantly. Unless there's something hardware-related, computers are actually incapable of creating random numbers.
@randymccoy2527
@randymccoy2527 6 жыл бұрын
You, I like you.
@sabin97
@sabin97 5 жыл бұрын
@@Chaos89P yeah. the "random" number generators are just a very convoluted mathematical calculation based on a "seed" value.....if you always use the same "seed" the "random" number will always be the same. usually what you do is set the seed to the current time-stamp of the computer clock. that will create a better random number than a static seed, of course nothing beats a good hardware random number generator....but aint nobody got time for that!
@cube2fox
@cube2fox 5 жыл бұрын
@@sabin97 But the current time stamp is already somewhat random. And when the seed is random, the resulting RNG is too.
@sabin97
@sabin97 5 жыл бұрын
@@cube2fox it confuses me when you use the word "but" while agreeing with what i just said....
@DukowskiX
@DukowskiX 7 жыл бұрын
Man, the RNG use was really smart in this world, the blinking and bird movement implementation and was mindblowing. I am very sure the guy in charge of the bird movement made first the movement to be based on certain cycles and he hated it and made something that really resembled nature. Awesome video.
@Billl1234
@Billl1234 7 жыл бұрын
I learned 6502 assembly back in the 1980s when it was cool. I am so glad to see more people taking an interest in assembly again. You can do fantastic things with it.
@spenceroximina6951
@spenceroximina6951 4 жыл бұрын
"Asl = Arithmetic Shift Left" Me: "Asl = Age Sex Location"
@neosiaxiom4211
@neosiaxiom4211 4 жыл бұрын
American Sign Language
@arielsproul8811
@arielsproul8811 4 жыл бұрын
A sS funnLy meme
@Brindlebrother
@Brindlebrother 3 жыл бұрын
A simple lute
@mubbees2236
@mubbees2236 5 жыл бұрын
Thanks for the assembly code from the SMB3 rom! It's great to see deep explanations for this cool stuff!
@Darxide23
@Darxide23 7 жыл бұрын
Taking topics I already know a lot about and still making the video interesting enough to get me to watch the entire thing. I love it. Keep it up.
@emersoneisen
@emersoneisen 4 жыл бұрын
I know this is off topic, but his videos are so cleanly edited.
@ThJakester897
@ThJakester897 8 жыл бұрын
I really liked this. I was especially impressed with the production values. The only thing I wasn't able to understand is what Bit Test actually does; I came in with no prior knowledge of how assembly works, and at this part, I felt I needed at least a little. I don't know if I'm outside your target audience, but if I am, the clarity of your explanations is pretty excellent, as I was able to understand everything else even without prior knowledge.
@JorWat25
@JorWat25 8 жыл бұрын
After watching a few times, I think what it does is use an AND gate on each bit of the two numbers you're using (so 1 AND 1 is 1, but everything else is 0), and if the new number is all 0s, Z gets set to 1.
@nathanisbored
@nathanisbored 8 жыл бұрын
Effectively, Bit Test is checking if the two values have any set bits in common. To be precise, BIT just checks if (Accumulator value) AND (Operand value) = 0 If yes, set Z-flag. If not, clear Z-flag. I'm assuming you know how the 'logical AND' operator works (he did explain it for a split second in the video). Basically it puts a 1 in each bit which had a 1 in both operands. The accumulator is always implied to be the first operand.
@andrewsauer2729
@andrewsauer2729 7 жыл бұрын
I think(someone else can correct me if I'm wrong) it is an AND operation that sets the Z flag if the result is zero.
@IronLotus15
@IronLotus15 7 жыл бұрын
It is an AND operation between corresponding bits in the operands, yes.
@IronLotus15
@IronLotus15 7 жыл бұрын
Correct.
@tassaron
@tassaron 7 жыл бұрын
Cool new channel! As a modern newbie programmer I find it educational and inspiring to hear specifics of how old games worked. Also nice having suspicions from my childhood confirmed
@timothyflisk3439
@timothyflisk3439 5 жыл бұрын
13:23 What's the game in the middle. Is that a Super Mario Kart ROM hack? Edit: The game is called Yoshi's Safari. It's a SNES Super Scope On-Rails Shooter.
@Ruebn
@Ruebn 5 жыл бұрын
It's called yoshi's safari
@ELVTechnology
@ELVTechnology 5 жыл бұрын
Your understanding into the details on this is mind blowing. I'm impressed!
@QubicTom
@QubicTom 8 жыл бұрын
Well made and very informative! Looking forward to the next episode! (I was never sure if podoboos were random, thanks for clearing it up!)
@KuraIthys
@KuraIthys 7 жыл бұрын
That's a pretty weird RNG... Not using true randomness is not just a cost issue. A lot of game design benefits from the predictability of a pseudo-random generator over a true random generator for instance. For example, Consider recording a replay of what the player was doing. For this to work, you have to replicate EVERYTHING correctly. You could record the state of all of the game objects for every frame, but that would take up huge amounts of storage. But, if all the game objects have deterministic state, then all you need is the starting state and the player inputs, which takes up much less space. This is possible if the game is entirely based on predictable deterministic logic... Or... If you use a pseudo-random number generator. (since this is actually deterministic for a given seed) It looks too like it's setting the seed to an exact starting value too. Which... Means the sequence of things in the level is kind of predictable in some ways That's an odd choice. See, when developing PC demos I found the most common technique to get a 'random' outcome is to use the system clock. Even though the Pseudo RNG function isn't random, it seems fairly random as long as your seed value keeps changing. The system clock has the virtue that barring someone messing with their clock (or the clock running for longer than it was designed to), the seed will never be the same, so 'random' events will truly seem random, even though they aren't, because the seed used is never the same twice. Unfortunately, an old console like the snes has no system clock. So... You have to come up with a different way of creating the initial seed values... And so far, I haven't actually been able to think of one that works consistently... Which... May well explain why SMW just gives up and sets it to 0 every time a level loads...
@martinhowser4094
@martinhowser4094 6 жыл бұрын
Outside of using a predictable number generator for determinism.. there is never ever ever ever such a thing as a real random number generated by a computer (yet.. maybe once we go quantum)
@mariannmariann2052
@mariannmariann2052 5 жыл бұрын
I think it could be set to a global timer value.
@russotragik
@russotragik 5 жыл бұрын
I came up to a "better random" by making a clock based on VBLANK interrupt cicles, so the user will never be able to press start at exactly same time ever, and three different random routines based on which number was on clock. But nowadays, with very cheap RTC circuits, it would be possible to save the daytime in the SRAM
@pyramidschema8668
@pyramidschema8668 5 жыл бұрын
@@martinhowser4094 There is one way, machines with a requirement for very strong cryptography like military grade communications hardware can be equipped with a hardware random number generator that samples some type of physical quantum phenomenon, such as decay of a radioactive substance, or noise on a photoelectric circuit caused by unpredictable arrival of photons. These are obviously far too expensive for a games console.
@paindavoine_design
@paindavoine_design 5 жыл бұрын
@@pyramidschema8668 you could just use the noise produced by a low resolution camera, it's random I think
@iriscapes
@iriscapes 4 жыл бұрын
@6:10 It should be (note the index 0): rng[2+y] = (byte) (rng[0] ^ rng[1]); instead of: rng[2+y] = (byte) (rng[1] ^ rng[1]);
@iwir3d
@iwir3d 7 жыл бұрын
Well done. I look forward to seeing more videos. Your Super Mario 3 video convinced me to subscribe. Seeing more videos with assembly in them make me want to stick around. And I love retro and game mechanics.
@StormcloudLive
@StormcloudLive 7 жыл бұрын
absolutely fantastic look behind the curtain of what is going on here, great video. Subbed for more of this sort of in dept look at games.
@curtreyes00
@curtreyes00 7 жыл бұрын
1:39 but first we need to talk about parallel universes
@SSoup64
@SSoup64 5 жыл бұрын
Well TJ """""" *H E N R Y* """""" Yoshi.
@binouche2281
@binouche2281 4 жыл бұрын
You're saying this as if it was complicated.
@tangentofaj
@tangentofaj 7 жыл бұрын
This is certifiably one of the most interesting and fascinating and educational things I've ever watched on KZbin.
@i33th4x
@i33th4x 5 жыл бұрын
I really appreciate your channel. Love how you get into the details
@gmwilkiegeorge8685
@gmwilkiegeorge8685 4 жыл бұрын
This man has an exceptional "lecturer" voice! 🙌👍
@potatoonastick2239
@potatoonastick2239 8 жыл бұрын
Cool, will this channel be the Pannekoek2012 but then for SMW? That would be absolutely awesome
@CoTeCiOtm
@CoTeCiOtm 7 жыл бұрын
Butter Bridge 1 done in half an A press coming soon! :D
@scrabblehandforaname
@scrabblehandforaname 7 жыл бұрын
+octacle Look for Some Guy. I know that isn't helpful but that's the name of the user who has done a few no jump levels so far.
@wheedler
@wheedler 7 жыл бұрын
Some Guy is SomeGuy712x
@MegAmi24
@MegAmi24 7 жыл бұрын
CoTeCiOtm But you jump with B.
@want-diversecontent3887
@want-diversecontent3887 6 жыл бұрын
Potato on a stick Yes. But then, who's the Tyler Kenhe?
@SmashHighlights
@SmashHighlights 7 жыл бұрын
I love the pixel perfect gameplay, looks so clean
@scratchy523
@scratchy523 3 жыл бұрын
Great work! I'd like to see more Mario-related mechanic explanations soon!
@youngji273
@youngji273 7 жыл бұрын
Excellent video, glad to see someone actually looking at the assembly code for games rather than not go in depth.
@timmaia5082
@timmaia5082 Жыл бұрын
Always appreciate your videos, thanks for the quality content
@russotragik
@russotragik 5 жыл бұрын
Meah, now we have a RTC circuit to retrive "BIOS Time" to use the epoch time(seconds since Jan 1st 1970) as seed. Anyway, for Sega Genesis I prefer using the "time" taken to user to press start as a seed, and a selector of what randon routine should it trigger.
@quinn7894
@quinn7894 5 жыл бұрын
11:47 Pac-man!
@bienghuo9636
@bienghuo9636 3 жыл бұрын
Me: hearing EOR instead of XOR Me: * insert suprised pikachu face *
@oso_lacion
@oso_lacion 4 жыл бұрын
Hey. I know this is an old video. But the java program is displaying only a lot of zero's. I changed the last line of tickRNG to: rng[2+y] = (byte) (rng[0] ^ rng[1]); And it worked perfectly. I hope it helps
@monicat9110
@monicat9110 5 жыл бұрын
I turned on captions just to see if RNG would be read as orangy
@Yolwoocle
@Yolwoocle 5 жыл бұрын
Lol
@thecianinator
@thecianinator 4 жыл бұрын
Me and Orangey are gonna go get stoned Bubs
@naota3k
@naota3k 7 жыл бұрын
This video, to me, is a great example of "never played it, never thought about it." However, my brain's craving for MORE KNOWLEDGE ABOUT MORE THINGS ON STUFF has me fascinated.
@GlitchCat7
@GlitchCat7 8 жыл бұрын
Excellent discussion and good video! Subscribed, and looking forward to more!
@mattsharp6708
@mattsharp6708 7 жыл бұрын
Found a new channel to binge. Great stuff, man.
@doubleadewi
@doubleadewi 8 жыл бұрын
Good explaining, also good luck on the new channel
@Jason-oc2tf
@Jason-oc2tf 7 жыл бұрын
NEEEEERRRRDD. Kidding, this was actually highly insightful. Loving the videos.
@itsGeorgeAgain
@itsGeorgeAgain 7 жыл бұрын
There are a couple other ways to really make an RNG function ... random. You can read the noise from one of your sound card's audio channels and use that as the seed, or you can read the unfiltered mouse input or the gamepad's unfiltered analog sticks. Heck, there are even servers around the world picking up cosmic radiation and used that to supply a seed for RNG functions to use. And i don't think you can go more random that cosmic noise :D
@General12th
@General12th 6 жыл бұрын
Those options weren't available to Nintendo when building the GBA. Besides, aside from the mistake of resetting RNG at level start, this game handles randomness pretty well.
@lotrbuilders5041
@lotrbuilders5041 6 жыл бұрын
J.J. Shank Using the current score And time with the randomness would have been easy to perfect it
@lancepate
@lancepate 6 жыл бұрын
J.J. Shank This is a SNES game.
@lotrbuilders5041
@lotrbuilders5041 6 жыл бұрын
Lanzo A Reaper Same difference
@mariannmariann2052
@mariannmariann2052 5 жыл бұрын
The cosmic noise is not the most random, a quantum system is actually truly random.
@RengokuGS
@RengokuGS 6 жыл бұрын
Amazing. You really deserve more subs.
@wulfherecyning1282
@wulfherecyning1282 3 жыл бұрын
I understand subpixels as a luck factor, since it's just down to a game having more precise movement than the graphics allow the player to (normally) manipulate. But I don't get speed oscillation
@PC_Simo
@PC_Simo 2 жыл бұрын
It’s kind of the same, but instead of the character’s precise *POSITION,* you’d be interested in the character’s precise *SPEED.* Consider needing to cross a gap that’s 23 units wide. Let’s say, for the sake of simplicity, that your jump lasts for 5 frames, and your speed oscillates between 4 and 5 upf (units per frame), every frame. Now, if your speed = 5 upf on the first frame of your jump, your speeds throughout the jump will be: 5-4-5-4-5; so, your jump will carry you 5 + 4 + 5 + 4 + 5 = 23 units; so, you *WILL* cross the gap. If, on the other hand your speed on the first frame is 4 upf, your speeds throughout the jump will be: 4-5-4-5-4; so, your jump will carry you 4 + 5 + 4 + 5 + 4 = 22 units; so, you *WON’T* cross the gap. As you can’t normally keep track of your precise speed every single frame, that event is considered luck-based. 🤓
@lisamariefan
@lisamariefan 6 жыл бұрын
So even though the RNG will repeat every 27776 calls, it seems that for a lot of the RNG calls that only care about the results of the upper or lower bits; this means that for their relevant behavior that RNG call sequence "repeats" for them every 128 or 217 calls, respectively, even if the full number 16 bit number is itself unique. Also, I have a question: For Wendy and Lemmy their index for which pipe to appear out of is 4 bits long, allowing for 16 possibilities. There's only 8 pipes possible to appear out of. How exactly does the that work?
@RGMechEx
@RGMechEx 6 жыл бұрын
The generated value is used as an index into a table instead of the pipe index directly. It is also responsible for the locations of the dummy Koopas. There are only 16 patterns for where all three show up, even though there could be 105 if every combination were possible.
@jamesraward
@jamesraward 7 жыл бұрын
New favourite channel - hat tip to you good sir
@horaciosalles
@horaciosalles 7 жыл бұрын
Your series is great, great job! Top-quality stuff.
@Psythik
@Psythik 5 жыл бұрын
I'm sorry but you lost me about 60 seconds in. I don't know why I keep watching these videos when they go right over my head.
@Pineapple_Thief
@Pineapple_Thief 5 жыл бұрын
Because they are awesome! :D
@StooRoxxAss
@StooRoxxAss 5 жыл бұрын
Same here but it's because I think they are very hard to understand. I wouldn't say that I'm dumb but these clips make me feel like an idiot :D Nevertheless I'm always impressed how someone can break these codes and explain stuff I'd never understood! :D
@nathanmead140
@nathanmead140 5 жыл бұрын
@@StooRoxxAss i know what all of this stuff is but i also know 6502 assembly and have been learning this stuff for a while
@Chaossandra
@Chaossandra 5 жыл бұрын
Category: *_P e o p l e a n d b l o g s_*
@valoch3187
@valoch3187 5 жыл бұрын
In video about numbers and software.
@idabomb00
@idabomb00 5 жыл бұрын
I like the intro sounds, glitched extended 1up sound from SMB3
@KefkeWren
@KefkeWren 7 жыл бұрын
Couldn't you get true randomness by modifying the seeds based upon a value determined gleaned from controller inputs at irregular intervals? Since no two people play exactly the same, nor even does the same person play the same every time, player inputs should be a completely unpredictable variable.
@mevansthechemist
@mevansthechemist 7 жыл бұрын
KefkeWren Nowadays, I'm sure you could do this. I'd wager that back in the SNES days, memory was too precious to store controller input.
@groszak1
@groszak1 7 жыл бұрын
NES Tetris uses controller inputs to determine next piece so I'm sure it's possible in SNES.
@davidmenlo9305
@davidmenlo9305 7 жыл бұрын
KefkeWren Yes and no. It's not truly random because it's influenced by player input, which is not random.
@Chronon88
@Chronon88 7 жыл бұрын
groszak1 That game has much more resources left for computing since it's just a single screen puzzle game. Think someone mentioned it being common for GBA games though.
@martinhowser4094
@martinhowser4094 6 жыл бұрын
Kinda. On a lot of games we used to seed random number generator based on time it took to start game.. as most people would take random amounts of time to press start (or go thru menus, etc). .. but once game is started, you need to seed numbers based on this value (and record it), that way you can replay what happened in a crash, etc.. to make sure you’ve fixed bug.. (too long to explain )
@Pokefan462
@Pokefan462 5 жыл бұрын
I am the only person that appreciates this, but thanks for using an actually possible Rubik’s cube position in the video. 1:03
@kingdedederealnotclickbait3125
@kingdedederealnotclickbait3125 6 жыл бұрын
oh! so it works like the enigma code kinda! that's pretty neat
@BossDrSample
@BossDrSample 7 жыл бұрын
When a Sprite calls for RNG, the scroopy deep confarbles the regneray and the value of the boopyda bleeps returns to the lappy-slap33 then divide the tripptydoo by the regneray and you'll get the reason why a koopa moves right.
@randomcatdude
@randomcatdude 6 жыл бұрын
English? Please?
@skelskeleton
@skelskeleton 6 жыл бұрын
That’s the joke.
@General12th
@General12th 6 жыл бұрын
No. The real joke is that you don't understand this video, but you're not interested in putting in the time and effort to make it make sense, so you give up and say dumb things instead.
@newsoupvialt
@newsoupvialt 7 жыл бұрын
I could be mistaken, but your intro jingle sounds like the racoon 1-up glitch from SMB3. Intentional? :D
@groszak1
@groszak1 7 жыл бұрын
I'm sure it is.
@SupaCLUCK
@SupaCLUCK 7 жыл бұрын
timmifutz it is
@lavenderinthedark
@lavenderinthedark 6 жыл бұрын
11:50 I never knew what they were called XD I love that name so much
@sundhaug92
@sundhaug92 5 жыл бұрын
True RNGs require additional hardware, and hardware costs money per cartridge, while PRNG has a constant cost independent of how many copies you sell
@joseluisgerman1906
@joseluisgerman1906 5 жыл бұрын
The implementation of RNG routine, with the XOR and the repeated values resembles the structure of some hardware entities called Linear Feedback Shift Registers, or LFSR. These are widely used for pseudo random number generation in programmable hardware devices, such as FPGA. Could you confirm? Btw Great video!
@jackwastakenx2
@jackwastakenx2 7 ай бұрын
RGME really just spawned in making dope videos about retro games, huh.
@elnico5623
@elnico5623 Жыл бұрын
Xor being EOR is probably the most cursed thing ever
@brosephjames
@brosephjames 7 жыл бұрын
Nice vid. Would be interesting to see some statistical analysis on the rng, like a distribution plot, compared to a modern prng. I know some classic games have notoriously bad rngs.
@pmangano
@pmangano 4 жыл бұрын
i have never ever even thought about checking candle animations and lava splash. This is kind of wild since the snes allowed for a kind of limited ammount of code
@DarkMoe
@DarkMoe 6 жыл бұрын
Another great way to get more randomness without additional hardware is to take inputs states at various intervals and use them as seeds. Not that random in a console, but for example in computer software, it's very typical to grab mouse movement, which is very difficult to replicate
@faceshed
@faceshed 7 жыл бұрын
You suggest we go to your speed running channel, but there's no link I can find. What is the channel?
@youmukonpaku3168
@youmukonpaku3168 6 жыл бұрын
the other channel is dotsarecool: kzbin.info
@TheBoredEditor
@TheBoredEditor 8 жыл бұрын
This is amazingly well made!
@MagoMakes
@MagoMakes 5 жыл бұрын
My god man, you're a mad genius.
@lieutenanttofu8334
@lieutenanttofu8334 7 жыл бұрын
Love your videos! Could you raise the volume a little for future ones? Mine is cranked all the way up and I'm having trouble hearing you.
@chrome7fan
@chrome7fan 7 ай бұрын
0:00 A legend was born
@84updown
@84updown 7 жыл бұрын
I just watch these to feel smart Lol actually your videos are awesome. Keep it up
@automat3000
@automat3000 7 жыл бұрын
Wow dude, you are one smart cookie.
@Squeaky_Ben
@Squeaky_Ben 5 жыл бұрын
I wonder, couldnt the RNG-seed just get updated after every frame as well by taking values from other registers? Like Marios position, powerup state or a combination to avoid running into a predictable state?
@alswo9628
@alswo9628 4 жыл бұрын
Ben Probably devs thought that's too much work AND performance drop for some inconsequential effects in the game. Even though the RNG seems cheap computationally, calling it every frame would make them not-so-cheap, especially with our poor 65C816
@Squeaky_Ben
@Squeaky_Ben 4 жыл бұрын
@@alswo9628 hm... different alternative could be that at each level start, you seed your RNG with some values that you have been tracking.
@alswo9628
@alswo9628 4 жыл бұрын
@@Squeaky_Ben They totally could have done that but some reason that "some value" is always zero, as we know :\
@Squeaky_Ben
@Squeaky_Ben 4 жыл бұрын
@@alswo9628 sadly true..
@amisner2k
@amisner2k 7 жыл бұрын
Awesome video. Just wanted to mention that using the system clock is a great way to seed any RNG routine.
@lordofthecats6397
@lordofthecats6397 7 жыл бұрын
I didn't know their were other ways to make a seed...
@Chronon88
@Chronon88 7 жыл бұрын
Aaron Misner Would be good if it would have one and it couldn't be changed easily to make it consistent for every run
@markpenrice6253
@markpenrice6253 6 жыл бұрын
True, or any other kind of timer that runs continually from system boot, which is something that's been used on pretty much every system in the world ever (the earliest i can point to is the built in BASIC of the Sinclair ZX80, and the successor models of course, where using the RANDOMIZE command sets the 16-bit RNG seed to the number of video frames since power-on, repeating every 20 minutes or so in 50hz regions). However, this is specifically about SMW randomness, and as stated, it resets the seeds to zero at the start of each level, so your only actual source of entropy is how many times the RNG has been called in that particular level before the call in question...
@whiz8569
@whiz8569 5 жыл бұрын
Oh boy! ASM tutorial coming soon!
@NoriMori1992
@NoriMori1992 4 жыл бұрын
10:08 For some reason I find this hilarious.
@PC_Simo
@PC_Simo 4 жыл бұрын
Urchins can also blink in practice in SMW, though.
@startide
@startide 8 жыл бұрын
Very well made video, and very informative ! thanks for your hard work !
@sillymel
@sillymel 2 жыл бұрын
At 6:36, in the part where you have RNG values scrolling down the right side of the screen, there is a line "AA 5D F9 7B" where the "F9" should be "F7" instead.
@etansivad
@etansivad 7 жыл бұрын
that was phenomenally good. well done
@gnuvince
@gnuvince 8 жыл бұрын
Great video! Quick question, what software did you use to make those nice animations of the code and registers?
@TheEgg185
@TheEgg185 5 жыл бұрын
gnuvince - 2 years and this question has still not been answered. RIP
@iisded2127
@iisded2127 5 жыл бұрын
1:00 3rd slot is nice
@Smokecall
@Smokecall 5 жыл бұрын
This is surprisingly similar to DooM, but DooM does a preset deck style rng of a pre generated table of numbers instead of pulling from an actual equation everytime
@BlaineC1972
@BlaineC1972 5 жыл бұрын
I understand so little of these videos... But I watch them nonetheless.
@aliaspseudonym525
@aliaspseudonym525 7 жыл бұрын
Great video upload! I don't understand coding or more advanced math that well, but you sure make me wish I do! It's certainly interesting & surprising how much RNG SMW has, & how it works, uninfluential on most of the gameplay as it may be! Looking forward to more neat stuff! Also, the Magikoopa(s) are female? Frankly, I've always been opposed to calling them Kamek, because Kamek was an individual who took care of Bowser & Bowser Junior, not a race. At least, not in my mind, anyway.
@jimday666
@jimday666 6 жыл бұрын
neatly explained!
@danhiebert0001
@danhiebert0001 7 жыл бұрын
Great quality of videos buddy!
@CCheukKa
@CCheukKa 5 жыл бұрын
Very good job for your first video
@TheZeroJoker
@TheZeroJoker 7 жыл бұрын
I wouldn't characterize PRNGs as "consistent and predictable." Consistent, yes, but predictability is something that sophisticated PRNGs are specifically written to avoid. In the case of SMW where you can examine 100% of the memory and code involved, and the PRNG is pretty simple in scope to begin with, then it's predictable (and manipulable).
@romajimamulo
@romajimamulo 4 жыл бұрын
In principle, every PRNG is predictable, because you could run the same code somewhere else and get the same result
@homegamerengineer3747
@homegamerengineer3747 7 жыл бұрын
wow, what a deep dive... I love it. thanks for sharing!!
@invalid_user_handle
@invalid_user_handle 5 жыл бұрын
Despite Super Mario World supposedly being rushed, they sure did put a lot of effort into those birds on Yoshi's House.
@johnweber4504
@johnweber4504 4 жыл бұрын
my original impression from the thumbnail was that there is a tiny asian in the cartridge that solves a rubiks cube repeatedly, and the random number is how many milliseconds it takes to solve it each time
@weirdboi3375
@weirdboi3375 3 жыл бұрын
HIS FIRST VIDEO :)
Level End Glitches in Super Mario World
24:06
Retro Game Mechanics Explained
Рет қаралды 750 М.
Data Redundancy Errors Explained
22:42
Retro Game Mechanics Explained
Рет қаралды 275 М.
大家都拉出了什么#小丑 #shorts
00:35
好人小丑
Рет қаралды 96 МЛН
МЕБЕЛЬ ВЫДАСТ СОТРУДНИКАМ ПОЛИЦИИ ТАБЕЛЬНУЮ МЕБЕЛЬ
00:20
Teaching a Toddler Household Habits: Diaper Disposal & Potty Training #shorts
00:16
More Level End Glitches in Super Mario World
28:15
Retro Game Mechanics Explained
Рет қаралды 285 М.
Pokémon Sprite Decompression Explained
34:04
Retro Game Mechanics Explained
Рет қаралды 280 М.
Super Mario Bros. 3 - Wrong Warp
10:07
Retro Game Mechanics Explained
Рет қаралды 818 М.
Super Mario Bros. Glitch Levels Explained
29:52
Retro Game Mechanics Explained
Рет қаралды 260 М.
Exploring Glitch Level Pointers In Super Mario Bros.
15:19
Retro Game Mechanics Explained
Рет қаралды 177 М.
Why did we Abandon 4:3? | Nostalgia Nerd
16:40
Nostalgia Nerd
Рет қаралды 687 М.
The Unused Content of Super Mario World
1:10:44
gmdblue
Рет қаралды 279 М.
SNES Background Mode 7 - Super Nintendo Entertainment System Features Pt. 05
18:08
Retro Game Mechanics Explained
Рет қаралды 255 М.
Super Mario World Speedrun World Record Explained
33:55
Bismuth
Рет қаралды 573 М.
大家都拉出了什么#小丑 #shorts
00:35
好人小丑
Рет қаралды 96 МЛН