0x47 — background_visibility
Branches on high handler_arg_byte bits and calls CBackGround::SetBgDisp, CBackGround::SetBgVisibility, or CBackGround::SetLightShadowEnable.
proven— handler traced, and exercised by at least one shipped script.
At a glance
| Opcode | 0x47 (71) |
|---|---|
| Handler | CRadiScript::Command_47 |
| Signature | CRadiScript::Command_47(int,SCR_DATA*,unsigned int,unsigned int) |
| Translation unit | r_script_run4.cpp |
| Address | — debug build; click for all 3 |
| Handler size | 0xF8 (248 bytes) |
| Engine name | background_visibility |
| Family | Background, map, landscape and camera |
| Command size | 4 + extra_words * 4 bytes |
Handler behaviour
Branches on high handler_arg_byte bits and calls CBackGround::SetBgDisp, CBackGround::SetBgVisibility, or CBackGround::SetLightShadowEnable.
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 | 0x47 |
+----------------+----------------+----------------+----------------+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
7 documented fields. input fields are read from the command's operand words; derived fields are computed from other fields rather than stored separately.
| Field | Role | Meaning |
|---|---|---|
flag0 | input | Boolean option 0 taken from the handler's argument byte. |
flag1 | input | Boolean option 1 taken from the handler's argument byte. |
mode | input | Handler path selector taken from the argument byte. The meaning is specific to each command. |
name | input | Object or animation name this line acts on, as text. The engine reads it as a NUL-terminated string; name_fill covers the bytes after the terminator. |
name_fill | input | Byte filling the name slot after its terminator. The engine stops at the terminator so this never changes behaviour, but the original tool left 0xCC there and it has to be preserved. Omit it for a zero-filled slot. |
shadow | input | Selects the CBackGround::SetLightShadowEnable path of Command_47. |
yield | derived | Pause the script here for one game frame; the next command runs on the following update. Lines without it keep running immediately. |
Engine calls
Engine functions this handler was observed calling:
CBackGround::SetBgDisp(unsigned int,unsigned char)CBackGround::SetBgVisibility(unsigned int,float,char*,bool,bool)CBackGround::SetLightShadowEnable(unsigned char,const char*)
Bit masks
Masks the handler applies to its argument byte or operand words:
0x0003 0x0001 0x00FF