I would have loved a Dissidia-esque system of switching between Dark Knight and Paladin on the fly, and there may be just a possibility... the game can instantly change the sprite of a character to a Pig, Mini, or Toad on any occasion, then why can't it switch between classes? Especially considering that Pig is a full sprite sheet. I think if we look at how Pig works, we may yet be able to switch sprites on the given. (FFX-2 Dress Spheres, anyone?)
...Alright, I've done a bit of preliminary work and I can say that this idea will work, observe!
(Pig Dealings)
$02/BFA4 BD 03 20 LDA $2003,x[$7E:2003] A:0000 X:0000 Y:0000 P:envMxdiZc - Load Character's Status Byte 1.
$02/BFA7 29 08 AND #$08 A:0008 X:0000 Y:0000 P:envMxdizc - Is it Pig?
$02/BFA9 F0 0B BEQ $0B [$BFB6] A:0008 X:0000 Y:0000 P:envMxdizc - Branch if not.
$02/BFAB B9 35 F2 LDA $F235,y[$7E:F235] A:0008 X:0000 Y:0000 P:envMxdizc - Load Character's (Internal Sprite).
$02/BFAE C9 0E CMP #$0E A:0008 X:0000 Y:0000 P:envMxdizc - Is it Pig?
$02/BFB0 F0 2D BEQ $2D [$BFDF] A:0008 X:0000 Y:0000 P:eNvMxdizc - If so, branch.
$02/BFB2 A9 0E LDA #$0E A:0008 X:0000 Y:0000 P:eNvMxdizc - Load Character 0E (That green pig...) into A.
$02/BFB4 80 0C BRA $0C [$BFC2] A:0000 X:0000 Y:0000 P:envMxdiZc - Branch always.
$02/BFC2 99 35 F2 STA $F235,y[$7E:F235] A:0000 X:0000 Y:0000 P:envMxdiZc - Store Pig Graphic into Internal Sprite.
Creating a Custom Routine which does this (as well as using the proper character palette...) shouldn't be too difficult, the issue however is that the game only looks at this in a specific fashion, which I haven't been able to pinpoint, otherwise it would be as easy as just changing 7EF235, but its not. It has to be done in a routine-esque fashion.
But for now we'll assume that we can manipulate it... Yes, we can.
This particular line of code is looked at whenever Any action is taken, if we create a Jump in there that looks beyond Pig Status, we can create a Command that will allow Cecil to transform into a Dark Knight and vice-versa.
First off, we need to highjack the code
Turn the Look for Pig into a JSL
While in this it will first look for Pig and Jump Long back to the normal code if Pig is indeed inflicted.
Otherwise it will look to see what Character Action has been taken.
If it is Dark Wave (for my testing purpose, the final version and the one you could use will be replacing Cid's Crash the game Command
If it is Dark Knight Cecil change the Sprite/Class/Palette to 09 (Paladin Cecil). And change the Character Actor to 0A (Assuming you're using the Shadow Mod)
If it is Paladin Cecil change the Sprite/Class/Palette to 00. And change Character Actor to 01.
This is easily possible, but without my Custom Event Routine, that looks at flags to decide what the next action to skip or play is, you could have a lot of trouble. For your case though you would only need to add an exception for "Is it Dark Knight Cecil?" I can probably go ahead and toss an event flag into the Switch Routine to make this work easier for you.
And I have it just about done, but I will need to throw another matter on top of this... Using the Command alone keeps the command in that character's Data and can cause problems, so I'll throw an exception for that into the routine as well.
However, this is taking more time than I thought. While I have the basics done, it just needs fine tuning. I have the character transformation working fine, but then I need to load their commands into their command area, which is trickier. It may be best at that rate to create a duplicate of the normal way commands are placed at the start of battle, except for only the Dark Knight and Paladin when they switch. I can at least show you this though...
Though if you're fine with the Cecils having their original commands (Dark Wave if the battle was started as Dark Knight Cecil and Cover for the Paladin). Then it is done already.

