Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
evt.c File Reference

Go to the source code of this file.

Functions

Bytecodeevt_find_label (Evt *script, s32 arg1)
 
Bytecodeevt_skip_if (Evt *script)
 
Bytecodeevt_skip_else (Evt *script)
 
Bytecodeevt_goto_end_case (Evt *script)
 
Bytecodeevt_goto_next_case (Evt *script)
 
Bytecodeevt_goto_end_loop (Evt *script)
 
f32 evt_fixed_var_to_float (Bytecode scriptVar)
 
Bytecode evt_float_to_fixed_var (f32 value)
 
ApiStatus evt_handle_return (Evt *script)
 
ApiStatus evt_handle_label (Evt *script)
 
ApiStatus evt_handle_goto (Evt *script)
 
ApiStatus evt_handle_loop (Evt *script)
 
ApiStatus evt_handle_end_loop (Evt *script)
 
ApiStatus evt_handle_break_loop (Evt *script)
 
ApiStatus evt_handle_wait (Evt *script)
 
ApiStatus evt_handle_wait_seconds (Evt *script)
 
ApiStatus evt_handle_if_equal (Evt *script)
 
ApiStatus evt_handle_if_not_equal (Evt *script)
 
ApiStatus evt_handle_if_less (Evt *script)
 
ApiStatus evt_handle_if_greater (Evt *script)
 
ApiStatus evt_handle_if_less_equal (Evt *script)
 
ApiStatus evt_handle_if_greater_equal (Evt *script)
 
ApiStatus evt_handle_if_AND (Evt *script)
 
ApiStatus evt_handle_if_not_AND (Evt *script)
 
ApiStatus evt_handle_else (Evt *script)
 
ApiStatus evt_handle_end_if (Evt *script)
 
ApiStatus evt_handle_switch (Evt *script)
 
ApiStatus evt_handle_switch_const (Evt *script)
 
ApiStatus evt_handle_case_equal (Evt *script)
 
ApiStatus evt_handle_case_not_equal (Evt *script)
 
ApiStatus evt_handle_case_less (Evt *script)
 
ApiStatus evt_handle_case_less_equal (Evt *script)
 
ApiStatus evt_handle_case_greater (Evt *script)
 
ApiStatus evt_handle_case_greater_equal (Evt *script)
 
ApiStatus evt_handle_case_range (Evt *script)
 
ApiStatus evt_handle_case_default (Evt *script)
 
ApiStatus evt_handle_case_AND (Evt *script)
 
ApiStatus evt_handle_case_equal_OR (Evt *script)
 
ApiStatus evt_handle_case_equal_AND (Evt *script)
 
ApiStatus evt_handle_end_case_group (Evt *script)
 
ApiStatus evt_handle_break_case (Evt *script)
 
ApiStatus evt_handle_end_switch (Evt *script)
 
ApiStatus evt_handle_set_var (Evt *script)
 
ApiStatus evt_handle_set_const (Evt *script)
 
ApiStatus evt_handle_set_float (Evt *script)
 
ApiStatus evt_handle_add (Evt *script)
 
ApiStatus evt_handle_subtract (Evt *script)
 
ApiStatus evt_handle_multiply (Evt *script)
 
ApiStatus evt_handle_divide (Evt *script)
 
ApiStatus evt_handle_mod (Evt *script)
 
ApiStatus evt_handle_addF (Evt *script)
 
ApiStatus evt_handle_subtractF (Evt *script)
 
ApiStatus evt_handle_multiplyF (Evt *script)
 
ApiStatus evt_handle_divideF (Evt *script)
 
ApiStatus evt_handle_set_int_buffer_ptr (Evt *script)
 
ApiStatus evt_handle_set_float_buffer_ptr (Evt *script)
 
ApiStatus evt_handle_get_1_word (Evt *script)
 
ApiStatus evt_handle_get_2_word (Evt *script)
 
ApiStatus evt_handle_get_3_word (Evt *script)
 
ApiStatus evt_handle_get_4_word (Evt *script)
 
ApiStatus evt_handle_get_Nth_word (Evt *script)
 
ApiStatus evt_handle_get_1_float (Evt *script)
 
ApiStatus evt_handle_get_2_float (Evt *script)
 
ApiStatus evt_handle_get_3_float (Evt *script)
 
ApiStatus evt_handle_get_4_float (Evt *script)
 
ApiStatus evt_handle_get_Nth_float (Evt *script)
 
ApiStatus evt_handle_set_array (Evt *script)
 
ApiStatus evt_handle_set_flag_array (Evt *script)
 
ApiStatus evt_handle_allocate_array (Evt *script)
 
ApiStatus evt_handle_AND (Evt *script)
 
ApiStatus evt_handle_AND_const (Evt *script)
 
ApiStatus evt_handle_OR (Evt *script)
 
ApiStatus evt_handle_OR_const (Evt *script)
 
ApiStatus evt_handle_call (Evt *script)
 
ApiStatus evt_handle_exec1 (Evt *script)
 
ApiStatus evt_handle_exec1_get_id (Evt *script)
 
ApiStatus evt_handle_exec_wait (Evt *script)
 
ApiStatus evt_handle_jump (Evt *script)
 
s32 evt_trigger_on_activate_exec_script (Trigger *trigger)
 
ApiStatus evt_handle_bind (Evt *script)
 
ApiStatus evt_handle_unbind (Evt *script)
 
ApiStatus evt_handle_kill (Evt *script)
 
ApiStatus evt_handle_set_priority (Evt *script)
 
ApiStatus evt_handle_set_timescale (Evt *script)
 
ApiStatus evt_handle_set_group (Evt *script)
 
ApiStatus evt_handle_suspend_all (Evt *script)
 
ApiStatus evt_handle_resume_all (Evt *script)
 
ApiStatus evt_handle_suspend_others (Evt *script)
 
ApiStatus evt_handle_resume_others (Evt *script)
 
ApiStatus evt_handle_suspend (Evt *script)
 
ApiStatus evt_handle_resume (Evt *script)
 
ApiStatus evt_handle_does_script_exist (Evt *script)
 
s32 evt_trigger_on_activate_lock (Trigger *trigger)
 
ApiStatus evt_handle_bind_lock (Evt *script)
 
ApiStatus evt_handle_thread (Evt *script)
 
ApiStatus evt_handle_end_thread (Evt *script)
 
ApiStatus evt_handle_child_thread (Evt *script)
 
ApiStatus evt_handle_end_child_thread (Evt *script)
 
ApiStatus evt_handle_debug_log (Evt *script)
 
ApiStatus evt_handle_print_debug_var (Evt *script)
 
ApiStatus func_802C739C (Evt *script)
 
ApiStatus func_802C73B0 (Evt *script)
 
ApiStatus func_802C73B8 (Evt *script)
 
ApiStatus evt_handle_debug_breakpoint (Evt *script)
 
s32 evt_execute_next_command (Evt *script)
 
s32 evt_get_variable (Evt *script, Bytecode var)
 
s32 evt_get_variable_index (Evt *script, s32 var)
 
s32 evt_get_variable_index_alt (s32 var)
 
s32 evt_set_variable (Evt *script, Bytecode var, s32 value)
 
f32 evt_get_float_variable (Evt *script, Bytecode var)
 
f32 evt_set_float_variable (Evt *script, Bytecode var, f32 value)
 

Variables

u32gMapFlags
 
s32gMapVars
 
char evtDebugPrintBuffer [0x100]
 
BytecodeEvtCallingLine
 

Function Documentation

◆ evt_find_label()

Bytecode * evt_find_label ( Evt * script,
s32 arg1 )

Definition at line 2058 of file evt.c.

2058 {
2059 Bytecode* ret = script->ptrReadPos;
2060 s32 i;
2061
2062 if (arg1 < EVT_LIMIT) {
2063 return (Bytecode*) arg1;
2064 }
2065
2066 for (i = 0; i < ARRAY_COUNT(script->labelIndices); i++) {
2067 if (script->labelIndices[i] == arg1) {
2068 ret = script->labelPositions[i];
2069 break;
2070 }
2071 }
2072
2073 ASSERT(i < ARRAY_COUNT(script->labelIndices));
2074 return ret;
2075}
BSS s32 PopupMenu_SelectedIndex
#define ASSERT(condition)
s32 Bytecode
Definition evt.h:7
#define ARRAY_COUNT(arr)
Definition macros.h:40
#define EVT_LIMIT
Definition macros.h:48

Referenced by evt_handle_goto().

◆ evt_skip_if()

Bytecode * evt_skip_if ( Evt * script)

Definition at line 2077 of file evt.c.

2077 {
2078 s32 nestedIfDepth = 0;
2079 Bytecode* pos = script->ptrNextLine;
2081 s32 nargs;
2082
2083 do {
2084 opcode = *pos++;
2085 nargs = *pos++;
2086 pos += nargs;
2087
2088 switch (opcode) {
2089 case EVT_OP_END:
2090 PANIC();
2091 case EVT_OP_END_IF:
2092 nestedIfDepth--;
2093 if (nestedIfDepth < 0) {
2094 return pos;
2095 }
2096 break;
2097 case EVT_OP_IF_EQ:
2098 case EVT_OP_IF_NE:
2099 case EVT_OP_IF_LT:
2100 case EVT_OP_IF_GT:
2101 case EVT_OP_IF_LE:
2102 case EVT_OP_IF_GE:
2103 case EVT_OP_IF_FLAG:
2104 case EVT_OP_IF_NOT_FLAG:
2105 nestedIfDepth++;
2106 break;
2107 case EVT_OP_ELSE:
2108 if (nestedIfDepth == 0) {
2109 return pos;
2110 }
2111 break;
2112 }
2113 } while (TRUE);
2114}
Vec3s pos
Definition demo_api.c:17
@ EVT_OP_END_IF
Definition evt.h:29
@ EVT_OP_ELSE
Definition evt.h:28
@ EVT_OP_IF_LE
Args: a, b.
Definition evt.h:24
@ EVT_OP_IF_FLAG
Args: a, b.
Definition evt.h:26
@ EVT_OP_END
Definition evt.h:11
@ EVT_OP_IF_NE
Args: a, b.
Definition evt.h:21
@ EVT_OP_IF_GT
Args: a, b.
Definition evt.h:23
@ EVT_OP_IF_GE
Args: a, b.
Definition evt.h:25
@ EVT_OP_IF_NOT_FLAG
Args: a, b.
Definition evt.h:27
@ EVT_OP_IF_LT
Args: a, b.
Definition evt.h:22
@ EVT_OP_IF_EQ
Args: a, b.
Definition evt.h:20
#define PANIC()
Definition macros.h:55

Referenced by evt_handle_if_AND(), evt_handle_if_equal(), evt_handle_if_greater(), evt_handle_if_greater_equal(), evt_handle_if_less(), evt_handle_if_less_equal(), evt_handle_if_not_AND(), and evt_handle_if_not_equal().

◆ evt_skip_else()

Bytecode * evt_skip_else ( Evt * script)

Definition at line 2116 of file evt.c.

2116 {
2117 s32 nestedIfDepth = 0;
2118 Bytecode* pos = script->ptrNextLine;
2120 s32 nargs;
2121
2122 do {
2123 opcode = *pos++;
2124 nargs = *pos++;
2125 pos += nargs;
2126
2127 switch (opcode) {
2128 case EVT_OP_END:
2129 PANIC();
2130 case EVT_OP_END_IF:
2131 nestedIfDepth--;
2132 if (nestedIfDepth < 0) {
2133 return pos;
2134 }
2135 break;
2136 case EVT_OP_IF_EQ:
2137 nestedIfDepth++;
2138 break;
2139 case EVT_OP_IF_NE:
2140 nestedIfDepth++;
2141 break;
2142 case EVT_OP_IF_LT:
2143 nestedIfDepth++;
2144 break;
2145 case EVT_OP_IF_GT:
2146 nestedIfDepth++;
2147 break;
2148 case EVT_OP_IF_LE:
2149 nestedIfDepth++;
2150 break;
2151 case EVT_OP_IF_GE:
2152 nestedIfDepth++;
2153 break;
2154 case EVT_OP_IF_FLAG:
2155 nestedIfDepth++;
2156 break;
2157 case EVT_OP_IF_NOT_FLAG:
2158 nestedIfDepth++;
2159 break;
2160 }
2161 } while (TRUE);
2162}

Referenced by evt_handle_else().

◆ evt_goto_end_case()

Bytecode * evt_goto_end_case ( Evt * script)

Definition at line 2164 of file evt.c.

2164 {
2165 s32 switchDepth = 1;
2166 Bytecode* pos = script->ptrNextLine;
2167 s32* opcode;
2168 s32* nargs;
2169
2170 do {
2171 opcode = pos++;
2172 nargs = pos++;
2173 pos += *nargs;
2174
2175 switch (*opcode) {
2176 case EVT_OP_END:
2177 PANIC();
2178 break;
2179 case EVT_OP_SWITCH:
2180 switchDepth++;
2181 break;
2182 case EVT_OP_END_SWITCH:
2183 switchDepth--;
2184 if (switchDepth == 0) {
2185 return opcode;
2186 }
2187 break;
2188 }
2189 } while (TRUE);
2190}
@ EVT_OP_END_SWITCH
Definition evt.h:45
@ EVT_OP_SWITCH
Args: expression to test against.
Definition evt.h:30

Referenced by evt_handle_break_case(), evt_handle_case_AND(), evt_handle_case_default(), evt_handle_case_equal(), evt_handle_case_equal_AND(), evt_handle_case_equal_OR(), evt_handle_case_greater(), evt_handle_case_greater_equal(), evt_handle_case_less(), evt_handle_case_less_equal(), evt_handle_case_not_equal(), evt_handle_case_range(), and evt_handle_end_case_group().

◆ evt_goto_next_case()

Bytecode * evt_goto_next_case ( Evt * script)

Definition at line 2192 of file evt.c.

