Posts for FatRatKnight

Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Tr| Lap 1 : Lap 2 : Lap 3 : Lap 4 : Lap 5 =  Time   |Re-Rec - Who
P1| 23"46 : 20"49 : 20"32 : 19"63 : 20"09 = 1'43"99 | 40052 - Memory
Just chiseling these numbers into a few binary bits into the TASVideos server. If you guys see a loose chisel sitting by your servers, sorry, I left something there. And don't mind the practice scratches I made on the side of your machines. It took a really steady hand getting the right bits chiseled in properly. 40k rerecords on this one track. There's 19 others. And if you want to go there, the Champion Circuit as well. Are we looking forward to 800k rerecords? I am impressed with the effort going into this. Frequently getting bumps off the slower machines, and sometimes major ones at that, along the way? Are you sure you need those floating mines? I've been caught up on my older projects, and focusing my time on one of them now, so I haven't been putting further time here. Please take my encouragement and see what more impressive times you can get.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
MUGG wrote:
[...] I've been wanting to use a function that just closes the script itself but that doesn't seem to exist.
Closest equivalent would be error("Closed script",0). BizHawk's behavior is to terminate scripts that throw an unprotected error, and the error function's whole purpose is to throw an error. If you regularly use pcall to call all your functions, you're on your own. I do not know BizHawk's behavior on functions throwing errors when registered to certain hooks rather than in the while true do emu.frameadvance end loop.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Oh, this game. Has it really been 7 years since my last post here? I have a run uploaded to Microstorage that I suggest viewing, assuming it still syncs in the latest FCEUX for the most part. In fact, look over this topic for information you might want to know. As for your playaround, thanks for your attempt. I do have a few criticisms, after briefly looking over the first level. Salamander/Life Force has the possibility of two players. With just the one ship, there's only one player-controlled thing to look at. In addition, Salamander lets you have three Options following the two players, giving more objects to fool around with (although between the two players, you won't have enough power-ups for the Options after going for maximum speed-ups, so these glowy things are for later levels). Very little of the environment was considered. Well, okay. You obviously fly in ways that you don't crash into stuff, but I don't mean merely surviving. There is little consideration made in "acting out" with the various objects and terrain. Shooting out curious patterns in the terrain that can break might be nice to see, but you just sit still and shoot a straight line forward. Combining the two points, a second player can give a little better storytelling in that there is something else to interact with. Making it look like the lone player impaled itself on a spike ("acting out" by playing with a particular hitbox) might be a little fun. Having a player look like they rammed the second player onto said spike after stealing a power-up adds much more to the visuals. Playarounds are tricky things. I think this game is suited for it, but it's going to take some careful thinking to make it look like you gave character to what is otherwise just a pair of ships flying around. I hope to see more, but I know full well the difficulties of getting it done.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Let's look over the re-fight skips... 2nd, 4th, 6th, 7th, and 8th are all skipped, and we can just do what was recorded already. So that leaves the three. 1st - Only two enemies in range to spawn. Neither of them move horizontally, and they are off by 1 pixel, by my tests of moving left. If I start moving left at frame x, the boss segment doesn't load. If I start moving left at frame x+1, room loads, but the enemies we need go away. This is what convinces me we're one pixel away. I can't think of any mechanic that displaces an enemy's position other than it being part of said enemy's AI, but feel free to suggest glitch we haven't found yet. 3rd - Exactly one enemy in reach. I see no sensible way to get the enemy to ignore the wall and travel right. It disappears long before the boss room loads anyway. No camera trickery available, as it's just one horizontal segment right up to the door. 5th - The ground enemy is in reach. However, I can't think of any way to delay the enemy to stick to the wall under the door for long enough, even if it's close enough to avoid despawning, as our basic bullets don't go that far. There is also a flying enemy likely in reach, probably a matter of simply not doing the camera adjustment, but it is unknown if the enemy's path will take it anywhere close to the boss room. I don't think it will fly close enough, based on what I remember of that type of enemy. If there's any way to remove these disappointments, that will be nice stuff to see. I've lost the will to TAS further, but it seems the progress keeps on going without needing me on the task anymore. Happy to see the continuation of this effort.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
In Explorers, I was able to get "infinite" turns (or however many turns I had Agility PP) without linking moves. After using Agility, I travel a step, then use an attacking move, use Agility immediately after, travel two steps, attack again, then Agility, travel two steps, attack, Agility, two steps, attack, Agility, two steps... Out of Agility PP? Instead of attack, use Max Elixir. I don't know about Rescue Team, though. I was given the impression that rather few mechanics changed, so that crazy series of steps might actually work. Though, you're going to be a low level in a TAS, right? I recall Agility being a high level move for the starters that can learn it. Agility is just freakishly powerful in the Mystery Dungeon series. Somewhat weaker in Super, there Agility (and Tailwind) lets your allies get multiple attacks, but not infinite, in a single turn.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Based on what I can remember, Bubble Barrier is first used on the segment transition 0->1. It is refreshed during a particularly awkward moment where I'm inside an enemy hitbox near the top of Segment 1, where the first barrier ends and the first HP of the second barrier is immediately consumed. The second barrier runs out for some lengthy time before the third is up, and I think I did another Flame Charge in between, so finding a way to glitch that Shot Counter here is going to be rather tricky without a new route. If you find a way, that I will find impressive. Keeping sync at all with the 16 frames difference is still going to be helpful regardless. I'm guessing you had difficulty with my basic script? I prefer a more compact RNG display, this one along the bottom of the screen. Then again, my scripts rely on taking a few moments to get used to them, as I rarely append identifying words to the display. Sorry about basically dropping things, I've had a busy week.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Ford wrote:
There's precedent for single levels, right?
There is, but it is commonly accepted as a bad idea to continue this rather aged (more than 10 years) precedent. One case has actually been obsoleted by a different game entirely (a sequel with similar mechanics, mind, but still a different game) to remove the precedent. We're trying very hard to discourage runs that only complete a relatively minor segment of a game, and a ruling that has last happened more than a decade ago should not have much weight in what we accept today. In general, we are looking for complete runs, or at least runs that complete a major segment or an entire side mode of a game. A demonstration of a small segment is unlikely to find acceptance here today without a particularly compelling argument. Apologies for acting as though I am speaking for the site, the instances I speak of "we," but I suspect this is true for the site. If I pushed some boundaries, let me know so I don't make a habit of this.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Stage 5 is improved 16 frames. Before I forget, the route change at the corner between Segments 7 & 8 was inspired from watching a DTC6 team. I forget who, but it definitely isn't Team 4. The Charge Swap thing with barriers is documented as Fragile Barrier over in Game Resources. The reason why I didn't grab the ladder in the older route (new route makes the point moot) was because we were far too close to the top of the camera. For ceiling clip to work through three solid tiles, we need a particular camera position. Additionally, we're actually high enough at that moment that wall jumps will not work, we lose that along with ceiling collisions for being too high. EDIT: Some notes about switching weapons with an existing barrier... Object stats offset +0x10 is the important thing to look at. It is essentially the animation counter of the weapon. It tends to increment every 4 frames (some type of animation frame rule, based on when it came into existence). This thing helps the game decide what next sprite to use, modifying offset +0x08 as appropriate. The game assumes the animations of whatever weapon you equipped, not as the projectile of the original weapon. Each weapon has a different animation length. Bubble has a pretty long animation length, so it can get to some pretty high numbers. Flame has fewer. If you switch from bubble to flame at a moment +0x10 is too high, we're past the end of the animation table for flame, it grabs a buggy sprite index for flame, which is in the thousands when it shouldn't usually exceed two digits, and since that doesn't lead to a workable pointer, the game promptly crashes. I don't know about hitboxes of these glitchy index values, it might be possible to get some oversized boxes that instantly hit something before it has a chance to draw the game crashing sprite. More exploration might be needed. However, it is also possible to select numbers where the game instead puts a zero into offset +0x08. This actually disables the projectile without properly destroying it, and removing a projectile like this will not decrement our shot counter. Some animations (like ones described as Gone Barrier) actually destructs the projectile "naturally," removing it and reducing our shot counter as well. This sort of glitching can take a bit of exploring and mapping. Offset 0x10 is our important thing to pay attention to. I recommend finding local function DoBllt in my basic script and adjusting a number in there to show it.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
If we can get double hits on both meteors, that increases our 20/5 of single hit uncharged shots to 44/5, with four hits of 10 damage and one hit of 4 damage using leftover ammo on uncharged shot. If we can't double-hit, a single hit of 10 is still more efficient than two hits of 4, so we'd have 34/4 in that case, still better. If we can get a second double hit off the meteors, that accounts for 157/165 damage across 29/33 hits. That's actually good enough without refills or using the flame weapon right there, as we can use the remaining hits on basic charged shots essentially for free. Well, except that I do need a dirt weapon and a missile weapon for stage enemies, so that skews things.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
We need a grand total of 8 Star ammo across all our boss skips, and using 4 here puts us at a deficit of 1 we must fix one way or another. I would recommend changing the opening attack. That said, lag free meteors are always welcome. A reminder on our ammo availability without refills: Damage / Hits ??/?? - Flame is easiest to recharge itself with, though apparently I had trouble and used an Ammo Tank anyway. Improvements mean different drops 40/10 - Whirlwind can 2-hit with 4 damage each on 2 ammo 20/_5 - Dirt. Projected without laginite meteors. Getting lag-free meteors helps this number 12/_4 - Bubble. We're using the barrier in several spots, leaving only 2 ammo for other things 22/_4 - Missile has those 6 damage charged shots that are nice, and can easily use up 11 ammo _9/_2 - Star is needed on skips, so we're down 8 ammo. That leaves... A 6-damage charge and 3 damage regular 32/_4 - Spikeball is fancy stuff, but we still need Charge Swap barriers at the end, so we can't leave this at negative ammo _0/_0 - Laser is desperately short on ammo for lock breaks. 133/165 damage accounted for, across 29/33 hits, from our starter ammo stocks. If that was one hit with the meteors, 135/165 across 28/33 hits accounted for. Hard to tell exactly what I'm getting out of ammo drops. In picking an optimal path through s11, I ended up using the dirt weapon and forcibly getting a refill for it there, so that's potentially 16 ammo for it. Meaning +12 damage and +3 hits without meteors. Has there been any checks in trying to get meteors working lag-free on the s9 or s13 re-fights?
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
I am curious for a convenient table of times. Ended up creating one myself looking over the submission text and videos...
          |Break the Targets|BoardThePlatforms|
