Author Topic: Developing FF4kster: a comprehensive editor for FF4  (Read 235895 times)

Pinkpuff

  • Flan Princess
  • *
  • Posts: 923
  • Find a Megalixir in Unprecedented Crisis!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #330 on: March 28, 2013, 05:13:00 AM »
How do I go about adding Golbez back to that battle? Please tell me that I don't have to start all over--I've invested far, far too much work in this project to restart now...!

I keep warning people... the editor is not reliable yet and not to do anything important with it...

The only way I know of to easily and correctly fix the Golbez issue is to start with a fresh rom. But if you don't mind using a hack-ish workaround, you could go into the event editor, and find the event for the final sequence, and remove the line that tells it to enter that battle. Golbez and FuSoYa would just collapse without any explanation, but at least the game wouldn't freeze.
Let's dance!

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,234
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #331 on: March 28, 2013, 09:47:11 AM »
Vivify:
There might not be a quick fix for you, because as far as I know, nobody has discovered yet how to edit the characters that participate in story-driven autobattles (like this one, the tellah-edward battle, tellah-golbez, etc.)

Best thing might be to get a clean ROM and copy/paste all of the information you've changed. Everything  ff4kster does edits a documented set of data in the game.
So, for example, if you've done extensive event editing, copy the event pointers(90200-903FF) and event data (90400-96882) from your edited ROM to the clean file.
It'll still take some time, but will presumably be quicker than rewriting every change you've made.
I'd recommend using Cygnus hex editor for this process. It allows you to open up two ROMs side-by-side, which makes copy/paste from one ROM to another a pretty painless process. Maybe other hex editors will work just as well, but I can vouch for Cygnus.

 :edit:To clarify, I would only use this method to copy events, levelup data, and dialogue banks. Everything else would probably be quicker to redo right on ff4kster.
« Last Edit: March 28, 2013, 03:31:15 PM by chillyfeez »

vivify93

  • Liquid Flame
  • *
  • Posts: 303
  • Gender: Male
  • White Wizard
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #332 on: March 28, 2013, 05:46:40 PM »
I see. Thank you for your prognosis, doctors. I guess I'll just start fresh, someday.
Hacking is hard. :sad:

Pinkpuff

  • Flan Princess
  • *
  • Posts: 923
  • Find a Megalixir in Unprecedented Crisis!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #333 on: March 29, 2013, 07:12:00 AM »
Another hack that might be worth trying out Vivify (not sure if this will work or not so make a backup!):

The offending code had to do with Golbez' character data, so try copying the data from a fresh rom from address 7ACA0 to 7ACBF into your hacked rom into the same address range. If I did my math right that should fix it and you won't have to redo anything.
Let's dance!

vivify93

  • Liquid Flame
  • *
  • Posts: 303
  • Gender: Male
  • White Wizard
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #334 on: March 30, 2013, 03:19:46 PM »
That did it! Golbez is now back in the game. :childish: Thank you very much, Pinkpuff!
Hacking is hard. :sad:

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,682
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #335 on: April 09, 2013, 01:08:07 PM »
How goes the monster editing portion PinkPuff? It's been a little bit of time since an update and just wanted to know if you needed any help or any such matter.

Pinkpuff

  • Flan Princess
  • *
  • Posts: 923
  • Find a Megalixir in Unprecedented Crisis!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #336 on: April 09, 2013, 02:28:30 PM »
Actually, I'm glad you offered...