2192 {
2193 s32 switchDepth = 1;
2194 Bytecode* pos = script->ptrNextLine;
2195 s32* opcode;
2196 s32* nargs;
2197
2198 do {
2199 opcode = pos++;
2200 nargs = pos++;
2201 pos += *nargs;
2202
2203 switch (*opcode) {
2204 case EVT_OP_END:
2205 PANIC();
2206 break;
2207 case EVT_OP_SWITCH:
2208 switchDepth++;
2209 break;
2210 case EVT_OP_END_SWITCH:
2211 switchDepth--;
2212 if (switchDepth == 0) {
2213 return opcode;
2214 }
2215 break;
2216 case EVT_OP_CASE_EQ:
2217 case EVT_OP_CASE_NE:
2218 case EVT_OP_CASE_LT:
2219 case EVT_OP_CASE_GT:
2220 case EVT_OP_CASE_LE:
2221 case EVT_OP_CASE_GE:
2223 case EVT_OP_CASE_OR_EQ:
2224 case EVT_OP_CASE_AND_EQ:
2226 case EVT_OP_CASE_RANGE:
2227 if (switchDepth == 1) {
2228 return opcode;
2229 }
2230 break;
2231 }
2232 } while (TRUE);
2233}
@ EVT_OP_CASE_DEFAULT
Definition evt.h:38
@ EVT_OP_END_CASE_GROUP
Ends the case block of EVT_OP_CASE_OR_EQ condition(s).
Definition evt.h:42
@ EVT_OP_CASE_EQ
Args: expression to test for.
Definition evt.h:32
@ EVT_OP_CASE_GE
Args: expression to test for.
Definition evt.h:37
@ EVT_OP_CASE_OR_EQ
Args: expression to test for.
Definition evt.h:39
@ EVT_OP_CASE_RANGE
Args: from, to.
Definition evt.h:43
@ EVT_OP_CASE_AND_EQ
Args: expression to test for.
Definition evt.h:40
@ EVT_OP_CASE_LE
Args: expression to test for.
Definition evt.h:36
@ EVT_OP_CASE_NE
Args: expression to test for.
Definition evt.h:33
@ EVT_OP_CASE_GT
Args: expression to test for.
Definition evt.h:35
@ EVT_OP_CASE_LT
Args: expression to test for.
Definition evt.h:34

Referenced by evt_handle_case_AND(), evt_handle_case_equal(), evt_handle_case_equal_AND(), evt_handle_case_equal_OR(), evt_handle_case_greater(), evt_handle_case_greater_equal(), evt_handle_case_less(), evt_handle_case_less_equal(), evt_handle_case_not_equal(), evt_handle_case_range(), and evt_handle_end_case_group().

◆ evt_goto_end_loop()

Bytecode * evt_goto_end_loop ( Evt * script)

Definition at line 2235 of file evt.c.

2235 {
2236 s32 loopDepth = 0;
2237 Bytecode* pos = script->ptrNextLine;
2238 s32 opcode;
2239 s32 nargs;
2240
2241 do {
2242 opcode = *pos++;
2243 nargs = *pos++;
2244 pos += nargs;
2245
2246 switch (opcode) {
2247 case EVT_OP_END:
2248 PANIC();
2249 break;
2250 case EVT_OP_END_LOOP:
2251 loopDepth--;
2252 if (loopDepth < 0) {
2253 return pos;
2254 }
2255 break;
2256 case EVT_OP_LOOP:
2257 loopDepth++;
2258 break;
2259 }
2260 } while (TRUE);
2261}
@ EVT_OP_LOOP
Args: number of repeats (0 = infinite)
Definition evt.h:15
@ EVT_OP_END_LOOP
Definition evt.h:16

Referenced by evt_handle_break_loop().

◆ evt_fixed_var_to_float()

f32 evt_fixed_var_to_float ( Bytecode scriptVar)

Definition at line 19 of file evt.c.

19 {
22 } else {
23 return scriptVar;
24 }
25}
#define EVT_FIXED_CUTOFF
Definition macros.h:44
#define EVT_FIXED_TO_FLOAT(x)
Progammatically converts Float --> f32.
Definition macros.h:55

Referenced by evt_get_float_variable(), evt_get_variable(), evt_handle_print_debug_var(), evt_set_float_variable(), and evt_set_variable().

◆ evt_float_to_fixed_var()

Bytecode evt_float_to_fixed_var ( f32 value)

Definition at line 27 of file evt.c.

27 {
28 // not equivalent to the FLOAT_TO_FIXED() macro due to the s32 cast
29 // occuring *before* the add here and *after* the add in the macro
30 return (s32)(value * 1024.0f) + -EVT_FIXED_OFFSET;
31}
#define EVT_FIXED_OFFSET
Definition macros.h:45

Referenced by evt_set_float_variable().

◆ evt_handle_return()

ApiStatus evt_handle_return ( Evt * script)

Definition at line 33 of file evt.c.

33 {
35 return ApiStatus_FINISH;
36}
#define ApiStatus_FINISH
Definition evt.h:121
void kill_script(Evt *instanceToKill)

Referenced by evt_execute_next_command().

◆ evt_handle_label()

ApiStatus evt_handle_label ( Evt * script)

Definition at line 38 of file evt.c.

38 {
39 return ApiStatus_DONE2;
40}
#define ApiStatus_DONE2
Definition evt.h:119

Referenced by evt_execute_next_command().

◆ evt_handle_goto()

ApiStatus evt_handle_goto ( Evt * script)

Definition at line 42 of file evt.c.

42 {
43 script->ptrNextLine = evt_find_label(script, evt_get_variable(script, *script->ptrReadPos));
44 return ApiStatus_DONE2;
45}
s32 evt_get_variable(Evt *script, Bytecode var)
Definition evt.c:1725
Bytecode * evt_find_label(Evt *script, s32 arg1)
Definition evt.c:2058

Referenced by evt_execute_next_command().

◆ evt_handle_loop()

ApiStatus evt_handle_loop ( Evt * script)

Definition at line 47 of file evt.c.

47 {
48 Bytecode* args = script->ptrReadPos;
49 Bytecode var = *args++;
50 s32 loopDepth = ++script->loopDepth;
51
52 ASSERT(loopDepth < 8);
53
54 script->loopStartTable[loopDepth] = (s32)args;
55 script->loopCounterTable[loopDepth] = var;
56
57 return ApiStatus_DONE2;
58}

Referenced by evt_execute_next_command().

◆ evt_handle_end_loop()

ApiStatus evt_handle_end_loop ( Evt * script)

Definition at line 60 of file evt.c.

60 {
61 s32 loopDepth = script->loopDepth;
62 s32 loopCounter;
63
64 ASSERT(loopDepth >= 0);
65
66 loopCounter = script->loopCounterTable[loopDepth];
67
68 if (loopCounter == 0) {
69 script->ptrNextLine = (Bytecode*)script->loopStartTable[loopDepth];
70 return ApiStatus_DONE2;
71 }
72
73 if (loopCounter >= -10000000) {
74 script->loopCounterTable[loopDepth] = --loopCounter;
75 } else {
76 s32 var = evt_get_variable(script, loopCounter) - 1;
77 evt_set_variable(script, loopCounter, var);
78 loopCounter = var;
79 }
80
81 if (loopCounter != 0) {
82 script->ptrNextLine = (Bytecode*)script->loopStartTable[loopDepth];
83 return ApiStatus_DONE2;
84 } else {
85 script->loopDepth--;
86 return ApiStatus_DONE2;
87 }
88}
s32 evt_set_variable(Evt *script, Bytecode var, s32 value)
Definition evt.c:1882

Referenced by evt_execute_next_command().

◆ evt_handle_break_loop()

ApiStatus evt_handle_break_loop ( Evt * script)

Definition at line 90 of file evt.c.

90 {
91 ASSERT(script->loopDepth >= 0);
92 script->ptrNextLine = evt_goto_end_loop(script);
93 script->loopDepth--;
94 return ApiStatus_DONE2;
95}
Bytecode * evt_goto_end_loop(Evt *script)
Definition evt.c:2235

Referenced by evt_execute_next_command().

◆ evt_handle_wait()

ApiStatus evt_handle_wait ( Evt * script)

Definition at line 97 of file evt.c.

97 {
98 Bytecode* ptrReadPos = script->ptrReadPos;
99
100 if (!script->blocked) {
101 script->functionTemp[0] = evt_get_variable(script, *ptrReadPos);
102 script->blocked = 1;
103 }
104
105 if (script->functionTemp[0] == 0) {
106 return ApiStatus_DONE2;
107 }
108
109 script->functionTemp[0]--;
110 return !script->functionTemp[0];
111}

Referenced by evt_execute_next_command().

◆ evt_handle_wait_seconds()

ApiStatus evt_handle_wait_seconds ( Evt * script)

Definition at line 113 of file evt.c.

113 {
114 Bytecode* ptrReadPos = script->ptrReadPos;
115
116 if (!script->blocked) {
117 script->functionTemp[0] = evt_get_float_variable(script, *ptrReadPos) * 30.0f + 0.5;
118 script->blocked = 1;
119 }
120
121 if (script->functionTemp[0] == 0) {
122 return ApiStatus_DONE2;
123 }
124
125 script->functionTemp[0]--;
126 return !script->functionTemp[0];
127}
f32 evt_get_float_variable(Evt *script, Bytecode var)
Definition evt.c:1965

Referenced by evt_execute_next_command().

◆ evt_handle_if_equal()

ApiStatus evt_handle_if_equal ( Evt * script)

Definition at line 129 of file evt.c.

129 {
130 Bytecode* args = script->ptrReadPos;
131 s32 val1 = evt_get_variable(script, *args++);
132 s32 val2 = evt_get_variable(script, *args++);
133
134 if (val1 != val2) {
135 script->ptrNextLine = evt_skip_if(script);
136 return ApiStatus_DONE2;
137 }
138 return ApiStatus_DONE2;
139}
Bytecode * evt_skip_if(Evt *script)
Definition evt.c:2077

Referenced by evt_execute_next_command().

◆ evt_handle_if_not_equal()

ApiStatus evt_handle_if_not_equal ( Evt * script)

Definition at line 141 of file evt.c.

141 {
142 Bytecode* args = script->ptrReadPos;
143 s32 val1 = evt_get_variable(script, *args++);
144 s32 val2 = evt_get_variable(script, *args++);
145
146 if (val1 == val2) {
147 script->ptrNextLine = evt_skip_if(script);
148 return ApiStatus_DONE2;
149 }
150 return ApiStatus_DONE2;
151}

Referenced by evt_execute_next_command().

◆ evt_handle_if_less()

ApiStatus evt_handle_if_less ( Evt * script)

Definition at line 153 of file evt.c.

153 {
154 Bytecode* args = script->ptrReadPos;
155 s32 val1 = evt_get_variable(script, *args++);
156 s32 val2 = evt_get_variable(script, *args++);
157
158 if (val1 >= val2) {
159 script->ptrNextLine = evt_skip_if(script);
160 return ApiStatus_DONE2;
161 }
162 return ApiStatus_DONE2;
163}

Referenced by evt_execute_next_command().

◆ evt_handle_if_greater()

ApiStatus evt_handle_if_greater ( Evt * script)

Definition at line 165 of file evt.c.

165 {
166 Bytecode* args = script->ptrReadPos;
167 s32 val1 = evt_get_variable(script, *args++);
168 s32 val2 = evt_get_variable(script, *args++);
169
170 if (val1 <= val2) {
171 script->ptrNextLine = evt_skip_if(script);
172 return ApiStatus_DONE2;
173 }
174 return ApiStatus_DONE2;
175}

Referenced by evt_execute_next_command().

◆ evt_handle_if_less_equal()

ApiStatus evt_handle_if_less_equal ( Evt * script)

Definition at line 177 of file evt.c.

177 {
178 Bytecode* args = script->ptrReadPos;
179 s32 val1 = evt_get_variable(script, *args++);
180 s32 val2 = evt_get_variable(script, *args++);
181
182 if (val1 > val2) {
183 script->ptrNextLine = evt_skip_if(script);
184 return ApiStatus_DONE2;
185 }
186 return ApiStatus_DONE2;
187}

Referenced by evt_execute_next_command().

◆ evt_handle_if_greater_equal()

ApiStatus evt_handle_if_greater_equal ( Evt * script)

Definition at line 189 of file evt.c.

189 {
190 Bytecode* args = script->ptrReadPos;
191 s32 val1 = evt_get_variable(script, *args++);
192 s32 val2 = evt_get_variable(script, *args++);
193
194 if (val1 < val2) {
195 script->ptrNextLine = evt_skip_if(script);
196 return ApiStatus_DONE2;
197 }
198 return ApiStatus_DONE2;
199}

Referenced by evt_execute_next_command().

◆ evt_handle_if_AND()

ApiStatus evt_handle_if_AND ( Evt * script)

Definition at line 201 of file evt.c.

201 {
202 Bytecode* args = script->ptrReadPos;
203 Bytecode var = *args++;
204
205 if ((evt_get_variable(script, var) & *args++) == 0) {
206 script->ptrNextLine = evt_skip_if(script);
207 return ApiStatus_DONE2;
208 }
209 return ApiStatus_DONE2;
210}

Referenced by evt_execute_next_command().

◆ evt_handle_if_not_AND()

ApiStatus evt_handle_if_not_AND ( Evt * script)

Definition at line 212 of file evt.c.

212 {
213 Bytecode* args = script->ptrReadPos;
214 Bytecode var = *args++;
215
216 if ((evt_get_variable(script, var) & *args++) != 0) {
217 script->ptrNextLine = evt_skip_if(script);
218 return ApiStatus_DONE2;
219 }
220 return ApiStatus_DONE2;
221}

Referenced by evt_execute_next_command().

◆ evt_handle_else()

ApiStatus evt_handle_else ( Evt * script)

Definition at line 223 of file evt.c.

223 {
224 script->ptrNextLine = evt_skip_else(script);
225 return ApiStatus_DONE2;
226}
Bytecode * evt_skip_else(Evt *script)
Definition evt.c:2116

Referenced by evt_execute_next_command().

◆ evt_handle_end_if()

ApiStatus evt_handle_end_if ( Evt * script)

Definition at line 228 of file evt.c.

228 {
229 return ApiStatus_DONE2;
230}

Referenced by evt_execute_next_command().

◆ evt_handle_switch()

ApiStatus evt_handle_switch ( Evt * script)

Definition at line 232 of file evt.c.

232 {
233 Bytecode* args = script->ptrReadPos;
234 Bytecode value = evt_get_variable(script, *args++);
235 s32 switchDepth = ++script->switchDepth;
236
237 ASSERT(switchDepth < 8);
238
239 script->switchBlockValue[switchDepth] = value;
240 script->switchBlockState[switchDepth] = 1;
241
242 return ApiStatus_DONE2;
243}

Referenced by evt_execute_next_command().

◆ evt_handle_switch_const()

ApiStatus evt_handle_switch_const ( Evt * script)

Definition at line 245 of file evt.c.

245 {
246 Bytecode* args = script->ptrReadPos;
247 s32 a0 = *args++;
248 s32 switchDepth = ++script->switchDepth;
249
250 ASSERT(switchDepth < 8);
251
252 script->switchBlockValue[switchDepth] = a0;
253 script->switchBlockState[switchDepth] = 1;
254
255 return ApiStatus_DONE2;
256}

