1 2 3 4 5 6 7 8 9
Ambassador, Experienced player (710)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Awesome, this looks like it is really coming together. Good luck with testing. I think that WHIPping could have another advantage. If you have WHIPs at BYAK-KO then could you beat him without STONE? That would save the trip to the hidden sky village, so it could save time even if it takes a lot of turns. Edit: More ideas: -Weapon crits; Could any of these be useful? The big game-breaker would be keeping KING sword. But there are other weapons that can deliver crits in limited cases. Not enough money for most of them though. -Does COUNTER work if the hit kills you? Could be useful for several fights. -There is a HYPER cannon in the skyscraper that kills just about anything instantly. It might be too far out of the way to be profitable though. -Use equipment to boost stats? The GIANT gauntlet and GETA shoes are each worth +10 Strength. You can buy GIANT gauntlet in world 3 hidden town and GETA shoes in world 4 Northeast down. -There's also a GIANT gauntlet in world 3 jail but it would require walking a bit out of jail. Using teleport here forces you to go through some of the tower and get your bike again, so fighting it out through here could be profitable. -Confusion, paralysis or sleep? Also probably out due to finances. Also all the bosses are immune to these since they are all the same element as death. There do seem to be some high-level monster abilities that can confuse without elemental limitations though. If you could get a monster with the stone version of GAZE you could use it on SEI-RYU.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
I feel strongly inclined against whips. However, I won't dismiss it right away, though I'm tempted to skip any tests. Although, the detour to bSTONE does take around 20 seconds, and looking at the rounds of combat against SEI-RYU, adding four rounds due to no bSTONE might be roughly breaking even. This does not take into account the fact that in place of shopping for bSTONE, we're instead shopping for a WHIP, which will take time on its own. Keep in mind we will have no good damage option. BYAK-KO has 1000 HP to kill, and without bSTONE, we have no other insta-kills, unless we can summon up a MEDUSA monster on our side, but using a non-mandatory battle for that eats up more precious time. The whip should be dealing trivial or no damage, and we might be dealing 150~250 damage per turn starting with round 2. I want to say the WHIP will never take place of bSTONE. It's 20 seconds to the bSTONE and back. An extra round takes roughly 5 seconds, give or take, judging from the SEI-RYU battle. How long to the nearest shop with a WHIP or E-WHIP and back? I really am tempted to dismiss this without a single test. If there's further push for some sort of whip, I will check, though. Edit: Actually, already went ahead and did a bit of checking. The WHIP from a shop in World I and the E-WHIP in a shop from World III each takes around 10 seconds, maybe slightly less. Unless anyone's got brilliant ideas on what to add to our shopping list, or how to use whips more effectively than what I am able to see, the remaining half of the time from skipping bSTONE will be lost on extra rounds on BYAK-KO. An extra battle is almost certainly out of the question. Any ideas on a 2 or 3-round KO? 1000 HP, immune to death, no SAW. What's the battle plan? I also feel doubt that a WHIP would help before or after this battle. I still haven't gotten around to it, but I think I can beat SEI-RYU to a pulp with brute force and POWER abuse, no whipping. Everything after BYAK-KO is pure instant death all the way through. Again, just feelings, no tests to back it up.
Player (80)
Joined: 8/5/2007
Posts: 865
I'm still busy, but some time freed up tonight. I was going to contact some people I talked to today when I suddenly realized I didn't have any of their email addresses.
FatRatKnight wrote:
These are what I expect after mild testing. Tell me if it's wrong.
Finally it's my turn to say it: it's wrong (but it's close). I'm getting 0x00 ~ 0x2A - Divide by 2 0x2B ~ 0x7F - Reset to "original" 0x80 ~ 0xD5 - Subtract 0xD6 ~ 0xFF - Add You switched two results and were off by one on the cutoff between subtract and add.
FatRatKnight wrote:
The random number addresses tend to "wander". If C300 is zero, the following six addresses could also be zero, or perhaps they all happen to be one. Maybe the first half is zero and the later half is one. When you generated those tables, it's possible we thought that C30E was always a fixed value away from C30B after a reset.
I was afraid of that. It's just one of those little details that I never saw fit to test. While it makes luck manipulation a little more complicated, it also opens up new possibilities if we can nudge that offset by just one or two values. We might get it so that C30B offers ability shuffling while C30E actually shuffles them in a way we want! Say... do you think we might be able to get the coveted GAZE (stone) ability this way? I realize it's a loooooooong shot, because the RNG would have to be one value off from the desired value to begin with, but the potential benefit is just too damn much to ignore. Regarding your explanation of the RNG grouping pattern, I actually had no trouble understanding what you were trying to say (but I verified it in the RAM watch just to be sure). I even think I could come up with a model for it. Let me give it a quick shot now without wasting too much time y = floor(m*x + b) where y is the RNG index we want to know. x is the address in question minus C300 (e.g., looking at C30B implies x = 11). b is the value of C300 plus some small offset term (like 0.1). m is... 9/64. (This is the part I'm most unsure of. If it's not 9/64, it should be close. It might not even be rational or explicitly handled in the game.) Go ahead and test that if you're bored. It should be approximately right. I don't think it's worth correcting if it's wrong, though.
FatRatKnight wrote:
I have a small function for generating a range of numbers. It might match the game's way of handling an arbitrary range, or it might be off by some amount. I do not know, but it does a good enough job at approximating that I can't detect errors myself.
I recognize this formula! You discovered it when you theorized why the NPCs preferentially walk northwest. I copied it to the table on the resources page for the POTION and X-POTION formulas. Does this look familiar? INT(RNG*60/255) The only real difference is that you use the floor function (adding 0.5 inside) and I stuck with the INT function.
FatRatKnight wrote:
I think this function fits well with the Ability Uses Shuffler, the numbers at the top of this post would match this function with a D of 3, and a small amount of trying them out led me to link the effects with the results I've been getting. If it's not true, I'm sure further tests will prove me wrong.
Almost. Al-freakin'-most. There's a discrepancy of one byte between your bins for NPC movement and for ability shuffling. By plugging in numbers, I can tell you that NPC movement is consistent with your formula while ability shuffling is not. On the one hand, it's perplexing that there would be any discrepancy at all; both functions should be working off the same formula or the same bins. On the other hand, I'm willing to overlook such a minor flaw, since it's unlikely to affect anything. Of course, we should account for these flaws whenever we can, but attempting to decipher what's going on strikes me as an inefficient use of our time. (If you happen to want a theory, I have one ready: the ability shuffler uses INT(RNG*D/256), substituting 256 for 255 in the denominator. Sloppy programming, but I believe it accounts for everything we see.)
TheAxeMan wrote:
I think that WHIPping could have another advantage. If you have WHIPs at BYAK-KO then could you beat him without STONE? That would save the trip to the hidden sky village, so it could save time even if it takes a lot of turns.
I was able to WHIP BYAK-KO in my first test run. I can't say whipping him is out of the question at this point, but I think it's unlikely to work. (Though I'm aware that the last time I dismissed one of your ideas, FatRatKnight confirmed it was actually a great strategy.) I see the following two problems: •BYAK-KO has 50 Agl. That means he's going to strike first more than SEI-RYU or other enemies and it also means the WHIP is going to miss a lot. •BYAK-KO has 45 Def. and 1,000 HP. We pretty much can't beat him in a reasonable time with WHIPs alone. We'd need POWER (which we might already have from SEI-RYU), but even then the battle would easily take four or five rounds. Compare that with one round for STONE. The glider is pretty fast, so it might be faster to just pick up STONE. Nevertheless, you were right last time, so it's worth testing again. I'll certainly keep it in mind! Edit: I'm editing this post to incorporate and address FatRatKnight's latest comments.
FatRatKnight wrote:
This does not take into account the fact that in place of shopping for bSTONE, we're instead shopping for a WHIP, which will take time on its own.
I believe TheAxeMan's reasoning was that we'd have the WHIPs left over from the SEI-RYU battle, so it technically wouldn't cost any additional time. But if we don't need them for SEI-RYU, I agree it would be extremely unlikely that we'd find use for them against BYAK-KO.
FatRatKnight wrote:
Keep in mind we will have no good damage option. BYAK-KO has 1000 HP to kill, and without bSTONE, we have no other insta-kills, unless we can summon up a MEDUSA monster on our side, but using a non-mandatory battle for that eats up more precious time. The whip should be dealing trivial or no damage, and we might be dealing 150~250 damage per turn starting with round 2.
Looks like we hit upon many of the same points here.
FatRatKnight wrote:
I want to say the WHIP will never take place of bSTONE. It's 20 seconds to the bSTONE and back. An extra round takes roughly 5 seconds, give or take, judging from the SEI-RYU battle. How long to the nearest shop with a WHIP or E-WHIP and back?
Agreed, except for the part about going to the nearest shop. With the extra rounds, I also think that the the net time saved would be virtually a loss. And while we wouldn't have to go out of our way especially to pick up the WHIPs for this battle, we might still have to reorder the party to best manipulate luck for this long battle, costing us another second or two.
FatRatKnight wrote:
I really am tempted to dismiss this without a single test. If there's further push for some sort of whip, I will check, though.
One of us should check the feasibility of the WHIP against SEI-RYU. If that doesn't work, yeah, drop it. If it does, I say TheAxeMan has a case and it wouldn't hurt to check if we can make it work for BYAK-KO too. That's really what this all comes down to: first focus on beating SEI-RYU, who continues to give us the most difficulty, then worry about BYAK-KO, who we already have a valid strategy against.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
Bobo the King wrote:
[...] Say... do you think we might be able to get the coveted GAZE (stone) ability this way? [...]
While it may be true that that the RNGs do "wander" a bit, problem is, C30B and C34B are in exactly the worst possible spots in relation to one another. That is to say, no matter how the RNGs wander, the two addresses will always be an exact same number apart. I just told lua to go ahead and keep resetting until (C30B + 9)%256 isn't equal to C34B anymore (the reset process also zeroes them out, so checking for not equal as well to get around this). It hasn't finished. I'll keep it running for a long while, but don't raise any hopes.
Player (80)
Joined: 8/5/2007
Posts: 865
Heh, and don't forget that GAZE would have to be the very next ability we learn. Because it rolls to the next YY whenever we learn a new ability, it should "snap" back to particular values. Edit: Incorporating TheAxeMan's latest edit (I noticed!).
TheAxeMan wrote:
-Weapon crits; Could any of these be useful? The big game-breaker would be keeping KING sword. But there are other weapons that can deliver crits in limited cases. Not enough money for most of them though.
Hmm, I don't have enough experience in that area, but this could potentially be really helpful, as Alex Jackson mentions that elemental weapons always score a critical hit in their first use after a soft reset. The only problem is finding an elemental weapon... For quite some time, I've been really drawn to the more sophisticated an eccentric elements of the game-- in particular, martial arts and bombs. Alas, it doesn't look like we'll be using either of them.
TheAxeMan wrote:
-Does COUNTER work if the hit kills you? Could be useful for several fights.
No idea, but it reminds me of those damn exploding trees from EarthBound.
TheAxeMan wrote:
-There is a HYPER cannon in the skyscraper that kills just about anything instantly. It might be too far out of the way to be profitable though.
Not a chance if SAW works the way we think it does. If not, a very slim chance.
TheAxeMan wrote:
-Use equipment to boost stats? The GIANT gauntlet and GETA shoes are each worth +10 Strength. You can buy GIANT gauntlet in world 3 hidden town and GETA shoes in world 4 Northeast down.
Sure beats buying STRONG potions! Great idea!
TheAxeMan wrote:
-There's also a GIANT gauntlet in world 3 jail but it would require walking a bit out of jail. Using teleport here forces you to go through some of the tower and get your bike again, so fighting it out through here could be profitable.
Yeah... according to my notes, it saves about 590 frames or 10 seconds to TELEPOR out of jail. It'd cost another second or two to pick up the gauntlet.
TheAxeMan wrote:
-Confusion, paralysis or sleep? Also probably out due to finances. Also all the bosses are immune to these since they are all the same element as death. There do seem to be some high-level monster abilities that can confuse without elemental limitations though.
Those crossed my mind. I certainly love the idea of reading "ATOM ANT sleeps" instead of waiting while it attacks. Still, I haven't found an instance where we need a status effect and that's usually a good indication that it won't be useful. It's in the back of my mind.
TheAxeMan wrote:
If you could get a monster with the stone version of GAZE you could use it on SEI-RYU.
I'm aware of this and I've been a little lazy about checking it since finding the shortest path to a particular monster can be extremely difficult. But since it's worth checking out for its potential benefit, I'll make it the last thing I check tonight, even if it's just a qualitative analysis. Finally, my own idea: since we won't need to manipulate stat boosts for the last portion of the game, I was thinking we should manipulate it so we always strike first in battle. I don't know if that works against bosses (or other non-random encounters), but it'd make the last section even easier! Edit 2: Just throwing this out here as a fun idea: we could create a Lua script (or if we're feeling masochistic, just a whole bunch of cheat codes) so that every RNG index is set to 254 (corresponding to 0) or all of them to 126 (corresponding to 255). It would make the game wild and maybe virtually unplayable, but it might offer some strange insights into what the RNGs do. And oh my goodness, I just noticed something. The indices corresponding 0 and 255 are 128 apart. Furthermore, the 255th index corresponds to 5 while the 127th index corresponds to 250 = 255 - 5. Oh boy... and the difference with the previous index is 46. At the very least, I smell a pattern. At most, I smell group theory. It's been a while since I last studied group theory, but I have a feeling we might be able to completely deconstruct the table into an extremely simple form. *Sigh*... I know I wouldn't have figured it out without pinning down the exact values, but it just feels so deflating to dismantle my hard-derived table in favor of a short formula. Oh well. Edit 3: Using my spreadsheet of RNG values, I was able to very quickly determine that each RNG value is exactly 128 indices away from its complement. For example, 123 is 128 indices away from 132. I know patterns are good, but this makes me strangely unhappy. Well, I had anticipated taking a light workload on this speedrun tonight. So much for that. Edit 4: No, I take back what I said about the RNG values always being 128 indices away from their complements. The RNG values at 103 and 104 (values 172 and 170) are not complemented by the values at 231 and 232 (values 85 and 83). I'm not striking through the content of my previous edit because the fact that these are consecutive values makes me very suspicious that I just switched two values. It's just a matter of figuring out which ones. Basically, be aware that there probably is a pattern to the RNG but beware those indices (103, 104, 231, and 232) because two of them are probably switched.
Ambassador, Experienced player (710)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Added some more to my last post. Mostly random ideas.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
Weapon crits Not sure what we'd crit. Would be lovely to just have the KING sword if for no other reason than sheer damage, but no such break has been found. COUNTER Haven't checked. I have a feeling it won't help, considering we need to walk by a shop with these things first, or find a different counter ability. Are you thinking about BURNING as a possibility? HYPER We already kill everything in one turn by the time this thing shows itself. Does not look like it'll help. Use equipment to boost stats? There is a shop that is one or two steps to get to, and again to get back on track. This shop has a shoe for raising strength. This pushes the favor towards MUTANT M over HUMAN M... Almost. 54 Strength becomes 64, and it's only 3 battles away for perfect SAWing then. The glove is apparently too far away for a single round of help, however. Close, but probably still wouldn't give the MUTANT M time to prepare for SU-ZAKU and ASHURA. Regardless, sticking one on a HUMAN M is a trade-off of a couple steps versus a few extra STRONG uses. With both, I'd take the MUTANT M in a heartbeat -- 74 Strength just misses the golden 75 we need, so the human would need a detour for a STRONG regardless, while the MUTANT M picks up the strength off the EVIL EYE or MACHINE. But one isn't in easy reach, however. It is true that TELEPOR out of jail has a lot of walking anyway, this is something that might need to be looked into. Confusion, paralysis or sleep? Probably not. We're already chipping through bosses at a fair clip already. I still need to test SEI-RYU and the POWER unity of BATTLE sword and HAMMER. I'm going to try it now, darn it. Edit: That went well. Any questions whether WHIP will help in this case?
Player (80)
Joined: 8/5/2007
Posts: 865
FatRatKnight wrote:
Are you thinking about BURNING as a possibility?
The Territorial Oak Mutant M burst into flames! Be sure to catch my edits on my previous post.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
I'm quite tired now. I'm going to check over the previous posts later. The latest test in my previous edited post had some stats I forgot to hack more towards the expected norm, but I did another test run with the stats properly hacked to what I expect to have, and it still works just fine. I still don't think a WHIP is going to help, especially with the test's results in. POWER isn't a hard ability to grab.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
I am awake again. Now for further thoughts. I stopped testing at 1.7 million frames (wanted to use my computer as a lullaby, a sleeping aid, whatever. Don't ask). I've come to the conclusion that C30B and C34B will always remain a fixed value away from each other. I could keep it going if you like. In any case, this does technically have 16384 possible starting seeds. A good number of them are similar enough that we wouldn't care anyway. As for my simple formula, it would seem that it doesn't fit everything. And like you say, this is somewhat odd, considering that two different aspects of the game do things somewhat differently. It may be darn close, but you do observe differences between the shuffler and NPC directions, and that's a pretty good proof right there that the game isn't using something consistent between different things. Is "Add" really so rare? True, our tables may be old, but you've recorded seven instances of "Add" and zero instances of "Reset to original". This would be a particularly unusual case if what you say is true, as having only 42 values instead of 85 would suggest we didn't see so many instances of "Add" back then. BURNING test. It fails. I only deal damage if the attack doesn't incapacitate. (Yeah, I don't care if my hacking makes sense, I'm having a human and some bird burst into flames.) Recall how quick it is to get STRONG potions. Now think about replacing five of those swift purchases/uses (one trip to that item shop) for a detour to another shop or a box for a piece of equipment. Keep in mind two such items still do not replace the need for STRONG -- A 74 strength HUMAN M is short that one last point of strength needed for first turn kills, meaning we can't bypass the need for one STRONG here. Then again, we'd use a MUTANT M in this case, and grab our strength from the EVIL EYE or MACHINE. Still, the shoe shop is a step, maybe two, away from our path. We buy one and eventually wear it. This is one purchase at the cost of 32 or 64 frames of walking, instead of five purchases and uses of STRONG. Still, we have inventory limits, and with 6 STRONG and 1 GETA shoe in the main inventory, we have one slot left. I'm not sure what the dialogue involving BAND is like with a full inventory cluttering us up. As for the GIANT glove, we have two choices. We're picking up the bSTONE, but the GIANT glove shop is a significant detour even with the glider handy. Compare that to the difference of buying 1 STRONG or 6 STRONGs in a single shopping trip. There should be no contest here, the STRONGs win easy. Oh, right. MUTANT M for that last point, meaning we don't need the STRONG shop. Then again, count the steps for the STRONG shop and compare what it takes to get to the GIANT glove shop. As for the GIANT glove box in the prison area, how many frames was it to TELEPOR out versus going through it normally, again? If it was something like 3 seconds and the box happens to be reachable without wasting steps, go for it. I might be underestimating the time it takes to buy and use STRONGs, but I do have that quick test up there to check again. SEI-RYU dies in 3 rounds to a pair of POWER mutants swinging a BATTLE sword and a HAMMER, and some random humanoid being sacrificed to protect our otherwise fragile lives. Not sure about the fourth member, I need to check the Monster Trio to see if said fourth member can help out there.
Player (80)
Joined: 8/5/2007
Posts: 865
I'm noticing increasingly strong patterns in the RNG table. I've almost figured out the columns and all I really need to do is write down a formula and find out how the rows work (there's a funky offset parameter that I can't yet make sense of). I'll edit this post when I figure it out. And based on my analysis of the pattern, I've figured out that I switched the values of 0x67 and 0x68. They should be 170 and 172 respectively. I'll update all of my tables, including the one on the reference page.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
Battle plans: World I - Random battle, get GAZE - 3 random battles, on path to TELEPOR - P-FROG: GAZE, win. Get TELEPOR - KINGSWRD: GAZE, win. Try to lose a mutant here. Get POWER or +5 Mana - Monster duet: Manipulate solo SKELETON. Use physical force. Not sure if we can manipulate the right bonus while forcing a solo SKELETON - STEWARD: Physical force, win. Wonder if that COLT is an alternate way to die. A reset between battles, probably, unless the RNG just happens to have everything we need. - More random battles: We need 26 Mana minimum and two mutants with POWER. World II - SEI-RYU: Turn 1: POWER, POWER. Turns 2 & 3: Beat living daylights out of SEI-RYU. Use convenient humanoid as our shield. Get +5 Mana. World III MOSQUITO: GAZE, win. Get +5 Mana Monster trio: Seems we should want a monster for this fight, to have the HP we don't. DRAGON 1 is handy. Maybe not, I should see if a worthless ally can be a replacement. GAZE a foe that isn't cooperating with keeping ourselves intact. It looks quite possible with my test movie. Get +5 Mana in any case. SABERCAT: GAZE, win. Get +5 Mana BYAK-KO: bSTONE, win. World IV ATOM ANT: bSTONE or GAZE, win. EVIL EYE: Attempt to SAW and bSTONE until something works. Probably the SAW by round 2. If someone's going to die here, we have three (two?) pieces of fodder to die with: Original MUTANT F, POWER MUTANT M, and DRAGON 1 (or dead body). MACHINE: SAW. However, we might need to avoid resetting between this and the previous battle. There's enough steps to avoid any encounters between these two, thankfully. SU-ZAKU: SAW, win. Final C- SAW, win. SAW, win. SAW, win. SAW, win. SAW, win. SAW, win. Those are my battle plans, thus far. Any questions?
Player (80)
Joined: 8/5/2007
Posts: 865
FatRatKnight wrote:
Those are my battle plans, thus far. Any questions?
Sorry, I'm not even going to take the time to read your post because I'm stretched a bit thin at the moment. I haven't even watched your two SAW tests and I need to read your previous posts more thoroughly. What I'm most interested in at the moment is this RNG table which has very strong patterns that I'm having trouble reverse-engineering. Meanwhile, I'm busy with other things, so I don't feel I have a lot of attention to divert elsewhere. And on top of it all, I got an email back from Sara with suggestions for the SEI-RYU battle. I skimmed it, but I'm not giving it any thought for now: "let's see. you want to beat sei-ryu inside two rounds. you don't have time to create a beetle. you have four mutants. you have already bought one battlesword and learned power. that gets you 194~254 damage. i'm guessing you don't have enough money for extra battleswords. a) both other mutants learn power too. hammer gets 122~146, longsword gets 146~182. hammers don't need a detour to purchase, if you recruited boys; conservatively that adds up to around 470, leaving 130 to find from the fourth character's two rounds. power+hammer on them as well? but how long is it going to take to teach all four of them power? b) buy spellbooks. but how much mana have you gained? and is some of it stuck on the power mutant? well, let's say you learn power for one mutant, but focus the mana upgrades on two other mutants, assuming that's practical. the power mutant takes the battlesword. then you need the other two to deliver 400 or so in two rounds (assuming the fourth mutant is junk.) 26 mana isn't gonna cut it, is it? you want 36 mana, each, with a spellbook, or 32 each with wands. alternatively, can you bring the fourth mutant into play at all? c) buy rocks. i don't think this is going to work for you with low strength, though, they'll just miss. (or will they?) d) detour to pick up that grenade? no, it seems to me that going an extra round against sei-ryu is preferable to fighting whole extra battles. if you can get there with minimal encounters and still beat him in three rounds, or even four, that's probably your best bet. (if he's beating you, that's different.) the other blockage sounds to be the fight for jeanne. obviously, the best way would be three instant kills, if you have them. (get the stonebook first.) failing that, two instant kills (on garlic and p-worm) plus two heavy hits on the sabercat. muskets? grenades? spellbooks with healthy mana? clayman's gas, if you went with a monster after all? alternatively, two pblasts that total 200ish to kill the sabercat, plus two weak attacks doing 30ish to finish off the other two. but again, going to a second round is probably better timewise than fighting even one extra battle beforehand - as long as you can win. s Tower Reversed" My first priority is figuring out how the RNG works, which I should be able to do within a day or two. After that, I'll catch up with you on other topics.
Player (80)
Joined: 8/5/2007
Posts: 865
Here's my analysis as yet of the RNG table. I'd love to do more, but I'm just not feeling it right now. The RNG table boils down to just 48 different numbers and three parameters. It may be fewer than that, but I simply can't find a pattern among them. Here's our new table, from which we can construct the entire RNG table:
column | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15
-------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--
number | 3| 6| 7|13|11| 1|15|10|12| 9| 8| 2| 4|14| 0| 5
-------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--
row    |10|11| 1|12| 5| 9| 6| 3|15|11| 2| 7| 2| 0|15|15
-------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--
stagger| 5|15|13| 9| 5| 1|13|11| 1| 3| 3| 7|11|15| 3| 9
Obviously, some explanation is warranted. The column simply indicates a column of the RNG table. The number is the RNG number output somewhere in that column. Take a moment to verify that 3 appears in column 0, 6 appears in column 1, 7 appears in column 2, and so on. Note that every number from 0 through 15 appears in a unique column. The row is the row in which that number appears. So row and column taken together signify the locations of the numbers 0 through 15. For example, number 8 appears in row 2, column 10, and we'll therefore find it at RNG index 2A. You'll notice that the row values are not all unique, so I question whether there's a deeper pattern to be found. If they were unique, I'd still be searching and not typing this up. The stagger value indicates something a little hard to explain. Take row, add stagger to it (mod 16), and in this new spot, put number plus 32. Do this seven times (eight if you include placement of the original number). If you've done this carefully for all 16 columns, you will have placed half the numbers from 0 to 255; you'll have 0 through 15, 32 through 47, 64 through 79, and so on. Stagger is always coprime with 16 (i.e., always odd) because if it were divisible by 2, the pattern described above would cause it to "crash into itself". To place the remaining numbers, for a given column, find row plus eight (again, mod 16). This is 128 indices away. In this spot, put 255 minus number. Now add offset to this row and subtract 32 from the previous number. Do this a total of seven times (again, eight if you include placement of the original number). If you do this for every column, you will construct the complete RNG table. If that was confusing, let me walk you through a quick example. We'll fill in the first column (column 0):
     -                  -                 -                  -                  -                 -                 -
0                                                                                                                   60
     -                  -                 -                  -                  -                 -                 -
1                                                                                                                  156
     -                  -                 -                  -                  -                 -                 -
2                                                                              252               252               252
     -                  -                 -                  -                  -                 -                 -
3                                                           163                163               163               163
     -                  -                 -                  -                  -                 -                 -
4                                                            67                 67                67                67
     -                  -                 -                  -                  -                 -                 -
5                                                                                                                   28
     -                  -                 -                  -                  -                 -                 -
6                                                                                                                  124
     -                  -                 -                  -                  -                 -                 -
7                                                                                                220               220
     -       --->       -       --->      -       --->       -       --->       -       --->      -       --->      -
8                                                           195                195               195               195
     -                  -                 -                  -                  -                 -                 -
9                                                            99                 99                99                99
     -                  -                 -                  -                  -                 -                 -
10                      3                 3                  3                  3                 3                 3
     -                  -                 -                  -                  -                 -                 -
11                                                                                                                  92
     -                  -                 -                  -                  -                 -                 -
12                                                                                                                 188
     -                  -                 -                  -                  -                 -                 -
13                                                          227                227               227               227
     -                  -                 -                  -                  -                 -                 -
14                                                          131                131               131               131
     -                  -                 -                  -                  -                 -                 -
15                                        35                 35                 35                35                35
     -                  -                 -                  -                  -                 -                 -

blank column   |   3 belongs    |   stagger is 5,   |  continue until  |  put 252 8 rows  |  put 220 five  |  continue until 
                  in column 0,     so go down five     eight numbers       away from 3        rows below      the column is 
                     row 10         rows and put         are placed                                              filled
                                      35 there
Well, I'm disappointed I can't break it down any further than that. If you notice any other patterns, I'd love to hear them. I have a gut feeling that there are deeper patterns because it seems like an instance where they'd cut back on memory usage-- it's already semi-automated, why not fully? Still, I can't find any pattern to row or stagger, so they may just be spelled out somewhere in the code. Edit: Just noticed something new. Each number is 8 columns away from its complement. That's nifty, but it doesn't simplify things much. Edit 2: Here's an RNG table generator in Lua script form:
n={[0]=3,6,7,13,11,1,15,10,12,9,8,2,4,14,0,5}
r={[0]=10,11,1,12,5,9,6,3,15,11,2,7,2,0,15,15}
s={[0]=5,15,13,9,5,1,13,11,1,3,3,7,11,15,3,9}
RNGTable={}

for c=0,15 do
    for i=0,7 do
        currrow=(r[c]+i*s[c])%16
        currnum=n[c]+32*i
        RNGTable[16*currrow+c]=currnum
    end

    for j=0,7 do
        currrow=(r[c]+8+j*s[c])%16
        currnum=255-n[c]-32*j
        RNGTable[16*currrow+c]=currnum
    end
end

---------------------------------------------
--The above part is the good stuff.  The following loop just tests that it works.

while true do
    for i=0,15 do
        for j=0,15 do
            currval=RNGTable[16*i+j]
            gui.text(20*j,9*i,currval)
        end
    end
    vba.frameadvance()
end
I don't know if you want to go with the entry-by-entry table or this script. As far as I'm concerned, I think I'm done toying with the RNG. Discovering new patterns (if they even exist) should be extremely difficult. Now I'll read through the last few posts a little more thoroughly.
Player (80)
Joined: 8/5/2007
Posts: 865
Today, I swept up a bunch of little questions I had lying around and I will attempt to answer them all in this post. Is there a "strike first" RNG? You may recall that I suggested with no more luck manipulation necessary for the last quarter of the game, we could manipulate it so that we always strike first. I set it so that all of the RNG addresses corresponded to 0 and then again so they all output 255. In neither case was I awarded a first strike, so that is probably decided by a battle RNG (and I don't need to remind you how mysterious those are). So no, we cannot force it so that we always strike first. That's a real shame. On the other hand, we might manipulate luck so that we never get meat. Being offered meat at the end of battle is a little time consuming. I can't think of anywhere else we could save time. Can we get a monster with GAZE (stone)? No! Next question! Okay, okay, full answer. You already pointed out we could do it if we could get a MEDUSA, but we can't. I found some other candidates but they were all at least level 11. Since all of the monsters in World 1 are level 1 or 2, we would have to fight at least nine battles (probably more) to reach any level 11 monster. Sure, we're given P-FROG and SEI-RYU for free, but what about the other 7? It's pretty much out of the question. Should we pick up the GIANT gauntlet, GETA shoe, neither, or both? If we do pick them up, should we draft a Human or a Mutant? You seem to have a better answer to this than I do. For the GIANT gauntlet, we would almost certainly need to pick it up from the World 3 shop. Using TELEPOR to escape prison saves 590 frames according to my test. That's a lot! Of course, my test was imperfect, especially since our strategy has changed at least slightly since then (you've been prudent about saving and archiving your tests-- I really, really, really should do the same...). Nevertheless, I feel confident that it would take at least five more seconds to break out of jail. To make matters worse, the GIANT gauntlet is nowhere near the JAILKEY so it would waste far too much time. It's out of the question. I don't know my way around the hidden town in World 3 like you do, but I trust you when you say it takes too long to get to the shop with the gauntlet. For the GETA shoe, I guess I don't have much of an opinion since it should be very easy to compare the time it takes to buy the shoe with the time it takes to buy five STRONGs. I'm inclined to get the shoe because needing fewer STRONGs means less mucking about in the menu. However, getting the shoe will require us to go to the Equip submenu, which is technically out of the way. I'm comfortable waiting and seeing. As for who should equip the shoe, you seem to have indicated a Human would still be marginally faster. My only thought to the contrary is that we might use one of the overworld SU-ZAKU battles to pump a Mutant M. Luck manipulating out of them will be a pain anyway and just getting into a battle with him will be time consuming, even if we run. What's not so great about this plan is that even overworld SU-ZAKU has that fancy fadeout that costs a second or two. I doubt it'd be worth it, but I say it's worth consideration. If we do go for a Human M, though, we should know... What is the best shop to buy STRONG potions? Up to this point, we've implicitly assumed that we need to buy STRONG potions after we get the Human M. We could just buy a few of them elsewhere in the game if they happen to be handy. I'm pretty sure they can sit in our inventory through most of the game without any trouble. Here are the candidate shops: •Base Town-- We don't really have another reason to stop at the weapon or item shops. When we're ready to enter the tower for the first time, the item shop is 11 steps off the main path. As a bonus, it's not indoors! •Town of Hero-- Not likely. We don't have any business in the northern part of town. When we're dressing the statue, the door to the item shop will be 13 steps off the main path. We then have to endure a short transition screen and walk up to the counter. •Port Town-- Possibly our best bet other than Northeast Town. The door of the item shop here is just 1 step off of the main path. The only problem is that it's indoors. •Sky Town-- Very unlikely. I'm not going to bother checking how many steps it is off the main path. If you think of any business we might want in either of the shops here, it could potentially cut down on time. •Southwest Town-- I've never even used this shop before. According to one FAQ, the item shop is on the second floor. I think we can practically rule it out. •Northeast Town-- The shop here is 2 steps off of the main path. Since it's outdoors, it is almost certainly the fastest shop to get in and out of with our STRONG potions. The only minor downside I see is that NPCs might get in the way. We should be able to manipulate them aside. I'm not sure what to make of all that, since it seems we have no reason to shop anywhere except Northeast Town. I guess the point here is that if we have any business at all in another shop, it might be faster to pick up a STRONG along the way. What are the abilities a mutant can learn in one battle and what do they do? Which ones might be useful? I wrote a little Lua script that scrolls through the values of C30B and C34B simultaneously (after all, you showed that those two addresses are "locked" to difference of exactly nine). I assumed we wouldn't want to fight two battles to learn an ability, so I focused only on those abilities we could earn in just one battle. I found 25 different abilities, about half of which had potential use. I'm just throwing these out there in case they'd be helpful: •STEALTH: Apparently offers a greater chance of striking first in battle. If so, it might be useful for when we start SAWing things. What would be really fantastic is if it stacks (which I doubt). Another handy fact is that we can pick up a Mutant (M or F) with it pre-equipped. I believe they're at the World 2 guild, which I hope won't be a problem. •ICE, FLAME, and THUNDER: Not likely to help, but hey, they do damage. •ESP: Acts as a shield so the enemy misses its next attack. I was thinking this could be useful against SEI-RYU or BYAK-KO if there's just one character we want to keep alive. Of course, we could always reorder the party, so it's unlikely to help. •BARRIER: Adds a paltry ten defense to all characters, but since our defense is so low to begin with, that may make a lot of difference. I don't see it helping unless we find ourselves in a rather unusual situation. •ARMOR: Pumps defense to 99 temporarily, so we can instantly create one impervious character. I like it, and I think it has at least mild potential. •STENCH and ELECTRO: Lower the Str. and Agl. respectively of a group of monsters. This could save us against a hard-hitter. As usual, not likely, but better to throw it out there than omit it entirely. •GAS: I don't have a good sense of how much damage this does, but I would be very surprised if it's more effective than ICE, FLAME, or THUNDER. Maybe you know more about it. •KINESIS: Paralyzes a group of enemies. Now this seems potentially helpful. It's just a matter of who we would use it on (The Monster Trio? The ATOM ANTs?). •QUAKE: You're already aware of and is our preferred "alternate" spell for dealing damage. It may be our primary spell now that we're moving away from P-BLAST. •GAZE (conf.) and HYPNOS: Confuses a group of enemies. These are similar to KINESIS except it might take more time on enemy turns. Perhaps enemies have different propensities to be paralyzed or confused. •SL-GAZE: Puts a group of enemies to sleep. I rather like this one. Other abilities I found included FORSEEN, MIRROR, xFIRE, HEAL, oCHANGE, BURNING, oFIRE, and P-FANGS, none of which I thought were worth looking at more closely. Honestly, I don't think we'll be using any of these, but we should probably know about them anyway because we may need to fight an extra battle at some point. If we can squeeze a useful ability out of it, all the better. The next question comes courtesy of you:
"FatRatKnight wrote:
Is "Add" really so rare?
My immediate thought was that I had somehow mixed up "Add" and "Reset to original number of uses". After all, if I had 0 P-BLASTs (or whatever it was), the two actions would be indistinguishable. I assembled some new tables based on our understanding of how abilities are shuffled. They don't match my experimental results at all. If you'd like to see them, I can post them, but I'm reluctant to transcribe them until I run some more tests. Something seriously fishy is going on here. I can't imagine how I could have screwed up the test so badly the first time I ran it. I would like to point out, however, that we can shuffle different abilities by putting the target mutant in a different party slot. If our mutant is in the right slot, we can reset their first, third, and fourth abilities to their original values simultaneously. Of course, the second slot would have to be wasted on a dummy ability. (This is all assuming my new table is correct, not my old ones.) When do we manipulate luck and when do we run? This remains (and always will remain) an open-ended question. I just wish to point out that we now have the ability to do some theoretical predictions. We can find the longest stretch in the RNG table with zero random battles, but we can also find the longest stretch with just one random battle or the longest stretch with two random battles and so on. From there, we would need to manipulate luck so that all of those battles are runnable, which may be outright impossible. Regardless, we can check the fastest movement strategy fairly efficiently now. Finally, to answer that question you had the other day.
"FatRatKnight wrote:
Those are my battle plans, thus far. Any questions?
Just one: Will you have enough money to buy the Battle Sword? You'll have 760 GP from the STEWARD, KINGSWD, and P-FROG. You need six more battles to get you to 1,000 GP, which is roughly what you'll need to buy the sword. It looks like you're planning about that many, but it will be close. Even if you can't afford the Battle Sword with just the spoils from random encounters, you should be fine since you can sell your SABER for a hefty sum. Sounds like you know pretty well what you're doing. For the moment, I'm going to work on decoding more RNG addresses and figure out what's going on with ability shuffling. After that, I think I'll be ready to join you in running this game. That is, unless you have other ideas to test.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
Bobo the King wrote:
[...] However, getting the shoe will require us to go to the Equip submenu, which is technically out of the way. I'm comfortable waiting and seeing.
Actually, it's scarcely out of the way at all -- We need to equip the SAW on him anyway, which we should be able to do in the same time.
Bobo the King wrote:
As for who should equip the shoe, you seem to have indicated a Human would still be marginally faster. My only thought to the contrary is that we might use one of the overworld SU-ZAKU battles to pump a Mutant M. Luck manipulating out of them will be a pain anyway and just getting into a battle with him will be time consuming, even if we run. What's not so great about this plan is that even overworld SU-ZAKU has that fancy fadeout that costs a second or two. I doubt it'd be worth it, but I say it's worth consideration.
In order to slay overworld SU-ZAKU, we need to use the SAW. To use the SAW in 1-turn fashion, we need 75 Strength. The fact we're rest assured not at 75 strength (what's the point otherwise?) and the fact this might only save one turn for a MUTANT M at the real SU-ZAKU battle makes things sort of skewed towards "not worth it". In any case, I haven't actually checked the mutant bonuses in great detail. For EVIL EYE and MACHINE, we need two strength bonuses that total +6 or higher in the span of four "steps" while still having enough walking/biking steps to avoid encounters between EVIL EYE and MACHINE without a reset. Even if it is possible, a MUTANT M is still stuck throwing two turns at the real SU-ZAKU. The trade-off comes from the fact a HUMAN M is instead going to a STRONG shop, but will kill SU-ZAKU in a single turn. ... I sense a split in the path that only converges when we finish World IV, where we'll need to test two paths. Unless it is discovered we can't get at least +6 strength in two battles (with a two-mutant party) without a reset.
Bobo the King wrote:
Up to this point, we've implicitly assumed that we need to buy STRONG potions after we get the Human M. [...]
I'll make it explicit -- HUMAN M has 54 Strength. We need 75 to kill in the first shot using a SAW. Only way for HUMAN M to build it is to buy STRONG to permanently get the missing strength, or get equipment with bonus strength attached. STRONG has no effect on anyone who isn't HUMAN M or HUMAN F, so we can't build up a MUTANT M using STRONG. There. Now anyone who doesn't know why we're bothering will now know.
Bobo the King wrote:
[...] I'm pretty sure they can sit in our inventory through most of the game without any trouble.
6 STRONGs? Out of our 8 inventory slots? If you're going to suggest we equip some of them for added inventory space, that's even more menu time! Regardless, here's a list of items I expect to have throughout the game, in rough order we pick them up: - SABER (Comes equipped with starter MUTANT F) - HAMMER (Comes with MUTANT M) - RAPIER/HAMMER - RAPIER/HAMMER - KING armor - KING sword (Thankfully, we'll lose these things quick) - KING shield - BATTLE sword (For the quiz. Might replace a weapon) - AIRSEED - BLUEKEY - RED ORB - BLUE ORB (orbs consumed on route through tower) - WHITKEY - STONE book (Might replace a weapon) - SAW - ROM - GETA shoe - BOARD - BAND helmet (After the northeast town stuff) - ERASE99 (Also late) Granted, we can throw away a piece of junk at a tiny cost to frames while using the spheres, but that only takes care of two of the items. If we include everything out to ERASE99, we'll have collected 9 items. Include the 6 STRONGs, and you'll find that 15 items don't fit in our main inventory, only 8 does. Okay, we discard two of them in the process of using our spheres, that leaves 13. Heck, even if we have just the SAW, GETA shoe, and ROM -- Oh snap, 3 items. We broke the 8 item limit just there, if we include 6 STRONGs. Losing the SAW means we lose our only means of slaying endgame bosses, the GETA shoe replaces one shopping trip with another, and ROM is a mandatory item. We can't equip the SAW and GETA shoe on the HUMAN M, as said human isn't in our group yet when we pick up the GETA shoe. As you see, an inventory limit of 8 items really gets in our way here. How should we best handle this? Discarding old key items will happen, and two of the discards are "free", however. I wouldn't rule out the BAND helmet or ERASE99 as inventory-related trouble -- It's possible we decide to use STRONG after the MACHINE battle. Why not right away? This would mean we avoid equipping the GETA shoe, or else our strength exceeds the MACHINE's defense, and then no more SAW. We can still use 2 STRONG, though, for 4 free slots. We can also throw away the ROM and BOARD before we pick up ERASE99, but that also requires a special trip into the inventory screen. ... And all MUTANT M sacrifices is a round at the real SU-ZAKU... If the +6 strength is possible from the EVIL EYE + MACHINE no-reset path. The HUMAN M complicates things!
Bobo the King wrote:
[...] it seems we have no reason to shop anywhere except Northeast Town. [...]
Well, that does simplify things in terms of where to shop. HUMAN M is still pretty complex, however.
Bobo the King wrote:
•STEALTH: Apparently offers a greater chance of striking first in battle. [...]
As far as I know, the "greater chance" is the difference between having it happen and a zero percent chance. Yes, without STEALTH, you can't strike first. I may be wrong here, though. Also, starting as a mutant gives us this ability right from the start.
Bobo the King wrote:
•BARRIER: Adds a paltry ten defense to all characters, but since our defense is so low to begin with, that may make a lot of difference. I don't see it helping unless we find ourselves in a rather unusual situation.
Said "unusual situation" would be that we are caught in a battle that can't be done in one turn, we lack any decent (read: still living) humanoid shields, and that 10 defense lets us survive with our paltry HP. I fear this situation won't ever come up.
Bobo the King wrote:
•QUAKE: You're already aware of and is our preferred "alternate" spell for dealing damage. It may be our primary spell now that we're moving away from P-BLAST.
Although, I'm moving away from *all* direct-damage spells. Roughly 26 Mana for SEI-RYU and 36 for Monster Trio won't really cut it.
Bobo the King wrote:
Honestly, I don't think we'll be using any of these, but we should probably know about them anyway because we may need to fight an extra battle at some point. If we can squeeze a useful ability out of it, all the better.
I'm pretty sure we won't need any of these. But it's still good to know our options.
Bobo the King wrote:
When do we manipulate luck and when do we run?
An optimal reset takes a shorter time than an optimal run away. Hence, it is almost always worth a reset (and manipulating the "steps to next encounter" RNG right) over attempting to run away. That's my answer to this question.
Bobo the King wrote:
Just one: Will you have enough money to buy the Battle Sword? [...]
I assume I will. This will take further analysis, though. I might need to substitute a World I encounter with an early World II encounter if money proves to be a problem.
Bobo the King wrote:
Sounds like you know pretty well what you're doing. For the moment, I'm going to work on decoding more RNG addresses and figure out what's going on with ability shuffling. After that, I think I'll be ready to join you in running this game. That is, unless you have other ideas to test.
Currently trying to think through a World I plan that minimizes switching party members around, and maximizes the amount of steps we can adjust at the RNG for a particularly difficult TELEPOR manipulation. I'll post the full details later. This post is getting a bit bloated already. Since you are studying the RNG, peek into that for strength bonuses, alright? Assume a two-mutant or three-mutant party, we need at least +6 in two battles without a reset, preferably without switching party order in between. Even better if the bonuses show up in the last slot. In addition, report step-count until next battle. Encounter rate of EVIL EYE floor is 5 (0x2D 0x7C 0x96 0xA1 0xFF), while the encounter rate of the floor above that is 4 (0x7C 0x96 0xA1 0xFF), in case you need this information. 17 steps between EVIL EYE and the next floor, and 56 total steps from EVIL EYE to MACHINE, by the way.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
When I say detailed, I mean detailed... World I detailed plans: - Party of four mutants: MUTANT F (Star) MUTANT M (Pow) MUTANT F (Fodd) MUTANT F (Gaz) The SABER has an attack of 6, where the LONG sword has an attack of 3. Also probably gives us a better turn order against the random battles. I doubt I'll use this mutant beyond World I. For purposes of giving recognizable names while explaining my route, I name her Star, our starter. The HAMMER is a Strength-based weapon, which a MUTANT M starts with. POWER exists and sets our Strength to 99. There's no equivalent for Agility. He shall sit in slot 2, given the name Pow, for POWER abuse. The MUTANT F in the third slot will follow Star in the turn order in the second random battle. M will not. Seeing as I plan to crash into the occasional second random battle without an intervening reset, striking the enemy again before taking a hit sounds wonderful. Other than this purpose, however, this mutant serves no real purpose other than to die a horrible heroic death later. As such, her name is Fodd, our neighborhood fodder! Finally, the MUTANT F in the last slot will follow Star in the first random battle following a reset. M will not. With the lack of significant damage dealing options, enemies will need to die from two hits, which SABER + RAPIER attacks can do. As GAZE shows up as the fourth bonus in one RNG instance, this mutant will pick it up after the first battle, giving her long-term use, so we should pack POWER in with her. Her name in my route planning here will be Gaz, the GAZE user. Don't worry about the starting 5 Mana instead of 6, this point is moot later. I don't expect to actually name them such in the actual run. I just want to have recognizable names in the text here, to speed up communication here rather than naming suggestions. - Manipulate for 0x51 GAZE -- df+1 hp+14 / 11 AB 3 GAZE st+3 Shuffle hp+13 / 14 Mana+5 C36F must be 0x5F!! (0x60 puts it in slot 2, where POWER is going) Do we reorder the party so Star picks this up? I'm thinking not, the random mutant with 5 Mana instead of Star's 6 is no problem, looking at the RNG path for TELEPOR. Fight one more battle before resetting. There's a handy Mana+5 in the perfect spot where our GAZE mutant needs it anyway. It may be prudent to reset after taking at least 6 steps out into the overworld. Unless you think you can manipulate C343 as 0x58 by resetting at the title screen, which is not an easy piece of manipulation to do here. - Manipulate for TELEPOR df+2 - - - - - - - - 0xEA AB 3 ARMOR - - - 0xEB st+5 Mana+2 -- -- hp+12 st+1 -- Shuffle Mana+1 -- Mana+2 df+2 AB 1 TELEPOR df+3 AB 4 STEALTH C343 must be 0xF2!! (We'll have no way to deal with a ZOMBIE in either of the two forest encounters otherwise) The first two battles will be in the forests, GOBLIN and GOBLIN. The third will likely be in the cave, against ALBATROS. The fourth will be from the P-FROG bandit. That's where we can finally get TELEPOR. We will have two long-term mutants to hand TELEPOR to. One possibility is to hand it to Gaz, but this requires putting TELEPOR into slot 1, meaning C36F must be 0xF9, making manipulation tough. Regardless, Gaz needs at least one of the various Mana ups found in this path. On the other hand, if we find that we can't manipulate a slot 1 TELEPOR effectively, allowing for the possibility of the slot 3 TELEPOR with C36F at 0xF8 might make things slightly easier. Pow will need to take this one, as otherwise it will overwrite the slot 3 GAZE of Gaz. More switching will need to take place, as we'll need to give the Mana+2 to Gaz. And that ARMOR, that's going to burn menu time if Pow ends up getting it. Ouch. Star is a much better candidate for it. The most optimal RNG here seems like C30B = 0xEB and C343 = 0xF2, but this is mighty difficult to get a hold of. EDIT:Actually, now that I think about it, it might be better on Pow anyway for the fact Star needs to use her SABER more often than Pow needs access to his HAMMER. Hard to say what the best RNG is, really. P-FROG eats a GAZE. 4 left. - King Armor Use freshly gained TELEPOR. Yum, fresh TELEPOR. Aim for POWER overwhelming from the random encounters, so Gaz and Pow aren't weak and worthless at SEI-RYU. I think there are three possible values for C30B that allows a one-battle POWER, but as "luck" would have it, I can't find any of them that isn't placed in slot 2. Seeing as we already fought 5, that's a total of 7 random encounters for 280 G. That should be enough, but cutting it fairly close for the BATTLE sword later. - King Sword TELEPOR again. 3 left. He eats a GAZE. 3 left. Unlike what I was previously thinking, no one dies here. I instead now plan for Fodd or Star to die at SEI-RYU, and the remainder to die at Monster Trio. - King Shield TELEPOR a third time. 2 left. C353 must be one of these: 1B 2A 2B 2C 35 4E 52 64 6D 7A 8D 94 97 99 9F A1 A2 A3 A6 A7 AF C4 C5 C8 CA E0 FC FD FE This is so we face 1 SKELETON. Not two, for that is one too many. And certainly not with an ASIGARU, for that, too, counts as an enemy, and thus there are two, and still one too many. A SABER and a RAPIER together can take on one, but not two. STEWARD can just die to the usual SABER + RAPIER, I think. Maybe SABER alone, considering that wonderful 1 defense. I'm hoping Gaz can pick up at 9 or 10 Mana from these two battles without an intervening reset or party reorder. But if there's no such RNG, an intervening reset seems to be the way to go. - To the Tower TELEPOR once more. 1 left, but it's restored by local inn. Don't forget that NPC. We will pay dearly later on if we forget to talk now. At the tower door, my test run uses a sphere then immediately saves and resets. I found this to skip the message and flashy effect, but unless we're manipulating encounters away at the same time, this won't save much time. Seeing as we have 3 GAZEs to spare before we hit the inn, we can and probably should use 'em on random encounters... Assuming Gaz can outspeed Star when using GAZE. On the other hand, if the GAZE animation is long enough to exceed the length of the SABER and RAPIER animations together, then forget this idea. Finally, here's a small piece of code I made for myself to scroll through possible RNG values:
Language: lua

local RNGstr= "???.??" local RnSet= 0 --***************************************************************************** local function AdjRn(Val) --***************************************************************************** RnSet= (RnSet+Val)%16384 local v= RnSet/64 for i= 0, 0x7F do memory.writebyte(0xC300 + i, math.floor(v)) v= v+(9/64) end RNGstr= (string.format("%3d",math.floor(RnSet/64)) .. "." .. string.format("%2d",RnSet%64) ) end keys, lastkeys= {}, {} function UpdateKeys() lastkeys= keys; keys= input.get() end function Press(k) return keys[k] and not lastkeys[k] end --***************************************************************************** local function UserAdjustRNG() --***************************************************************************** UpdateKeys() if Press("numpad7") then AdjRn( 0x0001) end if Press("numpad8") then AdjRn( 0x0040) end if Press("numpad9") then AdjRn( 0x0400) end if Press("numpad1") then AdjRn(-0x0001) end if Press("numpad2") then AdjRn(-0x0040) end if Press("numpad3") then AdjRn(-0x0400) end end while true do UserAdjustRNG() gui.text(1,1,RNGstr) emu.frameadvance() end
Player (80)
Joined: 8/5/2007
Posts: 865
FatRatKnight wrote:
I'll make it explicit -- HUMAN M has 54 Strength. We need 75 to kill in the first shot using a SAW. Only way for HUMAN M to build it is to buy STRONG to permanently get the missing strength, or get equipment with bonus strength attached. STRONG has no effect on anyone who isn't HUMAN M or HUMAN F, so we can't build up a MUTANT M using STRONG.
I think you misinterpreted me. I was suggesting we might stop at a shop and buy one or two STRONGs for the Human M we would recruit in the last portion of the game. You're right that it's pretty unlikely, since we'll be very close to the Northeast town shop anyway. But if we happen to need to go to a shop, it might save a few frames to pick up a STRONG potion or two. I admit it: it's a long shot. It seems to me that you're very good at figuring out what we should do while I've spent my time figuring out what we shouldn't do. I'm confident that we're closing in on a finalized plan (I'm running out of meaningful suggestions-- you can already see I'm scraping the bottom of the barrel), so we should get on the same page soon.
FatRatKnight wrote:
As far as I know, the "greater chance" is the difference between having it happen and a zero percent chance. Yes, without STEALTH, you can't strike first. I may be wrong here, though.
I wasn't aware. That might mean there is a strike first RNG! No, wait, not according to your following comment.
FatRatKnight wrote:
Also, starting as a mutant gives us this ability right from the start.
Huh, I somehow never noticed that. That means in the tests I ran, I already had STEALTH. My only thought is that the FAQ may have mixed up the descriptions of STEALTH and FORSEEN. It makes more sense to me that STEALTH prevents monsters from striking first while FORSEEN gives you a better chance of striking first. (Edit: Now that I think about it more, it would make at least some sense either way. But that's beside the point.) I'll look into it since that section of the FAQ is pretty crappy-- he only lists 26 of the 30 obtainable abilities, omits GAZE (stone) and GAZE (death), and even includes WARNING, which cannot be learned by a Mutant. Unfortunately, it's the only ability description list I can find.
FatRatKnight wrote:
Said "unusual situation" would be that we are caught in a battle that can't be done in one turn, we lack any decent (read: still living) humanoid shields, and that 10 defense lets us survive with our paltry HP. I fear this situation won't ever come up.
You got it. I just didn't want to write it out because it was a long post already and I didn't want to articulate it.
FatRatKnight wrote:
Although, I'm moving away from *all* direct-damage spells. Roughly 26 Mana for SEI-RYU and 36 for Monster Trio won't really cut it.
What it has in its favor is that we can learn it in one round, which we can't say about P-BLAST. The only battle I potentially see it helping with is the STEWARD's cronies. But that's only if we can't manipulate them into being a single SKELETON.
FatRatKnight wrote:
An optimal reset takes a shorter time than an optimal run away. Hence, it is almost always worth a reset (and manipulating the "steps to next encounter" RNG right) over attempting to run away.
You're technically right, but the key word in your answer is "optimal". Luck manipulation can easily take over 20 frames, and I see that as especially true if we are trying to get very specific RNG values (which we should do). Suppose we manipulate it so that we can take 40 steps, fight a battle, then have another 38 steps until the next battle. At the cost of 20 extra frames, we could gain an extra 38 steps automatically. The alternative would be to attempt to manipulate luck so that within 20 frames we find a chance to reset that will force the encounter RNG to be 38, 39, or 40 steps to the next battle (assuming 40 was the best we could do). That will be hard and in some cases impossible. The plan edges toward manipulating luck as the difference between the number of steps in the two "pockets" increases. If it were 40 steps to the next battle, then a 30 step pocket, suddenly we'd have 11 different favorable RNG values, which is much more plausible to find within 20 frames. My point is that although you will be correct most of the time, it really is worth keeping a close eye on. Fortunately, now that we have a complete RNG table, we should be able to write a Lua script that will tell us our "speed" (steps per frame) with a reset at the last step, running from one battle, or even running from two battles. My bottom line is this: it's another option. Both you and I have outright or nearly written ourselves into a corner in previous attempts because we needed too specific an RNG. We might easily find that it takes 300 frames to manipulate the result we want. If we never think of running from a battle, it will just frustrate us.
FatRatKnight wrote:
I'll post the full details later. This post is getting a bit bloated already. Since you are studying the RNG, peek into that for strength bonuses, alright? Assume a two-mutant or three-mutant party, we need at least +6 in two battles without a reset, preferably without switching party order in between. Even better if the bonuses show up in the last slot. In addition, report step-count until next battle.
I'll make this a priority.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
Considering that there's a push to update VBA in time for the Dream Team Contest, I would like to avoid actually making a serious start until it's updated. Still, I'll be making a low-effort test of a route I posted several hours ago. At least make sure I didn't become insane with all that planning.
Player (80)
Joined: 8/5/2007
Posts: 865
I'd have liked to provided a more substantial update, but since you specifically asked me to research the EVIL EYE to MACHINE section, I'll report on that before moving on to other things. As usual, if you just want the results, you can scroll down, but I'll never pass up an opportunity to boast how hard I worked (nah, it wasn't that bad). The first thing I did was write down all the C30B indices that result in a Str. boost (I checked that I had all 18). I underlined all instances where a boost was followed by a second boost within five RNG rolls afterward since that's the biggest gap we can have if we have a party of three mutants and we shuffle them. My list was: 3B (to 3E and 3F), 3E (3F), 6A (6C), 77 (79), BB (BE and BF), BE (BF), D2 (D5), and EC (F1) Next, I homed in on good values for C33B so that we wouldn't be forced to fight a battle for at least 56 steps. Fortunately, we've got some nice long stretches available. I included •FE-7A (125 steps, with a potential extra battle at 2C if we didn't escape the EVIL EYE's floor within 17 steps.) •95-FD (104 steps with one battle in between. I included this as a precaution in case it was really hard to manipulate luck without fighting at least one battle. As luck would have it, none of the candidate RNG indices fell in this range.) •A0-FD (93 steps) So my next step was to cross-reference these two lists. Keeping in mind that C33B would be six or seven greater than C30B, I needed a value of C30B such that C33B would give us at least 56 steps to the next unskippable battle. 7B through 94 were out of the question, since they would mean fighting two battles and even 95 through FD were only mediocre. I broke it up into lists based on how many mutants we'd have and whether we would need to shuffle them. Here are my results: 2 mutants, no shuffling: 69, 6A, 76, 77 2 mutants, w/ shuffling: 3B, 3D, BB, BD, D2 3 mutants, no shuffling: 39, 3A, 3B, B9, BA, BB, D0, D1, D2 3 mutants, w/ shuffling: 3A, 3B, 3C, 68, 69, 75, 76, BA, BB, BC, EC Entries in bold fit the criteria. Crossed out entries would require fighting at least one battle. The last step was to figure out what would happen with C34B, which decides the amount by which Str. is boosted, since you specified it has to provide at least +6 Str. total. From my previous analysis, I learned we don't need to manipulate C33B and of course we know that C34B is locked and can't be manipulated against C30B, which made my analysis a lot easier. At first, I started reading the RNG table, but I quickly decided to do it the old-fashioned way. I edited your mutant growth Lua script so that C30B was whatever I wanted it to be while C34B was 9 higher. I ran through all the listed values, taking note of the magnitude of both stat boosts. In the following list, for each value, the first number is the first Str. boost and the second number is the second Str. boost. Here's what I found: 2 mutants, with shuffling: 3B: 3, 5 BB: 3, 3 BD: 2, 1 3 mutants, without shuffling: 39: 1, 3 3A: 5, 4 3B: 3, 5 B9: 3, 3 BA: 3, 3 BB: 3, 3 3 mutants, with shuffling: 3A: 5, 5 3B: 3, 1 3C: 5, 1 BA: 3, 2 BB: 3, 3 BC: 3, 2 As before, bolded results are successful, crossed out results fail. You may notice that I crossed out 3A and BB in the third list. That's because both values appear successfully in the second list and if we can get the coveted +6 gain without shuffling, why do it with shuffling? So here's my summary of candidate values of C30B to shoot for: Great 3A (party of 3, 2nd slot) 3B (party of 3, 1st slot) B9 (party of 3, 3rd slot) BA (party of 3, 2nd slot) BB (party of 3, 1st slot) Okay (requires shuffling) 3B (party of 2, 1st and 2nd slot) BB (party of 2, 1st and 2nd slot) 3C (party of 3, 3rd and 1st slot) By my estimation, shuffling party members will take roughly 80 frames. I'm not sure, though. If we can get one of the values in the the second list 80 frames before any of the values in the first list, it should be worth it. Of course, your options double if you allow for fleeing from one battle, but I think five target values is decent (not great, but decent). On a tangential note, I was wondering why your addresses are all "off by one". You said the encounters on the EVIL EYE floor are at 0x2D, 0x7C, 0x96, 0xA1, and 0xFF. I get the same numbers minus one. I know you pointed out in the past that you use a variant of the RNG table that's shifted by one, but as I understand it, that's just a stylistic choice and shouldn't affect the actual indices at which we encounter random battles. I just want to be absolutely sure what's going on so that we can communicate effectively. If your table really is different (and consistent!), then you'll need to add one to all the values I listed above. Edit: Mixed up my bold and strikethrough tags near the end. My final list was correct the first time, though.
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
Hmm... Good job searching. You have pretty good methods. It also saves me time from having to check myself. Part of what being in a team is for: Several different tasks can be done at the same time with multiple people working at them. We can also "compete" at a part using our own methods of optimization and produce something that an individual player wouldn't spot. Besides that, there's also the fact we're suddenly working on this furiously, instead of what happened when we sort of dropped out. I was hoping for a 2-mutant possibility without having to shuffle members around. That way, one can kill off a spare mutant at the EVIL EYE battle. Seeing as that's not the case, this generally calls for some more testing to see if any can work out. I'm hoping to get by with the original four mutant party with no replacements except for the MUTANT M / HUMAN M from the northeast town, which doesn't leave me with anyone who can survive a single attack, except for said replacement. I think it's time I started on another test run of sorts. First, I need to check the RNG path in World I. Then it's off to SEI-RYU to double check that battle. Then, naturally, World III battles. Then I will finally check the difficult World IV stuff. I base my values on what they roll to, rather than what they were prior to the roll. Basically, our order of operations appear to be different: Me: Increment(RNG) Use(RNG) You: (?) Use(RNG) Increment(RNG) As such, if the "Do you encounter something next step" RNG happens to be 0xFE before you step, then after stepping, you say the game uses the 0xFE number (as that is what it was) while I would say the game uses the 0xFF number (as that is what it will be) to trigger the encounter. The way we have our charts reflects this. My habits came from running E.V.O. the Search for Eden and, more recently, Etrian Odyssey, as the games use the updated RNG I see in memory in the following frame rather than what the number was prior to rolling. (These actually roll numbers visible with memory watch rather than incremental +1 like we see here) Who is "right" in this case? No way to know until we find a dead simple algorithm that prefers one or the other when generating it. There's a good chance the game does use a simple algorithm from the smallest base, which can only be more complicated with a "shifted" chart. Either way we look at it, just shift the chart, and it's correct suddenly. That's obviously no proof who's right. As for starting numbers, we both can see that on the next reset, this RNG address hits that number, and we both would call it the same number. The moment the game needs the RNG is where we differ.
Player (80)
Joined: 8/5/2007
Posts: 865
I set out to decipher the ability shuffler once and for all. What follows are my current findings. For starters, let me reproduce my original chart:
C30B|Ab1|Ab2|Ab3|Ab4
----+---+---+---+---
 86 | - | + | + | -
 93 | - | + | - | +
 166| - | /2| + | /2
 243| - | + | - | +

-: Subtracts initial number of uses (bottoms out at 0).
+: Adds initial number of uses.
/2: Divides number of uses by 2, rounding down (adds 1 use if no uses left).
=: Restores number of uses to initial value (not used).
That was what we went on until I tried to verify what was going on in terms of the RNG and found that there was essentially no correlation. You toyed around with it and offered this theory: 0x00 ~ 0x2A - Divide by 2 0x2B ~ 0x7F - Add 0x80 ~ 0xD4 - Subtract 0xD5 ~ 0xFF - Reset to "original" I tested this, but ended up getting these results (unfortunately, I didn't save my work as a VBA movie): 0x00 ~ 0x2A - Divide by 2 0x2B ~ 0x7F - Reset to "original" 0x80 ~ 0xD5 - Subtract 0xD6 ~ 0xFF - Add I said that you had switched two categories and were off by one unit on the bin size. You quickly pointed out that this was very unusual because "Add" shows up so often in my original chart. I agreed, and said I would test it further. The very first new thing I did was run this test. Yes, this time I saved my work so we at least have something tangible to talk about. This test was "natural" in the sense that I didn't manipulate the RNGs using Lua or cheats at all, only soft resets. I'll report on the results of this test below in chart form, but for reference, C30E was equal to 87. Next, I used a Lua script to manipulate C30E to be whatever I wanted it to be. The first test I did using this method replicated the results of the movie. This was to make sure that fixing C30E to a specific value wouldn't cause unpredictable (or overly predictable) results. As a side note, the game rolls the four following values if they're all needed, regardless of the address being fixed. In other words, I fixed C30E to 87, but it still rolled it for 87, 88, 89, and 90 (then returned to 87 before the next frame). I got the same result as the natural roll, so I felt confident changing it to whatever I wanted. At first I just picked a random value, but then I decided I should test the bin size which I previously said was different from our expectations. I therefore sought the RNG indices corresponding to values around 212, where we expect the split to occur. I've compiled the results in a table, which I hope is readable:
C30E:  |        |      87      |      55      |      39      |      36      
       |Original+---+------+---+---+------+---+---+------+---+---+------+---
       |  uses  |new|action|RNG|new|action|RNG|new|action|RNG|new|action|RNG
-------+--------+---+------+---+---+------+---+---+------+---+---+------+---
Abil. 1|   10   | 20|   +  | 53| 5 |  /2  | 10| 10|   =  |213| 0 |   -  |212
-------+--------+---+------+---+---+------+---+---+------+---+---+------+---
Abil. 2|    3   | 6 |   +  | 76| 6 |   +  |115| 0 |   -  |211| 3 |   =  |222
-------+--------+---+------+---+---+------+---+---+------+---+---+------+---
Abil. 3|   10   | 0 |   -  |182| 10|   =  |246| 10|   =  |233| 20|   +  |112
-------+--------+---+------+---+---+------+---+---+------+---+---+------+---
Abil. 4|   20   | 10|  /2  | 40| 0 |   -  |151| 10|  /2  | 8 | 20|   =  |213
The top row of numbers are the values of C30E. For each value, I recorded the number of uses after fighting one battle (the "new" column), the action that corresponds to (the "action" column), and the RNG values corresponding to the four corresponding indices (the "RNG" column). These results correspond closely to (drumroll, please...) 0x00 ~ 0x2A - Divide by 2 0x2B ~ 0x7F - Add 0x80 ~ 0xD4 - Subtract 0xD5 ~ 0xFF - Reset to "original" or your original guess. Yes, that's right. All this testing and you were right all along. Case closed. Or is it? If it's correct, it should also agree with my original test, shouldn't it? One problem with my original test is that I only followed C30B, not C30E. Now that we know the RNG indices don't stay a fixed offset from each other, we know that my original test could represent one of two results for each value of C30B. C30E can be either 1 or 2 greater than C30B, so the only way to properly evaluate my original tests is to write down the following five RNG values. Doing so yields this:
C30B| +1| +2| +3| +4| +5
----+---+---+---+---+---
  86| 53| 76|182| 40| 66
----+---+---+---+---+---
  93| 64|197|124|166|216
----+---+---+---+---+---
 166| 42| 44| 22|247|162
----+---+---+---+---+---
 243| 75|193| 80|138| 12
If we replace those RNG values with their expected results based on the latest test, we get the following table:
C30B|+1|+2|+3|+4|+5
----+--+--+--+--+--
  86| +| +| -|/2| +
----+--+--+--+--+--
  93| +| -| +| -| =
----+--+--+--+--+--
 166|/2| +|/2| =| -
----+--+--+--+--+--
 243| +| -| +| -|/2
And just for reference, here's the table from my original test one more time:
C30B|Ab1|Ab2|Ab3|Ab4
----+---+---+---+---
 86 | - | + | + | -
 93 | - | + | - | +
 166| - | /2| + | /2
 243| - | + | - | +
If my first test was valid and the rules are consistent, each row in that last table should correspond to either the first four or last four entries in the second table. They don't. But now that I look at them more closely, they seem to be missing the "first" entry, which is always "-". Why is it always "-"? Because that corresponds to C30E = C30B and because we got ability shuffling, we already know C30B's RNG output is somewhere between 143 and 146, firmly in "-" territory. So where does that leave everything? Damned if I know. I think our most extensive testing gives results consistent with what you had projected. Somehow, my first test started with C30E being equal to C30B and I don't have a clue how that happened. I suppose I could have set both addresses equal to the same value, but I can't imagine why I would have done that, since neither of us knew what C30E was for at that point. Finally, there's the matter of my second test, where I got results significantly different from yours, saying you switched two results and got a bin wrong. I know I don't have any data or movies to back up my word, but damn it, I know I conducted that test carefully! I guess I should apologize for correcting you when you were right, but I swear I reported the results of my tests accurately. My only (grasping at straws) explanation is that it could make a difference if you have less than four abilities to shuffle. When I conducted that test, I had just one ability. If you think we need ability shuffling at any point, I think the table is a fine start, but I'll be sure to test it "in the field" before we find ourselves in over our heads. Edit: *Sigh*... I was careless in computing the offsets. C30E exceeds C30B by zero or one, not one or two. This explains a whole heck of a lot as we now have three tests consistent with each other. The bad news is that if the two addresses are equal, they will both roll the same number in the 143-146 range. This will always subtract the number of uses from the first ability. That means we always need the addresses to be offset by 1, which has a 42 percent probability of happening. I'm leaving my original post unedited because it would be difficult to edit this information back into it. (And I still don't know how I screwed up my second test.)
Editor, Skilled player (1203)
Joined: 9/27/2008
Posts: 1085
World I test. I maximized the amount of steps between battles. Up until the very end when I said "It isn't worth optimizing crazy-lots." The good old trademark "Very Long Resets" like in my test run can be seen here. Except extra long in the last case. I don't care -- I'm looking for the right RNG, just to see if it can be done at all. Turn order happened differently than what I'd like, as I'm not giving GAZE to Star. KINGSWRD battle had me run from a previous battle first. Solo SKELETON was more durable than I initially thought. I didn't bother at STEWARD. Other than making sure I didn't overwrite POWER with P-BLAST, of all things. Fodd holds P-BLAST at the end, by the way. I'll copy this party into various parts of the 40-minute test run to see if this can work out. Maybe, maybe not, that's the point of a test. No matter the optimization, if it won't work, it's all a waste. I'll explain stuff later when I feel like it. Edit: Oh, battles can be manipulated. One aspect of it, anyway. Enemy targeting: Address C35A
Player (80)
Joined: 8/5/2007
Posts: 865
Sweet! Shared credit for a movie I contributed nothing to! I'll be sure to return the favor when I start my own run about a week from now. Even though I feel ready to run it now, I want to get a few obligations out of the way first so the run has my undivided attention. I'll try to make it complement your run in whatever ways possible (in particular, I'd like to see what extent of luck manipulation we can expect to achieve). It's looking good so far, but I don't think I'll ever get used to those long resets. You said you'd explain things later, but I still feel compelled to ask about some slightly strange movement in the second half of the video. I saw some weird pauses, facing walls, walking one way and then the other, and other stuff like that. It's not the biggest waste of time in the run (no, that award goes to luck manipulation), but it's unusual considering how tight your execution was in previous movies. The rest is pretty self-explanatory. So can we manipulate enemy targeting but basically nothing else? If so, that's not so bad, since we might pick up ARMOR and make sure our invulnerable party member always takes the hit (assuming the monster/fiend doesn't get the first hit, in which case we're screwed). Lastly, how much of your time do you think the Dream Team Contest is going to take? If you need some time off from this run, I perfectly understand and we can pick it up after the contest is over. I'm excited to see what your team comes up with. Regardless of what it means for this run, I wish you the best of luck!
Ambassador, Experienced player (710)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Awesome, this does a good job of showing what luck will look like. It seems like a really good idea to make another test run that goes through using the battle methods you guys have been discussing. After you've figured out how difficult it is to make each manipulation go your way you can work on optimizing speed. After watching this and hearing your complaints about Steward I had an idea. Have you considered equipping King Sword to help with Steward and his skeleton? It wouldn't take much time and you are in the inventory anyway to use TELEPORT. Seems like it would pay off if it saved a long manipulation pause and a couple battle actions.
1 2 3 4 5 6 7 8 9