There's a few which can render sprites, and dump maps. But for some reason the maps the dump don't have the sprites rendered on them. If the source were available, that could probably addressed pretty easily, but it's not.
How fleeting are all human passions compared with the massive continuity of ducks.
Here are Sandopolis 2 and Lava Reef 1. These probably contain many graphical oddities; the levels are so large that I didn't feel inclined to fix all of them.
EDIT: I fixed them up a little and updated those two image links.
Rendering sprites and most other objects (not rings or monitors or big rings, admittedly) would involve reimplementing so much of the game's code that it's easier to simply use the game to do it. And if it were done anyway, using it would require mapping out which events each part of the level assumes the character has triggered.
The Sonic Advance 1/2/3 maps I made went through emulation and were completely automated because those games have essentially none of the issues I listed above about this game (except for some fudging around where miniboss rooms are in sadv3).
upthorn wrote:
Oh congratulation! That's freaking sweet! Now you got a new category for this TAS! I'm really lookin forward to the completion of this run.
Marble Garden 2 at 53395: It's 30+ frames faster to not jump there and simply roll left over the top. I don't know if these will work, but you could also try either re-spindashing halfway up, or finding a way to start the spindash up that hill that doesn't add such a long forced walking animation before you can duck on that platform.
Hydrocity 2:
- 31592: This is a longshot, but can Knuckles somehow glitch into the wall on the right, maybe using the column or spring?
- 31876: If not, you can save time here by not stopping on that pad to accelerate. I didn't try to completely optimize it, but I got to the same position after the spikes 22 frames faster (using 4 spindashes instead).
- 33485: Gliding this much here wastes a lot of time. I tried jumping from the end of the slide and got over the wall 63 frames faster, again not completely optimized.
It's close, I've been able to view the Hydrocity 1 boss battle offscreen with it, but it tended to cause desync. That could be fixed with lots of savestates, although Gens has worse savestate capabilities (and more savestate bugs) than VBA does.
Another problem would be that it only works instantly for sprite-based objects. The level itself needs to scrolls into view slowly or it won't draw at all, and playing 10-12 frames in the future would be strange.
That sounds like the opposite of what I need. I'd want something which displays the terrain while I'm doing the scroll glitch, but wouldn't necessarily have to show the (essentially non-existant) sprites.
Edit: addressing the issues Nitsuja raised:
nitsuja wrote:
Marble Garden 2 at 53395: It's 30+ frames faster to not jump there and simply roll left over the top.
I was trying to think of ways to minimize my height while still going over the pillar. I've noticed that in cases where you can run vertically, running up will get you higher than jumping, so I thought jumping at the first possible frame would be faster.
Rolling to slow down didn't occur to me.
Neither did pressing right.
nitsuja wrote:
I don't know if these will work, but you could also try either re-spindashing halfway up, or finding a way to start the spindash up that hill that doesn't add such a long forced walking animation before you can duck on that platform.
Experience seems to indicate that you have to be running when you hit that wall in order to go up it. Rolling at any speed I've managed just brings me to a stop.
nitsuja wrote:
Hydrocity 2:
- 31592: This is a longshot, but can Knuckles somehow glitch into the wall on the right, maybe using the column or spring?
Not that I was able to perform in about 20 minutes of testing.
Eventually I tried placing knuckles in-between the column and the wall, and he just died.
nitsuja wrote:
- 31876: If not, you can save time here by not stopping on that pad to accelerate. I didn't try to completely optimize it, but I got to the same position after the spikes 22 frames faster (using 4 spindashes instead).
4 spindashes? I think I know where to do the first (to the right of the hand-pad), and possibly the second (just before the upward-slide), and I have a slight inkling as to the last (on the ground after going up the slide). But when you say you used 4, that makes me go "WTF".
nitsuja wrote:
- 33485: Gliding this much here wastes a lot of time. I tried jumping from the end of the slide and got over the wall 63 frames faster, again not completely optimized.
I didn't think I'd have the height to get to that area if I jumped from the end of the tube. But if the jump(+glide?) can be made, that definitely sounds worthwhile.
How fleeting are all human passions compared with the massive continuity of ducks.
4 spindashes? I think I know where to do the first (to the right of the hand-pad), and possibly the second (just before the upward-slide), and I have a slight inkling as to the last (on the ground after going up the slide). But when you say you used 4, that makes me go "WTF".
You're right on the first 2. The 3rd was on the ground before the spikes that are next to the slide, to get over them after jumping off of the slide early (I'm not sure if that's the fastest thing to do but it is a shorter path distance-wise), and the 4th one was to get over the second set of spikes to where you did a spindash from before.
upthorn wrote:
I didn't think I'd have the height to get to that area if I jumped from the end of the tube. But if the jump(+glide?) can be made, that definitely sounds worthwhile.
Also, after you land and spindash left of where you did, you can jump to hit the top of the tube to get about the same speed you had spindashing from the right. I slid a bit to avoid starting the spindash on the uphill, but that could have wasted more time than it saved.
I heartily wtf'ed for marble garden 2, and nice glitch in launchbase 1.
What's with the pase before you spindash to the second super emerald and fifth... affecting timed events when the timer isn't running?
Also can you spindash up the corkscrew in flying battery 2 to gain time (around 0:45)? Also hahahah the end of that level. so much for a no-death run :D
4 spindashes? I think I know where to do the first (to the right of the hand-pad), and possibly the second (just before the upward-slide), and I have a slight inkling as to the last (on the ground after going up the slide). But when you say you used 4, that makes me go "WTF".
You're right on the first 2. The 3rd was on the ground before the spikes that are next to the slide, to get over them after jumping off of the slide early (I'm not sure if that's the fastest thing to do but it is a shorter path distance-wise), and the 4th one was to get over the second set of spikes to where you did a spindash from before.
Ah, yeah, jumping off the slide early would probably be faster if I didn't have the speed from the hand/gear.
nitsuja wrote:
upthorn wrote:
I didn't think I'd have the height to get to that area if I jumped from the end of the tube. But if the jump(+glide?) can be made, that definitely sounds worthwhile.
Also, after you land and spindash left of where you did, you can jump to hit the top of the tube to get about the same speed you had spindashing from the right. I slid a bit to avoid starting the spindash on the uphill, but that could have wasted more time than it saved.
Yeah, it would probably be faster to start the spindash on the uphill, and respindash if necessary than to slide.
How fleeting are all human passions compared with the massive continuity of ducks.
Ah, yeah, jumping off the slide early would probably be faster if I didn't have the speed from the hand/gear.
I think I meant, off of the wall early. For some reason Knuckles went straight up the wall instead of the slide, although the wall and slide met at the jumping location. I don't know if it saved timed compared to going up the slide normally.
Flying Battery 2: What prevented you from reaching the starpost earlier than that, invisible tiles under the floor you had to wait for? Did you check if the game allowed you to jump at any point while zipping?
upthorn wrote:
Not that I was able to perform in about 20 minutes of testing.
I thought so, I couldn't get Knuckles in there either. I asked because if I manually move him inside that wall, it's a nice zipping area that skips a good chunk of the level, so if there's any way to get in there it would save a lot of time.
Ah, yeah, jumping off the slide early would probably be faster if I didn't have the speed from the hand/gear.
I think I meant, off of the wall early. For some reason Knuckles went straight up the wall instead of the slide, although the wall and slide met at the jumping location. I don't know if it saved timed compared to going up the slide normally.
I'm going to hope that's easily reproducible.
nitsuja wrote:
Flying Battery 2: What prevented you from reaching the starpost earlier than that, invisible tiles under the floor you had to wait for? Did you check if the game allowed you to jump at any point in the zipping area?
Err. invisible?
There's not much invisible about them unless maybe you accidentally turned off a layer.
Let me show you.
Edit:
While I didn't check every frame of that zip for possible jump points, the frames I did check did not allow jumping.
nitsuja wrote:
upthorn wrote:
Not that I was able to perform in about 20 minutes of testing.
I thought so, I couldn't get Knuckles in there either. I asked because if I manually move him inside that wall, it's a nice zipping area that skips a good chunk of the level, so if there's any way to get in there it would save a lot of time.
Interesting. When I moved him in-between the wall and the pillar in debug mode, he died.
How fleeting are all human passions compared with the massive continuity of ducks.
no response to my suggestion to use the slope of the corkscrew to jump higher and leave earlier?
The corkscrews are weird. When I tried that in prior WIPs, it didn't seem to do anything to my jump height at all.
I guess I should check again now that I have a speed-watch, though.
How fleeting are all human passions compared with the massive continuity of ducks.
Flying Battery has been my favourite stage in the run so far. I've followed all the WIP's just couldn't think of much to say afterwards. Although is it really necessary to do double bashes off the bouncer balls in the special stages, did you get hold of maps for all the specials and figure the best line through the stages, although don't forget you can easilly cross a mine of red balls so that complicates eveything. I'm surprised you've done it in so few re-records up till this point, but then again I don't generally take that many and I don't even pay attention to it while I'm at it. Are all these glitches in the FB replicatable as normal Sonic or is it knuckles/super/hyper specific. I knew they were these sorts of glitches in FB, and your run as a whole has cast great dount over whether Sprint's previous run is optimal. Did you definitley check to see if you zipped at the optimal speed as its easy to hold left a few frames early and start slow. I understand how that death glitch works, its a real pwnage glitch and shows what glitches are all about, it bettered my recently discovered one, (not related to Sonic) although I can't possibly tell if you optimized it because I asume that you hit the post and kill yourself, but you seem to wait for a while, isn't it possible to get crushed in someway instead of falling to the very bottom of the screen?
Good luck I hope you finish this, although it would be good if someone did a 100% run for Sonic, the shield actions for Hyper Sonic could get heavily abused in the second half of the game.
Flying Battery has been my favourite stage in the run so far. I've followed all the WIP's just couldn't think of much to say afterwards. Although is it really necessary to do double bashes off the bouncer balls in the special stages, did you get hold of maps for all the specials and figure the best line through the stages, although don't forget you can easilly cross a mine of red balls so that complicates eveything.
I have got hold of maps of all the special stages, although the routes for the second set of emeralds may not be optimal.
It is impossible (at least for knuckles) to cross a line of bumper spheres more than 2 thick without bumping off them at least twice for every multiple of 2. Going over is still faster than going around as long as there are less than 6 bumpers in to cross in a row.
aka wrote:
I'm surprised you've done it in so few re-records up till this point, but then again I don't generally take that many and I don't even pay attention to it while I'm at it.
Because of certain techniques I've been using to rerecord partial segments without losing all the work from afterwards, about 2/3rds of my rerecords aren't getting factored in.
aka wrote:
Are all these glitches in the FB replicatable as normal Sonic or is it knuckles/super/hyper specific. I knew they were these sorts of glitches in FB, and your run as a whole has cast great dount over whether Sprint's previous run is optimal.
Most of these are probably not possible for sonic to perform. At least, not in the same way. Some of them with the spikes might be possible for Hyper Sonic, though. I haven't tested. All of them are possible with normal Knuckles, except where I fall through one of the floating platforms - that requires invincibility, or I take damage from the bottom of the platform, which knocks me out of the wall.
aka wrote:
Did you definitley check to see if you zipped at the optimal speed as its easy to hold left a few frames early and start slow.
I've been careful not to hold left early at any point.
aka wrote:
I understand how that death glitch works, its a real pwnage glitch and shows what glitches are all about, it bettered my recently discovered one, (not related to Sonic) although I can't possibly tell if you optimized it because I asume that you hit the post and kill yourself, but you seem to wait for a while, isn't it possible to get crushed in someway instead of falling to the very bottom of the screen?
Unless a faster way can be found to get to that lamp-post, there is no way to get crushed that is faster than falling down.
aka wrote:
Good luck I hope you finish this, although it would be good if someone did a 100% run for Sonic, the shield actions for Hyper Sonic could get heavily abused in the second half of the game.
I definitely agree that a run with Hyper Sonic would be awesome, as well.
How fleeting are all human passions compared with the massive continuity of ducks.
The corkscrews are weird. When I tried that in prior WIPs, it didn't seem to do anything to my jump height at all.
I guess I should check again now that I have a speed-watch, though.
They probably don't affect jump height/speed. I think the game only checks that for things that are part of the level, not sprite-based objects like corkscrews or blue wheels.
upthorn wrote:
Err. invisible?
There's not much invisible about them ...
They aren't solid until that part of the level starts moving, and you pass right through it later, apparently standing up on something invisible. I see now what was going on, though. You were initially waiting for that moving wall/ceiling on the left to move out of the way past you, and getting up into the area you're supposed to be in doesn't do any good because you have no way of glitching up through the moving floor.
upthorn wrote:
Because of certain techniques I've been using to rerecord partial segments without losing all the work from afterwards, about 2/3rds of my rerecords aren't getting factored in.
Maybe you should factor them in, then? Also, usually when I do that the rerecords get automatically added (because I make the extra rerecords in the original file and then hex in the old input data as necessary from a copy, leaving the rerecord count accurate).
Because of certain techniques I've been using to rerecord partial segments without losing all the work from afterwards, about 2/3rds of my rerecords aren't getting factored in.
Maybe you should factor them in, then? Also, usually when I do that the rerecords get automatically added (because I make the extra rerecords in the original file and then hex in the old input data as necessary from a copy, leaving the rerecord count accurate).[/quote]
I'm using a dirty, dirty hack method which allows me to overwrite frames without truncating the file by holding the gmv "read only" in a different program while I rerecord. It's much much simpler than splicing in the old data, but it does odd things to my rerecord count.
Of course, route changes aren't done using this method, because they alter the total number of framecount, but sometimes I forget and leave the program open while I'm doing route changes, and any changes to the rerecord count in that time get stepped on. This probably has to do with the input data being written directly to the file, while the rerecord count is held in memory and only rewritten when the movie file is closed.
How fleeting are all human passions compared with the massive continuity of ducks.
about 2/3rds of my rerecords aren't getting factored in ... It's much much simpler than splicing in the old data, but it does odd things to my rerecord count. ... Of course, route changes aren't done using this method, because they alter the total number of framecount
I think I'm missing something here... You don't use it for anything that changes the frame count, yet it should account for the majority of your re-records? Anyway, if you have some general idea of what the re-record count should be, it's preferable to edit in your best guess than to leave it at some completely wrong value, if you think those should count as "real" re-records.
Hydrocity 2: Is it possible to jump from the edge at the end and glide back and forth to get in a hit before the water column starts?
Carnival Night 1: Ducking to scroll the screen down after the act causes the signpost to start out lower, then you can scroll the screen back up and it will hit the ground earlier than normal.
Icecap 1: At the very start, it's (~3 frames) faster to jump at the earliest frame that will have you already descending while leaving that tunnel at the start. On the first ice slope, you slow down a lot when sliding on it, so it's faster to jump when you land and glide-cancel to start falling again so that you won't hit the slope again. When you spindash up the very steep slope and jump to climb a high wall, you can do that at least 96 frames faster by re-spindashing from higher up on that slope and jumping closer to the wall. The boss can be killed much faster (2 full time units when I tested it) by spindash-jumping from the left edge to hit it while it's still waiting at the top of the screen.
Icecap 2: Before the big ring, you can jump at a different time to clear the swing platform instead of landing on its edge, and do a regular spindash (no jump) through the big ring, to save 33+ frames.
about 2/3rds of my rerecords aren't getting factored in ... It's much much simpler than splicing in the old data, but it does odd things to my rerecord count. ... Of course, route changes aren't done using this method, because they alter the total number of framecount
I think I'm missing something here... You don't use it for anything that changes the frame count, yet it should account for the majority of your re-records? Anyway, if you have some general idea of what the re-record count should be, it's preferable to edit in your best guess than to leave it at some completely wrong value, if you think those should count as "real" re-records.
Err, that 2/3rds should be 1/3rd.
The better reason for the low number of rerecords is that I did two test-runs to get the hang of the physics and learn how to minimize the amount of time I have to spend testing any individual trick.
Nitsuja wrote:
Hydrocity 2: Is it possible to jump from the edge at the end and glide back and forth to get in a hit before the water column starts?
I don't think the boss appears unless your feet are on the ground. However, I managed to cut a second off of this boss through better use of the water column.
PS: In Hydrocity 2, when i tried the four spindashes, I lost the time back, and then some, in the process of jumping onto the top of the loop with the water shield on it.
nitsuja wrote:
Carnival Night 1: Ducking to scroll the screen down after the act causes the signpost to start out lower, then you can scroll the screen back up and it will hit the ground earlier than normal.
This will probably give me an undesirable bumper configuration, but i can give it a shot.
nitsuja wrote:
Icecap 1: At the very start, it's (~3 frames) faster to jump at the earliest frame that will have you already descending while leaving that tunnel at the start.
I couldn't find a way to do that. Maybe we have different criteria for defining "already descending". I was trying for something which had me descending and no-higher than the ledge.
nitsuja wrote:
On the first ice slope, you slow down a lot when sliding on it, so it's faster to jump when you land and glide-cancel to start falling again so that you won't hit the slope again.
Good catch. I would never have noticed that on my own.
nitsuja wrote:
When you spindash up the very steep slope and jump to climb a high wall, you can do that at least 96 frames faster by re-spindashing from higher up on that slope and jumping closer to the wall.
I had so much trouble trying to stop so I could do that, that I gave it up as impossible. Since it isn't, I'll give it a shot.
nitsuja wrote:
The boss can be killed much faster (2 full time units when I tested it) by spindash-jumping from the left edge to hit it while it's still waiting at the top of the screen.
I could have sworn that I tried that, and couldn't hit him there no matter what I did.
nitsuja wrote:
Icecap 2: Before the big ring, you can jump at a different time to clear the swing platform instead of landing on its edge, and do a regular spindash (no jump) through the big ring, to save 33+ frames.
I tried that in my first testrun. Then, when I got to the loop after the first bouncy platform, I couldn't go through it -- the left wall was solid when it shouldn't have been. At first I gave up on that shortcut, but on my second testrun I found that if I touch the swing platform, that doesn't happen.
Landing on the edge as I do was faster than hitting it and so it swings out from under me.
How fleeting are all human passions compared with the massive continuity of ducks.
PS: In Hydrocity 2, when i tried the four spindashes, I lost the time back, and then some, in the process of jumping onto the top of the loop with the water shield on it.
Compared to 3, or compared to what you had in your movie before? (I got to the same position 22 frames faster so I wouldn't think the subpixel position could be off enough to lose all of that later.)
upthorn wrote:
nitsuja wrote:
Icecap 1: At the very start, it's (~3 frames) faster to jump at the earliest frame that will have you already descending while leaving that tunnel at the start.
I couldn't find a way to do that. Maybe we have different criteria for defining "already descending". I was trying for something which had me descending and no-higher than the ledge.
You ran straight off of the edge, then waited until hitting the ground to spindash through the ice column. Because of that waiting time, it's faster if you are already falling from a jump instead of running off, even if your speed is lower. I believe the optimal frame to jump at was surrounded by frames where jumping would make something on the ceiling stop you.
nitsuja wrote:
I had so much trouble trying to stop so I could do that, that I gave it up as impossible. Since it isn't, I'll give it a shot.
I think you have to land at a sharp down-right angle moving fast enough to cancel most of the initial speed loss from hitting the slope. I was surprised that it was that much faster to do 2 jumps just to start the second one from higher on the slope, even when you had Super Knuckles climbing speed.
nitsuja wrote:
I could have sworn that I tried that, and couldn't hit him there no matter what I did.
Probably you didn't try non-full-power spindashes. Super Knuckles is too fast for full-power ones to reach that boss before hitting the edge of the screen.
upthorn wrote:
nitsuja wrote:
Icecap 2: Before the big ring ...
I tried that in my first testrun. ...
If a glitch prevents it, the second part of what I said is still applicable. That underwater jump to the big ring is slower than a single spindash from the left that passes through the ring.
PS: In Hydrocity 2, when i tried the four spindashes, I lost the time back, and then some, in the process of jumping onto the top of the loop with the water shield on it.
Compared to 3, or compared to what you had in your movie before? (I got to the same position 22 frames faster so I wouldn't think the subpixel position could be off enough to lose all of that later.)
Compared to what I had in my movie before.
I land beneath the tube with 25 frames extra, but coming out of the loop after the hand my speed is about 500 less, and I have to glide, and climb, to get on top of the loop with the bubble shield.
PS:
0xB010: X pixel position, 2-bytes
0xB013: X subpixel position, 1-byte
0xB014: Y pixel position, 2-bytes
0xB017: Y subpixel position, 1-byte
Frustratingly, both X and Y subpixel positions are significantly important in determining jump-height, jump-angle, and speed loss when jumping into curves.
nitsuja wrote:
upthorn wrote:
nitsuja wrote:
Icecap 1: At the very start, it's (~3 frames) faster to jump at the earliest frame that will have you already descending while leaving that tunnel at the start.
I couldn't find a way to do that. Maybe we have different criteria for defining "already descending". I was trying for something which had me descending and no-higher than the ledge.
You ran straight off of the edge, then waited until hitting the ground to spindash through the ice column. Because of that waiting time, it's faster if you are already falling from a jump instead of running off, even if your speed is lower. I believe the optimal frame to jump at was surrounded by frames where jumping would make something on the ceiling stop you.
That would do it. I've taken to using binary search patterns in certain situations, to speed progress, so if the frame was in between two which just plain didn't work, it could easily have been missed.
nitsuja wrote:
upthorn wrote:
I had so much trouble trying to stop so I could do that, that I gave it up as impossible. Since it isn't, I'll give it a shot.
I think you have to land at a sharp down-right angle moving fast enough to cancel most of the initial speed loss from hitting the slope. I was surprised that it was that much faster to do 2 jumps just to start the second one from higher on the slope, even when you had Super Knuckles climbing speed.
Super Knuckles' climbing speed is equivalent to a y velocity of -512. Knuckles' climbing speed is equivalent to a y velocity of -256.
nitsuja wrote:
upthorn wrote:
I could have sworn that I tried that, and couldn't hit him there no matter what I did.
Probably you didn't try non-full-power spindashes. Super Knuckles is too fast for full-power ones to reach that boss before hitting the edge of the screen.
I never did try weaker spindashes. I just kind of assumed that I wouldn't get the height necessary.
nitsuja wrote:
upthorn wrote:
nitsuja wrote:
Icecap 2: Before the big ring ...
I tried that in my first testrun. ...
If a glitch prevents it, the second part of what I said is still applicable. That underwater jump to the big ring is slower than a single spindash from the left that passes through the ring.
Yeah, it would be. I kind of missed that suggestion in the other one, though.
How fleeting are all human passions compared with the massive continuity of ducks.
0xB010: X pixel position, 2-bytes
0xB013: X subpixel position, 1-byte
0xB014: Y pixel position, 2-bytes
0xB017: Y subpixel position, 1-byte
Frustratingly, both X and Y subpixel positions are significantly important in determining jump-height, jump-angle, and speed loss when jumping into curves.
The subpixel positions are at $FFB012 and $FFB016, but Gens has an insect in dealing with cheat codes.
Even address: xxyy works right and writes xxyy to that address.
Even address : xx causes 00xx to be written at that address.
Odd address : xxyy causes yy to be written at address-1 and xx to be written at address+2.
Odd address : xx causes xx to be written at address-1 and 00 to be written at address+2.
Jumping sends Knuckles up at a velocity of 6 pixels per frame (or 3 if underwater) in the direction his head is pointing, in addition to his current velocity. The sub-pixel position doesn't matter. The orientation when he is on the ground depends on the blocks he is standing on.
The subpixel positions are at $FFB012 and $FFB016, but Gens has an insect in dealing with cheat codes.
Even address: xxyy works right and writes xxyy to that address.
Even address : xx causes 00xx to be written at that address.
Odd address : xxyy causes yy to be written at address-1 and xx to be written at address+2.
Odd address : xx causes xx to be written at address-1 and 00 to be written at address+2.
I don't know which version of Gens you're talking about, as the re-recording one doesn't support cheat codes yet. Those do sound like bugs if you're describing it accurately, except perhaps writing xxyy to an odd address, which is a misaligned write and might end up having that effect because of endianness issues.
upthorn wrote:
coming out of the loop after the hand my speed is about 500 less
500 is too much of a difference. That means the different subpixel position caused the optimal jump frame(s?) to move, and so you were no longer jumping on the optimal frame. Hex editing probably won't work, but you should be able to keep most of the time gained by replaying from there until the end of the act. Also, your speed value while on the hand affects your speed coming out of it, in a weird way. Certain speeds cause you to come out slower. That's the only other thing I can think of that could have contributed.