Thread:Botherrr/@comment-33025440-20190225214628/@comment-36589996-20190226020244

Yep Summary: In this video, I will be explaining exactly what I do to collect Watch for Rolling Rocks in 0.5x A Presses. But first, we need to clear something up. Because every time I post a half A press video, I get the same comments over and over asking what it means, even though I always have a whole paragraph in the description explaining it, which even starts with "If you're wondering what a half A press is, read this before commenting to ask." But maybe what you guys need isn't a paragraph, maybe you guys need an example. So, consider Wing Mario Over The Rainbow, not even the whole star. Just consider getting to that cannon platform, which is a necessary part of getting the star. So, how many A presses does it take to get there? Well, If you say zero, that's wrong. Because then Mario can't go far enough. If you say one, Well it's true that Mario can get there with one but we can do a little better. We can do it in half an A press. To do that, we start the level already holding A and then we use that A press to reach the platform. Now hold on, I know what you're thinking, "an a press is an a press. You can't say its only a half". Well TJ "Henry" Yoshi, hear me out. An A press actually has three parts to it. When A is pressed, when A is held, and when A is released. And together, this forms one complete A press. Now, usually, it's the pressing that's useful. Because that's the only part that makes Mario jump. However, sometimes it's sufficient to just use the holding part, which allows Mario to do little kicks, to swim in water, to fall slowly while twirling, and to fall slowly with the wing cap. And as for the release, well, there's currently no cases where that's useful or important, so don't worry about that part. Now, if we map out the required A presses for Wing Mario Over The Rainbow, it would look like this. We merely need to hold A to reach the canon platform, we need to press A to launch from the first canon, and we need to press A again to launch from the second canon. So, how many A presses is that total? Well, it appears to be three, and if we were doing this star in isolation, then yeah, it would be three. But, in a full game A button challenge run, there are other A presses that occur earlier in the run, such as this A press needed to get into the course. So, if we take that A press into consideration as well, then how many A presses would it take? The naive answer would be four. One to enter the course and the three within the course that we established earlier. However, we can do better. We can actually do it in three by simply holding out the first A press to be used for the half A press. Because the half A press only required A to be held, not actually pressed. So in this fashion, Wing Mario Over The Rainbow only adds on an additional two A presses to the run since the first A press just leeches off of a previous A press. So, to capture this phenomenon, we call it 2.5x A presses. On a single star basis, you'd round that up to three. But in a full game run, you'd round it down to two. So, in conclusion, since that first A press counts in some context but adds no additional A presses in other contexts, we refer to it as a half A press. So, going back to the video, you can see that I start the level with the A button already held, as indicated in the bottom left corner. And so in the full game run, this A press will just leech off of a previous one. And so it won't incur an additional A press. Okay, glad that's explained. Now, what am I doing in the video? Here, I'm using a trick called Scuttlebug Transportation. You see, like most enemies, scuttlebugs have a home, which is just a point in 3d space. And they'll patrol a certain radius around that point. So, if Mario enters that radius they will lunge at him to attack. But, unlike most other enemies, a scuttlebug's home can change positions. Because if a scuttlebug bumps into Mario, the scuttlebug's home will update to where the scuttlebug was when the collision occurred. So, by strategically luring the scuttlebug to the edge of its radius and bumping into it, we can effectively transport the scuttlebug and its home. So, that's what I'm doing here. Note that we can't actually transport a scuttlebug to outside of its native room. They actually get stuck at the door. So, if your dream was to bring all the scuttlebugs together for one big jamboree, I'm sorry but it's not gunna happen. Also worth noting is that scuttlebugs will actually disappear if they walk into a wall while too far below their current home. So, I do have to be careful to avoid that. It's pretty weird if you've never seen it before but I'm pretty sure they did it so that if a scuttlebug jumps into a hole, it wouldn't just walk around down there. Anyway, I'm transporting the scuttlebug to the corner right below the Watch For Rolling Rocks star. Because next, I do a trick called Scuttlebug Raising and here's how it works. On the left I show a bird's eye view of the scene and on the right, I show a view from the side. Now, when Mario leaves the Rolling Rocks room, the scuttlebug deactivates. That's because the room and everything in it are only active when Mario is in the room or standing in a small region right outside the door, indicated here in yellow. So, if Mario isn't in the Rolling Rocks room or in the yellow region, then the room will be completely black and everything in the room will be invisible and won't move. Conveniently, this allows us to raise the scuttlebug by preforming the following steps. First, Mario enters the scuttlebug's radius. Although the scuttlebug is invisible and can't move around, it can still turn towards Mario and activate a lunge. Then, Mario leaves the radius and the scuttlebug returns to facing its home. Next, Mario enters the yellow region to activate the scuttlebug. The scuttlebug will preform the lunge that it started but cleverly, we have Mario exit the yellow region right when the scuttlebug is at the peak of its trajectory. Thereby deactivating it so it won't fall down. And finally, since the scuttlebug moves past its home, it turns around to face its home once more. Now, we gotten all the height we could out of the scuttlebug's current lunge, but that's no problem because we could just activate another lunge by repeating this procedure. Activate a lunge while the scuttlebug is deactivated, reactivate the scuttlebug just for the upwards portion of its trajectory, and then repeat. As simple as that. So that's what I do here. And I have a second screen to show it from the scuttlebug's perspective. Fortunately, the scuttlebug's radius isn't a sphere but a cylinder that extends up and down infinitely. So really, no matter how high the scuttlebug gets, we can continue to enter its area to activate its lunges and move it upwards. There's no limit to how high we can raise it. Now, it's worth noting that I only activate the scuttlebug while I'm not inside its radius, so the scuttlebug will always lunge towards its home and not towards Mario. This causes the scuttlebug to effectively travel straight up above its home. But alternatively, I could've activated the scuttlebug while inside of its radius, and in that case the scuttlebug would always lunge towards Mario instead of towards its home. So it would actually make its way towards the door and then travel straight up from there. That means it's actually a little faster because we wouldn't have to wait for the scuttlebug to turn back towards its home before each activation. However, it wouldn't work for what we're doing because we need the scuttlebug to be right next to that corner. In fact, the top of that corner has a special property which we call a misalignment. Basically, in the game's code, there's a discrepancy between the way the game handles collision checking with floors versus walls. This results in a one by one unit area where Mario can get under the floor without being pushed away by the walls. And if Mario's less than 79 units under a floor, he'll snap right up onto it. So that'll be important later for getting up there. Anyway, now it's time to build up some speed. And I mean a lot of speed. So to get that speed, we're going to use a trick called Hyper Speed Walking and here's how it works. You probably already know that there are some slopes in the game that are too steep to stand on. Mario just slides off of them. But, did you know that you actually can stand on these slopes if they're submerged in shallow water? In fact, the underwater portion of these slopes has a special property. If you try to running uphill on them, you'll end up running backwards at an increasing speed with no upper bound. But in most circumstances, this would cause us to end up in the water before building up any real speed. We can get a little more speed by running nearly parallel to the slope by ever so slightly uphill. But, eventually, the slope runs out or we move too fast to round a corner. But, there are some ways to have Mario walk while staying in place. For example, if there's a wall perpendicular to the slope, then we can use that. That allows Mario to build up quite a bit of speed before he breaks through. However, if the wall isn't perpendicular to the slope, then we end up sliding down into the water. That's because walls are really just rectangles that push Mario out perpendicularly. So, if Mario moves into a wall at an angle, the game will calculate his intended next position, then the wall will push that position out, and then Mario ends up having a net movement along the wall. So ultimately, he will end up moving into the water. So, is all hope lost? Well no, because Tyler Kehne figured out that we can actually make use of the gate. You see, the bottom of the gate is a ceiling and the game doesn't like putting Mario too close to the area right under a ceiling because it doesn't think he fits. So, if we have Mario move backwards into the ceiling, the game will choose not to move him. So we're free to build up speed in place. But not infinite speed because we'd end up breaking free if our speed moved past the gate. So, what do we do? We turn to redirect our speed out of bounds. Notice how we have enough speed so that our intended next position is past the wall and out of bounds. And since the game doesn't like placing Mario out of bounds, it doesn't move him and instead just let's him stay in place, just like the ceiling. But unlike the ceiling, out of bounds goes on forever. So we can essentially build up as much speed as we want without having to worry about breaking free. So now, I do just that. Open the gate, use the ceiling of the gate to build up some speed, and then redirect my angle out of bounds to build up the rest. Now, you're probably wondering what I'm going to need all this speed for. After all, I do build up speed for 12 hours. But to answer that, we need to talk about parallel universes. And if you thought my other tangents were complicated, just you wait. Okay, so Mario's position is a floating point number but it's converted to a short when the game uses it to test for collision with floor triangles. In other words, Mario's position can basically be any decimal number but it's converted to an integer between negative 32,768 to positive 32,767 inclusive. So, any fractional portion is truncated and numbers too big or too small are moved into this range using the modulo operator. Graphically, that means the position used for floor detection is always inside of this box. So if Mario's in that box, then his actual position and the position used for floor detection are the same, albeit maybe off by a single fraction due to the truncation. But if Mario leaves that box, then his actual position and the position used for floor detection will separate since the position used for floor detection will just loop back around to remain in the original box. So now I ask you this. Here's the course. So if Mario is standing way over here where there's no land but the position used for floor detection is on land, can he stand over here? The answer is yes. As far as the game sees it, Mario is in fact above land over here because the game actually checks for land over here. So, for all intents and purposes, there is essentially land over here. A copy of the original map. And this is what we call a parallel universe or a PU. And this applies to every one of these boxes. So there's actually a grid of nearly infinite PUs. Here is a to scale diagram of the PU grid. As you can see, the PUs are actually pretty far apart. But I'll be taking some creative liberties and drawing them closer together for the sake of clearer visuals. Now, PUs aren't as glamorous as you might think. The graphics are only found on the original map so that PUs are completely invisible. Furthermore, PUs have no objects like elevators or item blocks, no enemies, no items like coins or stars, and not even any walls. So really, it's pretty barren. Furthermore, the N64 console will actually crash if you go to a PU and let the camera follow you. But luckily, we can avoid that crash by fixing the camera in place on the original map before leaving it. Though, that does make it even harder to tell what is going on in the PUs. So, as you just saw, you can travel to a PU if you have enough speed. But, it's not as simple as you might think. If you have just enough speed just to reach the PU one over, it won't actually work. That's because the game actually checks if Mario is above land at each quarter step of his movement. That means the simplest PU movement is moving over 4 PUs at once. That way, each quarter step is above land and therefore valid. For simplicity, we call this quadruple PU distance one QPU. Now, up until this point, I've been glossing over a very important detail, which I now need to clear up. What if I told you the distance Mario moves isn't necessarily equal to his speed? For example, look how fast Mario moves at 31 speed on this flat slope and now compare it to how fast he moves at the same speed on this steeper slope. In both cases, he has about the same speed but clearly he's moving at different rates. That's because the distance Mario moves is only a portion of his actual speed. And this portion depends on the slope of the ground. The steeper the slope, the smaller this portion is. Note that it only depends on the steepness, not whether Mario's facing uphill, downhill, or sideways on the hill. In these visuals, blue will represent Mario's actual speed and green will represent the portion of it that he moves, which we call Mario's De Facto Speed. So in these three pictures, Mario has the same speed, but he has different De Facto speeds since he's standing on slopes with different steepnesses. So, if we wanna move one QPU, It's not sufficient to have QPU speed. We need QPU De Facto speed, which often means our actual speed will need to be greater than one QPU to compensate. So to reiterate, We need to increase our speed until our De Facto speed syncs up with one QPU. And the speed needed to do this is called the Syncing Speed. So in this diagram, the blue arrow represents the Syncing Speed. When we have that speed, the quarter steps of the De Facto speed sync up with the PUs and we can move. Now, what I'm showing here is just the lowest or first Syncing Speed. A.k.a., the speed to move exactly one QPU. If we increase our speed, Eventually our De Facto speed would sync up again when it covers a distance of two QPU. And so we'd be able to move at that speed, which is two times as fast as before. So in general, any multiple of the lowest Syncing Speed is itself a Syncing Speed and will cover multiple QPU at once. So remember, every slope has a different set of Syncing Speeds. And this can make routing tricky. For example, in the video where I do PU movement to reach the secret aquarium, I had to traverse several different slopes. First this slope that I used for Hyper Speed Walking, then this slope at the edge of the water, then the flat ground of the castle foyer, then the castle stairs, which is really a steep ramp, and then the flat ground of the upstairs and note that the stairs you see there are actual stairs and not a ramp so they're just flat ground. Here is a graph showing the Syncing Speeds for each of these slopes. And so these are the speeds I need in order to have PU movement while standing on each of these slopes. Naturally, the steeper slopes have greater Syncing Speeds. Now keep in mind that I can only build up speed while I'm on the Hyper Speed Walking slope. Once I leave it, I can't generate any more speed. So my speed will only decrease from there. So to successfully preform this PU route, I better have generated enough speed to meet each slope's Syncing Speed in turn. For example, let's say I build up enough speed to reach the first possible Syncing Speed and I use that to go to the next slope. Then, I could let my speed drop until I reach this slope's Syncing Speed, go to the next slope, let my speed drop again, until I reach this slope's Syncing Speed go to the next slope, but then I have a bit of a problem. I have less than the required Syncing Speed and no way to gain any more. So is this route just impossible? Well no, because these are the just the slopes' first Syncing Speeds. But remember, any multiple of these will work as well. So now, let's factor in each slope's second Syncing Speed as well. These speeds allow Mario to move two QPU at once instead of one. So now, if I instead build up enough speed to reach the second Syncing Speed of that first slope, then I'll actually have enough speed to meet each Syncing Speed in turn and complete the route. And if that didn't work, we could've considered each slope's third Syncing Speed and so on until we did get it to work. However, which Syncing Speed we need to reach initially is kind of a big deal. Because reaching that first Syncing Speed takes about twelve hours and reaching that second Syncing Speed takes about 25 hours. So if there's a way to use a lower Syncing Speed initially, then that's a twelve hour save. So, how much speed will we need to generate for the Watch For Rolling Rocks star? Well, keep in mind that even with access to unlimited horizontal speed, we don't have any improved vertical mobility. So to get to the top of the course, we need to travel up slopes and ride up elevators. So this will be the basic route. Start on the Hyper Speed walking slope. Navigate along the path up from the lake, ride up this elevator, ride up this other elevator, make our onto the Amazing Emergency Exit platform, which is the highest point we can reach, and then launch to the Watch For Rolling Rocks platform. By itself, that still won't be enough height. But, the scuttlebug we positioned will provide the extra bounce we need. So this is the graph of the Syncing Speeds of these slopes. Unfortunately, we run into a bit of a issue with the path up from the lake. That area is made up of dozens of floor triangles that each have different slopes but that didn't stop me. After careful observation and scrutiny I isolated six triangles which I named T1 through T6. These triangles have strictly decreasing steepnesses, so we can meet each of their Syncing Speeds in turn. Additionally, their heights span the entire vertical distance we need to cover to go from bottom to top without leaving any gaps in between. So, by using the slopes of those six triangles, we can complete the blueprint for our route, allowing us utilize the first Syncing Speed of that initial slope. So building up speed only takes twelve hours instead of twenty-five. Now, we're almost ready to go back to the video but there's just some final points I wanna make. For example, you don't need to have exactly the Syncing Speed to traverse PUs. If you have slightly less than the Syncing Speed, you'll move relatively forwards in the map. If you have slightly more than the Syncing Speed, you'll move relatively backwards in the map. And the further you deviate from the Syncing Speed, the greater this relative movement will be. Additionally, if you adjust your angle slightly away from the cardinal direction, you can move relatively sideways. But keep in mind that even the smallest possible angle deviation will be magnified over the QPU distance. And thus Mario will be sent multiple feet to the side. Now, based off what I've told you, you might think you can only travel multiples of four PUs at a time but that's not actually true. For example, if one of your quarter steps is out of bounds or over a ceiling, then that quarter step will be invalid. And since Mario moves up two but not including the first invalid quarter step, he can in fact end up stopping prematurely at one of the quarter steps. Separately, if you change slopes during a quarter step, your De Facto speed will change and you'll alter the distance of the next quarter step and so most likely, it will no longer sync up with a PU and you'll end up stopping on the new slope. Finally, for simplicity, the set of PUs that are multiples of four away, we call the QPU grid. And if Mario's on the QPU grid, then we say he's QPU aligned. Remember, moving a multiple of four PUs is easy but moving a different amount requires special conditions like out of bounds or changing slopes. So, if you're QPU aligned, it's easy to stay that way. And if you're QPU misaligned, it's easy to stay that way as well. Now, if you become QPU misaligned, you'll need to correct that in order to return to the main map but that can be difficult if you're not near out of bounds and your sequence of slope changes is predetermined. So, managing your QPU alignment is one of the many challenges of planning a PU route. Okay, and now we're finally ready to resume the main video and watch the PU movement. Just kidding, first I need to explain what these screens are. These extra screens will help you follow along during the PU movement. The Standard View is just the view that the game chose. But since I fixed the camera on the main map to prevent the game from crashing, this screen won't tell you very much. The Relative View shows where I am in each PU. This is what it would look like if I let the camera follow Mario around and if PUs weren't invisible. The Relative Map also shows where I am in each PU but from an overhead perspective. And finally, the PU Map shows where I am in the PU grid. Okay, so now let's really start. So, as I explained earlier. I navigate up the path from the lake using the six triangles I isolated and I've marked them in the Relative Map so you can follow along. So basically, I get onto a triangle, let my speed drop and until I'm around the Syncing Speed for that triangle's slope, then navigate uphill on the triangle and then move to the next triangle. Using what I taught you, You should be able to follow along with my movement. For example, I'm able to move relatively backwards, because I have slightly more than the Syncing Speed. Whenever I move sideways, it's because I'm slightly angled away from the cardinal direction. And every time I move from triangle to triangle, my QPU alignment changes. But cleverly, I planned it in such a way that they'd all cancel out by the end and I'd end up QPU aligned. So right now I'm on the sixth triangle. So I do a little zigzag to bring me back towards the main map, as you can see on the PU Map screen. Remember, I need to return to the main map in order to access the elevator since there are no objects in PUs. As you may have noticed right there, the elevator didn't register me until I started kicking and that's actually the reason why I've been holding A this entire time. By holding A, I can press B to do these little kicks. Without these kicks, I go through the elevator. But with the kicks I can ride it up to gain precious height. Okay, so now we're closing in on the end. The final movement I do will be a kick onto the Amazing Emergency Exit platform, then turn and launch myself towards the scuttlebug. That movement will bring me ten PU to the right and three PU down. But since I wanna end up on the main map, I reverse that displacement and so position myself three PU up and ten PU left while doing that, I simultaneously position myself in the correct relative part of the map to make the movement work. Okay, now don't blink. And there we go. By bouncing on the scuttlebug, and ground pounding in the misalignment, I achieve just enough height to get onto the Rolling Rocks platform. Here, I show an abridged version of the scuttlebug raising, in case earlier's viewing was too choppy to follow. As you can see, the scuttlebug moves back and forth, above its home. At the end, you can see that I do two special raisings purely to move him sideways and closer to the corner since he ended up being too far away for the bounce to work. And here, I show an alternate angle of the final PU movement. The scuttlebug actually became active once I entered the PU version of this room. So I really only had a handful of frames to get over here before he fell too far. And there you have it, Watch For Rolling Rocks done in 0.5x A presses. Man, I did not expect this video to become 25 minutes long when I started commentating but I guess there was just that much to explain. Hopefully, you were able to follow along with my explanations and visuals, learn something new, and had an enjoyable experience. So, thanks for watching.