Positions: left, bottom, top, right. ''position1-position2'' means Botwoon moves on screen with the unique trajectory for the connection from the hole at position1 to the hole at position2. ''position1-spit-position2'' means Botwoon spits at the 1st hole after appearing there (and then moves on screen). It seems that Botwoon cannot spit at the very first time he appears from a hole (so in the spit cases, the spit doesn't happen there). And at the beginning, Botwoon is forced to appear from the left hole. Apparently in some instances if one sets the RNG to some value during Botwoon's pattern, the order in which Botwoon connects the holes can be inverted (and spits might be taken out). Apparently, Botwoon's next movement after spitting isn't already determined before or while Botwoon is spitting, but when the spitting animation ends (and if there is no spitting, then it seems Botwoon's movement is determined right after he appears at some hole). Botwoon's next hole that he appears at seems to be determined as soon as his head disappears in some hole, but spitting isn't determined at this point yet and can still be influenced by an RNG value after Botwoon's head disappeared. If Botwoon spits or doesn't spit is apparently determined about 3 frames (strictly) before his head appears. Approach: Splitting the patterns into 3 separate parts: I. Where does Botwoon appear? II. Does Botwoon spit or not? II. Where does Botwoon go? The following tests were all done for the case in which Botwoon has enough health left in order to be able to spit. ----------------------- Appearance: xxxx xxxx xxx0 0xxx Botwoon appears at the hole with the first remaining slot (with the slot taken out that Botwoon last disappeared at) xxxx xxxx xxx0 1xxx Botwoon appears at the hole with the middle remaining slot (with the slot taken out that Botwoon last disappeared at) xxxx xxxx xxx1 xxxx Botwoon appears at the hole with the last remaining slot (with the slot taken out that Botwoon last disappeared at) The slots are ordered as follows: left < bottom < top < right. Example: If Botwoon disappears at the bottom hole, then the smallest slot is ''left'', followed by the middle slot ''top'', and finally the last slot being ''right''. This means that (neglecting the loop in which the RNG is caged), if Botwoon disappeared at the (i) left hole, then the bottom and top hole have each 1/4 chance for Botwoon appearing there next, and the right hole has 1/2 chance; (ii) bottom hole, then the left and the top hole have each 1/4 chance for Botwoon appearing there next, and the right hole has 1/2 chance; (ii) top hole, then the left and the bottom hole have each 1/4 chance for Botwoon appearing there next, and the right hole has 1/2 chance; (iv) right hole, then the left and the bottom hole have each 1/4 chance for Botwoon appearing there next, and the top hole has 1/2 chance. ----------------------- Spitting: xxxx xxxx xxxx 00xx Botwoon doesn't spit xxxx xxxx xxxx 010x Botwoon doesn't spit xxxx xxxx xxxx 011x Botwoon does spit xxxx xxxx xxxx 1xxx Botwoon does spit This means that the (rough) chance of Botwoon spitting is 10:16=5/8 (if one neglects the influence from the RNG loop that the RNG is caught in). ----------------------- It seems that Botwoon's next movement is decided in the same frame as the frame in which it is decided if Botwoon spits or doesn't spit, if it is decided that Botwoon doesn't spit (but maybe not the same RNG value is used for both of these parts, if there are sub-frame RNG-updates, which cannot be tested). And in this case, the low byte is small enough, so that the first slot (among the remaining ones) or the last slot (among the remaining ones) would be chosen depending on the 5th lowest bit being 0 or 1, respectively, but in this case the behavior for odd RNG values isn't covered in the scheme. Movement: xxxx xxxx xxxx xxx1 Botwoon disappears at the hole he appeared from (if Botwoon did spit, except for the very first appearance where Botwoon cannot spit). xxxx xxxx xxx0 0xx0 Botwoon moves to the hole with the first remaining slot (if Botwoon did spit, with the slot taken out that Botwoon appeared at) ???? ???? ???? ???? Botwoon moves to the hole with the first remaining slot (if Botwoon didn't spit, with the slot taken out that Botwoon appeared at) xxxx xxxx xxx0 1xx0 Botwoon moves to the hole with the middle remaining slot (if Botwoon did spit, with the slot taken out that Botwoon appeared at) ???? ???? ???? ???? Botwoon moves to the hole with the middle remaining slot (if Botwoon didn't spit, with the slot taken out that Botwoon appeared at) xxxx xxxx xxx1 0xx0 Botwoon moves to the hole with the last remaining slot (if Botwoon did spit, with the slot taken out that Botwoon appeared at) ???? ???? ???? ???? Botwoon moves to the hole with the last remaining slot (if Botwoon didn't spit, with the slot taken out that Botwoon appeared at) xxxx xxxx xxx1 1xx0 Botwoon moves to the same hole that he is currently in when he appears (if Botwoon did spit). ???? ???? ???? ???? Botwoon moves to the same hole that he is currently in when he appears (if Botwoon didn't spit). The slots are ordered as follows: left < bottom < top < right. Example: If Botwoon appears from the top hole, then the smallest slot is ''left'', followed by the middle slot ''bottom'', and finally the last slot being ''right''. This means that provided that Botwoon does spit (neglecting influence from the loop in which the RNG is caged), then all 4 holes have the same probability of 1/8 for Botwoon moving into them, and the remaining 1/2 chance covers the case in which Botwoon just disappears. - - - - - - - - (Botwoon enters the left hole) Botwoon appears at the left hole: - Botwoon appears at the bottom hole: 00 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 Botwoon appears at the top hole: 00 08 00 09 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F Botwoon appears at the right hole: 00 10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 18 00 19 00 1A 00 1B 00 1C 00 1D 00 1E 00 1F - - - - - - - - (Botwoon enters the bottom hole) Botwoon appears at the left hole: 00 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 Botwoon appears at the bottom hole: - Botwoon appears at the top hole: 00 08 00 09 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F Botwoon appears at the right hole: 00 10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 18 00 19 00 1A 00 1B 00 1C 00 1D 00 1E 00 1F - - - - - - - - (Botwoon enters the top hole) Botwoon appears at the left hole: 00 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 Botwoon appears at the bottom hole: 00 08 00 09 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F Botwoon appears at the top hole: - Botwoon appears at the right hole: 00 10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 18 00 19 00 1A 00 1B 00 1C 00 1D 00 1E 00 1F - - - - - - - - (Botwoon enters the right hole) Botwoon appears at the left hole: 00 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 Botwoon appears at the bottom hole: 00 08 00 09 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F Botwoon appears at the top hole: 00 10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 18 00 19 00 1A 00 1B 00 1C 00 1D 00 1E 00 1F Botwoon appears at the right hole: - - - - - - - - - Movement tests: (starting from bottom hole and is spitting, with last entered hole somewhere...) Botwoon moving to the left hole: 00 00 00 02 00 04 00 06 00 20 Botwoon moving to the top hole: 00 08 00 0A 00 0C 00 0E Botwoon disappearing: 00 01 00 03 00 05 00 07 00 09 00 0B 00 0D 00 0F 00 11 00 13 00 15 00 17 00 19 00 1B 00 1D 00 1F Botwoon moving to the right hole: 00 10 00 12 00 14 00 16 Botwoon moving to the bottom hole: 00 18 00 1A 00 1C 00 1E --------------- (starting from left hole and is spitting, with last entered hole somewhere...) Botwoon moving to the bottom hole: 00 00 00 02 00 04 00 06 00 20 Botwoon moving to the top hole: 00 08 00 0A 00 0C 00 0E Botwoon disappearing: 00 01 00 03 00 05 00 07 00 09 00 0B 00 0D 00 0F 00 11 00 13 00 15 00 17 00 19 00 1B 00 1D 00 1F Botwoon moving to the right hole: 00 10 00 12 00 14 00 16 Botwoon moving to the left hole: 00 18 00 1A 00 1C 00 1E --------------- (starting from top hole and is spitting, with last entered hole somewhere...) Botwoon moving to the left hole: 00 00 00 02 00 04 00 06 00 20 Botwoon moving to the bottom hole: 00 08 00 0A 00 0C 00 0E Botwoon disappearing: 00 01 00 03 00 05 00 07 00 09 00 0B 00 0D 00 0F 00 11 00 13 00 15 00 17 00 19 00 1B 00 1D 00 1F Botwoon moving to the right hole: 00 10 00 12 00 14 00 16 Botwoon moving to the top hole: 00 18 00 1A 00 1C 00 1E --------------- (starting from right hole and is spitting, with last entered hole somewhere...) Botwoon moving to the left hole: 00 00 00 02 00 04 00 06 00 20 Botwoon moving to the bottom hole: 00 08 00 0A 00 0C 00 0E Botwoon disappearing: 00 01 00 03 00 05 00 07 00 09 00 0B 00 0D 00 0F 00 11 00 13 00 15 00 17 00 19 00 1B 00 1D 00 1F Botwoon moving to the top hole: 00 10 00 12 00 14 00 16 Botwoon moving to the right hole: 00 18 00 1A 00 1C 00 1E --------------- Movement tests for when Botwoon appears at some hole but is not spitting (seems to not be testable with the RNG hack): ... --------------- Further tested samples with held, fixed RNG values: Spitting tests: left-bottom (in case Botwoon previously didn't disappear at the left hole at last), bottom-left (in case Botwoon previously did disappear at the left hole at last): 00 00 00 01 00 02 00 03 00 04 00 05 00 20 00 21 00 22 00 23 00 24 00 25 00 40 ... xxxx xxxx xxx0 00xx xxxx xxxx xxx0 010x left-spit-bottom (in case Botwoon previously didn't disappear at the left hole at last), bottom-spit-left (in case Botwoon previously did disappear at the left hole at last): 00 06 00 26 00 46 ... xxxx xxxx xxx0 0110 left-spit (in case Botwoon previously didn't disappear at the left hole at last), bottom-spit (in case Botwoon previously did disappear at the left hole at last): 00 07 00 27 00 47 ... xxxx xxxx xxx0 0111 - - - bottom-spit-top (in case Botwoon previously didn't disappear at the bottom hole at last), top-spit-bottom (in case Botwoon previously did disappear at the bottom hole at last): 00 08 00 0A 00 0C 00 0E 00 28 00 2A 00 2C 00 2E 00 48 ... xxxx xxxx xxx0 1xx0 bottom-spit (in case Botwoon previously didn't disappear at the bottom hole at last), top-spit (in case Botwoon previously did disappear at the bottom hole at last): 00 09 00 0B 00 0D 00 0F 00 29 00 2B 00 2D 00 2F 00 49 ... xxxx xxxx xxx0 1xx1 - - - - - - - top-right (in case Botwoon previously didn't disappear at the top hole at last), right-top (in case Botwoon previously did disappear at the top hole at last): 00 10 00 11 00 12 00 13 00 14 00 15 00 30 00 31 00 32 00 33 00 34 00 35 ... xxxx xxxx xxx1 00xx xxxx xxxx xxx1 010x top-spit-right (in case Botwoon previously didn't disappear at the top hole at last), right-spit-top (in case Botwoon previously did disappear at the top hole at last): 00 16 00 36 ... xxxx xxxx xxx1 0110 top-spit (in case Botwoon previously didn't disappear at the top hole at last), right-spit (in case Botwoon previously did disappear at the top hole at last): 00 17 00 37 ... xxxx xxxx xxx1 0111 - - - right-spit-right (in case Botwoon previously didn't disappear at the right hole at last), top-spit-top (in case Botwoon previously did disappear at the right hole at last): 00 18 00 1A 00 1C 00 1E 00 38 00 3A 00 3C 00 3E ... xxxx xxxx xxx1 1xx0 right-spit (in case Botwoon previously didn't disappear at the right hole at last), top-spit (in case Botwoon previously did disappear at the right hole at last): 00 19 00 1B 00 1D 00 1F 00 39 00 3B 00 3D 00 3F ... xxxx xxxx xxx1 1xx1 - - - - - - - Extrapolation: The double-patterns are separable and hence are just different separate patterns that are induced by the same RNG value. And this means that the hole at which Botwoon appeared previously has an influence on what a given RNG value's resulting next pattern will be. With some sample tests with random high byte choices and fixed low byte, the high byte seems to have no influence on patterns at all. The grouping of bytes that map to the same pattern is probably kept up throughought the entire RNG value range. - - - - - - - Expected total set of types of patterns: top-top top-right top-bottom top-left right-right right-bottom right-left right-top bottom-bottom bottom-left bottom-top bottom-right left-left left-top left-right left-bottom - - - top-spit-top top-spit-right top-spit-bottom top-spit-left right-spit-right right-spit-bottom right-spit-left right-spit-top bottom-spit-bottom bottom-spit-left bottom-spit-top bottom-spit-right left-spit-left left-spit-top left-spit-right left-spit-bottom - - -