marzojr
He/Him
Experienced player (762)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
The glitch is triggered by having the booster get unloaded while Sonic is still standing on it. Calling the booster's X position by "x_pos", this happens (x_pos & 0xFF80) - (Camera_X & 0xFF80) > 0x280 (in an unsigned comparison). The next-to-last booster can be made to cross this threshold with a spindash as you do it, but the last one can't; notice how Sonic isn't ejected from the booster when you trigger the glitch. By the way: after the first spindash on the booster, you can immediately charge another (starting at, say, 58019) to use just as the booster vanishes. You can then immediately jump and keep higher than normal running speed down the tunnel. I will try to figure out the conditions to be able to spindash later today and post back.
Marzo Junior
marzojr
He/Him
Experienced player (762)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
First: I managed to pull off the glitch in the last booster; but it is slower than doing it on the previous booster since it requires going to the left enough so that the spindashes push the camera far enough to unload the booster. As for spindashing while under the effects of the anti-gravity/slope glitch: For starters, the anti-gravity/slope glitch works like this: Sonic (or Tails or Knuckles) keeps the 'standing on object' flag set because of a coding error on an object. Moreover, the same coding error will usually leave the "interact" byte (the last object Sonic stood on) intact during the glitch either. This causes all the effects we are used to. The 'standing on object' flag is bit 3 of byte $FFB022 (for Sonic in S1 or S2); if putting a memory watch on this byte as a hex value, the flag is set in the following cases: $XF, $FE, $XD, $XC, $XB, $XA, $X9, $X8 (with X = any hex digit). The "interact" byte is byte at $FFB03D (for Sonic in S2), and it is an index into the object table -- multiply it by $40, add $FFB000, and you have the RAM address of the object in question. In order to start charging a spindash, Sonic needs to (a) not already be spindashing (duh) and (b) be in the ducking animation. Now I list what conditions need to be true to be able to get into the ducking animation. I look only at the conditions relevant to the case at hand -- the 'standing on object' flag being set.
  • If bit 7 of the status byte* of the "interact" object is set, Sonic can duck; otherwise:
  • if Sonic is at the edge of the "interact" object**, he loses balance and can't duck;
  • otherwise, Sonic can duck.
