Skip to content

0xA0 — battle_character_fall_or_plugin_control

Battle character control through a 14-mode jump table (arg & 0x3F): fall control, plugin activation, rider attach/detach, flag bits.

proven— handler traced, and exercised by at least one shipped script.

At a glance

Opcode0xA0 (160)
HandlerCRadiScript::Command_a0
SignatureCRadiScript::Command_a0(int,SCR_DATA*,unsigned int,unsigned int)
Translation unitr_script_runa.cpp
Address— debug build; click for all 3
Handler size0xD00 (3328 bytes)
Engine namebattle_character_fall_or_plugin_control
FamilyPerson, battle and effects
Command size4 + extra_words * 4 bytes

Handler behaviour

Battle character control through a 14-mode jump table (arg & 0x3F): fall control, plugin activation, rider attach/detach, flag bits.

Encoding

The command header is one 32-bit word, as described in §3 Instruction encoding:

 31            24 23            16 15             8 7              0
+----------------+----------------+----------------+----------------+
|  flags         |  argument byte |  extra words   |  0xA0          |
+----------------+----------------+----------------+----------------+

Bits 8–15 give the number of 32-bit operand words that follow. Bits 16–23 are handed to the handler as a bitfield; on character commands bit 0 normally says whether a character selector word is present. Bit 31 is the keep-going bit.

Operand fields

2 documented fields. input fields are read from the command's operand words; derived fields are computed from other fields rather than stored separately.

FieldRoleMeaning
bit7inputOperand field bit7.
modeinputHandler path selector taken from the argument byte.

Engine calls

Engine functions this handler was observed calling:

  • CCharacterFallControl::FallStart
  • CCharacterManager::SetCharaCollisionAttribute
  • plugin vtable methods