HHS
Active player (282)
Joined: 10/8/2006
Posts: 356
Looks like the game's drawing buffer isn't big enough to handle two vertical rows and two horizontal rows on both planes at the same time. This allows you to overwrite FFF600 with some tile. ACE possibilities: 5400-57ff : jump to FF0000 5cff-5fff : RTS to address at FFFE00 64ff-67ff, 7800-7bff : jump to FFC000
Joined: 10/30/2011
Posts: 146
Location: Auckland, New Zealand
omg, do not tell me that this game will be broken like this too =O
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
I am skeptical this will lead anywhere, to be honest, for several reasons; the most important one being that I think it is impossible. Yes, there is not enough space for two rows and two columns in the buffer; and yes, the code responsible for drawing to the buffer is capable of drawing two rows if the camera moves fast enough in the y direction. But there are two important things to keep in mind: first is that each of these columns and rows are of pairs of tiles. So the camera would need to move more than 16 pixels per frame on both x and y to overflow the buffer. The second thing is that it is impossible to move the camera faster than that in the y direction -- there is a hard limit on it. So you at most have two columns and one row in the buffer, which fits. So I don't think any ACE opportunities will come from that.
Marzo Junior
HHS
Active player (282)
Joined: 10/8/2006
Posts: 356
Actually, the camera Y position can change by as much as 24 pixels, as long as the player's speed is at least 8 pixels/frame. This is why you can go to the "Special Stage Done" screen or crash the game at that spot in Marble Garden 2.
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Hm, I was completely misremembering MoveCameraY. You are correct, it can move faster than 16 pixels/frame in S3&K. The exact conditions being:
  • very high speed in Y direction (17 pixels/frame or more);
  • either:
    • being on the ground and having a high ground speed*;
    • or being on air and far from the "butter zone" near the center of the screen.
* There is a flag for faster Y motion that some objects set; you don't have any control on those cases, however. Lets do some math. The buffer is effectively $500 bytes wide ($480 bytes from the actual buffer plus $80 for a buffer right after it used for some special effects, such as per-cell vertical scroll in some places). It holds two control words per line fragment or column fragment, and a sequence of patter names; worst case scenario, one plane can need $320 bytes ((64 pattern names per row * 2 bytes per pattern name + 2 words per row fragment * 2 fragments per line) * 4 lines + (32 pattern names per column * 2 bytes per pattern name + 2 words per column fragment) * 4 columns). In most S3&K levels, plane B is never reloaded in X direction (with only hscroll affecting its motion, and plane B simply looping every 512 pixels), and the motion in X or Y is never as fast for plane B as for plane A on the cases where it does move (being usually half the speed or less). So the buffer is more than enough for most cases. However, those places where plane B is scrolled as foreground (MGZ2 rising terrain, FBZ2 rising platform, SOZ2 rising sand), the buffer might be insufficient: it would need to be $640 bytes so that everything would fit in the absolute worst case scenario. For MGZ2, the game does Y scroll before X scroll when drawing, so the buffer might fill up to $530 bytes before the X data would come in. Meaning the last $30 bytes of plane rows, and the entire data for plane columns, would be relevant in the worst case scenario. And the occasional control words. Part of plane B does scroll on X at 3/16ths of the speed of the speed of the FG, so it gets harder to cause issues. As is, in the worst case scenario, you can royally mess everything from F600 to F73F; this includes the Nemesis decompression queue, which can mess up the game state even more. Hm. Lets examine the possibilities:
  • 5400-57ff : jump to FF0000: in MGZ2, there is a sequence of $0400 words at that address, followed by $007E $047F at $FF00C0. Each pair of $0400 words will become "subi.b #$400, d0". When PC reaches $FF00C0, it will be $007E $047F, which is an ori.w with an invalid addressing mode, resulting in an illegal instruction.
  • 5cff-5fff : RTS to address at FFFE00: That is incorrect: the long that is read as an address is $2F016100, which results in a jump to $016100 as the 68k only has 24-bit address bus. This is the "ori" right before label loc_16106 in Tails' tails code, and will end up with the game stuck in a loop of jumping there, return after DrawSprite, and jump there again.
  • 64ff-67ff, 7800-7bff : jump to FFC000: These are a bit more interesting: it jumps to the middle of object RAM. Specifically, to offset $1A of the $37th object slot. If this is a multi-sprite, this would be the y position of the first subsprite; for more normal sprites, this would be y speed, which is generally unused and left at 0 ("ori.b #XXX, d0", where the XXX is whatever word is at $FFC002).
