Two days ago, I tried to make Gaspar appear separately. It's somewhat connected to the palette thing. Starting at 7E1800, there are $40 byte groups with information on the PC menu sprites. The thing I changed to make the 8th character show in the menu tells it when to stop creating those groups. Gaspar's sprite information get stored starting at 7E19C0, which is where the 8th character's data is placed.
$C2/CA9F F4 C0 19 PEA $19C0 [$7E:19C0] A:FFFF X:9618 Y:9598 P:envMxdizC
$C2/CAA2 2B PLD A:FFFF X:9618 Y:9598 P:envMxdizC
This sets up where to place Gaspar's sprite. I changed this to 1A00.
$C2/F691 C9 40 1A CMP #$1A40 A:18C0 X:0008 Y:0010 P:envmXdizc
This is part of the code that updates the screen (I think). I changed this to 1A80.
This got a seperate sprite to appear, but didn't solve it completely. That value that tells it where to store the palette is somehow also involved with the actual graphics, and the 8th character and Gaspar were sharing the same value.
$C2/F403 AF 56 F5 C2 LDA $C2F556[$C2:F556] A:19C0 X:0090 Y:0070 P:envmXdIZC
This seems to load it for Gaspar's sprite.
Also, I noticed that when you select a character in the tech screen, it copies part of the character's data over the 8th character's sprite information in memory.
Of course, this stuff is probably just minor visual details compared to the other problems.
Edit-Fixed a typo.