So, now that we know how Special sizes work, time to make them work for us.
Here is how I turned Imp into Jinn...
Imp has the first entry in the enemy graphic properties table at 7CC00.
By default, Imp's data reads:
01 00 03 C1
First thing we want to focus on is the last two bytes, the graphical pointer.
Imp's Graphical pointer is 03 C1, or C103. The formula to use is ([pointer] * 8) + 8200 = Beginning of graphical data.
so
C103 * 8 + 8200 = 60818 + 8200 = 68A18 This is the beginning of Imp's graphic
Jinn's graphic starts at 69E40 (found by using Tile Layer)
so
69E40 - 8200 = 61C40
61C40 / 8 = C388 This is Jinn's Graphic pointer (written as 88 C3)
So now we have 01 00 88 C3
As previously stated, The palette (second byte) means nothing when employing a Special size, so we can ignore that entirely.
The next (recommended) step is to use Tile Layer to lay out Jinn's sprites. This will serve two purposes:
1) we will know how large of a rectangular area we need to use
2) we will be better able to visualize what we need to do with sprite arrangement
So, doing this, we see that Jinn requires an 8x6 rectangle.
(Keep Tile Layer open in the background. We'll be referring back to this arrangement later.)
It's recommended to use a Special size that is already 8x6 or larger. While we can customize the size of the rectangle easily, we have a finite amount of data to work with for sprite arrangement (unless we change the pointer to change the location of the sprite arrangement data - which is possible, but more trouble than it's worth). For this hack, I decided to use D. Mist's size (80; also 81, but more on that later).
We know the details for Special size 80 are at 7D000, and are 35 91 A1 02 00.
First thing to do is to change to the right palette (third byte).
I want to be sure Jinn uses the correct palette. Summoned monsters' palette assignments are located at 7004C. Count along this list until we get to the 8th byte (Jinn is the 8th summon): D0. This is what we will set for the third byte of our special size details. so now we have:
35 91 D0 02 00
We
could change the 5th byte in order to assign a different set of sprite arrangement data, but again, more trouble than it's probably worth. We'll keep that at 00.
The last thing to do here is to change the size assignment. As previously detailed, this Special size uses the 11th (hex) size in the size table, 0A 08. This is a bigger rectangle than we need. Two options here: either change 0A 08 to 08 06, or point to a different location in the size table. The latter is the wiser idea, because this will leave 0A 08 available for other monsters' needs. Because this was my first try at it and I didn't know everything yet, I chose the first option. I used the second (wiser) option for Indra and Shiva. I'll go into that a bit when this is over.
So now we have the right size, palette and sprites for Jinn. Last thing (sorta) to do is to create the right sprite arrangement. So, as noted in the previous post, size 80 uses the first sprite arrangement pointer 72 CF. We add CF72 to 68200 to get to the location of the sprite arrangement data: 75172.
Remember we left Tile Layer open with our arranged sprites? Bring it back up. It's a good idea to have Tile Layer and your Hex editor up side-by-side for this. The good news is, unlike D. Mist, Jinn's sprites all appear in the proper order, so when we don't have blank spaces, we can just count up. This is mostly true for Indra and Shiva, too, but not entirely. I'll explain what I mean by that in a later post.
We
could, to make things easier, open up a notepad to make this whole process a bit easier to visualize. We know from our arrangement in Tile Layer that Jinn needs to look like this:
--XXXXX-
-XXXXXXX
-XXXXXXX
-XXXXXXX
XXXXXXXX
XXXXXXX-So in order to make the arranging easy in my hex editor, I typed that out without any line breaks:
--XXXXX--XXXXXXX-XXXXXXX-XXXXXXXXXXXXXXXXXXXXXX-For me, this saved me a bit of thinking when writing the arrangement data. Anyway, whether you need to use that step or not, the end result will look like:
-- -- FE 02 00 01 02 03-04 FE 02 05 06 07 08 09
0A 0B FF 0C 0D 0E 0F 10-11 12 FF 13 14 15 16 17
18 19 1A 1B 1C 1D 1E 1F-20 21 22 23 24 25 26 27
28 FFD. Mist's original arrangement will continue for a bit after this, but you don't have to worry about that. You've programmed in 48 sprites and spaces to fill your 8x6, so the game will stop looking after that.
So now we have a fully altered monster - Imp looks like Jinn. But why stop there? The GFX team went through the trouble of programming in two beautiful images for each of the three elemental summons, but we only get to see them for very brief periods at a time. Furthermore, Special-sized enemies can change their image mid-battle - so let's do it!
Most of this process will be the same as above, so I'll try to be brief.
We're going to use D. Mist's "Mist" form for this one (we've already used one formation, so we might as well use its partner). That's Special size 81 (I documented these all
here, by the way), which is at 7D005 and reads:
05 9E A1 02 01
The second form will always use the same palette as the first for summoned monsters (summons load only one palette), so we'll change A1 to D0.
We're going to make a change to the first byte here. Notice that for size 80, it's 35, but for size 81 it's 05. If we keep it this way, Jinn will move backwards a bit when he changes shape. So change the 05 to 35 and this won't happen.
Now, here's where my novice was showing again. The second byte, 9E, refers to a different size than that of Size 80. The wise thing to do would be to make this value the same as before, as the second form of Jinn is also 8x6. I didn't do that - I changed THIS size to 08 06 (from 11 08). Fine for this hack, which doesn't allow the player to see more than a few monsters, but for larger scale operations, change the second byte from 9E to 86 to use the already existing 8x6.
So now at 7D005 you'll have:
35 86 D0 02 01
We're done making changes here. On to arranging Jinn #2's sprites.
Size 81 uses the second sprite arrangement pointer, which is at 75102 and reads B4 CF.
Add CFB4 to 68200 to get 751B4. This is where we will start our sprite arrangement.
Same prep process as before, but remember - we're using the SAME bunch of sprites that were loaded for Jinn's first image. Since none of them are repeats from before (which is in contrast to what happens with Shiva and Indra), the first sprite in this arrangement will be the one after the last sprite from the previous arrangement.
In other words, Jinn #1
ended at 28, so Jinn #2 will
begin at 29.
The end result will be:
-- -- -- -- FE 02 29 2A-2B 2C 2D FE 03 2E 2F 30
31 32 33 34 35 36 37 38-39 3A 3B 3C 3D 3E 3F 40
41 42 43 44 45 46 47 48-49 4A 4B 4C 4D 4E 4F 50
51 52 53So now we've "drawn" Jinn #2. Only thing left is to change the AI so that Jinn #1 changes into Jinn #2.
Remember I said that only Special-sized monsters can change shape? Well that bit of info provides a key here. You'll notice that when a monster changes image (as originally programmed), the game says (translated into plain English) "Change sprite to 01," or whatever. Well, since Special sizes start at 80, add 80 to this command to know which Special size you are changing to (or contrapositively, subtract 80 from your Special size to know how to script the transition).
So, to make Jinn turn into form #2, "Change sprite to 01."
To make him change back to form #1, "Change sprite to 00."
(If you wanted to make Jinn change to Special size A7, "Change sprite to 27," or "39" in base 10)
I'm assuming, by the way, that you're using Ff4kster to rewrite AI. If you're reading this and you are serious about hacking FF2US and you've never used Ff4kster... well...
Get Ff4kster.
I chose to chain together the form change and the attack spell. My original plan was to chain "Form change-attack spell-revert" all together, but it seems that if the last part of the chain is not an attack, then the attacks in the chain will not cause damage. Weird. So instead I increased the monster's speed and made the revert its next action.
So that's it for today. Next up is the marginally different process for Shiva and Indra. It will be a significantly shorter post. Then we'll get into changing Summoned monsters' images, which is enormously complicated to explain and will probably be the longest tutorial in this thread.

Sorry it's taken me so long to follow up. Real life's been a bit busy, and in the off time I became semi-obsessed (again) with a hacking experiment that's not really going as well as I'd hoped. I'll finish the Special sizes tutorial tonight or tomorrow, then will get into summoned monster images very soon. Promise.