#define __ARG_N | ( | _1, | |
_2, | |||
_3, | |||
_4, | |||
_5, | |||
_6, | |||
_7, | |||
_8, | |||
_9, | |||
_10, | |||
_11, | |||
_12, | |||
_13, | |||
_14, | |||
_15, | |||
_16, | |||
_17, | |||
_18, | |||
_19, | |||
_20, | |||
_21, | |||
_22, | |||
_23, | |||
_24, | |||
_25, | |||
_26, | |||
_27, | |||
_28, | |||
_29, | |||
_30, | |||
_31, | |||
_32, | |||
_33, | |||
_34, | |||
_35, | |||
_36, | |||
_37, | |||
_38, | |||
_39, | |||
_40, | |||
_41, | |||
_42, | |||
_43, | |||
_44, | |||
_45, | |||
_46, | |||
_47, | |||
_48, | |||
_49, | |||
_50, | |||
_51, | |||
_52, | |||
_53, | |||
_54, | |||
_55, | |||
_56, | |||
_57, | |||
_58, | |||
_59, | |||
_60, | |||
_61, | |||
_62, | |||
_63, | |||
N, | |||
... ) N |
#define __RSEQ_N | ( | ) |
#define AddF | ( | VAR, | |
FLOAT_VALUE ) EVT_CMD(EVT_OP_ADDF, VAR, FLOAT_VALUE), |
#define AreaByte | ( | INDEX | ) | ((INDEX) - EVT_AREA_BYTE_OFFSET) |
Local Saved Byte.
A variable local to the current world area, saved in the savefile. Cleared upon a new world area.
Rarely used. Most common use is for NPCs with dialogue that changes depending on the number of times you have interacted with them in their 'recent memory' (i.e. until you leave the area).
Range: 0 <= v < 0x10
#define AreaFlag | ( | INDEX | ) | ((INDEX) - EVT_AREA_FLAG_OFFSET) |
Local Save World Flag.
A boolean variable local to the current world area, saved in the savefile. Cleared upon entering a new world area.
Used to track whether items that respawn, such as coins, Goomnuts, or Koopa Leaves, have been collected.
Range: 0 <= v < 0x100
#define ArrayFlag | ( | INDEX | ) | ((INDEX) - EVT_ARRAY_FLAG_OFFSET) |
User Flag.
A boolean variable stored within the current thread's flag array. The flag array is distinct from the word array (unlike UseBuf and UseFBuf).
Range: 0 <= v
#define ArrayVar | ( | INDEX | ) | ((INDEX) - EVT_ARRAY_VAR_OFFSET) |
User Word.
A variable stored within the current thread's array. You can load an array with UseArray or temporarily allocate one with MallocArray, then get/set values with the ArrayVar(index)
macro.
Range: 0 <= v
#define BindPadlock | ( | EVT_SOURCE, | |
TRIGGER, | |||
COLLIDER_ID, | |||
ITEM_LIST, | |||
UNK_A3, | |||
TRIGGER_PTR_OUTVAR ) EVT_CMD(EVT_OP_BIND_PADLOCK, (Bytecode) EVT_SOURCE, TRIGGER, COLLIDER_ID, (Bytecode) ITEM_LIST, UNK_A3, TRIGGER_PTR_OUTVAR), |
Similar to BindTrigger, but also takes arguments for the item list to show.
Referenced by MAP_RODATA_PAD().
#define BindTrigger | ( | EVT_SOURCE, | |
TRIGGER, | |||
COLLIDER_ID, | |||
UNK_A3, | |||
TRIGGER_PTR_OUTVAR ) EVT_CMD(EVT_OP_BIND_TRIGGER, (Bytecode) EVT_SOURCE, TRIGGER, (Bytecode) COLLIDER_ID, UNK_A3, TRIGGER_PTR_OUTVAR), |
Sets up a script to launch when a particular event is triggered.
Valid triggers:
For the COLLIDER_ID
param, the following values are accepted:
Only one thread will run for a trigger at once.
Referenced by MAP_RODATA_PAD(), and MAP_RODATA_PAD().
VAR &= CONST
, but CONST is treated as-is rather than dereferenced with evt_get_variable.
VAR |= CONST
, but CONST is treated as-is rather than dereferenced with evt_get_variable.
#define BreakLoop EVT_CMD(EVT_OP_BREAK_LOOP), |
Breaks out of the innermost loop.
#define BreakSwitch EVT_CMD(EVT_OP_BREAK_SWITCH), |
Marks the end of a switch case.
Gets the s32 at the given offset of the buffer and stores it in the given variable, without consuming it.
#define BufRead1 | ( | VAR | ) | EVT_CMD(EVT_OP_BUF_READ1, VAR), |
Consumes the next s32 from the buffer and stores it in the given variable.
Consumes the next two s32s from the buffer and stores them in the given variables.
Consumes the next three s32s from the buffer and stores them in the given variables.
Consumes the next four s32s from the buffer and stores them in the given variables.
Calls a given C EVT API function with any number of arguments.
An API function has the following signature:
ApiStatus ApiFunction(Evt* script, s32 isInitialCall);
This function could then be called with the following command:
Call(ApiFunction)
The given arguments can be accessed from the API function using thread->ptrReadPos
.
Referenced by A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), MAP_RODATA_PAD(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define CaseAndEq | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_AND_EQ, RVAR), |
Marks the start of a switch case that executes only if LVAR == RVAR
.
It also marks the end of any previous case. Similar to CaseOrEq, CaseAndEq has fallthrough. However, if LVAR != RVAR
, fallthrough does not apply.
#define CaseDefault EVT_CMD(EVT_OP_CASE_DEFAULT), |
Marks the start of a switch case that executes unconditionally. It also marks the end of any previous case.
Referenced by MAP_RODATA_PAD().
#define CaseEq | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_EQ, RVAR), |
Marks the start of a switch case that executes only if LVAR == RVAR
. It also marks the end of any previous case.
Referenced by MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define CaseFlag | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_FLAG, RVAR), |
Marks the start of a switch case that executes only if the RVAR
flag is set on LVAR
, i.e.
(LVAR & RVAR) != 1
. It also marks the end of any previous case.
#define CaseGe | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_GE, RVAR), |
Marks the start of a switch case that executes only if LVAR >= RVAR
. It also marks the end of any previous case.
Referenced by MAP_RODATA_PAD().
#define CaseGt | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_GT, RVAR), |
Marks the start of a switch case that executes only if LVAR <= RVAR
. It also marks the end of any previous case.
#define CaseLe | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_LE, RVAR), |
Marks the start of a switch case that executes only if LVAR > RVAR
. It also marks the end of any previous case.
#define CaseLt | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_LT, RVAR), |
Marks the start of a switch case that executes only if LVAR < RVAR
. It also marks the end of any previous case.
Referenced by MAP_RODATA_PAD().
#define CaseNe | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_NE, RVAR), |
Marks the start of a switch case that executes only if LVAR != RVAR
. It also marks the end of any previous case.
#define CaseOrEq | ( | RVAR | ) | EVT_CMD(EVT_OP_CASE_OR_EQ, RVAR), |
Marks the start of a switch case that executes only if LVAR == RVAR
.
It also marks the end of any previous case. Unlike CaseEq, CaseOrEq will fallthrough to the next case until EndCaseGroup is reached.
Referenced by MAP_RODATA_PAD().
Marks the start of a switch case that executes only if MIN <= LVAR <= MAX
(inclusive).
It also marks the end of any previous case.
#define ChildThread EVT_CMD(EVT_OP_CHILD_THREAD), |
Marks the start of a child thread block.
Commands between this and a matching EndChildThread will be executed as a new child thread instead of on the current thread.
Child threads are killed if the parent thread dies, so the following script does NOT set the player's position:
ChildThread Wait_SECONDS(1) // child thread will be killed whilst waiting Call(SetPlayerPos, NPC_DISPOSE_LOCATION) // will not be executed EndChildThread Return // parent thread dies
#define DebugPrintVar | ( | VAR | ) | EVT_CMD(EVT_OP_DEBUG_PRINT_VAR, VAR), |
Prints variable name and value.
#define DivF | ( | VAR, | |
FLOAT_VALUE ) EVT_CMD(EVT_OP_DIVF, VAR, FLOAT_VALUE), |
#define Else EVT_CMD(EVT_OP_ELSE), |
Marks the end of an if statement and the start of the else block.
Referenced by MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define End EVT_CMD(EVT_OP_END), |
Signals the end of EVT script data. A script missing this will likely crash on load.
Referenced by A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), MAP_RODATA_PAD(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define EndCaseGroup EVT_CMD(EVT_OP_END_CASE_GROUP), |
Marks the end of a switch case group (CaseOrEq and/or CaseAndEq), stopping fallthrough.
Referenced by MAP_RODATA_PAD().
#define EndChildThread EVT_CMD(EVT_OP_END_CHILD_THREAD), |
Marks the end of a child thread block.
#define EndIf EVT_CMD(EVT_OP_END_IF), |
Marks the end of an if statement or an else block.
Referenced by A(), A(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define EndLoop EVT_CMD(EVT_OP_END_LOOP), |
#define EndSwitch EVT_CMD(EVT_OP_END_SWITCH), |
Marks the end of a switch statement and any case.
Referenced by MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define EndThread EVT_CMD(EVT_OP_END_THREAD), |
#define EVT_AREA_BYTE_CUTOFF -140000000 |
#define EVT_AREA_BYTE_OFFSET 150000000 |
#define EVT_AREA_FLAG_CUTOFF -100000000 |
#define EVT_AREA_FLAG_OFFSET 110000000 |
#define EVT_ARRAY_FLAG_CUTOFF -200000000 |
#define EVT_ARRAY_FLAG_OFFSET 210000000 |
#define EVT_ARRAY_VAR_CUTOFF -180000000 |
#define EVT_ARRAY_VAR_OFFSET 190000000 |
On each frame, the EVT manager will continue executing commands in all threads until a blocking command is encountered.
This means that if you have a thread that loops but does not block between iterations, the game will freeze! Avoid this by inserting a blocking command such as Wait(1) in the loop body.
Also note that threads are never executed in parallel. If your EVT script lacks blocking commands, it will be executed all in one go, and race conditions cannot occur.
The following subset of EVT commands are blocking:
#define EVT_DEBUG_LOG | ( | STRING | ) | EVT_CMD(EVT_OP_DEBUG_LOG, STRING), |
Does nothing in release version.
#define EVT_ENTITY_ID_BIT 0x4000 |
An entity index.
Entities are assigned indices in the order they are created with Call(MakeEntity, ...). Supported in BindTrigger and BindPadlock only.
#define EVT_ENTITY_INDEX | ( | entityIndex | ) | ((entityIndex) + EVT_ENTITY_ID_BIT) |
Referenced by MAP_RODATA_PAD().
#define EVT_EXIT_DOUBLE_DOOR | ( | exitIdx, | |
map, | |||
entryIdx, | |||
colliderID, | |||
leftDoorModelID, | |||
rightDoorModelID ) |
#define EVT_EXIT_SPLIT_SINGLE_DOOR | ( | exitIdx, | |
map, | |||
entryIdx, | |||
colliderID, | |||
topModelID, | |||
bottomModelID, | |||
swingDir ) |
#define EVT_EXIT_WALK | ( | walkDistance, | |
exitIdx, | |||
map, | |||
entryIdx ) |
#define EVT_EXIT_WALK_FIXED | ( | walkDistance, | |
exitIdx, | |||
map, | |||
entryIdx ) |
#define EVT_EXIT_WALK_NOK | ( | walkDistance, | |
exitIdx, | |||
map, | |||
entryIdx ) |
#define EVT_FIXED_CUTOFF -220000000 |
#define EVT_FIXED_OFFSET 230000000 |
Referenced by evt_float_to_fixed_var().
Progammatically converts Float --> f32.
Referenced by evt_fixed_var_to_float().
#define EVT_GAME_BYTE_CUTOFF -160000000 |
#define EVT_GAME_BYTE_OFFSET 170000000 |
#define EVT_GAME_FLAG_CUTOFF -120000000 |
#define EVT_GAME_FLAG_OFFSET 130000000 |
#define EVT_IGNORE_ARG -250000000 |
Referenced by evt_get_float_variable(), evt_get_variable(), evt_get_variable_index(), and evt_get_variable_index_alt().
#define EVT_INDEX_OF_AREA_BYTE | ( | v | ) | ((v) + EVT_AREA_BYTE_OFFSET) |
#define EVT_INDEX_OF_AREA_FLAG | ( | v | ) | ((v) + EVT_AREA_FLAG_OFFSET) |
#define EVT_INDEX_OF_ARRAY_FLAG | ( | v | ) | ((v) + EVT_ARRAY_FLAG_OFFSET) |
#define EVT_INDEX_OF_ARRAY_VAR | ( | v | ) | ((v) + EVT_ARRAY_VAR_OFFSET) |
#define EVT_INDEX_OF_GAME_BYTE | ( | v | ) | ((v) + EVT_GAME_BYTE_OFFSET) |
#define EVT_INDEX_OF_GAME_FLAG | ( | v | ) | ((v) + EVT_GAME_FLAG_OFFSET) |
#define EVT_INDEX_OF_LOCAL_FLAG | ( | v | ) | ((v) + EVT_LOCAL_FLAG_OFFSET) |
#define EVT_INDEX_OF_LOCAL_VAR | ( | v | ) | ((v) + EVT_LOCAL_VAR_OFFSET) |
#define EVT_INDEX_OF_MAP_FLAG | ( | v | ) | ((v) + EVT_MAP_FLAG_OFFSET) |
#define EVT_INDEX_OF_MAP_VAR | ( | v | ) | ((v) + EVT_MAP_VAR_OFFSET) |
#define EVT_LIMIT -270000000 |
#define EVT_LOCAL_FLAG_CUTOFF -60000000 |
#define EVT_LOCAL_FLAG_OFFSET 70000000 |
#define EVT_LOCAL_VAR_CUTOFF -20000000 |
Expressions in EVT instructions should be one of the following types:
evt_get_variable
and evt_get_float_variable
. Decimal constant. Despite the name, "floats" are actually stored as fixed-point values. Referenced by evt_get_float_variable(), evt_get_variable(), evt_get_variable_index(), evt_get_variable_index_alt(), evt_handle_print_debug_var(), evt_set_float_variable(), and evt_set_variable().
#define EVT_LOCAL_VAR_OFFSET 30000000 |
#define EVT_MAP_FLAG_CUTOFF -80000000 |
#define EVT_MAP_FLAG_OFFSET 90000000 |
#define EVT_MAP_VAR_CUTOFF -40000000 |
#define EVT_MAP_VAR_OFFSET 50000000 |
#define EVT_SETUP_CAMERA_DEFAULT | ( | ) |
#define EVT_VEC2F_ADD | ( | baseVar, | |
x, | |||
y ) EVT_VEC2_OP(AddF, baseVar, x, y) |
#define EVT_VEC2F_SET | ( | baseVar, | |
x, | |||
y ) EVT_VEC2_OP(SetF, baseVar, x, y) |
#define EVT_VEC2F_SUB | ( | baseVar, | |
x, | |||
y ) EVT_VEC2_OP(SubF, baseVar, x, y) |
#define EVT_VEC2I_ADD | ( | baseVar, | |
x, | |||
y ) EVT_VEC2_OP(Add, baseVar, x, y) |
#define EVT_VEC2I_SET | ( | baseVar, | |
x, | |||
y ) EVT_VEC2_OP(Set, baseVar, x, y) |
#define EVT_VEC2I_SUB | ( | baseVar, | |
x, | |||
y ) EVT_VEC2_OP(Sub, baseVar, x, y) |
#define EVT_VEC3F_ADD | ( | baseVar, | |
x, | |||
y, | |||
z ) EVT_VEC3_OP(AddF, baseVar, x, y, z) |
#define EVT_VEC3F_SET | ( | baseVar, | |
x, | |||
y, | |||
z ) EVT_VEC3_OP(SetF, baseVar, x, y, z) |
#define EVT_VEC3F_SUB | ( | baseVar, | |
x, | |||
y, | |||
z ) EVT_VEC3_OP(SubF, baseVar, x, y, z) |
#define EVT_VEC3I_ADD | ( | baseVar, | |
x, | |||
y, | |||
z ) EVT_VEC3_OP(Add, baseVar, x, y, z) |
#define EVT_VEC3I_SET | ( | baseVar, | |
x, | |||
y, | |||
z ) EVT_VEC3_OP(Set, baseVar, x, y, z) |
#define EVT_VEC3I_SUB | ( | baseVar, | |
x, | |||
y, | |||
z ) EVT_VEC3_OP(Sub, baseVar, x, y, z) |
#define Exec | ( | EVT_SOURCE | ) | EVT_CMD(EVT_OP_EXEC, (Bytecode) EVT_SOURCE), |
Launches a new thread.
The following values are copied from the current thread to the new thread:
Referenced by MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define ExecGetTID | ( | EVT_SOURCE, | |
OUTVAR ) EVT_CMD(EVT_OP_EXEC_GET_TID, (Bytecode) EVT_SOURCE, OUTVAR), |
Identical to Exec, but the newly-launched thread ID is stored in OUTVAR.
The other thread may be interacted with using KillThread, SuspendThread, ResumeThread, and IsThreadRunning.
#define ExecWait | ( | EVT_SOURCE | ) | EVT_CMD(EVT_OP_EXEC_WAIT, (Bytecode) EVT_SOURCE), |
Launches a new child thread.
Blocks for at least one frame unless the child thread is made to have a higher priority than the parent.
The following values are inherited and then copied back to the parent thread upon completion:
Child threads are killed, suspended, and resumed as their parents are, for example, a different thread using KillThread to kill a parent thread would also kill its child thread(s) launched by this command.
Referenced by A(), A(), A(), MAP_RODATA_PAD(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Gets the f32 at the given offset of the buffer and stores it in the given variable, without consuming it.
#define FBufRead1 | ( | VAR | ) | EVT_CMD(EVT_OP_FBUF_READ1, VAR), |
Consumes the next f32 from the buffer and stores it in the given variable.
Consumes the next two f32s from the buffer and stores them in the given variables.
Consumes the next three f32s from the buffer and stores them in the given variables.
Consumes the next four f32s from the buffer and stores them in the given variables.
#define Float | ( | DOUBLE | ) | ((Bytecode)FLOAT_ROUND(((DOUBLE) * 1024.0f)) - EVT_FIXED_OFFSET) |
#define FLOAT_TO_FIXED | ( | x | ) | (((x) * 1024.0f) + -EVT_FIXED_OFFSET) |
Progammatically converts f32 --> Float.
#define GameByte | ( | INDEX | ) | ((INDEX) - EVT_GAME_BYTE_OFFSET) |
Global Saved Byte.
A variable saved in the save file.
Used for almost all savefile state.
#define GameFlag | ( | INDEX | ) | ((INDEX) - EVT_GAME_FLAG_OFFSET) |
Global Save World Flag.
A boolean variable saved in the savefile.
Used to track whether badges, items, etc. have been collected or whether NPCs have been interacted with.
Range: 0 <= v < 0x800
#define Goto | ( | LABEL_ID | ) | EVT_CMD(EVT_OP_GOTO, LABEL_ID), |
Marks the beginning of an if statement that only executes if LVAR == RVAR
.
IfEq(LVAR, RVAR) ... Else ... EndIf
The Else block is optional.
Referenced by MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Marks the beginning of an if statement that only executes if the RVAR flag is set on LVAR, i.e.
(LVAR & RVAR) != 1
.
Marks the beginning of an if statement that only executes if LVAR >= RVAR
.
Marks the beginning of an if statement that only executes if LVAR > RVAR
.
Marks the beginning of an if statement that only executes if LVAR < RVAR
.
Referenced by MAP_RODATA_PAD().
Marks the beginning of an if statement that only executes if LVAR != RVAR
.
Referenced by MAP_RODATA_PAD().
Marks the beginning of an if statement that only executes if the RVAR flag is unset on LVAR, i.e.
(LVAR & RVAR) == 0
.
Sets OUTVAR to TRUE/FALSE depending on whether a thread with the given ID exists (i.e. has not been killed).
#define Jump | ( | EVT_SOURCE | ) | EVT_CMD(EVT_OP_JUMP, (Bytecode) EVT_SOURCE), |
Jumps to a given instruction pointer and begins execution from there.
You can jump to a different EVT source and labels etc. will be loaded as expected. The timescale for the current thread is also reset to the global default.
#define KillThread | ( | TID | ) | EVT_CMD(EVT_OP_KILL_THREAD, TID), |
Kills a thread by its thread ID.
#define Label | ( | LABEL_ID | ) | EVT_CMD(EVT_OP_LABEL, LABEL_ID), |
Marks this point in the script as a Goto target.
Range: 0 <= LABEL_ID <= 0x16
Referenced by MAP_RODATA_PAD().
#define LocalFlag | ( | INDEX | ) | ((INDEX) - EVT_LOCAL_FLAG_OFFSET) |
Local Flag.
A boolean variable local to the current thread. LFs are copied to any threads created by this one (Exec, ExecWait, Thread, ChildThread). Additionally, ExecWait copies LFs back from the spawned thread when it completes.
Range: 0 <= v < 0x60
#define LocalVar | ( | INDEX | ) | ((INDEX) - EVT_LOCAL_VAR_OFFSET) |
Local Word.
A variable local to the current thread. LWs are copied to any threads created by this one (Exec, ExecWait, Thread, ChildThread). Additionally, ExecWait copies LWs back from the spawned thread when it completes.
Range: 0 <= v < 0x10
#define Loop | ( | TIMES | ) | EVT_CMD(EVT_OP_LOOP, TIMES), |
Marks the beginning of a loop.
Loop(TIMES) ... EndLoop
The variable or value given in TIMES
is decremented upon each loop iteration. After the "1" iteration completes, the loop exits. Use Loop(0) for an infinite loop; make sure it breaks or blocks to avoid a freeze.
Up to 8 loops may be nested within a single script.
Referenced by A(), A(), A(), A(), A(), A(), and MAP_RODATA_PAD().
Referenced by A(), A(), A(), A(), A(), A(), A(), A(), A(), exec_ShakeCamX(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Referenced by A(), A(), A(), A(), A(), exec_ShakeCamX(), make_vine_interpolation(), and MAP_RODATA_PAD().
Referenced by A(), A(), A(), A(), A(), exec_ShakeCamX(), make_vine_interpolation(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Referenced by A(), exec_ShakeCamX(), make_vine_interpolation(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Referenced by A(), A(), A(), A(), A(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Referenced by A(), A(), A(), A(), A(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Referenced by A(), A(), A(), A(), A(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define MallocArray | ( | SIZE, | |
OUT_PTR_VAR ) EVT_CMD(EVT_OP_MALLOC_ARRAY, SIZE, OUT_PTR_VAR), |
Allocates a new array of the given size for use with ArrayVar(INDEX)
.
EVT scripts do not have to worry about freeing this array.
#define MapFlag | ( | INDEX | ) | ((INDEX) - EVT_MAP_FLAG_OFFSET) |
Global Flag.
A boolean variable global to all threads. Cleared upon entering a new map.
Range: 0 <= v < 0x60
#define MapVar | ( | INDEX | ) | ((INDEX) - EVT_MAP_VAR_OFFSET) |
Global Word.
A variable global to all threads. Cleared upon entering a new map.
Range: 0 <= v < 0x10
#define MulF | ( | VAR, | |
FLOAT_VALUE ) EVT_CMD(EVT_OP_MULF, VAR, FLOAT_VALUE), |
#define PlayEffect1 | ( | effect | ) | Call(PlayEffect_impl, effect, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
#define PlayEffect10 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
f, | |||
g, | |||
h ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, 0, 0, 0, 0) |
#define PlayEffect11 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
f, | |||
g, | |||
h, | |||
i ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, i, 0, 0, 0) |
#define PlayEffect12 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
f, | |||
g, | |||
h, | |||
i, | |||
j ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, i, j, 0, 0) |
#define PlayEffect13 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
f, | |||
g, | |||
h, | |||
i, | |||
j, | |||
k ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, i, j, k, 0) |
#define PlayEffect14 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
f, | |||
g, | |||
h, | |||
i, | |||
j, | |||
k, | |||
l ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, i, j, k, l) |
#define PlayEffect2 | ( | effect, | |
subtype ) Call(PlayEffect_impl, effect, subtype, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
#define PlayEffect3 | ( | effect, | |
subtype, | |||
a ) Call(PlayEffect_impl, effect, subtype, a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
#define PlayEffect4 | ( | effect, | |
subtype, | |||
a, | |||
b ) Call(PlayEffect_impl, effect, subtype, a, b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
#define PlayEffect5 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c ) Call(PlayEffect_impl, effect, subtype, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
#define PlayEffect6 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, 0, 0, 0, 0, 0, 0, 0, 0) |
#define PlayEffect7 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d, | |||
e ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, 0, 0, 0, 0, 0, 0, 0) |
#define PlayEffect8 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
f ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, 0, 0, 0, 0, 0, 0) |
#define PlayEffect9 | ( | effect, | |
subtype, | |||
a, | |||
b, | |||
c, | |||
d, | |||
e, | |||
f, | |||
g ) Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, 0, 0, 0, 0, 0) |
Address/pointer constant.
Referenced by A(), A(), A(), MAP_RODATA_PAD(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define ResumeGroup | ( | GROUP | ) | EVT_CMD(EVT_OP_RESUME_GROUP, GROUP), |
Resumes all threads in a group.
#define ResumeOthers | ( | GROUP | ) | EVT_CMD(EVT_OP_RESUME_OTHERS, GROUP), |
Resumes all threads in a group, except the current thread.
#define ResumeThread | ( | TID | ) | EVT_CMD(EVT_OP_RESUME_THREAD, TID), |
Resumes a thread by its thread ID.
#define Return EVT_CMD(EVT_OP_RETURN), |
Kills the current EVT thread.
A script missing a return will live - but do nothing - forever, or until something else kills it (e.g. leaving the map).
Referenced by A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), MAP_RODATA_PAD(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Sets the given variable to a given value casted to an integer.
Referenced by A(), A(), A(), A(), A(), A(), A(), MAP_RODATA_PAD(), MAP_RODATA_PAD(), and MAP_RODATA_PAD().
Sets the given variable to a given value, skipping the evt_get_variable call.
That is, SetConst(LocalVar(0), LocalVar(1))
will set LocalVar(0)
to 0xFE363C81
instead of copying the value of LocalVar(1)
into LocalVar(0)
.
#define SetF | ( | VAR, | |
FLOAT_VALUE ) EVT_CMD(EVT_OP_SETF, VAR, FLOAT_VALUE), |
Sets the given variable to a given value, but supports Floats.
#define SetGroup | ( | GROUP | ) | EVT_CMD(EVT_OP_SET_GROUP, GROUP), |
Sets the current thread's group. Group value meanings are currently not known.
Referenced by MAP_RODATA_PAD().
#define SetPriority | ( | PRIORITY | ) | EVT_CMD(EVT_OP_SET_PRIORITY, PRIORITY), |
Sets the current thread's priority. Higher-priority threads execute before lower-priority threads on each frame.
#define SetTimescale | ( | TIMESCALE | ) | EVT_CMD(EVT_OP_SET_TIMESCALE, TIMESCALE), |
Sets the current thread's timescale. This is a multiplier applied to Wait and Wait_SECONDS.
#define SetUP_CAMERA_ALT_NO_LEAD | ( | ) |
#define SetUP_CAMERA_MINIMAL | ( | ) | Call(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096) |
#define SetUP_CAMERA_NO_LEAD | ( | ) |
Referenced by MAP_RODATA_PAD().
#define SubF | ( | VAR, | |
FLOAT_VALUE ) EVT_CMD(EVT_OP_SUBF, VAR, FLOAT_VALUE), |
#define SuspendGroup | ( | GROUP | ) | EVT_CMD(EVT_OP_SUSPEND_GROUP, GROUP), |
Suspends all threads in a group.
#define SuspendOthers | ( | GROUP | ) | EVT_CMD(EVT_OP_SUSPEND_OTHERS, GROUP), |
Suspends all threads in a group, except the current thread.
#define SuspendThread | ( | TID | ) | EVT_CMD(EVT_OP_SUSPEND_THREAD, TID), |
Suspends all threads in a group, except the current thread.
#define Switch | ( | LVAR | ) | EVT_CMD(EVT_OP_SWITCH, LVAR), |
Marks the start of a switch statement.
Switch(LVAR) CaseEq(RVAR) ... EndSwitch
Unlike C, EVT switch statements do not have fallthrough by default. If you want to opt-in to fallthrough, use CaseOrEq.
Up to 8 switch statements may be nested within a single script.
Referenced by MAP_RODATA_PAD(), and MAP_RODATA_PAD().
#define SwitchConst | ( | LCONST | ) | EVT_CMD(EVT_OP_SWITCH_CONST, LCONST), |
Marks the start of a switch statement where the given value is treated as-is instead of using evt_get_variable.
That is, SwitchConst(LocalVar(0))
will switch over the value 0xFE363C80
instead of the value contained within LocalVar(0)
.
#define Thread EVT_CMD(EVT_OP_THREAD), |
#define Unbind EVT_CMD(EVT_OP_UNBIND), |
Unbinds the current thread from the trigger it was bound to, if any.
Loads an s32 array pointer into the current thread for use with ArrayVar(INDEX)
.
Loads a s32 pointer for use with subsequent EVT_BUF_READ commands.
Identical to UseBuf. Beware that the int buffer and the float buffer are not distinct.
#define UseFlagArray | ( | PACKED_FLAGS_PTR | ) | EVT_CMD(EVT_OP_USE_FLAG_ARRAY, (Bytecode) PACKED_FLAGS_PTR), |
Loads an s32 array pointer into the current thread for use with UF(INDEX)
.
Flags are stored in a 'packed' structure where indices refer to bits.
#define Wait | ( | NUM_FRAMES | ) | EVT_CMD(EVT_OP_WAIT_FRAMES, NUM_FRAMES), |
#define WaitSecs | ( | NUM_SECONDS | ) | EVT_CMD(EVT_OP_WAIT_SECS, NUM_SECONDS), |
Blocks for the given number of seconds.