Here are the special tiles that can be read from event data:
00 01 02 03 04 05
Ballista : 01 XX YY BL 00 00
Fire Trap : 04 XX YY 00 TT RR
Poison Trap : 05 XX YY DI TT RR
Instant Fire : 08 XX YY 00 00 00
Mine : 0B XX YY 00 00 00
BL = ballista type, DI = direction
TT = initial timer, RR = repeat timer
You can make fire traps and poison traps only trigger on certain turns. Although I would keep the default timers at 01 01. The game also reads special tile 09, but it has no effect (my guess this was meant to be the spear trap)
FE7 simply refuses to read any other special tile type from event data.
The whole process also takes up quite a bit of space. The routine goes through the effort of determining which types to read and which of the 6 bytes to use (instead of just grabbing them all). I rewrote this routine so it reads all special tile types.
Now the following can be read from event data:
06: Alternating tile changes
07: Light arrow trap
0A: Torch staff beacon (with variable vision radius)
0C: Light Rune (with variable duration)
Special tile type 02 is snag/cracked-wall location and HP. This gets written before event data is read. So, I threw in the ability to reassign snag/cracked-wall HP so they all don't have to be the same.
I'm going to see if I can add the wall spear trap. I will probably just copy the routine list from instant-fire and swap out the animation routine. This means the trap would do 10 fixed damage instead of that 10-defense thing, but I consider this an improvement. Plus, this way might allow me to implement it without needing to go into free space (thanks to the space I opened up earlier)