• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Simple Questions (PLEASE USE THE SEARCH BUTTON BEFORE ASKING)

Status
Not open for further replies.
27
Posts
10
Years
    • Seen Jan 5, 2017
    I don't see it requiring ASM. There are a handful of trainer editor tools out there. Unnamed Trainer Editor is a good one (sorry, I don't have a link handy). I think the most straight-forward way would be to create new entries for the rival to account for all the new starters and use a whole mess of script flags to set the right battle with each encounter.

    If there's an easier way, I don't know it offhand. Then again, I tend not to use ASM if possible.

    Then i'll stick with my first idea (for now...). Thank you for answering ! :)
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • Hey is there any way to make shiny pokemon more common? like can you edit the chances of a shiny pokemon appearing in Pokemon FireRed?

    There is a single routine somewhere that determines if a pokemon is shiny, with a single byte that controls the %. Sadly, I cannot remember where it is.

    Edit: I lied. I found some clues in my notes and then it wasn't hard to track down. 0x44120 controls the amount of shinies. Please note, this is not a percentage.

    Bulbapedia said:
    The above formula can result in a number from 0 to 65535. If the result is less than 8, then the Pokémon is Shiny. This gives an overall probability of 8/65536 or 1/8192, exactly the same as in Generation II.

    You will find the number 7 at this location. This is the "if less than 8" byte. Now, since it is a byte, there is no way to actually make this 100%. The best odds you are going to get is a value of 0xFF or ~1/256. These are still pretty good odds.

    However, with some ASM, we can change this.:) If you look ahead 2 bytes, you will see 07 D9. This is the jump that happens if it is a shiny pokemon. If we change the D9 to E0, it will ALWAYS be shiny.:D Now, if you really wanted to get fancy, we could rewrite this routine to check a halfword instead of a byte. This would give us full control over the percentages of shinies. Now, there is also one more thing we can do. We can invert shinies. So now, the normal pokemon colors are actually the rare ones. This can be done by taking those same bytes (07 D9) and changing them to 07 D8. Now it should branch if there is anything higher, instead of lower.

    So, to sum it up, we have a string of bytes at 0x44120:

    XX(07) 28 07 D9

    The XX is the byte that is compared to check for shininess.

    The D9 can be changed as follows:
    D8 - Branch if greater than XX
    D9 - Branch if less than XX
    E0 - Always branch

    Hope this helps!

    (PLEASE NOTE, if you trade pokemon with another game, they may not be shiny! These pokemon only look shiny, but in reality are not! The routine says they are each time they are loaded, but if you transferred them to another game, they may not be shiny, unless that game has a hacked shiny rate too. The only way to actually make more shiny pokemon that are legit is to change the PRNG to give you better shiny numbers.)
     
    Last edited:
    349
    Posts
    14
    Years
    • Seen Dec 17, 2018
    There is a single routine somewhere that determines if a pokemon is shiny, with a single byte that controls the %. Sadly, I cannot remember where it is.

    Edit: I lied. I found some clues in my notes and then it wasn't hard to track down. 0x44120 controls the amount of shinies. Please note, this is not a percentage.



    You will find the number 7 at this location. This is the "if less than 8" byte. Now, since it is a byte, there is no way to actually make this 100%. The best odds you are going to get is a value of 0xFF or ~1/256. These are still pretty good odds.

    However, with some ASM, we can change this.:) If you look ahead 2 bytes, you will see 07 D9. This is the jump that happens if it is a shiny pokemon. If we change the D9 to E0, it will ALWAYS be shiny.:D Now, if you really wanted to get fancy, we could rewrite this routine to check a halfword instead of a byte. This would give us full control over the percentages of shinies. Now, there is also one more thing we can do. We can invert shinies. So now, the normal pokemon colors are actually the rare ones. This can be done by taking those same bytes (07 D9) and changing them to 07 D8. Now it should branch if there is anything higher, instead of lower.

    So, to sum it up, we have a string of bytes at 0x44120:

    XX(07) 28 07 D9

    The XX is the byte that is compared to check for shininess.

    The D9 can be changed as follows:
    D8 - Branch if greater than XX
    D9 - Branch if less than XX
    E0 - Always branch

    Hope this helps!

    (PLEASE NOTE, if you trade pokemon with another game, they may not be shiny! These pokemon only look shiny, but in reality are not! The routine says they are each time they are loaded, but if you transferred them to another game, they may not be shiny, unless that game has a hacked shiny rate too. The only way to actually make more shiny pokemon that are legit is to change the PRNG to give you better shiny numbers.)



    Thank you very much for the help i will read this later on today :) i really appreciate the help, like i said before on this posts previous statement XD,this information is Very crucial for my hack :3 thank you so much!


    Edit:thank you so much fo rhte help, id rather have them legit shinies, now i dont think my players will trade through roms, i didnt know you could lol, but if they do i dont want them to be disappointed, what id like to do:
    is at least make the chances of the legit shines be slightly more common but not like every 5 pokemon will be shiny(or what ima gonna change it to) im not quiet sure about the exact ratio im looking for yet ill have to think about it
    but i guess the second option you mentioned will be like a last resort.

    don you know what the change would be to make it like 25% chance? cause i dont want it like as rare as they are now, or like super rare or easy to get.
     
    Last edited:

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • Thank you very much for the help i will read this later on today :) i really appreciate the help, like i said before on this posts previous statement XD,this information is Very crucial for my hack :3 thank you so much!


    Edit:thank you so much fo rhte help, id rather have them legit shinies, now i dont think my players will trade through roms, i didnt know you could lol, but if they do i dont want them to be disappointed, what id like to do:
    is at least make the chances of the legit shines be slightly more common but not like every 5 pokemon will be shiny(or what ima gonna change it to) im not quiet sure about the exact ratio im looking for yet ill have to think about it
    but i guess the second option you mentioned will be like a last resort.

    don you know what the change would be to make it like 25% chance? cause i dont want it like as rare as they are now, or like super rare or easy to get.

    I don't think you quite understand. Shinies are basically the result of a math formula:

    Code:
    [ (TrainerID [B]xor[/B] SecretID) [B]xor[/B] (PersonalityValue>>16 [B]xor[/B] (PersonalityValue [I]mod[/I] 65536)) ]

    so the only way to get them for real is by using math. You would have to hack the psuedo-random number generator to give you the right PIDs for your trainer ID and secret ID. This is really crazy. Your best bet for legit shinies is to do what I told LockSmithArmy to do and apply shinizer to your rom. From there, make a bunch of script tiles like this:

    Code:
    #Dynamic 0x800000
    #org @start
    setvar 0x8003 0x1
    end

    and place them everywhere. Whenever someone steps on one, the next pokemon they see will be a legit shiny. Easy enough.
     
    349
    Posts
    14
    Years
    • Seen Dec 17, 2018
    Earlier you said "The best odds you are going to get is a value of 0xFF or ~1/256. These are still pretty good odds. "

    So is there what chances would you say this would be if you know? and whats the comparison of the original odds?


    and the shinyizer i have, but im not quite sure how it works, your post help a bit, i can make a tile have shiny pokemon, or am i wrong, if you can go more indepth please

    and can i have a trainer own a shiny pokemon?
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • Earlier you said "The best odds you are going to get is a value of 0xFF or ~1/256. These are still pretty good odds. "

    So is there what chances would you say this would be if you know? and whats the comparison of the original odds?


    and the shinyizer i have, but im not quite sure how it works, your post help a bit, i can make a tile have shiny pokemon, or am i wrong, if you can go more indepth please

    and can i have a trainer own a shiny pokemon?

    Shinizer basically inserts ASM code that checks var 0x8003 and if it is anything but 0, it will subtract 1 from the var and then make a shiny pokemon.

    Ex.
    You setvar 0x8003 to 0x5

    You go into the grass:
    You see 1 pokemon. It is shiny, var 0x8003 now = 0x4
    You see another pokemon. It is shiny, var 0x8003 now = 0x3

    Now, you come across a trainer. He has 4 pokemon.
    The first is shiny. var 0x8003 now = 0x2
    The second is shiny. var 0x8003 now = 0x1
    The third is shiny. var 0x8003 now = 0x0

    The fourth, however, is normal. Why? Because 0x8003 = 0x0. It is basically a shiny counter.

    So, if you put those script tiles everywhere, if the player steps on one, the next pokemon (whether it be a trainer or in the wild or from an egg) will be a legit shiny. The chances change strategically. The more of them you put, or the higher traffic the place you put them is, the more chance that person will see a shiny.
     
    349
    Posts
    14
    Years
    • Seen Dec 17, 2018
    Shinizer basically inserts ASM code that checks var 0x8003 and if it is anything but 0, it will subtract 1 from the var and then make a shiny pokemon.

    Ex.
    You setvar 0x8003 to 0x5

    You go into the grass:
    You see 1 pokemon. It is shiny, var 0x8003 now = 0x4
    You see another pokemon. It is shiny, var 0x8003 now = 0x3

    Now, you come across a trainer. He has 4 pokemon.
    The first is shiny. var 0x8003 now = 0x2
    The second is shiny. var 0x8003 now = 0x1
    The third is shiny. var 0x8003 now = 0x0

    The fourth, however, is normal. Why? Because 0x8003 = 0x0. It is basically a shiny counter.

    So, if you put those script tiles everywhere, if the player steps on one, the next pokemon (whether it be a trainer or in the wild or from an egg) will be a legit shiny. The chances change strategically. The more of them you put, or the higher traffic the place you put them is, the more chance that person will see a shiny.

    that helps so much lol, so i can change shiny chances by doing the first thing you mentioned with changing the code line, to get the 1/256 chances.

    and the tiles as well?

    and just to clear something, the tile and trainer var will not effect each other?
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • that helps so much lol, so i can change shiny chances by doing the first thing you mentioned with changing the code line, to get the 1/256 chances.

    and the tiles as well?

    and just to clear something, the tile and trainer var will not effect each other?

    The tile and trainer var are the same thing. They work together.

    If you change it to the 1/256 chance, you will create non-real shinies. For shinies that only work in your hack, do that. For shinies that work anywhere, use the tiles.
     
    349
    Posts
    14
    Years
    • Seen Dec 17, 2018
    The tile and trainer var are the same thing. They work together.

    If you change it to the 1/256 chance, you will create non-real shinies. For shinies that only work in your hack, do that. For shinies that work anywhere, use the tiles.

    How do you trade with roms?

    will the var count on a tile change the outcome of the trainer battle?
     

    PokéMew1

    Pokémon Fuchsia
    484
    Posts
    10
    Years
  • Ok I have a question about hacking the FireRed titlescreen with NTME. Whenever I insert the image, it looks good and everything, but there are still two grid lines on the top and bottom of the image. Any idea how to get rid of them?
     

    Smeargle

    Illusory
    160
    Posts
    11
    Years
  • You don't. There are only 16 palettes (hardware limitation) and the other 4 are used for other things.

    I was afriad of this, looks like I need to choose my 192 colors wisely then

    not to double post but I would also like to know how to replace the over-world players sprite with the d/p player. The size is too big and when i tried to re-size the canvas manually in a hex editor, things got ugly.
     
    Last edited:

    GoGoJJTech

    (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
    2,475
    Posts
    11
    Years
  • I was afriad of this, looks like I need to choose my 192 colors wisely then

    not to double post but I would also like to know how to replace the over-world players sprite with the d/p player. The size is too big and when i tried to re-size the canvas manually in a hex editor, things got ugly.

    In NSE go to the advanced header view (preferences) then change from 16 x 32 to 32 x 32. Looks like this:
    MNnKa9d.png
     

    Aethestode

    Hacker
    1,700
    Posts
    16
    Years
    • Seen Aug 14, 2023
    Hi, I've installed the jpan hack engine, and safari zone is kinda stuff up. Like the timer won't work, and if you click retreat, you won't warp back to the main entrance.

    I have a crazy idea (i originally had it for Emerald, but it could be applicable for FR/LG/R/S as well):

    How about 9 starters instead of 3 ?

    I'll explain:

    1st way:
    The idea is that a NPC would ask you a question, where three answers are possible. Choosing one of the answers will lead you to 3 different sets of starters.

    Example:
    NPC: Question
    You:
    A - Fire/Water/Grass Starters
    B - Psychic/Dark/Fighting Starters
    C - Ice/Ground/Rock Starters

    2nd way:
    The NPC would ask three questions, with 3 answers possible. This time, each answer would represent a pokemon. It's like you're setting your starters "manually".

    Example:
    NPC: Question 1
    You: A) Fire B) Water C) Grass
    NPC: Question 2
    You: D) Psychic E) Dark F) Fighting
    NPC: Question 3
    You: G) Ice H) Ground I) Rock

    Choosing A,D and H as answers would give you the choice between a fire, psychic, or ground starter.

    Whatever you choose, your rival would take the one with the type advantage over yours.
    Other things would change as well (the 1st arena type, but that may be too much...)
    Is that possible (may it be though scripting or ASM) ?

    That's possible even without asm
     
    Last edited:
    Status
    Not open for further replies.
    Back
    Top