Do you know where the door data is stored? I can’t experiment with this because I’m away from my computer for a week, but I was thinking that it may be possible to overflow something into the ID value for a skip exploit. If that’s not possible, maybe something could overflow into a warp star?
Of course, if the ID is stored too far from anything modifiable then the whole idea is moot. Just shooting in the dark since I can’t test this at the moment.
if it’s possible, then i can avoid the tasing roadblock i’m at lol i’ve been stuck doing area 2 for weeks
@karashiiro, I will investigate.
When I'm in the first tutorial room (803), and the door leading to room 804, the IWRAM and EWRAM memory does not contain instances of "804" at all. So it must be a pointer to ROM or something. That said, active doors are stored in IWRAM along with trigger/hitbox data. My lua will show doors as red rectangles.
Try looking for Hex: 44 43 in IWRAM. If you change it to 44 44, the door will damage Kirby and fly away. If you change it to 33 43, the door will fly down offscreen.
What did you mean by "skip exploit"?
That’s pretty cool, I’ll make sure to try that later!
By skip exploit I meant setting the door ID to a boss room to “skip” all of the rooms before it, which would obviously save a ton of time. I don’t know what that’s officially called, though. I was referring to something like the Dokokashira door glitch in the Gen 1 Pokemon games.
e: Dealing with pointers is going to be a little messier, but it may still be possible to change the pointer contained by the door to something different... if we knew where the pointers were.
@karashiiro
Your use of words "skip exploit" and "I could avoid the tasing roadblock I'm having" has me thinking that you know of a glitch in the game to change a door's destination.
But I think you are really talking about manually changing the door's destination (via memory editing or hacking). Is this correct?
I don’t know of any new glitches, no. But I wasn’t referring to performing a manual edit of the data, either (though that would be a useful thing to be able to do to test sequence breaking). I was just guessing that because overflow glitches are possible in other games, that it may be possible to perform them in KatAM. I was trying to figure out if there was something that could be used in an actual run.
Researching that would require, of course, knowing where the room ID pointer is so that something else could be inserted there. The more I think about it, however, the more it seems like something requiring ACE, which would put this firmly in the realm of improbability since there are no known ACE exploits in KatAM.
...And by “tasing roadblock”, I was just making a tongue-in-cheek joke. I’ve been stuck on an early Area 2 room and I’ve consistently been 10 frames behind your framecount for it. I was considering just copying your inputs because I think they’re optimal in this case, but I don’t know how to read a movie’s input sequence in VBA. So instead, I’ve spent weeks trying to replicate it and failing.
tl;dr I was trying to figure out if there may be a glitch but I honestly don’t know, the roadblock thing was me making fun of myself
I did a bit more investigation into cook glitch, specifically the technique I used here: https://www.youtube.com/watch?v=2TQXPbAsqTg
I did it near a door like 50 times, then had a helper kirby stay there to keep those 50 food null actors active while I left the room and came back.
The interesting part:
The food item or 1-up that spawned when helper kirby appeared - which would eventually start flickering and despawn - could be prevented from flickering and despawning by giving up my ability. As soon as I press select to ditch my ability, the item would stop flickering (it could turn invisible but still be able to pick up) and stay there forever.
Also said item (or food items spawned by actually using cook ability) could assume a glitched sprite when leaving the room and coming back while helper kirby keeps the actors alive.
I might look into it again and make a video.
- Support for Bizhawk 2.9 and newer.
- Tentative support for client extra padding.
This script is identical to the previous script version 0.4 except that a few issues were fixed in order to make the script run on Bizhawk 2.9 and newer.
Instances of table.getn(user_table) no longer worked and needed to be replaced with #user_table.
gui.DrawFinish() fulfills no purpose in newer Bizhawk versions and just causes endless "this function has been deprecated" prints, so it has been commented out.
Also, I changed the script so you can edit it easily to add extra padding to your client window.
This allows you to move the displays into free space so you have free view on the game screen.
Also this enables you to see hit and hurtboxes that are offscreen.
Simply edit values at lines 5 to 10 to your liking.
If you find any issues, let me know.
I TASed the first room on Bizhawk 2.9.1 (mGBA-core) and compared it to my any% run on VBA 24m (the previous time I TASed the game).
The any% run on VBA 24m:
Frame
What happens
Frames since last
10
First frame "Nintendo and Flagship" visible
210
Fully white after the menuing
199
396
All Kirbys blink
186
939
Kirby enters door
543
The new attempt:
Frame
What happens
Frames since last
281
First frame "Nintendo and Flagship" visible
484
Fully white after the menuing
203
675
All Kirbys blink
191
1216
Kirby enters door
541
* About 271 frames lost because of the added GBA BIOS screen.
* There is more lag during screen transitions due to the emulator difference.
* 2 frames were saved on the first room due to better optimization.
I noticed that Kirby accelerates slightly faster if he is descending instead of ascending. In particular, the best way to accelerate from a standstill without an ability seems to be to make a step forward 1 frame and then jump 1 frame.
In some cases, Kirby will deaccelerate faster while exhaling a puff of air if he is close to the ground, so situations like that need to be handled carefully.
I noticed that, when starting up wheel ability, Kirby's backward speed is slower on the ground than in the air.
So in order to be faster, one shouldn't jump up in the air while charging up wheel, when possible.
EDIT:
I continued through the 2nd and 3rd room and came out equal.
2 frames saved in the hub room.
(...) 1 frame saved in MoonlightMansion, room with the button at the beginning, compared to any%.
5 frames saved at Mr. Frosty, compared to any%.
(...)
6 frames saved in Moonlight Mansion:
#706
7134-7542 408 (new WIP 2024)
6247-6655 408 (any% old)
#707
7573-7933 360
6680-7043 363
#704
7964-8419 455
7070-7528 458
------------------------------------------
#711
5 frames saved (compared to the any%)
King Golem boss room
9438 - 9840 402
8528 - 8939 411 (old any%)
#801 (hub to rainbow door)
10653 - 10726 73
9741 - 9816 75 (old any%)
#140 (wheelie)
10942 - 11224 282
9926 - 10209 283 (old any%)
#108
11256 - 11864 608
40889 - 41499 610 (old 100%)
#110
3 frames saved (compared to any%)
#503
any% 10905-11289 384
new 12402-12785 383
#507
100% 42435-42814 379
new 12815-13189 374
#512
any% 40541-40772 231
new 13220-13451 231
#529
any% 40797-41228 431
new 13481-13910 429
#523
any% 41255-41708 453
new 13940-14393 453
#130
any% 41826-42133 307
new 14871 - 15178 307
#131
any% 42157-42490 333
new 15208 - 15541 333
#132
any% 42515-42946 431
new 15572 - 16003 431
#133
any% 42971-43095 124
new 16034 - 16157 123
#827
100%old 45766-47229 1463
any% 43121-44564 1443 (room finished)
43121-44104 983 (Boxy healthbar)
new 12F saved in the first section, 7F saved in the second section
#828
any 44590-45478 888 (mixes missile)
100%old 47252-48327 1075 (mixes ufo)
new 17645-18428 783 (keeps wheel)
#823
any 45505-46821 1316 +4 lag (no skip)
100%old 48350-49287 937 (skip with ufo)
new 18461-19560 1099 (has wheel; helper skip)
#890
(measured first move until complete white)
100%old 49311-49944 633 (gets missile from switch room 1)
new 19591-19994 403 (lag frames...)
#811 (mirra exit)
100%old 176690-177279 589 (has missile)
new 20019-20690 671 (has wheel)
#551
100%old 177302-177841 539 (has missile)
new 20720-21193 473 (has wheel)
#815
100%old 177864-178298 434 (has missile)
new 21224-21544 320 (has wheel)
#553
100%old 178321-179131 810 (ditches wheel for cutter)
new 21574-22267 693 (has wheel; helper skip)
#831
100%old 53301-54121 820 (has missile)
new 24154-25115 961 (has wheel)
#825
(measured first move until chest blue shine)
100%old 54144-54679 535
new 25147-25644 497
***
From #828 to now, assuming 100%old had mixed Missile in #828,
did Helper skip and saved about 1 second in the section afterwards,
considering everything else, "new" ends up 148F faster than that.
This doesn't take the Switch room #2 and #814 into consideration.
Wheel probably saved even more time over Missile in #814.
100%old 888+1030+589+539+434+810+820+535 5645
new 783+1099+671+473+320+693+961+497 5497
***
-----
#523
100%old 55307-55814 507
new 26041-26545 504
#530
100%old 55837-56598 761 (fire)
new 26575-27371 796 (no ability)
#127
any%old 57341-57530 189
new 28151-28340 189
#504 (visited #174)
100%old 57553-58381 828 (Note: about 10~15F less LCD lag while transitioning to and from #174)
new 28370-29195 825
#119
100%old 58404 - 58695 291
new 29226 - 29510 284
#118
100%old 58718 - 59060 342
new 29540 - 29864 324
#117
100%old 59083 - 59290 207
new 29894 - 30097 203
#120
100%old 59313 - 59573 260
new TBC
#???
100%old 59595 - 60096 501
new TBC
I found out another thing about cook glitch.
While having an enemy fetched, and an ally Kirby is in the same room to keep the fetched enemy active, you can go to another room and use your cook ability to create a null food actor there.
You could do this in the main hub room which has no enemies.
Not that any of the doors or the endgame mirror can be glitched in any way but who knows.
After all, despawn timer got glitched for some actors in my other test - see my post from 6 days ago.
I will keep testing.
Just wanted to note some things about Floogal's damage guide.
There is actually a third hitbox inbetween these two that does 2 damage.
It seems it will always charge up like this:
1 arrow, 3 damage
3 arrows, 3 damage | 3 damage | 3 damage
3 arrows, 5 damage | 3 damage | 3 damage
3 arrows, 5 damage | 5 damage | 3 damage
The third arrow somehow never charges up to 5 damage.
-----------------------------------------
For chest pick-up after de-transforming from wheel, while on the ground, it seems using UP+DOWN input is best, as it preserves speed while starting the pick-up at the same time.
When accelerating from a standstill as normal Kirby, without jumping, it seems this input is best:
1: >
2:
3: v >
4: >
5: v >
6: >
7: v >
...
This builds up speed fairly well. It seems the RIGHT inputs are read even while Kirby is crouching. The crouching allows to preserve speed.
----------------------------------------
This is the best way to ascend as normal Kirby:
1: A (Jump)
2: A
...
12: A
13: A ^ (Hold up to float up)
...
---------------------------------------
When getting a Rare Candy, your basic movement speed is increased.
However, if you inhale any enemy, the speed increase is nullified and you move at normal speed even while your invincibility is still ongoing.
This persists even through other rooms and it happens on all game versions.
--------------------------------------
When standing on a 1 tile wide ledge right in front of a 2 tile tall ledge, you can transform into Wheel and jump on top of it with proper positioning only when going rightwards.
Strangely, it does not work leftwards.
---------------------------------------
Room transition lag is increased if a lot of things are going on while the screen is fading from or to white.
Sometimes, depending on what has happened before a room transition or depending on the current RNG seed, transition lag can be reduced by 1~2 frames.
Throughout 5 screen transitions, about 5 frames can be saved this way.
---------------------------------------
Idea for 100% improvement:
EDIT: Outdated, see the list at the end of the next post instead.*23:30~24:30 = Instead of taking and using fighter, reset; Obtain beam in the castle instead
OR mix for Smash, because we might not get Smash at Wiz (39:10) and need a replacement.
Unlocking Mustard Mountain --> Unlock Switch 1 when first coming through here at 4:10, so we can skip having to go through a room at 29:30
Instead of coming in with UFO, come in as normal Kirby and mix something
OR come in with Smash (combine with above section*)
35:10 = Instead of bringing wheel, come as normal kirby and mix for wheel. Use wheel on some other route. That means we can reset after a boss where we would have kept wheel (e.g. golem, robo)
48:45 = Reset when entering this room. Use the Candy Constellation gate instead of using the warpstar. Perhaps bring Smash.
When pressing the last Switch, reset so we don't have to watch the Ability Room unlock cutscene. Should make it so that we have nothing or useless ability when pressing it.
43:50 = Mix for Hammer instead, and don't go through the room at 44:00. Instead, continue at 50:05, mix 2 stones for missile.
(Needs "string cutting" replacement at 50:15.
Use Smash after 42:50)
46:10 = Can't use this missile ability anywhere?)
I will be working on a new 100% run. I'm already at Golem.
Another info dump:
Important frame numbers
When using L-Warp, it takes 367 (00:06.14) to get into LWarp position.
When Soft Resetting, it takes 236 (00:03.95) to get into Reset position.
When getting a chest and canceling out of the room, Reset (239) is faster than LWarp (445) by 206 (00:03.45) at the cost of your ability.
After a boss, it is 334 (00:05.59) faster to reset than to not reset.
Resetting spawns you at Reset position whereas not resetting spawns you at the last hub door entered.
When dropping down from a platform and using Fighter downkick immediately, you can pass through "drop-through" platforms beneath while still kicking down. Video - Confirmed on JP and US, not confirmed on EU yet.
When pulling out a bomb, touching Master Sword and then down-sliding, Kirby will be in a bugged state. Video - Confirmed on all three game versions.
When Metaknight appears on your screen as the result of Magic, while your Rare Candy runs out, your sprite will keep orange color. Video
The miniboss Boxy can apparently create Minnie from a present. However, I couldn't confirm this in testing. EDIT: It seems every Boxy in the game can create a Minnie, except the one in Olive Ocean. I don't know why.
Lives are not subtracted in tutorial mode. (I found this independently)
The Japanese version of the game was supposed to be released in March 2004 but was postponed to April 2004 due to a bug that was found just before release. Source
Nice. Given more tools for debugging are available now for gameboy advance, would trace logging, or using Ghidra help figuring out bugs?
Also nice discovery regarding above post. How did you find that video, given it was in japanese?
I think my best approach might be to improve my luascript.
The script already finds many objects and shows their hitbox/hurtbox. And everything that has such hitbox/hurtbox data, also has much other data which has not been researched and understood yet. I'm not sure if I get around to that soon. I'm in the middle of routing the new 100%.
I already knew KATAM has a Japanese community somewhat present on Youtube and also nicovideo.
星のカービィ_鏡の大迷宮 is the game's Japanese name and searching "星のカービィ_鏡の大迷宮 bug" yielded the video(s).
I think this is also how I found out about the Japanese-only freeze bug (the one where the game gets stuck if you press L while falling into the void).
Upcoming version after Lua 0.5.1:
Note: I will not release a new version yet, because the script needs more polishing, unless someone requests it.
- Hitboxes: Changed the check for legitimacy on some hitboxes.
This check is not optimal so some garbage data might be shown.
But this allows that boxes will now be shown for:
openable gates, buttons, chests, suckable blocks,
Parasol Kirby's parasol hitbox (while holding A)
Bomb Kirby's bomb hitbox (stationary and thrown)
Cook Kirby area where enemies are fetched (this box will only be positioned across the screen on the first frame, which seems to be the correct behavior)
Tornado Kirby's hitbox
Magic Kirby's area of effect (not sure if it's correct though)
Magic Kirby's Metaknight effect (not sure if it's correct though)
Master Kirby's charged sword blast
- Hitboxes: Fixed that the script didn't account for left facing.
- Hitboxes: Correctly show Mirra's check area box (127 is max)
- Hitboxes: For Batty, show red line between its current position and origin position.
- Hitboxes: You can edit Mirra's check box area size and Batty's origin position in their respective displays.
- Added RNG display. Kind of useless, only shows past RNG values right now.
Note:
Some hitboxes for Hammer/Sword/Fighter/Smash/Master Kirby are still not shown.
Hitbox for Crash Kirby is not shown (not sure if it exists).
- Kirby/Yellow/Red/Green: Added some more addresses to the Kirby displays
(is invincible, is facing left, has mouth filled, sprite id; hitbox offset and size as well as battery and lives for helper kirbys)
- Added new display "TAS-related" which shows some things:
"Puff trick": If this value is green, then if you spit out, you will be actionable immediately.
"HoldUp": Value that keeps track of you holding UP. Doing so can be beneficial to maintain y-speed if you are jumping and want to float up without releasing A-button.
Helper Kirby transformations, including random ones, will be shown.
- General: four RNG addresses added.
- Hitboxes: Added Enemy displays
- Hitboxes: Mirra check area will be shown
While the hurtbox/hitbox view is active, you can now click on an enemy hurtbox to create a display for that enemy, allowing you to view and edit some of its values.
As before, edit lines 5-9 in the script to adjust the client extra padding.
There still is a lot of work to be done to improve upon this and to add support for hitbox displays, but it's a start.
Notes:
For now,
enemy displays will be cleared if you close the hurtbox/hitbox view or restart the script.
Otherwise they stay active, even if the enemy has despawned.
If you edit the enemy's ID to something else, the enemy name shown on the display will not update.
Room 823 Helper Kirby skip
I'm considering to use this in the 100% run.
If it is not possible to manipulate the Fire ability for the Helper, I will mix Fire myself (220 f slower).
Link to videoPeppermint Palace plan
This is about 1 sec faster than mixing UFO and saves brought-in Wheel for use elsewhere.
Link to video
Route 02, Room 828: Keep Wheel vs. Mix Missile and mix Wheel in 551
→ After more testing, I determined this:
Keeping Wheel in 828 and not mixing a new Wheel in 551 is faster than mixing Missile in 828 and mixing a Wheel in 551, by just 82f.
The detour of visiting 829 is as follows:
a) From the front (Room 811), as Missile: 152f
b) From the front (Room 811), as Wheel: 173f
c) From the back (Room 814), as Missile: 168f
Since, as I said, keeping Wheel is faster, it comes down to b) vs. c).
c) is faster by 5f so 829 will be visited from the back.
The route will be changed accordingly.
Route 18, check "LWarp, bring Wheel" vs. "Reset, bring nothing and mix Wheel" - if bringing Wheel saves more frames than it costs getting it at the start of Route 14 (84f), then Route 14 should be changed to start from Reset and mix Wheel at its beginning, therefore turning it into a "get Wheel at start" route. Change the order of routes accordingly.
→ Turns out, "LWarp and bringing Wheel" is only 50f faster, so taking 84f to get a Wheel is not worthwhile. Therefore, the route will not change.
Route 23: Test if defeating Moley with Smash is faster than with Throw. This can be tested on the go.
Route 26: Unclear what will be the best solution when entering the Wiz fight. Mix anything? Call Helper like in any%? This can be tested on the go.
Verify the route
→ Done. Some mistakes have been resolved.
One mistake with a missing Mustard route has been resolved.
Check for improvements in Peppermint Routes (PEPPERMINT #2 and PEPPERMINT #3, WIZ)
Try exchange ending parts of both routes.
In Peppermint #3, mix Smash before entering long falling room and deal with treasures and PhanPhan.
In Peppermint #2, ignore treasures and keep Wheel until Wiz.
→ This one is tough. I determined the new route could be ~2 seconds faster, but it has to mix Smash from Noddy+UFO in room 232 and mix Wheel from Penguin+Purple (who has to be manipulated to be a Cook) in 216 which is not completely guaranteed, but it can be manipulated with some effort. The route will change accordingly.
Check for improvements in Mustard Routes (MUSTARD #2, KRACKO and MUSTARD #1)
Mustard #2 mixes UFO and gets Treasure in the room with the Minnie.
Try get UFO in Mustard #1, get the treasure and proceed as usual and have Mustard #2 mix Wheel and keep it until Cupid - perhaps even call in a Helper with string cutting to save about 2-3 seconds.
→ After testing, it looks like "UFO goes up, Wheel goes down" is 0.8 sec faster than "UFO goes down, Wheel goes up".
So the route will not change.
Keeping Wheel through the Cupid room and calling Helper would of course be beneficial and save more than those 0.8 sec back, but since it is a Reset route, there will not be enough time for Helper to obtain string cutting ability.
Check "timesavers" section above, make sure everything is included.
→ Done.
I found that you can mix the two enemies in Room 732 by using Helper Kirbys.
Also, after more research, I found that Titan takes direct damage not only from Spark, but also from Beam and UFO(Beam).
UFO actually turns out very overwhelming.
It is a shame it cannot bypass the platforms in Room 732 and loses 80 frames having to transform it two more times.
Link to video
Kirby RAM map.
EDIT: Please note, because I made a mistake, "flags 1" and "flags 2" are swapped.
Each Kirby has a ROM pointer that dictates what happens to the that Kirby.
For example, if the pointer is 59 AB 05 08 then that Kirby is rolling.
And if the pointer is 91 C5 05 08, then that Kirby is transforming, obtaining the ability set in the variable "next ability".
At random times, a Helper Kirby will transform and obtain a random ability, if you are not in the same room.
It seems to depend on the RNG values at IWRAM addresses $68D8 ~ $68DB when those events occur and if they do, what ability it will be.
I'm not good at reverse-engineering GBA, but setting a breakpoint for the pointer address (Write) for Yellow Kirby yielded $0805c308 and for its "next ability" variable it yielded $0805bd4a. These seem to be the ROM locations that dictate if a "random transform ability" event should occur.
Shadow Kirby skip
I have always wondered why Shadow Kirby doesn't show up some times, but does show up other times.
But today, the WR RTA runner hirahira told me Shadow Kirby doesn't show up if your lives count is 2 or less (except in Rainbow Road).
(It always surprises me when I find some new obscure mechanics in this game... Such as Ice Kirby not sliding on ice, or lives not getting detracted if you die in the Tutorial...)
After verifying the info:
Location
Condition to not appear
Rainbow Road
seems to always appear?
Carrot Castle
seems to always appear?
Peppermint Palace
seems to always appear?
Mustard Mountain
has to be 1 life or less, when the room loads
Radish Ruins
has to be 2 lives or less, when the room loads
Candy Constellation
has to be 2 lives or less, when the room loads
I have not found other conditions for the Shadow Kirbys that would always appear.
Where this matters
Since TAS will never have less than 2 lives, the Mustard Mountain Shadow Kirby will still always be encountered. We need its Rare Candy for Batafire anyway. So it comes down to Radish Ruins and Candy Constellation.
In any%
Candy Constellation. There are two 1-ups that would need to be omitted here and here in order to skip Shadow Kirby.
I don't think skipping Shadow Kirby will save time, since skipping that 2nd 1-up is probably too time-consuming, and the timeloss from Shadow Kirby appearing isn't significant.
Radish Ruins, already skipped Shadow Kirby.
100% old
Encounters Shadow Kirby both in Candy Constellation and Radish Ruins.
100% new
Candy Constellation. As explained, it's most likely not a timesaver, but assuming it was these are the things that need to be considered:
The route that goes to Masterhand & Crazyhand in the new 100% run starts as Wheel Kirby from Candy Constellation's Switch room.
Before that, after the most recent Soft Reset (which sets lives back to 2), four Wheel routes are going to be done:
Cabbage #4, Mustard #4, Peppermint #4, Candy #3.
These need checking to see if any 1-ups would be collected in those four routes, otherwise they can be swapped around with other Wheel routes.
Also, as said, needs testing to see if it is worth going for the skip in the first place.
--> It looks like none of the four routes have any 1-ups. Still not going to be a timesaver and I won't be looking into it further.
Radish Ruins, comes down to skipping any 1-ups in the route "[04]: CABBAGE TO METAKNIGHT".
--> This chest would need to be placed in alternative route, "[06]: RADISH #1"
Otherwise, no more 1-ups, so this will work successfully!
The 100% route has been updated to move the chest from [04] to [06].Current progress of new 100%:
At the time of writing, I'm currently in route "[02]: RAINBOW TO OCEAN" at Olive Ocean Switch room 1.
One Helper has been manipulated to Cutter, now I need another one to become Fire or Ice.
The only way of doing so is to just TAS forward and see how it goes...
Please note I'm keeping track of room times at the bottom of this post.
EDIT:
Short update.
I learned that pressing into any direction or pressing A while underwater will advance the RNG.
This seems to work even when not actionable (such as when you freshly entered water).
You can even hold left or right and press A and ^ alternatedly underwater to advance the RNG every frame.
Also, the clouds from starting Wheel ability will also advance the RNG.
In the water section before the Olive Ocean switch room #1, I used the knowledge I described above to come out with lots of different RNG values, then I had my luascript play the next 3 rooms for me over and over, until I managed to manipulate Ice, Fire and Cutter for all Three Kirbys. This took about 3-4 hours.
Now I just need to manipulate that they don't lose these and it will accomplish the best choices for this route (I can do Fire Helper skip and Cutter Helper can cut the string platform for me so I can keep Wheel through the majority of the route).
About the "under sea" room in Olive Ocean. You can destroy the 3x3 block formations from the right side by water spray in 3 lag hitstun frames instead of 6, but apparently this doesn't work from the left side.
After a water spray, you can accelerate slightly faster if you land on the ground just after the spray and hop off it. Has to be frame perfect for the best outcome.
EDIT:
Helper skip in room 823 was successful. Ice Helper was used.
EDIT:
The second helper skip also was successful.
Although in testing, Missile was about 1 second faster, after optimizing both paths, keeping Wheel until the Frosty room is faster by 14F after all.
Lucky for me, because in the Wheel scenario, a Helper got Magic and I can possibly manipulate to keep it until the Titan fight to get UFO from it. :o)
EDIT
Route #2 is finished.
Having Fire in #530 saves 1.5 seconds, but Reset after route #2 saves even more time, 3.0 seconds.
Therefore, Reset will be used and this means Magic Helper will be lost...
I was not able to put any use to it in route #2, the best being Metaknight killing Frosty faster but this still ended up 30F slower than the regular Fire strat.
You can watch Magic strat at the end of this video.
Link to video
I will try to manipulate a new Magic helper in route #3. Although not initially planned, manipulating Magic may not be too impossible and it giving me UFO at Titan would be too nice to pass up.
That's actually quite nice finally knowing how it works.
Regarding RNG, how does this game generate the values, and how does it use them? Is that documented anywhere?
Regarding RNG, how does this game generate the values, and how does it use them? Is that documented anywhere?
As far as I know, nothing is documented about it, but it is very similar to other Kirby games since RNG advances when sprites are created.
In Amazing Mirror, RNG advances when
- Kirby lands or bumps into a wall (little star appears)
- Kirby turns around, starts running, slides or transforms into Wheel (dust cloud appears)
- when inhaling (inhale particles)
- underwater, when pressing into any direction (even when Kirby is not actionable or the directional press doesn't change Kirby's movement)
There are four RNG addresses, 1 byte each.
Or perhaps it is one 4 byte address...
$68D8~$68DB (IWRAM)
Changing values in this address range directly impacts enemy actions and helper Kirby movement/random transformations.
I'm currently TASing forward through the 3rd route (out of 35).
This route consists of rooms (...) -> 523 -> 530 -> (...)
Room 523 is just one large underwater section.
Room 530 is a bit dependent on enemy actions, so I'm focusing on completing this room as fast as possible with the best set of enemy actions.
Then I will go back to 523 to change input. Since RNG can be advanced each frame at will while underwater, I can create about 300 different scenarios.
Some of them will lead through 530 successfully.
Hopefully, this will lead to a helper Kirby getting Magic eventually.
I made a luascript which I let run for about 6 hours to determine helper Kirby "random transformation" probabilities.
This is the outcome:
While trying to find then nearest /256 factor, some of the values were almost perfectly in the middle between two.
For example, Cook has a probability of 1.74% but 4/256 = 1.56% and 5/256 = 1.95%, so I assume /512 factors are used.
This table is definitely prone to errors. Somehow, it only totals in 77% and 375/512 or so...
Not sure where it went wrong. If I find the error, I will update this table.
I might repeat the experiment to verify these results further.