Posts for marzojr

marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
The issue is that Tails is unable to jump inside the wall to trigger the capsule, leaving him unable to progress. If Tails could fly for long enough for the entire fight, and you were using Super Tails (for the flickies) it would be possible, the only thing preventing Tails from doing it is being too short to jump inside the wall.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
marzojr wrote:
Here are my notes, as present on a pdf I started doing some time ago:
marzojr wrote:
Act 2 Cut-scene skip (Based on explanation by HHS) Only Sonic + Tails and Sonic solo can perform this trick. The game must start from the beginning Tornado cut-scene, with no deaths, special stages or bonus stages.
I just want to draw attention to this bit, in case it is relevant.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Here are my notes, as present on a pdf I started doing some time ago:
marzojr wrote:
Act 2 Cut-scene skip (Based on explanation by HHS) Only Sonic + Tails and Sonic solo can perform this trick. The game must start from the beginning Tornado cut-scene, with no deaths, special stages or bonus stages. Before you begin, the word at $FFFAA4 must contain $B1BC. This is because at the start of the level, Knuckles is loaded into this address; entering special and bonus stages, or dying, causes this to be cleared. This address is used by the switch to determine which OST entry represents Knuckles in order to know when it should be triggered. When playing as Sonic + Tails, this must be performed:
  1. When Sonic's X position is around $41B0, Tails must perform 3 1-frame brakes;
  2. after the ship cut-scene, when Eggman is leaving the screen, and Sonic reaches position $4680 (18048), have Tails do a 1-frame brake and start running again;
  3. when position $4700 is reached, have Tails do 3 1-frame brakes.
When playing as Sonic solo, this must be performed:
  1. When Sonic reaches $41E8, do 3 1-frame brakes (or 1 5-frame brake);
  2. at position $4700, do a 1-frame brake.
The objective of this exercise is as follows:
  • When the bomber ship is flying above the players, the code pointer of OST $FFB1BC must be $00050390;
  • when entering the boss arena, OST $FFB1BC must be free;
  • if playing as Sonic + Tails, OST $FFB172 must be free.
