So, you're stuck wandering around the grounds of an airfield, you can't leave, it's super over crowded, and there's scant amenities like food, water, and toilets, but the whole experience is super expensive. Ah, so it's a real airport, then.
I came here on Marcel's recommendation, watched the video, thoroughly enjoyed it and checked the Videos section on the channel for what I expected to undoubtedly be more great content...only to find this is the only video so far. Wow! What a great start to a channel! Definitely subscribed and looking forward to more content.
When you said "so incredibly bad that it was amazing" I already knew it'd be an underflow/wrap-around exploit. Also props for managing it with one less ride than Marcel.
4:18 The it is *almost certainly* -32768 to +32767; computers have for ages preferred to solve the asymmetry that way (it’s called two’s complement). Basically, all the bits have the values you’d expect in binary, except the most significant is worth -32768 instead of +32768; this makes the lowest possible value 10000000 00000000 and the highest possible 01111111 11111111.
I agree with this. For unsigned values, the lowest value is always 0 and the highest is always two to the power of whatever minus 1. It would be incredibly weird if a signed 16-bit value had a different maximum value than the 15-bit unsigned version. Also, what 10000000 00000000 translates to under the hood is actually completely irrelevant in this case, since it's just an off-by-one error in terms of how many guests we need for it to flip (it would be needed if you're computing the absolute minimum number of guests you'd need for it, but there's always some randomness in how fast they got lost etc anyway). It also has to do with the way computers do arithmetic, why bother making a special case for 100000, just use a bit (or byte) more if you need a bigger number. But that extra byte more was really expensive back in the day.
@@HazelProductions Yeah, it isn’t relevant for this exactly where the rollover point is, just that it’s around 4k. And I haven’t checked; maybe Chris Sawyer was allergic to two’s complement and implemented a sign-magnitude thing thing or something else weird, but that would be extremely unlikely. It was programmed in assembly for x86, x86 has native instructions for dealing with 16-bit two’s complement integers and for no signed types of a similar range as far as I know, and there’d be no benefit to using a non-native format.
@@danielrhouck Sawyer likely used 16-bit int here because it fits in a short x86 register and those were historically slightly faster than extended 32-bit registers.
-he found 5000 just milling around, and let them on his ferris wheel. They told him exactly how happy they were and a furrow reached his brow, For they were trapped in the park against their will, but smiles filled the crowd.
Everyone, lets keep this comment alive. It's a nice benchmark to see how many of people getting here through Marcel Vos will sub. Counter is at 28 as of when I clicked on the link.
the underflow/overflow for OpenRCT2 is likely in the 2 billion range like the lowest floor of Skull Cavern in Stardew Valley, since it's probably based around 2^64
Fun fact: in the end you can see that guest with low energy actually drown slower than fresh happy guests. The first 300 die fast, then it takes a lot of time until the rest dies. This game has so many fun/hidden interactions in the way it works. Great video!
Quick correction: a flip from the lowest possible negative number to the highest possible positive number is not called an 'underflow'. It's just called overflow, the same name given to a flip from the highest positive to the lowest negative. 'Underflow' is the name given to floating point imprecisions caused when the absolute value of an expression is too low to be represented by any combination of significand and exponent, and the value is then either rounded to 0 or attributed one of many low-precision "subnormal" values.
@@r4masami en.wikipedia.org/wiki/Arithmetic_underflow "Storing values that are too low in an integer variable (e.g., attempting to store −1 in an unsigned integer) is properly referred to as integer overflow, or more broadly, integer wraparound. The term underflow normally refers to floating point numbers only, which is a separate issue."
How it started: "Let's see if I can play this cute video game with a goofy restriction!" How it ended: "I have imprisoned and tortured enough damned souls to fuel my blood sacrifice, transforming evil to righteousness. May the heavens shake at my power!"
Genius solution. Even the guests applaud your chutspah. This was really entertaining, had me laughing with the narration. Btw would you consider reducing your screen resolution for future videos? It's hard for me to read the text on mobile
So in original RCT-2/Classic there is something in the code that causes the park-rating to glitch? Like how old games used to work where if a number is low enough to a lowest-programed-limit it will circle around to the opposite side being the high-limit? Like how 'Parallel Universes' in Mario 64 work when speedrunners go to far they circle around a loop.
Very good video! Though I feel you could be more casual, you're a new to making videos, so it feel its unfair to expect you to be super fluid. Very fun video tho! Loved the ending!
At the end when you open the no exit sign the park rating appears to stay up even though I think the number of guests drops below the number needed to get the underflow, is this because they're no longer lost? Could you use that to beat openrct2 by changing the sign right before the scenario ends so you still have enough guests but none of them are lost?
The way over/underflow works is by running out of digits. Imagine counting using only you fingers, you can go from (0, +10) or if you used one hand for negative and the other for positive, you can count from (-5, +4). If you (4+1) you overflow to the opposite limit, -5. And if you subtract 1 from -5, you underflow to the maximum positive number. Now in RCT, these limits as stated in the video are around (-32k, +32k) and this can be reached within a few (4-5) thousand guests. I see that open RCT is programmed in C++ and in that language, the integer minimum and maximum values are something like (-2 billion, +2 billion). So, with 5k guests you're just at -35k rating and it still works. With 100k guests you're only on, say, -1 million rating. It still fits within the negative number space that C++ has and you will "never" underflow this super large number.
@@MaartenvanHeek This is not relevant to my point. My point was that, at the end where he removes the sign preventing them from exiting, you can see the number of guests drop below the amount needed for the overflow (so it would wrap back around to negative) but the rating still remains positive, implying the rating is no longer being propped up by that overflow. Those guests are no longer lost, because they can find the exit, so they are no longer providing a negative *to* overflow, so the rating is positive because of the other positive factors, not because of the overflow.
@@3liony yeah but only positive rating gain possible here is "happy guests" and "number of guests". Given that almost none of them are happy and happy guests caps at 153 or something, we can't reach 600 rating with this method
The negative rating for casualties caps out at 1000. So essentially he's upgrading from lost to casualty with a higher rating hit until it reaches 1000, which compared to a rating of 7 per lost guest, there is about 143 less lost guests required to reach the wraparound point once casualties are maxed out. *edit* Whoops, thought you were talking about the drowning scenario. Yeah, I'm not sure why opening it up and letting them leave doesn't immediately go down to 1 and takes some time, maybe there is a delay in the penalty being removed for a bit after they leave.
So, you're stuck wandering around the grounds of an airfield, you can't leave, it's super over crowded, and there's scant amenities like food, water, and toilets, but the whole experience is super expensive.
Ah, so it's a real airport, then.
Here from Marcel, fantastic video
Same here.
Ditto
Basically you're making the park so bad that guests start to like it ironically- genius
It's a pretty Morbin' park, I agree
Yea, but most of them like it before it was cool 😂
"He loves and hates the ring. Much as he loves at hates himself."
I came here on Marcel's recommendation, watched the video, thoroughly enjoyed it and checked the Videos section on the channel for what I expected to undoubtedly be more great content...only to find this is the only video so far.
Wow! What a great start to a channel! Definitely subscribed and looking forward to more content.
I agree! Cant wait to see more park shenanigans lol.
Yep me too
When you said "so incredibly bad that it was amazing" I already knew it'd be an underflow/wrap-around exploit. Also props for managing it with one less ride than Marcel.
bro made a 12 minute video out of ads and a no entry sign, and i respect it
The drowning peeps at the end really turned into an upside down cross? Incredible.
Fantastic finally a guide that doesn’t involve deleting the airfield for coaster money 👍
4:18 The it is *almost certainly* -32768 to +32767; computers have for ages preferred to solve the asymmetry that way (it’s called two’s complement). Basically, all the bits have the values you’d expect in binary, except the most significant is worth -32768 instead of +32768; this makes the lowest possible value 10000000 00000000 and the highest possible 01111111 11111111.
I’m pretty sure too. It’d be cool if someone looked at the code to confirm it.
I agree with this. For unsigned values, the lowest value is always 0 and the highest is always two to the power of whatever minus 1. It would be incredibly weird if a signed 16-bit value had a different maximum value than the 15-bit unsigned version. Also, what 10000000 00000000 translates to under the hood is actually completely irrelevant in this case, since it's just an off-by-one error in terms of how many guests we need for it to flip (it would be needed if you're computing the absolute minimum number of guests you'd need for it, but there's always some randomness in how fast they got lost etc anyway).
It also has to do with the way computers do arithmetic, why bother making a special case for 100000, just use a bit (or byte) more if you need a bigger number. But that extra byte more was really expensive back in the day.
@@HazelProductions Yeah, it isn’t relevant for this exactly where the rollover point is, just that it’s around 4k. And I haven’t checked; maybe Chris Sawyer was allergic to two’s complement and implemented a sign-magnitude thing thing or something else weird, but that would be extremely unlikely. It was programmed in assembly for x86, x86 has native instructions for dealing with 16-bit two’s complement integers and for no signed types of a similar range as far as I know, and there’d be no benefit to using a non-native format.
@@danielrhouck Sawyer likely used 16-bit int here because it fits in a short x86 register and those were historically slightly faster than extended 32-bit registers.
The devil went down to Amity, he was looking for a soul to steal-
He stole over 5000
-he found 5000 just milling around, and let them on his ferris wheel.
They told him exactly how happy they were and a furrow reached his brow,
For they were trapped in the park against their will, but smiles filled the crowd.
This video is insane major props
Thanks! I was surprised that it worked
there would be major props at an airfield 🤔
youtube algorithm took me deep to this video with 136 views from a guy with 19 subs lol
These are the places where magic happens.
Everyone, lets keep this comment alive. It's a nice benchmark to see how many of people getting here through Marcel Vos will sub. Counter is at 28 as of when I clicked on the link.
@@gloweye 102
201
290 (291now) subs, 6.6k views
Came here from Marcel Vos's channel. Absolutely thought this was impossible, laughed when you revealed underflow trick. Great video.
I love how drowning all those guests at the end sounds like a whole lot of simultaneous SOS morse code
I was thinking more like a cardiac arrest with the heart rate monitor tone going beeeeee....
Apparently the secret is underflow, and lots of angry guests
the underflow/overflow for OpenRCT2 is likely in the 2 billion range like the lowest floor of Skull Cavern in Stardew Valley, since it's probably based around 2^64
I’m amazed how you took the amusement out of amusement park and still beat the scenario.
Lol great content!!!!
Fun fact: in the end you can see that guest with low energy actually drown slower than fresh happy guests. The first 300 die fast, then it takes a lot of time until the rest dies.
This game has so many fun/hidden interactions in the way it works. Great video!
So the trick to beating drowning is depression
Animosity Airfield. Brought to you by nuclear Gandhi.
Not sure why I never thought about underflowing the park rating. After all, you can overflow basically everything else in this game.
That pond at the end was overflowing with drowning guests
"Oh this will be a nice video...."
*hears cynthia theme*
*PTSD Flashbacks*
No matter where you, she’s always there
I'd like to think that the 5000 guests just suffer from a mass psychosis and actually start enjoying their doomed existance. Great video.
Quick correction: a flip from the lowest possible negative number to the highest possible positive number is not called an 'underflow'. It's just called overflow, the same name given to a flip from the highest positive to the lowest negative.
'Underflow' is the name given to floating point imprecisions caused when the absolute value of an expression is too low to be represented by any combination of significand and exponent, and the value is then either rounded to 0 or attributed one of many low-precision "subnormal" values.
Ah okay. I just used underflow cause that made sense lol
I have never heard of the word "underflow" being used this way, from what I can tell this would be called an "integer underflow". Source?
@@r4masami I think the IEEE 754 standard has something about that, but otherwise, I can look elsewhere
@@r4masami en.wikipedia.org/wiki/Arithmetic_underflow
"Storing values that are too low in an integer variable (e.g., attempting to store −1 in an unsigned integer) is properly referred to as integer overflow, or more broadly, integer wraparound. The term underflow normally refers to floating point numbers only, which is a separate issue."
This situation would be colloquially referred to as a underflow but more precisely referred to as a wraparound
this is brilliant. guessed where you were going with it as soon as the rating inspector window came up, and I love that it's actually possible.
The ending brought a tear to my eye. Just imaging how happy the guests had to be, to finally be able to walk past that sign.
They are all leaving at the end sad because the video is ending
I like that you put links to the songs in the description, very nice.
Marcel pointed me this way! Great video.
I enjoyed the merciless slaughter at the end.
Dude you are a genius. Loved this video
Cynthia champion theme for opening BGM, AND the Wally theme from ORAS. Exquisite taste.
How it started: "Let's see if I can play this cute video game with a goofy restriction!"
How it ended: "I have imprisoned and tortured enough damned souls to fuel my blood sacrifice, transforming evil to righteousness. May the heavens shake at my power!"
Enmity Airfield, perhaps?
I like your science voice.
this was great! i love math and RCT so this is perfect for me... showed up on my home screen, well done algorithm for once lol
This is so vanilla the beans are literally growing from my tv speakers
Ahhh this is why my park rating was 999
I had 14900+ guests in my park trapped on a path.
It’s weird hearing about RCT2 without a Dutch accent
Genius solution. Even the guests applaud your chutspah. This was really entertaining, had me laughing with the narration.
Btw would you consider reducing your screen resolution for future videos? It's hard for me to read the text on mobile
Hail Sata- I mean Hail ZLouks! My childhood frustration with Amity Airfield has finally been relieved.
Holy Shit Backwards long Jumping in RCT2!
Math be mathing. Crazy vid!
I think you may have recreated Woodstock 99. Excellent video!
Marcel Vos brought me here, this is legendary lol
Nice, Integer underflow.
"in fact, he is so mad, that his head turns into a piece of paper" lmao! but why tho?
"Quinn G. has drowned!" The perfect ending
Somewhat satisfying seeing 5000+ guests go to 0 in 20 seconds 🤣
This was both informative and entertaining. I shall subscribe myself to you, Dark Lord.
i tried it but doesnt work on ipad rct2 unless i did it wrong...
holy shit that ending though 😭🤣🤌
Today I learned that "so bad it's good" is all about integer overflow!
I knew the second bugs started being talked about this was going to be an underflow but it was still such a cool video!
That RSE soundtrack. I approve
Video quality on par with Marcel Vos 👍
that was dark at the end lolllll
LOL, nice ending. I loved doing that at the of each game.
i think a lot of players got Post Traumatic Scenario Dissorder from just the title
Solid work
Can you beat? Yes. Can I beat? No.
Being God of the Dead has its perks
Eventually everyone dies and ventures to the afterlife
So in original RCT-2/Classic there is something in the code that causes the park-rating to glitch? Like how old games used to work where if a number is low enough to a lowest-programed-limit it will circle around to the opposite side being the high-limit?
Like how 'Parallel Universes' in Mario 64 work when speedrunners go to far they circle around a loop.
The piece of paper is his soul
The Demiurge challenge.. good god
Great video.
Marcel Vos with 50% less accent and 100% more hyped music
I came here Because the "Hello Everyone :)" -Guy told me so
Looks like a "No" to the question in the title.
RIP Quinn G.
This park is the Morbius of Amity Airfield
Amazing work
I was almost disappointed, then the last 20 seconds show up 😂
Marcel was right, it did indeed take a glitch
Amazing, loved it
awesome. just awesome. thanks. Now i have to try it lol
0:43 ... oh. you'll overflow the rating. It must be a signed short int then.
Great video!
How i feel at a tourist place...
Underflow bugs are fun.
Very good video! Though I feel you could be more casual, you're a new to making videos, so it feel its unfair to expect you to be super fluid. Very fun video tho! Loved the ending!
I dont even play the game but this was pretty interesting ngl
Great vid 🔥
Legendary
Woah! Great job!
At the end when you open the no exit sign the park rating appears to stay up even though I think the number of guests drops below the number needed to get the underflow, is this because they're no longer lost? Could you use that to beat openrct2 by changing the sign right before the scenario ends so you still have enough guests but none of them are lost?
The way over/underflow works is by running out of digits. Imagine counting using only you fingers, you can go from (0, +10) or if you used one hand for negative and the other for positive, you can count from (-5, +4). If you (4+1) you overflow to the opposite limit, -5. And if you subtract 1 from -5, you underflow to the maximum positive number.
Now in RCT, these limits as stated in the video are around (-32k, +32k) and this can be reached within a few (4-5) thousand guests.
I see that open RCT is programmed in C++ and in that language, the integer minimum and maximum values are something like (-2 billion, +2 billion).
So, with 5k guests you're just at -35k rating and it still works. With 100k guests you're only on, say, -1 million rating. It still fits within the negative number space that C++ has and you will "never" underflow this super large number.
@@MaartenvanHeek This is not relevant to my point. My point was that, at the end where he removes the sign preventing them from exiting, you can see the number of guests drop below the amount needed for the overflow (so it would wrap back around to negative) but the rating still remains positive, implying the rating is no longer being propped up by that overflow. Those guests are no longer lost, because they can find the exit, so they are no longer providing a negative *to* overflow, so the rating is positive because of the other positive factors, not because of the overflow.
@@3liony yeah but only positive rating gain possible here is "happy guests" and "number of guests". Given that almost none of them are happy and happy guests caps at 153 or something, we can't reach 600 rating with this method
The negative rating for casualties caps out at 1000. So essentially he's upgrading from lost to casualty with a higher rating hit until it reaches 1000, which compared to a rating of 7 per lost guest, there is about 143 less lost guests required to reach the wraparound point once casualties are maxed out.
*edit* Whoops, thought you were talking about the drowning scenario.
Yeah, I'm not sure why opening it up and letting them leave doesn't immediately go down to 1 and takes some time, maybe there is a delay in the penalty being removed for a bit after they leave.
The range is probably the first one because ints usually have +1 range in the negatives
Destroy Bench After it's Been Placed Speedrun any% .001 seconds
Pat H. I pressed F.
The end of that reminded me of the End of Evangelion
Very clever way to exploit the game. Great idea to subvert the game's programming.
This is insane.
The message sound at the end
It just flat lined
Wait, his face gets turned into a piece of paper?!?
🙏🏻
MOOOAAAAAR
You MAD LAD, Marcel Vox sent me here
Genius
Marcel Vas send me. A good recommendation
hello evreewan end welkom too anodder viddeeyo
Bet you can get 999 with less guests if you made a maze of pathing with a bunch of do not enter signs.
Nice !