Referenced by evt_execute_next_command().

◆ evt_handle_case_equal()

ApiStatus evt_handle_case_equal ( Evt * script)

Definition at line 258 of file evt.c.

258 {
259 Bytecode* args = script->ptrReadPos;
260 s32 switchDepth = script->switchDepth;
261 s32 var;
262 s32 switchBlockValue;
263
264 ASSERT(switchDepth >= 0);
265
266 var = evt_get_variable(script, *args++);
267 switchBlockValue = script->switchBlockValue[switchDepth];
268
269 if (script->switchBlockState[switchDepth] <= 0) {
270 script->ptrNextLine = evt_goto_end_case(script);
271 return ApiStatus_DONE2;
272 } else if (var != switchBlockValue) {
273 script->ptrNextLine = evt_goto_next_case(script);
274 } else {
275 script->switchBlockState[switchDepth] = 0;
276 }
277
278 return ApiStatus_DONE2;
279}
Bytecode * evt_goto_end_case(Evt *script)
Definition evt.c:2164
Bytecode * evt_goto_next_case(Evt *script)
Definition evt.c:2192

Referenced by evt_execute_next_command().

◆ evt_handle_case_not_equal()

ApiStatus evt_handle_case_not_equal ( Evt * script)

Definition at line 281 of file evt.c.

281 {
282 Bytecode* args = script->ptrReadPos;
283 s32 switchDepth = script->switchDepth;
284 s32 var;
285 s32 switchBlockValue;
286
287 ASSERT(switchDepth >= 0);
288
289 var = evt_get_variable(script, *args++);
290 switchBlockValue = script->switchBlockValue[switchDepth];
291
292 if (script->switchBlockState[switchDepth] <= 0) {
293 script->ptrNextLine = evt_goto_end_case(script);
294 return ApiStatus_DONE2;
295 } else if (var == switchBlockValue) {
296 script->ptrNextLine = evt_goto_next_case(script);
297 } else {
298 script->switchBlockState[switchDepth] = 0;
299 }
300
301 return ApiStatus_DONE2;
302}

Referenced by evt_execute_next_command().

◆ evt_handle_case_less()

ApiStatus evt_handle_case_less ( Evt * script)

Definition at line 304 of file evt.c.

304 {
305 Bytecode* args = script->ptrReadPos;
306 s32 switchDepth = script->switchDepth;
307 s32 var;
308 s32 switchBlockValue;
309
310 ASSERT(switchDepth >= 0);
311
312 var = evt_get_variable(script, *args++);
313 switchBlockValue = script->switchBlockValue[switchDepth];
314
315 if (script->switchBlockState[switchDepth] <= 0) {
316 script->ptrNextLine = evt_goto_end_case(script);
317 return ApiStatus_DONE2;
318 } else if (var <= switchBlockValue) {
319 script->ptrNextLine = evt_goto_next_case(script);
320 } else {
321 script->switchBlockState[switchDepth] = 0;
322 }
323
324 return ApiStatus_DONE2;
325}

Referenced by evt_execute_next_command().

◆ evt_handle_case_less_equal()

ApiStatus evt_handle_case_less_equal ( Evt * script)

Definition at line 327 of file evt.c.

327 {
328 Bytecode* args = script->ptrReadPos;
329 s32 switchDepth = script->switchDepth;
330 s32 var;
331 s32 switchBlockValue;
332
333 ASSERT(switchDepth >= 0);
334
335 var = evt_get_variable(script, *args++);
336 switchBlockValue = script->switchBlockValue[switchDepth];
337
338 if (script->switchBlockState[switchDepth] <= 0) {
339 script->ptrNextLine = evt_goto_end_case(script);
340 return ApiStatus_DONE2;
341 } else if (var < switchBlockValue) {
342 script->ptrNextLine = evt_goto_next_case(script);
343 } else {
344 script->switchBlockState[switchDepth] = 0;
345 }
346
347 return ApiStatus_DONE2;
348}

Referenced by evt_execute_next_command().

◆ evt_handle_case_greater()

ApiStatus evt_handle_case_greater ( Evt * script)

Definition at line 350 of file evt.c.

350 {
351 Bytecode* args = script->ptrReadPos;
352 s32 switchDepth = script->switchDepth;
353 s32 var;
354 s32 switchBlockValue;
355
356 ASSERT(switchDepth >= 0);
357
358 var = evt_get_variable(script, *args++);
359 switchBlockValue = script->switchBlockValue[switchDepth];
360
361 if (script->switchBlockState[switchDepth] <= 0) {
362 script->ptrNextLine = evt_goto_end_case(script);
363 return ApiStatus_DONE2;
364 } else if (var >= switchBlockValue) {
365 script->ptrNextLine = evt_goto_next_case(script);
366 } else {
367 script->switchBlockState[switchDepth] = 0;
368 }
369
370 return ApiStatus_DONE2;
371}

Referenced by evt_execute_next_command().

◆ evt_handle_case_greater_equal()

ApiStatus evt_handle_case_greater_equal ( Evt * script)

Definition at line 373 of file evt.c.

373 {
374 Bytecode* args = script->ptrReadPos;
375 s32 switchDepth = script->switchDepth;
376 s32 var;
377 s32 switchBlockValue;
378
379 ASSERT(switchDepth >= 0);
380
381 var = evt_get_variable(script, *args++);
382 switchBlockValue = script->switchBlockValue[switchDepth];
383
384 if (script->switchBlockState[switchDepth] <= 0) {
385 script->ptrNextLine = evt_goto_end_case(script);
386 return ApiStatus_DONE2;
387 } else if (var > switchBlockValue) {
388 script->ptrNextLine = evt_goto_next_case(script);
389 } else {
390 script->switchBlockState[switchDepth] = 0;
391 }
392
393 return ApiStatus_DONE2;
394}

Referenced by evt_execute_next_command().

◆ evt_handle_case_range()

ApiStatus evt_handle_case_range ( Evt * script)

Definition at line 396 of file evt.c.

396 {
397 Bytecode* args = script->ptrReadPos;
398 s32 switchDepth = script->switchDepth;
399 s32 var;
400 s32 var2;
401 s32 switchBlockValue;
402
403 ASSERT(switchDepth >= 0);
404
405 var = evt_get_variable(script, *args++);
406 var2 = evt_get_variable(script, *args++);
407
408 switchBlockValue = script->switchBlockValue[switchDepth];
409
410 if (script->switchBlockState[switchDepth] <= 0) {
411 script->ptrNextLine = evt_goto_end_case(script);
412 return ApiStatus_DONE2;
413 } else if ((var <= switchBlockValue) && (switchBlockValue <= var2)) {
414 script->switchBlockState[switchDepth] = 0;
415 } else {
416 script->ptrNextLine = evt_goto_next_case(script);
417 }
418
419 return ApiStatus_DONE2;
420}

Referenced by evt_execute_next_command().

◆ evt_handle_case_default()

ApiStatus evt_handle_case_default ( Evt * script)

Definition at line 422 of file evt.c.

422 {
423 s32 switchDepth = script->switchDepth;
424
425 ASSERT(switchDepth >= 0);
426
427 if (script->switchBlockState[switchDepth] <= 0) {
428 script->ptrNextLine = evt_goto_end_case(script);
429 return ApiStatus_DONE2;
430 } else {
431 script->switchBlockState[switchDepth] = 0;
432 }
433
434 return ApiStatus_DONE2;
435}

Referenced by evt_execute_next_command().

◆ evt_handle_case_AND()

ApiStatus evt_handle_case_AND ( Evt * script)

Definition at line 437 of file evt.c.

437 {
438 Bytecode* args = script->ptrReadPos;
439 s32 switchDepth = script->switchDepth;
440 s32 var;
441 s32 switchBlockValue;
442 s32 switchBlockState;
443
444 ASSERT(switchDepth >= 0);
445
446 var = *args++;
447 switchBlockValue = script->switchBlockValue[switchDepth];
448 switchBlockState = script->switchBlockState[switchDepth];
449
450 if (switchBlockState <= 0) {
451 script->ptrNextLine = evt_goto_end_case(script);
452 return ApiStatus_DONE2;
453 } else if ((var & switchBlockValue) == 0) {
454 script->ptrNextLine = evt_goto_next_case(script);
455 } else {
456 script->switchBlockState[switchDepth] = 0;
457 }
458
459 return ApiStatus_DONE2;
460}

Referenced by evt_execute_next_command().

◆ evt_handle_case_equal_OR()

ApiStatus evt_handle_case_equal_OR ( Evt * script)

Definition at line 462 of file evt.c.

462 {
463 Bytecode* args = script->ptrReadPos;
464 s32 switchDepth = script->switchDepth;
465 s32 var;
466 s32 switchBlockValue;
467 s32 switchBlockState;
468
469 ASSERT(switchDepth >= 0);
470
471 var = evt_get_variable(script, *args++);
472 switchBlockValue = script->switchBlockValue[switchDepth];
473 switchBlockState = script->switchBlockState[switchDepth];
474
475 if (switchBlockState == 0) {
476 script->ptrNextLine = evt_goto_end_case(script);
477 return ApiStatus_DONE2;
478 } else if (var == switchBlockValue) {
479 script->switchBlockState[switchDepth] = -1;
480 } else if (switchBlockState != -1) {
481 script->ptrNextLine = evt_goto_next_case(script);
482 }
483
484 return ApiStatus_DONE2;
485}

Referenced by evt_execute_next_command().

◆ evt_handle_case_equal_AND()

ApiStatus evt_handle_case_equal_AND ( Evt * script)

Definition at line 487 of file evt.c.

487 {
488 Bytecode* args = script->ptrReadPos;
489 s32 switchDepth = script->switchDepth;
490 s32 var;
491 s32 switchBlockValue;
492 s32 switchBlockState;
493
494 ASSERT(switchDepth >= 0);
495
496 var = evt_get_variable(script, *args++);
497 switchBlockValue = script->switchBlockValue[switchDepth];
498 switchBlockState = script->switchBlockState[switchDepth];
499
500 if (switchBlockState == 0) {
501 script->ptrNextLine = evt_goto_end_case(script);
502 return ApiStatus_DONE2;
503 } else if (switchBlockState == -2) {
504 script->ptrNextLine = evt_goto_next_case(script);
505 } else if (var == switchBlockValue) {
506 script->switchBlockState[switchDepth] = -1;
507 } else {
508 script->switchBlockState[switchDepth] = -2;
509 script->ptrNextLine = evt_goto_next_case(script);
510 }
511
512 return ApiStatus_DONE2;
513}

Referenced by evt_execute_next_command().

◆ evt_handle_end_case_group()

ApiStatus evt_handle_end_case_group ( Evt * script)

Definition at line 515 of file evt.c.

515 {
516 ASSERT(script->switchDepth >= 0);
517
518 if (script->switchBlockState[script->switchDepth] == 0) {
519 script->ptrNextLine = evt_goto_end_case(script);
520 return ApiStatus_DONE2;
521 } else if (script->switchBlockState[script->switchDepth] != -1) {
522 script->switchBlockState[script->switchDepth] = 1;
523 script->ptrNextLine = evt_goto_next_case(script);
524 } else {
525 script->switchBlockState[script->switchDepth] = 0;
526 script->ptrNextLine = evt_goto_end_case(script);
527 }
528
529 return ApiStatus_DONE2;
530}

Referenced by evt_execute_next_command().

◆ evt_handle_break_case()

ApiStatus evt_handle_break_case ( Evt * script)

Definition at line 532 of file evt.c.

532 {
533 ASSERT(script->switchDepth >= 0);
534 script->ptrNextLine = evt_goto_end_case(script);
535 return ApiStatus_DONE2;
536}

Referenced by evt_execute_next_command().

◆ evt_handle_end_switch()

ApiStatus evt_handle_end_switch ( Evt * script)

Definition at line 538 of file evt.c.

538 {
539 s32 switchDepth = script->switchDepth;
540
541 ASSERT(switchDepth >= 0);
542
543 script->switchBlockState[switchDepth] = 0;
544 script->switchDepth--;
545
546 return ApiStatus_DONE2;
547}

Referenced by evt_execute_next_command().

◆ evt_handle_set_var()

ApiStatus evt_handle_set_var ( Evt * script)

Definition at line 549 of file evt.c.

549 {
550 Bytecode* args = script->ptrReadPos;
551 s32 curPtrReadPos = *args++;
552
554 return ApiStatus_DONE2;
555}

Referenced by evt_execute_next_command().

◆ evt_handle_set_const()

ApiStatus evt_handle_set_const ( Evt * script)

Definition at line 557 of file evt.c.

557 {
558 evt_set_variable(script, *script->ptrReadPos, script->ptrReadPos[1]);
559 return ApiStatus_DONE2;
560}

Referenced by evt_execute_next_command().

◆ evt_handle_set_float()

ApiStatus evt_handle_set_float ( Evt * script)

Definition at line 562 of file evt.c.

562 {
563 Bytecode* args = script->ptrReadPos;
564 Bytecode var = *args++;
565
567 return ApiStatus_DONE2;
568}
f32 evt_set_float_variable(Evt *script, Bytecode var, f32 value)
Definition evt.c:2012

Referenced by evt_execute_next_command().

◆ evt_handle_add()

ApiStatus evt_handle_add ( Evt * script)

Definition at line 570 of file evt.c.

570 {
571 Bytecode* args = script->ptrReadPos;
572 Bytecode var = *args++;
573 s32 result = evt_get_variable(script, *args++);
575
576 result += addend;
577
578 evt_set_variable(script, var, result);
579 return ApiStatus_DONE2;
580}

Referenced by evt_execute_next_command().

◆ evt_handle_subtract()

ApiStatus evt_handle_subtract ( Evt * script)

Definition at line 582 of file evt.c.

582 {
583 Bytecode* args = script->ptrReadPos;
584 Bytecode var = *args++;
585 s32 result = evt_get_variable(script, *args++);
587
588 result = minuend - result;
589
590 evt_set_variable(script, var, result);
591 return ApiStatus_DONE2;
592}

Referenced by evt_execute_next_command().

◆ evt_handle_multiply()

ApiStatus evt_handle_multiply ( Evt * script)

Definition at line 594 of file evt.c.

594 {
595 Bytecode* args = script->ptrReadPos;
596 Bytecode var = *args++;
597 s32 result = evt_get_variable(script, *args++);
599
600 result *= multiplier;
601
602 evt_set_variable(script, var, result);
603 return ApiStatus_DONE2;
604}

