Should i start making a TAS of this game? I can get a time of 2:32 on a real GBA.
I've already seen a TAS of this game on YouTube, but there are several places where it could be optimized.
I'm wondering; would VBA be a good emulator to do this with?
Welcome to the party. I might have started on this myself if I wasn't already busy with another project.
VBA is really your only option at this stage, but it works just fine. Check the latest version linked from this site, and see what you can do. I'll be looking forward to any progress you can come up with.
I actually tried making a TAS of this game a long time ago, but i gave up because it took so much out of my time. If i start making this, i will not spend so much time on it. Because of this, it might take a long time to make (Schoolwork, Family, stuff like that)
I'm actually staying with my grandparents right now, so i will start making it when i get home in a few days.
Take your time then, some TAS projects have been known to take months. The one I'm working on has been under way for a year and a half, all told, and I'm still working on it. The irony is, the longer time you work on a TAS, the shorter time it can eventually be.
Exactly. I heard that the guy that made that Majora's Mask TAS spent 2 years on it. I don't plan to spend that much time, but it will take a while.
Another thing to note; does the nature of your started pokemon really matter that much? What nature should i go for when i pick squirtle to start out with?
Also, would my run get accepted to TASvideos even if i only beat the main story (only fight the elite four once), or would i have to do that whole second-quest thing with the sevii islands?
I think for the TAS, that doing the second quest E4 battles would be a seperate category, since you also have to devote time to capturing 60 Pokemon first time around.
As for Squirtle, probably should go with a Lonely nature imo. He has the def to offset the loss here, and definitely appreciates the Atk boosts in the early game. By the time he comes to having special-based moves, he gets STAB from Surf/Bubblebeam, and most targets of ice moves are at least 2x weak. Although, you should really experiment, even with those advantages Squirtle's lower offensive stats may miss out on some potential OHKOs that a +SpA nature might hit; in which case, a Mild nature would be worth considering.
Sounds good! I'm just paranoid that TASvideos won't accept it. I've read in this topic that repels are almost required, which sucks because as far as i know you can't manipulate it. . .
Should i try to level up blastoise or be like in the RTS where you only fight required battles? If i had to pick one, it would be the latter because i can get lucky in a TAS.
Okay! I have officially started my TAS of Pokemon Fire Red! I am about to watch the run on SDR and i will watch the TAS of YouTube before after that (probably tomorrow).
The one on YouTube (i couldn't find one on TASvideos) is good, but there are lots of parts where it could be optimized, or other places where a detour would be slightly better. I've been working on this for a few hours now and i'm just now to Viridian Forest. I can already tell that this will take a very long time to make.
Hi Stevmay09. Sorry it took me so long to respond.
A Pokemon TAS is not easy to make, due to the RNG. I have some scripts that may make it easier. I would also like to see your run (VBM file) so far if possible.
By the way, there is a run on Nicovideo on the Japanese version that also uses Squirtle. I haven't studied it in detail yet, though I will soon if it is necessary.
Hello! I'm kind of a noob here, so i don't know all the terms for TASing, but what are scripts? I just TAS a game through the emulator. I have no idea how Hex works.
How fast of a time did the Japanese guy get? A guy on YouTube got 1:50.
Scripts are essentially programs that run in conjunction with the game. Scripting is (almost?) exclusively done in Lua. It shouldn't take you more than an hour or two-- even with very little programming experience-- to get a simple script up and running that will track some RAM values of interest to you.
If possible, I highly recommend writing your own scripts. Start with the RAM-tracking script I mentioned above, then as you find the need to do more complicated things, look to Lua's reference manual, the scripting functions particular to your emulator, and, of course, the forums.
You'll be botting the game in no time!
XkeeperhascreatedmanyimpressiveLuascripts. About 99% of it is unnecessary for your purposes, but you wanted an idea of what scripts can do. I hope this inspires you as to Lua's capabilities.
As for how they would be useful, I can hardly begin to say. The most basic thing they can do is peer into the RAM and give you an idea of what's going on in the game that it refuses to tell you. In the case of Pokemon, you could compare enemies' stats with your own, foresee whether a pokeball will work, manipulate luck to achieve more critical hits and dodges, write values to certain addresses to test things, or manipulate the game in other, untold ways. Really, the easier question to answer is, "How wouldn't scripts be useful?" Come up with an idea and I or someone else will gladly tell you whether it's feasible or not. Chances are, if you can dream it up, it's possible.
Lua scripts are played through the emulator, so your third question doesn't really make sense. You should write your own scripts for a few reasons. First, you're going to want to learn to write in Lua eventually, even if you're limited to just RAM watching scripts. Second, you'll need to customize scripts to suit your purposes and there's no better way to do so than to write your own and know exactly what's going on inside of them. Third, you want credit for this run. You can (and perhaps should) start by running FractalFusion's scripts, but if his scripts do all the work for you, then you haven't really accomplished anything. I'm going to throw out a wild guess-- FractalFusion hasn't run this game because his scripts aren't complete and he hasn't done all the necessary research. If you want to run the game, you'll be so much more proud that it's your own accomplishment and you didn't have to rely on someone else's work. It might not even be out of line for FractalFusion to request co-authorship for his contribution. You're not going to let him get away with that, are you?
In all seriousness, however, TASing is a largely collaborative process. That often means co-authoring runs but sometimes it's as simple as requesting help with scripting or route planning or other difficulties in your way. Please do write your own scripts-- simple as they may be-- but don't hesitate to ask others for help when you need it!
Could there be a script that tells me what frame i would have to land to get a critical or dodge? I've spent hours trying to find that perfect frame. It would really help out. Is that possible?
If it's frame-dependent and can be found in the RAM, yes.
I don't have a copy of the game and I'm a bit busy at the moment, so this is where my assistance ends. FractalFusion will probably be able to help you.
I recommend Notepad, though there are some freeware Lua editors. The only annoying thing about Notepad is that you must manually change the extension. Your first script should look something like this (I'm typing this from memory, so it may not run):
Language: lua
while true do
valueofinterest=memory.readbyte(0x00) --Replace "0x00" with a RAM address that you're interested in. It will be in hexadecimal, so it should still begin with "0x".
gui.text(10,10,valueofinterest,0xFFFFFFFF,0x000000FF)
emu.frameadvance()
end
The loop says to execute all the codes in its interior as long as the script is running. The first line within the loop reads the byte you're interested in and stores it to valueofinterest. The second line says to display the results onscreen at x-coordinate 10, y-coordinate 10. The last two arguments of gui.text just make the text white with a black background. The third (or last, depending on how you want to look at it) says to advance one frame. If you don't include that line, your emulator will cease to run and the script will crash.
Your second script (same function, slightly more advanced) should look something like this:
Language: lua
while true do
valuesofinterest={0x00, --Replace all of these with RAM addresses of interest. You can also shorten the list.
0x01,
0x02,
0x03,
0x04,
0x05,
0x06,
0x07,
0x08,
0x09,
0x0A,
0x0B,
0x0C,
0x0D,
0x0E,
0x0F}
for i=1,#valuesofinterest do
gui.text(10,10+9*i,valuesofinterest[i],0xFFFFFFFF,0x000000FF)
end
emu.frameadvance()
end
This script just displays several results (up to 15) onscreen. The only thing you should know is that the # sign takes the length of an array. Therefore,
Stevmay09, you don't need to write any scripts. I can do that.
In fact, I have scripts that visually display when critical hits occur and stuff. I used it for my Pokemon Vega TAS (it's a Fire Red hack, by the way).
Have a look at this page. It's awfully technical but it describes how critical hits and misses are determined.
By the way, in Fire Red, there are two RNGs, one to determine whether random encounters occur, and one to determine battle as well as Pokemon generated from an encounter.
@FractalFusion
Unfortunately, there is no way to manipulate wild encounters in fire red. I still have to buy repels from the pokemart.
@Bobo The King
What RAM address are critical hits or dodges stored in? How could I find out these values on my own?
Yes, you'll have to buy repels. However, the determining factor uses an RNG; however, it only advances once every time you take a step in grass, which is why it is impossible to avoid every encounter.
It may be possible to change the initial RNG so that the number of encounters before Pewter City is minimized. I think it is possible to get it down to 3.
As far as I know, critical hits and misses are not stored in RAM, at least in a way that is convenient to see. I find it easier to see whether the random number passed to the routine satisfies the criterion necessary to decide whether there is a critical hit or not. The script I have does that.
I could change the script so that it specifically tracks the routine that executes a critical hit (or miss). However, I haven't had a need to do that yet.
I'm sorry if this is too much technical information, but my thought process is mostly in that manner.
Yeah, to tell you the truth, I've been interested in tasvideos for a long time, but I just now got an emulator for gba. I got it and saw I could play frame-by-fame. I decided to make a tas of fire red. I honestly have no idea how this scripting stuff works, but I guess I could learn some of it.
I haven't had any time to work on the script, but I posted it earlier. Instructions are included in the post.
http://tasvideos.org/forum/viewtopic.php?p=303383#303383
Stevmay09, all you need to do is load this script into Lua. It displays some things that will help.
Anyway, here's how I'd approach this TAS:
- First, I use MID speed, never FAST speed. This makes it so much better to luck-manipulate. By pressing A and B, you can control the speed of the text.
- There is a RNG chart mode (this is mode 3 in the script; press '9'+frame advance to get there). Let's consider the critical hit chart (the one with multicolored red/orange squares).
-- Colored squares are critical hits; this is when the fourth digit of the RNG value is 0.
-- The top-left corner is the current value. The one to the right is the next value, and so on. The one below is the value 18 steps ahead, and so on.
-- The colored squares scroll right-to-left and bottom-to-top.
-- When the script detects an abnormal jump in the number of RNG values used on the frame, it flashes an indicator (this is a black-and-red box above the chart).
--- For the indicator to function correctly, the chart must be set in 2-RNG-values-per-frame mode if normally the RNG scrolls at 2 per frame, and 3-RNG-values-per-frame mode if normally the RNG scrolls at 3 per frame. (To get the right mode, you have to scroll through the charts and see that the chart background uses either multiple-of-2 or multiple-of-3 grey coloring.
--- It can flash the indicator for any reason, but the first time it flashes after it says "A used attack!", almost always that indicates that the current value is used to determine if it is a critical hit or not.
--- Note that after the indicator flashes to determine a critical hit, it almost always flashes 3 frames later to determine damage variation. This again uses the fourth digit of the RNG value, with 0 doing the most and F doing the least.
-- At that time a critical hit is determined (see indicator), if the top-left box is colored, then the attack will be a critical hit. The goal is to time it so that the colored box ends up in the top-left corner at that moment. Normally, the boxes that are able to end up in the top-left corner are aligned with the light grey coloring in the background, and not the dark ones. However, there are ways to realign the boxes. One way is to wait before battle. Another way is to abuse the help system dialog (it can be called anytime, and can even split the critical hit indication and the damage variation indication, making manipulation of high criticals even easier).
- I normally set autofire for A and B to make text scroll faster. Note that this should only be done in test runs, or otherwise in places where you know you won't risk losing a frame if you do so.
- I also have autohold B, since the main character will do a bit of running.
Also, I had a look at cstrakm's run on the Japanese version on nicovideo. Here's roughly how the run goes (sorry for my notes; they are messy).
-Get Squirtle. Give it one-char name
-@Bulbasaur: 3 tackles. First is not crit, next two are crits.
-Run 1
-Catch enc 2 (Pidgey), don't give name
-Run 3,4,5
-@Weedle: 3 critical tackles. Lets Weedle hit twice with poison sting
-@Brock
-@Geodude: Critical bubble (note: doesn't use torrent)
-@Onix: Critical bubble (again, doesn't use torrent)
-Shop: Buy 13 repel
-@Caterpie: 2 tackles @Weedle 2 tackles @Caterpie 2 tackles
-@Lass @Rattata 2 bubble @NidoranF Water gun
-go back to pewter and come back to reset lass
-2water gun
-you can cancel mt. moon entrance logo
-use 3 repels in mt. moon
-use water gun (note: torrent range)
-squirtle evolves here
-replace bubble with mega punch and tackle with mega kick
-use center and go to gym
-you can bypass the juniorF? hm
-@Misty
-@Staryu MegaKick @Starmie two MegaKicks
-Replace withdraw with Water Pulse
-@Rival
-@all megapunch
-don't learn bite
-nugget bridge megapunch (grass or poison pokemon, mankey) or water gun
-water pulse on a zubat?
-get abra
-after bill's house, teleport
-the fence is redone in such a way that the juniorF beside the juniorM is bypassable
-go to ship, get HM01
-catch diglett in diglett cave? teach cut
-@Surge @Raichu swap to diglett to take shock wave, survive quick attack, KO raichu with Magnitude
-teleport back to Cerulean and get bike
-use 3 repels in Rock tunnel
-go to celadon city and use Pokemon Center there
-beat team rocket here; kangaskhan needs two hits, dig with Diglett
-Celadon Gym @Erika @all mega kick
-get tea from some celadon building
-get TM43 (secret power), 11x super repel, 11x x attack, 11x x special
-get fly and put fly on pidgey and secret power on wartortle (replace water gun), fly to lavender
-complete lavender tower; 1 repel; wartortle evolves here; teleport to celadon
-go through cycling road to fuchsia city
-go to safari zone; get quick claw, gold teeth (for strength) and Surf
-fly out of safari zone, go to gym, put on quick claw
-@Koga @all use surf
-get strength
-go to cinnabar and complete everything
-go to saffron and complete everything
-get ppmax near indigo plateau
-finish the game
L54 HP 162 Atk 126 Def 117 SpAtk 112 SpDef 131 Spe 110
L54 stats included if anyone wants to find Blastoise's IVs. I obviously left out a lot of detail at the end, but because of quick claw+secret power+Stat up items, the rest of the run really isn't that hard to do. Quick claw+secret power ensures Blastoise's survival, so the only question is what is the best way to stat up and KO the rest of the pokemon.
If you have any other ideas about the strategies the run should use, list them here.
I did notice that the J version is much faster than the U version in general, not only due to shorter text, but also because there is a delay in the U version when a trainer sends out the first pokemon.
Wow, that sure is a lot of detail on what to do. I'm considering starting my TAS over because i feel that it isn't as optimal as it could be. The strategies you mentioned are very different than mine.
I was basically gonna do everything that the RTS did except better. I never would have thought about getting abra to teleport!!
I got rattata and pidgey at the very beginning to use as HM slaves. I haven't gotten through Mt. Moon yet.
Also, what kind of luck manipulation could i do with Medium text speed? Couldn't i just wait a few frames before i press A at the end of a message?
Is there something wrong with the script? I loaded it up, but it always shows the same colors in the same spaces no matter where i'm at in the battle (although different battles have different colors).
How exactly does that work? Did i do something wrong?
(I downloaded the one you linked a while back)