• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Which Pokémon Masters protagonist do you like most? Let us know by casting a vote in our Masters favorite protagonist poll here!
  • 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.

Adding more shiny Pokemon forms? (Pokemon rarity system)

Luster

Form changing script (HINT)
  • 29
    Posts
    15
    Years
    Hi everyone,

    I've been developing an idea for expanding on shiny Pokemon mechanics. As you probably know, there is a 1 in 8,192 chance of encountering a wild shiny Pokemon in Fire Red. I'm wondering if it's possible to add a second shiny form for every Pokemon, with a 1 in 1,024 chance (for example) of encountering one. They'd be rarer than a standard Pokemon but considerably more common than a shiny Pokemon. Let's call them uncommon for now.

    The offset that loads a shiny Pokemon's palette is at 0x80440F4 (thanks FBI). It calculates whether or not a Pokemon is shiny. At 0x8044120 there is the following:

    ROM:08044120 CMP R0, #7
    ROM:08044122 BLS loc_8044134
    ROM:08044124 LDR R0, =palc_table_normal

    This checks if the value calculated from the Pokemon's PID is 7 or less. There's an 8 in 65,536 - or 1 in 8,192 - chance of this value being equal to 7 or less. That's our shiny chance! If it is, it branches to 0x8044134, which then loads the shiny palette table to R0. If it's more than 7, the Pokemon's normal palette is loaded to R0 instead.

    If it was possible to add another CMP command below the BLS command, would it be possible to load a third palette instead? Here's what I mean -

    CMP R0, #7 @ 1 in 8,192 chance
    BLS loc_8044134 @branch to load shiny palette
    CMP R0, #40 @ 1 in 1,024 chance
    BLS loc_8740000 @branch to load uncommon palette (example offset)
    LDR R0, =palc_table_normal

    This would load the shiny palette if the value is equal to or below 7 as normal, then check if it's equal to or below 64 (0x40 in hex). If it's higher than 7, but equal to or lower than 64 the Pokemon's uncommon palette would be loaded instead. If it's higher than 64 the Pokemon's standard palette is loaded.

    This would mean creating another set of palettes for each Pokemon but I can see this being a popular feature. Perhaps if it were developed a community effort could get a new set of palettes completed pretty quickly. I'm not too great with ASM but can make a start on a new routine, if anyone a little more knowledgeable than me could help me out or give some input it would be greatly appreciated.

    Thank you!
     
    Back
    Top