Jump to content

KazoWAR

Innovator
  • Posts

    477
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by KazoWAR

  1. If he just needs to generate a shiny PID with no regard for whether it's valid or not, then the chained shiny algorithm is fast and works for his purposes.

    Kazo, what does the code look like now?

    Random random = new Random();
               UInt32 RandomPID = 0, RandomPIDHigh = 0, RandomPIDLow = 0;
               bool NatureBool = true, AbilityBool = true, GenderBool = true, ShinyBool = true, UnownBool = true;
    
               while (NatureBool || AbilityBool || GenderBool || ShinyBool || UnownBool)
               {
                   RandomPIDLow = Convert.ToUInt32(random.Next(0xFFFF));
    
                   if (checkBox_Shiny.Checked)
                   {
                       RandomPIDHigh = Convert.ToUInt32(RandomPIDLow ^ Convert.ToInt32(textBox_TrainerID.Text) ^ Convert.ToInt32(textBox_SecretID.Text));
                   }
                   else
                   {
                       RandomPIDHigh = Convert.ToUInt32(random.Next(0xFFFF));
                   }
    
                       RandomPID = (RandomPIDHigh * 0x10000) + RandomPIDLow;
    
                   //Nature
                   if ((RandomPID % 25 == NatureNumber))
                   {
                       NatureBool = false;
                   }
                   else
                   {
                       NatureBool = true;
                   }
    
                   //AbilityCheck
                   if (1 < comboBox_Ability.Items.Count)
                   {
                       //Ability
                       if (RandomPID % 2 == comboBox_Ability.SelectedIndex)
                       {
                           AbilityBool = false;
                       }
                       else
                       {
                           AbilityBool = true;
                       }
                   }
                   else
                   {
                       AbilityBool = false;
                   }
    
                   //GenderCheck
                   if ((GenderRatio != "Male0_Female1") && (GenderRatio != "Male1_Female0") && (GenderRatio != "Genderless"))
                   {
                       //GenderCheck2
                       if (radioButton_GenderMale.Checked)
                       {
                           //Gender (Male)
                           if (RandomPID % 256 >= GenderNumber)
                           {
                               GenderBool = false;
                           }
                           else
                           {
                               GenderBool = true;
                           }
                       }
                       else
                       {
                           //Gender (Female)
                           if (RandomPID % 256 <= GenderNumber)
                           {
                               GenderBool = false;
                           }
                           else
                           {
                               GenderBool = true;
                           }
                       }
                   }
                   else
                   {
                       GenderBool = false;
                   }
    
                   //ShinyCheck
                   if (checkBox_Shiny.Checked)
                   {
                       //Shiny
                       if ((RandomPIDHigh ^ RandomPIDLow ^ Convert.ToInt32(textBox_TrainerID.Text) ^ Convert.ToInt32(textBox_SecretID.Text)) < 8)
                       {
                           ShinyBool = false;
                       }
                       else
                       {
                           ShinyBool = true;
                       }
                   }
                   else
                   {
                       //Shiny
                       if ((RandomPIDHigh ^ RandomPIDLow ^ Convert.ToInt32(textBox_TrainerID.Text) ^ Convert.ToInt32(textBox_SecretID.Text)) < 8)
                       {
                           ShinyBool = true;
                       }
                       else
                       {
                           ShinyBool = false;
                       }
                   }
    
                   //UnownCheck
                   if (comboBox_Pokemon.Text == "UNOWN")
                   {
                       //UnownShape
                       if (true)
                       {
                           UnownBool = false;
                       }
                       else
                       {
                           UnownBool = true;
                       }
                   }
                   else
                   {
                       UnownBool = false;
                   }
               }
    
               textBox_PID.Text = RandomPID.ToString();
           }
    

    This is the what is currently used in my program, I still need to add an Unown shapes check, but from what I read it seems kinda complicated.

  2. After testing it seems it uses the lower part of the PID, so the mirage island number for that feebas is C7BA.

    In Ruby/Sapphire it is the lower part of the 32bit value at 02026ABC.

    In Emerald, it moves its place every time there is a screen change, such as entering and existing a building but, it is always at 02026E24 at the continue screen, so to use it with emerald, enable the code at the continue screen, then disable it and it will keep the same value as it is shifted around in ram.

    GBA AR codes are encrypted, and when you decrpt it to RAW it looks like this, 02226DE4 0000C7BA it writes C7BA, the lower part of the Feebas's PID to 02226DE4. 02226DE4 is one of the locations that the Mirage island code can be located while it is shifting around in ram. It looks like a poorly tested code because most of the time it will not work until the Mirage island code passes through it.

    Mirage island code (RAW), replace XXXX with the lower part of a Parties Pokemon's PID.

    Ruby/Sapphire

    02226ABC 0000XXXX

    Emerald*

    02226E24 0000XXXX

    *Enable and then disable at the Continue screen.

    You can use AR Crypt to convert different code types to others. http://doc.kodewerx.org/tools.html#arcrypt

  3. for GBA, you can use both No$GBA and VBALink to emulate a link cable between them, but for DS, there is no current way to have them connect to each other. As for emulator <-> retail cart, i think there some way to do it with some device or something, but I am not to sure, if its true then it most likely really technically, but the best way is to rip a sav and use it on the emulator and then replace it back on to the cart, this is for GBA btw.

  4. Pokémon Maker Colosseum v1.2 by KazoWAR

    v1.2 Update: Fixed a typo in the nature list, Adament to Adamant. This was causing Pokemon to not become the Adamant nature.

    v1.1 Update: Fixed an issue that was causing some Pokémon with 2 abilities to receive the opposite ability in game.

    This Programs allows users to create Action Replay codes to use with Pokémon Colosseum (U) that allows the user to fully create any pokemon from scratch.

    The Pokemon is placed in BOX 3 Slot 30.

    Please report any bugs to KazoWAR@yahoo.com

    Edit OTinfo.txt to add in a desired OT information to use with the buttons Input Own ID and Input Own OT.

    Special Thanks:

    Ralf http://board.gscentral.org/showthread.php?11623-Pokemon-Colosseum-%28GCN-AR-NTSC%29

    kpdavatar http://www.princeton.edu/~jdonald/pokemon/kpdavatar/PokemonMakerHelp.txt

    SCV http://projectpokemon.org/

    albino_vulpix http://faqs.ign.com/articles/680/680986p1.html

    Bulbapedia http://bulbapedia.bulbagarden.net/wiki/Main_Page

    Serebii.net http://www.serebii.net/index2.shtml

    This application was made with Microsoft Visual Studio 2010 Beta 2, you may need Microsoft .NET Framework 4 Beta 2 to run this application.

    Download link: http://go.microsoft.com/fwlink/?LinkID=165587

    Screen Shot

    pmc.png

    Pokémon Maker Colosseum.rar

    Pokémon Maker Colosseum.rar

  5. With the help of SCV I was able to start calculating a PID in my program. It works fine, but when I try to make it shiny, it takes a very long time to calculate it, compared to how in Pokesav it is instant.

    Video to show how slow it is.

    [video=youtube;Ry6HR_6u9bk]

    Here is my code.

               Random random = new Random();
               UInt32 RandomPID = 0, RandomPIDHigh = 0, RandomPIDLow = 0;
               UInt32 PIDcount = 0;
               bool NatureBool = true, AbilityBool = true, GenderBool = true, ShinyBool = true, UnownBool = true;
    
               while (NatureBool || AbilityBool || GenderBool || ShinyBool || UnownBool)
               {
                   RandomPIDHigh = Convert.ToUInt32(random.Next(0xFFFF));
                   RandomPIDLow = Convert.ToUInt32(random.Next(0xFFFF));
                   RandomPID = (RandomPIDHigh * 0x10000) + RandomPIDLow;
    
                   //Nature
                   if ((RandomPID % 25 == NatureNumber))
                   {
                       NatureBool = false;
                   }
                   else
                   {
                       NatureBool = true;
                   }
    
                   //AbilityCheck
                   if (1 < comboBox_Ability.Items.Count)
                   {
                       //Ability
                       if (RandomPID % 2 == comboBox_Ability.SelectedIndex)
                       {
                           AbilityBool = false;
                       }
                       else
                       {
                           AbilityBool = true;
                       }
                   }
                   else
                   {
                       AbilityBool = false;
                   }
    
                   //GenderCheck
                   if (GenderRatio != "Male0_Female1" || GenderRatio != "Male1_Female0" || GenderRatio != "Genderless")
                   {
                       //GenderCheck2
                       if (radioButton_GenderMale.Checked)
                       {
                           //Gender (Male)
                           if (RandomPID % 256 >= GenderNumber)
                           {
                               GenderBool = false;
                           }
                           else
                           {
                               GenderBool = true;
                           }
                       }
                       else
                       {
                           //Gender (Female)
                           if (RandomPID % 256 <= GenderNumber)
                           {
                               GenderBool = false;
                           }
                           else
                           {
                               GenderBool = true;
                           }
                       }
                   }
                   else
                   {
                       GenderBool = false;
                   }
    
                   //ShinyCheck
                   if (checkBox_Shiny.Checked)
                   {
                       //Shiny
                       if ((RandomPIDHigh ^ RandomPIDLow ^ Convert.ToInt32(textBox_TrainerID.Text) ^ Convert.ToInt32(textBox_SecretID.Text)) < 8)
                       {
                           ShinyBool = false;
                       }
                       else
                       {
                           ShinyBool = true;
                       }
                   }
                   else
                   {
                       ShinyBool = false;
                   }
    
                   //UnownCheck
                   if (comboBox_Pokemon.Text == "UNOWN")
                   {
                       //UnownShape
                       if (true)
                       {
                           UnownBool = false;
                       }
                       else
                       {
                           UnownBool = true;
                       }
                   }
                   else
                   {
                       UnownBool = false;
                   }
    
                   PIDcount += 1;
                   textBox1.Text = PIDcount.ToString();
                   this.Update();
               }
    
               textBox_PID.Text = RandomPID.ToString();
    

  6. A flash cart like an ezflash 3in1 would be handy for that. ;)

    The reason I ask about the screenshots is that yesterday I backed up my Pokemon xD disc and it didn't seem to be running in Dolphin. It wasn't too high-priority or I'd have searched around more, but seeing those nice shots just got me wondering...

    does that work? I just assumed it wouldn't because the way it doesn't work with pal park unless you patch the nds rom.

    I guess you have that possibility, but if you can, would you mind backing up your gba save file (the one that contains Ageto Celebi) and put it up here, so we could get Ageto Celebi ourself?

    I'd really like to get an Ageto Celebi on my GBA games, so if you put up a save file, I'll use it in NO$GBA along with my Ruby save file, then I'd restore my save file to my retail GBA cart.

    If you don't mind it, could you please try and get a Modest one?

    Since you don't have a Japanese GBA game, if you can't get one, any one will do.

    That would be very helpful, since at the moment I got WISHMKR Jirachi and 10 ANIV Celebi. All I need is an Ageto Celebi, lol.

    Sure, but I dont plan on doing it anytime soon.

    Have you tried this? I wasn't sure since I couldn't confirm it because I don't have the little transfer dongle thing. But if it does work that's just awesome.

    Well, not personally, but this guy that has a video of him getting the ageto celebi said that you need the japanese version of Colosseum with a completed game and that the first celebi is put on the Colosseum game its self, then it can trade up to 49 others to a GBA games, one each. it seems logical if you restore the sav to be used on the (U) game, then it will be able to trade the celebi to the (U) gba games.

  7. In the example all the RNG calls are listed in the list of rng calls based on the seed. but when I did it, the last call for the IVs where not listed, maybe i typed the wrong data for the IV. I will check again.

  8. Yea, I used the memcard tool with dolphin to fix the checksums. Also, don't need a Japanese GBA game because the first celebi is added to the Colosseum game. Just transfer it back to the (U) version and then trade from there, but yea, I plan on getting one to mass trade celebi's to it in hopes for good nature and IVs

    @Poryhack, yea screenshots from dolphin.

  9. Not sure if this new or not, but I was able to load a Japanese Pokemon Colosseum save file on the U version of the game. This is important imo because now I can play the game with the U version to complete it, then swap it out to the Japanese version and use it to get Celebi with the Japanese Pokemon Colosseum bonus disk. After hex editing the save file, you need to do a checksum fix.

    Hex edit of the (U) sav file to the (J) one.

    Befor:

    hex-befor.png

    After:

    hex-after.png

    Results:

    (J) to (U)

    GC6E01-1.png

    GC6E01-2.png

    (U) to (J)

    GC6J01-1.png

    GC6J01-2.png

  10. I haven't tested 4th gen, but with 3rd gen it seems really buggy. the met location is always "obtained in a trade" the pokemon is always in a masterball, and the IVs are completeing wrong. I entered something like 20,24,19,13,12,9 but i got 20,0,25,0,0,0.

  11. I am trying to figure out how the game generates the PID and IVs. I can map out 3 calls the the RNG, bit the 4th one confuses me.

    Here is an example.

    PID:FB91A0E9

    IVs:14AB64CE

    Seed the game started with is 54C01FE.

    Here is a list of the RNG advancements.

    seeds.png

    Now, it looks like on frame 15 it begins the calls to make the PID and IVs.

    Frame: 15 Seed: A0E92184

    Frame: 16 Seed: FB91DDA7

    Frame: 17 Seed: 64CEA28E

    the PID is made with Frames 15 and 16 by using the first 4 digits of thos seeds, but the IVs use the first 4 digits of frame 17, but the other set of digits, 14AB, I can't seem to find anywhere in the list. Where are these number coming from.

×
×
  • Create New...