Former player
Joined: 8/1/2004
Posts: 2687
Location: Seattle, WA
The only relevant address you'll really need to see is a 'magic food' drop address. All statistical information (damage, speed, etc) is all directly interpretable by your Capability summary. Enemy movement is dependent on location and action once they appear on screen, and all Boss fights are 100% predictable and manipulatable. I don't think that there is one boss that can't be trapped in an unending recursive loop of pain (that is, only the Monkey Tribe's Baby Yeti will put up a big enough fuss to make him a hassle. So yeah, don't worry too much about debugging for random memory addresses.
hi nitrodon streamline: cyn-chine
Former player
Joined: 8/1/2004
Posts: 2687
Location: Seattle, WA
After talking with Enhasa about movement choices and how they affect speed, I started doing a few tests with the original Amphibian build to see what his preferred mode of transportation is. I tested sprinting alone, which finished the stage in 434 frames. I then tested dashjumping (dashing + jumping, which is obviously faster than normal jumps), which finished in 424 frames. So jumping is faster? No. The landing lag is so intense that simply sprinting, then using the jump at the first frame that won't incur landing in that stage is technically faster. For such a slow build, dash jumping will only be of benefit if you can fit 14 precise dash jumps in one area, at which point it evens out with the combination. However, this doesn't factor in bouncing (two full speed bounces in one screen will make jumping the faster route) or the fact that you will sometimes carry over landing lag to the next stage if you don't land in the initial one. Note that this is using the slow ass Amphibian model (Agi 4, Jump 1), and that anything with different stats is subject to change. So yeah, be sure to test out your build's options in movement. I still stand by changing to the Rabbit/Mammal body for speed purposes.
hi nitrodon streamline: cyn-chine
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
I made a real-time run with savestates to beat Chapter 1 somewhat fast. An actual TAS should beat this time easily. I'm just improvising a route without slowdowns, and seeing where it takes me. I would love to revive the discussion of E.V.O. and get a TAS underway. Though, at the moment, I'm more motivated to talk than to actually try things out myself. If my Life Force run is any indication of how motivated I am, you should note that things won't get done terribly fast if I'm the only one around. I dug around for a few memory addresses...
7E0098,1u - Crystal transform frame count (0~63). Increments every frame
7E0099,1u - Crystal transform timer. Increments when 7E0098 returns to 0
7E00DB,1u - Apparently a frame counter. Freezing this causes oddities
7E00DE,1x - A general-purpose RNG. Freezing it causes behavior and luck changes
7E00DF,1x - Another address for a RNG. Just confirming what they are!
7E00E1,1u - Number of sprites currently being tracked
7E0137,1x\
7E0138,1x \ Some enemy states.
7E0139,1x / Seems to be equal to 0x88 if an enemy taking up that spot exists
7E013A,1x/
7E0766,1u - Enemy counter. Enemies loaded into memory since entering screen
I don't actually know how the game determines when you get flashing meat. When I set the values to 7E00DE:5A and 7E00DF:E6, the jellyfish always drops flashing meat. Not the eels, though. Naturally, enemies behave strangely after freezing these values. A few random time-savers I can think of for Chapter 1, already seen in my real-time run: Evolution choices No jaws. That 800 points is better spent on Dorsal Fins and fins. It's a choice of a potential 5 bite versus a potential 6 strength + extra speed (at a cost of 1000). The choice of picking up the Spiraled Horn in my real-time run is probably not a good choice for an actual TAS. Cave of Guidance Hit R after reading the dialogue. The R button takes you instantly back to the world map if you've cleared an area, and the place is cleared after eating the crystal. Cave of Temptation Again, hit R after your transformation act. It doesn't matter whether you can't move at the time. After you're done flashing hues of yellow, hitting R gets you out to the world map anyway. Obviously, manipulate the eel form. The speed easily wins out over the 10 strength of the manta. You have 1920 frames to use this form. Look at 7E0098 (0~63) and 7E0099 (done when it hits 30) for time remaining. Ocean of Terodus The trigger to clear out the wall of bubbles is to raise the enemy counter to 50, and after it gets there, make sure no more enemies exist. A good look at memory location 7E0766 is helpful here. Probably the best way to do this is stagger back and forth right about where some fishes will spawn. Immediately upon their creation, you turn around and swim away for a few frames, then come back to spawn more of them. This means we probably won't be getting any food from here. This makes it more important we consider the time taken for some EVO.P elsewhere. You will still be an eel after this with more than half the time remaining, given how quick this is, so it isn't all bad. Cave of Origin After thrashing the boss with lovely tackles, don't dash out of the cave. Just swim at a normal pace and stick close to the overhanging rock to avoid some dialogue. As for Chapter 2, I suggest a Power Tail and Vestigal Sharks Dorsal Fin for the first boss of the chapter. Having 6 strength (and a little speed) for spending 300 EVO.P is definitely very useful. It's even enough to one-shot the cockroaches in the next area! Just giving a shout out for a hope to see the completion of a TAS of this game. Maybe I'll try a bit myself, when I feel like working on something besides Life Force.
Joined: 9/26/2007
Posts: 55
Location: Michigan
Zurreco wrote:
I got enough free time to finish a sloppy test for this. I stopped using FA after the first meat, and everything went downhill from there. Regardless, the game still went by quickly enough. Sub-60 would be a piece of cake. Test can be found here.
Oh dear God thank you for this! =) I must've played through this game 100 times by now. I'll take notes as I watch it. World 1: I'm surprised that the dash-attack didn't get used once. World 2: You could have afforded the Jeprol back-o'-the-head before the Debustega fight. That would have saved a ton of time. World 3: Wow, that five day battle with the prime frog was badassed. World 4: Man I have so many memories of this game brought back by your ravenous lionbunny biting Tyranosaurs in the crotch until they die. (And it always took me a massive amount of time to get through the bird fortress, I've never seen it done as quick as you did it.) World 5: Okay so the dash attack didn't seem to get used once throughout the whole movie. Excellent proof of concept video there, I could see 55 minutes for a final time but I don't see going below 50, unless there's a big change in the Prime Frog fight. I'm not one to accurately estimate this kind of thing though. The next question is will there just be one tas or one that also finishes the game with a caveman instead of a lionbunny?
Joined: 7/2/2007
Posts: 3960
I don't see the caveman morph as adding anything particularly significant to the run, especially since the vast majority of the game would be the same. In fact, I'd say it's more entertaining that Gaea's partner-for-eternity is an angry little rodent.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
FatRatKnight wrote:
(A rather large post)
Um, do I exist? The last two posts imply that mine means absolutely nothing, except to bring this thread back to life and show some otherwise missed posts. (The fact my attempts and my time-savers are not even mentioned gave me this impression) Sorry about my negative mood in the last paragraph, but I feel like nothing I said got heard. Then again, I didn't pay any attention to the test run until now. It looks real sloppy to my eyes, but it's merely a test, just getting to the end is mostly good enough, so at least there's something to compare to.
negjay wrote:
World 1: I'm surprised that the dash-attack didn't get used once.
Agreed, I am also a bit surprised. A lofty bite can be almost completely replaced by dash attacks, especially after considering what gives Agility and what doesn't. At least look at my real-time run in Ch1 with savestates to see that choice in action. There's bound to be a few other things you would like to see. It even beats the test run for chapter 1!
negjay wrote:
World 2: You could have afforded the Jeprol back-o'-the-head before the Debustega fight. That would have saved a ton of time.
One could also spend the exact same number of points for equally decent strength. As a bonus, you even get a little speed, which won't go away if you do choose to get 15 bite from Fierce Jaws + Jeprol later on. I'm sure there are still plenty of ways to speed things up. Now I want to TAS up something!
Joined: 7/2/2007
Posts: 3960
Sorry, FatRatKnight; you do exist! However, it's nontrivial for me to watch WIPs on my Mac here, so I tend to just pass on them, leaving me nothing to do but comment on what other people have said. And I don't have the in-depth knowledge of the game to be able to judge your suggestions for possible evolutionary paths.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 9/26/2007
Posts: 55
Location: Michigan
Wow Sir FatRat, both of those movies were smashtastic. With additional frame perfect precision there will be no doubt that ramming is comparable to biting in this game, in many cases a better option.
Editor, Emulator Coder, Expert player (2159)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
Hmm, I gave up this project as soon as I thought I wouldn't figure out the optimal evolution strategy in the first two chapters. Wow, great find on the bubble walls in Ocean of Terodus, FatRatKnight! EDIT: Hmm...
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
I TASed up a test run of Chapter 1! It was fun watching myself beat the boss silly. Obviously, as a test run, I haven't actually bothered to tightly optimize everything. The only real luck manipulation taking place is on the first jellyfish. Beyond that, the second piece of flashing meat I get was actual luck. Some improvements that come to mind: * Luck manipulation. Lots of it. * Evolve the tail to something more decent. Even a small change made early enough can still be worth it, I think. * Skip the blue crystal. Manipulate up the points from the numerous crawly shell things on the ground! * Various optimizations... Those crawly shell things I mentioned gives 200 points per flashing meat. Now, tell me how three of those can possibly take longer to manipulate than going on a detour to the blue crystal? There's two I can poke at while still an eel in the same cave without going off the beaten path, and I count like 7 enemies which can give that tasty treat in the caves just before Kuraselache's Domain. There's another few on the way past that. As for the start of Chapter 2, I'm a little torn between getting the first green crystal or skip the darn thing. Here's the characteristics of getting a crystal early on: + I have an excuse to name a form! Imagine what I can do with 10 letters! + Skip the Coelafish dialogue! (Jump over the water around the area) + Can one-shot everything before the first boss right from the start. + Have at least 10 Agility instead of 4. + Eel does not get "change of circumstances" for jumping in or out of the water. Plus it mysteriously floats over the ground making footsteps! + Fish has 6 strength, which would help if I can reach the boss quickly enough. But it's stuck with "change of circumstances" around water, and stuck with 1 bite in my evolution plan. - Must jump to take advantage of high Agility - Can't bounce on enemies. Combine this fact with the above... Yeah, ouch. - Must take a somewhat long detour to get the crystal. You'll need to make up for roughly 2000 frames of loss on the detour + transformations with 1920 frames of high speed sailing through the air in order for the crystal to be worth it. - Must spend a few frames to record the form and name it for it to be used in Chapter 2. It is hard to tell whether getting the first crystal is even worth the effort. I can still quickly work up 300 EVO.P without it. The biggest reason I can think of is the travel time, which will surely be reduced significantly. If I do pick up the crystal, I'm thinking an encore of the Eel is the way to go. Pick up a few EVO.P, and try to time it so I can begin attacking the first boss of Ch2 as an amphibian with 6 strength. Depends on just how much the green crystal time limit would get me...
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
Optimizing a few things, then got lazy while setting up the eel and fish forms. Turns out that Debustega should have prepared for a land shark! With lacking comments, I won't say much else here. Being a fish actually made up for the time taken to get the Green Crystal! The total savings appears to be roughly 1400 frames over the fish-less test run that I haven't posted here, but stuck with no tail or dorsal fin evolution (which would probably be later replaced anyway).
Joined: 7/10/2007
Posts: 280
Wow, very impressive.
Editor, Emulator Coder, Expert player (2159)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
FatRatKnight wrote:
Being a fish actually made up for the time taken to get the Green Crystal! The total savings appears to be roughly 1400 frames over the fish-less test run that I haven't posted here, but stuck with no tail or dorsal fin evolution (which would probably be later replaced anyway).
Hmm, I think you can get as full-powered as an amphibian can be before fighting King Bee.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
klmz wrote:
Hmm, I think you can get as full-powered as an amphibian can be before fighting King Bee.
That depends on what you mean by "full-powered". Eating Debustega's lunch, the sacrificial Ikustega's gift, and luck-manipulated premium larvae meat, you could have as much as 2200 EVO.P. This is enough to max-out either Agility or Biting power. On the other hand, I'm a little short on affording things like Dual Horn and Armor Body... Although, seeing that tackles (21 frames of animation) appear to be faster than biting (30 frames), after vaguely testing things as some fish, I'm now more convinced that tackles are the way to go. Even more so if I choose to make a detour to become a bird, since I can then make those tackles in the air. Those Fierce Jaws don't seem terribly appealing now... I decided to observe the random numbers closely, and cheat-set a few values to help me through. I now have a much better understanding on what to look for to know when I'm getting especially yummy meat. The random numbers takes up two bytes, at 7E00DE and 7E00DF. It has already been stated before now, but I have confirmed that they are indeed the addresses containing random numbers. Each time they are updated, the game will separately update each byte. It may choose to increase or decrease these values. If it chooses to increase, it adds 0x100 then divide by 2, rounded down. If it chooses to decrease, it simply divides by 2, rounded down. 7E00DE goes up or down by some currently unknown factor. 7E00DF goes up if 7E00DE is odd, that is, bit 0x01 is set; Else, it goes down. As for determining flashing meat... The moment that the enemy is done being stunned by your attack and begins disappearing, that is when the game checks the RNG. There are some enemy states at addresses 7E09A4 ~ 7E09AB, which will help to know when they do die at bit 0x10. Even more convenient, bit 0x08 in the same bytes tells you if there's any flashy meat. When it comes to how the game uses random numbers to create your reward, this is what it does: Flash = address 7E00DE + address 7E00DF (add the two together) If ( Flash MOD enemy_specific_drop_rate == 0 or 1 ) then drop flashy meat. Else, drop regular meat. The enemy_specific_drop_rate depends on what enemy it is. Jellyfish = 64 (Somewhat common) cute eels = 256 (Very rare) Green sea slugs = 32 (Common. Perhaps this is why I got 3 so quick...) Zinichthy = 256 (But they drop 300 flashy meats... Too bad it's so rare) ... Just to name a few. The enemies I'm targeting for those yummy 200 boosts are 64, so it's not that awful to manipulate them up. The only real unknown at this point is what determines whether 7E00DE goes up or down. I do know exactly what happens when it does change, but not what decides which way it goes. By the way, cheat both 7E00DE and 7E00DF to 0, and almost everything you kill drops good meat, as well as force highly unusual behavior.
Joined: 10/3/2005
Posts: 1332
FatRatKnight wrote:
7E00DE goes up or down by some currently unknown factor. 7E00DF goes up if 7E00DE is odd, that is, bit 0x01 is set; Else, it goes down.
As you may be able to discern from this uncommented blob of Lua code linked below, the highest bit of the lobyte (00de) is set when the 2nd bits of both bytes are inequal. That is, it XORs the two bytes together after ANDing them with the number 2. Not much you could have done to predict that without a debugger. To be honest, I'm astonished you've figured out as much as you have if you really aren't using a debugger to trace the code. Anyway, I've been working on a script that predicts flashy meat, partly for my own edification and partly because it would probably be really handy. The script is basically done now. It's not pretty, but I think it'll serve its purpose. I used to it to manipulate flashy meats off of jellyfish and those green slug things, but not the eels... I don't know what that's about. It might need some tweaking, or maybe the eels are just jerks. The script shows an array of numbers, each counting down to the next frame upon which, if killed, a given monster type will drop a flasher. The top number is for slugs, the second, jellyfish, etc. It only captures the four values you cited. If it turns out there's a monster that only drops on "flash MOD 192" or something like that, you can add more values to the "modnum" table, and the script will watch for those, as well. Also, there are two modes: accuracy mode, which takes a lot of CPU, and casual mode, which will become inaccurate over time, as the RNG seems to advance when enemies need to "think". You can toggle the mode with player 2's A and B buttons. If you want to use the script, you'll need DeHackEd's version of Snes9x with embedded Lua interpreter.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
From what I can tell of that lua script, it seems you're checking for 0, and only 0. From my tests, both 0 and 1 gets me the flashing meat. It's not a 1/256 chance from those eels, but a 2/256 chance. Let me know if I misread something, since I'm not familiar with lua.
Dromiceius wrote:
To be honest, I'm astonished you've figured out as much as you have if you really aren't using a debugger to trace the code.
I have not used a debugger. As I do not know SNES Assembly, I do not believe that reading the ROM binary with assistance from the debugger would help me. If you knew my history of cracking passwords of various games, this fact would seem less of a surprise. I believe my experience in the past has helped me to spot out patterns quickly. I now see exactly what's going on in the random number bits. All that's happening is that they're getting shifted around. If you look at the numbers in binary, a division by 2 simply shifts the bits 1 digit to the right. The bit that gets shifted out of 7E00DE is shifted into 7E00DF. In effect, once the game generates the bit in 7E00DE, it sticks around until 16 RNG calls later, when it's finally shifted out into oblivion at the low end of 7E00DF. The game only generates a single "random" bit each time, and merely moves it through the random number addresses. Since a bit is shifted from 7E00DE to 7E00DF, perhaps Big Endian format is more appropriate. Or just use the practical knowledge we have and stop thinking about the theoretical beauty of each individual bit. I finally beat Chapter 1 with that final piece of RNG you gave me. It became many times easier when I got an idea on roughly what frame I can expect good food. My frame-counts to the best of my ability to measure them:
Measurements are based on:
* 7E0067 (fade-in/out using bit 0x10)
* Emulator's frame counter (obviously)
* 7E00DB (game's internal frame counter. Lag check)

 1-* Ocean of Origin         1255 frames ( 95 lag)  Original Dorsal Fin
 2-1 Cave of Guidance         177 frames (  3 lag)
 2-2   Inside cave            726 frames (167 lag)
 3-1 Cave of Temptation       195 frames (  7 lag)
 3-2   Inside cave            901 frames (156 lag) 1920 as eel; +300 EVO.P
 4-* Ocean of Terodus         623 frames ( 42 lag) 1403 as eel
 5-1 Cave of Zinichtys        107 frames ( 11 lag) 1309 as eel
 5-2   Inside maze            925 frames (113 lag)  497 as eel; +200 EVO.P
 6-* Domain of Cepalas        471 frames ( 24 lag)   52 as eel
 7-1 Cave of Origin           310 frames ( 63 lag)
 7-2   Inside cave           2284 frames (367 lag)  Powered up! Saved fish in record.
 7-3 Domain of Kuraselache   1069 frames (123 lag)
 7-4   Battle w/ King Kuras   988 frames (239 lag)
 7-3r  Chickens of the sea     74 frames (  5 lag)
 7-5 Coast of Pange          1424 frames (191 lag)
Chapter 1 finished at frame 21051

EDIT: Fixed incorrect reported lag of 7-5 (was 447)
      Also marked the second 7-3 with lowercase r.
Joined: 10/3/2005
Posts: 1332
FatRatKnight wrote:
From what I can tell of that lua script, it seems you're checking for 0, and only 0. From my tests, both 0 and 1 gets me the flashing meat. It's not a 1/256 chance from those eels, but a 2/256 chance. Let me know if I misread something, since I'm not familiar with lua.
You're right, that is what it was doing, but after changing it to look for 0 or 1 I still couldn't get the eels to drop anything. But that's kind of irrelevant now. :p
I finally beat Chapter 1 with that final piece of RNG you gave me. It became many times easier when I got an idea on roughly what frame I can expect good food.
Wow. It really shows. Looks like you removed a lot of lag in 7-3, too. I'm looking forward to the rest of it.
Editor, Emulator Coder, Expert player (2159)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
Wow. It really rocks. I have nothing more to say now.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
I got through King Bee now! Typical bashing of the boss took place. There's some mild optimizations over my previous Chapter 2 fishy test run. I haven't checked any alternative ways of doing things. I just picked whatever strategy seems fastest at the time and optimized it. While waiting for that 1000 meat, eating those random things actually delays the appearance of that meat by a frame for each thing I chomp down on. On the other hand, since there's fewer sprites onscreen, that means less lag. And the menu is very laggy on its own, anyway. I think there's some reduced lag, but I haven't thoroughly checked. Besides, why be picky? The next areas should go quickly enough. Though, I'm wondering how the end result would look. Will it be just a "jump to next area, and bash bosses silly" run? May as well keep going and see how it turns out.
Joined: 9/26/2007
Posts: 55
Location: Michigan
You're making incredible time through this game, anyone who's familiar with it will be very impressed. That was awesome how you kept the landshark's speed by gulping in midair.
Editor, Player (54)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I just had the chance to check the WIP & I must say it was great, keep it up FatRatKnight :)
I'm the best in the Universe! Remember that!
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
Hmm, fixed my lag count on one of the Chapter 1 stages. That last one didn't have 447 frames of lag, but 191. Hopefully, there aren't many other errors in my frame counts. Aside from counting up frames, the rest of Chapter 2 went by fairly quick. There are still known improvements to be made, since in mid-battle, I discovered that scrolling the screen over a bit makes Queen Bee stop moving from the last hit sooner, and therefore gets out of the hit-stun quicker. Besides that potential improvement, I can see one likely improvement all the way back into the first stage (Those jumps are pretty fast, and I neglected to even test them back then...). I'd rather continue and mark down everything that looks suspiciously improvable. Going back every time I notice something does not sound appealing.
Measurements are based on:
* 7E0067 (fade-in/out using bit 0x10)
* Emulator's frame counter (obviously)
* 7E00DB (game's internal frame counter. Lag check)

 1-* Coast of Pange           336 frames (  4 lag)
 2-* Empty Land              1240 frames (261 lag)  1885 as fish
 3-* Ocean of Pange           533 frames ( 72 lag)  1561 as fish
 4-* Land of timid Ikustega   314 frames ( 16 lag)  1265 as fish
 5-* Land of bull Ikustega    315 frames ( 15 lag)   967 as fish
 6-* Land of Amphibians       396 frames ( 41 lag)   671 as fish
 7-* Land of Boss Ikustega   1945 frames (308 lag)    91 as fish
 8-* Domain of Profasu        663 frames ( 64 lag)
 9-* Domain of Giant Bee      691 frames (129 lag)  Keril
10-* Land of Insect           443 frames (  6 lag)
11-1 Cave of King Bee        1011 frames (128 lag)  Jump D-Fin
11-2   Battle w/ King Bee    2084 frames (316 lag)  Spring Tail
11-3   Megausu's speech       504 frames ( 30 lag)
12-* Desert of Sand Eater     597 frames ( 10 lag)  Crystal get!
13-* Desert of Edosaurus      350 frames ( 43 lag)
14-* Desert of Mosuchop       245 frames (  7 lag)
15-* Desert Time Trans       3031 frames (397 lag)  Saved Amphy in record
Chapter 2 finished at frame 47675
Editor, Emulator Coder, Expert player (2159)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
I guess you are going to take the flying form as your ultimate choice...
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Joined: 9/26/2007
Posts: 55
Location: Michigan
I'm still not sure what the benefits of the flying form would be over any other, running and enemy bouncing can get through stages much faster than just flying through them. There's not that many bosses that flight would provide a clear, distinct advantage for either. But, if he does do flight, I hope instead of going up in the cloud for the 9999 blue crystal FRK tests out the big ocean area before the mountain. Glowing meat from those shell enemies on the floor right at it's start, if manipulated, would probably be tons faster. But no dragon that way.
Joined: 6/19/2005
Posts: 180
I think taking bird form over reptile might be a slowdown because transforming into a bird changes you back into a slow, weak form with 0 EVO points. It allows access to areas players didn't have access to earlier, but if you're going for speed, it's probably faster to just go with reptile or green crystal evolutions.