dji Posted February 6, 2018 Posted February 6, 2018 (edited) help me, pokemon colseum espeon and umbreon illegales, pk hex , 5 ivs espeon and umbreon(-atack) nature espeon= timid,modest, umbreon=bold,modest,calm,timid 01-GC6P-pokemon_colosseum.gci Edited February 6, 2018 by dji
theSLAYER Posted February 6, 2018 Posted February 6, 2018 Okay, based on the wanted IVs for Espeon, I managed to generate the TID/SID combo that matches that PID. Here's the Espeon.196 - ESPEON - DE7C5A134534.ck3 edit: and umbreon:197 - UMBREON - B25AA3EE114D.ck3
theSLAYER Posted February 6, 2018 Posted February 6, 2018 Anyway, here is how I modified the IVs for Espeon and Umbreon. 1. Use RNGReporter, open GameCube Time Finder, to find the wanted IVs with Colo method. (image in spoiler) Spoiler 2. Then, I took the PID that is wanted, and run a python script, on an online compiler. (website for running python script) Spoiler Example of what it looks like: Explanation: (1) Blue box. Change the value to 2 if you want to use the found PID as Espeon's PID. Change the value to 3 if you want to use the found PID as Umbreon's PID. (2) Blue box. Input the PID found in Step 1. (3) Green box. Press Execute (4) Blue box. TID/SID combo calculate for you.Script that you would have to copy and paste over to the website (credits to TuxSH) # Imported from TuxSH's work def GCRNG(seed): return ((seed * 0x000343fd) + 0x00269ec3) & 0xffffffff def GCRNG_R(seed): return ((seed * 0xb9b33155) + 0xa170f641) & 0xffffffff def apply(f, n, x): for i in range(n): x = f(x) return x def findFrame(val): ret = [] val = val & 0xffffffff x = val & 0xffff0000 for i in range(2**16): if (GCRNG(x|i) >> 16) == (val & 0xffff): ret.append(x|i) return ret def generateU32(seed, dist=0): seed = apply(GCRNG if dist >= 0 else GCRNG_R, abs(dist), seed) return (seed & 0xffff0000) | (GCRNG(seed) >> 16) def pkmFromIVSeed(seed): #oldpid = generateU32(seed, -2) A value for the PID that is always overwritten, two RNG calls # Then two RNG calls for the IVs ivs_abil = generateU32(seed) abil = ((GCRNG(GCRNG(seed)) >> 16) & 1) != 0 # And one for the Ability (if odd, second Ability if it exists) PID = generateU32(seed, 3) # Depends. For Pokmon where there is no constraint (e.g shininess), 2 calls. order_2 = [1,2,0] IVs = [((ivs_abil >> 16) >> (5*i)) & 0x1f for i in range(3)] + [(ivs_abil >> (5*order_2[i])) & 0x1f for i in range(3)] return "PID: {0}, ".format(hex(PID)) + "Abil. {0}, IVs: {1}/{2}/{3}/{4}/{5}/{6}".format(2 if abil else 1, *IVs) def genText(seed, c): # Either the frame corresponding to the PID or the TID itself ids_seed = apply(GCRNG_R, 7 if c == 2 else 14, seed) if c != 1 else seed ids = generateU32(ids_seed) TID, SID = (ids >> 16), (ids & 0xffff) umbr = apply(GCRNG, 4, ids_seed) esp = apply(GCRNG, 11, ids_seed) s = """TID/SID: {0}/{1} (TID frame: {2}) Umbreon: {3} Espeon: {4}""".format(TID, SID, hex(ids_seed), pkmFromIVSeed(umbr), pkmFromIVSeed(esp)) return s if __name__ == '__main__': c = -1 while c not in (1,2,3): print("""Please select the value you will provide: \t1. Your TID/SID \t2. Umbreon's PID \t3. Espeon's PID""") try: c = int(1) except ValueError: continue seeds = [] if c == 1: TID = 0x7C46 SID = 0x63D seeds = findFrame((TID << 16) | SID) else: PID = 0xa3ee114d seeds = findFrame(PID) print("") print("\n\nOR\n\n".join(genText(seed, c) for seed in seeds)) 3. Input details in PKHeX
Sabresite Posted February 6, 2018 Posted February 6, 2018 I wrote a similar script for @dji (I have since tweaked it since its original concept since you can't have a perfect umbreon and a perfect espeon from the same trainer). https://repl.it/@kbatman/ColoStarterGenerator https://repl.it/@kbatman/PerfectColoStarters The problem he has now is that he has a TID/SID that he wants, there are issues with changing his TID/SID in his save to the target. 1
theSLAYER Posted February 6, 2018 Posted February 6, 2018 4 minutes ago, Sabresite said: I wrote a similar script for @dji (I have since tweaked it since its original concept since you can't have a perfect umbreon and a perfect espeon from the same trainer). https://repl.it/@kbatman/ColoStarterGenerator https://repl.it/@kbatman/PerfectColoStarters The problem he has now is that he has a TID/SID that he wants, there are issues with changing his TID/SID in his save to the target. yeah, he PM'd me the cloned umbreon entry problem.
theSLAYER Posted February 6, 2018 Posted February 6, 2018 I recommended @dji to use PkmGCtools to make the modification, and the duplication stopped occurring. Not sure if it is implement something differently from PKHeX. Just bringing it up, as some sort of heads up @Sabresite @Kaphotics (I understand that without further details probably isn't fixable. If other users report noticing this, then it may be something worth investigating) I say it'll be good if @dji can provide us with 2 saves: 1. modify umbreon on PKHeX 2. modify umbreon on PKMGCtools This way, we can compare the difference.
dji Posted February 6, 2018 Author Posted February 6, 2018 (edited) on the up edited with pk hex, on the down edited with gcmtool 01-GC6P-pokemon_colosseum.gci 01-GC6P-pokemon_colosseum.gci Edited February 6, 2018 by dji
ShadyPeixe Posted 8 hours ago Posted 8 hours ago On 2/6/2018 at 2:51 AM, theSLAYER said: Anyway, here is how I modified the IVs for Espeon and Umbreon. 1. Use RNGReporter, open GameCube Time Finder, to find the wanted IVs with Colo method. (image in spoiler) Reveal hidden contents 2. Then, I took the PID that is wanted, and run a python script, on an online compiler. (website for running python script) Hide contents Example of what it looks like: Explanation: (1) Blue box. Change the value to 2 if you want to use the found PID as Espeon's PID. Change the value to 3 if you want to use the found PID as Umbreon's PID. (2) Blue box. Input the PID found in Step 1. (3) Green box. Press Execute (4) Blue box. TID/SID combo calculate for you. Script that you would have to copy and paste over to the website (credits to TuxSH) # Imported from TuxSH's work def GCRNG(seed): return ((seed * 0x000343fd) + 0x00269ec3) & 0xffffffff def GCRNG_R(seed): return ((seed * 0xb9b33155) + 0xa170f641) & 0xffffffff def apply(f, n, x): for i in range(n): x = f(x) return x def findFrame(val): ret = [] val = val & 0xffffffff x = val & 0xffff0000 for i in range(2**16): if (GCRNG(x|i) >> 16) == (val & 0xffff): ret.append(x|i) return ret def generateU32(seed, dist=0): seed = apply(GCRNG if dist >= 0 else GCRNG_R, abs(dist), seed) return (seed & 0xffff0000) | (GCRNG(seed) >> 16) def pkmFromIVSeed(seed): #oldpid = generateU32(seed, -2) A value for the PID that is always overwritten, two RNG calls # Then two RNG calls for the IVs ivs_abil = generateU32(seed) abil = ((GCRNG(GCRNG(seed)) >> 16) & 1) != 0 # And one for the Ability (if odd, second Ability if it exists) PID = generateU32(seed, 3) # Depends. For Pokmon where there is no constraint (e.g shininess), 2 calls. order_2 = [1,2,0] IVs = [((ivs_abil >> 16) >> (5*i)) & 0x1f for i in range(3)] + [(ivs_abil >> (5*order_2[i])) & 0x1f for i in range(3)] return "PID: {0}, ".format(hex(PID)) + "Abil. {0}, IVs: {1}/{2}/{3}/{4}/{5}/{6}".format(2 if abil else 1, *IVs) def genText(seed, c): # Either the frame corresponding to the PID or the TID itself ids_seed = apply(GCRNG_R, 7 if c == 2 else 14, seed) if c != 1 else seed ids = generateU32(ids_seed) TID, SID = (ids >> 16), (ids & 0xffff) umbr = apply(GCRNG, 4, ids_seed) esp = apply(GCRNG, 11, ids_seed) s = """TID/SID: {0}/{1} (TID frame: {2}) Umbreon: {3} Espeon: {4}""".format(TID, SID, hex(ids_seed), pkmFromIVSeed(umbr), pkmFromIVSeed(esp)) return s if __name__ == '__main__': c = -1 while c not in (1,2,3): print("""Please select the value you will provide: \t1. Your TID/SID \t2. Umbreon's PID \t3. Espeon's PID""") try: c = int(1) except ValueError: continue seeds = [] if c == 1: TID = 0x7C46 SID = 0x63D seeds = findFrame((TID << 16) | SID) else: PID = 0xa3ee114d seeds = findFrame(PID) print("") print("\n\nOR\n\n".join(genText(seed, c) for seed in seeds)) 3. Input details in PKHeX Going to necro this thread but do you happen to know if there is a similar script available for Eevee in XD?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now