Luster
Form changing script (HINT)
- 29
- Posts
- 15
- Years
- In a skip behind Lidl.
- Seen Jan 10, 2017
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!
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!