Referenced by evt_execute_next_command().

◆ evt_handle_divide()

ApiStatus evt_handle_divide ( Evt * script)

Definition at line 606 of file evt.c.

606 {
607 Bytecode* args = script->ptrReadPos;
608 Bytecode var = *args++;
609 s32 result = evt_get_variable(script, *args++);
611
612 result = dividend / result;
613
614 evt_set_variable(script, var, result);
615 return ApiStatus_DONE2;
616}

Referenced by evt_execute_next_command().

◆ evt_handle_mod()

ApiStatus evt_handle_mod ( Evt * script)

Definition at line 618 of file evt.c.

618 {
619 Bytecode* args = script->ptrReadPos;
620 Bytecode var = *args++;
621 s32 result = evt_get_variable(script, *args++) + 0.5;
622 s32 num = evt_get_variable(script, var) + 0.5;
623
624 result = num % result;
625
626 evt_set_variable(script, var, result);
627 return ApiStatus_DONE2;
628}

Referenced by evt_execute_next_command().

◆ evt_handle_addF()

ApiStatus evt_handle_addF ( Evt * script)

Definition at line 630 of file evt.c.

630 {
631 Bytecode* args = script->ptrReadPos;
632 Bytecode var = *args++;
633 f32 result = evt_get_float_variable(script, *args++);
635
636 result += addend;
637
639 return ApiStatus_DONE2;
640}

Referenced by evt_execute_next_command().

◆ evt_handle_subtractF()

ApiStatus evt_handle_subtractF ( Evt * script)

Definition at line 642 of file evt.c.

642 {
643 Bytecode* args = script->ptrReadPos;
644 Bytecode var = *args++;
645 f32 result = evt_get_float_variable(script, *args++);
647
648 result = minuend - result;
649
651 return ApiStatus_DONE2;
652}

Referenced by evt_execute_next_command().

◆ evt_handle_multiplyF()

ApiStatus evt_handle_multiplyF ( Evt * script)

Definition at line 654 of file evt.c.

654 {
655 Bytecode* args = script->ptrReadPos;
656 Bytecode var = *args++;
657 f32 result = evt_get_float_variable(script, *args++);
659
660 result *= multiplier;
661
663 return ApiStatus_DONE2;
664}

Referenced by evt_execute_next_command().

◆ evt_handle_divideF()

ApiStatus evt_handle_divideF ( Evt * script)

Definition at line 666 of file evt.c.

666 {
667 Bytecode* args = script->ptrReadPos;
668 Bytecode var = *args++;
669 f32 result = evt_get_float_variable(script, *args++);
671
672 result = dividend / result;
673
675 return ApiStatus_DONE2;
676}

Referenced by evt_execute_next_command().

◆ evt_handle_set_int_buffer_ptr()

ApiStatus evt_handle_set_int_buffer_ptr ( Evt * script)

Definition at line 678 of file evt.c.

678 {
679 Bytecode* args = script->ptrReadPos;
680
681 script->buffer = (s32*) evt_get_variable(script, *args++);
682 return ApiStatus_DONE2;
683}

Referenced by evt_execute_next_command().

◆ evt_handle_set_float_buffer_ptr()

ApiStatus evt_handle_set_float_buffer_ptr ( Evt * script)

Definition at line 685 of file evt.c.

685 {
686 Bytecode* args = script->ptrReadPos;
687
688 script->buffer = (s32*) evt_get_variable(script, *args++);
689 return ApiStatus_DONE2;
690}

Referenced by evt_execute_next_command().

◆ evt_handle_get_1_word()

ApiStatus evt_handle_get_1_word ( Evt * script)

Definition at line 692 of file evt.c.

692 {
693 Bytecode* args = script->ptrReadPos;
695
696 var = *args++;
697 evt_set_variable(script, var, *script->buffer++);
698
699 return ApiStatus_DONE2;
700}

Referenced by evt_execute_next_command().

◆ evt_handle_get_2_word()

ApiStatus evt_handle_get_2_word ( Evt * script)

Definition at line 702 of file evt.c.

702 {
703 Bytecode* args = script->ptrReadPos;
705
706 var = *args++;
707 evt_set_variable(script, var, *script->buffer++);
708
709 var = *args++;
710 evt_set_variable(script, var, *script->buffer++);
711
712 return ApiStatus_DONE2;
713}

Referenced by evt_execute_next_command().

◆ evt_handle_get_3_word()

ApiStatus evt_handle_get_3_word ( Evt * script)

Definition at line 715 of file evt.c.

715 {
716 Bytecode* args = script->ptrReadPos;
718
719 var = *args++;
720 evt_set_variable(script, var, *script->buffer++);
721
722 var = *args++;
723 evt_set_variable(script, var, *script->buffer++);
724
725 var = *args++;
726 evt_set_variable(script, var, *script->buffer++);
727
728 return ApiStatus_DONE2;
729}

Referenced by evt_execute_next_command().

◆ evt_handle_get_4_word()

ApiStatus evt_handle_get_4_word ( Evt * script)

Definition at line 731 of file evt.c.

731 {
732 Bytecode* args = script->ptrReadPos;
734
735 var = *args++;
736 evt_set_variable(script, var, *script->buffer++);
737
738 var = *args++;
739 evt_set_variable(script, var, *script->buffer++);
740
741 var = *args++;
742 evt_set_variable(script, var, *script->buffer++);
743
744 var = *args++;
745 evt_set_variable(script, var, *script->buffer++);
746
747 return ApiStatus_DONE2;
748}

Referenced by evt_execute_next_command().

◆ evt_handle_get_Nth_word()

ApiStatus evt_handle_get_Nth_word ( Evt * script)

Definition at line 750 of file evt.c.

750 {
751 Bytecode* args = script->ptrReadPos;
753
754 var = *args++;
756
757 return ApiStatus_DONE2;
758}

Referenced by evt_execute_next_command().

◆ evt_handle_get_1_float()

ApiStatus evt_handle_get_1_float ( Evt * script)

Definition at line 760 of file evt.c.

760 {
761 Bytecode* args = script->ptrReadPos;
763
764 var = *args++;
766
767 return ApiStatus_DONE2;
768}

Referenced by evt_execute_next_command().

◆ evt_handle_get_2_float()

ApiStatus evt_handle_get_2_float ( Evt * script)

Definition at line 770 of file evt.c.

770 {
771 Bytecode* args = script->ptrReadPos;
773
774 var = *args++;
776
777 var = *args++;
779
780 return ApiStatus_DONE2;
781}

Referenced by evt_execute_next_command().

◆ evt_handle_get_3_float()

ApiStatus evt_handle_get_3_float ( Evt * script)

Definition at line 783 of file evt.c.

783 {
784 Bytecode* args = script->ptrReadPos;
786
787 var = *args++;
789
790 var = *args++;
792
793 var = *args++;
795
796 return ApiStatus_DONE2;
797}

Referenced by evt_execute_next_command().

◆ evt_handle_get_4_float()

ApiStatus evt_handle_get_4_float ( Evt * script)

Definition at line 799 of file evt.c.

799 {
800 Bytecode* args = script->ptrReadPos;
802
803 var = *args++;
805
806 var = *args++;
808
809 var = *args++;
811
812 var = *args++;
814
815 return ApiStatus_DONE2;
816}

Referenced by evt_execute_next_command().

◆ evt_handle_get_Nth_float()

ApiStatus evt_handle_get_Nth_float ( Evt * script)

Definition at line 818 of file evt.c.

818 {
819 Bytecode* args = script->ptrReadPos;
821
822 var = *args++;
824
825 return ApiStatus_DONE2;
826}

Referenced by evt_execute_next_command().

◆ evt_handle_set_array()

ApiStatus evt_handle_set_array ( Evt * script)

Definition at line 828 of file evt.c.

828 {
829 script->array = (s32*)evt_get_variable(script, *script->ptrReadPos);
830 return ApiStatus_DONE2;
831}

Referenced by evt_execute_next_command().

◆ evt_handle_set_flag_array()

ApiStatus evt_handle_set_flag_array ( Evt * script)

Definition at line 833 of file evt.c.

833 {
834 script->flagArray = (s32*)evt_get_variable(script, *script->ptrReadPos);
835 return ApiStatus_DONE2;
836}

Referenced by evt_execute_next_command().

◆ evt_handle_allocate_array()

ApiStatus evt_handle_allocate_array ( Evt * script)

Definition at line 838 of file evt.c.

838 {
839 Bytecode* args = script->ptrReadPos;
840 s32 size = evt_get_variable(script, *args++);
841 Bytecode var = *args++;
842
843 script->array = (s32*)heap_malloc(size * 4);
845 return ApiStatus_DONE2;
846}
void * heap_malloc(s32 size)
Definition heap.c:34

Referenced by evt_execute_next_command().

◆ evt_handle_AND()

ApiStatus evt_handle_AND ( Evt * script)

Definition at line 848 of file evt.c.

848 {
849 Bytecode* args = script->ptrReadPos;
850 s32 var = *args++;
851 s32 bits = evt_get_variable(script, *args++);
853
855 return ApiStatus_DONE2;
856}

Referenced by evt_execute_next_command().

◆ evt_handle_AND_const()

ApiStatus evt_handle_AND_const ( Evt * script)

Definition at line 858 of file evt.c.

858 {
859 Bytecode* args = script->ptrReadPos;
860 s32 var = *args++;
861 s32 bits = *args++;
863
865 return ApiStatus_DONE2;
866}

Referenced by evt_execute_next_command().

◆ evt_handle_OR()

ApiStatus evt_handle_OR ( Evt * script)

Definition at line 868 of file evt.c.

868 {
869 Bytecode* args = script->ptrReadPos;
870 s32 var = *args++;
871 s32 bits = evt_get_variable(script, *args++);
873
875 return ApiStatus_DONE2;
876}

Referenced by evt_execute_next_command().

◆ evt_handle_OR_const()

ApiStatus evt_handle_OR_const ( Evt * script)

Definition at line 878 of file evt.c.

878 {
879 Bytecode* args = script->ptrReadPos;
880 s32 var = *args++;
881 s32 bits = *args++;
883
885 return ApiStatus_DONE2;
886}

Referenced by evt_execute_next_command().

◆ evt_handle_call()

ApiStatus evt_handle_call ( Evt * script)

Definition at line 888 of file evt.c.

888 {
889 Bytecode* args = script->ptrReadPos;
891 ApiFunc func;
893 EvtCallingLine = script->ptrCurLine;
894
895 if (script->blocked) {
897 func = script->callFunction;
898 ret = func(script, isInitialCall);
899 } else {
900 script->callFunction = (ApiFunc)evt_get_variable(script, *args++);
901 script->ptrReadPos = args;
902 script->curArgc--;
903 script->blocked = TRUE;
905 func = script->callFunction;
906 ret = func(script, isInitialCall);
907 }
908
910 return ret;
911}
ApiStatus(* ApiFunc)(struct Evt *, s32)
Bytecode * EvtCallingLine
Definition evt.c:10
s32 ApiStatus
Definition evt.h:116

Referenced by evt_execute_next_command().

◆ evt_handle_exec1()

ApiStatus evt_handle_exec1 ( Evt * script)

Definition at line 913 of file evt.c.

913 {
914 Bytecode* args = script->ptrReadPos;
916 Evt* newScript;
917 s32 i;
918
919 newScript = start_script_in_group(newSource, script->priority, 0, script->groupFlags);
920
921 newScript->owner1 = script->owner1;
922 newScript->owner2 = script->owner2;
923
924 for (i = 0; i < ARRAY_COUNT(script->varTable); i++) {
925 newScript->varTable[i] = script->varTable[i];
926 }
927
928 for (i = 0; i < ARRAY_COUNT(script->varFlags); i++) {
929 newScript->varFlags[i] = script->varFlags[i];
930 }
931
932 newScript->array = script->array;
933 newScript->flagArray = script->flagArray;
934
935 return ApiStatus_DONE2;
936}
Bytecode EvtScript[]
Evt * start_script_in_group(EvtScript *source, u8 priority, u8 initialState, u8 groupFlags)

Referenced by evt_execute_next_command().

◆ evt_handle_exec1_get_id()

ApiStatus evt_handle_exec1_get_id ( Evt * script)

Definition at line 938 of file evt.c.

938 {
939 Bytecode* args = script->ptrReadPos;
941 Bytecode outVar = *args++;
942 Evt* newScript;
943 s32 i;
944
945 newScript = start_script_in_group(newSource, script->priority, 0, script->groupFlags);
946
947 newScript->owner1 = script->owner1;
948 newScript->owner2 = script->owner2;
949
950 for (i = 0; i < ARRAY_COUNT(script->varTable); i++) {
951 newScript->varTable[i] = script->varTable[i];
952 }
953
954 for (i = 0; i < ARRAY_COUNT(script->varFlags); i++) {
955 newScript->varFlags[i] = script->varFlags[i];
956 }
957
958 newScript->array = script->array;
959 newScript->flagArray = script->flagArray;
960
962
963 return ApiStatus_DONE2;
964}

Referenced by evt_execute_next_command().

◆ evt_handle_exec_wait()

ApiStatus evt_handle_exec_wait ( Evt * script)

Definition at line 966 of file evt.c.

966 {
967 Bytecode* args = script->ptrReadPos;
969
971 script->curOpcode = EVT_OP_INTERNAL_FETCH;
972 return ApiStatus_FINISH;
973}
@ EVT_OP_INTERNAL_FETCH
Definition evt.h:10
Evt * start_child_script(Evt *parentScript, EvtScript *source, s32 initialState)

Referenced by evt_execute_next_command().

◆ evt_handle_jump()

ApiStatus evt_handle_jump ( Evt * script)

Definition at line 975 of file evt.c.

975 {
976 Bytecode* args = script->ptrReadPos;
977
978 script->ptrFirstLine = (Bytecode*) evt_get_variable(script, *args++);
980 return ApiStatus_DONE2;
981}
Evt * restart_script(Evt *script)

Referenced by evt_execute_next_command().

◆ evt_trigger_on_activate_exec_script()

s32 evt_trigger_on_activate_exec_script ( Trigger * trigger)

Definition at line 983 of file evt.c.

