Alyosha
He/Him
Editor, Emulator Coder, Expert player (3810)
Joined: 11/30/2014
Posts: 2829
Location: US
--superseded, see later videos-- WIP of level 4. I think the first half is pretty good, but the second half needs some work. I lose quite a bit of time in the first block section. But, I gain quite a bit in the second block section with better star RNG which I got by killing the last enemy in the previous room. Unfortunately I can't seem to get a good boss fight. Right now I'm losing about 30 frames because the boss is having a longer delay between actions. Pretty frustrating. If I can save some time in the first block section though and keep the good second block section I should be comfortably ahead going into the last level, still needs some work. At least everything works on console so far.
Skilled player (1022)
Joined: 1/9/2011
Posts: 230
Looking great so far! I'm pretty unclear on what the benefit of getting the leaf is at 5:37. It doesn't seem like it makes you move faster. Is it the only way to destroy those blocks, and are you able to un-puff and run like normal? And also, does the boss not drop a 3rd bomb if you don't get to the first one fast enough?
Experienced player (691)
Joined: 11/23/2013
Posts: 2232
Location: Guatemala
Alyosha wrote:
I think the palette looks fine, which one do you think looks better? As long as you pick the palette on the first possible frame things seem to sync ok.
The grayscale palette will do just fine.
Here, my YouTube channel: http://www.youtube.com/user/dekutony
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3810)
Joined: 11/30/2014
Posts: 2829
Location: US
Link to video Double lasers confirmed possible on Kracko! I got this by pure dumb luck. No idea what conditions are needed to make it happen. It seems like it happened after delaying the first hit by a couple frames but it could just be a coincidence. In any event this is a pretty big time save. I still need to optimize the second half of the fight, but this should be ~1 second saved. movie file: https://tasvideos.org/UserFiles/Info/638046721579096766
WarHippy wrote:
Looking great so far! I'm pretty unclear on what the benefit of getting the leaf is at 5:37. It doesn't seem like it makes you move faster. Is it the only way to destroy those blocks, and are you able to un-puff and run like normal? And also, does the boss not drop a 3rd bomb if you don't get to the first one fast enough?
You cannot un-puff with the leaf. I actually tested not getting the leaf. It is possible to use the quick action trick and get by the blocks slightly faster, but it is slower traversing the next section without the leaf, because maneuverability is so much higher with the leaf. I'm pretty sure the boss will always drop 3 bombs.
dekutony wrote:
Alyosha wrote:
I think the palette looks fine, which one do you think looks better? As long as you pick the palette on the first possible frame things seem to sync ok.
The grayscale palette will do just fine.
I like the default better than grayscale.
Skilled player (1022)
Joined: 1/9/2011
Posts: 230
Alyosha wrote:
I'm pretty sure the boss will always drop 3 bombs.
Alright. I was thinking it looks almost possible to absorb and fire all 3 bombs without having to take damage (allowing for more damage boosts).
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3810)
Joined: 11/30/2014
Posts: 2829
Location: US
WarHippy wrote:
Alright. I was thinking it looks almost possible to absorb and fire all 3 bombs without having to take damage (allowing for more damage boosts).
I believe this is only possible with the quick action trick. To set up the trick for the first set of bombs requires swallowing an enemy in the previous room, which would cost more time the any potential damage boost would save. With double lasers this is not applicable for the second set of bombs, so it seems like using both damage boosts on Kracko is the way to go. EDIT: Actually looks like it is possible to do quick action with second set of bombs even with double lasers, but I seem to get a faster fight with the damage boost. I went back and retimed both block sections compared to the original run and they come out about the same somehow, not sure how this is possible, but whatever. Timing Kracko I do save about 30 frames over the original run, so that is good. I'll try to optimize a bit more and save see if I can save any more frames, but it seems like it's almost time to move onto level 5.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
World 1 Room 3 improvement (9 frames faster) https://tasvideos.org/UserFiles/Info/638356675385292542 World 4 Room 5 improvement (39 frames faster) https://tasvideos.org/UserFiles/Info/638356742970915222 Game version: Japan v1.1 Both Bizhawk 2.7 and 2.8 should work. Skipping spicy food in World 4 Room 6 looks to be about 200 frames slower than using it.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
I found a difference between J1.0 and J1.1. The game produces a little star sprite when Kirby lands on the ground or bumps into a wall. J1.0 will always produce this star when Kirby lands or bumps into a wall. But J1.1 added a condition so that only one star can exist at a time. Lololo miniboss can create a little star sprite sometimes (I'm playing on Hard mode), so while his star sprite is on the screen, Kirby will not create one. J1.1 added 5 bytes of code at $37B1 "FA 14 D4 A7 C0". The game checks $D414. If it is 0x00, the game will create the star, else it won't. This is also the reason why the current TAS desyncs at Stage 2, because Kirby creates a star sprite in Lololo miniboss on J1.0 whereas J1.1 doesn't, while playing back the movie file on Bizhawk 2.8. Knowing this, it may be favorable to use J1.0 in TAS because you will have more opportunites to advance the RNG.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
I would like to edit articles on datacrystal wiki but I can't find a way to sign up. For now, I'm leaving information here so it doesn't get lost. 407F: FA 8B FF ld a, [$FF8B] -- Check pressed buttons 4082: FE 86 cp a, $86 4084: CA 86 63 jp z, $6386 4087: FE 45 cp a, $45 -- Check if equal to 0x45 (Up+Select+A) 4089: 20 08 jr nz, $4093 408B: 3E 01 ld a, $01 408D: EA 3A D0 ld [$D03A], a 4090: CD A0 40 call $40A0 40A0: FA 3A D0 ld a, [$D03A] -- Set "extra game" flag 40A3: A7 and a, a 40A4: C8 ret z 40A5: 01 45 99 ld bc, $9945 -- Write "EXTRA GAME" letters to VRAM
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Dedede won't try to inhale you if he is at 1 HP, to prevent a graphical bug with him inhaling you while he gets killed.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
MUGG wrote:
I found a difference between J1.0 and J1.1.
I figured out the whole story now. You can read about it here: https://tcrf.net/Kirby%27s_Dream_Land#Revisional_Differences J1.1 is basicly a bugfix for a game-breaking bug that could happen in the Whispy Woods fight. That being said, I don't think this is any useful for speedrunning, but still interesting nonetheless.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (155)
Joined: 3/17/2018
Posts: 358
Location: Holland, MI
MUGG wrote:
MUGG wrote:
I found a difference between J1.0 and J1.1.
I figured out the whole story now. You can read about it here: https://tcrf.net/Kirby%27s_Dream_Land#Revisional_Differences J1.1 is basicly a bugfix for a game-breaking bug that could happen in the Whispy Woods fight. That being said, I don't think this is any useful for speedrunning, but still interesting nonetheless.
Cool! In the oddities section on that page, I see you uploaded the images for the normal and extra game end screens, but I don't see a difference, did you mean to upload a different image for one of them?
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
In the oddities section on that page, I see you uploaded the images for the normal and extra game end screens, but I don't see a difference, did you mean to upload a different image for one of them?
The tile in the center of the image is replaced by a white square tile.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (155)
Joined: 3/17/2018
Posts: 358
Location: Holland, MI
Ah I see it now! Crazy that anyone noticed that!
Player (58)
Joined: 3/21/2024
Posts: 17
Location: USA
Hi there, I'm a speedrunner of this game and I'd like to help improve the TAS. The problem is that I have no experience TASing, but I'm good at finding new strats and manipulating RNG. I've been struggling with saving every frame possible and haven't been able to sync up my improvements with the current TAS, so I was wondering if anyone would be willing to help with the optimization or teach me how to make the game not desync after changing one thing. As an example of what I'm good/bad at, I changed the ending of the TAS, starting right after Kaboola 2 is defeated, and got it to be sub-9 minutes: https://tasvideos.org/UserFiles/Info/638466906468908702 There can definitely be more frames saved in what I have there.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (155)
Joined: 3/17/2018
Posts: 358
Location: Holland, MI
Hi! If you want you should jump in the Discord linked in the "Chat" section of the site here: https://tasvideos.org/LiveChat There's some specifics to GB stuff especially one's like Kirby's Dreamland that we've already verified that I can get into more detail on in a chat environment.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
DarkRiolu27 wrote:
Hi there, I'm a speedrunner of this game and I'd like to help improve the TAS. The problem is that I have no experience TASing, but I'm good at finding new strats and manipulating RNG. I've been struggling with saving every frame possible and haven't been able to sync up my improvements with the current TAS, so I was wondering if anyone would be willing to help with the optimization or teach me how to make the game not desync after changing one thing. As an example of what I'm good/bad at, I changed the ending of the TAS, starting right after Kaboola 2 is defeated, and got it to be sub-9 minutes: https://tasvideos.org/UserFiles/Info/638466906468908702 There can definitely be more frames saved in what I have there.
Hello. I looked at your movie file. The improvement in the room before Whispy 2 (inhaling the chicken instead of dropping on it) is subtle but it makes sense. And I think it will come down to a lot of things like this. Just shaving off a few frames here and a few frames there. I pointed out two improvements in one of my previous posts. But you could save frames throughout the entire run. Then there are also a few more possible improvements others pointed out throughout this topic - although I didn't verify them myself yet. I made the TAS without looking at memory addresses but in order to improve it, one should really look at X, Y position, subpixel position and speed. And of course the RNG. There's an address for that but I don't have it right now. I know you could advance the RNG by having a small star sprite appear from bumping into something or on the ground. (I also pointed out that using Japanese version 1.0 is possibly the best choice since you get to create star sprites in situations where you can't on v1.1 and US/EU. Maybe there is a situation in the game where it comes in handy?) But what I didn't know is that you could apparently advance it by what you were doing - repeated inhale-cancel? Nice Dedede. Yes, this seems to be the best strategy. So if you want to start TASing, get familar with Bizhawk. If you have specific questions about a room or a strat, feel free to post here or PM me. I'll watch your WIPs.
Player (58)
Joined: 3/21/2024
Posts: 17
Location: USA
Hi MUGG, I ended up deciding to remake the whole TAS starting with your level 1 improvement, and trying to save frames where I could. It seems that the game lags at different times even with the same inputs and RNG values, so I wasn't able to simply resync any changes with the existing TAS. I am using Memory Watch to monitor position, speed, and RNG. So far I've finished the first 3 levels and have saved about 60 frames by the third room of level 4, and will try to incorporate your movement for the mint leaf room after Kracko Jr. https://tasvideos.org/UserFiles/Info/638476362094803044 After the 10 frames saved from the new level 1 room 3, I saved another 22 in the Whispy fight (the number of frames saved at any point is only an approximation since every change can potentially increase or decrease lag later on). I kept the first half of the fight the same but held on to the fourth apple for reasons explained below. I saved about 11 frames in the first 2 rooms of level 2 but lost nearly all of it to increased lag in the rest of the level. I ended up with 1 extra health but couldn't find any way to use it to save time. 18 more frames were cut out in level 3, mostly due to a faster strat at the end of room 2. I'm 65 frames ahead of the current TAS after the first 2 rooms of level 4 due to less lag, although this was a bit more intentional than other stages as I destroyed more/different enemies. Using JP v1.0 could maybe be faster, but I'd be worried about multiple simultaneous stars causing lag. I'll stick with v1.1 since that's what I've been using, but I'll consider v1.0 if I can't get perfect RNG at some point. Some things I've noticed but haven't seen documented or can offer clarification for: You can perform an inhale cancel by pressing up after B. If the inhale is cancelled immediately, it seems to always advance RNG 3 values, and takes about 16 frames to do. This can be helpful for quickly advancing RNG to a desired value. Damaging Whispy Woods at any time will cause the next object to take significantly longer to spawn - it doesn't matter if the hit is during Whispy's attack or between attacks. Because of this, I didn't hit Whispy with the fourth apple until the sixth one had already spawned. This is still somewhat slow since Whispy seemingly can't be hurt quickly twice in a row (if two apples hit Whispy within a short time-frame, the damage will still occur, but it will be delayed), but it's faster than using the fourth apple early. Apparently movement speed is maintained through certain loading zones. Touching the star to end a level with horizontal speed will cause Kirby to start with that speed on the first frame of the next level, meaning he can accelerate instantly in that case. Touching the level 1 star with some speed while floating allowed me to get into the door at the start of level 2 about 5 frames faster, and I was able to touch the level 2 and 3 stars with some speed as well, saving more frames. Speed is also maintained during the load after beating Lololo (the miniboss, not the boss - although speed is maintained during the load after the boss as well), but when I tried to maintain full speed in that case the next room lagged much more and gave me a slower load at the end of the room, so I scrapped that idea. Subpixels are maintained through doors, so in some cases it can be beneficial to slow down in order to enter a door with a higher X subpixel, either because you have an extra pixel to spare or because the door loads faster and makes up for the later entry. This can certainly be exploited any time Kirby enters a door from the right, since you can slow down to get a higher X subpixel without losing a pixel. You can also jump before/into a door if a different Y subpixel would be more beneficial for the next room. When approaching a wall, Kirby will seemingly be placed against it and his speed set to zero as soon as he comes within one pixel of the wall, even if he should be many subpixels away. This means that to go through a wall of star blocks like Kirby does twice in the second room of level 3, he must go from being at least one X pixel away from the wall to being past the wall while at the correct Y pixel the entire time. This is easy if Kirby's Y pixel is correct for multiple frames, like at the peak of a jump, but must occur during a single frame if Kirby is falling at terminal velocity, like at the end of the room (credit to Marche9th for figuring out how this works). I've noticed that there seems to be something akin to a framerule when entering doors, although it doesn't seem consistent - sometimes I will enter the door 1 or 2 frames earlier but it will just take longer to load and won't be any faster, then if I save even more frames it loads instantly, suddenly saving 3 or 4 frames all at once. Is there anything known about that, or about why the game lags at different points even with the same inputs and enemies on-screen? Sorry for the long post.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Player (58)
Joined: 3/21/2024
Posts: 17
Location: USA
I'm currently working on optimizing the lag in the star room in Bubbly Clouds. I'm planning to post the movie file once I finish beating Kracko.
Post subject: Kracko Jr. Fight
Player (58)
Joined: 3/21/2024
Posts: 17
Location: USA
Does anyone know how to get close to Kracko Jr. for the last hit without taking damage like in the current TAS? I was able to replicate it once here: https://tasvideos.org/UserFiles/Edit/638503806352574536 I can save one lag frame earlier on in the fight while advancing RNG to the value I need but I can't get as efficient of an ending, even with the same or extremely similar subpixels. This would make the "framerule" also move one frame, so Kirby would actually make it to the next room one frame earlier - although that frame could be lost to lag. On the other hand, it could potentially save more frames if there's less lag. If anyone knows how to, or is able to save time during the fight or room after (or elsewhere) and still enter the star room at the same RNG value (0x98B1) or very close to it, let me know and I'll include it (the sooner the better). Here's an example of the faster Kracko Jr. fight that I wasn't able to finish: https://tasvideos.org/UserFiles/Edit/638503793882348543
Player (58)
Joined: 3/21/2024
Posts: 17
Location: USA
Some more things worth documenting: Performing an inhale cancel (B then Up) doesn't cancel Kirby's TASpit/instant action state. It also seems to rarely increase lag, meaning inhale cancelling can be used to cycle RNG rapidly without penalty in most cases. In fact, in some cases it reduces lag, which can be useful while falling or waiting for something, like a boss' attack. Taking damage doesn't reset Kirby's vertical momentum, only pauses it. If possible, it's better to reach terminal velocity before taking damage in a situation such as the last hit on Kracko Jr. when Kirby needs to continue falling to reach the Warp Star. Kirby will also continue to do a full jump even if damage is taken on the way up, as long as the A button continues to be held. If Kirby needs to float horizontally for a while but not gain height, it's faster to exhale and then restart floating so that more time is spent at walking speed instead of floating speed. I doubt this will be helpful for any other room, but it saved time in the Mint Leaf room in Bubbly Clouds. As I'm sure is already known, it's optimal to let go of right or left when starting to float, as Kirby's speed will take longer to decelerate to floating speed (in other words, his speed stays higher for longer). Also when floating, Kirby can enter the hitbox of spikes without taking damage if his vertical speed is near zero when he comes into contact with them. This allowed Kirby to dip low enough in the Mint Leaf room to gain upward momentum and be able to exhale once without hitting the spikes before he could start floating again. Having a Mint Leaf or Superspicy Curry active when going through a door takes significantly longer than going through the door as normal Kirby (about 20-30 frames longer). With Superspicy Curry, when floating, pressing B will cause Kirby to shoot 2 projectiles at once. Both of these projectiles will hit the same target and the second one will be wasted; however, pressing B for only one frame will cause only one projectile to spawn, and then waiting at least one frame will cause the second attack to occur instantly when the B button is pressed again. This is not currently useful since curry is not optimal at any point in the run. It's possible to jump over one-tile gaps even when the ceiling is directly above Kirby's head if Kirby jumps with full speed, a high X subpixel, and a low Y subpixel. This allows regular Kirby to clear out the star blocks in the star room of Bubbly Clouds faster than using curry since he doesn't have to slow down to wait between shots, and there seems to be less lag overall. I'm making some assumptions about Kracko based on how he works in Normal Mode, but in my testing Extra Mode works the same, just with different attacks. Kracko has 3 attacks: Lightning, charging, and dropping bombs. Each attack has a fast version and a slow version. For the fast version of the attack, Kracko waits about 11 frames before attacking; for the slow version, he waits about 36 frames. Kracko can never drop bombs on the first attack or give the same type of attack twice in a row, so the fastest pattern is: Fast lightning, fast bombs, fast lightning, fast bombs. Like Whispy, hitting Kracko with a projectile causes him to pause, delaying the current or next attack. When dropping bombs, Kracko will move either left to right or right to left, seemingly dependent on Kirby's position. It appears that moving left to right causes Kracko to drop the third bomb slightly earlier than when moving right to left, although I'm not totally confident about this.
Player (58)
Joined: 3/21/2024
Posts: 17
Location: USA
Here's my progress so far: https://tasvideos.org/UserFiles/Info/638523123082641784 As already mentioned, I saved a few frames in the first couple rooms of Bubbly Clouds due to less lag; also, any amounts of frames saved are approximations. I saved 5 or 6 frames in the Kracko Jr. fight by hitting terminal velocity before inhaling the last bomb, as well as inhaling it lower on the screen. I still have no idea what the conditions are for getting close to the bomb without being hit by Kracko Jr. first, but I was able to make it work once. 74 frames were saved in the Mint Leaf room by skipping the Mint Leaf. I used MUGG's example as a base and improved the ending by exhaling once when floating, cutting down on the amount of time spent floating. 90 frames were saved in the Superspicy Curry room by skipping the Superspicy Curry. As mentioned above, Kirby seems to move at a faster average speed despite slowing down while inhaling blocks, since he doesn't have to wait for curry shots at any point. Even if the average speed isn't actually higher, I'm pretty confident that there's less lag overall. Additionally, I jumped over the gaps instead of floating over them, which was tricky but doable, as mentioned in the previous post. I also spent a few weeks testing out different combinations of RNG values and movement to see which gave the least amount of lag due to the stars that spawn constantly - having fewer stars on screen and having them on screen for the least amount of time possible should be ideal. Theoretically, the fastest method to get through this room should be exhaling every block, as swallowing a block requires that Kirby slow down a bit in order to not hit the next block before he can inhale again. However, the fastest strat I could find ended up swallowing 2 blocks in order to get better RNG and therefore less lag overall. It is possible to jump over a gap and inhale a star block that is in the way on the other side of the gap at the same time, although this didn't end up occurring in the final route. 26 frames were saved on Kracko by getting perfect RNG. The current TAS gets a slow second bomb attack, although it's hard to notice due to Kracko's delay when taking damage during the start of the attack. The current TAS also gets a slow second lightning attack on Kracko 2. Due to the differences in the Mint Leaf and star rooms, I will be unable to resync RNG and will have to re-manipulate all of Mt. Dedede, as I did for Kracko. I was already considering looking into this; it shouldn't be too much of a problem. Kirby had 2 HP at the end of the stage, so it might be possible to incorporate another damage boost somewhere to save time.
Player (58)
Joined: 3/21/2024
Posts: 17
Location: USA
I got to the end a few days ago so now I'm going through the entire thing one more time to see where more time can be saved. I'm planning on being done after this second pass through the game.
Post subject: Framerule Address
Player (58)
Joined: 3/21/2024
Posts: 17
Location: USA
I think I found the WRAM address responsible for framerules. Address 0x1032 cycles from 0 to 4 and increments every non-lag frame. If the address has a value of 3 when 'up' is pressed to enter a door, Kirby will enter it immediately; otherwise, he will enter it whenever the address next hits 3. This appears to mean that saving a lag frame will save one overall frame (assuming all other lag is the same), but saving a frame through better movement will either save 0 or 5 frames, depending on when the door is reached relative to the framerule. Bosses seem to operate on framerules as well, but I'm not sure when the framerule is determined. This address is also helpful for identifying lag frames manually even when Kirby isn't moving, which is nice since Bizhawk doesn't seem to display lag frames correctly for this game.