Opcode reference
138 opcodes are installed in the dispatch table. All 138 have a located handler and recorded evidence; 123 are exercised by at least one script in the game, and 15 are installed but never used by any shipped script.
__sinit_r_script.cpp at 0x003A6AA0 initialises CRadiScript::pfnTable.
Symbolic execution of its copy sequence reconstructs the BSS table at
0x003B2D70; the function pointer is the third word of each 12-byte entry.
Every installed entry points at a CRadiScript::Command_XX, and every gap
points at the shared no-op CRadiScript::Command_xx at 0x002E2E30.
Installed opcodes:
00 01 02 03 04 05 06 0A 0B 0D 0E 0F10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F30 31 32 33 34 35 36 37 38 39 3A 3B40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F50 51 52 53 54 55 56 57 58 59 5A60 61 62 63 64 65 66 67 68 69 6A70 71 72 73 74 75 76 78 79 7A 7C 7D80 81 82 83 88 89 8A 8B 8E 8FA0 A1C0 C1 C2 C3 C4 C5 C6 C7D0 D1 D2 D3 D4 D5 D6E0 E1 E2F0 FFEverything else falls through to the default handler:
07-09, 0C, 3C-3F, 5B-5F, 6B-6F, 77, 7B, 7E-7F,84-87, 8C-8D, 90-9F, A2-BF, C8-CF, D7-DF, E3-EF, F1-FEFamilies
Section titled “Families”| Range | Area |
|---|---|
0x00–0x1F |
Script control, flags, event values, scene state, windows |
0x20–0x3F |
Characters: loading, movement, rotation, animation, expression, collision |
0x40–0x5F |
Background, map, landscape, camera, vibration |
0x60–0x7F |
2D primitives, textures, sound, movies |
0x80–0x8F |
Vibration data, dialogue, text output, windows |
0xA0–0xD6 |
Person/schedule system, battle setup, special effects |
0xE0–0xE2 |
Character placement: life flags and group queries |
0xF0, 0xFF |
Markers and immediate return |
Two carry more weight than the rest: 0x14 is the
general-purpose expression command and the single most-used opcode, and
0x02 is every branch and jump.
Addresses across builds
Section titled “Addresses across builds”Click an opcode for its handler address in each build. Coverage is uneven, and the reason matters:
| Build | Handlers with an address |
|---|---|
Debug (SLUS-21262 prototype) |
138 of 138 |
| ENG (USA release) | 133 of 138 |
JPN (SLPM-65800 release) |
133 of 138 |
The debug build ships a real linker map, so every handler is named and placed.
The release maps are derived from it: 85 handlers have bodies that match
the debug build byte for byte, and those agree exactly with the addresses
recovered independently from each release’s dispatch-table dump; the rest were
placed by matching the surrounding code, and the ones checked by hand for these
pages (0x04, 0x06, 0xC5) match the debug build instruction for
instruction. A missing release address means “not placed in that map”, not
“absent from that build” — the handler is installed in the dispatch table in
all three.
All opcodes
Section titled “All opcodes”Click an opcode for its per-build addresses, or the command name for its own
page. Rows marked traced have a located handler but no shipped script that
uses them.
| Opcode | Command | Evidence | Handler behaviour |
|---|---|---|---|
| Script control, flags and values | |||
| end_script | proven | Releases related data in some cases, clears the 0xE0-byte SCR_DATA slot, returns 1. This acts as a script end/stop for StepProcess. | |
| script_start_stack +1 | proven | Script start helper with local stack script data. The low handler-argument nibble is the start mode and bit 0x10 enables an explicit character selector. The first operand word contains the target script id in the low halfword and an optional condition id in the high byte; conditional starts consume the normal two-word condition payload before any explicit character selector. It can check a condition, construct/copy script data, call Command_00 on a target slot, and call SetScriptNumber. | |
| branch +5 | proven | Reads a branch word at SCR_DATA+0x0C. The high byte is a condition id. If nonzero, it reads the next 8 bytes as condition payload and calls CRadiScript::CheckCondition(unsigned char,unsigned long,const SCR_DATA*). If the condition passes, or if there is no condition id, it sign-extends the low 24 bits of the branch word as a relative word offset, writes the new cursor to SCR_DATA+0x0C, and returns 2. | |
| trigger | proven | Builds an RVTC_DATA-like trigger record from the command stream. Depending on handler_arg_byte >> 6, it registers a trigger in the eight SCR_DATA+0x80 slots, calls CVariousTrigger::Checking(RVTC_DATA*), or clears matching trigger slots. | |
| script_start +1 | proven | Script start/inline-call helper. It can check a condition, call SetScriptNumber, set default character/object names, copy script data, and run StepProcess. | |
| conditional_end +1 | proven | Conditional script end helper. It optionally calls CheckCondition; if the condition passes, or no condition is present, it calls Command_00. | |
| load_script_file | proven | Reads one script-file operand, optionally forces bit 0x8000, converts zero to -1, and calls CRadiScript::LoadScriptFile(int). | |
| change_game_mode +1 | proven | Calls CRadiScene::ChangeGameMode(int). If that succeeds it sets a run of config/event flags with CRadiApp::SetConfigEventFlag. | |
| script_stop +1 | proven | Script stop helper. It can check a condition, resolve a character abstraction, search a script slot, and call StopScript. | |
| marker_seek +1 | proven | Marker seek. Selector bits in the handler argument choose where the marker index comes from — a direct operand, a run of config/event flags, an event value, or the in-game clock. The marker is located through GetMarkerAddress and the resolved address is written to SCR_DATA+0x0C. | |
| WAITING_SETUP | traced | Saves the cursor to SCR_DATA+0x30 and the two argument bytes to SCR_DATA+0x24/+0x25, then calls the callback pointer stored at SCR_DATA+0x2C with (step_arg, extra_word_count, handler_arg, cursor) when it is set. Consumes no operands itself. | |
| nop | proven | Immediate return 0; no handler-side behavior. | |
| clear_flag +2 | proven | Reads one u32 operand at SCR_DATA+0x0C. Low 16 bits are the first config/event flag id. High bits are boolean values. Number of flags is (handler_arg_byte & 0x0F) + 1. Calls CRadiApp::SetConfigEventFlag(flag_id, value) for each bit. | |
| scene_save_env +1 | proven | Scene environment save/restore helper. It creates CRadiSceneSaveEnv as needed and pushes or pops radi time enable, map animation, camera halt, ambient, light, character halt/disp, map disp, camera system, and window status. | |
| time_schedule_value +1 | proven | Time/schedule/event-value helper. It can call CRadiApp::SetRadiataTime, SetEventValueForScript, GetEventValueForScript, GetAbstractionCharacterNumber, and CCharacterPerson::TraverseScheduleList. | |
| radiata_time_enable +1 | proven | Radiata time enable helper. It updates time-related bits in Radi and calls CRadiApp::SetRadiataTimeEnable(int,bool). | |
| expr (assign and calculate) +11 | proven | Evaluates two typed integer operands from the command stream, combines them with an arithmetic/logical operation selected by low command bits, then optionally writes the result to config/event flags, script event values, character data, item data, or script-local float slots. | |
| script_defaults +1 | proven | Sets script defaults. It calls SetDefaultCharacter, optionally sourcing the character id through GetEventValueForScript, and can call SetDefaultObjectName. | |
| battle_acquisition_setup +1 | proven | Battle/acquisition setup command. It initializes a global command buffer, writes battle-result/drop fields, and calls CBtlAcquisition::AddDroppedItem. | |
| battle_character_entry +1 | proven | Battle/acquisition character-entry command. It resolves a character id, builds a 0x14-byte record from an optional character selector plus three entry words, and inserts it into the same global buffer used by Command_16. | |
| party_membership_control | proven | Resolves a character abstraction and changes party membership through CRadiApp::ReleaseParty or CRadiApp::AddParty; one branch edits party slots directly. | |
| personal_inventory +1 | proven | Resolves a personal data record and calls CPersonalData inventory methods including SetPossessionItem, GetOneItemNum, GetItemInfo, GetSpecialItemNum, GetNormalItemNum, and DeletePossessionItem. Can write a result to a script event value. | |
| character_equipment +1 | proven | Resolves character and item abstractions, then calls CPersonalData::SearchItemInfo and CCharaEquipmentManager methods for equipping, displaying, and reflecting equipment. | |
| window_message +1 | proven | Large window/message dispatcher. It resolves character, item, and event-value abstractions, may call AttachMessageData, constructs battle parameter objects in some branches, and repeatedly calls CRadiWindowManager::SendMessage. | |
| stand_context +1 | proven | Stand-position/current-context helper. It reads stand-position data, calls GetAbstractionStandPosNumber when an operand requests abstraction resolution, and writes position/posture fields into the current global script context. | |
| FADE_SPEED | traced | Reads one float operand and stores it to the unnamed global at 0x003B266C (next to the Command_1f global 0x003B2678). | |
| packing_file_load_or_release +1 | proven | Arg bit 0 clear: reads a halfword id and calls CRadiDataCenter::LoadPackingFile. Bit 0 set: calls CFileObject::ReleaseFile on data-center slot arg>>4 when below 8. | |
| PAUSE_SPEED | traced | Reads one float operand and, if CRadiApp::WhetherCanPause() is non-negative, stores it to global 0x003B2678. | |
| Characters | |||
| character_data +1 | proven | Resolves or creates character objects and drives character data loading/releasing through CCharacterManager and CRadiDataCenter modeling/action/animation/algorithm methods. | |
| character_delete_data +1 | proven | Resolves a character and calls either CCharacterManager::DeleteCharacter or CCharacterManager::DetachData_Main depending on command flags. | |
| character_attach_render +1 | proven | Resolves a character, may call CCharacterManager::AttachData(CCharacter*, unsigned char), toggles no-render behavior through character/SSF methods, and calls CCharacterManager::InhibitionCharacter(CCharacter*). | |
| character_animation +1 | proven | Resolves a character with GetCharacterID/GetCharacterClass2, then switches or sets character animation through CMotionSwitchData::SwitchMotionEzLasting, CMotionSwitchData::SwitchMotionDirect, or CCharacterAnim::SetSubAnimation. | |
| character_virtual_24 +1 | proven | Character command with one unresolved virtual call. The handler resolves a character through GetCharacterID/GetCharacterClass2, dispatches a character virtual method, and touches a character sub-manager. The vtable target still needs a dedicated trace before a higher-level label is safe. | |
| character_sub_anim +1 | proven | Resolves a character and performs sub-animation control through CCharacterAnim; one traced branch calls CCharacterAnim::StopSubAnimation(). | |
| character_attach_parent +1 | proven | Parent attach/collision helper. It resolves one or two characters, searches SSF names, and calls CCharacterManager::AttachParent, CBackGround::AttachParent, or CCharacterCollision::SetCollisionAttribute. | |
| character_detach_parent +1 | proven | Resolves a character and detaches parent links through either CCharacterManager::DetachParent or CBackGround::DetachParent. | |
| character_move_points +1 | proven | Resolves CCharacterMove, allocates a move buffer, resolves stand positions, and calls CCharacterMove::SetPointData. | |
| character_move_pause +1 | proven | Resolves a character, gets CCharacterMove, and calls CCharacterMove::MovePause(int). | |
| character_movement +1 | proven | Large character movement command. It drives CCharacterMove, connect-target, vibration/throw/straight movement, fall-control, capture, and rotate-target calls. | |
| character_precreate_anim +1 | proven | Resolves a character and calls CCharacterAnim::PrecreateAnimationCtrl(unsigned int,int). | |
| CHAR_PERSIST | traced | Resolves a character and calls CSsfHandler2::SetPersistenceAll(bool) or CCharacter::SetPersistenceWithChild(bool, name); the boolean comes from arg bit 7. | |
| character_rotate_option +1 | proven | Resolves a character and then configures character rotation, character option targets, capture data, posture, speed limits, and head angle through CCharacterRotate, CCharacterOption, CCharacterCapture, and quaternion helper calls. | |
| NOP | traced | Immediate return 0; no handler-side behavior. | |
| character_attribute +1 | proven | Resolves a character and calls CCharacterManager::SetCharaCollisionAttribute and CCharacterManager::SetCharacterAttribute. | |
| character_move_position +1 | proven | Resolves a character, decodes a position with CRadiScript::GetPosisionCode30_38, then either calls CCharacter::SetCharaPosition or CCharacterMove::MovePosition. | |
| character_collision_setup +1 | proven | Resolves a character, writes collision-related fields, then calls CCharacterManager::GetCharacterCollisionClass and CCharacterCollision::SetupCollisionData. | |
| character_auto_rate_anim +2 | proven | Resolves a character and drives CCharaAutoRateAnim play/stop methods for color-rate, transparency, scale, palette morph, and visibility animations, including WithChild variants. | |
| character_eye_control +1 | proven | Resolves a character option object and calls CEyeControl::SetEyeBallNo, CEyeControl::SetEyeMoveType, or CEyeControl::SetEyeMoveManual. | |
| character_expression +1 | proven | Resolves a character option object and calls CExpressionControl::BlinkControll and/or CExpressionControl::MouthControll. | |
| character_single_manager +1 | proven | Character single-manager helper. It resolves a character, gets a character sub-manager, allocates or clears CSingleManager data, and dispatches several virtual construction/append paths. | |
| character_anim_signal +1 | proven | Character animation signal query/update helper. It resolves a character/SSF object and can call CCharacterAnim::GetPlayingAnimationSignal, GetEventValueForScript, and SetEventValueForScript. | |
| CHAR_VFX | proven | Character effect control: tail objects, mosaic filters, and a flag toggle. | |
| PARTICLE | traced | Resolves a character, calls CSsfHandler::SearchParticle, and decodes a position with GetPosisionCode30_38. | |
| character_event_leave +1 | proven | Gets CCharaEventLeaveManager and calls EnterAll, AddEnterCharacter, or ReleaseEnterCharacter. | |
| CHAR_CAPTURE | proven | Allocates CCharacterCapture data and calls Initialize, SetPositionOffset, CQuaternion::Euler, SetTargetCharacter, EnableSetPosition, EnableSetPosture. | |
| strong_motion_blend +1 | proven | Resolves a character and calls CSsfHandler2::StrongMotionBlendForDynamics(float) on the character's SSF handler when present. | |
| Background, map, landscape and camera | |||
| load_background | proven | Reads a background id, optionally through GetEventValueForScript, and calls CBackGround::LoadData. | |
| MAP_INOUT_CHECK | proven | No operands: gets character sub-manager 0x11 (CCharacterPersonManager) and calls AllCheckMapInOut(1, true). | |
| setting_map +1 | proven | Calls CBackGround::SettingMap(unsigned int) and records a background/map command entry in the shared queue. | |
| background_delete_data +1 | proven | Calls CBackGround::DeleteData(unsigned int) with slot/index handler_arg_byte & 3. | |
| background_change_map +1 | proven | Calls CBackGround::ChangeMap(unsigned int,unsigned int), records a background/map command entry, and calls CBtlAcquisition::SortDroppedItem when the character sub-manager exists. | |
| background_play_animation +1 | proven | Background animation command. It resolves optional character abstraction data and calls CBackGround::PlayAnimation. | |
| background_stop_animation +1 | proven | Reads a background animation name payload and calls CBackGround::StopAnimation. | |
| background_visibility +1 | proven | Branches on high handler_arg_byte bits and calls CBackGround::SetBgDisp, CBackGround::SetBgVisibility, or CBackGround::SetLightShadowEnable. | |
| landscape_visibility +1 | proven | Landscape group visibility helper. It calls CRadiLandscape::GetGroupHeader, then toggles the group hidden bit and calls CHierarchicalObject::SetVisibility. | |
| LANDSCAPE_POS | traced | Reads a group byte and an x,y,z float vector, resolves the landscape from gpBackGround (slot arg&3), then calls CRadiLandscape::GetGroupHeader and CRadiLandscape::SetPosition. | |
| position_vibration_param +1 | proven | Position-vibration parameter command: a direct CVibrationVector::SetParam wrapper. Selector bits and the first control word are named where the handler trace proves them; the remaining branch payload is preserved byte-exact. | |
| BG_SEARCH | proven | Resolves an animation name (mode arg&3: none, fixed four-word inline slot, or SCR_DATA+0x14), reads one float, and calls CBackGround::SetAnimationSpeed(name, arg>>4, speed). The inline path advances the cursor a fixed 0x10, corroborating the Command_45 name-slot layout. | |
| background_runtime_field +1 | proven | Background runtime field update. It validates gpBackGround, then writes optional fields including a 64-bit value, a float scaled by 120.0f, and Radi+0x180. | |
| background_auto_rate_anim +1 | proven | Background/global auto-rate animation helper. It calls CAutoRateManager play/stop methods for color, transparency, scale, palette morph, and visibility animation elements. | |
| BG_QUERY | proven | Queries background animation state (GetPlayingAnimationFrame, CVector::GetEuler, CQuaternion::ToEuler) and reads/writes script event values with the result. | |
| MAP_OBJ_DISP | proven | Calls CBackGround::ResetMapObjectDisp, SetMapObjectDispByCharacter (after a character abstraction), or SetMapObjectDispByCamera. | |
| camera_select +1 | proven | Reads two halfwords from the command stream. Non-0xFFFF low halfword calls CRadiCameraSystem::SelectCamera; non-0xFFFF high halfword calls CRadiCameraSystem::SetCameraTarget. Then it marks character display/camera instant update state. | |
| camera_mode +1 | proven | Branches on handler_arg_byte & 0x0F, mutates CRadiCameraSystem/CRLHCamera state, and in traced modes calls CRLHCamera::SetParamFromCamera or CRadiCameraSystem::MoveCameraRail. | |
| camera_transform_param +1 | proven | Branches on handler_arg_byte and control bits, calls CCharacterCapture::Capture, CRLHCamera::AddAcceleration, CRLHCamera::SetRotate, and CAutoRateBase::SetParam for camera-related parameters. | |
| CAM_ANIM | proven | Reads up to three floats gated by arg bits 0-2 (defaults 0, 0, 1.0) and calls CRadiCameraSystem::PlayCameraAnimation(arg&0xE0, f0, f1, f2). | |
| camera_move_etc +1 | proven | Camera movement command. It resolves camera objects, target objects, character/SSF targets, stand positions, and calls CRadiCameraSystem::MoveCameraEtc. | |
| camera_capture_target +1 | proven | Camera capture target control. It configures CCharacterCapture, position/posture enable bits, offsets, Euler posture, and camera target coefficients. | |
| camera_move_existing +1 | proven | Short camera movement wrapper. It calls CRadiCameraSystem::MoveCameraEtc using the current camera system pointer and an existing RCM_MVINFO pointer from script state. The payload is decoded as repeated x,y,z,duration movement points. | |
| position_vibration_vector +1 | proven | Position vibration helper. It allocates CVibrationVector records, calls CVibrationVector::SetParam, then dispatches virtual attach/start paths. | |
| position_vibration_clear +1 | proven | Position vibration/vector cleanup helper. It deletes CSingleManager elements and calls CHierarchicalObject::MakePivotMatrix in two cleanup branches. | |
| camera_color_anim +1 | proven | Branches on handler_arg_byte >> 4. Modes 0..7 call CRadiCameraSystem::MoveCameraEtc2; mode 0xE calls CRadiCameraSystem::PlayFogColorAnim; mode 0xF calls CBackGround::PlayAmbientColorAnim. | |
| camera_flags +1 | proven | Copies three boolean bits from handler_arg_byte into fields on CRadiCameraSystem and its child camera object. | |
| Primitives, textures, sound and movies | |||
| load_texture | proven | Texture load helper. It splits one stream word into texture id/group fields and calls LoadTextureFile(int,int,int,unsigned short,bool). | |
| load_paf | proven | PAF load helper. It reads one PAF id operand and calls CRadiDataCenter::LoadPafFile. | |
| sprite_config +1 | proven | Reads a bitfield word and consumes variable operands to configure one CSpriteG_Base slot. Proven fields include halfword coordinate/rect values, texture page setup through CSpriteG_Base::MakeTexturePage, floats at sprite offsets 0x24/0x28, and virtual sprite methods from vtable offsets 0x14, 0x1C, 0x3C, 0x48, and 0x4C. | |
| primitive_anim_slot +1 | proven | Primitive animation slot helper. It selects a slot/range, calls a slot virtual method, and can call CPrimitiveAnimation::DeleteSlot. | |
| primitive_play_paf +1 | proven | Primitive PAF sequence helper. It resolves a PAF id and sequence index, calls CPrimitiveAnimation::GetPafAddress, CPrimitiveAnimation::PlayPafSequence, and optionally CPrimitiveAnimation::SetOffset. | |
| primitive_stop_paf +1 | proven | Primitive PAF stop helper. It resolves a PAF id through CPrimitiveAnimation::GetPafAddress and calls CPrimitiveAnimation::StopPafSequence. | |
| primitive_priority +1 | proven | Selects a primitive helper slot and calls CPrimitiveHelper::SetPriority(unsigned int). | |
| fade_control +1 | proven | Branches on handler_arg_byte >> 4 and calls CRadiFade::SetColorFade, CRadiFade::SetDissolves, or CRadiFade::SetBattleInFade. | |
| global_visual_state +1 | proven | Global/object visual-state field writer. It writes through gpGlobalDB, gpObjectManager, and Radi fields, consuming bit-selected floats/words. No named calls are made in the traced body. | |
| primitive_helper_byte +1 | proven | Primitive helper byte setter. It selects helper slot handler_arg_byte & 7 and stores handler_arg_byte >> 3 at helper offset +0x0C. | |
| primitive_move_sprtg +1 | proven | Primitive sprite movement helper. It repeatedly calls CPrimitiveAnimation::MovePrimitiveSPRTG for selected helper slots. | |
| set_bgm +1 | proven | Reads two u32 operands, builds a stack RADIBGM_INF, and calls CRadiSound::SetBgm(const RADIBGM_INF*). | |
| play_bgm +1 | proven | Calls CRadiSound::PlayBgm(unsigned int) with handler_arg_byte & 3. | |
| bgm_control +1 | proven | Reads one operand and calls either CRadiSound::StopBgm or CRadiSound::PauseBgm depending on handler_arg_byte & 0x80. | |
| set_bgm_volume +1 | proven | Reads one operand and calls CRadiSound::SetBgmVolume(int,unsigned int,unsigned int). | |
| load_sound_resource +1 | proven | Branches on handler_arg_byte & 0x1F; calls CRadiSound::LoadEventSeFile or CRadiSound::LoadBattleVoiceFile, and one mode writes a computed value to CRadiSound+0x74. | |
| play_sound_effect +1 | proven | Resolves sound-effect parameters and optionally character/SSF attachment data, then calls CRadiSound::PlaySe; also calls CRadiSound::GetSEBankFromChrNum and CSsfHandler::SearchName in traced branches. | |
| stop_sound_effect +1 | proven | Sound-effect stop helper. It resolves optional character abstractions and calls CSoundManager::FadeoutAllSE or CRadiSound::StopSe. | |
| sound_field_e0_set +1 | proven | No operands: stores arg&0x0F to gpRadiSound+0xE0. | |
| sound_listener +1 | proven | Sound listener placement helper. It can set listener point by character, map object, camera, direct vector/quaternion, or call CSoundManager::SetListener. | |
| sound_effect_stack +1 | proven | Sound-effect stack push/pop. Maps to CRadiSound::PushAllSe and CRadiSound::PopAllSe. | |
| play_movie | proven | Movie playback helper. It reads a movie id, two signed halfword parameters, and one extra word, then calls CMovieManager::PlayMovie. | |
| stop_movie | proven | Movie stop helper. It calls CMovieManager::StopMovie. | |
| Vibration, dialogue and text | |||
| VIB_LOAD | traced | Reads one halfword id and calls CRadiDataCenter::LoadVibrationData. | |
| VIB_SEQ_PLAY | traced | Resolves a character abstraction, locates act data through CCharacterManager::_get_act_data and GetKodsAddress, then calls CVibPlayer::AttachData and CVibPlayer::PlayVibSequence. | |
| vibration_stop +1 | proven | Vibration stop helper. It calls CVibPlayer::StopVibSequence. | |
| play_vibration | proven | Reads one operand, splits it into byte/halfword arguments, and calls CVibPlayer::PlayVibration. | |
| TALK_LOAD | traced | Reads one halfword id and calls CTalk::LoadData(gpTalk, 1, id). | |
| talk_rmf | proven | Calls CRadiScript::AttachMessageData, optionally calls CTalk::RmfExit, then calls CTalk::RmfStart(unsigned int,unsigned int,bool,bool,unsigned int,unsigned int). | |
| window_message_mode +1 | proven | Sends several CRadiWindowManager::SendMessage calls and branches on application field +0x458 and command flags. | |
| talk_bustup_display +1 | proven | Talk bustup display. Argument bit 0 selects either the current script character at SCR_DATA+0x10/+0x12 or an explicit stream word, resolves it through GetAbstractionCharacterNumber, calls CCharacterManager::GetCharacterClass2, then dispatches CTalkBustupTotalControl::BustupDisp. | |
| text_message_layout +1 | proven | Reads three u32 operands. The first is two signed halfwords copied to text message layout fields +0x14/+0x18 and +0x16/+0x1A; the next two words are copied to global CTextMessage fields +0x00 and +0x08; byte +0x0E is set to 1. | |
| text_output +1 | proven | Configures the global CTextMessage object, then branches on handler_arg_byte >> 5. Mode 0 (sjis_text) calls CTextMessage::TextOutforSJIS(const char*) with the current script cursor. Mode 1 (event_value_number) reads an event-value id from the low 16 bits of the first operand, fetches it through GetEventValueForScript, converts it with NumberToWideText, and outputs it. Mode 7 (clear_text) clears text id 0xFA through ClearByID and ClearTextCache. | |
| Person, battle and effects | |||
| battle_character_fall_or_plugin_control +1 | proven | Battle character control through a 14-mode jump table (arg & 0x3F): fall control, plugin activation, rider attach/detach, flag bits. | |
| NOP | traced | Immediate return 0. | |
| person_schedule_list +1 | proven | Resolves a character/person and calls CCharacterPersonManager::SetScheduleListNumber. | |
| map_change_check +1 | proven | Map change/map-in-out helper. It resolves a character/person, may fetch an event value, calls CBackGround::LoadData, CBackGround::ChangeMap, and CCharacterPerson::CheckMapInOut. | |
| NOP | traced | Immediate return 0. | |
| person_allow_attribute +1 | proven | Resolves a character/person and calls CCharacterPerson::SetAllowAttribute(int, int, int). | |
| person_field_update +1 | proven | Character/person field update. It resolves a character/person, can translate through GetAbstractionCharacterNumber, and writes fields on the resolved record including offsets 0x34A, 0x34C, 0x34E, 0x83, and 0x332. | |
| set_radiata_time +1 | proven | Reads time fields from the command stream and calls CRadiApp::SetRadiataTime. | |
| PERSON_LINK | traced | Resolves character/person abstractions and updates person record fields directly; no other named engine calls in the traced body. | |
| PERSON_INCLUDE | traced | Resolves a character and calls CCharacterPerson::SetIncludeCharacter. | |
| BTL_CREATE | proven | Makes or reconfigures a battle character from a RADI_BTL_ORDER built from stream bytes, activates up to six plugins, and wires owner links. | |
| character_collision_control_d1 +1 | proven | Resolves a character abstraction and an SSF name and operates on the class from GetCharacterCollisionClass. | |
| character_script_param_holder +1 | proven | Builds or reads a per-character script param holder: battle-team member lists, free stand positions, or child characters, with the result count/element written to an event value. | |
| battle_copy_character +1 | proven | Resolves a character, calls CCharacterManager::CopyCharacter, and writes a result with SetEventValueForScript. | |
| battle_volty_distance +1 | proven | Resolves character abstractions, calls CbtlEtc::Script_CalcVoltyDistance and CRadiApp::ProcessTaskReady. | |
| special_effect +1 | proven | Builds special-effect parameters, resolves up to two character abstractions, and calls CSpecialEffectManager::ExecuteSpecialEffect_Main or CSpecialEffectManager::AbortSpecialEffect. | |
| BTL_PLUGIN_MSG | traced | Resolves a character and calls CBtlCharacter::SendMessage with a constructed CBtlChrPluginMsgParam. | |
| chara_put_attach_life_flag +1 | proven | Resolves a character abstraction and calls CCharaPutManager::AttachLifeFlag. | |
| PUT_QUERY | proven | Calls CCharaPutManager::GetGroupTotalFlagNumber, GetGroupLiveFlagNumber, or GetGroupDefaultLiveFlagNumber and stores the result with SetEventValueForScript. | |
| PUT_EVENT_VALUE | proven | Reads a group halfword and a value (optionally through GetEventValueForScript) and calls CCharaPutManager::SetGroupLiveFlagNumber. | |
| Markers and return | |||
| anim_frame_trigger +4 | proven | Special opcode whose default cursor behavior consumes only the header. It branches on the command word mode nibble (word >> 28) & 7. Sampled mode 0 records are used with marker_seek; mode 2 resolves a character/person and calls CCharacterPerson::SetSchedulePercent(bits 8-27). Mode 7 sets bit 0x20 in the active SCR_DATA byte. Mode 3 is a no-op to the script stepper: it is an **animation frame trigger** consumed by CCharacterAnim::ChangeFrame_sub (0x002A4A20), which walks the character EVD's marker table, reads each marker's first word, extracts a signed 20-bit frame from bits 8-27 (mode 7 = frame infinity, the end sentinel), and when the playing animation reaches that frame sets the script cursor to the marker and runs AnimationSeqProc(). Bit 31 is the standard keep-going bit. EVDSRC spells these marker id=N (mode 0), anim_frame_trigger frame=N (mode 3), set_schedule_percent percent=N (mode 2) and anim_script_end (0xF00000F0); the remaining modes keep the raw special_f0 form. | |
| NOP | proven | Immediate return 0; no handler-side behavior. Because StepProcess already consumed the command header and skips default extra-word advancing for opcodes >= 0xF0, this consumes only the header. | |