* The status byte is the byte at offset $22 from the start of the object's RAM. ** Remember that the "interact" object byte is not cleared (and in the cases when it is cleared, Sonic's object data will be used instead). This means that any object that happens to be placed in the same location indicated by the "interact" object will be used to determine whether or not Sonic can duck. When the object is deleted, its entire SST is set to zero; this is why Sonic displays the "off-balance" animation -- the object is now effectively at position (0,0) and has 0 width and 0 height, meaning Sonic is considered to be at its edge (the check to see if Sonic is past its edge is done from the object code, so Sonic's code doesn't second guess it). So the summary: you want to manipulate the object placement so that Sonic thinks he is standing on this object; you will then be able to spindash.
Marzo Junior
Expert player (3645)
Joined: 11/9/2007
Posts: 375
Location: Varberg, Sweden
Awesome job as always! I know you're "just checking the disassembly code" but it sure does not look trivial to find out anyway. The only place between the booster and the boss where a spin-dash could possibly save time (I'm not sure it would) would be just at the beginning of the platform before the front of the wing fortress (the one with 2 rings). The only way I could get an object to spawn in the right address at that place was to use your own breaking animations, however that means you first must reach a speed of ~1150 which takes too long time at that point in order to be worth it. Then at the boss, I still can't get the boss to get into that address but since I could do equally fast anyway (by standing on the blazing fire from the escape ship, lol) it doesn't matter. So I won't save more time from this, but it's always good to be sure:)
feos wrote:
Only Aglar can improve this now.
Active player (304)
Joined: 8/8/2005
Posts: 296
Location: NSW, Australia
So I'm attempting a real-time speedrun as Knuckles, but the Casino Night 2 level wrap still has me completely baffled. Below I've uploaded three GMVs to Microstorage. On each of these occasions I perform the glitch to get stuck behind the box first try, each time with a full size jump. However, I can get one of three different results with the same input (at least within what can be expected from me in real time) from there and I don't understand why. Can one of the experts here look into this? (the method once inside the wall is: spindash to break the box, fall, spindash twice, tap right, then hold right to zip) http://dehacked.2y.net/microstorage.php/info/1658541135/CN2success.gmv http://dehacked.2y.net/microstorage.php/info/1588916958/CN2fail1.gmv http://dehacked.2y.net/microstorage.php/info/439749560/CN2fail2.gmv
Expert player (3645)
Joined: 11/9/2007
Posts: 375
Location: Varberg, Sweden
mike89 wrote:
So I'm attempting a real-time speedrun as Knuckles, but the Casino Night 2 level wrap still has me completely baffled. Below I've uploaded three GMVs to Microstorage. On each of these occasions I perform the glitch to get stuck behind the box first try, each time with a full size jump. However, I can get one of three different results with the same input (at least within what can be expected from me in real time) from there and I don't understand why. Can one of the experts here look into this? (the method once inside the wall is: spindash to break the box, fall, spindash twice, tap right, then hold right to zip) http://dehacked.2y.net/microstorage.php/info/1658541135/CN2success.gmv http://dehacked.2y.net/microstorage.php/info/1588916958/CN2fail1.gmv http://dehacked.2y.net/microstorage.php/info/439749560/CN2fail2.gmv
Had a quick look at this and unfortunately the answer to this might not be the one your were hoping for. Which outcome, of the ones you showed, that will happen depends on your y-subpixel position. If your y-subpixel value. when standing to the left of the speed shoes, is: between 0-103 the result will be the one in your third gmv, you can still underflow your x-position from here though even though that depends on what x-subpixels you have. between 104-159 the result be like in your first gmv. between 160-255 the result will be like in your second gmv, which will always fail. So you'll have 62,5% chance of getting the right y-subpixels in order to then give you the chance to get the right x-subpixels to break through the left side of the screen. As for getting the right x-subpixels my short test showed that if you just tap "right" gently as you stand to left of the shoes there's a high chance that you'll be getting the values for the final zip. I can give more exact data if you're still interested in trying this zip after this explanation:)
feos wrote:
Only Aglar can improve this now.
Active player (304)
Joined: 8/8/2005
Posts: 296
Location: NSW, Australia
Thanks for that! I'm not at all surprised that that's what it turned out to be.. a little discouraged, but not surprised. That said, in a real-time run it saves about 20 seconds by itself, so I have no choice but to do it in a run. So, if I understand right: * As soon as I perform the clip behind the box, I'm already 37.5% likely to have no chance to pull the zip off? (which is to say, the y-subpixel can't be manipulated beyond this point) * And I can manipulate the x-subpixel by tapping right against the box? I'd be interested to know how that works. Thanks again :)
Expert player (3645)
Joined: 11/9/2007
Posts: 375
Location: Varberg, Sweden
As for getting the x-subpixels you need, I've found a way that always works - granted that it's executed right :) If you, while falling to speed shoes, push against the left wall, then perform the glide to get into the box and then climb down to get to the left of it (which is how you did it in the gmv:s above) you'll now have an x-subpixel value of 4. After you've landed, wait 15 frames since you can't move before then. Now you want to have an x-subpixel value between 42 and 153 and this will be gotten if you for example hold "right" for either 2 or 3 frames (when I try tapping the button as gently as possible it gets hold down for 2-3 frames almost all the time, might be different for other people though). Now do a "1 rev spindash" to start falling down and hope the y-subpixels are on your side. Then do another two "1 rev spindashes" after each other. Now it's the final maneuver which can be done in one peace or in steps to make it easier. For the risky way you need to hold "right" for 9 or 10 frames and you'll be all done, if you hold it longer than that it won't work. If you do it in steps you must make sure that the first time you push "right" you hold it for at least 3 frames, otherwise you'll get the wrong x-subpixels. Then you can inch your way to the left side of the wall and then gently tap "right" (if you're 1 frame away from coming out of the wall you can only hold "right" for at most 2 frames, if you're 2 frames away from coming out of the wall you can hold "right" at most 3 frames, and so on) to perform the underflow glitch.
feos wrote:
Only Aglar can improve this now.
Active player (304)
Joined: 8/8/2005
Posts: 296
Location: NSW, Australia
I just tried that out on console, using Start+C to frame advance (why didn't I think of this before!!) and it works exactly the same. I've found that some methods have worked subtly differently on console vs emulator (usually in holding right for more or less frames to activate the final zip) so that added to my confusion. Anyway I've hijacked this topic enough, thank you for your help :) EDIT: as well as 9 and 10 frames, I've determined that the level wrap also activates if you hold right for 14-16 frames. More a curiosity than anything else, though.
skychase
He/Him
Joined: 3/25/2007
Posts: 212
Location: Quebec, Canada
Thinking about the SMW TAS, is it possible to make something else spawn instead of ennemies or Tails ?
WST
She/Her
Active player (490)
Joined: 10/6/2011
Posts: 1697
Location: RU · ID · AM
S3&A [Amy amy%] improvement (with Evil_3D & kaan55) — currently in SPZ2 my TAS channel · If I ever come into your dream, I’ll be riding an eggship :)
Former player
Joined: 4/17/2009
Posts: 88
ziminaiman 6 months ago Ok, so the time bonus is 50000 for 30 sec or less, and 10000 after that. I was looking to see how long it took to add that 40000 extra to the score, and it's about 7 seconds. In other words, every stage that's complete in about 24-30 seconds could be optimized by just waiting out the timer to 30 (or 31 if that's the cutoff). Legit?
any chance of this being optimized further? assuming above is true, the following levels fit in the 24-30 timeframe: Aquatic Ruin 2 - 0:27::16 Hill Top 1 - 0:24::25 Oil Ocean 2 - 0:29::20 so sonic could either wait at the start/end of each level
WST
She/Her
Active player (490)
Joined: 10/6/2011
Posts: 1697
Location: RU · ID · AM
I would prefer minimizing in-game time instead of real life time. How fast you can beat certain level is usually more interesting than the same question about the whole game. Hovewer, I do not like the idea to abuse checkpoints to save in-game time by dying after them… Heavy death abuse %)
S3&A [Amy amy%] improvement (with Evil_3D & kaan55) — currently in SPZ2 my TAS channel · If I ever come into your dream, I’ll be riding an eggship :)
Expert player (3645)
Joined: 11/9/2007
Posts: 375
Location: Varberg, Sweden
AndyD wrote:
ziminaiman 6 months ago Ok, so the time bonus is 50000 for 30 sec or less, and 10000 after that. I was looking to see how long it took to add that 40000 extra to the score, and it's about 7 seconds. In other words, every stage that's complete in about 24-30 seconds could be optimized by just waiting out the timer to 30 (or 31 if that's the cutoff). Legit?
any chance of this being optimized further? assuming above is true, the following levels fit in the 24-30 timeframe: Aquatic Ruin 2 - 0:27::16 Hill Top 1 - 0:24::25 Oil Ocean 2 - 0:29::20 so sonic could either wait at the start/end of each level
An old and famous issue, often brought up by people who haven't read the goals of the run - where it's stated that ingame-time has precedence over real-time.
feos wrote:
Only Aglar can improve this now.
marzojr
He/Him
Experienced player (762)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
AndyD wrote:
any chance of this being optimized further? assuming above is true, the following levels fit in the 24-30 timeframe: Aquatic Ruin 2 - 0:27::16 Hill Top 1 - 0:24::25 Oil Ocean 2 - 0:29::20 so sonic could either wait at the start/end of each level
I, for one, would vote against publishing* any movies that waited until 0:30 to hit the signpost -- the movie would clearly not be beating the speed records. The game has a frame-accurate in-game timer, you know; why ignore it and go for total movie length? If you think real time should be more important, you should watch this movie, as it illustrates what is wrong with this position. * Waiting until 0:30 to hit the signpost is worse in terms of entertainment than waiting for the score tally to finish, so it is disqualified from Star and Moon; since it does not beat the records, then it is not eligible for Vault either.
Marzo Junior
Joined: 2/1/2011
Posts: 88
Yeah because people don't care about how long it take to count up all the points.(Or maybe they do) But I want to see Sonic at his best and with zipps you can't really keep that from happeneing sometimes. And honestly who would think of waiting for that it might be different if you got to the sign post at 29 seconds and then crossed at 30. But if you get there at like 20 no one wants to see Sonic just standing there for 10 seconds.
Joined: 3/19/2012
Posts: 144
Location: CA
AndyD wrote:
any chance of this being optimized further? assuming above is true, the following levels fit in the 24-30 timeframe: Aquatic Ruin 2 - 0:27::16 Hill Top 1 - 0:24::25 Oil Ocean 2 - 0:29::20 so sonic could either wait at the start/end of each level
That just kills the entertainment value. Whether it is faster (In real time) or not.
If you want to see some of my TASes, http://www.youtube.com/ltrp300
WST
She/Her
Active player (490)
Joined: 10/6/2011
Posts: 1697
Location: RU · ID · AM
Heavy glitch abuse™ Link to video
S3&A [Amy amy%] improvement (with Evil_3D & kaan55) — currently in SPZ2 my TAS channel · If I ever come into your dream, I’ll be riding an eggship :)
Player (37)
Joined: 9/9/2006
Posts: 388
Hah. I'm amused I never thought to repeat the trick to find the craziness you just demonstrated. I was laughing the entire time.
A whisper in the wind~~
WST
She/Her
Active player (490)
Joined: 10/6/2011
Posts: 1697
Location: RU · ID · AM
DDRKhat wrote:
Hah. I'm amused I never thought to repeat the trick to find the craziness you just demonstrated. I was laughing the entire time.
The author of the video is TeeNTee314. And yes, I have exactly the same feeling.
S3&A [Amy amy%] improvement (with Evil_3D & kaan55) — currently in SPZ2 my TAS channel · If I ever come into your dream, I’ll be riding an eggship :)
Former player
Joined: 7/6/2012
Posts: 207
Location: Réunion (FR)
Why nobody have done a 100% run of Sonic 2?
~ [I]feeuzz
WST
She/Her
Active player (490)
Joined: 10/6/2011
Posts: 1697
Location: RU · ID · AM
feeuzz22 wrote:
Why nobody have done a 100% run of Sonic 2?
I guess because how hard for TASing are Sonic games in general.
S3&A [Amy amy%] improvement (with Evil_3D & kaan55) — currently in SPZ2 my TAS channel · If I ever come into your dream, I’ll be riding an eggship :)
Active player (285)
Joined: 9/1/2008
Posts: 900
feeuzz22 wrote:
Why nobody have done a 100% run of Sonic 2?
I guess getting 50 rings (and hitting the lamppost) is tedious. Plus, getting the ring count after the emeralds is going to take a while, I guess
Joined: 8/4/2011
Posts: 26
Location: Sweden
Because getting all the emeralds, planning where to get them and perhaps avoiding the jump button to involuntarily transform if 50 rings happens to be in the way just because it's faster in maybe 2 acts is very tedious and not very fun.
Former player
Joined: 7/6/2012
Posts: 207
Location: Réunion (FR)
okay, I understand, this is why MarzoJr give us 100 ring at the beginning of each act when we are "super team" in Sonic classic heroes
~ [I]feeuzz
WST
She/Her
Active player (490)
Joined: 10/6/2011
Posts: 1697
Location: RU · ID · AM
Short attempt at TASing CPZ1 as Tails. Still improveable though. Made for a competition between me and feeuzz22. Link to video
S3&A [Amy amy%] improvement (with Evil_3D & kaan55) — currently in SPZ2 my TAS channel · If I ever come into your dream, I’ll be riding an eggship :)