- Pokémon shapes are now dumped
- Machines were being dumped slightly out of order; they are now correct
- Item price is now dumped correctly
- Identifiers are now computed to match veekun for all Pokémon
- Several bugs with evolutions were fixed
- Shedinja is now special-cased, alas
- Items are now loaded into the db
- Pokémon are now loaded into the db, mostly correctly
Unfortunately it may not make any practical difference, since a
compressed PC file still needs to be fully decompressed just to check
the magic numbers of its subfiles. May revert this later, I dunno.
Specifically:
- Add support for detecting FLIM format
- Add support for more color formats
- Add a small decoded image type that knows how to write itself out as
a PNG
- Improve ETC1 decoder to work with images whose dimensions are not
powers of two, images with no alpha channel, and images with the
strange FLIM pixel order
- Port the gen 6/7 extractor to Construct 2.8
- Switch to using script tags in language names, to distinguish Japanese
kana from kanji and Simplified from Traditional Chinese
- Drop the load-time merging of kanji and kana
- Add paths to various text files in SUMO
- Add form names for SUMO Pokémon
- Clean up identifiers a bit, especially the distinction between species
and Pokémon
- Use the Pokémon schema type to dump what we have so far, and give it a
couple more fields that didn't exist in gen 1
- Get movesets dumping correctly
- Special-case a bunch of weirdness, where the number of dex sprites
doesn't match the number of models in SUMO
The bulk of the data is in the same format as ORAS, so most of the
changes were just tracking down where files moved to.
The code was a mess, and is still a mess. Oh, well.
- Made pretty good progress on dumping ORAS encounters; remaining work
largely boils down to figuring out names for individual zones.
- Hacked the CLIM decoder to also work with SUMO's slightly modified box
sprite format, FLIM.
- Added a Nintendo-flavored ETC1 decoder; this is the format used for
Pokédex sprites in SUMO.
- Cleaned up sprite dumping a wee bit.
The previous approach was moving towards having each attribute on a
locus do multiple different things, depending on context, and I think
that was headed towards being a mess.
This idea is to have actual locus objects be dumb containers, and have
various wrappers that call methods on the attributes to do interesting
work.
Box sprites are now ripped paletted, complete with an sBIT chunk. Box
sprites are also saved with the right form names. A lot of
name-mangling and error-checking code was pulled out of the binary
parsing stuff and shared between both types of sprites.
Apparently the latest markdown no longer works against py2.6; Travis
fails on trying to import importlib. I added a dependency on the PyPI
backport to see if that helps for now.