Awesome work. This is hands down the best hack I've ever played. Incredibly nostalgic, thorough, and most importantly fun.
Good to hear that, thanks!
When trying to catch Mew or Celebi (or any pokemon with the move transform), if that pokemon uses transform in battle, regardless of what pokemon it transforms into, you receive a Ditto in your PC. I noticed this when I was battling Celebi. It transformed into the flying Pikachu from my team, I caught it, and when I went to get Celebi a Ditto had taken its place.
Mew is the only other Pokémon that actually learns Transform, and I special-cased it to be captured properly. I guess Celebi's Metronome turned into Transform; I've fixed that so it's impossible.
In regards to the battle tower, can you buff up the rewards? So far I've done four run throughs in a row without losing and have received three different kinds of mail and a couple of full heals. Can you give out better items like additional leftovers or a lucky egg to boost the exp received?
Mail and Full Heals? You should be receiving five of a random vitamin (HP Up, Protein, Iron, Carbos, Calcium)...
(I know that's not the most interesting reward, in future I may implement a point system where you can trade points for more items.)
After you complete the rematch, the next battle is Red, and then Green. Their pokemon's levels are way higher than what the level curve provides. The game naturally got my team to the lower to mid 80s in level, not nearly enough to battle Red or Green. Therefore, is there any way you can add more gameplay after beating the elite four for the second time?
Yeah, that's on purpose. As the final challenges, they're meant to require preparation. If you barely managed to defeat the Elite 4, then you're not ready to battle the real champions.
To prepare, you can keep battling the Elite 4, visit the Fighting Dojo and rematch the Gym Leaders, or grind against the wild Pokémon in Mt. Silver. There are also the legendary Pokémon to catch; Seafoam Islands, Cinnabar Volcano, and Cerulean Cave all have pretty high-leveled Pokémon, though not as high as Mt. Silver.
I was messing with Natures yesterday and I think it wouldn't be too hard to implement. However, I'm not sure if I'm picking the best method to randomize nature. Currently, my implementation uses the Attack+Defense DV byte mod 25. I intend to look into what this results in and potentially swap/xor the byte beforehand to give more sensical values for higher DVs (things like, ensuring that 15 Attack DV is certain to give all possible +Attack natures, and vice versa for Defense), but is there a better way I can do this?
The way the implementation is done atm also means that 6 natures appear 11 times, the other 19 appear 10, but I think this is a minor issue myself.
Cool, you're working on Natures? I eventually wanted to add another byte of Pokémon data, with five bits for Nature, one for gender, one for shiny, and one extra (maybe to toggle between two possible Abilities). Cons: this would break old saves, and would require a lot of testing to make sure things like the PC and Day-Care aren't broken.
I was also considering replacing one of the Poké Seer's CaughtData bytes, but now that they're used for the fourth stats page I'd rather not give them up. (Even though the caught level is limited to 0–63.)
(Actually, long-term plans, FroggestSpirit is starting to
rewrite the whole data structure, including 2-byte IDs, separate Sp.Atk and Sp.Def DVs, and new-style EVs that take up less space than old stat experience.)
I like the idea of mapping DVs to Natures so that they're paired beneficially. You could look at the min and max DVs and pick whichever Nature lowers and raises those stats, with neutral Natures for ties.
Or if you go with some kind of xor+mod strategy: using 5 bits to pick from 25 Natures has a remainder of 7, but using 7 bits to pick from 25×5 Natures has a remainder of 3. Maybe xor the DVs together, ignore the high bit, shuffle the bits if it helps (simplest would be to swap the nibbles with "swap"), and divide by 5 for a 0–24 Nature ID (if you get 25 from one of those three remainders, just call it Quirky).
Thank you very much for helping to develop this game, by the way. I'm glad that other programmers are interested in it. And you clearly put effort into the small details, and test well enough that I can merge a pull request and it "just works".