983 {
985 Evt* script;
986
987 if (trigger->runningScript == NULL) {
988 scriptStart = trigger->onTriggerEvt;
990 return 0;
991 }
992
994 trigger->runningScript = script;
995 trigger->runningScriptID = script->id;
996 script->varTable[0] = trigger->varTable[0];
997 script->varTable[1] = trigger->varTable[1];
998 script->varTable[2] = trigger->varTable[2];
999 script->owner2.trigger = trigger;
1000 }
1001
1002 if (!does_script_exist(trigger->runningScriptID)) {
1003 trigger->runningScript = NULL;
1004 return 0; // stop calling this function
1005 }
1006
1007 return 1; // keep calling this function every frame
1008}
@ EVT_FLAG_RUN_IMMEDIATELY
don't wait for next update_scripts call
Definition evt.h:162
s32 is_another_trigger_bound(Trigger *, EvtScript *script)
Definition trigger.c:254
Evt * start_script(EvtScript *source, s32 priority, s32 initialState)
s32 does_script_exist(s32 id)
s32 runningScriptID
EvtScript * onTriggerEvt
struct Evt * runningScript

Referenced by bind_trigger(), and evt_handle_bind().

◆ evt_handle_bind()

ApiStatus evt_handle_bind ( Evt * script)

Definition at line 1010 of file evt.c.

1010 {
1011 Bytecode* args = script->ptrReadPos;
1012 Trigger* trigger;
1014 Bytecode triggerType = *args++;
1015 Bytecode colliderIDVar = *args++;
1016 Bytecode hasInteractPrompt = *args++;
1017 Bytecode triggerOut = *args++;
1019
1021 bp.colliderID = evt_get_variable(script, colliderIDVar);
1023 bp.hasPlayerInteractPrompt = hasInteractPrompt;
1024 bp.tattleMsg = 0;
1025 bp.onActivateFunc = evt_trigger_on_activate_exec_script;
1026
1027 trigger = create_trigger(&bp);
1029 trigger->runningScript = NULL;
1030 trigger->priority = script->priority;
1031 trigger->varTable[0] = evt_get_variable(script, script->varTable[0]);
1032 trigger->varTable[1] = evt_get_variable(script, script->varTable[1]);
1033 trigger->varTable[2] = evt_get_variable(script, script->varTable[2]);
1034
1035 if (triggerOut != 0) {
1037 }
1038
1039 return ApiStatus_DONE2;
1040}
@ TRIGGER_SCRIPT_BOUND
Definition enums.h:2677
s32 evt_get_variable_index(Evt *script, s32 var)
Definition evt.c:1796
s32 evt_trigger_on_activate_exec_script(Trigger *trigger)
Definition evt.c:983
Trigger * create_trigger(TriggerBlueprint *def)
Definition trigger.c:55

Referenced by evt_execute_next_command().

◆ evt_handle_unbind()

ApiStatus evt_handle_unbind ( Evt * script)

Definition at line 1047 of file evt.c.

1047 {
1048 delete_trigger(script->owner2.trigger);
1049 return ApiStatus_DONE2;
1050}
void delete_trigger(Trigger *toDelete)
Definition trigger.c:239

Referenced by evt_execute_next_command().

◆ evt_handle_kill()

ApiStatus evt_handle_kill ( Evt * script)

Definition at line 1052 of file evt.c.

1052 {
1054 return ApiStatus_DONE2;
1055}
void kill_script_by_ID(s32 id)

Referenced by evt_execute_next_command().

◆ evt_handle_set_priority()

ApiStatus evt_handle_set_priority ( Evt * script)

Definition at line 1057 of file evt.c.

1057 {
1059 return ApiStatus_DONE2;
1060}
void set_script_priority(Evt *script, s32 priority)

Referenced by evt_execute_next_command().

◆ evt_handle_set_timescale()

ApiStatus evt_handle_set_timescale ( Evt * script)

Definition at line 1062 of file evt.c.

1062 {
1064 return ApiStatus_DONE2;
1065}
void set_script_timescale(Evt *script, f32 timescale)

Referenced by evt_execute_next_command().

◆ evt_handle_set_group()

ApiStatus evt_handle_set_group ( Evt * script)

Definition at line 1067 of file evt.c.

1067 {
1069 return ApiStatus_DONE2;
1070}
void set_script_group(Evt *script, s32 groupFlags)

Referenced by evt_execute_next_command().

◆ evt_handle_suspend_all()

ApiStatus evt_handle_suspend_all ( Evt * script)

Definition at line 1072 of file evt.c.

1072 {
1074 return ApiStatus_DONE2;
1075}
void suspend_all_group(s32 groupFlags)

Referenced by evt_execute_next_command().

◆ evt_handle_resume_all()

ApiStatus evt_handle_resume_all ( Evt * script)

Definition at line 1077 of file evt.c.

1077 {
1079 return ApiStatus_DONE2;
1080}
s32 resume_all_group(s32 groupFlags)

Referenced by evt_execute_next_command().

◆ evt_handle_suspend_others()

ApiStatus evt_handle_suspend_others ( Evt * script)

Definition at line 1082 of file evt.c.

1082 {
1084 return ApiStatus_DONE2;
1085}
void suspend_group_others(Evt *script, s32 groupFlags)

Referenced by evt_execute_next_command().

◆ evt_handle_resume_others()

ApiStatus evt_handle_resume_others ( Evt * script)

Definition at line 1087 of file evt.c.

1087 {
1089 return ApiStatus_DONE2;
1090}
void resume_group_others(Evt *script, s32 groupFlags)

Referenced by evt_execute_next_command().

◆ evt_handle_suspend()

ApiStatus evt_handle_suspend ( Evt * script)

Definition at line 1092 of file evt.c.

1092 {
1094 return ApiStatus_DONE2;
1095}
s32 suspend_all_script(s32 id)

Referenced by evt_execute_next_command().

◆ evt_handle_resume()

ApiStatus evt_handle_resume ( Evt * script)

Definition at line 1097 of file evt.c.

1097 {
1099 return ApiStatus_DONE2;
1100}
s32 resume_all_script(s32 id)

Referenced by evt_execute_next_command().

◆ evt_handle_does_script_exist()

ApiStatus evt_handle_does_script_exist ( Evt * script)

Definition at line 1102 of file evt.c.

1102 {
1103 Bytecode* args = script->ptrReadPos;
1104 s32 scriptID = evt_get_variable(script, *args++);
1105 Bytecode var2 = *args++;
1106
1108 return ApiStatus_DONE2;
1109}

Referenced by evt_execute_next_command().

◆ evt_trigger_on_activate_lock()

s32 evt_trigger_on_activate_lock ( Trigger * trigger)

Definition at line 1111 of file evt.c.

1111 {
1112 if (trigger->runningScript == NULL) {
1114 trigger->runningScript = newScript;
1115 trigger->runningScriptID = newScript->id;
1116 newScript->varTable[0] = trigger->varTable[0];
1117 newScript->varTable[1] = trigger->varTable[1];
1118 newScript->varTable[2] = trigger->varTable[2];
1119 newScript->owner2.trigger = trigger;
1120 }
1121
1122 if (!does_script_exist(trigger->runningScriptID)) {
1123 trigger->runningScript = NULL;
1124 trigger->flags &= ~TRIGGER_ACTIVATED;
1125 }
1126}

Referenced by evt_handle_bind_lock().

◆ evt_handle_bind_lock()

ApiStatus evt_handle_bind_lock ( Evt * script)

Definition at line 1128 of file evt.c.

1128 {
1129 Bytecode* args = script->ptrReadPos;
1130 Trigger* trigger;
1132 Bytecode triggerType = *args++;
1133 Bytecode colliderIDVar = *args++;
1134 s32* itemList = (s32*)evt_get_variable(script, *args++);
1135 Bytecode triggerOut = *args++;
1136 s32 hasInteractPrompt = *args++;
1138
1140 bp.colliderID = evt_get_variable(script, colliderIDVar);
1142 bp.itemList = itemList;
1143 bp.onActivateFunc = evt_trigger_on_activate_lock;
1144 bp.tattleMsg = triggerOut;
1145 bp.hasPlayerInteractPrompt = hasInteractPrompt;
1146
1147 trigger = create_trigger(&bp);
1149 trigger->runningScript = NULL;
1150 trigger->priority = script->priority;
1151 trigger->varTable[0] = evt_get_variable(script, script->varTable[0]);
1152 trigger->varTable[1] = evt_get_variable(script, script->varTable[1]);
1153 trigger->varTable[2] = evt_get_variable(script, script->varTable[2]);
1154
1155 return ApiStatus_DONE2;
1156}
s32 evt_trigger_on_activate_lock(Trigger *trigger)
Definition evt.c:1111

Referenced by evt_execute_next_command().

◆ evt_handle_thread()

ApiStatus evt_handle_thread ( Evt * script)

Definition at line 1158 of file evt.c.

1158 {
1159 Evt* newScript;
1160 s32 nargs;
1161 s32 opcode;
1162 s32 i;
1163
1164 // seek end thread opcode
1167 do {
1168 opcode = *endLine++;
1169 nargs = *endLine++;
1170 endLine += nargs;
1171 } while (opcode != EVT_OP_END_THREAD);
1172
1173 script->ptrNextLine = endLine;
1175 newScript->owner1.enemyID = script->owner1.enemyID;
1176 newScript->owner2.npcID = script->owner2.npcID;
1177 newScript->array = script->array;
1178 newScript->flagArray = script->flagArray;
1179
1180 for (i = 0; i < ARRAY_COUNT(script->varTable); i++) {
1181 newScript->varTable[i] = script->varTable[i];
1182 }
1183
1184 for (i = 0; i < ARRAY_COUNT(script->varFlags); i++) {
1185 newScript->varFlags[i] = script->varFlags[i];
1186 }
1187
1188 return ApiStatus_DONE2;
1189}
Bytecode * ptrNextLine
@ EVT_OP_END_THREAD
Definition evt.h:97
@ EVT_FLAG_THREAD
Definition evt.h:163

Referenced by evt_execute_next_command().

◆ evt_handle_end_thread()

ApiStatus evt_handle_end_thread ( Evt * script)

Definition at line 1191 of file evt.c.

1191 {
1193 return ApiStatus_FINISH;
1194}

Referenced by evt_execute_next_command().

◆ evt_handle_child_thread()

ApiStatus evt_handle_child_thread ( Evt * script)

Definition at line 1196 of file evt.c.

1196 {
1197 Evt* newScript;
1198 s32 nargs;
1199 s32 opcode;
1200 s32 i;
1201
1204 do {
1205 opcode = *endLine++;
1206 nargs = *endLine++;
1207 endLine += nargs;
1208 } while (opcode != EVT_OP_END_CHILD_THREAD);
1209
1210 script->ptrNextLine = endLine;
1212 newScript->owner1.enemyID = script->owner1.enemyID;
1213 newScript->owner2.npcID = script->owner2.npcID;
1214 newScript->groupFlags = script->groupFlags;
1215 newScript->array = script->array;
1216 newScript->flagArray = script->flagArray;
1217
1218 return ApiStatus_DONE2;
1219}
@ EVT_OP_END_CHILD_THREAD
Definition evt.h:99
Evt * start_child_thread(Evt *parentScript, Bytecode *nextLine, s32 newState)

Referenced by evt_execute_next_command().

◆ evt_handle_end_child_thread()

ApiStatus evt_handle_end_child_thread ( Evt * script)

Definition at line 1221 of file evt.c.

1221 {
1223 return ApiStatus_BLOCK;
1224}
#define ApiStatus_BLOCK
Definition evt.h:117

Referenced by evt_execute_next_command().

◆ evt_handle_debug_log()

ApiStatus evt_handle_debug_log ( Evt * script)

Definition at line 1226 of file evt.c.

1226 {
1227 return ApiStatus_DONE2;
1228}

Referenced by evt_execute_next_command().

◆ evt_handle_print_debug_var()

s32 evt_handle_print_debug_var ( Evt * script)

Definition at line 1233 of file evt.c.

