Secrets to Finding Feebas

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Feebas is probably one of the hardest Pokemon to find in the games it can be found on Route 119 in only six spots in the water at a time in those spots where Feebas can be found it has a 50% chance of appearing so the fastest way to Brute Force results is by going through all the fishing spots and fish their once to see if febas is there or not this however takes way too much time and if you can't get through it all in one day then you have to start all over so I thought to myself there has to be a way wow and decided to take a deep dive into the code and found a way to figure out where Feebas is located let's get started before we can do anything we have to understand how the game decides where Feebas will be located the locations are determined by a random value tied to the current most trendy phrase which can be found by talking to this random NPC in Du for Town unfortunately we cannot determine the feeb best spots just by knowing this trendy phrase so we will also have to find a way to determine what the random value for the most trendiest phrases but before we do that let's first continue looking into how this random value is used to distribute the six feea spots in Route 119 whenever we will do any fishing encounter it will call this function to check if the encounter should be a Feebas or not let's take a look at this function the first thing it does here is check if we are indeed on Route 119 and if not we return to create a normal fishing Pokémon the very next thing is checking in which segment of the map we are they decided to cut the map into three different segments for the febas calculation so that we won't have to check all the tiles every time we decide to fish here after this we do a 50/50 chance to see if the encounter can be a Feebas or not after this we finally start Distributing the Feebas spots and the first thing we do is seating the separate RNG dedicated for this like mentioned before they are using the random value of the trendy phrase for this and directly afterwards generate six spots where Feebas will be located they do this by getting random value from our newly seated RNG function modulo the total number of spots to make sure that it falls within our range however they added a little check for if the value is zero and changed to the max value if it is they did this because the first Feebas index is one instead of zero now next up is a more interesting check the generated fee best spot is only valid if it is less than one or greater than or equal to four the first check is completely pointless because we just changed the value if it is zero it can never be less than one because of it the check for greater than four however implies that the first three spots are inaccessible and they made this code to avoid febas from appearing there I have some questions at the moment like why is febas even allowed to appear in these spots where we can't reach it can we solve it by going to the root of the issue and figure out why Feebas is even appearing there in the first place they decided to solve it like this but we'll get more into this soon and get to the bottom of this now lastly we call a function to get the fishing spot idea that we're currently fishing in and compare if that idea is in the list of the generated Feebas IDs if it's in the list then we generate a Feebas now it's time to take a small step back we now know how the Feebas spots are generated and learn that some spots are impossible to reach and they made Cod to get around this issue let's try to understand why Feebas is allowed to even spawn here in the first place perhaps there are some other spots that they missed anyway to do this we have to understand how the game determines what spot of the map is a Feebas spot let's go back to this function that we glossed over a while ago this function Returns the fishing spot idea that we are currently fishing in by diving a bit deeper into how the game determines if a towel is a fishing spot or not we can figure out why feas appears in those three unreachable spots so let's take a look in this function it goes through all the Tils in the oneir of the map we are on and checks if the behavior of the towel is servable and not a waterfall if that checks out then it is counted as a Feebas spot so the first three spots have the wrong Behavior set to make them spawn a Feebas and now to fix it we will simply set the behaviors of these spots to something different right well unfortunately it's a bit more complicated let me explain and let's take a look at how a map in the game is put together each spot in the map grid consists out of 16 bits 10 bits to choose which sty is placed here two bits for the Collision value and four bits for the elevation value the tow idea is important to us each map in the game has the ability to use two towel sets in the design each tow set consists out of 512 different Tils there are many many different tole sets available but we will only take a look at the general to set and a tole set for forry City because these are used to create Route 119 the general tole set includes the things you find in most places like water trees grass rocks the Pokémon Center and many more things and a four City tow set has the unique towels for the houses in that City but it also has the weather station now each of these towels in the different towel set also has its own attributes the layer type and the behavior of the tow we're only interested in the behavior at the moment there are a total of 256 different behaviors to choose from and each of these have Flags to let the game know which behaviors are servable or can hold encounters let's take this normal water towel for example this tole has the behavior set for ocean water if we then check the flags for ocean water in the game files it says that it is surfable and can hold encounters pretty straightforward right the next step is figuring out which Styles exactly are the ones causing problems for this I made a little program to go to each and every single tole and show us every spot where Feebas can appear let's take a look in this map here you can see the three unreachable spots one is just a normal water tile and the other two are in these Rock Edge tiles where you can't even fish what's interesting though is that four more of these tiles also appear a bit further down in a reachable spot so feas can spawn in this spot but we cannot fish here meaning that our total now comes up to seven unreachable spot um slight correction 10 unreachable spots below the waterfall over here are three more unreachable spots where we cannot come bringing the total up to 10 unreachable spots they made Cod to avoid the first tree but the other seven are still possible for our little fish to appear here another fun thing to not is that Feebas appears under the bridge in a glitchy way if Feebas appears in this unreachable spot right here then it will appear in all spots on the bridge yeah I don't think that is supposed to happen anyway let's go over each unreachable spot and see why Feebas appears here the first unreachable spot looks like a normal watertile and the one below it that doesn't have a Feebas looks just the same so what's the difference the difference lies in the behavior behaviors of the two towels the towel with the Feebas has the behavior set for ocean water like in our example but the one below it has the normal behavior set which in turn has no flag St for it being surfable or for holding encounters it is basically just a water towel but for show and to make sure Feebas doesn't appear here both of these tiles exist in the tile set as a separate entity so to fix it we simply let the map know to pick the towel with the normal behavior like the ones around it like that feas won't appear in in that spot anymore bringing the total number of unreachable spots down to nine the next six spots are all the same tole for some reason this tile also has the behavior set for it being ocean water one solution is to change the behavior of this specific tole to the normal behavior like the unreachable water but luckily for us there's another tow that looks exactly the same in a general to set with the correct Behavior so if we change the idea of it in the map to the other tole then Feebas won't appear in these spots anymore either bringing the tot number of unreachable spots down to three the last three spots look on first side the same as every other water towel but if you look a little bit closer you can see the top part of the towel is a bit darker this is done because it is just below the waterfall the same spots are used on the other waterfall right here and these are reachable spots and feas needs to appear here so the first thing I did again is go through all the Tils and see if there's another towel that looks exactly the same but with a different Behavior unfortunately though there was none this is the only towel available so what do we do now is it still possible to fix these last three spots luckily for us we can but we have to make a copy of the original to and give it a different Behavior luckily there are many onus spots available so I decided to use the first unused spot and make a copy of the special water towel under the waterfall lastly we simply change the behavior to normal and like that feas won't appear anymore making all spots now reachable but there's still something that's bothering me why does Feebas not work well under the bridge let's take a look at the behavior of these TOS these Bridge Tils above the water have the behavior set for bridge over ocean this Behavior has no flex set at all for it being surfable so it makes sense that the current code for Feebas disregards these spots but Feebas can still appear here and if it does it appears in all spots under the bridge so what's going on let's take a look at at this Loop where it determines which feebest spot we are fishing in this Loop counts all the feebest spots up until we reach the spot we are fishing in and returns it since the behavior on the bridge is not counted as a feea spot we will never return inside this Loop but there's another return statement outside of the loop once that's counted all the spots in the section in our case this is equal to the first fishing spot in section number two which in the base game is equal to this unreachable spot but this spot next to it in our fixed game so if feas is generated to appear in the first spot of section number two then it will always appear in all spots under the bridge so how can we fix this first let's take a look at why we can fish here in the first place besides checking if the towel we're facing is a normal water towel where we can fish it also checks if we are facing a bridge above water in total there are four types of behaviors that fit this requirement and our bridge is one of them so if we want Feebas to appear in these spots we have to add this extra check to the code to take bridges into account adding this check now brings the total of fas spots back to 447 or 453 apparently there is another bridge above water where we can't actually surf to fix this newly created issue we simply do the same as before with these Treet tiles above it we make a copy of these Bridge tiles and give them the normal behavior so that FAS won't appear any more bringing the total finally back to 447 we now fixed everything in the map but there are still a few more things we need to update in the code as well first of all we have to change the total number of spots available on each section and lastly we need to remove the code they made to filter out the first three spots and like that we have a game that will only generate feeba spots in places where you can actually fish well that detour took a little longer than expected with our little side quest now completed we can go back to our main quest how can we determine where the Feebas are located currently our best bet is still to fish in every tow once and see if feas is there or not but there has to be a better way to find this fish right H do you all remember Mirage Island one of the ways of getting to the island was seeing the old man every single day with all the Pokémon you have and pray to the RNG gods that the Mirage Island will appear but about another way was to restart your game with the battery removed and like this the value for Mirage Island will always stay zero making it a lot easier to find the Pokémon that we need what if we do the same for Feebas when we restart the game it will initialize the value for the trendy phrase in D for and it won't change anymore because we removed the battery the only problem we face now is that the try phrase will be random every time we restart the game but at least it won't change anymore afterwards next up let's take a look look at how the trendy phrase is initialized when we start a new game in total the game generates five different trendy phrases and then sort them based on the trendiness the trendiest of phrases is what we're looking for and holds a random value for the Feebas RNG let's take a look at how all of this is coded when we start a new game we get into this function to initialize everything a bit further down is the function to initialize the DU for Trend inside this function we Loop five times to generate the five phrases like mentioned before the first thing that is done is generate the phrase itself the first word is from the group conditions and the second word is either from the group lifestyle or Hobbies which one is chosen is based on the first bit of a new random value once the phrase is generated we set the value for gaining trendiness and lastly in this Loop we execute a function to set the last few values let's take a look the first thing that is done here is getting a new random value modulo 98 based on this result we will either do more RNG calls or set the last three parameters of the trendy phrase all the way at the bottom here we can see the random value that we are looking for this whole process is done five times and afterwards they are sorted based on the trendiness if the trendiness of two phrases are equal somehow then we will take whichever has the highest max trendiness value if that value is also equal then we will do one more RNG call and determine it randomly and that is everything related to the generation of the trendy phrase recreating all of this is pretty straightforward but we still have to know the exact RNG value when entering this function maybe we can find a good starting and end point for us to hold on to and luckily for us right after the function for jufor the lottery number is initialized meaning that we now have a good end point to hold on to when we scroll up a bit more we also have a starting point in Ruby and Sapphire the trainer ID and the Seeker ID are gener generated right after the other but in Emerald only the secret ID is generated here next up we will need to take a look at how the RNG itself is initialized let's first take a look at Ruby and Sapphire when the battery is removed we know the RNG is always initialized with this value when you boot up the game for Emerald however the RNG is never initialized and will always have zero as a starting seat but Emerald has another seating in a new game process after confirming your name it will receed the RNG which with your future trainer ID for Ruby and Sapphire none of this is done and will'll just keep calling the original seated RNG function every single frame I think we have a good grasp on everything now it's time to put everything together and find Feebas in Python I now made code that can take all our input values and use them to find the feat spots let's take a look the first thing we do is initialize the RNG based off of the game we are playing afterwards the fun begins and we get into a function that keeps advancing the RNG until it finds the values that match the lottery number it does this for a total of 20,000 RNG calls or about 5 and 1/2 minutes in the game so if it would take longer than that to start your new game after seating the r then it will not succeed in finding Feebas all of the values that are found are stored in an array for later use so that we can find the trendy phrase before it now the next step is a bit different between Ruby and Sapphire and emerald for Ruby and Sapphire we have a clear start and end point the trainer ID is our starting point and our end point is a lottery number from the lottery number we can reverse the RNG function and keep getting the previous value until we get the trainer ID if we can find a trainer idea within 50 or so reverse RNG calls then we can continue to The Next Step which is to do one more reverse RNG call in order to get the secret ID might as well find that value as well where we're ated right after afterwards we progress the RNG a bit more and get it ready to generate the trendy phrase the same way the game does it and lastly we generate the lottery number again to see if it matches the previous value we had and if all the values match then we have found the SE to generate Feebas and Ruby and Sapphire now it's time to take a look at Emerald this step for Emerald is a bit more difficult because we don't have a clear starting point our starting point would have been a secret ID but that is you know Secret so how do we find Feebas done in Emerald I made the code more flexible for Emerald since we don't have a clear starting point we have to try many different starting points the code keeps trying until it finds a starting point that fits our inserted values for the trendy phrase and the lottery number now I also want to try to find the secret ID for emeralds but this gets a bit more tricky and unfortunately I can't know for sure what the value of this will be because multiple St points could lead to the same results but I can give a range of values that could be the secret ID it's at least better than nothing once the trendy phrase has been found successfully we can seat the RNG for Feebas with a random value and generate the feat spots now with all this code and information I decided to put it all together into one tool that can calculate the fee best spots for the Gen 3 games here on the left you can see a map that you can move around with your mouse and see see where the spots are located and on the right we have some amazing art made by my brother and also the necessary fields that need to be filled in to calculate the feea spots once you have filled in all the values correctly you can press the calculate button and it will show all the feeb spots in the map on the left in case you don't want to search for them in the map you can also press the buttons below to find the spots quickly in this field over here you can find a seceret ID that has been found for your game but like mentioned before an emerald this could be multiple values and one of them should be your secret ID and in case you wanted to use this tool for the updated game with the fixed spots there is an option in the bottom left corner for that as well to find the code for this tool you can check out the link in the description to the GitHub page it has been tested with quite a few save files so far and has always been able to find Feebas but if you encounter any issues or have questions about it you can either leave a comment here on YouTube or join the Discord to get some support with using the tool and with that we have finished our adventure with Feebas thank you all so much for watching and I'll see you in the next one
Info
Channel: Goppier
Views: 22,452
Rating: undefined out of 5
Keywords: How to find feebas?, Where to find Feebas?, How to catch Feebas?, Feebas, Pokemon, GEN3, Ruby, Sapphire, Emerald, RSE, Route119, Route 119, Feebas spots
Id: NkOoDP6d-xc
Channel Id: undefined
Length: 19min 22sec (1162 seconds)
Published: Sat Apr 20 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.