There would be a way to shuffle around the sprite data at runtime, although that would result in unnecessary code bloating. The best thing to do is to just change the hex code yourself.
How many 24x24 sprites do you have? If it's only a few, you can probably just rearrange it manually. Alternatively, if you post the hex here, I'm sure someone can help you out with rearranging the hex. I would certainly try to help.
EDIT: If you have bitmaps of the sprites, those would probably provide the easiest way to convert the sprite into multiple 8x8 sprites.
EDIT 2: If you would rather shuffle around the sprite data at runtime, I wrote a routine to do this. The following code will take a 24x24 sprite at
Pic1, form its equivalent 8x8 sprites at
L₁, and then copy these back to
Pic1. The resulting 9 sprites will occur in this order:
- Top-left
- Middle-left
- Bottom-left
- Top-center
- Middle-center
- Bottom-center
- Top-right
- Middle-right
- Bottom-right
Pic1-3→P
L₁-1→O
3+1
While -1→A
24+1
While -1→B
{P+3→P}→{O+1→O}
B
End
P-72+1→P
A
End
conj(L₁,Pic1,72)
The routine is 99 bytes. Although it isn't too large, I myself would pre-rearrange the data and avoid the need for it.