1233 {
1234 Bytecode* args = script->ptrReadPos;
1235 s32 var = *args++;
1237
1238 if (var <= EVT_LIMIT) {
1239 sprintf(evtDebugPrintBuffer, "ADDR [%08X]", var);
1240 } else if (var <= EVT_FIXED_CUTOFF) {
1242 } else if (var <= EVT_ARRAY_FLAG_CUTOFF) {
1244 flagBitPos = var % 32;
1245 sprintf(evtDebugPrintBuffer, "UF(%3d) [%d]", var, script->flagArray[var / 32] & (1 << flagBitPos));
1246 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1247 s32 arrayVal;
1248
1250 arrayVal = script->array[var];
1251
1252 if (script->array[var] <= EVT_LIMIT) {
1253 sprintf(evtDebugPrintBuffer, "UW(%3d) [%08X]", arrayVal);
1254 } else if (arrayVal <= EVT_FIXED_CUTOFF) {
1256 } else {
1257 sprintf(evtDebugPrintBuffer, "UW(%3d) [%d]", var, arrayVal);
1258 }
1259 } else if (var <= EVT_GAME_BYTE_CUTOFF) {
1261
1264
1265 if (globalByte <= EVT_LIMIT) {
1266 sprintf(evtDebugPrintBuffer, "GSW(%3d) [%08X]", globalByte);
1267 } else if (globalByte <= EVT_FIXED_CUTOFF) {
1269 } else {
1270 sprintf(evtDebugPrintBuffer, "GSW(%3d) [%d]", var, globalByte);
1271 }
1272 } else if (var <= EVT_AREA_BYTE_CUTOFF) {
1273 s32 areaByte;
1274
1277
1278 if (areaByte <= EVT_LIMIT) {
1279 sprintf(evtDebugPrintBuffer, "LSW(%3d) [%08X]", areaByte);
1280 } else if (areaByte <= EVT_FIXED_CUTOFF) {
1282 } else {
1283 sprintf(evtDebugPrintBuffer, "LSW(%3d) [%d]", var, areaByte);
1284 }
1285 } else if (var <= EVT_GAME_FLAG_CUTOFF) {
1287 sprintf(evtDebugPrintBuffer, "GSWF(%3d)[%d]", var, get_global_flag(var));
1288 } else if (var <= EVT_AREA_FLAG_CUTOFF) {
1290 sprintf(evtDebugPrintBuffer, "LSWF(%3d)[%d]", var, get_area_flag(var));
1291 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1293 flagBitPos = var % 32;
1294 sprintf(evtDebugPrintBuffer, "GF(%3d) [%d]", var, gMapFlags[var / 32] & (1 << flagBitPos));
1295 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1297 flagBitPos = var % 32;
1298 sprintf(evtDebugPrintBuffer, "LF(%3d) [%d]", var, script->varFlags[var / 32] & (1 << flagBitPos));
1299 } else if (var <= EVT_MAP_VAR_CUTOFF) {
1300 s32 mapVar;
1301
1303 mapVar = gMapVars[var];
1304
1305 if (mapVar <= EVT_LIMIT) {
1306 sprintf(evtDebugPrintBuffer, "GW(%3d) [%08X]", mapVar);
1307 } else if (mapVar <= EVT_FIXED_CUTOFF) {
1309 } else {
1310 sprintf(evtDebugPrintBuffer, "GW(%3d) [%d]", var, mapVar);
1311 }
1312 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
1313 s32 tableVar;
1314
1316 tableVar = script->varTable[var];
1317
1318 if (tableVar <= EVT_LIMIT) {
1319 sprintf(evtDebugPrintBuffer, "LW(%3d) [%08X]", tableVar);
1320 } else if (tableVar <= EVT_FIXED_CUTOFF) {
1322 } else {
1323 sprintf(evtDebugPrintBuffer, "LW(%3d) [%d]", var, tableVar);
1324 }
1325 } else {
1326 sprintf(evtDebugPrintBuffer, " [%d]", var);
1327 }
1328
1329 return ApiStatus_DONE2;
1330}
char evtDebugPrintBuffer[0x100]
Definition script_list.c:22
u32 * gMapFlags
Definition script_list.c:11
f32 evt_fixed_var_to_float(Bytecode scriptVar)
Definition evt.c:19
s32 * gMapVars
Definition script_list.c:12
#define EVT_LOCAL_VAR_CUTOFF
Expressions in EVT instructions should be one of the following types:
Definition macros.h:24
#define EVT_INDEX_OF_AREA_BYTE(v)
Definition macros.h:142
#define EVT_ARRAY_VAR_CUTOFF
Definition macros.h:40
#define EVT_MAP_FLAG_CUTOFF
Definition macros.h:30
#define EVT_LOCAL_FLAG_CUTOFF
Definition macros.h:28
#define EVT_GAME_FLAG_CUTOFF
Definition macros.h:34
#define EVT_AREA_BYTE_CUTOFF
Definition macros.h:36
#define EVT_INDEX_OF_AREA_FLAG(v)
Definition macros.h:141
#define EVT_INDEX_OF_ARRAY_FLAG(v)
Definition macros.h:145
#define EVT_INDEX_OF_LOCAL_VAR(v)
Definition macros.h:137
#define EVT_INDEX_OF_ARRAY_VAR(v)
Definition macros.h:146
#define EVT_INDEX_OF_GAME_BYTE(v)
Definition macros.h:144
#define EVT_GAME_BYTE_CUTOFF
Definition macros.h:38
#define EVT_ARRAY_FLAG_CUTOFF
Definition macros.h:42
#define EVT_INDEX_OF_MAP_FLAG(v)
Definition macros.h:140
#define EVT_INDEX_OF_LOCAL_FLAG(v)
Definition macros.h:138
#define EVT_AREA_FLAG_CUTOFF
Definition macros.h:32
#define EVT_INDEX_OF_MAP_VAR(v)
Definition macros.h:139
#define EVT_MAP_VAR_CUTOFF
Definition macros.h:26
#define EVT_INDEX_OF_GAME_FLAG(v)
Definition macros.h:143
s32 get_global_flag(s32 index)
Definition vars_access.c:89
s32 get_global_byte(s32 index)
Get value of saved game byte.
s32 get_area_flag(s32 index)
s32 get_area_byte(s32 index)

Referenced by evt_execute_next_command().

◆ func_802C739C()

ApiStatus func_802C739C ( Evt * script)

Definition at line 1332 of file evt.c.

1332 {
1333 script->ptrSavedPos = (Bytecode*)*script->ptrReadPos;
1334 return ApiStatus_DONE2;
1335}

Referenced by evt_execute_next_command().

◆ func_802C73B0()

ApiStatus func_802C73B0 ( Evt * script)

Definition at line 1337 of file evt.c.

1337 {
1338 return ApiStatus_DONE2;
1339}

Referenced by evt_execute_next_command().

◆ func_802C73B8()

ApiStatus func_802C73B8 ( Evt * script)

Definition at line 1341 of file evt.c.

1341 {
1342 s32 i;
1343
1344 for (i = 0; i < MAX_SCRIPTS; i++) {
1345 if (script == get_script_by_index(i)) {
1346 break;
1347 }
1348 }
1349 return ApiStatus_DONE1;
1350}
#define ApiStatus_DONE1
Definition evt.h:118
Evt * get_script_by_index(s32 index)
#define MAX_SCRIPTS
Definition macros.h:90

Referenced by evt_execute_next_command().

◆ evt_handle_debug_breakpoint()

ApiStatus evt_handle_debug_breakpoint ( Evt * script)

Definition at line 1352 of file evt.c.

1352 {
1353 #if DX_DEBUG_MENU
1354 script->debugPaused = TRUE;
1355 #endif
1356 return ApiStatus_DONE2;
1357}

Referenced by evt_execute_next_command().

◆ evt_execute_next_command()

s32 evt_execute_next_command ( Evt * script)

Definition at line 1359 of file evt.c.

