Battlescript

(As with the fieldscript details, some parameters are probably reversed or otherwise messed up)

The first 0x10 bytes of a battlescript file appear to be mostly offsets within the file,
perhaps the header, dialog, and the end of the file.

At 0x90 (counting those first 0x10 bytes), there's the 4-byte number of entities(?).
Then there's the pointers to the scripts, 0x40 bytes per entity.

Entity 0 is a global script entity.
Entity 1-3 are for PC 1-3, Entity 4-(max-1) are for monsters (there can't be more than 6 monsters).
Entity max is unknown.

Script 0 of each entity is used for initializing purpose.
Script 1 is called frequently.
Script 2 is used when an entity is about to take an action, for ~PCs, maybe when they are confused.
Script 3 is used when the entity is killed.
Script 4 is called when the entity is attacked.

var[0x0052] is used to store last element color you used.
var[0x0054] - Battle Timer (int32)

(I have made the assumption below that battlescript and fieldscript commands with the same
OP byte mean the same thing when this seems reasonable—frex, when they deal with simple
variable arithmetic and have the same number of parameter bytes. I have not made that
assumption for more complex commands such as model loading.)

00 - Halt

01 XX YY - Goto: Jump to offset YYXX in the fieldscript

02 TT UU VV WW XX YY ZZ - Conditional jump (parameter functions not noted, but they are UUTT, WWVV, XX, ZZYY, and one of them controls the type of condition, e.g. >, ==, !=) Probably the same as Xenogears.

E0 XX YY ZZ - Display dialogue (one of the parameters should be an offset into the script file)

E2 - Wait for dialogue

[1] Additional stuff about opcode 75: It's used for things like copying parameters for
the enemy whose information starts at WWVV to a "current enemy" set. Interesting values for
XX include 0x16 (HP) and 0xa2 (gold dropped)

The 3rd parameter seems to have 2 parts, the lower 9 bits are offset value for sure(0-511),
the high bits are some sort of flags which I'm not sure currently (for example, different
base address).

Check the address at 0xDDB30, go to that address + 0x10
There is another address there, go that that address + 0x83
The byte is the index you need, for example, if it is 3, then it stands for the
first enemy, and so on.