Almost all other possibilities $54 or higher result in either illegal instructions or address errors. One jumps to the VDP data port, which will cause a lock up; and one jumps after the ROM ($4760EC), which will likely cause a lock up. The possibilities $50 and lower would not be useful — except maybe for $1C-$1F, $24-$27 or $28-$2B, all of which lead to level select. Lets see: MGZ2 has $358 tiles, so it is impossible to write $64-$67, $E4-$E7, $1C-$1F, $9C-$9F, $24-$27 or $A4-$A7 to $F600. It would, however, theoretically be possible to write the following:
  • $78-$7B or $F8-$FB: corresponding to a tile flipped on X and Y, on palette line 3 and with priority clear or set. Palette line 3 is used only for the background tiles, not for the foreground (including rising terrain); so one of the columns being drawn would have to draw a BG tile (any of them) to F600. In the rising terrain, there is a relative lack of objects; even losing 32 rings left object slot $37 clear. So in all likelihood, the game would go on executing "ori.b #0, d0" until reaching super stars/hyper trails, Tails' tails, or the dust controller object.
  • $28-$2B or $A8-$AB: corresponding to a tile flipped on X (but not on Y), on palette line 1 and with priority clear or set. This is impossible, as planes A and B use only palette lines 2 and 3. Together with what I said above, this means no level select.
