Skip to content

0x70 — set_bgm

Reads two u32 operands, builds a stack RADIBGM_INF, and calls CRadiSound::SetBgm(const RADIBGM_INF*).

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

At a glance

Opcode0x70 (112)
HandlerCRadiScript::Command_70
SignatureCRadiScript::Command_70(int,SCR_DATA*,unsigned int,unsigned int)
Translation unitr_script_run7.cpp
Address— debug build; click for all 3
Handler size0x90 (144 bytes)
Engine nameset_bgm
FamilyPrimitives, textures, sound and movies
Command size4 + extra_words * 4 bytes

Handler behaviour

Reads two u32 operands, builds a stack RADIBGM_INF, and calls CRadiSound::SetBgm(const RADIBGM_INF*).

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   |  0x70          |
+----------------+----------------+----------------+----------------+

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

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

FieldRoleMeaning
arginputRaw handler argument byte from the command header. It is printed only when it differs from the value the named fields already imply, so seeing it means the command uses an unusual argument encoding.
info0inputFirst word of the RADIBGM_INF record passed to CRadiSound::SetBgm.
info1inputSecond word of the RADIBGM_INF record passed to CRadiSound::SetBgm.
yieldderivedPause 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:

  • CRadiSound::SetBgm(const RADIBGM_INF*)

Bit masks

Masks the handler applies to its argument byte or operand words:

0x0040 0x0003 0x7FFF 0x0080 0xFFFF