While picking apart the Movement routine to make it possible to disable Movement abilities, I found some interesting data. I am just going to dump the stuff and make sense of it later; hopefully I will be able to update it with more thorough notes.
These are all RAM values, which can be adjusted by editing SCUS_942_21 at RAM minus $F800.
tl;dr
"Elemental" terrain table: 0x5E9D0
Terrain status inflict table: 0x5EA10 (e.g. Poison swamp)
Default movement cost table: 0x5EA50Offset 0x5ea50 through 0x5ea8F is the default Movement table. These tables have $40 values, one for each of
http://www.ffhacktics.com/wiki/Terrain_Surface_Types.
So offset 0x5ea62 corresponds to 0x12, "Lava".
General terrain is "01" (Natural Surface, Roof, Furniture).
Swamp is "00" (Poisoned marsh, Salt, Water plant).
Water is "02" (River, Sea, Waterfall).
Impassable terrain is "FF" (Obstacle, Darkness, Lava).
There are five more Movement tables. Subject to some shuffling, they correspond to the following:
0x5ea90: Fly/Teleport
0x5ead0: Float
0x5eb10: Walk on Water/Move in Water
0x5eb50: Move Underwater
0x5eb90: Move on Lava
All terrain tables have an "FF" byte in spot 3F and a "00" byte for "Salt" terrain (an oversight?).
Fly/Teleport and Float are "01" elsewhere.
Walk on Water/Move in Water and Move Underwater are elsewhere "01", except impassable terrain.
Move on Lava is identical to base movement, but with "Lava" set to "01".
When the table is read, "00" becomes "02" if there is weather and Any Weather is not equipped, "01" otherwise.
Values other than "FF" are converted to "01" if Any Ground is equipped.
So it seems that this determines the movement cost for different terrain. "Cannot enter water" must be covered later. Looks like a great starting point for implementing aquatic/lava monsters, or barriers that keep out demons, or even a sensible terrain system where mud/rock/furniture are harder to walk over. I will let someone who can hex edit but not ASM hack investigate further, since I have about a billion lines more of this movement mess to sift through.
Offset 0x5e9d0 is the Elemental table. Values correspond to the ability numbers of the associated "Elemental" skills. As long as you add the skill to "Elemental" as well, looks like you can use anything. Might be useful for consolidating Elemental, which as fun as it is probably doesn't need twelve abilities.
Offset 0x5ea10 is the poison-on-movement table. All values are "00" except for "80" at Poisoned swamp.