I have class now, so I will look up later what would happens for super stars/hyper trails, Tails' tails, or the dust controller object.
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Just an update: it has been slower progress here, mostly because there is a bazillion possibilities to be examined. I will write a tool to make a more automated analysis of all possible outcomes and see if there is any way to get ACE that is (1) does not crash and (2) is useful, but the prospects seem grim.
Marzo Junior
Patashu
He/Him
Joined: 10/2/2005
Posts: 4017
A+Start's glitchfest video for this game is finally out: Link to video
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Joined: 2/16/2015
Posts: 26
http://dehacked.2y.net/microstorage.php/info/1686836545/Sonic%203%20%26%20Knuckles%20100%25%20TAS%20WIP%201.gmv here a TAS im working on it 100% but can someone help me? if so reply back
Baddap1
He/Him
Experienced player (731)
Joined: 3/7/2015
Posts: 56
Hi, I'm new to S3&K TASing and I discovered something that could save a few frames, when passing the Act 2 on any level and get the total score, just move the '' Sonic got '' you should do reset game and the selection screen, it will appear at the next level and so save a few frames.
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
FYI most Sonic TASes count only in-game time
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 :)
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
I found a new zip for Knuckles in HCZ1, and my new time is 0:31.59. I got a question about HCZ2… Do I need to count time spent dying? I beleive I have a chance to do an underflowless run of HCZ2, which is slightly slower than underflowed one, but if the difference is less than it takes me to perform death, should I prefer the underflowless version? For example, here it was clearly faster to not use underflow… (upd) I beat TheYogWog’s ring attack on Angel Island zone by 15 seconds, and my testrun is still improveable as hell. Who knows how far more it can be improved… Anyone wants to see my test ring attack? (upd 2) improveable as hell: 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 :)
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
Very good job, Evil_3D, I see you already succeeded at beating TheYogWog’s AIZ1 attempt, and I am deeply impressed how quickly you did it. My congratulations. For your interest, my attempt was still a bit faster, but yours has a lot of nice fresh ideas, and I beleive, soon you’ll be able to beat mine as well (given that it’s not really well done too). For those who missed a thing, this is Evil_3D’s run. The difference in the final ring count is because Evil_3D collected 3 extra rings, which me and TheYogWog collected already after the boss fight. Link to video (upd) moved this post to a better location
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 :)
Joined: 5/9/2005
Posts: 748
Great news to hear. I look forward to seeing your progress on the run Evil_3D. (and of course yours WST, if you get involved with it!)
Editor, Experienced player (575)
Joined: 10/22/2016
Posts: 581
Location: Argentina
Thanks my friend, i am working on aiz 2, the only thing is the ring monitor glide jump to access sonic's area, dear god, thats make me crazy haha.
You can see more TASes on my youtube channel
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
Evil_3D wrote:
Thanks my friend, i am working on aiz 2, the only thing is the ring monitor glide jump to access sonic's area, dear god, thats make me crazy haha.
Yeah that trick is very hard to perform, but, beleive me, tunnel tricks are even worse. You have to jump from the „floor” to the „ceiling”, run on the ceiling a little and jump from the ceiling’s last pixel so that the „floor” does not forbid the jump. Try it yourself, and, if you fail, I will give you my gmv (sorry I cannot promise doing it for you, because this trick is so hard that I always ask marzojr to do it, lol). All of those tunnel tricks are painfully hard to do, another example is jump into tunnel, it is deadly hard to perform from rolling state (easy from running state though). This tunnel trick would save very much from TheYogWog’s attempt. The other place where you can go much faster is dropping down levels when you are inside the terrain. There are many possible input patterns which result in slightly different movement, and TheYogWog’s one is certainly not the best. Hope you’ll see it youself, in case of problems feel free to PM me or ask here.
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 :)
Editor, Experienced player (575)
Joined: 10/22/2016
Posts: 581
Location: Argentina
Yeah the tunnel is hard too, Fortunately i take arround of 25 rerecords to perfom the tunnel jump and save 1-2 seconds in knuckles path, and i chose the Glowing Spheres bonus stage instead of Gumball Machine for save a lot of frames. BTW is not the total run, is a demo recorded a few days ago, i am working on the monitor, i need to glide in a specific height and break it in the last pixel of the hitbox. Link to video
You can see more TASes on my youtube channel
Joined: 10/23/2009
Posts: 545
Location: Where?
Good luck. Looking forward for more Ring Collection. :) TheYogWog's run is one of my favourite TAS.
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
When you enter the long tube from inside the terrain, you can spindash a bit faster. Also that obstacle after the falling bridge, you can spindash through it and it will also be faster than what you did. Anyway, an example would be better than words, so, take my gmv. You can use it as a better reference to work on improvement. It also contains a faster Hydrocity 1 start, but I didn’t make much in that level. You’ll see yourself. My 3 other recommendations on AIZ are: 1. After the AIZ1 boss fight, there are 2 destroyable blocks in the floor, if you somehow destroy the second one (not the first) — for example, by jumping, landing onto it and rolling, you will probably save some time on returning back, because you’ll not need wall climbing. 2. Before the AIZ2 boss, zip a bit further to the right than me, so you will make the screen lock occur earlier and the boss will appear about 1 second faster. 3. AIZ2 last tunnel can be passed faster, if you manage to jump into it from rolling state, I avoided it, as this (together with out-tunnel jump in the end) is beyond my abilities >_< Of course, if you cannot manage to improve my input, you can just take it and proceed further, focusing on beating further stages — this game presents tons of work anyway. Just improve the AIZ2 ending, like I mentioned — faster going through the last tunnel and zipping a bit further right at the boss.
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 :)
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
WIP-5 of my S3&K Knuckles any% TAS. Everything but CNZ is already optimized, CNZ will probably be improved. 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 :)
Editor, Experienced player (575)
Joined: 10/22/2016
Posts: 581
Location: Argentina
I did a run in Launch Base as Knuckles a few days ago, I hope it will be useful for you project. Link to video
You can see more TASes on my youtube channel
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
Evil_3D wrote:
I did a run in Launch Base as Knuckles a few days ago, I hope it will be useful for you project.
Well, actually, I know how to improve that. In the act 1, zipping one level lower (falling lower after horizontal underflow) would be significally faster. In the act 2, you loose a lot of time by jumping over enemies which can be killed or skipped by rolling (with proper positioning). However, good joob on finding that zip in the act 2 (which I actually knew before for a long time — though I never told about it or made a video, marzojr or Qwerty can confirm it).
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 :)
Post subject: Angel Island ring attack
Editor, Experienced player (575)
Joined: 10/22/2016
Posts: 581
Location: Argentina
Today finally I was able to finish Angel Island, improved theyogwog times several seconds, after seeing in real time I am sure I can finish AIZ 1 in 1: 39/1: 40 and AIZ 2 around 2:07 Link to video
You can see more TASes on my youtube channel
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
It’s nice, you already beat me in the act 1, however, something clearly goes wrong between the boss and the checkpoint — when I respawn, the time is 0:34, for you it is 0:36, which makes you 120 frames behind me at that point. But, as you already have time predictions for your next attempt, I think, you already realized where are the improveable places. So, I’m just wishing you good luck :)
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 :)
Editor, Experienced player (575)
Joined: 10/22/2016
Posts: 581
Location: Argentina
Yes, i think i lose 120 frames in the last part of kte path, i see a little slow i will improve that part later fun fact: the ring monitor trick take me 10 re-records and the tunels around 200/300 each :P
You can see more TASes on my youtube channel
WST
She/Her
Active player (450)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
Evil_3D wrote:
Yes, i think i lose 120 frames in the last part of kte path, i see a little slow i will improve that part later fun fact: the ring monitor trick take me 10 re-records and the tunels around 200/300 each :P
Well, I’m not saying that the difference before the checkpoint is exactly 120 frames, it becomes exactly 120 in-game time units after your respawn, that’s what I meant. To have 0 unit difference you need to hit the checkpoint at 0:34.xx. Good job with that monitor jump, I know it’s hard.
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 :)