It has been a while, and I do need some help. I implemented a routine for reading in monster AIs. However, it's clearly doing something wrong, as the output it displays makes no sense. However, the fact that I don't really know what it should look like (though I know this definitely isn't it!), combined with the complexity of the way the monster AIs are stored makes it very difficult for me to pinpoint what is being done wrong. Normally in such a situation I'd look into the hex data and manually trace through the process for a few example monsters. However, I'm not 100% on the description of the way it's stored and I wouldn't know if the results I got were correct, even doing it manually.

If someone does have a thorough understanding of the monster AIs and can maybe give a more clear or more detailed description than are in the Bab-Il docs, (preferably with a couple of examples from the actual hex code if possible), that would be a huge help and I'd be able to get back in business.

In the meantime, I distracted myself by making this
Let's dance!

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,682
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #337 on: April 10, 2013, 10:37:11 AM »
Ah, AI is the sticking point... have you tried contacting Deathlike2? He is an expert when it comes to FFIV AI. Also have you tried corresponding your results to other editors that also claim to edit AI? There's a lot of quizzical things in there as well.

Dragonsbrethren

  • Forum Overlord
  • *
  • Posts: 1,820
    • View Profile
    • Dragonsbrethren Industries
Re: Developing a comprehensive editor for FF4
« Reply #338 on: April 10, 2013, 05:50:35 PM »
I actually wrote, of all things, a Cartographer command file that can dump sequences. (The actual sequences, not conditionals.) They can be inserted by Altas. :omghax:

Code: [Select]
#GAME NAME: Final Fantasy II

#BLOCK NAME: Normal Attack Sequences
#TYPE: NORMAL
#METHOD: RAW
#SCRIPT START: $76900
#SCRIPT STOP: $771FF
#TABLE: sequence.tbl
#COMMENTS:              No
#END BLOCK

#BLOCK NAME: Lunar Subterrain Attack Sequences
#TYPE: NORMAL
#METHOD: RAW
#SCRIPT START: $736C0
#SCRIPT STOP: $73ACF
#TABLE: sequence.tbl
#COMMENTS:              No
#END BLOCK

Code: (sequence.tbl) [Select]
01=Hold\n\n
02=Mute\n\n
03=Charm\n\n
04=Blink\n\n
05=Armor\n\n
06=Shell\n\n
07=Slow\n\n
08=Fast\n\n
09=Bersk\n\n
0A=Wall\n\n
0B=White\n\n
0C=Dispel\n\n
0D=Peep\n\n
0E=Cure1\n\n
0F=Cure2\n\n
10=Cure3\n\n
11=Cure4\n\n
12=Heal\n\n
13=Life1\n\n
14=Life2\n\n
15=Size\n\n
16=Exit\n\n
17=Sight\n\n
18=Float\n\n
19=Toad\n\n
1A=Piggy\n\n
1B=Warp\n\n
1C=Venom\n\n
1D=Fire1\n\n
1E=Fire2\n\n
1F=Fire3\n\n
20=Ice-1\n\n
21=Ice-2\n\n
22=Ice-3\n\n
23=Lit-1\n\n
24=Lit-2\n\n
25=Lit-3\n\n
26=Virus\n\n
27=Weak\n\n
28=Quake\n\n
29=Sleep\n\n
2A=Stone\n\n
2B=Fatal\n\n
2C=Stop\n\n
2D=Drain\n\n
2E=Psych\n\n
2F=Meteo\n\n
30=Nuke\n\n
5F=$5F-Dummy\n\n
60=$60-Dummy\n\n
61=Gaze\n\n
62=Bluster\n\n
63=Slap\n\n
64=Powder\n\n
65=Glance\n\n
66=$66-Charm\n\n
67=Tongue\n\n
68=Curse\n\n
69=Ray\n\n
6A=Count\n\n
6B=Beak\n\n
6C=Petrify\n\n
6D=Blast\n\n
6E=Hug\n\n
6F=Breath\n\n
70=Whisper\n\n
71=Entangle\n\n
72=$72-Weak\n\n
73=Disrupt\n\n
74=ColdMist\n\n
75=Explode\n\n
76=DullSong\n\n
77=Hold Gas\n\n
78=Gas\n\n
79=Poison\n\n
7A=Maser\n\n
7B=Vanish\n\n
7C=Demolish\n\n
7D=Blk.Hole\n\n
7E=Dancing\n\n
7F=$7F-Disrupt\n\n
80=Storm\n\n
81=Magnet\n\n
82=Reaction\n\n
83=Hatch\n\n
84=Remedy\n\n
85=Absorb\n\n
86=Heal\n\n
87=Big Bang\n\n
88=Vampire\n\n
89=Digest\n\n
8A=Pollen\n\n
8B=Crush\n\n
8C=Alert\n\n
8D=Call\n\n
8E=$8E-Dummy\n\n
8F=$8F-Vanish\n\n
90=Search\n\n
91=Fission\n\n
92=Retreat\n\n
93=$93-Heal\n\n
94=Beam\n\n
95=Globe199\n\n
96=Fire\n\n
97=Blaze\n\n
98=$98-Blitz\n\n
99=Thunder\n\n
9A=D.Breath\n\n
9B=Big Wave\n\n
9C=Blizzard\n\n
9D=Wave\n\n
9E=Tornado\n\n
9F=Laser\n\n
A0=$A0-Explode\n\n
A1=$A1-Quake\n\n
A2=Emission\n\n
A3=Heat Ray\n\n
A4=Glare\n\n
A5=Odin\n\n
A6=MegaNuke\n\n
A7=Needle\n\n
A8=Counter\n\n
A9=(Increment invincibility counter)\n\n
AA=(Decrement invincibility counter)\n\n
AB=Recover\n\n
AC=Remedy\n\n
AD=(Suicide, bring in next monster)\n\n
AE=(End battle)\n\n
AF=$AF-Dummy\n\n
B0=<$B0>\n\n
B1=(Something happens to adult Rydia)\n\n
B2=<$B2>\n\n
B3=(Anna appears)\n\n
B4=(Edward/Tellah appear)\n\n
B5=(Palom/Porom appear)\n\n
B6=(Yang/Cid appear)\n\n
B7=(Golbez/FuSoYa appear)\n\n
B8=(Images disappear)\n\n
B9=<$B9>\n\n
BA=(Revive all enemies)\n\n
BB=(Zeromus shake)\n\n
BC=(Damage all allies 20)\n\n
BD=(Modify speed 248)\n\n
BE=(Restore all HP/MP)\n\n
BF=<$BF>\n\n
C0=Fight\n\n
C1=Item\n\n
C2=White-command\n\n
C3=Black\n\n
C4=Call-command\n\n
C5=Dark\n\n
C6=Jump\n\n
C7=Recall\n\n
C8=Sing\n\n
C9=Hide\n\n
CA=Heal-command\n\n
CB=Pray\n\n
CC=Aim\n\n
CD=Power\n\n
CE=Kick\n\n
CF=Bear\n\n
D0=Twin\n\n
D1=Bluff\n\n
D2=Cry\n\n
D3=Cover\n\n
D4=Peep-command\n\n
D5=Airship\n\n
D6=Dart\n\n
D7=Sneak\n\n
D8=Ninja\n\n
D9=Regen\n\n
E1=Do nothing\n\n
$E8=<Set type>,1
$E9=<Set attack>,1
$EA=<Set defense>,1
$EB=<Set magic defense>,1
$EC=<Modify speed>,1
$ED=<Set elemental defense>,1
$EE=<Set magic power>,1
$EF=<Set elemental weakness>,1
$F0=<Change gfx>,1
$F1=<Battle dialogue>,1
$F2=<Battle dialogue-suppress next attack name>,1
$F3=<Music>,1
$F4=<Set condition>,1
$F5=<Set reflex>,1
F900=Target ID 00\n\n
F901=Target DK Cecil\n\n
F902=Target Kain\n\n
F903=Target young Rydia\n\n
F904=Target Tellah\n\n
F905=Target Edward\n\n
F906=Target Rosa\n\n
F907=Target Yang\n\n
F908=Target Palom\n\n
F909=Target Porom\n\n
F90A=Target Tellah2\n\n
F90B=Target Cecil\n\n
F90C=Target Tellah3\n\n
F90D=Target Yang2\n\n
F90E=Target Cid\n\n
F90F=Target Kain2\n\n
F910=Target Rosa2\n\n
F911=Target Rydia\n\n
F912=Target Edge\n\n
F913=Target FuSoYa\n\n
F914=Target Kain3\n\n
F915=Target Golbez\n\n
F916=Target self\n\n
F917=Target all enemies\n\n
F918=Target all other enemies\n\n
F919=Target all enemies-1st type\n\n
F91A=Target all enemies-2nd type\n\n
F91B=Target all enemies-3rd type\n\n
F91C=Target party front row\n\n
F91D=Target party back row\n\n
F91E=Target one paralyzed enemy\n\n
F91F=Target one sleeping enemy\n\n
F920=Target one charmed enemy\n\n
F921=Target one critically injured enemy\n\n
F922=Target one random enemy or character\n\n
F923=Target one random enemy or character-other than self\n\n
F924=Target random enemy\n\n
F925=Target random enemy-other than self\n\n
F926=Target random front row party member\n\n
F927=Target random back row party member\n\n
F928=Target whole party\n\n
F929=Target all dead enemies\n\n
FB=Attack chain divider\n\n
FC=End attack chain\n\n
FD=Start attack chain\n\n
FE=Wait for next turn\n\n
FF=<END>\n\n\n\n

It's definitely pretty hackish, but it works, I've actually done a little editing this way. Again, it's just the sequences though, I haven't played around with conditionals. Like Grimoire suggests, Zyrthofar's editor can parse them (to some extent) so you might want to compare your output to that. I seem to remember his editor's output being a little off in the case of certain enemy attacks, which my table gets 100% correct AFAIK.

 :edit:

Example output:

Code: (Mist  Dragon sequences output) [Select]
Fight

Wait for next turn

Fight

Wait for next turn

Fight

Wait for next turn

Start attack chain

<Battle dialogue><$00>Do nothing

Attack chain divider

<Change gfx><$01>(Increment invincibility counter)

Attack chain divider

<Set condition><$81>Do nothing

End attack chain

Wait for next turn

Do nothing

Wait for next turn

Do nothing

Wait for next turn

Do nothing

Wait for next turn

Start attack chain

<Battle dialogue><$01>Do nothing

Attack chain divider

<Change gfx><$00>(Decrement invincibility counter)

Attack chain divider

<Set condition><$80>Do nothing

End attack chain

<END>



ColdMist

<Battle dialogue><$02><Battle dialogue><$03><Battle dialogue><$04><END>
« Last Edit: April 10, 2013, 06:00:06 PM by Dragonsbrethren »

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,234
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #339 on: April 11, 2013, 02:31:58 AM »
It's a very long and complicated process to break down a single attack sequence. Phoenix's documents (found readily at http://rb.thundaga.com/) explain it best, but even still you have to switch constantly between three documents:
- attack sequence group data
  http://rb.thundaga.com/monsters/eag.txt
- enemy condition indices
  http://rb.thundaga.com/monsters/eci.txt
- enemy attack sequences
  http://rb.thundaga.com/monsters/eas.txt
This last one has two parts, which are sort of presented backwards in terms of usefulness.

Okay, let's say your monster uses attack sequence group AB.
That's 44 BC 08 40 09 2B 0A 42 FF
This is a string of two byte commands, terminated by an FF. Each two byte command is (first byte) a condition and (second) an attack sequence performed if that condition is met.
So first, we have 44 BC, if condition 44, then attack sequence BC
Condition 44 means "if hp is less than 100 and hp damage"
Sequence BC is F2 7E F3 22 AD FF
This is a string of commands that may or may not have parameters, depending on the command, terminated by an FF.
This particular string translates to:
F2 7E - display battle dialogue 7E while performing next attack
F3 22 - change music to 22
AD - cast enemy spell AD (user dies, next enemy brought in)
So... if the enemy sustains damage and remaining hp is less than 100, display dialogue 7E, play music 22, and die, giving way to the next enemy.

Next in the sequence group is 08 40
If condition 08 (hit by a character fire spell)
Then sequence 40 (96 FF)
Which means cast enemy spell 96 (fire)
So... if the enemy is hit by a character's fire spell, counter with (enemy spell) fire

Next is 09 2B
If condition 09 (hit by a character ice spell)
Then sequence 2B (9D FF)
Which means cast enemy spell 9D (wave)
So... if the enemy is hit by a character's ice spell, counter with (enemy spell) wave

Finally, 0A 42
If condition 0A (hit by a character lightning spell)
Then sequence 42 (99 FF)
Which means cast enemy spell 99 (thunder)
So... if the enemy is hit by a character's lightning spell, counter with (enemy spell) thunder

So this is clearly the reflex group for an enemy that counters magic with its own of the same element, then says something, changes the music to song 22, and gives way to another monster when hp gets critical. Song 22 is Calcobrena, so I'm guessing that this is the big Calbrena's reflex group (I don't remember all of those magic counters, but then again, this battle happens just before getting Rydia back...)
 :edit: Battle Message 7E is "Ran out of power," which is displayed when big Calbrena breaks up into Cal and Brena (and is immediately preceded by "Turned into Calbrena"), so yes, this IS Calbrena's reflex group.

I just picked this one group at random. Attack groups and reflex groups exist in the same table, and a reflex group CAN be assigned as a monster's attack group, but doing so will freeze the game when fighting that monster.

I hope this helps. I was kinda hoping the random sequence I picked would include an attack chain, as that brings an extra element of complication into the mix. I could break more down if you want (not tonight, it's 3:30 am).
« Last Edit: April 11, 2013, 10:22:54 AM by chillyfeez »

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,234
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #340 on: April 11, 2013, 12:05:32 PM »
OK, attached are an IPS and an SRM file. Patch the IPS to a vanilla FF2v1.1 ROM.
You'll load in the Baron area with Edge, Kain, DK Cecil and Rosa in your party. Walk around and you will encounter a (modified) witch.
Do nothing, and she will do nothing.
Physically attack her, and she will say "That tickles!"
Jump attack her, and she will say "Stop hitting me,Kain!"
If she is attacked and her HP falls below 1000 (she starts at 1300), she will cast recover (bringing her HP back to full).

Here's how:
Changed Sequence Group 02 (7623C) to read: 00 00 FF
(by default, do nothing)

Changed Sequence Group 00 (76230) to read: 48 02 06 2F 40 FD FF
If Condition 48 (HP falls below 1000 and physically attacked)
Then Sequence 02 (modified, as explained below)
If Condition 06 (Physically attacked by a character)
Then Sequence 2F (modified, as explained below)
If Condition 40 (Condition flag is 01 and hit by Jump)
Then Sequence FD (modified, as explained below)

Changed Sequence 02 (76B04) to read: F9 16 AB FF
F9 (set target to...)
16 (self)
AB (cast spell AB, Recover)

Changed Sequence 2F (76BB9) to read: FD F1 00 FB F4 81 FC FF
FD (start attack chain)
F1 00 (display battle dialogue 00)
FB (separates battle chain commands)
F4 81 (sets condition flag to 01, assuring condition 40 is met if Jump attacked)
FC (end battle chain)

Changed Sequence FD (772B5) to read: F1 01 FF
F1 01 (display battle dialogue 01)

Of course, I changed the battle dialogue to say what I needed, too.

Then, I set the Witch's Attack Sequence Group to 02, and set her Reflex Group to 00
And there you have it!

 :edit: Couple of notes on this process:
- I chose to edit the particular Sequence Groups and Sequences that I did because they are, by default, the exact same length as what I needed - so for the purpose of this exercise, it was just quicker that way. The one good thing about how the "AI" system is set up, though, is that you can make these strings as long as you need them to be, and don't have to change pointers in order to make them work. the game just counts FFs until it gets to the string it needs (which is in all other respects highly inefficient).
- On a related note, the game reads Sequence Group strings in order from left to right. Once it finds a condition that is met, it uses the paired attack sequence. I spent a good half hour toiling away with my reflex group because I couldn't understand why the monster wasn't casting Recover. I had it set as the last of the three instructions, so the "physical attack" condition was met, and the game carried out THAT reflex action and ignored the rest. So you can always pick out the Attack (non-Reflex) Sequence Groups because they always end with 00 xx FF, thereby giving the monster something to do if no other condition happens to exist.
« Last Edit: April 11, 2013, 03:25:25 PM by chillyfeez »

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,682
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #341 on: April 11, 2013, 08:42:21 PM »
This is really neat and indepth Chillyfeez! Hopefully it can be put to great use.

Pinkpuff

  • Flan Princess
  • *
  • Posts: 923
  • Find a Megalixir in Unprecedented Crisis!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #342 on: April 12, 2013, 07:26:29 AM »
Thank you SO much, chillyfeez. That is exactly the kind of detailed explanation I was looking for. I think I get it, but the real determiner will be when I go to implement it. I have a lot of work to undo and then do correctly so it'll probably be a while but at least now I have a much clearer concept of what's going on. Thanks!
Let's dance!

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,234
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #343 on: April 12, 2013, 10:22:45 AM »
Sure thing. Happy I could help.

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,234
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Developing a comprehensive editor for FF4
« Reply #344 on: April 19, 2013, 10:12:54 PM »
Hey PinkPuff -
I just put this together for my own purposes. Seeing as how you are working on the monster editor, thought you might have some use for it.
it's a graphical representation of each of the "special" monster sprite arrangements.
The dashes are empty space, the 1s are sprite space, and the 0s are sprites that are not directly related to the graphical pointer (usually because they are subject to change during the battle)
I also noted which monster they are used for when that info is known, and took my best guess when it is not. for a select few, I have absolutely no idea.
Anyway, here you are:
Code: [Select]
80 (D. Mist)

------111-
-----1111-
--1111111-
--11111-1-
--11111---
--1111111-
-11111111-
1111111111

81 (D. Mist as Mist)

-----11-1111111--
---11111111111---
11111-11111---11-
-----111111111111
--11111111-------
-------11111111--
------1111-------

82 (Titan)

-000-
00000
00000
00000
0000-
0000-
0000-
00000

83 (Titan Quaking)

--00--
00000-
000000
00000-
0000--
0000--
0000--
00000-

84 (Octomamm 1)

--1111-1111--1----
--1111-1111--11---
--1-111--11--11---
-----111-111111---
-----1111--1111111
111--1111----11111
11----111----11---
111---111--1111---
----11-----11-----
--1111-111-11-----
--111--111-11-----
--11---111-11-----

85 (OCtomamm 2)

-----111-----
11-1-11------
1111-11111---
1111-1111111-
-111-1111----
-1111--111111
-1111---11111
--111---11---
11111---11---
11---11111---
11-1111111---
11-111--11---
11-1----11---

86 (Octomamm 3)

1111111------
1111111------
-1111111111--
-111--11111--
-1111-11111--
-1111----1111
--111----1111
--111----1111
--111-1--111-
--1111111111-
--11---11111-
--1-------1--

87 (Octomamm 4)

----111-1---
11--11111---
111-11111111
111111111111
111111--1111
-11111111111
-111-1111-11
-111111-----
-111111-----
---11-------
---11-------

88 (Octomamm 5)

-------1-----
-------11----
11-----11----
111-11-11----
111111-111111
111111--11111
-111--1111---
-111111111---
----1111-----
--111-11-----
--111-11-----
--111--------

89 (Octomamm 6)

11-----------
111---111-1--
1111--11111--
1111--11-----
-111111-11111
---1111-11---
-----11-11---
-----11------

8A (Octomamm 7)

11---1111--
111--1111--
1111---11--
1111---1111
-111-----11
-111---1111
-------1111
-------1-11

8B (Octomamm 8)

11---------
111-------1
1111--111-1
1111--11111
-111--11---
-111--11---

8C (Antlion)

11111111
11111111
11111111
11111111
11111111
---11111

8D (MomBomb after transformation?)

-111111111
1111111111
1111111111
1111111111
1111111111
111111111-
-11111111-
1111111---
11111-----

8E (Milon)

-1111
11111
11110
00111
00111

8F (Milon Z. & Elements as Milon Z.)

-111111-
-1111111
1100000-
1000000-
00000000
00000000
00000000
0000000-

90 (Rubicant)

-1111--
-11111-
-11111-
1111111
111111-
111111-
111111-
111111-
0000000
0000000
0000000
0000000
0000000
000000-

91 (Rubicant on Guard)

--11111
-111111
-11111-
-111111
-111111
-111111
111111-
1111111
0000000
0000000
000000-
0000000
000000-
000000-

92 (Kainazzo)

111111111-
1111111111
1111111111
1111111111
1111111111
-111111111

93 (Kainazzo gathering water)

111111111--
1111111111-
11111111111
11111111111
11111000000
00000000000
---0000000-

94 (Kainazzo in Shell)

-111111-
11111111
11111111
-1111111
-1111111

95 (Valvalis)

-11111--
11111111
00000000
00000000
-000000-
-0000000
00000000
00000000
0000000-

96 (Valvalis on guard)

--1111--
11111110
00000000
00000000
00000000
00000000
00000000
-000000-
----111-
--1100--

97 (Dark Elf before change)

111111
111111
111111
111111
111111
111111

98 (Sandy)

1111
1111
1111
1111
1111
1111
1111
-111
-111
-111
-111

99 (Cindy)

-1111-
-1111-
111111
111111
111111
11111-

9A (Mindy)

1111
1111
1111
-111

9B (Calbrena)

000000
-0000-
-0000-
-0000-
000000
000000
000000
000000
000000
00000-
-0000-
-0000-

9C (EvilWall)

1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
111111111111111-
11111111111111--
1111111111111---
1111111111111---
111111111111----
11111111111-----
1111111111------
1111111111------
111111111-------
11111111--------
1111111---------
1111111---------

9D (K. Eblan)

111--11
-111111
-111111
1111111
1111111
1111111
1111111
1111111
111111-
111111-

9E (Q. Eblan)

---111-
1111111
1111111
1111111
1111111
-111111
---1111
----111

9F (K. Eblan after change)

111--11
-111111
-111111
1111111
1111111
1111111
1111111
1111111
111111-
111111-

A0 (Q. Eblan after change)

---111-
1111111
1111111
1111111
1111111
-111111
---1111
----111

A1 (Baigan)

111111
111111
11111-
--11--
-1111-
11111-
11-11-
11111-

A2 (Right Arm)

-11
111
11-

A3 (Left Arm)

111
111

A4 (MomBomb, before change)

0000
0000
0000
0000

A5 (Dr. Lugae)

111
111
11-
11-

A6 (Balnab)

-111-
11111
11111
11111
11111
11111
11111
11111
11111

A7 (Balnab-Z)

-111-
-1111
11111
11111
11111
11111
1111-
1111-
11111

A8 (???)

1111
1111
1111
1111
1111
1111

A9 (Golbez)

--111----
111111---
111111---
1111111--
111111---
-111111--
-111111--
-1111111-
-11111111
-11111111
-11111111
-11111111
-1111111-

AA (Odin)

--1111--
--1111--
--111111
--111111
--111111
--111111
11111111
11111111
11111111
11111111

AB (Odin, Sword Raised)

111111--
--1111--
--111111
---11111
--111111
--111111
11111111
11111111
11111111
11111111

AC (Odin, Striking?)

---1111-
---11111
---11111
---11111
--111111
--111111
11111111
11111111
11111111
11111111

AD (???)

---111
--1111
111111
111111
111111
111111
111111
111111
111111
111111

AE (Leviatan)

11----
11111-
111111
111111
111111
111111
111111
111111
111111
1111--

AF (Bahamut)

-11111
111111
111111
111111
111111
111111
111111
111111

B0 (Bahamut, casting MegaNuke)

---11111--
-111111111
1111111111
1111111111
1111111111
1111111--1
111111111-
1111111111

B1 (???)

111

B2 (???)

111

B3 (Elements, as Kainazzo?)

000000000--
0000000000-
00000000000
00000000000
00000000000
00000000000
---0000000-

B4 (Elements, as Valvalis?)

--0000--
00000000
00000000
00000000
00000000
00000000
00000000
00000000
-000000-
----000-
--0000--

B5 (Asura?)

-1-11---
-111111-
1111111-
11111111
11111111
-1111111
-1111111
-1111111
-111111-
-11111--
--111---
---1----

B6 (Asura)

-1-11---
-111111-
1111111-
11111111
11111111
-1111111
-1111111
-1111111
-111111-
-11111--
--111---
---1----

B7 (Asura?)

-1-11---
-111111-
1111111-
11111111
11111111
-1111111
-1111111
-1111111
-111111-
-11111--
--111---
---1----

B8 (CPU)

111111111
111111111
111111111
111111111
111111111
111111111
111111111
111111111
111111111

B9 (Zeromus, Final Form)

--0111-111111--1111
-001111111111111111
--01111111111111111
--01111111111111---
--01111111111111---
--011111111111111--
011111111111111111-
-111111111111111-1-
-110000000000000---
-1100000000000-----
--100000000000-----
--000000000--------
--00000000---------
--10000000000------
-000000000000------
---0000000011------

BA (Defender)

000
000
000

BB (Wyvern)

---11111--
-111111111
1111111111
1111111111
1111111111
1111111--1
111111111-
1111111111

BC (Attacker)

000
000
000

BD (Ogopogo)

---111
--1111
111111
111111
111111
111111
111111
111111
111111
111111

BE (Zemus)

----111--1-
11111111111
1111111111-
-11111111--
--1111111--
--111111---
--111111---
--111111---
--111111---
--11111----
--11111----
---111-----
---111-----
---111-----
---111-----
---1-------

BF (Zeromus, Initial Form)

---11111----
--1111111---
-1111111111-
111111111111
111111111---
-11111111---
11111111----
111111------