User:Blaziken257/Telefang RNG
In Telefang 1, random events rely on a random number generator. It is generated using the following variables:
- The frame counter, located at 0xC3C0 in RAM. This is an 8-bit number, and it increments by 1 for every frame that passes (1 frame = 1/60 second). However, it temporarily freezes in certain situations, mainly when the game has to load screens. The frame counter makes random actions frame dependent.
- Seed 1, located at 0xC41F in RAM. This value is also an 8-bit number, and it changes every time a random event occurs, and its value depends on the current value of the frame counter, as well as the current values of both seeds.
- Seed 2, located at 0xC420 in RAM. This 8-bit value functions similarly to Seed 1, although it influences the randomly generated number more than Seed 1.
- Seed sum, the 8-bit sum of the two seeds, located at 0xC400 in RAM. This is the randomly generated number, most directly used to determine random events.
Seed calculation[edit]
Note: Original thread here: http://s15.zetaboards.com/Tulunk_Village/topic/6967791/1/
First, the game takes the current value of the frame counter and uses a formula to calculate a new 16-bit number, which is later added to the seeds.
F = (Frame counter * 256) + ((int(((Swap nibbles(Frame counter) + 1) mod 256) / 2) + 135) mod 256)
Next, the game calculates a number based on the current value of the two seeds. This formula is simpler:
S = Seed 1 * 256 + Seed 2
To obtain seed 1:
Seed 1new = ((F+S) mod 256)
To obtain seed 2:
Seed 2new = (int(((F+S) mod 65536)/256)) xor ((F+S) mod 256)
The seeds are then added together (reduced to 8 bits), and this is the randomly generated number.
Random events[edit]
Wild Denjuu[edit]
Species[edit]
For more information, see one of these pages.
Random number range | Probability | Denjuu Group |
---|---|---|
0-24 | 10% | Denjuu 4 |
25-75 | 20% | Denjuu 3 |
76-152 | 30% | Denjuu 2 |
153-255 | 40% | Denjuu 1 |
Level[edit]
Random number range | Probability | Level offset |
---|---|---|
0-63 | 25% | +1 |
64-127 | 25% | -1 |
128-255 | 50% | 0 |
Personality[edit]
Random number range | Probability | Personality |
---|---|---|
0-19, 240-255* | 14% | 0 - のんびり |
20-39 | 8% | 1 - ちょーのんびり |
40-59 | 8% | 2 - あわてもの |
60-79 | 8% | 3 - ちょーあわてもの |
80-99 | 8% | 4 - わがまま |
100-119 | 8% | 5 - ちょーわがまま |
120-139 | 8% | 6 - おくびょう |
140-159 | 8% | 7 - ちょーおくびよう |
160-179 | 8% | 8 - おこりんぼ |
180-199 | 8% | 9 - ちょーおこりんぼ |
200-219 | 8% | 10 - りちぎ |
220-239 | 8% | 11 - ちょーりちぎ |
Battle events[edit]
Move accuracy[edit]
More research needed!
(<0xD597>/8 + 245 - <0xD49B>/2)/256
Little is known about 0xD597, but preliminary research suggests that it's based on the speed of the attacking Denjuu. Accuracy modifiers seem to increase this value, but this appears to max out at a certain value (which seems to vary based on other variables), possibly to prevent overflow in the formula. Likewise, little is known about 0xD49B, but preliminary research suggests that it's based on the speed of the defending Denjuu. Evasion modifiers seem to increase this value (there may be a limit, but it isn't known yet). Despite the values being based off of the speed stat, speed modifiers don't affect this value.
If the move used doesn't target the opponent Denjuu (i.e. it affects itself, like a stat boosting move), then both of these values seem to be based on the Speed stat (likely with evasion modifiers applied, but this is not confirmed) of the opponent Denjuu.
Critical hits[edit]
Random number range | Probability | Effect |
---|---|---|
0-15 | 6.25% | Critical hit! |
16-255 | 93.75% | Regular hit |
Damage calculation[edit]
Added effects of moves[edit]
Status effects[edit]
Personality flaws[edit]
More research needed!
For some personalities, including 0 (のんびり), 1 (ちょーのんびり), 2 (あわてもの), 3 (ちょーあわてもの) (late to arrive), 6 (おくびょう), 7 (ちょーおくびよう) (prone to run away), 8 (おこりんぼ), and 9 (ちょーおこりんぼ) (attacking on its own):
Random number range | Probability | Effect |
---|---|---|
Probability: ((FD*2+55) mod 256)/256 | ||
When FD = 1: | ||
0-56 | 22% | Act normal |
57-255 | 78% | Misbehave |
When FD = 100: | ||
0-254 | 99.6% | Act normal |
255 | .4% | Misbehave |
For other personalities, including 4 (わがまま) and 5 (ちょーわがまま) (refusing to attack):
Random number range | Probability | Effect |
---|---|---|
Probability: ((FD+155) mod 256)/256 | ||
When FD = 1: | ||
0-155 | 61% | Act normal |
156-255 | 39% | Misbehave |
When FD = 100: | ||
0-254 | 99.6% | Act normal |
255 | .4% | Misbehave |
Notes:
- In both cases, due to an oversight, when FD = 100, there is a 1/256 chance that the Denjuu will misbehave, which occurs when the random number comes up as 255. This is similar to the 99.6% accuracy glitch in early Pokémon games.
- There is a glitch that makes it possible to make the Denjuu's FD exceed 100. Since the formulas are not meant for the FD to exceed 100, an integer overflow glitch occurs, making the probability of the Denjuu acting normal very low.
AI[edit]
Target selection[edit]
Move selection[edit]
Escaping[edit]
More research needed!
When 0xD504 <= 0xD546 (note: these addresses' behavior aren't completely known; see below):
Random number range | Probability | Effect |
---|---|---|
0-199 | 78% | Unable to escape |
200-255 | 22% | Able to escape |
When 0xD504 > 0xD546 (note: these addresses' behavior aren't completely known; see below):
Random number range | Probability | Effect |
---|---|---|
0-84 | 33% | Unable to escape |
85-255 | 67% | Able to escape |
Little is known about 0xD504, although it appears to be based on the Speed of the user's leading Denjuu. This appears to be affected by speed modifiers as well. Likewise, little is known about 0xD546, although it appears to be based on the Speed of the opponent's leading Denjuu, and may also be affected by speed modifiers (although this is not confirmed).
Before a battle, however, these values are always 0. Therefore, when trying to escape before the battle starts, the probability of being able to escape is always 22%.
Note: In some battles, particularly where a boss or other NPC is fought, the RNG is not invoked, and the player will never be able to escape.
Denjuu giving out number[edit]
If player does not yet have any other befriended Denjuu of the same species:
Random number range | Probability | Effect |
---|---|---|
0-152 | 60% | Denjuu offers number |
153-255 | 40% | Denjuu does not offer number |
If player has at least one other befriended Denjuu of the same species:
Random number range | Probability | Effect |
---|---|---|
0-15 | 6.25% | Denjuu offers number |
16-255 | 93.75% | Denjuu does not offer number |