Alright, here we go...
How to change Imp into ShadowThe first thing to know is that there really are very few similarities between how enemy monster sprites are arranged and how summoned monster sprites are arranged.
Enemy monsters are given a defined rectangle, then the sprites are filled in either in order or out of order, and with or without empty spaces, as specified.
There's an extra step for summoned monsters. Summoned monsters are assigned a rectangular space, then are assigned an arrangement of 2-sprite x 2-sprite tiles (in or out of order, and some of which can themselves be empty spaces as specified),
then those tiles are filled in with sprites and/or empty spaces in order or out of order as specified.
So Imp's image is first defined as an arrangement of tiles within a given rectangle - specifically, a "2x2" rectangle (that's 2-tiles x 2-tiles, not sprites), which looks like this:

Then, within those tiles, a sprite arrangement is specified:

A few points worth mentioning here.
Notice that these arrangements all seem to work in reverse order. This is related to the fact that a summon's image is inverted over the y-axis (because it's on your side, not the enemy's). When visualizing your summon image, it may help to imagine what it would look like if you were attacked from behind - or if you were fighting against it.
In the game's original programming, all Summon image tiles are numbered with ones and tens places as multiples of 2. The enumeration of the tile tells the game where to display the sprites in a sprite arrangement. Sprite 00 will always appear in the top right corner (unless back-attacked) of tile 00. If there is no tile 00, sprite 00 will not appear. Tile XY will always contain sprites XY, XY+1, X+1Y, and X+1Y+1.
There is no restriction, by the way, that says "the top row of tiles must only be numbered 0x, the second row must be numbered 2x, etc."
Hypothetically, Imp's tiles could be arranged like this:

The resulting summon would appear like so:

This is important to know when creating larger summon images, because sprites in a summon image can only be numbered 00-7F. Anything 80 or higher will represent an empty space in the place of itself minus 80.
The application is - when you're trying to summon a monster that's taller than 8 sprites (as Shadow is), you'll need to do something like putting tiles numbered 0x in the second row as well as the first.
One more topic to cover in the information download before we get into how to use all of this: Empty spaces. As previously stated, both tiles and sprites can be designated as empty spaces. To make an empty sprite, add 80 to the value of the sprite you want to make empty. It's very important to note, though, that doing this will
not just skip over that sprite. What it will do is essentially skip a space
and push all sprites forward by one.
So,

Would appear as:

This has to do with how the game loads sprites to display. The sprite arrangement data tells the game, "put the first sprite here, the second sprite there, the third there..." and all of those places are defined spaces within the tiles.
The grid above tells the game, "Put the first sprite in the first spot, the second sprite in the second spot, an empty space in the third spot, the third sprite in the
fourth spot..."
In order to get this:

(with an empty space that does
not push the rest of the sprites forward), you'd have to specify in your sprite arrangement that the third sprite be placed in an
unused location (I used 40), then stick an 82 at the end, after all sixteen sprites were assigned.
Now, just as a sprite arrangement can contain empty sprites, a tile arrangement can contain empty tiles, as well. This is a bit easier to visualize than empty sprites. An empty tile does not push the rest of the tiles forward - It simply puts an empty space where a tile would normally be. This is used quite a bit for summoned monsters that don't fill a rectangular area as a space saver (and for animated summons, as a way to conserve valuable tiles and sprites for multiple images). To place an empty tile, simply use FF.
A tile arrangement that looks like this:

Will yield a summon that looks like this:

It should also be mentioned that placing FE in a tile arrangement has it's own distinct effect. An FE tile tells the game to stop displaying all subsequent tiles.
So

will appear like this:

I'm not sure why this exists, or how I stumbled upon it, to be honest. It's never used in the original programming. I guess if you wanted to make a custom animated summon that starts as a TinyToad and turns into a ToadLady, or something like that, this would save you some tiles and sprites. Nice to know, I guess... We won't be doing anything that complicated here, but feel free to experiment.
The last thing I should probably explain here is how all of this arranging actually works in ROM. Obviously, you aren't drawing little spreadsheet files in your hex editor. The images in this tutorial are displayed as such because that is how
I need to arrange them visually in order to easily write them out in my hex editor. If you can do this all without these steps, well, have fun saving the humans from the Matrix, Neo.
When planning a rectangular monster's image for summoning, the first step I take is to plot out where I need sprites in a Notepad file. So for Imp:
XXXX
XXXX
XXXX
XXXXThen, I figure out how those sprites will fit into a tile arrangement. Easy enough in this case:

Now to write this out, we simply write these bytes out as they appear, left to right and top to bottom:
02 00 22 20As with Special size tile arrangements (finally, a similarity!), you don't need to specify when to start a new row, or when to stop, because you're working in an already-defined rectangular space. Since the summon image is defined as 2x2 tiles, the game will go to the second row after the second tile, and will stop displaying tiles after the fourth.
Once you've figured out how your tiles will be arranged, this will pretty much dictate how your sprites will be arranged - as long as you're working with a standard rectangular monster (a
non-Special size) and not animating. I haven't (yet?) learned how to control summon animations, so that's a big yes-and-yes in this tutorial.
The tile arrangement above will always result in this sprite arrangement:

This, however, will be written
right to left and top to bottom, so:
00 01 02 03 10 11 12 13-20 21 22 23 30 31 32 33
FFI'm not sure if the FF at the end is
needed, by the way, but it's always used, so I've never tried not to.
That's all for today. Practical application will be next (actually making Shadow). That will be a new post.
If anybody who's following this needs any clarification on anything that's been written so far, please let me know. I know this seems rather complicated, but it's actually easier than I think I'm making it sound.
Knowing how long this will take, there's no sense in me withholding data locations, so:
9FC59: table of summons' x-position, y-position, width, height (4 Bytes per summon)
6F860: Pointers for tile arrangement data (reverse order and add to 60200), one per summon image (so Shiva has two, etc)
6F89A: Tile arrangement data
6F460: Pointers for sprite arrangement data (reverse, add to 60200), one per summon (so Shiva only has one)
6f482: Sprite arrangement data
689F0: Pointers to summoned monster sprites (to find where to find them in Tile Layer, that is - again, reverse, add to 60200)