If everything goes according to plan, the switch will mistake itself for Knuckles and trigger itself when it loads, destroying the bridge and allowing you to go to the next level.
I am thinking that maybe I should convert it to markdown and put it on GitHub. Code pointer = long word (4 bytes) at the given address; and an 'OST being free' means 'code pointer == 0'.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
The script by WST is correct: whenever an attracted ring goes out of range and gets deleted, this address is executed. At this location is a branch to Delete_Current_Sprite. Regarding ACE: there is actually one instance in marble garden 2 which does not depend on debug mode, and instead involves the rising terrain at the end and a spinning top. With this glitch, you can execute some parts of RAM and ROM. ROM always leads to a crash (or boots you to another game mode which is not useful, such as 2p mode). And unfortunately, most of the RAM you can access cannot be modified at all (it is set when the level loads), and the parts you can modify are sparse and allow very limited control (a few things related to Tails' tails, super/hyper/invincibility stars, and shield). I haven't found a way to use this yet, and this includes finding a way to create a return or branch elsewhere because it will inevitably end in a crash otherwise.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Warp wrote:
The Fibonacci numbers are: 1, 1, 2, 3, 5, 8, 13, 21, ... The Lucas numbers are: 2, 1, 3, 4, 7, 11, 18, 29, ... If you take the ratio between a Lucas number and the correspondent Fibonacci number, this ratio quickly converges to a specific value, the farther in the sequences you take this pair of numbers. This value seems to be approximately 1.38196601125. What value is this? (Obviously I'm not looking for an approximation but, if possible, the exact value.)
That number is nowhere close to the final value. Starting from L(n+1) = F(n) + F(n+2) F(n+2) = F(n+1) + F(n) lim (n -> inf) F(n)/F(n+1) = [sqrt(5)-1]/2 We get: L(n+1) = F(n+1) + 2*F(n) => r(n+1) = L(n+1)/F(n+1) = 1 + 2*F(n)/F(n+1) => lim (n -> inf) r(n+1) = 1 + 2*[sqrt(5)-1]/2 = sqrt(5) So your ratio is sqrt(5) Edit: ah, I see what is going on: you are actually interested in L(n)/F(n+1) (you are missing F(0) in your list, making you of by one). Using the same identities in a slightly different manner: L(n+1) = 2*F(n+2) - F(n+1) => r(n+1) = L(n+1)/F(n+2) = 2 - F(n+1)/F(n+2) => lim (n -> inf) r(n+1) = 2 - [sqrt(5)-1]/2 = [5 - sqrt(5)]/2
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
kaan55 wrote:
I'm kinda confused about one thing though. Couldn't you do a level wrap in Scrap Brain 1 by using the flipping platforms in the begining?
It leads to inevitable death, and you can't complete the level.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
I still intend to it at some point, but time had been a previous commodity since I moved to France. I have been following his videos; and some of them are just RTS versions of some things I was planning anyway (and some of them are RTS versions of TASes I already made and just need to optimize).
Marzo Junior
Post subject: Re: One question
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Zucca wrote:
Nice run and improvements. However I've always wondered why not to position the character, Knuckles in this case, at the (or as close as possible to) pyramid gate after drowning the stone golem miniboss? This is not the first run that _seem_ not to save frames there... I believe there a reason not to. Somebody tell me why?
Ir os to manipulate the positions of moving platforms in the next act. Rings "lost" before entering the pyramid is Isley regained, and then more, by the better positions of these platforms.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
You can't.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Evil_3D wrote:
Wheel glitch Slope glitch Screen wrap Level wrap Zips Clipping through surfaces[/b] But sometimes these chosen goals always generate controversy between people, you can see the discussion in Aglar's Sonic 1 no zips or my prvious 100% TAS, so almost obliged full glitch run are the most common to see.
I would argue that most of these are uncontroversial; it is only the latter two with are an issue: Zips: every time you are not on air and bump into a wall you do a micro zip. You can even use this to get instant speed of just under 1 pixel/frame away from the wall if you jump right away, and S1 runs do that (S2, SCD and S3&K have spindash, so they don't need this). The code used is the exact same one that can give you huge amounts of speed when inside the wall. Why allow one and not the other? Clipping through surfaces: I imagine you mean this to avoid going through objects with sounds. But what about clipping corners? You are technically going past at least one surface, and you are doing that only because of either, game logic allowing it (for clipping terrain corners) out because you are exploring the discrete time of the game to go past object corners.
Evil_3D wrote:
And I think it would also be interesting to see a Tails 100%, Tails newgame+ , Knuckles newgame+
The issue with these is coming up with goals that set them apart enough that they would make good categories. Super Tails requires 14 emeralds and can't be used until the S&K half; so 100% a Tails is mad scramble to collect emeralds, rest of S3 as any%, followed by mad scramble to get all emeralds in S&K, then faster any% Tails with flickies when you can get the 50 rings, any% Tails otherwise. Newgame+ suffers from this for both Tails and Knuckles: you are just a faster version of yourself whenever you can get the 50 rings. Both Tails and Knuckles can do everything their super versions can (or hyper, in Knuckles case), just a bit slower. Hyper Sonic had the great advantage of gaining an overpowered move
hegyak wrote:
"Tails, and his FLICKY ARMY OF DEATH!" That is what I am going to name call those branches. Not allowed to name anything but that's my name for it. Because, that is what Tails gets. A FLICKY ARMY OF DEATH!
Random of topic: try solo Charmy in Sonic Classic Heroes and either get all emeralds or use the cheat code for them.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Acts 1 [I]can[/I] desynch; it is rarer than act 2 desynchs, but it can happen. Usually, it is due to one of the following:
  • Lag differences when loading level.
  • Differences in the number of frames since power-on (this can be used as a source of pseudo-randomness). This can cause issues with the rng in some cases, because some objects only use the rng on some frames, and can also cause differences in lag when you lose rings (because rings only check terrain collision on some frames bad on when they were spawned and where in object RAM they are).
The first acts are otherwise generally sync stable.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
I have seen those as well; but I never traced through the code to find exactly what was responsible for it, now that I think about it. Will add to my to-do list of things to figure out.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
The first act balloons will only cause issues if there was a route change in that act; the rng seed is reset on every zone, whenever you due and resign, and whenever you enter a special or bonus stage. It is only act transitions which cause problems with the rng.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Yes, hitting the signpost to add delays (or jumping when the signpost is about to finish spinning to delay it) can alter the positions of objects; in the worst case, you may need to waste que a bit of time there, about as much time as you have gained. The balloons require manipulating luck; this means seeing what was the rng seed at the start of the second act before the improvements and manipulating the signpost sparkles with well timed pauses to make it match (or find another rng seed which gives equivalent behavior). Bouncing the signpost has the disadvantage that it causes additional sparkles to be generated, which will affect the balloon positions.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
As I usually say, I don't recommend TASing SCH because the next revision will remove an ungodly amount of glitches.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Yeah, resynching S3&K can get pretty tedious at times, especially when you find a small improvement early on. Imagine someone finding a 1-frame improvement in AIZ1 when the run has hit the workbench... When it happened to me, I almost felt like telling the guy that I would make him a full coauthor if he spliced the improvement and resynched the movie. And I know how much worse it is for you guys: a lot of the changes in recent S3&K TASes had the effect of making the run more resilient against desynchs on several annoying levels, but early on (and in the Sonic 100% TAS), I was pretty much in the same boat as you guys (but with slightly worse tools, as the HUD was nowhere near as good).
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
natt wrote:
I don't think so. Bizhawk is literally bristling with tools, plus the lua extensibility, plus the C# extensibility (that requires recompiling, but it's way easier than building Gens and IToolForm has a lot of stuff built in).
Does it run on Linux with Lua support? Because last time I tried, the greens core did not work on Linux under mono or Wine, and the Lua support did not work either. When it does work on Linux, I will port the Sonic tools myself.
natt wrote:
Plus the fact that the core has zero savestate determinism issues.
The issue is not the emulator. Let me repeat that: [B] The issue is not the emulator.[/b] I can point to the specific game code which causes the desynchs when you do input splices, and I can explain why it causes a desynch and why it is not related to Emulation inaccuracies. I can explain (and have, just a couple posts above) what is causing the spurious jumps at the end of inputs. And guess what? It is a lua script, NOT the emulator.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
For what is worth, desynchs and resynching are things you have to get used to in high level TASing of the game when you do input slices (but it is not nearly as bad as S1). I strongly recommend not going past a certain zones until you are sure you are done with previous zones; notably, Marble Garden bosses, Carnival Night balloons, IceCap, Mushroom Hill 1 boss, Lava Reef 1 boss, Sky Sanctuary boss, Death Egg 1 & 2 bosses all tend to desynch due to differences in lag, randomness (usually due to differences in the v-int run counter due to different pseudo-randomness frame rules), or both. There are some other sources of desynchs, but these account for the vast majority of cases in S3&K. Once you know all the factors involved, resynching is usually easy, but time consuming; and the further along in the game you are, the worse it becomes to resynch small changes early in the run. In the end, you will likely end up preferring to add some strategic pauses to manipulate these factors, rather than resynch for the umpteenth time...
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
I have been looking occasionally, but not too deeply; since I moved recently to France, there is a lot of stuff I have to worry about before I can go back to TASing stuff, or to paying close attention to Sonic TASes in as much detail as I used to.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
kaan55 wrote:
That is interesting. Is that the same reason why Gens presses literally all the buttons when I go past the last frame of a disabled track?
No that one is because of how buttons work on the Genesis and how GMVs work. Specifically, buttons in the Genesis are active low, meaning 0 = button pressed, 1 = button not pressed. GMV stores buttons like that on the movie format. When reading buttons post the end of a player track (that is, when there are no more buttons to read), Gens feeds in zeroes, which means all buttons pressed. I guess this could be fixed easily.
I will. I have better things to do than to waste my time with him.
Please note that I said to ignore him [I]on this specific issue[/I]; he is usually well informed otherwise, and blindly ignoring him is bad.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Well do you have any suggestions? All I'm getting from this is "Gens sucks, use another emulator" which isn't very helpful.
While it is true that Gens Is not the best emulator, kindly ignore natt in this; he has no clue what he is talking about, the issue is not the emulator.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
natt wrote:
Evil_3D wrote:
Tails missed a floating ring at frame 43780, be careful with this situations If the desyncs continue cause problems we have 3 options. 1. Waiting for a little of luck from MGZ don't desynchs 2. I will redo all zones again (I do not really have much free time to do this again) 3. Continue with the normal movie and we can note as "possible improvements" that AIZ2 can collect certain Knuckles rings in the submission text. for who want to work in a "improvement" in the future Personally I opt more for the option 3 if you do not have luck sync all zones
4. Use an emulator that isn't abandoned and actually functions correctly.
5. Stop spreading bullshit. The game desynched due to lag differences, and this would have happened regardless of emulator — even more so in BizHawk, because Gens tends to lag less than real hardware/better emulators.
kaan55 wrote:
Hydrocity 2 might take me a while to sync. I'm having some difficulty with it atm. You know I'm surprised that the lag from the large group of rings in act 1 didn't cause any desyncs.
EDIT: Well I've run into a unique issue. When I stop input splicing the game registers a button press with C the next frame which causes Sonic and Tails to do an unwanted jump. I hope TASeditor can help me get around this problem.
This is a side effect of the jump predictor script: it emulates 2 frames ahead pressing the C button, then reloads the frame. This is usually overwritten when you are recording a movie. When resynching, this can cause issues after finishing a player's track and going to redo the other player. A suggestion is to save at the last frame, disable the script, load the state, advance one frame, reload, then go back to TASing on realtor frames and reenable the script.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Pokota wrote:
Part of what's stalling the conversion of the Sonic TAS tools from Gens to BizHawk is, to my understanding at least, that some of their tools are specially built into the fork of Gens that they use. It's definitely not as simple as porting lua scripts between emulators (itself not trivial because pickles)
While this is true, that is not the real reason; most of that stuff could be done in Lua script (probably all of it). The real reason is that I am on Linux. BizHawk does not have a decent Linux version (last time I checked, it had neither Lua support nor a Genesis core), and the Window version does not run on Linux with Mono or Wine.
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
That is basically what I have in my notes; but with me moving to France, accessing those notes are difficult. You missed the fact that the rising terrain also affects the y position directly, which is most noticeable when you are not on the ground or in a mode which disables normal terrain collision routines. This causes Tails to rise during the score tally in the Tails TAS, and a also allows him to hit the boss more times (and hugely complicates the fight...). This effect can probably be useful in many cases (but remember that you can't zip while the terrain is rising).
Marzo Junior
marzojr
He/Him
Experienced Forum User, Published Author, Experienced player (751)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
There are gaps between those spikes from where one set of spikes ends and the next set begins.
Marzo Junior