1359 {
1361
1362 while (TRUE) {
1363 s32 status = ApiStatus_DONE2;
1364 s32* lines;
1365 s32 nargs;
1366
1367 #if DX_DEBUG_MENU
1368 if (script->debugPaused && script->curOpcode != EVT_OP_INTERNAL_FETCH) {
1369 switch (script->debugStep) {
1371 return EVT_CMD_RESULT_YIELD;
1373 script->debugStep = DEBUG_EVT_STEP_NONE;
1374 break;
1376 // do not pause execution until we get a block
1377 break;
1378 }
1379 }
1380 #endif
1381
1383 ASSERT_MSG(commandsExecuted < 10000, "Script %x is blocking for ages (infinite loop?)", script->ptrFirstLine);
1384
1385 switch (script->curOpcode) {
1387 script->ptrCurLine = script->ptrNextLine;
1388 lines = script->ptrNextLine;
1389 script->curOpcode = *lines++;
1390 nargs = *lines++;
1391 script->ptrReadPos = lines;
1392 script->blocked = FALSE;
1393 script->curArgc = nargs;
1394 lines = &lines[nargs];
1395 script->ptrNextLine = lines;
1396 status = ApiStatus_REPEAT;
1397 break;
1398 case EVT_OP_RETURN:
1399 status = evt_handle_return(script);
1400 break;
1401 case EVT_OP_LABEL:
1402 status = evt_handle_label(script);
1403 break;
1404 case EVT_OP_GOTO:
1405 status = evt_handle_goto(script);
1406 break;
1407 case EVT_OP_LOOP:
1408 status = evt_handle_loop(script);
1409 break;
1410 case EVT_OP_END_LOOP:
1411 status = evt_handle_end_loop(script);
1412 break;
1413 case EVT_OP_BREAK_LOOP:
1414 status = evt_handle_break_loop(script);
1415 break;
1416 case EVT_OP_WAIT_FRAMES:
1417 status = evt_handle_wait(script);
1418 break;
1419 case EVT_OP_WAIT_SECS:
1421 break;
1422 case EVT_OP_IF_EQ:
1423 status = evt_handle_if_equal(script);
1424 break;
1425 case EVT_OP_IF_NE:
1427 break;
1428 case EVT_OP_IF_LT:
1429 status = evt_handle_if_less(script);
1430 break;
1431 case EVT_OP_IF_GT:
1432 status = evt_handle_if_greater(script);
1433 break;
1434 case EVT_OP_IF_LE:
1436 break;
1437 case EVT_OP_IF_GE:
1439 break;
1440 case EVT_OP_IF_FLAG:
1441 status = evt_handle_if_AND(script);
1442 break;
1443 case EVT_OP_IF_NOT_FLAG:
1444 status = evt_handle_if_not_AND(script);
1445 break;
1446 case EVT_OP_ELSE:
1447 status = evt_handle_else(script);
1448 break;
1449 case EVT_OP_END_IF:
1450 status = evt_handle_end_if(script);
1451 break;
1452 case EVT_OP_SWITCH:
1453 status = evt_handle_switch(script);
1454 break;
1457 break;
1458 case EVT_OP_CASE_EQ:
1459 status = evt_handle_case_equal(script);
1460 break;
1461 case EVT_OP_CASE_NE:
1463 break;
1464 case EVT_OP_CASE_LT:
1465 status = evt_handle_case_less(script);
1466 break;
1467 case EVT_OP_CASE_LE:
1469 break;
1470 case EVT_OP_CASE_GT:
1472 break;
1473 case EVT_OP_CASE_GE:
1475 break;
1478 break;
1480 status = evt_handle_break_case(script);
1481 break;
1482 case EVT_OP_CASE_OR_EQ:
1484 break;
1487 break;
1488 case EVT_OP_CASE_AND_EQ:
1490 break;
1491 case EVT_OP_CASE_FLAG:
1492 status = evt_handle_case_AND(script);
1493 break;
1494 case EVT_OP_CASE_RANGE:
1495 status = evt_handle_case_range(script);
1496 break;
1497 case EVT_OP_END_SWITCH:
1498 status = evt_handle_end_switch(script);
1499 break;
1500 case EVT_OP_SET:
1501 status = evt_handle_set_var(script);
1502 break;
1503 case EVT_OP_SET_CONST:
1504 status = evt_handle_set_const(script);
1505 break;
1506 case EVT_OP_SETF:
1507 status = evt_handle_set_float(script);
1508 break;
1509 case EVT_OP_ADD:
1510 status = evt_handle_add(script);
1511 break;
1512 case EVT_OP_SUB:
1513 status = evt_handle_subtract(script);
1514 break;
1515 case EVT_OP_MUL:
1516 status = evt_handle_multiply(script);
1517 break;
1518 case EVT_OP_DIV:
1519 status = evt_handle_divide(script);
1520 break;
1521 case EVT_OP_MOD:
1522 status = evt_handle_mod(script);
1523 break;
1524 case EVT_OP_ADDF:
1525 status = evt_handle_addF(script);
1526 break;
1527 case EVT_OP_SUBF:
1528 status = evt_handle_subtractF(script);
1529 break;
1530 case EVT_OP_MULF:
1531 status = evt_handle_multiplyF(script);
1532 break;
1533 case EVT_OP_DIVF:
1534 status = evt_handle_divideF(script);
1535 break;
1536 case EVT_OP_USE_BUF:
1538 break;
1539 case EVT_OP_BUF_READ1:
1540 status = evt_handle_get_1_word(script);
1541 break;
1542 case EVT_OP_BUF_READ2:
1543 status = evt_handle_get_2_word(script);
1544 break;
1545 case EVT_OP_BUF_READ3:
1546 status = evt_handle_get_3_word(script);
1547 break;
1548 case EVT_OP_BUF_READ4:
1549 status = evt_handle_get_4_word(script);
1550 break;
1551 case EVT_OP_BUF_PEEK:
1553 break;
1554 case EVT_OP_USE_FBUF:
1556 break;
1557 case EVT_OP_FBUF_READ1:
1559 break;
1560 case EVT_OP_FBUF_READ2:
1562 break;
1563 case EVT_OP_FBUF_READ3:
1565 break;
1566 case EVT_OP_FBUF_READ4:
1568 break;
1569 case EVT_OP_FBUF_PEEK:
1571 break;
1572 case EVT_OP_USE_ARRAY:
1573 status = evt_handle_set_array(script);
1574 break;
1575 case EVT_OP_USE_FLAGS:
1577 break;
1580 break;
1581 case EVT_OP_KILL_THREAD:
1582 status = evt_handle_kill(script);
1583 break;
1584 case EVT_OP_BITWISE_AND:
1585 status = evt_handle_AND(script);
1586 break;
1588 status = evt_handle_AND_const(script);
1589 break;
1590 case EVT_OP_BITWISE_OR:
1591 status = evt_handle_OR(script);
1592 break;
1594 status = evt_handle_OR_const(script);
1595 break;
1596 case EVT_OP_CALL:
1597 status = evt_handle_call(script);
1598 break;
1599 case EVT_OP_EXEC:
1600 status = evt_handle_exec1(script);
1601 break;
1604 break;
1605 case EVT_OP_EXEC_WAIT:
1606 status = evt_handle_exec_wait(script);
1607 break;
1609 status = evt_handle_bind(script);
1610 break;
1611 case EVT_OP_UNBIND:
1612 status = evt_handle_unbind(script);
1613 break;
1616 break;
1619 break;
1620 case EVT_OP_SET_GROUP:
1621 status = evt_handle_set_group(script);
1622 break;
1623 case EVT_OP_JUMP:
1624 status = evt_handle_jump(script);
1625 break;
1627 status = evt_handle_bind_lock(script);
1628 break;
1631 break;
1633 status = evt_handle_resume_all(script);
1634 break;
1637 break;
1640 break;
1642 status = evt_handle_suspend(script);
1643 break;
1645 status = evt_handle_resume(script);
1646 break;
1649 break;
1650 case EVT_OP_THREAD:
1651 status = evt_handle_thread(script);
1652 break;
1653 case EVT_OP_END_THREAD:
1654 status = evt_handle_end_thread(script);
1655 break;
1658 break;
1661 break;
1662 case EVT_OP_DEBUG_LOG:
1663 status = evt_handle_debug_log(script);
1664 break;
1667 break;
1668 case EVT_OP_92:
1669 status = func_802C739C(script);
1670 break;
1671 case EVT_OP_93:
1672 status = func_802C73B0(script);
1673 break;
1674 case EVT_OP_94:
1675 status = func_802C73B8(script);
1676 break;
1679 break;
1680 case EVT_OP_END:
1681 break;
1682 default:
1683 PANIC();
1684 }
1685
1686 if (status == ApiStatus_REPEAT) {
1687 // execute command after a fetch operation
1688 continue;
1689 }
1690
1691 if (status == ApiStatus_FINISH) {
1692 return EVT_CMD_RESULT_YIELD;
1693 }
1694
1695 if (status < 0) {
1696 return EVT_CMD_RESULT_ERROR;
1697 }
1698
1699 if (status == ApiStatus_BLOCK) {
1701 }
1702
1703 #if DX_DEBUG_MENU
1704 // pause again now that the current command is done blocking
1705 if (script->debugStep == DEBUG_EVT_STEP_OVER) {
1706 script->debugStep = DEBUG_EVT_STEP_NONE;
1707 }
1708 #endif
1709
1710 if (status == ApiStatus_DONE1) {
1711 script->curOpcode = EVT_OP_INTERNAL_FETCH;
1713 }
1714
1715 if (status == ApiStatus_DONE2) {
1716 script->curOpcode = EVT_OP_INTERNAL_FETCH;
1718 continue;
1719 }
1721 }
1722 }
1723}
@ DEBUG_SCRIPTS_BLOCK_FUNC_DONE
Definition enums.h:3876
ApiStatus func_802C739C(Evt *script)
Definition evt.c:1332
ApiStatus evt_handle_OR(Evt *script)
Definition evt.c:868
ApiStatus func_802C73B0(Evt *script)
Definition evt.c:1337
ApiStatus evt_handle_set_int_buffer_ptr(Evt *script)
Definition evt.c:678
ApiStatus evt_handle_break_loop(Evt *script)
Definition evt.c:90
ApiStatus evt_handle_AND(Evt *script)
Definition evt.c:848
ApiStatus evt_handle_set_float(Evt *script)
Definition evt.c:562
ApiStatus evt_handle_switch_const(Evt *script)
Definition evt.c:245
ApiStatus evt_handle_call(Evt *script)
Definition evt.c:888
ApiStatus evt_handle_case_greater(Evt *script)
Definition evt.c:350
ApiStatus evt_handle_end_thread(Evt *script)
Definition evt.c:1191
ApiStatus evt_handle_case_equal_OR(Evt *script)
Definition evt.c:462
ApiStatus evt_handle_get_3_word(Evt *script)
Definition evt.c:715
ApiStatus evt_handle_divideF(Evt *script)
Definition evt.c:666
ApiStatus evt_handle_multiply(Evt *script)
Definition evt.c:594
ApiStatus evt_handle_switch(Evt *script)
Definition evt.c:232
ApiStatus evt_handle_AND_const(Evt *script)
Definition evt.c:858
ApiStatus evt_handle_break_case(Evt *script)
Definition evt.c:532
ApiStatus evt_handle_debug_breakpoint(Evt *script)
Definition evt.c:1352
ApiStatus evt_handle_jump(Evt *script)
Definition evt.c:975
ApiStatus evt_handle_suspend_all(Evt *script)
Definition evt.c:1072
ApiStatus evt_handle_case_less(Evt *script)
Definition evt.c:304
ApiStatus evt_handle_set_timescale(Evt *script)
Definition evt.c:1062
ApiStatus evt_handle_set_const(Evt *script)
Definition evt.c:557
ApiStatus evt_handle_subtract(Evt *script)
Definition evt.c:582
ApiStatus evt_handle_if_greater(Evt *script)
Definition evt.c:165
ApiStatus evt_handle_exec_wait(Evt *script)
Definition evt.c:966
ApiStatus evt_handle_set_array(Evt *script)
Definition evt.c:828
ApiStatus evt_handle_if_less(Evt *script)
Definition evt.c:153
ApiStatus evt_handle_case_default(Evt *script)
Definition evt.c:422
ApiStatus evt_handle_exec1(Evt *script)
Definition evt.c:913
ApiStatus evt_handle_add(Evt *script)
Definition evt.c:570
ApiStatus evt_handle_loop(Evt *script)
Definition evt.c:47
ApiStatus evt_handle_return(Evt *script)
Definition evt.c:33
ApiStatus evt_handle_mod(Evt *script)
Definition evt.c:618
ApiStatus evt_handle_thread(Evt *script)
Definition evt.c:1158
ApiStatus evt_handle_case_equal_AND(Evt *script)
Definition evt.c:487
ApiStatus evt_handle_case_range(Evt *script)
Definition evt.c:396
ApiStatus evt_handle_goto(Evt *script)
Definition evt.c:42
ApiStatus evt_handle_OR_const(Evt *script)
Definition evt.c:878
ApiStatus evt_handle_bind(Evt *script)
Definition evt.c:1010
ApiStatus evt_handle_print_debug_var(Evt *script)
Definition evt.c:1233
ApiStatus evt_handle_set_var(Evt *script)
Definition evt.c:549
ApiStatus evt_handle_get_4_word(Evt *script)
Definition evt.c:731
ApiStatus evt_handle_unbind(Evt *script)
Definition evt.c:1047
ApiStatus evt_handle_bind_lock(Evt *script)
Definition evt.c:1128
ApiStatus evt_handle_if_not_equal(Evt *script)
Definition evt.c:141
ApiStatus evt_handle_get_1_float(Evt *script)
Definition evt.c:760
ApiStatus evt_handle_if_less_equal(Evt *script)
Definition evt.c:177
ApiStatus evt_handle_end_loop(Evt *script)
Definition evt.c:60
ApiStatus evt_handle_debug_log(Evt *script)
Definition evt.c:1226
ApiStatus func_802C73B8(Evt *script)
Definition evt.c:1341
ApiStatus evt_handle_get_Nth_word(Evt *script)
Definition evt.c:750
ApiStatus evt_handle_exec1_get_id(Evt *script)
Definition evt.c:938
ApiStatus evt_handle_case_AND(Evt *script)
Definition evt.c:437
ApiStatus evt_handle_subtractF(Evt *script)
Definition evt.c:642
ApiStatus evt_handle_set_flag_array(Evt *script)
Definition evt.c:833
ApiStatus evt_handle_set_float_buffer_ptr(Evt *script)
Definition evt.c:685
ApiStatus evt_handle_end_child_thread(Evt *script)
Definition evt.c:1221
ApiStatus evt_handle_end_case_group(Evt *script)
Definition evt.c:515
ApiStatus evt_handle_get_Nth_float(Evt *script)
Definition evt.c:818
ApiStatus evt_handle_addF(Evt *script)
Definition evt.c:630
ApiStatus evt_handle_get_1_word(Evt *script)
Definition evt.c:692
ApiStatus evt_handle_set_priority(Evt *script)
Definition evt.c:1057
ApiStatus evt_handle_suspend(Evt *script)
Definition evt.c:1092
ApiStatus evt_handle_get_2_float(Evt *script)
Definition evt.c:770
ApiStatus evt_handle_case_less_equal(Evt *script)
Definition evt.c:327
ApiStatus evt_handle_get_2_word(Evt *script)
Definition evt.c:702
ApiStatus evt_handle_end_switch(Evt *script)
Definition evt.c:538
ApiStatus evt_handle_if_greater_equal(Evt *script)
Definition evt.c:189
ApiStatus evt_handle_resume_all(Evt *script)
Definition evt.c:1077
ApiStatus evt_handle_if_equal(Evt *script)
Definition evt.c:129
ApiStatus evt_handle_child_thread(Evt *script)
Definition evt.c:1196
ApiStatus evt_handle_case_equal(Evt *script)
Definition evt.c:258
ApiStatus evt_handle_get_3_float(Evt *script)
Definition evt.c:783
ApiStatus evt_handle_does_script_exist(Evt *script)
Definition evt.c:1102
ApiStatus evt_handle_else(Evt *script)
Definition evt.c:223
ApiStatus evt_handle_set_group(Evt *script)
Definition evt.c:1067
ApiStatus evt_handle_multiplyF(Evt *script)
Definition evt.c:654
ApiStatus evt_handle_resume(Evt *script)
Definition evt.c:1097
ApiStatus evt_handle_if_not_AND(Evt *script)
Definition evt.c:212
ApiStatus evt_handle_end_if(Evt *script)
Definition evt.c:228
ApiStatus evt_handle_kill(Evt *script)
Definition evt.c:1052
ApiStatus evt_handle_resume_others(Evt *script)
Definition evt.c:1087
ApiStatus evt_handle_if_AND(Evt *script)
Definition evt.c:201
ApiStatus evt_handle_wait_seconds(Evt *script)
Definition evt.c:113
ApiStatus evt_handle_wait(Evt *script)
Definition evt.c:97
ApiStatus evt_handle_case_not_equal(Evt *script)
Definition evt.c:281
ApiStatus evt_handle_get_4_float(Evt *script)
Definition evt.c:799
ApiStatus evt_handle_label(Evt *script)
Definition evt.c:38
ApiStatus evt_handle_case_greater_equal(Evt *script)
Definition evt.c:373
ApiStatus evt_handle_suspend_others(Evt *script)
Definition evt.c:1082
ApiStatus evt_handle_allocate_array(Evt *script)
Definition evt.c:838
ApiStatus evt_handle_divide(Evt *script)
Definition evt.c:606
@ EVT_OP_EXEC_GET_TID
Args: EvtScript*, container.
Definition evt.h:79
@ EVT_OP_MOD
Args: container, expression to divide by.
Definition evt.h:53
@ EVT_OP_DEBUG_BREAKPOINT
Definition evt.h:105
@ EVT_OP_FBUF_READ2
Args: container.
Definition evt.h:66
@ EVT_OP_94
Definition evt.h:104
@ EVT_OP_93
Definition evt.h:103
@ EVT_OP_UNBIND
Unbinds any triggers bound to this script.
Definition evt.h:82
@ EVT_OP_ADDF
Args: container, expression to increment by.
Definition evt.h:54
@ EVT_OP_FBUF_READ3
Args: container, container.
Definition evt.h:67
@ EVT_OP_SET_PRIORITY
Args: priority.
Definition evt.h:85
@ EVT_OP_DIVF
Args: container, expression to divide by.
Definition evt.h:57
@ EVT_OP_CASE_FLAG
Args: expression to test for.
Definition evt.h:41
@ EVT_OP_DEBUG_LOG
Definition evt.h:100
@ EVT_OP_MULF
Args: container, expression to multiply by.
Definition evt.h:56
@ EVT_OP_SUSPEND_OTHERS
Args: group.
Definition evt.h:91
@ EVT_OP_SUSPEND_THREAD
Args: ScriptID.
Definition evt.h:93
@ EVT_OP_GOTO
Args: index.
Definition evt.h:14
@ EVT_OP_EXEC
Args: EvtScript*.
Definition evt.h:78
@ EVT_OP_USE_ARRAY
Args: *s32.
Definition evt.h:70
@ EVT_OP_MUL
Args: container, expression to multiply by.
Definition evt.h:51
@ EVT_OP_92
Definition evt.h:102
@ EVT_OP_WAIT_SECS
Definition evt.h:19
@ EVT_OP_RETURN
Definition evt.h:12
@ EVT_OP_SET
Args: container, expression.
Definition evt.h:46
@ EVT_OP_BITWISE_OR_CONST
Args: container, value to bitwise OR with.
Definition evt.h:76
@ EVT_OP_BUF_READ1
Definition evt.h:59
@ EVT_OP_USE_FBUF
Identical to USE_BUFFER. Args: f32*.
Definition evt.h:64
@ EVT_OP_SETF
Args: container, expression.
Definition evt.h:48
@ EVT_OP_CHILD_THREAD
Parallel threads are killed as soon as the parent script returns.
Definition evt.h:98
@ EVT_OP_DEBUG_PRINT_VAR
Args: expression.
Definition evt.h:101
@ EVT_OP_BUF_READ3
Args: container, container.
Definition evt.h:61
@ EVT_OP_DIV
Integer division. Args: container, expression to divide by.
Definition evt.h:52
@ EVT_OP_EXEC_WAIT
Spawns a script and waits for it to return before continuing. Args: EvtScript*.
Definition evt.h:80
@ EVT_OP_BUF_READ4
Args: container, container, container.
Definition evt.h:62
@ EVT_OP_ADD
Args: container, expression to increment by.
Definition evt.h:49
@ EVT_OP_FBUF_READ4
Args: container, container, container.
Definition evt.h:68
@ EVT_OP_BREAK_SWITCH
Definition evt.h:44
@ EVT_OP_SET_TIMESCALE
Args: timescale.
Definition evt.h:86
@ EVT_OP_USE_BUF
Args: s32*.
Definition evt.h:58
@ EVT_OP_BREAK_LOOP
Definition evt.h:17
@ EVT_OP_USE_FLAGS
Args: *s32.
Definition evt.h:71
@ EVT_OP_BITWISE_AND_CONST
Args: container, value to bitwise AND with.
Definition evt.h:74
@ EVT_OP_FBUF_READ1
Definition evt.h:65
@ EVT_OP_SUBF
Args: container, expression to decrement by.
Definition evt.h:55
@ EVT_OP_WAIT_FRAMES
Definition evt.h:18
@ EVT_OP_JUMP
Args: EvtScript*.
Definition evt.h:84
@ EVT_OP_THREAD
Definition evt.h:96
@ EVT_OP_SUB
Args: container, expression to decrement by.
Definition evt.h:50
@ EVT_OP_CALL
Args: *function, ...
Definition evt.h:77
@ EVT_OP_IS_THREAD_RUNNING
Args: ScriptID, container.
Definition evt.h:95
@ EVT_OP_SWITCH_CONST
Args: value to test against.
Definition evt.h:31
@ EVT_OP_SET_CONST
Args: container, value.
Definition evt.h:47
@ EVT_OP_KILL_THREAD
Args: ScriptID.
Definition evt.h:83
@ EVT_OP_LABEL
Args: index.
Definition evt.h:13
@ EVT_OP_RESUME_OTHERS
Args: group.
Definition evt.h:92
@ EVT_OP_RESUME_THREAD
Args: ScriptID.
Definition evt.h:94
@ EVT_OP_BUF_READ2
Args: container.
Definition evt.h:60
@ EVT_OP_RESUME_GROUP
Args: group.
Definition evt.h:90
@ EVT_OP_BIND_TRIGGER
Args: EvtScript*, trigger flags, s32 target, 1, Trigger*.
Definition evt.h:81
@ EVT_OP_BITWISE_AND
Args: container, expression to bitwise AND with.
Definition evt.h:73
@ EVT_OP_BITWISE_OR
Args: container, expression to bitwise OR with.
Definition evt.h:75
@ EVT_OP_SET_GROUP
Args: group.
Definition evt.h:87
@ EVT_OP_BIND_PADLOCK
Args: EvtScript*, trigger flags, s32 target, ItemList*, 0, 1.
Definition evt.h:88
@ EVT_OP_SUSPEND_GROUP
Args: group.
Definition evt.h:89
@ EVT_OP_MALLOC_ARRAY
Allocates a new array. Args: length, s32*.
Definition evt.h:72
@ EVT_OP_BUF_PEEK
Args: container, container, container, container.
Definition evt.h:63
@ EVT_OP_FBUF_PEEK
Args: container, container, container, container.
Definition evt.h:69
#define ApiStatus_REPEAT
Definition evt.h:120
@ EVT_CMD_RESULT_YIELD
Definition evt.h:124
@ EVT_CMD_RESULT_CONTINUE
Definition evt.h:125
@ EVT_CMD_RESULT_ERROR
Definition evt.h:126
#define ASSERT_MSG(condition, msg, args...)
Definition macros.h:66
GameStatus * gGameStatusPtr
Definition main_loop.c:31

