So I figured out a new technique for reducing the size of CSPs substantially, and it'd be nice if BrawlBox could be updated to support it.
It's desirable to store CSPs in CI8 format, but limitations on the compressed size of common5.pac make that impossible if there are too many characters and costumes. However, many costumes are just recolors. Since we want to store them in a format that separates the main image data and the palette, it'd be nice to store just one copy of the main image data and then a palette for each recolor.
In testing, I've found this is possible - each TEX0 does require its own header, in order to point to its name, but it is possible to put, for example, 9 TEX0 headers in a row, followed by their data, as long as each header has its length changed to include all the following headers. (So with 9 the first has length 0x240, the second 0x200, and so on, until the last is just the standard 0x40.)
I've done a proof-of-concept test, available
here. To see it, just import that BRRES over sc_selcharacter_en > char_bust_tex_lz77 > MiscData[17], and change the compression to ExtendedLZ77 (or just LZ77). It's the Smash 3 textures for Mr. Game & Watch, but note that while they all share the same image data I did not rearrange the palettes so that would actually work well.
So there's obviously a lot of work to get this to a place where it's easy to use. I'm wondering, in particular, what the interface in BrawlBox should be. One possibility, for minimal support, is just having an option on a BRRES to compact it, where it just goes through and looks for identical textures and merges them if found, relying on other tools to create textures that will work with that.
More thorough support might be having an option to import multiple images at once, ideally including doing the quantization with all of them together, to make image data that works as well as possible with each of the palettes. Not sure how the UI would work for that, though.
My current plan is to work on some simple tools in Ruby for doing much of this (as I find that more enjoyable to work in, particularly when experimenting on things). As I've been looking into quantization algorithms, I'm hoping to at some point add another algorithm to BrawlBox, whether or not it includes support for multiple images at once.