Sorry, I forgot to mention. You'll have to set the game in the Lua file.
Since it's Fire Red (U), I think the game should be 3 (change "game=6" or whatever to "game=3"; it's right at the top).
You'll know it works if there are moving colored squares and the top right corner is changing.
Top left corner. It represents the current value of the RNG, and it is the last square before the colored squares scroll out of the chart.
As in this image, where I get a critical hit:
Note that it's an older version of the script that I used for Pokemon Ruby, so it's a bit different than what you see.
I saw someone that found a GREAT route for speed running through leaf green. Without doing a TAS he got it done in 2:31:39.
I was mostly planning to do a test run for the route they gave: http://pastebin.com/TLBhVJLa and I was wondering, how long before making an attack would I have to make a save state so I can keep on reloading and ensure full critical hits?
Also I am pretty sure that setting your rivals name would save time, even before completing the first battle you already save roughly 36 frames.
Sorry if some of this has been said before, most of the stuff which I saw before page 3 didn't seem to relevant to the tas I was hoping to do.
With the route provided I'm pretty sure that the stats given are a bare minimum though I could be wrong, just having 1 less special attack could make you lose a minute at the first gym so higher in all of them would probably help.
Thanks to cstrakm for giving me the VBM file:
http://dehacked.2y.net/microstorage.php/info/338836704/pokemonFR_j_cstrakm.vbm
In his TAS, Squirtle's IVs are 16/24/21/23/15/20 and has Atk+ Def- nature (determined using my Pokemon script, of course).
While speedrunning routes may be helpful, remember that a TAS can do so much more. A speedrunner has randomness as an enemy, a TASer has randomness as a friend. Or enemy, depending on the circumstances.
But anyway, with sufficient control, you can do things in a TAS that a speedrunner would dare not to consider.
Use the script I posted a few posts back. As long as you are able to change the alignment of the random stream before it determines a critical hit, that would be a good place to make a save state.
Critical hits are usually determined at the first "RNG overclocking" (excess of normal RNG cycles per frame) after the move message "X used Y!", provided that the move did not miss.
Edit: In Fire Red/Leaf Green, the first attacking move in the first battle cannot be a critical hit. In other games, tutorial battles cannot have critical hits.
If I really knew what I was doing, I would love to be the one to put together the TAS run. The current video, while faster in overall menu execution, lacks certain aspects to my latest realtime speedrunning strategy. I think that a TAS run could utilize most points of my latest game, with criticals in place of x items late game. There are many many fights where the torrent ability is used in a non super effective way to avoid the message, yet still get the job done.
If anyone would be patient enough to help me get started, I think I'd like to take this one on myself.
I recently decided to try learning some Pokemon TASing so I decided to try stuff on this game.
I've been testing FractalFusion's script (really good one btw, you did a really good job with that), and trying to understand the RNGs.
There's a thing I don't really understand at the moment. When RNG2 (encounter RNG) is seeded by RNG1 (just after Charizard screen), RNG1 doesn't change like the formula says, and I guess that happens in some other places.
Is it known how to calculate that changes? I couldn't find information about it.
Edit: my bad, I read it wrong, I think I understood what it makes it change now, but still I don't know how to manipulate it correctly. Well, I'll try to learn a bit more, hehe.
Link to video
Did a little test run. I'm doing the Round 2 route, so I have to catch 60 pokemon.
I just don't understand how seeds are created (The one after charizard screen and the one after name screen) so I just test a bunch of them and then simulated it to know which results they would give me. Since it's a test run I didn't pay more attention but for a good TAS I'd need to know how to calculate all the possible seeds in an X number of frames.
Here I got 4 wild encounters, I avoided getting a w.e before having pokeballs. FractalFusion said 3 was possible, and I actually think 2 is possible as well (at least in theory), but I just don't know how to get a better seed, I'd need to know something else rather than just testing.
Squirtle IVs: 19 HP / 30 atk / 25 def / 30 spatk / 20 sp.def / 30 speed
Lonely nature (+atk/-def)
Not sure if a +sp.atk nature would be better, I still have to test.
I used FractalFusion's script for critical hits and stuff, I still don't know how to manipulate secondary effects like lowering speed with bubble. (Just doing it by trial and error at the moment). Also I still don't know how to manipulate which pokemon will appear on a wild encounter.
I guess getting pokerus would be nice too, I just havent tested it yet.
And just to end with, I understand how MID text is better for luck manipulation than FAST text, however MID text loses one frame each time you start scrolling a text, so I'm not sure if in the end it's much better. Well, at least is better looking I guess..
Sorry, I didn't respond sooner.
From my experience, initial RNG seeds in Emerald and Fire Red/Leaf Green are generated differently than in Ruby/Sapphire.
For Emerald and Fire Red/Leaf Green, it's like this:
For seeding purposes the value at address 0x4000104 is used. Here's the bad part. That address is opcode count.
That means that potentially any action can influence that address. Furthermore, I believe that even the smallest core differences in emulator version will result in different values.
Unfortunately, internal Lua savestating and loadstating simply does not work (as intended at least) in VBA, although there are workarounds.
By the way, calling the help screen (press L or R) can be used for luck-manipulation as well, if necessary.
I didn't really bother with secondary effects, since usually the issue doesn't come up. Same with which Pokemon appears on a wild encounter. You can brute-force them with VBA's frame search.
By the way, the game determines which wild Pokemon appears by calling an RNG value (mod 100) and finding the slot of the table in which it belongs. Each area has a different table. Rares are mostly valued 98 and/or 99. You can hack my lua script and change one of the tables so that it colors whenever RNG value is, say, 99 (mod 100).
I heard it isn't possible to get Pokerus in Fire Red/Leaf Green.
Yeah, I knew it was because of that 0x4000104 but I couldn't understand how it worked, thanks for explaining.
Thanks, that's what I needed to know.
I'll try to add that to the lua script when I have to try catching rare pokemon.
mkdasher: Here's the list of which Pokémon are in which slot: http://eggmove.com/encounterfirered.htm
(Adapt the URL in the obvious way for other Pokémon games.)
I got back to this. I have 2 badges, and going to Bill's house. I think I'm going to have a problem with PPs but I dont know how to solve it yet.
I'm going a bit fast because this is the first run I'm doing and I want it as a reference in case I decide to do a good optimized run after this. Still, I'm optimizing the best I can, just not fully sure about the route.
Edit: Reaching Celadon City with no PPs left, I guess I'll cure my pokemon in the poke center there.
Tested the difference between teaching Bite or Mega Punch to Wartortle. Mega punch resulted to be slightly faster.
I'm posting a WIP, since I don't know how long it will take me to finish it (if I am able to finish)
http://www.mediafire.com/download/t2a67de6mu1ira1/PokemonFireRed_-_WIP.vbm
(Didn't upload to dehacked microstorage because it didn't seem to load for me)
I used FractalFusion's lua script most of the time. Well, I actually extended it to see when to hit Max Damage Non Critical Attacks (I need some of those in the run), Side Effects, and for Abra.
I do not know how to luck manipulate the seed created on Charizard screen (wild encounter RNG seed). Still, the best thing I could do was testing a bunch of seeds I was getting, and then I made a simple C++ program to check which seed would give me better results from Pallet Town to Pewter City. The best I could get was 4 wild encounters (capturing 2 of those), although I'm pretty sure it must exist a better seed.
Squirtle IVs:
HP: 29 / Atk: 31 / Def: 4 / Sp.Atk: 31 / Sp.Def: 9 / Speed: 29
Nature: Lonely (+atk / -def)
About the run:
- This is a WIP of a any% run. So I will just fight the Elite Four once.
- The WIP is done just after clearing Safari Zone.
- Rattata is used for Dig and Cut. Using Digglett is slower.
- 2 potions are used. First one is to survive Misty, 2nd one is to survive Surge's Raichu (it'd spam Shock Waves with lower HP).
- I get advantage of Torrent Ability when I can.
Some extra things:
- When entering on a new area, the wild encounter's RNG will not advance for the first 6 steps. However that sometimes don't happen (as you can see I was able to encounter Abra after 4 steps). So what I think is that for the first 6 steps, you can get wild enouncter's RNG advances, and I'm pretty sure that's determined by the other RNG address. Also, there are areas (such as Pokemon Tower) where the first RNG advance can be delayed for more than 6 frames.
- RNG seems to be different after the first time I enter in a Pokemon Center. Before that, RNG does 2 cycles per frame on a battle and 1 cycle when not battling, and after entering for the first time, RNG does 3 cycles when battling, and 2 cycles when not battling. The second one is easier to luck manipulate.
mkdasher, I watched your run. Since you're doing the Round 2 route, when do you plan to catch 60 Pokemon?
Also, how did you manage to get Lt. Surge's Raichu to use Double Team instead of Shock Wave? I would have assumed that it would always use Shock Wave there if you bring in Wartortle.
Edit: Never mind the Raichu using Double Team question. Seems like Wartortle can survive one since it has more health than in the other run which I had in mind.
At first I thought about doing Round 2 but then I thought that it'd be easier to start with just an any% run, since it's the first time i'm trying to TAS pokemon, so this is an any% route.
And yeah, the way to survive Raichu is to have more health, that's why I'm using that second potion.
EDIT: I found out that the best RNG seed for wild encounters is 00004AD3. I still have no idea how to get that though. I may try to do some bruteforce searching when I'm back from holidays. This seed will give you exactly 2 encounters before Pewter City, and those 2 encounters can be done the second time you go on Route 1.
EDIT 2: Sorry I said it wrong. 00004AD3 is not the seed, that value is the first RNG value that I want.
Actually, I plan on doing this game, myself, but I will have to test with all 3 pokemon, Bulbasaur, Squirtle, AND Charmander, meaning I have to make 3 separate TASes, and upload/submit the fastest of the three.
How can I help you King Dedede?
I need a monster that can help me get Kirby.
That´s what we do best at NME.
You better give it with a money-back guarantee!
It would be immensely surprising if Bulbasaur or Charmander was the fastest in red/blue or fire red/leaf green. Unless you know something no one else does you don't have to waste time.