Referenced by update_scripts().

◆ evt_get_variable()

s32 evt_get_variable ( Evt * script,
Bytecode var )

Definition at line 1725 of file evt.c.

1725 {
1726 s32 wordIdx;
1727 s32 bitIdx;
1728 s32 temp;
1729
1730 if (var <= EVT_LIMIT) {
1731 return var;
1732 } else if (var <= EVT_IGNORE_ARG) {
1733 return var;
1734 } else if (var <= EVT_FIXED_CUTOFF) {
1736 } else if (var <= EVT_ARRAY_FLAG_CUTOFF) {
1738 wordIdx = var / 32;
1739 bitIdx = var % 32;
1740 var = (script->flagArray[wordIdx] & (1 << bitIdx)) != 0;
1741 return var;
1742 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1744 var = script->array[var];
1745 if (var > EVT_LIMIT) {
1746 if (var <= EVT_FIXED_CUTOFF){
1748 }
1749 }
1750 } else if (var <= EVT_GAME_BYTE_CUTOFF) {
1752 return get_global_byte(var);
1753 } else if (var <= EVT_AREA_BYTE_CUTOFF) {
1755 return get_area_byte(var);
1756 } else if (var <= EVT_GAME_FLAG_CUTOFF) {
1758 return get_global_flag(var);
1759 } else if (var <= EVT_AREA_FLAG_CUTOFF) {
1761 return get_area_flag(var);
1762 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1764 wordIdx = var;
1765 bitIdx = var % 32;
1766 var = (gMapFlags[wordIdx / 32] & (1 << bitIdx)) != 0;
1767 return var;
1768 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1770 wordIdx = var;
1771 bitIdx = var % 32;
1772 var = (script->varFlags[wordIdx / 32] & (1 << bitIdx)) != 0;
1773 return var;
1774 } else if (var <= EVT_MAP_VAR_CUTOFF) {
1776 var = gMapVars[var];
1777 if (var > EVT_LIMIT) {
1779 if (var <= temp){
1781 }
1782 }
1783 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
1785 var = script->varTable[var];
1786 if (var > EVT_LIMIT) {
1788 if (var <= temp){
1790 }
1791 }
1792 }
1793 return var;
1794}
#define EVT_IGNORE_ARG
Definition macros.h:47

Referenced by _npc_jump_to(), _show_message(), appendGfx_piranha_vines(), apply_transform_to_children(), check_input_open_menus(), check_input_status_bar(), evt_handle_add(), evt_handle_allocate_array(), evt_handle_AND(), evt_handle_AND_const(), evt_handle_bind(), evt_handle_bind_lock(), evt_handle_call(), evt_handle_case_equal(), evt_handle_case_equal_AND(), evt_handle_case_equal_OR(), evt_handle_case_greater(), evt_handle_case_greater_equal(), evt_handle_case_less(), evt_handle_case_less_equal(), evt_handle_case_not_equal(), evt_handle_case_range(), evt_handle_divide(), evt_handle_does_script_exist(), evt_handle_end_loop(), evt_handle_exec1(), evt_handle_exec1_get_id(), evt_handle_exec_wait(), evt_handle_get_Nth_float(), evt_handle_get_Nth_word(), evt_handle_goto(), evt_handle_if_AND(), evt_handle_if_equal(), evt_handle_if_greater(), evt_handle_if_greater_equal(), evt_handle_if_less(), evt_handle_if_less_equal(), evt_handle_if_not_AND(), evt_handle_if_not_equal(), evt_handle_jump(), evt_handle_kill(), evt_handle_mod(), evt_handle_multiply(), evt_handle_OR(), evt_handle_OR_const(), evt_handle_resume(), evt_handle_resume_all(), evt_handle_resume_others(), evt_handle_set_array(), evt_handle_set_flag_array(), evt_handle_set_float_buffer_ptr(), evt_handle_set_group(), evt_handle_set_int_buffer_ptr(), evt_handle_set_priority(), evt_handle_set_var(), evt_handle_subtract(), evt_handle_suspend(), evt_handle_suspend_all(), evt_handle_suspend_others(), evt_handle_switch(), evt_handle_wait(), get_spirits_rescued(), gfx_build_knocked_down_player(), goto_map(), load_map_bg(), pause_cleanup(), pause_handle_input(), pause_init(), pause_map_draw_contents(), pause_map_handle_input(), pause_map_init(), pause_map_update(), pause_stats_handle_input(), pause_tutorial_draw_contents(), player_jump(), ProjectileHitbox_GetUsableProjectileID(), Quizmo_CreateReactionEffect(), update_item_entity_pickup(), and update_status_bar().

◆ evt_get_variable_index()

s32 evt_get_variable_index ( Evt * script,
s32 var )

Definition at line 1796 of file evt.c.

1796 {
1797 if (EVT_LIMIT >= var) {
1798 return var;
1799 }
1800 if (EVT_IGNORE_ARG >= var) {
1801 return var;
1802 }
1803 if (EVT_FIXED_CUTOFF >= var) {
1804 return var;
1805 }
1806 if (EVT_ARRAY_FLAG_CUTOFF >= var) {
1808 }
1809 if (EVT_ARRAY_VAR_CUTOFF >= var) {
1811 }
1812 if (EVT_GAME_BYTE_CUTOFF >= var) {
1814 }
1815 if (EVT_AREA_BYTE_CUTOFF >= var) {
1817 }
1818 if (EVT_GAME_FLAG_CUTOFF >= var) {
1820 }
1821 if (EVT_AREA_FLAG_CUTOFF >= var) {
1823 }
1824 if (EVT_MAP_FLAG_CUTOFF >= var) {
1825 return EVT_INDEX_OF_MAP_FLAG(var);
1826 }
1827 if (EVT_LOCAL_FLAG_CUTOFF >= var) {
1829 }
1830 if (EVT_MAP_VAR_CUTOFF >= var) {
1831 return EVT_INDEX_OF_MAP_VAR(var);
1832 }
1833 if (EVT_LOCAL_VAR_CUTOFF >= var) {
1835 }
1836 return var;
1837}

Referenced by evt_handle_bind(), and evt_handle_bind_lock().

◆ evt_get_variable_index_alt()

s32 evt_get_variable_index_alt ( s32 var)

Definition at line 1839 of file evt.c.

1839 {
1840 if (EVT_LIMIT >= var) {
1841 return var;
1842 }
1843 if (EVT_IGNORE_ARG >= var) {
1844 return var;
1845 }
1846 if (EVT_FIXED_CUTOFF >= var) {
1847 return var;
1848 }
1849 if (EVT_ARRAY_FLAG_CUTOFF >= var) {
1851 }
1852 if (EVT_ARRAY_VAR_CUTOFF >= var) {
1854 }
1855 if (EVT_GAME_BYTE_CUTOFF >= var) {
1857 }
1858 if (EVT_AREA_BYTE_CUTOFF >= var) {
1860 }
1861 if (EVT_GAME_FLAG_CUTOFF >= var) {
1863 }
1864 if (EVT_AREA_FLAG_CUTOFF >= var) {
1866 }
1867 if (EVT_MAP_FLAG_CUTOFF >= var) {
1868 return EVT_INDEX_OF_MAP_FLAG(var);
1869 }
1870 if (EVT_LOCAL_FLAG_CUTOFF >= var) {
1872 }
1873 if (EVT_MAP_VAR_CUTOFF >= var) {
1874 return EVT_INDEX_OF_MAP_VAR(var);
1875 }
1876 if (EVT_LOCAL_VAR_CUTOFF >= var) {
1878 }
1879 return var;
1880}

◆ evt_set_variable()

s32 evt_set_variable ( Evt * script,
Bytecode var,
s32 value )

Definition at line 1882 of file evt.c.

1882 {
1884 s32 oldValue;
1885
1886 if (var <= EVT_LIMIT) {
1887 return value;
1888 } else if (var <= EVT_FIXED_CUTOFF) {
1889 return evt_fixed_var_to_float(value);
1890 } else if (var <= EVT_ARRAY_FLAG_CUTOFF) {
1892 flagBitPos = var % 32;
1893 if (value) {
1894 script->flagArray[var / 32] |= 1 << flagBitPos;
1895 } else {
1896 script->flagArray[var / 32] &= ~(1 << flagBitPos);
1897 }
1898 return value;
1899 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1901 oldValue = script->array[var];
1902 script->array[var] = value;
1903 return oldValue;
1904 } else if (var <= EVT_GAME_BYTE_CUTOFF) {
1907 set_global_byte(var, value);
1908 return oldValue;
1909 } else if (var <= EVT_AREA_BYTE_CUTOFF) {
1912 set_area_byte(var, value);
1913 return oldValue;
1914 } else if (var <= EVT_GAME_FLAG_CUTOFF) {
1917 if (value) {
1919 } else {
1921 }
1922 return oldValue;
1923 } else if (var <= EVT_AREA_FLAG_CUTOFF) {
1926 if (value) {
1928 } else {
1930 }
1931 return oldValue;
1932 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1934 flagBitPos = var % 32;
1935 if (value) {
1936 gMapFlags[var / 32] |= 1 << flagBitPos;
1937 } else {
1938 gMapFlags[var / 32] &= ~(1 << flagBitPos);
1939 }
1940 return value;
1941 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1943 flagBitPos = var % 32;
1944 if (value) {
1945 script->varFlags[var / 32] |= 1 << flagBitPos;
1946 } else {
1947 script->varFlags[var / 32] &= ~(1 << flagBitPos);
1948 }
1949 return value;
1950 } else if (var <= EVT_MAP_VAR_CUTOFF) {
1953 gMapVars[var] = value;
1954 return oldValue;
1955 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
1957 oldValue = script->varTable[var];
1958 script->varTable[var] = value;
1959 return oldValue;
1960 } else {
1961 return value;
1962 }
1963}
s32 set_global_flag(s32 index)
Definition vars_access.c:65
s32 set_area_flag(s32 index)
s32 clear_area_flag(s32 index)
s8 set_area_byte(s32 index, s32 value)
s32 clear_global_flag(s32 index)
Definition vars_access.c:41
s8 set_global_byte(s32 index, s32 value)
Set value of saved game byte.

Referenced by evt_handle_add(), evt_handle_allocate_array(), evt_handle_AND(), evt_handle_AND_const(), evt_handle_bind(), evt_handle_divide(), evt_handle_does_script_exist(), evt_handle_end_loop(), evt_handle_exec1_get_id(), evt_handle_get_1_word(), evt_handle_get_2_word(), evt_handle_get_3_word(), evt_handle_get_4_word(), evt_handle_get_Nth_word(), evt_handle_mod(), evt_handle_multiply(), evt_handle_OR(), evt_handle_OR_const(), evt_handle_set_const(), evt_handle_set_var(), evt_handle_subtract(), exec_ShakeCamX(), filemenu_yesno_handle_input(), init_enter_world_shared(), load_demo_battle(), state_step_demo(), and update_item_entity_pickup().

◆ evt_get_float_variable()

f32 evt_get_float_variable ( Evt * script,
Bytecode var )

Definition at line 1965 of file evt.c.

1965 {
1966 s32 temp;
1967
1968 if (var <= EVT_LIMIT) {
1969 return var;
1970 } else if (var <= EVT_IGNORE_ARG) {
1971 return var;
1972 } else if (var <= EVT_FIXED_CUTOFF) {
1974 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1976 return evt_fixed_var_to_float(script->array[var]);
1977 } else if (var <= EVT_GAME_BYTE_CUTOFF) {
1980 } else if (var <= EVT_AREA_BYTE_CUTOFF) {
1983 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1985 temp = var % 32;
1986 var = gMapFlags[var / 32] & (1 << temp);
1987 if (var) {
1988 return 1.0f;
1989 } else {
1990 return 0.0f;
1991 }
1992 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1994 temp = var % 32;
1995 var = script->varFlags[var / 32] & (1 << temp);
1996 if (var) {
1997 return 1.0f;
1998 } else {
1999 return 0.0f;
2000 }
2001 } else if (var <= EVT_MAP_VAR_CUTOFF) {
2004 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
2006 return evt_fixed_var_to_float(script->varTable[var]);
2007 } else {
2009 }
2010}

Referenced by evt_handle_addF(), evt_handle_divideF(), evt_handle_get_1_float(), evt_handle_get_2_float(), evt_handle_get_3_float(), evt_handle_get_4_float(), evt_handle_multiplyF(), evt_handle_set_float(), evt_handle_set_timescale(), evt_handle_subtractF(), evt_handle_wait_seconds(), and make_vine_interpolation().

◆ evt_set_float_variable()

f32 evt_set_float_variable ( Evt * script,
Bytecode var,
f32 value )

Definition at line 2012 of file evt.c.

2012 {
2013 s32 temp;
2014 s32 oldValue;
2015
2016 if (var <= EVT_LIMIT) {
2017 return value;
2018 } else if (var <= EVT_FIXED_CUTOFF) {
2019 return value;
2020 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
2022 oldValue = script->array[var];
2023 script->array[var] = evt_float_to_fixed_var(value);
2025 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
2027 temp = var % 32;
2028 if (value) {
2029 gMapFlags[var / 32] |= 1 << temp;
2030 } else {
2031 gMapFlags[var / 32] &= ~(1 << temp);
2032 }
2033 return value;
2034 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
2036 temp = var % 32;
2037 if (value) {
2038 script->varFlags[var / 32] |= 1 << temp;
2039 } else {
2040 script->varFlags[var / 32] &= ~(1 << temp);
2041 }
2042 return value;
2043 } else if (var <= EVT_MAP_VAR_CUTOFF) {
2048 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
2050 oldValue = script->varTable[var];
2051 script->varTable[var] = evt_float_to_fixed_var(value);
2053 } else {
2054 return value;
2055 }
2056}
Bytecode evt_float_to_fixed_var(f32 value)
Definition evt.c:27

Referenced by evt_handle_addF(), evt_handle_divideF(), evt_handle_get_1_float(), evt_handle_get_2_float(), evt_handle_get_3_float(), evt_handle_get_4_float(), evt_handle_get_Nth_float(), evt_handle_multiplyF(), evt_handle_set_float(), evt_handle_subtractF(), and exec_ShakeCamX().

Variable Documentation

◆ gMapFlags

◆ gMapVars

◆ evtDebugPrintBuffer

char evtDebugPrintBuffer[0x100]
extern

Definition at line 22 of file script_list.c.

Referenced by evt_handle_print_debug_var().

◆ EvtCallingLine

Bytecode* EvtCallingLine

Definition at line 10 of file evt.c.

Referenced by evt_handle_call().