Character | JPN . USA . EUR | JPN . USA . EUR |
----------+-----------------+-----------------+
Mario     | 8"15  7"95 .."..|15"41 15"19 .."..|
Yoshi     |14"53 14"10 .."..|16"61 16"25 .."..|
DK        | 8"51  8"65 .."..|20"17 20"17 .."..|
Kirby     |13"37 13"57 .."..|26"90 26"83 .."..|
Link      |10"57 10"39  9"85|17"30 17"70 16"55|
Fox       | 8"40  8"75 .."..|22"10 22"10 .."..|
Samus     | 8"87  8"90 .."..|23"65 23"31 .."..|
Pikachu   | 8"50  8"59 .."..|11"30 11"30 .."..|
Jigglypuff|12"91 12"99 .."..|20"41 20"39 .."..|
Cpt.Falcon| 8"61  8"87 .."..|19"67 20"83 .."..|
Ness      |14"89 15"55 .."..|19"99 19"65 .."..|
Luigi     |10"23 11"10 .."..|19"15 19"23 .."..|
----------+-----------------+-----------------+
It is nice seeing this sort of TAS around. Getting at all the individual character times rolled into a pair of movies is certainly a nice treat.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Probably impossible, you say? Well, at least it isn't definitely impossible. Otherwise, I wouldn't have made the route. Whirlwind weapon spawns a bunch of sprites, so finding spots where it doesn't lag might be difficult. If nothing else, at least it is a cheap 2-hit 4-damage boss fighting weapon, but it still likes to lag and cause actions of minimal style to mitigate the lag. It also happens to have negative value in Stage 5 just having it.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
So this is something that implements that flame charge. 4 frames. Well, it is initially 2 frames right after that flame charge. Not sure where I got more frames. Added a little more information relating to frame rules whenever we enter a stage. Select presses indicate frames we're delayed thanks to the 4-frame animation rule.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
There may also be a series of fixed locations the rivals may spawn in. In any case, we have need of more data, so continuing a TAS, perhaps with lower effort just to have a complete run sooner, may still be desired. On a side note, I did start my Knight 1 with input intended to help identify sync. I'm one frame short of a rocket start. I also pressed start one frame before the game would allow pausing. In copying input around, or perhaps just changing emulator versions, if a rocket start happens, our input is too early and we need to insert frames. If a pause happens, our input is late, and we need to delete frames. This way, we know exactly where to start the input with very little guessing.
Post subject: Added a third paragraph. Wait, let me fix that...
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
The game apparently identifies whether it's Zook, the projectiles, or enemy based on which slots are occupied. The first 10-ish IDs are player related (Zook, HUD, dust from dash or wall jump), the next 20 are projectiles fired by player, and the last 30 are enemies, their projectiles, and their explosions. When the player's hitbox interacts with an enemy, it usually ends badly for Zook. When a player's hitbox intersects a player projectile hitbox, nothing happens. When a player projectile hitbox interacts with an enemy hitbox, bad stuff happens to enemy. I'm pretty sure different functions are at play here, and hitting the player doesn't count as hitting an enemy. EDIT: At the very least, my hitboxes script do pick different hitboxes just because using the same function on ID 29 (a player projectile) doesn't give sensible hitbox for ID 32 (some enemy). So you can see why I'm thinking the way I am. So, short answer: Hitting player won't skip minibosses or bosses any time soon. Not by any reasonable theory I know.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Made a start into Knight Master. It's not a very good start right now, but apparently the game doesn't restrict CPU from spawning right under another one. I suggest looking at the end of this lap with the script running, so you can see what happened in the Rival Radar. So, manipulating CPUs is important. I'm trying to figure out how I would go about analyzing it. At some points, I noticed driving in a certain way prevented a rival from spawning at all. And of course, the mechanics of how to get awesome bumps to begin with. If there's any good ideas to pursue, I might want to put effort into that.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
That is a decent improvement. Nice. I'm starting to wonder if I should pioneer the rest of the tracks. Basically produce some mid-level TAS of each track as a baseline. If the game is as sync stable as I make it out to be, then it should all be fine once we copy the inputs together. I have a bunch of unknown numbers I've extracted for each machine, if you feel like making some guesses. Not sure where else to put them, so I chose here.
??1C ?27 ?28 ?2C ?2D ?2F
 512   2  10  50  12  13  Hot Violet
 256   2  16  64  10  18  Fire Ball
 288   3   7  48  14  12  J.B.Crystal
 640   3   6  40  16   8  Wind Walker
 448   2   8  56   6  12  Sly Joker
 256   8  16  72   8  16  The Stingray
 112   1  16  80   4  14  Silver Thunder
 496   1   4  48  12   7  Falcon Mk-II
 240   1   8  54  14  10  Fighting Comet
 480   4   2  96   2  16  Jet Vermilion
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Added the end of the run. I wanted to make the skips official and included in the movie. That was just about my goal, with minimal attempts at optimizing other stuff. At least we now have a firm time to end of movie. Finding it harder to maintain the will to look over this game. I don't feel this is clean enough for submission yet. I've got a rather large submission text to look over.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Okay, here's the attempt. Honestly, I'm a bit confused as to whether my previous attempt is better or this one. I'm not ready to make a close analysis yet, so I leave it to others to draw conclusions. Releasing the Flame Charge from the air will stop us the instant we come into contact with a floor tile. There are what I call magnet tiles that exist above and below slopes, and these things let us snap to slope tiles. The slope tiles don't stop us, but the instant we reach floor tiles at the end of the slope, we're stuck there until Flame Charge ends. I assumed the wait is worse than doing what I did. I did not, however, check landing on the platform and then Flame Charging. So I did that in the above input file. Despite doing it, I still don't know if it's any good, but at least I manipulated a small ammo out of it. In the meantime, I triggered the Shot Counter glitch in another way. Well, having the laser rapidly hit a respawning enemy is one way, but I glitched the shot counter another way. Charge Swap Bubble Barrier. Run out of barrier while shots are on-screen. Except maybe not that straight-forward, since apparently a prior attempt ran out of barrier without glitching the shot counter, so the set-up isn't entirely known, but the trigger is, at least. Apparently running out of barrier sets the counter to zero, so if there are still any shots on screen, we'll get a negative count in short time. That alternative Shot Counter glitch is on display against the boss of s2.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Tool-assisted submission text extraction hack. Complete with Find & Replace doing part of the work. Maybe, if we're lucky, it's almost exactly what's needed for some subtitles format to add to videos or something. I never fetched the ROM for this game, but I can just throw a different ROM at it as the subtitles don't need this game to work. Just needs it to get the right numbers, but I didn't need the right numbers.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
I still believe a high Spd3 acceleration will be desired on the times you're navigating the track rather than side attack cancels on the rail. I've taken a quick look at the rails, and they seem to make you lose speed pretty badly. Optimal pattern of a right-side rail cancel is one or two frames off the rail, and one frame on the rail. So at best, you're spending two frames with "normal" acceleration (-16 due to Side Attack) and one frame where you're slowed by being on the rail. If you have boost going, you'd power through the mess without issue (as seen in my quick TAS). Without boosts, your speed will decline rather readily. I keep wanting to push the virtues of reading hexadecimal. It will give a nice, clear, thousands-place boundary on the horizontal or vertical parts of the tracks. I know I most definitely wanted the hexadecimal display in my quick TAS, but that's me. It's also not exactly trivial to know how to tweak your momentum just right. Starting the chain properly is probably the difficult part, as you're not in the ideal position to start with. Continuing it with the boosts I had wasn't too hard, I just had to figure out how to change my facing to tweak the position perfectly. Without boosts, you're going to be constantly losing speed keeping up with the side attacks, and I don't know how much it is worth. On a side note, taking the best possible LR drift (464) on the best possible speed (yellow arrow, under 2560), and doing this while driving at 90 degrees, your true speed is around 3000, or 1500 km/h. My earlier calculation with boosted Dragon Bird on rails is around 1530 km/h, so these side attacks definitely work somewhere. The gain is attractive, I'll say that much, but I never did take a look at it without boosts. The average of the first three frames of the side attack is 1904. Boost-free, you're going to trash your speed quickly, so give yourself 1200 internal speed for the average, and since you more or less have to drive straight, we've got the worst angle we can use, so we end up averaging 2250. Crazy Bear has some crazy drifts it can do, so let's take the 1944 top speed and apply the 464 LR drift at 45 degrees. The average here is 2295. Note that Crazy Bear doesn't have to recover speed afterward since we're just doing a normal LR drift, rather than rail-canceled side attacks which drops your speed. Starting to look like these side attacks should be used sparingly on the first lap and also sparingly whenever you couldn't fit in more boosts in later laps. Based on these numbers I'm analyzing, it does seem like you'd want to only use them when the alternative is hitting max speed and no longer accelerating. An 8 for 4th gear acceleration would let you take the side attack loss a lot more easily. At least Maximum Velocity doesn't have side attacks, so you can avoid optimizing this problem over there.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Not sure how interesting this restriction will be, but it is a thought. "No run away." For sake of rules interpretation, selecting run is allowed, but successfully running is not. Save-reset trick will be a side-stepping of the proposed rule in the effort to avoid encounters without technically running away. This will only for the overworld, at least, so I'll leave it up to others to decide on whether to include "no reset" on top of "no run away." I'm curious what the implications are for never running away. Sure, you'll get more levels. You'll probably manipulate fewer enemies where possible for faster fights. How avoidable is damage with the limited RNG? Will it be worth it to have more than one standing character? Does this restriction give better variation for this game? At the moment, I find this thought interesting. I have no intention of following through with the thought, but I would share it in case someone else finds it interesting as well.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Stage 1 optimized a little further. After the inspirations of the Shot Counter glitch, I figured it wouldn't hurt to try it to see if we can get past a roadblock that slowed us down a few frames. Success! Though, if it's just 4 frames, might be better to just take the old route past those enemies, assuming it doesn't save us the frame rule. We have lag in the way, after all, and removing that are savings that won't be lost to frame rules. Stage 7 could improve, and then we might have 4 frames from that. And if so, we'd save the frame rule on Stage 1, making the laggy path the faster one after all.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Started the page: Wiki: GameResources/GBx/FZeroGPLegend (the right page this time) I shifted the boost cost under the BT stat, leaving room for how quickly you heal on those healing pads. Apparently, in MV, it was just a constant 20. Here, it depends on the machine. Random thought of the moment. Your list has Black Bull with more balance than steering. Judging from what little I saw of speedruns, this looks basically accurate. This means no capacity for drift turns. I suppose its Blast Turn stat is pointless if you don't collide with anything.
Editor, Experienced Forum User, Published Author, Skilled player (1173)
Joined: 9/27/2008
Posts: 1085
Well, I think I found the turning tolerance stat (edited script post). Let me know how well you agree with the guess. We still have a few unknowns in that list to work through. I've taken a look at the jump stat, and I think the internal value is the best one to use. It appears to be the initial upward velocity you get from jump plates, which is probably the best thing to be using. I do like the table. Think I should get some stats transferred into the Game Resources?