JPAN, I've got a problem here:
Using your "change Pokémon species special", I successfully changed the species of Pokémon that the player had. But when I went into the status screen, the game crashed on a black screen. The thing is, after going into battle with it (successfully, no errors) and gaining some Exp., the status screen is again viewable.
I warned about this when I first created the code, but it seems I forgot to add the disclaimer to the manual. Change pokemon species should only be used with pokemon that share the same experience curve. The reason the game crashes when you try to see the status screen is because the pokemon should already be at the next level, and has negative amount of experience until it reaches. That would make the blue bar on the bottom circle around the screen infinitely (if you're lucky, some experience differences can cause you to see it without crashing). This bug first appeared with the experience adding, but because I had no information about leveling up (the algorithm to level up a pokemon is still unknown to me), i couldn't make a decent level-up code. When you go into battle, the game calculates your level and experience based on the current species, and corrects the bug. For now, I have no fix other than ask you to only use the code with pokemon that share the same experience curve.
JPAN I used the Specials 0x52 to the 0x55, and found a problem.
When we use the 0x52 or 0x54 to put a status on any of the pokemon (example: SLEEP), and when we use the 0x53 and 0x55 to "turn off" the special, everything is fine.
But .. when we catch the pokemon in question, it comes with with POISON status.
The status code 0x54 is more of a "dumb" version of the 0x52 code. I created it to simplify trainer battles. It has several bugs that can be avoided with the use of 0x52. The status inducing specials use the game main status manager to replace the previous status with a new one. The game uses 5-7 times to manage a pokemon creation for battle, plus 2-3 for each other pokemon to create (trainer case). 0x52 counts those turns, and deactivates itself after the x time you gave it (usually 7). but 0x54 does not. That means any status is replaced by the code, even the ones induced with healing items and the like.
So, any bugs found with 0x54 will not be addressed. 0x54 is buggy by its nature.
If the POISON was caused by 0x54, change specials. If it happens with 0x52, then try different timers. 7 is the average, but 8 shouldn't be a problem. I myself tried with 0x52 several pokemon battles (activating with a level script, a walking script and even an item script), and in several roms, and the result seemed to be the same. Catching a pokemon was not affected (except for too high numbers on 0x8005, like 0xF) by the status inducer.
When the routine is started, and the wild pokemon appearing on this being affected by it. Sometimes the status is only in Battlebox, but the pokemon in question is not suffering the damage status.
Example: A pokemon with SLEEP.
Sometimes the animation of Z (ZzZzZ. ..) does not appear, and the pokemon attacks us as if its status was normal.
This problem is similar to the one above. It seems your game likes to generate pokemon with a higher number of status passes than usual. Try upping the counter a bit (9 tops) and check again. What is happening is that the status on the box and the one the pokemon has are calculated sperately (box is the 2-3 pass, pokemon actual status is the last).
On a separate note, I had to be away for a few days, so I did little work on the berry project until tonight. But until now the outlook looks good. I have successfully managed to make a "people tree" that cycles its look from hero, to hero bike to little kid to heroine, in 15 minutes. Longer tests are required, but the game is processing well the large time differences (up to 12 months difference in time), small intervals (minute updates) and graphic display (although the "tree" will not change until the OW is refreshed, be it through menu or moving to other map/loading zone).