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)
 
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

u32 * gMapFlags
 
s32 * gMapVars
 
char evtDebugPrintBuffer [0x100]
 
BytecodeEvtCallingLine
 

Function Documentation

◆ evt_find_label()

Bytecode * evt_find_label ( Evt * script,
s32 arg1 )

Definition at line 2022 of file evt.c.

2022 {
2023 Bytecode* ret = script->ptrReadPos;
2024 s32 i;
2025
2026 if (arg1 < EVT_LIMIT) {
2027 return (Bytecode*) arg1;
2028 }
2029
2030 for (i = 0; i < ARRAY_COUNT(script->labelIndices); i++) {
2031 if (script->labelIndices[i] == arg1) {
2032 ret = script->labelPositions[i];
2033 break;
2034 }
2035 }
2036
2037 ASSERT(i < ARRAY_COUNT(script->labelIndices));
2038 return ret;
2039}
s8 labelIndices[16]
void * labelPositions[16]
Bytecode * ptrReadPos
#define ASSERT(condition)
s32 Bytecode
Definition evt.h:7
#define ARRAY_COUNT(arr)
Definition macros.h:40
#define EVT_LIMIT
Definition macros.h:47

Referenced by evt_handle_goto().

◆ evt_skip_if()

Bytecode * evt_skip_if ( Evt * script)

Definition at line 2041 of file evt.c.

2041 {
2042 s32 nestedIfDepth = 0;
2043 Bytecode* pos = script->ptrNextLine;
2044 Bytecode opcode;
2045 s32 nargs;
2046
2047 do {
2048 opcode = *pos++;
2049 nargs = *pos++;
2050 pos += nargs;
2051
2052 switch (opcode) {
2053 case EVT_OP_END:
2054 PANIC();
2055 case EVT_OP_END_IF:
2056 nestedIfDepth--;
2057 if (nestedIfDepth < 0) {
2058 return pos;
2059 }
2060 break;
2061 case EVT_OP_IF_EQ:
2062 case EVT_OP_IF_NE:
2063 case EVT_OP_IF_LT:
2064 case EVT_OP_IF_GT:
2065 case EVT_OP_IF_LE:
2066 case EVT_OP_IF_GE:
2067 case EVT_OP_IF_FLAG:
2068 case EVT_OP_IF_NOT_FLAG:
2069 nestedIfDepth++;
2070 break;
2071 case EVT_OP_ELSE:
2072 if (nestedIfDepth == 0) {
2073 return pos;
2074 }
2075 break;
2076 }
2077 } while (TRUE);
2078}
Bytecode * ptrNextLine
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 2080 of file evt.c.

2080 {
2081 s32 nestedIfDepth = 0;
2082 Bytecode* pos = script->ptrNextLine;
2083 Bytecode opcode;
2084 s32 nargs;
2085
2086 do {
2087 opcode = *pos++;
2088 nargs = *pos++;
2089 pos += nargs;
2090
2091 switch (opcode) {
2092 case EVT_OP_END:
2093 PANIC();
2094 case EVT_OP_END_IF:
2095 nestedIfDepth--;
2096 if (nestedIfDepth < 0) {
2097 return pos;
2098 }
2099 break;
2100 case EVT_OP_IF_EQ:
2101 nestedIfDepth++;
2102 break;
2103 case EVT_OP_IF_NE:
2104 nestedIfDepth++;
2105 break;
2106 case EVT_OP_IF_LT:
2107 nestedIfDepth++;
2108 break;
2109 case EVT_OP_IF_GT:
2110 nestedIfDepth++;
2111 break;
2112 case EVT_OP_IF_LE:
2113 nestedIfDepth++;
2114 break;
2115 case EVT_OP_IF_GE:
2116 nestedIfDepth++;
2117 break;
2118 case EVT_OP_IF_FLAG:
2119 nestedIfDepth++;
2120 break;
2121 case EVT_OP_IF_NOT_FLAG:
2122 nestedIfDepth++;
2123 break;
2124 }
2125 } while (TRUE);
2126}

Referenced by evt_handle_else().

◆ evt_goto_end_case()

Bytecode * evt_goto_end_case ( Evt * script)

Definition at line 2128 of file evt.c.

2128 {
2129 s32 switchDepth = 1;
2130 Bytecode* pos = script->ptrNextLine;
2131 s32* opcode;
2132 s32* nargs;
2133
2134 do {
2135 opcode = pos++;
2136 nargs = pos++;
2137 pos += *nargs;
2138
2139 switch (*opcode) {
2140 case EVT_OP_END:
2141 PANIC();
2142 break;
2143 case EVT_OP_SWITCH:
2144 switchDepth++;
2145 break;
2146 case EVT_OP_END_SWITCH:
2147 switchDepth--;
2148 if (switchDepth == 0) {
2149 return opcode;
2150 }
2151 break;
2152 }
2153 } while (TRUE);
2154}
@ 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 2156 of file evt.c.

2156 {
2157 s32 switchDepth = 1;
2158 Bytecode* pos = script->ptrNextLine;
2159 s32* opcode;
2160 s32* nargs;
2161
2162 do {
2163 opcode = pos++;
2164 nargs = pos++;
2165 pos += *nargs;
2166
2167 switch (*opcode) {
2168 case EVT_OP_END:
2169 PANIC();
2170 break;
2171 case EVT_OP_SWITCH:
2172 switchDepth++;
2173 break;
2174 case EVT_OP_END_SWITCH:
2175 switchDepth--;
2176 if (switchDepth == 0) {
2177 return opcode;
2178 }
2179 break;
2180 case EVT_OP_CASE_EQ:
2181 case EVT_OP_CASE_NE:
2182 case EVT_OP_CASE_LT:
2183 case EVT_OP_CASE_GT:
2184 case EVT_OP_CASE_LE:
2185 case EVT_OP_CASE_GE:
2187 case EVT_OP_CASE_OR_EQ:
2188 case EVT_OP_CASE_AND_EQ:
2190 case EVT_OP_CASE_RANGE:
2191 if (switchDepth == 1) {
2192 return opcode;
2193 }
2194 break;
2195 }
2196 } while (TRUE);
2197}
@ 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 2199 of file evt.c.

2199 {
2200 s32 loopDepth = 0;
2201 Bytecode* pos = script->ptrNextLine;
2202 s32 opcode;
2203 s32 nargs;
2204
2205 do {
2206 opcode = *pos++;
2207 nargs = *pos++;
2208 pos += nargs;
2209
2210 switch (opcode) {
2211 case EVT_OP_END:
2212 PANIC();
2213 break;
2214 case EVT_OP_END_LOOP:
2215 loopDepth--;
2216 if (loopDepth < 0) {
2217 return pos;
2218 }
2219 break;
2220 case EVT_OP_LOOP:
2221 loopDepth++;
2222 break;
2223 }
2224 } while (TRUE);
2225}
@ 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 17 of file evt.c.

17 {
18 if (scriptVar <= EVT_FIXED_CUTOFF) {
19 return EVT_FIXED_TO_FLOAT(scriptVar);
20 } else {
21 return scriptVar;
22 }
23}
#define EVT_FIXED_CUTOFF
Definition macros.h:44
#define EVT_FIXED_TO_FLOAT(x)
Progammatically converts Float --> f32.
Definition macros.h:54

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 25 of file evt.c.

25 {
26 // not equivalent to the FLOAT_TO_FIXED() macro due to the s32 cast
27 // occuring *before* the add here and *after* the add in the macro
28 return (s32)(value * 1024.0f) + -EVT_FIXED_OFFSET;
29}
#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 31 of file evt.c.

31 {
32 kill_script(script);
33 return ApiStatus_FINISH;
34}
#define ApiStatus_FINISH
Definition evt.h:120
void kill_script(Evt *instanceToKill)

Referenced by evt_execute_next_command().

◆ evt_handle_label()

ApiStatus evt_handle_label ( Evt * script)

Definition at line 36 of file evt.c.

36 {
37 return ApiStatus_DONE2;
38}
#define ApiStatus_DONE2
Definition evt.h:118

Referenced by evt_execute_next_command().

◆ evt_handle_goto()

ApiStatus evt_handle_goto ( Evt * script)

Definition at line 40 of file evt.c.

40 {
41 script->ptrNextLine = evt_find_label(script, evt_get_variable(script, *script->ptrReadPos));
42 return ApiStatus_DONE2;
43}
s32 evt_get_variable(Evt *script, Bytecode var)
Definition evt.c:1689
Bytecode * evt_find_label(Evt *script, s32 arg1)
Definition evt.c:2022

Referenced by evt_execute_next_command().

◆ evt_handle_loop()

ApiStatus evt_handle_loop ( Evt * script)

Definition at line 45 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_end_loop()

ApiStatus evt_handle_end_loop ( Evt * script)

Definition at line 58 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_break_loop()

ApiStatus evt_handle_break_loop ( Evt * script)

Definition at line 88 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_wait()

ApiStatus evt_handle_wait ( Evt * script)

Definition at line 95 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_wait_seconds()

ApiStatus evt_handle_wait_seconds ( Evt * script)

Definition at line 111 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_if_equal()

ApiStatus evt_handle_if_equal ( Evt * script)

Definition at line 127 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_if_not_equal()

ApiStatus evt_handle_if_not_equal ( Evt * script)

Definition at line 139 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_if_less()

ApiStatus evt_handle_if_less ( Evt * script)

Definition at line 151 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_if_greater()

ApiStatus evt_handle_if_greater ( Evt * script)

Definition at line 163 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_if_less_equal()

ApiStatus evt_handle_if_less_equal ( Evt * script)

Definition at line 175 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_if_greater_equal()

ApiStatus evt_handle_if_greater_equal ( Evt * script)

Definition at line 187 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_if_AND()

ApiStatus evt_handle_if_AND ( Evt * script)

Definition at line 199 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_if_not_AND()

ApiStatus evt_handle_if_not_AND ( Evt * script)

Definition at line 210 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_else()

ApiStatus evt_handle_else ( Evt * script)

Definition at line 221 of file evt.c.

221 {
222 script->ptrNextLine = evt_skip_else(script);
223 return ApiStatus_DONE2;
224}
Bytecode * evt_skip_else(Evt *script)
Definition evt.c:2080

Referenced by evt_execute_next_command().

◆ evt_handle_end_if()

ApiStatus evt_handle_end_if ( Evt * script)

Definition at line 226 of file evt.c.

226 {
227 return ApiStatus_DONE2;
228}

Referenced by evt_execute_next_command().

◆ evt_handle_switch()

ApiStatus evt_handle_switch ( Evt * script)

Definition at line 230 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_switch_const()

ApiStatus evt_handle_switch_const ( Evt * script)

Definition at line 243 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_equal()

ApiStatus evt_handle_case_equal ( Evt * script)

Definition at line 256 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_not_equal()

ApiStatus evt_handle_case_not_equal ( Evt * script)

Definition at line 279 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_less()

ApiStatus evt_handle_case_less ( Evt * script)

Definition at line 302 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_less_equal()

ApiStatus evt_handle_case_less_equal ( Evt * script)

Definition at line 325 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_greater()

ApiStatus evt_handle_case_greater ( Evt * script)

Definition at line 348 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_greater_equal()

ApiStatus evt_handle_case_greater_equal ( Evt * script)

Definition at line 371 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_range()

ApiStatus evt_handle_case_range ( Evt * script)

Definition at line 394 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_default()

ApiStatus evt_handle_case_default ( Evt * script)

Definition at line 420 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_AND()

ApiStatus evt_handle_case_AND ( Evt * script)

Definition at line 435 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_equal_OR()

ApiStatus evt_handle_case_equal_OR ( Evt * script)

Definition at line 460 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_case_equal_AND()

ApiStatus evt_handle_case_equal_AND ( Evt * script)

Definition at line 485 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_end_case_group()

ApiStatus evt_handle_end_case_group ( Evt * script)

Definition at line 513 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_break_case()

ApiStatus evt_handle_break_case ( Evt * script)

Definition at line 530 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_end_switch()

ApiStatus evt_handle_end_switch ( Evt * script)

Definition at line 536 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_set_var()

ApiStatus evt_handle_set_var ( Evt * script)

Definition at line 547 of file evt.c.

547 {
548 Bytecode* args = script->ptrReadPos;
549 s32 curPtrReadPos = *args++;
550
551 evt_set_variable(script, curPtrReadPos, evt_get_variable(script, *args++));
552 return ApiStatus_DONE2;
553}

Referenced by evt_execute_next_command().

◆ evt_handle_set_const()

ApiStatus evt_handle_set_const ( Evt * script)

Definition at line 555 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_set_float()

ApiStatus evt_handle_set_float ( Evt * script)

Definition at line 560 of file evt.c.

560 {
561 Bytecode* args = script->ptrReadPos;
562 Bytecode var = *args++;
563
564 evt_set_float_variable(script, var, evt_get_float_variable(script, *args++));
565 return ApiStatus_DONE2;
566}
f32 evt_set_float_variable(Evt *script, Bytecode var, f32 value)
Definition evt.c:1976

Referenced by evt_execute_next_command().

◆ evt_handle_add()

ApiStatus evt_handle_add ( Evt * script)

Definition at line 568 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_subtract()

ApiStatus evt_handle_subtract ( Evt * script)

Definition at line 580 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_multiply()

ApiStatus evt_handle_multiply ( Evt * script)

Definition at line 592 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_divide()

ApiStatus evt_handle_divide ( Evt * script)

Definition at line 604 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_mod()

ApiStatus evt_handle_mod ( Evt * script)

Definition at line 616 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_addF()

ApiStatus evt_handle_addF ( Evt * script)

Definition at line 628 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_subtractF()

ApiStatus evt_handle_subtractF ( Evt * script)

Definition at line 640 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_multiplyF()

ApiStatus evt_handle_multiplyF ( Evt * script)

Definition at line 652 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_divideF()

ApiStatus evt_handle_divideF ( Evt * script)

Definition at line 664 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_set_int_buffer_ptr()

ApiStatus evt_handle_set_int_buffer_ptr ( Evt * script)

Definition at line 676 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_set_float_buffer_ptr()

ApiStatus evt_handle_set_float_buffer_ptr ( Evt * script)

Definition at line 683 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_get_1_word()

ApiStatus evt_handle_get_1_word ( Evt * script)

Definition at line 690 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_get_2_word()

ApiStatus evt_handle_get_2_word ( Evt * script)

Definition at line 700 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_get_3_word()

ApiStatus evt_handle_get_3_word ( Evt * script)

Definition at line 713 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_get_4_word()

ApiStatus evt_handle_get_4_word ( Evt * script)

Definition at line 729 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_get_Nth_word()

ApiStatus evt_handle_get_Nth_word ( Evt * script)

Definition at line 748 of file evt.c.

748 {
749 Bytecode* args = script->ptrReadPos;
750 Bytecode var;
751
752 var = *args++;
753 evt_set_variable(script, var, script->buffer[evt_get_variable(script, *args++)]);
754
755 return ApiStatus_DONE2;
756}

Referenced by evt_execute_next_command().

◆ evt_handle_get_1_float()

ApiStatus evt_handle_get_1_float ( Evt * script)

Definition at line 758 of file evt.c.

758 {
759 Bytecode* args = script->ptrReadPos;
760 Bytecode var;
761
762 var = *args++;
763 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
764
765 return ApiStatus_DONE2;
766}

Referenced by evt_execute_next_command().

◆ evt_handle_get_2_float()

ApiStatus evt_handle_get_2_float ( Evt * script)

Definition at line 768 of file evt.c.

768 {
769 Bytecode* args = script->ptrReadPos;
770 Bytecode var;
771
772 var = *args++;
773 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
774
775 var = *args++;
776 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
777
778 return ApiStatus_DONE2;
779}

Referenced by evt_execute_next_command().

◆ evt_handle_get_3_float()

ApiStatus evt_handle_get_3_float ( Evt * script)

Definition at line 781 of file evt.c.

781 {
782 Bytecode* args = script->ptrReadPos;
783 Bytecode var;
784
785 var = *args++;
786 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
787
788 var = *args++;
789 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
790
791 var = *args++;
792 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
793
794 return ApiStatus_DONE2;
795}

Referenced by evt_execute_next_command().

◆ evt_handle_get_4_float()

ApiStatus evt_handle_get_4_float ( Evt * script)

Definition at line 797 of file evt.c.

797 {
798 Bytecode* args = script->ptrReadPos;
799 Bytecode var;
800
801 var = *args++;
802 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
803
804 var = *args++;
805 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
806
807 var = *args++;
808 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
809
810 var = *args++;
811 evt_set_float_variable(script, var, evt_get_float_variable(script, *script->buffer++));
812
813 return ApiStatus_DONE2;
814}

Referenced by evt_execute_next_command().

◆ evt_handle_get_Nth_float()

ApiStatus evt_handle_get_Nth_float ( Evt * script)

Definition at line 816 of file evt.c.

816 {
817 Bytecode* args = script->ptrReadPos;
818 Bytecode var;
819
820 var = *args++;
821 evt_set_float_variable(script, var, script->buffer[evt_get_variable(script, *args++)]);
822
823 return ApiStatus_DONE2;
824}

Referenced by evt_execute_next_command().

◆ evt_handle_set_array()

ApiStatus evt_handle_set_array ( Evt * script)

Definition at line 826 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_set_flag_array()

ApiStatus evt_handle_set_flag_array ( Evt * script)

Definition at line 831 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_allocate_array()

ApiStatus evt_handle_allocate_array ( Evt * script)

Definition at line 836 of file evt.c.

836 {
837 Bytecode* args = script->ptrReadPos;
838 s32 size = evt_get_variable(script, *args++);
839 Bytecode var = *args++;
840
841 script->array = (s32*)heap_malloc(size * 4);
842 evt_set_variable(script, var, (s32)script->array);
843 return ApiStatus_DONE2;
844}
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 846 of file evt.c.

846 {
847 Bytecode* args = script->ptrReadPos;
848 s32 var = *args++;
849 s32 bits = evt_get_variable(script, *args++);
850 s32 prev = evt_get_variable(script, var);
851
852 evt_set_variable(script, var, prev & bits);
853 return ApiStatus_DONE2;
854}

Referenced by evt_execute_next_command().

◆ evt_handle_AND_const()

ApiStatus evt_handle_AND_const ( Evt * script)

Definition at line 856 of file evt.c.

856 {
857 Bytecode* args = script->ptrReadPos;
858 s32 var = *args++;
859 s32 bits = *args++;
860 s32 prev = evt_get_variable(script, var);
861
862 evt_set_variable(script, var, prev & bits);
863 return ApiStatus_DONE2;
864}

Referenced by evt_execute_next_command().

◆ evt_handle_OR()

ApiStatus evt_handle_OR ( Evt * script)

Definition at line 866 of file evt.c.

866 {
867 Bytecode* args = script->ptrReadPos;
868 s32 var = *args++;
869 s32 bits = evt_get_variable(script, *args++);
870 s32 prev = evt_get_variable(script, var);
871
872 evt_set_variable(script, var, prev | bits);
873 return ApiStatus_DONE2;
874}

Referenced by evt_execute_next_command().

◆ evt_handle_OR_const()

ApiStatus evt_handle_OR_const ( Evt * script)

Definition at line 876 of file evt.c.

876 {
877 Bytecode* args = script->ptrReadPos;
878 s32 var = *args++;
879 s32 bits = *args++;
880 s32 prev = evt_get_variable(script, var);
881
882 evt_set_variable(script, var, prev | bits);
883 return ApiStatus_DONE2;
884}

Referenced by evt_execute_next_command().

◆ evt_handle_call()

ApiStatus evt_handle_call ( Evt * script)

Definition at line 886 of file evt.c.

886 {
887 Bytecode* args = script->ptrReadPos;
888 s32 isInitialCall;
889 ApiFunc func;
890 ApiStatus ret;
891 EvtCallingLine = script->ptrCurLine;
892
893 if (script->blocked) {
894 isInitialCall = FALSE;
895 func = script->callFunction;
896 ret = func(script, isInitialCall);
897 } else {
898 script->callFunction = (ApiFunc)evt_get_variable(script, *args++);
899 script->ptrReadPos = args;
900 script->curArgc--;
901 script->blocked = TRUE;
902 isInitialCall = TRUE;
903 func = script->callFunction;
904 ret = func(script, isInitialCall);
905 }
906
907 EvtCallingLine = NULL;
908 return ret;
909}
Bytecode * ptrCurLine
ApiStatus(* ApiFunc)(struct Evt *, s32)
ApiFunc callFunction
Bytecode * EvtCallingLine
Definition evt.c:8
s32 ApiStatus
Definition evt.h:115

Referenced by evt_execute_next_command().

◆ evt_handle_exec1()

ApiStatus evt_handle_exec1 ( Evt * script)

Definition at line 911 of file evt.c.

911 {
912 Bytecode* args = script->ptrReadPos;
913 EvtScript* newSource = (EvtScript*)evt_get_variable(script, *args++);
914 Evt* newScript;
915 s32 i;
916
917 newScript = start_script_in_group(newSource, script->priority, 0, script->groupFlags);
918
919 newScript->owner1 = script->owner1;
920 newScript->owner2 = script->owner2;
921
922 for (i = 0; i < ARRAY_COUNT(script->varTable); i++) {
923 newScript->varTable[i] = script->varTable[i];
924 }
925
926 for (i = 0; i < ARRAY_COUNT(script->varFlags); i++) {
927 newScript->varFlags[i] = script->varFlags[i];
928 }
929
930 newScript->array = script->array;
931 newScript->flagArray = script->flagArray;
932
933 return ApiStatus_DONE2;
934}
u8 groupFlags
union Evt::@11 owner2
Initially -1.
s32 varFlags[3]
Bytecode EvtScript[]
union Evt::@10 owner1
Initially -1.
u8 priority
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 936 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_exec_wait()

ApiStatus evt_handle_exec_wait ( Evt * script)

Definition at line 964 of file evt.c.

964 {
965 Bytecode* args = script->ptrReadPos;
966 EvtScript* newSource = (EvtScript*)evt_get_variable(script, *args++);
967
968 start_child_script(script, newSource, 0);
970 return ApiStatus_FINISH;
971}
u8 curOpcode
@ 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 973 of file evt.c.

973 {
974 Bytecode* args = script->ptrReadPos;
975
976 script->ptrFirstLine = (Bytecode*) evt_get_variable(script, *args++);
977 restart_script(script);
978 return ApiStatus_DONE2;
979}
Bytecode * ptrFirstLine
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 981 of file evt.c.

981 {
982 EvtScript* scriptStart;
983 Evt* script;
984
985 if (trigger->runningScript == NULL) {
986 scriptStart = trigger->onTriggerEvt;
987 if (is_another_trigger_bound(trigger, scriptStart)) {
988 return 0;
989 }
990
991 script = start_script(scriptStart, trigger->priority, EVT_FLAG_RUN_IMMEDIATELY);
992 trigger->runningScript = script;
993 trigger->runningScriptID = script->id;
994 script->varTable[0] = trigger->varTable[0];
995 script->varTable[1] = trigger->varTable[1];
996 script->varTable[2] = trigger->varTable[2];
997 script->owner2.trigger = trigger;
998 }
999
1000 if (!does_script_exist(trigger->runningScriptID)) {
1001 trigger->runningScript = NULL;
1002 return 0; // stop calling this function
1003 }
1004
1005 return 1; // keep calling this function every frame
1006}
@ EVT_FLAG_RUN_IMMEDIATELY
don't wait for next update_scripts call
Definition evt.h:161
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 1008 of file evt.c.

1008 {
1009 Bytecode* args = script->ptrReadPos;
1010 Trigger* trigger;
1011 Bytecode* triggerScript = (Bytecode*)evt_get_variable(script, *args++);
1012 Bytecode triggerType = *args++;
1013 Bytecode colliderIDVar = *args++;
1014 Bytecode hasInteractPrompt = *args++;
1015 Bytecode triggerOut = *args++;
1017
1018 bp.flags = triggerType | TRIGGER_SCRIPT_BOUND;
1019 bp.colliderID = evt_get_variable(script, colliderIDVar);
1020 bp.varIndex = evt_get_variable_index(script, colliderIDVar);
1021 bp.hasPlayerInteractPrompt = hasInteractPrompt;
1022 bp.tattleMsg = 0;
1024
1025 trigger = create_trigger(&bp);
1026 trigger->onTriggerEvt = (EvtScript*)triggerScript;
1027 trigger->runningScript = NULL;
1028 trigger->priority = script->priority;
1029 trigger->varTable[0] = evt_get_variable(script, script->varTable[0]);
1030 trigger->varTable[1] = evt_get_variable(script, script->varTable[1]);
1031 trigger->varTable[2] = evt_get_variable(script, script->varTable[2]);
1032
1033 if (triggerOut != 0) {
1034 evt_set_variable(script, triggerOut, (s32)trigger);
1035 }
1036
1037 return ApiStatus_DONE2;
1038}
@ TRIGGER_SCRIPT_BOUND
Definition enums.h:2691
s32 evt_get_variable_index(Evt *script, s32 var)
Definition evt.c:1760
s32 evt_trigger_on_activate_exec_script(Trigger *trigger)
Definition evt.c:981
Trigger * create_trigger(TriggerBlueprint *def)
Definition trigger.c:55
s32(* onActivateFunc)(struct Trigger *)

Referenced by evt_execute_next_command().

◆ evt_handle_unbind()

ApiStatus evt_handle_unbind ( Evt * script)

Definition at line 1045 of file evt.c.

1045 {
1046 delete_trigger(script->owner2.trigger);
1047 return ApiStatus_DONE2;
1048}
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 1050 of file evt.c.

1050 {
1052 return ApiStatus_DONE2;
1053}
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 1055 of file evt.c.

1055 {
1056 set_script_priority(script, evt_get_variable(script, *script->ptrReadPos));
1057 return ApiStatus_DONE2;
1058}
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 1060 of file evt.c.

1060 {
1061 set_script_timescale(script, evt_get_float_variable(script, *script->ptrReadPos));
1062 return ApiStatus_DONE2;
1063}
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 1065 of file evt.c.

1065 {
1066 set_script_group(script, evt_get_variable(script, *script->ptrReadPos));
1067 return ApiStatus_DONE2;
1068}
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 1070 of file evt.c.

1070 {
1072 return ApiStatus_DONE2;
1073}
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 1075 of file evt.c.

1075 {
1076 resume_all_group(evt_get_variable(script, *script->ptrReadPos));
1077 return ApiStatus_DONE2;
1078}
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 1080 of file evt.c.

1080 {
1081 suspend_group_others(script, evt_get_variable(script, *script->ptrReadPos));
1082 return ApiStatus_DONE2;
1083}
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 1085 of file evt.c.

1085 {
1086 resume_group_others(script, evt_get_variable(script, *script->ptrReadPos));
1087 return ApiStatus_DONE2;
1088}
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 1090 of file evt.c.

1090 {
1092 return ApiStatus_DONE2;
1093}
s32 suspend_all_script(s32 id)

Referenced by evt_execute_next_command().

◆ evt_handle_resume()

ApiStatus evt_handle_resume ( Evt * script)

Definition at line 1095 of file evt.c.

1095 {
1097 return ApiStatus_DONE2;
1098}
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 1100 of file evt.c.

1100 {
1101 Bytecode* args = script->ptrReadPos;
1102 s32 scriptID = evt_get_variable(script, *args++);
1103 Bytecode var2 = *args++;
1104
1105 evt_set_variable(script, var2, does_script_exist(scriptID));
1106 return ApiStatus_DONE2;
1107}

Referenced by evt_execute_next_command().

◆ evt_trigger_on_activate_lock()

s32 evt_trigger_on_activate_lock ( Trigger * trigger)

Definition at line 1109 of file evt.c.

1109 {
1110 if (trigger->runningScript == NULL) {
1111 Evt* newScript = start_script(trigger->onTriggerEvt, trigger->priority, EVT_FLAG_RUN_IMMEDIATELY);
1112 trigger->runningScript = newScript;
1113 trigger->runningScriptID = newScript->id;
1114 newScript->varTable[0] = trigger->varTable[0];
1115 newScript->varTable[1] = trigger->varTable[1];
1116 newScript->varTable[2] = trigger->varTable[2];
1117 newScript->owner2.trigger = trigger;
1118 }
1119
1120 if (!does_script_exist(trigger->runningScriptID)) {
1121 trigger->runningScript = NULL;
1122 trigger->flags &= ~TRIGGER_ACTIVATED;
1123 }
1124}

Referenced by evt_handle_bind_lock().

◆ evt_handle_bind_lock()

ApiStatus evt_handle_bind_lock ( Evt * script)

Definition at line 1126 of file evt.c.

1126 {
1127 Bytecode* args = script->ptrReadPos;
1128 Trigger* trigger;
1129 Bytecode* triggerScript = (Bytecode*)evt_get_variable(script, *args++);
1130 Bytecode triggerType = *args++;
1131 Bytecode colliderIDVar = *args++;
1132 s32* itemList = (s32*)evt_get_variable(script, *args++);
1133 Bytecode triggerOut = *args++;
1134 s32 hasInteractPrompt = *args++;
1136
1137 bp.flags = triggerType | TRIGGER_SCRIPT_BOUND;
1138 bp.colliderID = evt_get_variable(script, colliderIDVar);
1139 bp.varIndex = evt_get_variable_index(script, colliderIDVar);
1140 bp.itemList = itemList;
1142 bp.tattleMsg = triggerOut;
1143 bp.hasPlayerInteractPrompt = hasInteractPrompt;
1144
1145 trigger = create_trigger(&bp);
1146 trigger->onTriggerEvt = (EvtScript*)triggerScript;
1147 trigger->runningScript = NULL;
1148 trigger->priority = script->priority;
1149 trigger->varTable[0] = evt_get_variable(script, script->varTable[0]);
1150 trigger->varTable[1] = evt_get_variable(script, script->varTable[1]);
1151 trigger->varTable[2] = evt_get_variable(script, script->varTable[2]);
1152
1153 return ApiStatus_DONE2;
1154}
s32 evt_trigger_on_activate_lock(Trigger *trigger)
Definition evt.c:1109

Referenced by evt_execute_next_command().

◆ evt_handle_thread()

ApiStatus evt_handle_thread ( Evt * script)

Definition at line 1156 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_handle_end_thread()

ApiStatus evt_handle_end_thread ( Evt * script)

Definition at line 1189 of file evt.c.

1189 {
1190 kill_script(script);
1191 return ApiStatus_FINISH;
1192}

Referenced by evt_execute_next_command().

◆ evt_handle_child_thread()

ApiStatus evt_handle_child_thread ( Evt * script)

Definition at line 1194 of file evt.c.

1194 {
1195 Evt* newScript;
1196 s32 nargs;
1197 s32 opcode;
1198 s32 i;
1199
1200 Bytecode* startLine = script->ptrNextLine;
1201 Bytecode* endLine = startLine;
1202 do {
1203 opcode = *endLine++;
1204 nargs = *endLine++;
1205 endLine += nargs;
1206 } while (opcode != EVT_OP_END_CHILD_THREAD);
1207
1208 script->ptrNextLine = endLine;
1209 newScript = func_802C39F8(script, startLine, EVT_FLAG_RUN_IMMEDIATELY | EVT_FLAG_THREAD);
1210 newScript->owner1.enemyID = script->owner1.enemyID;
1211 newScript->owner2.npcID = script->owner2.npcID;
1212 newScript->groupFlags = script->groupFlags;
1213 newScript->array = script->array;
1214 newScript->flagArray = script->flagArray;
1215
1216 return ApiStatus_DONE2;
1217}
@ EVT_OP_END_CHILD_THREAD
Definition evt.h:99
Evt * func_802C39F8(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 1219 of file evt.c.

1219 {
1220 kill_script(script);
1221 return ApiStatus_BLOCK;
1222}
#define ApiStatus_BLOCK
Definition evt.h:116

Referenced by evt_execute_next_command().

◆ evt_handle_debug_log()

ApiStatus evt_handle_debug_log ( Evt * script)

Definition at line 1224 of file evt.c.

1224 {
1225 return ApiStatus_DONE2;
1226}

Referenced by evt_execute_next_command().

◆ evt_handle_print_debug_var()

s32 evt_handle_print_debug_var ( Evt * script)

Definition at line 1231 of file evt.c.

1231 {
1232 Bytecode* args = script->ptrReadPos;
1233 s32 var = *args++;
1234 s32 flagBitPos;
1235
1236 if (var <= EVT_LIMIT) {
1237 sprintf(evtDebugPrintBuffer, "ADDR [%08X]", var);
1238 } else if (var <= EVT_FIXED_CUTOFF) {
1239 sprintf(evtDebugPrintBuffer, "FLOAT [%4.2f]", evt_fixed_var_to_float(var));
1240 } else if (var <= EVT_ARRAY_FLAG_CUTOFF) {
1241 var = EVT_INDEX_OF_ARRAY_FLAG(var);
1242 flagBitPos = var % 32;
1243 sprintf(evtDebugPrintBuffer, "UF(%3d) [%d]", var, script->flagArray[var / 32] & (1 << flagBitPos));
1244 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1245 s32 arrayVal;
1246
1247 var = EVT_INDEX_OF_ARRAY_VAR(var);
1248 arrayVal = script->array[var];
1249
1250 if (script->array[var] <= EVT_LIMIT) {
1251 sprintf(evtDebugPrintBuffer, "UW(%3d) [%08X]", arrayVal);
1252 } else if (arrayVal <= EVT_FIXED_CUTOFF) {
1253 sprintf(evtDebugPrintBuffer, "UW(%3d) [%4.2f]", var, evt_fixed_var_to_float(arrayVal));
1254 } else {
1255 sprintf(evtDebugPrintBuffer, "UW(%3d) [%d]", var, arrayVal);
1256 }
1257 } else if (var <= EVT_GAME_BYTE_CUTOFF) {
1258 s32 globalByte;
1259
1260 var = EVT_INDEX_OF_GAME_BYTE(var);
1261 globalByte = get_global_byte(var);
1262
1263 if (globalByte <= EVT_LIMIT) {
1264 sprintf(evtDebugPrintBuffer, "GSW(%3d) [%08X]", globalByte);
1265 } else if (globalByte <= EVT_FIXED_CUTOFF) {
1266 sprintf(evtDebugPrintBuffer, "GSW(%3d) [%4.2f]", var, evt_fixed_var_to_float(globalByte));
1267 } else {
1268 sprintf(evtDebugPrintBuffer, "GSW(%3d) [%d]", var, globalByte);
1269 }
1270 } else if (var <= EVT_AREA_BYTE_CUTOFF) {
1271 s32 areaByte;
1272
1273 var = EVT_INDEX_OF_AREA_BYTE(var);
1274 areaByte = get_area_byte(var);
1275
1276 if (areaByte <= EVT_LIMIT) {
1277 sprintf(evtDebugPrintBuffer, "LSW(%3d) [%08X]", areaByte);
1278 } else if (areaByte <= EVT_FIXED_CUTOFF) {
1279 sprintf(evtDebugPrintBuffer, "LSW(%3d) [%4.2f]", var, evt_fixed_var_to_float(areaByte));
1280 } else {
1281 sprintf(evtDebugPrintBuffer, "LSW(%3d) [%d]", var, areaByte);
1282 }
1283 } else if (var <= EVT_GAME_FLAG_CUTOFF) {
1284 var = EVT_INDEX_OF_GAME_FLAG(var);
1285 sprintf(evtDebugPrintBuffer, "GSWF(%3d)[%d]", var, get_global_flag(var));
1286 } else if (var <= EVT_AREA_FLAG_CUTOFF) {
1287 var = EVT_INDEX_OF_AREA_FLAG(var);
1288 sprintf(evtDebugPrintBuffer, "LSWF(%3d)[%d]", var, get_area_flag(var));
1289 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1290 var = EVT_INDEX_OF_MAP_FLAG(var);
1291 flagBitPos = var % 32;
1292 sprintf(evtDebugPrintBuffer, "GF(%3d) [%d]", var, gMapFlags[var / 32] & (1 << flagBitPos));
1293 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1294 var = EVT_INDEX_OF_LOCAL_FLAG(var);
1295 flagBitPos = var % 32;
1296 sprintf(evtDebugPrintBuffer, "LF(%3d) [%d]", var, script->varFlags[var / 32] & (1 << flagBitPos));
1297 } else if (var <= EVT_MAP_VAR_CUTOFF) {
1298 s32 mapVar;
1299
1300 var = EVT_INDEX_OF_MAP_VAR(var);
1301 mapVar = gMapVars[var];
1302
1303 if (mapVar <= EVT_LIMIT) {
1304 sprintf(evtDebugPrintBuffer, "GW(%3d) [%08X]", mapVar);
1305 } else if (mapVar <= EVT_FIXED_CUTOFF) {
1306 sprintf(evtDebugPrintBuffer, "GW(%3d) [%4.2f]", var, evt_fixed_var_to_float(mapVar));
1307 } else {
1308 sprintf(evtDebugPrintBuffer, "GW(%3d) [%d]", var, mapVar);
1309 }
1310 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
1311 s32 tableVar;
1312
1313 var = EVT_INDEX_OF_LOCAL_VAR(var);
1314 tableVar = script->varTable[var];
1315
1316 if (tableVar <= EVT_LIMIT) {
1317 sprintf(evtDebugPrintBuffer, "LW(%3d) [%08X]", tableVar);
1318 } else if (tableVar <= EVT_FIXED_CUTOFF) {
1319 sprintf(evtDebugPrintBuffer, "LW(%3d) [%4.2f]", var, evt_fixed_var_to_float(tableVar));
1320 } else {
1321 sprintf(evtDebugPrintBuffer, "LW(%3d) [%d]", var, tableVar);
1322 }
1323 } else {
1324 sprintf(evtDebugPrintBuffer, " [%d]", var);
1325 }
1326
1327 return ApiStatus_DONE2;
1328}
char evtDebugPrintBuffer[0x100]
Definition script_list.c:20
u32 * gMapFlags
Definition script_list.c:9
f32 evt_fixed_var_to_float(Bytecode scriptVar)
Definition evt.c:17
s32 * gMapVars
Definition script_list.c:10
#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:141
#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:140
#define EVT_INDEX_OF_ARRAY_FLAG(v)
Definition macros.h:144
#define EVT_INDEX_OF_LOCAL_VAR(v)
Definition macros.h:136
#define EVT_INDEX_OF_ARRAY_VAR(v)
Definition macros.h:145
#define EVT_INDEX_OF_GAME_BYTE(v)
Definition macros.h:143
#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:139
#define EVT_INDEX_OF_LOCAL_FLAG(v)
Definition macros.h:137
#define EVT_AREA_FLAG_CUTOFF
Definition macros.h:32
#define EVT_INDEX_OF_MAP_VAR(v)
Definition macros.h:138
#define EVT_MAP_VAR_CUTOFF
Definition macros.h:26
#define EVT_INDEX_OF_GAME_FLAG(v)
Definition macros.h:142
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 1330 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ func_802C73B0()

ApiStatus func_802C73B0 ( Evt * script)

Definition at line 1335 of file evt.c.

1335 {
1336 return ApiStatus_DONE2;
1337}

Referenced by evt_execute_next_command().

◆ func_802C73B8()

ApiStatus func_802C73B8 ( Evt * script)

Definition at line 1339 of file evt.c.

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

Referenced by evt_execute_next_command().

◆ evt_execute_next_command()

s32 evt_execute_next_command ( Evt * script)

Definition at line 1350 of file evt.c.

1350 {
1351 s32 commandsExecuted = 0;
1352
1353 while (TRUE) {
1354 s32 status = ApiStatus_DONE2;
1355 s32* lines;
1356 s32 nargs;
1357
1358 commandsExecuted++;
1359 ASSERT_MSG(commandsExecuted < 10000, "Script %x is blocking for ages (infinite loop?)", script->ptrFirstLine);
1360
1361 switch (script->curOpcode) {
1363 script->ptrCurLine = script->ptrNextLine;
1364 lines = script->ptrNextLine;
1365 script->curOpcode = *lines++;
1366 nargs = *lines++;
1367 script->ptrReadPos = lines;
1368 script->blocked = FALSE;
1369 script->curArgc = nargs;
1370 lines = &lines[nargs];
1371 script->ptrNextLine = lines;
1372 status = ApiStatus_REPEAT;
1373 break;
1374 case EVT_OP_RETURN:
1375 status = evt_handle_return(script);
1376 break;
1377 case EVT_OP_LABEL:
1378 status = evt_handle_label(script);
1379 break;
1380 case EVT_OP_GOTO:
1381 status = evt_handle_goto(script);
1382 break;
1383 case EVT_OP_LOOP:
1384 status = evt_handle_loop(script);
1385 break;
1386 case EVT_OP_END_LOOP:
1387 status = evt_handle_end_loop(script);
1388 break;
1389 case EVT_OP_BREAK_LOOP:
1390 status = evt_handle_break_loop(script);
1391 break;
1392 case EVT_OP_WAIT_FRAMES:
1393 status = evt_handle_wait(script);
1394 break;
1395 case EVT_OP_WAIT_SECS:
1396 status = evt_handle_wait_seconds(script);
1397 break;
1398 case EVT_OP_IF_EQ:
1399 status = evt_handle_if_equal(script);
1400 break;
1401 case EVT_OP_IF_NE:
1402 status = evt_handle_if_not_equal(script);
1403 break;
1404 case EVT_OP_IF_LT:
1405 status = evt_handle_if_less(script);
1406 break;
1407 case EVT_OP_IF_GT:
1408 status = evt_handle_if_greater(script);
1409 break;
1410 case EVT_OP_IF_LE:
1411 status = evt_handle_if_less_equal(script);
1412 break;
1413 case EVT_OP_IF_GE:
1414 status = evt_handle_if_greater_equal(script);
1415 break;
1416 case EVT_OP_IF_FLAG:
1417 status = evt_handle_if_AND(script);
1418 break;
1419 case EVT_OP_IF_NOT_FLAG:
1420 status = evt_handle_if_not_AND(script);
1421 break;
1422 case EVT_OP_ELSE:
1423 status = evt_handle_else(script);
1424 break;
1425 case EVT_OP_END_IF:
1426 status = evt_handle_end_if(script);
1427 break;
1428 case EVT_OP_SWITCH:
1429 status = evt_handle_switch(script);
1430 break;
1432 status = evt_handle_switch_const(script);
1433 break;
1434 case EVT_OP_CASE_EQ:
1435 status = evt_handle_case_equal(script);
1436 break;
1437 case EVT_OP_CASE_NE:
1438 status = evt_handle_case_not_equal(script);
1439 break;
1440 case EVT_OP_CASE_LT:
1441 status = evt_handle_case_less(script);
1442 break;
1443 case EVT_OP_CASE_LE:
1444 status = evt_handle_case_less_equal(script);
1445 break;
1446 case EVT_OP_CASE_GT:
1447 status = evt_handle_case_greater(script);
1448 break;
1449 case EVT_OP_CASE_GE:
1450 status = evt_handle_case_greater_equal(script);
1451 break;
1453 status = evt_handle_case_default(script);
1454 break;
1456 status = evt_handle_break_case(script);
1457 break;
1458 case EVT_OP_CASE_OR_EQ:
1459 status = evt_handle_case_equal_OR(script);
1460 break;
1462 status = evt_handle_end_case_group(script);
1463 break;
1464 case EVT_OP_CASE_AND_EQ:
1465 status = evt_handle_case_equal_AND(script);
1466 break;
1467 case EVT_OP_CASE_FLAG:
1468 status = evt_handle_case_AND(script);
1469 break;
1470 case EVT_OP_CASE_RANGE:
1471 status = evt_handle_case_range(script);
1472 break;
1473 case EVT_OP_END_SWITCH:
1474 status = evt_handle_end_switch(script);
1475 break;
1476 case EVT_OP_SET:
1477 status = evt_handle_set_var(script);
1478 break;
1479 case EVT_OP_SET_CONST:
1480 status = evt_handle_set_const(script);
1481 break;
1482 case EVT_OP_SETF:
1483 status = evt_handle_set_float(script);
1484 break;
1485 case EVT_OP_ADD:
1486 status = evt_handle_add(script);
1487 break;
1488 case EVT_OP_SUB:
1489 status = evt_handle_subtract(script);
1490 break;
1491 case EVT_OP_MUL:
1492 status = evt_handle_multiply(script);
1493 break;
1494 case EVT_OP_DIV:
1495 status = evt_handle_divide(script);
1496 break;
1497 case EVT_OP_MOD:
1498 status = evt_handle_mod(script);
1499 break;
1500 case EVT_OP_ADDF:
1501 status = evt_handle_addF(script);
1502 break;
1503 case EVT_OP_SUBF:
1504 status = evt_handle_subtractF(script);
1505 break;
1506 case EVT_OP_MULF:
1507 status = evt_handle_multiplyF(script);
1508 break;
1509 case EVT_OP_DIVF:
1510 status = evt_handle_divideF(script);
1511 break;
1512 case EVT_OP_USE_BUF:
1513 status = evt_handle_set_int_buffer_ptr(script);
1514 break;
1515 case EVT_OP_BUF_READ1:
1516 status = evt_handle_get_1_word(script);
1517 break;
1518 case EVT_OP_BUF_READ2:
1519 status = evt_handle_get_2_word(script);
1520 break;
1521 case EVT_OP_BUF_READ3:
1522 status = evt_handle_get_3_word(script);
1523 break;
1524 case EVT_OP_BUF_READ4:
1525 status = evt_handle_get_4_word(script);
1526 break;
1527 case EVT_OP_BUF_PEEK:
1528 status = evt_handle_get_Nth_word(script);
1529 break;
1530 case EVT_OP_USE_FBUF:
1531 status = evt_handle_set_float_buffer_ptr(script);
1532 break;
1533 case EVT_OP_FBUF_READ1:
1534 status = evt_handle_get_1_float(script);
1535 break;
1536 case EVT_OP_FBUF_READ2:
1537 status = evt_handle_get_2_float(script);
1538 break;
1539 case EVT_OP_FBUF_READ3:
1540 status = evt_handle_get_3_float(script);
1541 break;
1542 case EVT_OP_FBUF_READ4:
1543 status = evt_handle_get_4_float(script);
1544 break;
1545 case EVT_OP_FBUF_PEEK:
1546 status = evt_handle_get_Nth_float(script);
1547 break;
1548 case EVT_OP_USE_ARRAY:
1549 status = evt_handle_set_array(script);
1550 break;
1551 case EVT_OP_USE_FLAGS:
1552 status = evt_handle_set_flag_array(script);
1553 break;
1555 status = evt_handle_allocate_array(script);
1556 break;
1557 case EVT_OP_KILL_THREAD:
1558 status = evt_handle_kill(script);
1559 break;
1560 case EVT_OP_BITWISE_AND:
1561 status = evt_handle_AND(script);
1562 break;
1564 status = evt_handle_AND_const(script);
1565 break;
1566 case EVT_OP_BITWISE_OR:
1567 status = evt_handle_OR(script);
1568 break;
1570 status = evt_handle_OR_const(script);
1571 break;
1572 case EVT_OP_CALL:
1573 status = evt_handle_call(script);
1574 break;
1575 case EVT_OP_EXEC:
1576 status = evt_handle_exec1(script);
1577 break;
1579 status = evt_handle_exec1_get_id(script);
1580 break;
1581 case EVT_OP_EXEC_WAIT:
1582 status = evt_handle_exec_wait(script);
1583 break;
1585 status = evt_handle_bind(script);
1586 break;
1587 case EVT_OP_UNBIND:
1588 status = evt_handle_unbind(script);
1589 break;
1591 status = evt_handle_set_priority(script);
1592 break;
1594 status = evt_handle_set_timescale(script);
1595 break;
1596 case EVT_OP_SET_GROUP:
1597 status = evt_handle_set_group(script);
1598 break;
1599 case EVT_OP_JUMP:
1600 status = evt_handle_jump(script);
1601 break;
1603 status = evt_handle_bind_lock(script);
1604 break;
1606 status = evt_handle_suspend_all(script);
1607 break;
1609 status = evt_handle_resume_all(script);
1610 break;
1612 status = evt_handle_suspend_others(script);
1613 break;
1615 status = evt_handle_resume_others(script);
1616 break;
1618 status = evt_handle_suspend(script);
1619 break;
1621 status = evt_handle_resume(script);
1622 break;
1624 status = evt_handle_does_script_exist(script);
1625 break;
1626 case EVT_OP_THREAD:
1627 status = evt_handle_thread(script);
1628 break;
1629 case EVT_OP_END_THREAD:
1630 status = evt_handle_end_thread(script);
1631 break;
1633 status = evt_handle_child_thread(script);
1634 break;
1636 status = evt_handle_end_child_thread(script);
1637 break;
1638 case EVT_OP_DEBUG_LOG:
1639 status = evt_handle_debug_log(script);
1640 break;
1642 status = evt_handle_print_debug_var(script);
1643 break;
1644 case EVT_OP_92:
1645 status = func_802C739C(script);
1646 break;
1647 case EVT_OP_93:
1648 status = func_802C73B0(script);
1649 break;
1650 case EVT_OP_94:
1651 status = func_802C73B8(script);
1652 case EVT_OP_END:
1653 break;
1654 default:
1655 PANIC();
1656 }
1657
1658 if (status == ApiStatus_REPEAT) {
1659 continue;
1660 }
1661
1662 if (status == ApiStatus_FINISH) {
1663 return EVT_CMD_RESULT_YIELD;
1664 }
1665
1666 if (status < 0) {
1667 return EVT_CMD_RESULT_ERROR;
1668 }
1669
1670 // TODO: this may be able to be a switch but I couldn't get it
1671 if (status == ApiStatus_BLOCK) {
1672 // return 0
1673 } else if (status == ApiStatus_DONE1) {
1675 // return 0
1676 } else if (status == ApiStatus_DONE2) {
1679 continue;
1680 }
1681 // return 0
1682 } else {
1683 continue;
1684 }
1686 }
1687}
@ DEBUG_SCRIPTS_BLOCK_FUNC_DONE
Definition enums.h:4276
ApiStatus func_802C739C(Evt *script)
Definition evt.c:1330
ApiStatus evt_handle_OR(Evt *script)
Definition evt.c:866
ApiStatus func_802C73B0(Evt *script)
Definition evt.c:1335
ApiStatus evt_handle_set_int_buffer_ptr(Evt *script)
Definition evt.c:676
ApiStatus evt_handle_break_loop(Evt *script)
Definition evt.c:88
ApiStatus evt_handle_AND(Evt *script)
Definition evt.c:846
ApiStatus evt_handle_set_float(Evt *script)
Definition evt.c:560
ApiStatus evt_handle_switch_const(Evt *script)
Definition evt.c:243
ApiStatus evt_handle_call(Evt *script)
Definition evt.c:886
ApiStatus evt_handle_case_greater(Evt *script)
Definition evt.c:348
ApiStatus evt_handle_end_thread(Evt *script)
Definition evt.c:1189
ApiStatus evt_handle_case_equal_OR(Evt *script)
Definition evt.c:460
ApiStatus evt_handle_get_3_word(Evt *script)
Definition evt.c:713
ApiStatus evt_handle_divideF(Evt *script)
Definition evt.c:664
ApiStatus evt_handle_multiply(Evt *script)
Definition evt.c:592
ApiStatus evt_handle_switch(Evt *script)
Definition evt.c:230
ApiStatus evt_handle_AND_const(Evt *script)
Definition evt.c:856
ApiStatus evt_handle_break_case(Evt *script)
Definition evt.c:530
ApiStatus evt_handle_jump(Evt *script)
Definition evt.c:973
ApiStatus evt_handle_suspend_all(Evt *script)
Definition evt.c:1070
ApiStatus evt_handle_case_less(Evt *script)
Definition evt.c:302
ApiStatus evt_handle_set_timescale(Evt *script)
Definition evt.c:1060
ApiStatus evt_handle_set_const(Evt *script)
Definition evt.c:555
ApiStatus evt_handle_subtract(Evt *script)
Definition evt.c:580
ApiStatus evt_handle_if_greater(Evt *script)
Definition evt.c:163
ApiStatus evt_handle_exec_wait(Evt *script)
Definition evt.c:964
ApiStatus evt_handle_set_array(Evt *script)
Definition evt.c:826
ApiStatus evt_handle_if_less(Evt *script)
Definition evt.c:151
ApiStatus evt_handle_case_default(Evt *script)
Definition evt.c:420
ApiStatus evt_handle_exec1(Evt *script)
Definition evt.c:911
ApiStatus evt_handle_add(Evt *script)
Definition evt.c:568
ApiStatus evt_handle_loop(Evt *script)
Definition evt.c:45
ApiStatus evt_handle_return(Evt *script)
Definition evt.c:31
ApiStatus evt_handle_mod(Evt *script)
Definition evt.c:616
ApiStatus evt_handle_thread(Evt *script)
Definition evt.c:1156
ApiStatus evt_handle_case_equal_AND(Evt *script)
Definition evt.c:485
ApiStatus evt_handle_case_range(Evt *script)
Definition evt.c:394
ApiStatus evt_handle_goto(Evt *script)
Definition evt.c:40
ApiStatus evt_handle_OR_const(Evt *script)
Definition evt.c:876
ApiStatus evt_handle_bind(Evt *script)
Definition evt.c:1008
ApiStatus evt_handle_print_debug_var(Evt *script)
Definition evt.c:1231
ApiStatus evt_handle_set_var(Evt *script)
Definition evt.c:547
ApiStatus evt_handle_get_4_word(Evt *script)
Definition evt.c:729
ApiStatus evt_handle_unbind(Evt *script)
Definition evt.c:1045
ApiStatus evt_handle_bind_lock(Evt *script)
Definition evt.c:1126
ApiStatus evt_handle_if_not_equal(Evt *script)
Definition evt.c:139
ApiStatus evt_handle_get_1_float(Evt *script)
Definition evt.c:758
ApiStatus evt_handle_if_less_equal(Evt *script)
Definition evt.c:175
ApiStatus evt_handle_end_loop(Evt *script)
Definition evt.c:58
ApiStatus evt_handle_debug_log(Evt *script)
Definition evt.c:1224
ApiStatus func_802C73B8(Evt *script)
Definition evt.c:1339
ApiStatus evt_handle_get_Nth_word(Evt *script)
Definition evt.c:748
ApiStatus evt_handle_exec1_get_id(Evt *script)
Definition evt.c:936
ApiStatus evt_handle_case_AND(Evt *script)
Definition evt.c:435
ApiStatus evt_handle_subtractF(Evt *script)
Definition evt.c:640
ApiStatus evt_handle_set_flag_array(Evt *script)
Definition evt.c:831
ApiStatus evt_handle_set_float_buffer_ptr(Evt *script)
Definition evt.c:683
ApiStatus evt_handle_end_child_thread(Evt *script)
Definition evt.c:1219
ApiStatus evt_handle_end_case_group(Evt *script)
Definition evt.c:513
ApiStatus evt_handle_get_Nth_float(Evt *script)
Definition evt.c:816
ApiStatus evt_handle_addF(Evt *script)
Definition evt.c:628
ApiStatus evt_handle_get_1_word(Evt *script)
Definition evt.c:690
ApiStatus evt_handle_set_priority(Evt *script)
Definition evt.c:1055
ApiStatus evt_handle_suspend(Evt *script)
Definition evt.c:1090
ApiStatus evt_handle_get_2_float(Evt *script)
Definition evt.c:768
ApiStatus evt_handle_case_less_equal(Evt *script)
Definition evt.c:325
ApiStatus evt_handle_get_2_word(Evt *script)
Definition evt.c:700
ApiStatus evt_handle_end_switch(Evt *script)
Definition evt.c:536
ApiStatus evt_handle_if_greater_equal(Evt *script)
Definition evt.c:187
ApiStatus evt_handle_resume_all(Evt *script)
Definition evt.c:1075
ApiStatus evt_handle_if_equal(Evt *script)
Definition evt.c:127
ApiStatus evt_handle_child_thread(Evt *script)
Definition evt.c:1194
ApiStatus evt_handle_case_equal(Evt *script)
Definition evt.c:256
ApiStatus evt_handle_get_3_float(Evt *script)
Definition evt.c:781
ApiStatus evt_handle_does_script_exist(Evt *script)
Definition evt.c:1100
ApiStatus evt_handle_else(Evt *script)
Definition evt.c:221
ApiStatus evt_handle_set_group(Evt *script)
Definition evt.c:1065
ApiStatus evt_handle_multiplyF(Evt *script)
Definition evt.c:652
ApiStatus evt_handle_resume(Evt *script)
Definition evt.c:1095
ApiStatus evt_handle_if_not_AND(Evt *script)
Definition evt.c:210
ApiStatus evt_handle_end_if(Evt *script)
Definition evt.c:226
ApiStatus evt_handle_kill(Evt *script)
Definition evt.c:1050
ApiStatus evt_handle_resume_others(Evt *script)
Definition evt.c:1085
ApiStatus evt_handle_if_AND(Evt *script)
Definition evt.c:199
ApiStatus evt_handle_wait_seconds(Evt *script)
Definition evt.c:111
ApiStatus evt_handle_wait(Evt *script)
Definition evt.c:95
ApiStatus evt_handle_case_not_equal(Evt *script)
Definition evt.c:279
ApiStatus evt_handle_get_4_float(Evt *script)
Definition evt.c:797
ApiStatus evt_handle_label(Evt *script)
Definition evt.c:36
ApiStatus evt_handle_case_greater_equal(Evt *script)
Definition evt.c:371
ApiStatus evt_handle_suspend_others(Evt *script)
Definition evt.c:1080
ApiStatus evt_handle_allocate_array(Evt *script)
Definition evt.c:836
ApiStatus evt_handle_divide(Evt *script)
Definition evt.c:604
@ 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_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:119
@ EVT_CMD_RESULT_YIELD
Definition evt.h:123
@ EVT_CMD_RESULT_CONTINUE
Definition evt.h:124
@ EVT_CMD_RESULT_ERROR
Definition evt.h:125
#define ASSERT_MSG(condition, msg, args...)
Definition macros.h:66
GameStatus * gGameStatusPtr
Definition main_loop.c:32

Referenced by update_scripts().

◆ evt_get_variable()

s32 evt_get_variable ( Evt * script,
Bytecode var )

Definition at line 1689 of file evt.c.

1689 {
1690 s32 wordIdx;
1691 s32 bitIdx;
1692 s32 temp;
1693
1694 if (var <= EVT_LIMIT) {
1695 return var;
1696 } else if (var <= EVT_IGNORE_ARG) {
1697 return var;
1698 } else if (var <= EVT_FIXED_CUTOFF) {
1699 return evt_fixed_var_to_float(var);
1700 } else if (var <= EVT_ARRAY_FLAG_CUTOFF) {
1701 var = EVT_INDEX_OF_ARRAY_FLAG(var);
1702 wordIdx = var / 32;
1703 bitIdx = var % 32;
1704 var = (script->flagArray[wordIdx] & (1 << bitIdx)) != 0;
1705 return var;
1706 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1707 var = EVT_INDEX_OF_ARRAY_VAR(var);
1708 var = script->array[var];
1709 if (var > EVT_LIMIT) {
1710 if (var <= EVT_FIXED_CUTOFF){
1711 var = evt_fixed_var_to_float(var);
1712 }
1713 }
1714 } else if (var <= EVT_GAME_BYTE_CUTOFF) {
1715 var = EVT_INDEX_OF_GAME_BYTE(var);
1716 return get_global_byte(var);
1717 } else if (var <= EVT_AREA_BYTE_CUTOFF) {
1718 var = EVT_INDEX_OF_AREA_BYTE(var);
1719 return get_area_byte(var);
1720 } else if (var <= EVT_GAME_FLAG_CUTOFF) {
1721 var = EVT_INDEX_OF_GAME_FLAG(var);
1722 return get_global_flag(var);
1723 } else if (var <= EVT_AREA_FLAG_CUTOFF) {
1724 var = EVT_INDEX_OF_AREA_FLAG(var);
1725 return get_area_flag(var);
1726 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1727 var = EVT_INDEX_OF_MAP_FLAG(var);
1728 wordIdx = var;
1729 bitIdx = var % 32;
1730 var = (gMapFlags[wordIdx / 32] & (1 << bitIdx)) != 0;
1731 return var;
1732 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1733 var = EVT_INDEX_OF_LOCAL_FLAG(var);
1734 wordIdx = var;
1735 bitIdx = var % 32;
1736 var = (script->varFlags[wordIdx / 32] & (1 << bitIdx)) != 0;
1737 return var;
1738 } else if (var <= EVT_MAP_VAR_CUTOFF) {
1739 var = EVT_INDEX_OF_MAP_VAR(var);
1740 var = gMapVars[var];
1741 if (var > EVT_LIMIT) {
1742 temp = EVT_FIXED_CUTOFF;
1743 if (var <= temp){
1744 var = evt_fixed_var_to_float(var);
1745 }
1746 }
1747 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
1748 var = EVT_INDEX_OF_LOCAL_VAR(var);
1749 var = script->varTable[var];
1750 if (var > EVT_LIMIT) {
1751 temp = EVT_FIXED_CUTOFF;
1752 if (var <= temp){
1753 var = evt_fixed_var_to_float(var);
1754 }
1755 }
1756 }
1757 return var;
1758}
#define EVT_IGNORE_ARG
Definition macros.h:46

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 1760 of file evt.c.

1760 {
1761 if (EVT_LIMIT >= var) {
1762 return var;
1763 }
1764 if (EVT_IGNORE_ARG >= var) {
1765 return var;
1766 }
1767 if (EVT_FIXED_CUTOFF >= var) {
1768 return var;
1769 }
1770 if (EVT_ARRAY_FLAG_CUTOFF >= var) {
1771 return EVT_INDEX_OF_ARRAY_FLAG(var);
1772 }
1773 if (EVT_ARRAY_VAR_CUTOFF >= var) {
1774 return EVT_INDEX_OF_ARRAY_VAR(var);
1775 }
1776 if (EVT_GAME_BYTE_CUTOFF >= var) {
1777 return EVT_INDEX_OF_GAME_BYTE(var);
1778 }
1779 if (EVT_AREA_BYTE_CUTOFF >= var) {
1780 return EVT_INDEX_OF_AREA_BYTE(var);
1781 }
1782 if (EVT_GAME_FLAG_CUTOFF >= var) {
1783 return EVT_INDEX_OF_GAME_FLAG(var);
1784 }
1785 if (EVT_AREA_FLAG_CUTOFF >= var) {
1786 return EVT_INDEX_OF_AREA_FLAG(var);
1787 }
1788 if (EVT_MAP_FLAG_CUTOFF >= var) {
1789 return EVT_INDEX_OF_MAP_FLAG(var);
1790 }
1791 if (EVT_LOCAL_FLAG_CUTOFF >= var) {
1792 return EVT_INDEX_OF_LOCAL_FLAG(var);
1793 }
1794 if (EVT_MAP_VAR_CUTOFF >= var) {
1795 return EVT_INDEX_OF_MAP_VAR(var);
1796 }
1797 if (EVT_LOCAL_VAR_CUTOFF >= var) {
1798 return EVT_INDEX_OF_LOCAL_VAR(var);
1799 }
1800 return var;
1801}

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 1803 of file evt.c.

1803 {
1804 if (EVT_LIMIT >= var) {
1805 return var;
1806 }
1807 if (EVT_IGNORE_ARG >= var) {
1808 return var;
1809 }
1810 if (EVT_FIXED_CUTOFF >= var) {
1811 return var;
1812 }
1813 if (EVT_ARRAY_FLAG_CUTOFF >= var) {
1814 return EVT_INDEX_OF_ARRAY_FLAG(var);
1815 }
1816 if (EVT_ARRAY_VAR_CUTOFF >= var) {
1817 return EVT_INDEX_OF_ARRAY_VAR(var);
1818 }
1819 if (EVT_GAME_BYTE_CUTOFF >= var) {
1820 return EVT_INDEX_OF_GAME_BYTE(var);
1821 }
1822 if (EVT_AREA_BYTE_CUTOFF >= var) {
1823 return EVT_INDEX_OF_AREA_BYTE(var);
1824 }
1825 if (EVT_GAME_FLAG_CUTOFF >= var) {
1826 return EVT_INDEX_OF_GAME_FLAG(var);
1827 }
1828 if (EVT_AREA_FLAG_CUTOFF >= var) {
1829 return EVT_INDEX_OF_AREA_FLAG(var);
1830 }
1831 if (EVT_MAP_FLAG_CUTOFF >= var) {
1832 return EVT_INDEX_OF_MAP_FLAG(var);
1833 }
1834 if (EVT_LOCAL_FLAG_CUTOFF >= var) {
1835 return EVT_INDEX_OF_LOCAL_FLAG(var);
1836 }
1837 if (EVT_MAP_VAR_CUTOFF >= var) {
1838 return EVT_INDEX_OF_MAP_VAR(var);
1839 }
1840 if (EVT_LOCAL_VAR_CUTOFF >= var) {
1841 return EVT_INDEX_OF_LOCAL_VAR(var);
1842 }
1843 return var;
1844}

◆ evt_set_variable()

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

Definition at line 1846 of file evt.c.

1846 {
1847 s32 flagBitPos;
1848 s32 oldValue;
1849
1850 if (var <= EVT_LIMIT) {
1851 return value;
1852 } else if (var <= EVT_FIXED_CUTOFF) {
1853 return evt_fixed_var_to_float(value);
1854 } else if (var <= EVT_ARRAY_FLAG_CUTOFF) {
1855 var = EVT_INDEX_OF_ARRAY_FLAG(var);
1856 flagBitPos = var % 32;
1857 if (value) {
1858 script->flagArray[var / 32] |= 1 << flagBitPos;
1859 } else {
1860 script->flagArray[var / 32] &= ~(1 << flagBitPos);
1861 }
1862 return value;
1863 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1864 var = EVT_INDEX_OF_ARRAY_VAR(var);
1865 oldValue = script->array[var];
1866 script->array[var] = value;
1867 return oldValue;
1868 } else if (var <= EVT_GAME_BYTE_CUTOFF) {
1869 var = EVT_INDEX_OF_GAME_BYTE(var);
1870 oldValue = get_global_byte(var);
1871 set_global_byte(var, value);
1872 return oldValue;
1873 } else if (var <= EVT_AREA_BYTE_CUTOFF) {
1874 var = EVT_INDEX_OF_AREA_BYTE(var);
1875 oldValue = get_area_byte(var);
1876 set_area_byte(var, value);
1877 return oldValue;
1878 } else if (var <= EVT_GAME_FLAG_CUTOFF) {
1879 var = EVT_INDEX_OF_GAME_FLAG(var);
1880 oldValue = get_global_flag(var);
1881 if (value) {
1882 set_global_flag(var);
1883 } else {
1884 clear_global_flag(var);
1885 }
1886 return oldValue;
1887 } else if (var <= EVT_AREA_FLAG_CUTOFF) {
1888 var = EVT_INDEX_OF_AREA_FLAG(var);
1889 oldValue = get_area_flag(var);
1890 if (value) {
1891 set_area_flag(var);
1892 } else {
1893 clear_area_flag(var);
1894 }
1895 return oldValue;
1896 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1897 var = EVT_INDEX_OF_MAP_FLAG(var);
1898 flagBitPos = var % 32;
1899 if (value) {
1900 gMapFlags[var / 32] |= 1 << flagBitPos;
1901 } else {
1902 gMapFlags[var / 32] &= ~(1 << flagBitPos);
1903 }
1904 return value;
1905 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1906 var = EVT_INDEX_OF_LOCAL_FLAG(var);
1907 flagBitPos = var % 32;
1908 if (value) {
1909 script->varFlags[var / 32] |= 1 << flagBitPos;
1910 } else {
1911 script->varFlags[var / 32] &= ~(1 << flagBitPos);
1912 }
1913 return value;
1914 } else if (var <= EVT_MAP_VAR_CUTOFF) {
1915 var = EVT_INDEX_OF_MAP_VAR(var);
1916 oldValue = gMapVars[var];
1917 gMapVars[var] = value;
1918 return oldValue;
1919 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
1920 var = EVT_INDEX_OF_LOCAL_VAR(var);
1921 oldValue = script->varTable[var];
1922 script->varTable[var] = value;
1923 return oldValue;
1924 } else {
1925 return value;
1926 }
1927}
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 1929 of file evt.c.

1929 {
1930 s32 temp;
1931
1932 if (var <= EVT_LIMIT) {
1933 return var;
1934 } else if (var <= EVT_IGNORE_ARG) {
1935 return var;
1936 } else if (var <= EVT_FIXED_CUTOFF) {
1937 return evt_fixed_var_to_float(var);
1938 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1939 var = EVT_INDEX_OF_ARRAY_VAR(var);
1940 return evt_fixed_var_to_float(script->array[var]);
1941 } else if (var <= EVT_GAME_BYTE_CUTOFF) {
1942 var = EVT_INDEX_OF_GAME_BYTE(var);
1944 } else if (var <= EVT_AREA_BYTE_CUTOFF) {
1945 var = EVT_INDEX_OF_AREA_BYTE(var);
1947 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1948 var = EVT_INDEX_OF_MAP_FLAG(var);
1949 temp = var % 32;
1950 var = gMapFlags[var / 32] & (1 << temp);
1951 if (var) {
1952 return 1.0f;
1953 } else {
1954 return 0.0f;
1955 }
1956 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1957 var = EVT_INDEX_OF_LOCAL_FLAG(var);
1958 temp = var % 32;
1959 var = script->varFlags[var / 32] & (1 << temp);
1960 if (var) {
1961 return 1.0f;
1962 } else {
1963 return 0.0f;
1964 }
1965 } else if (var <= EVT_MAP_VAR_CUTOFF) {
1966 var = EVT_INDEX_OF_MAP_VAR(var);
1967 return evt_fixed_var_to_float(gMapVars[var]);
1968 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
1969 var = EVT_INDEX_OF_LOCAL_VAR(var);
1970 return evt_fixed_var_to_float(script->varTable[var]);
1971 } else {
1972 return evt_fixed_var_to_float(var);
1973 }
1974}

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 1976 of file evt.c.

1976 {
1977 s32 temp;
1978 s32 oldValue;
1979
1980 if (var <= EVT_LIMIT) {
1981 return value;
1982 } else if (var <= EVT_FIXED_CUTOFF) {
1983 return value;
1984 } else if (var <= EVT_ARRAY_VAR_CUTOFF) {
1985 var = EVT_INDEX_OF_ARRAY_VAR(var);
1986 oldValue = script->array[var];
1987 script->array[var] = evt_float_to_fixed_var(value);
1988 return evt_fixed_var_to_float(oldValue);
1989 } else if (var <= EVT_MAP_FLAG_CUTOFF) {
1990 var = EVT_INDEX_OF_MAP_FLAG(var);
1991 temp = var % 32;
1992 if (value) {
1993 gMapFlags[var / 32] |= 1 << temp;
1994 } else {
1995 gMapFlags[var / 32] &= ~(1 << temp);
1996 }
1997 return value;
1998 } else if (var <= EVT_LOCAL_FLAG_CUTOFF) {
1999 var = EVT_INDEX_OF_LOCAL_FLAG(var);
2000 temp = var % 32;
2001 if (value) {
2002 script->varFlags[var / 32] |= 1 << temp;
2003 } else {
2004 script->varFlags[var / 32] &= ~(1 << temp);
2005 }
2006 return value;
2007 } else if (var <= EVT_MAP_VAR_CUTOFF) {
2008 var = EVT_INDEX_OF_MAP_VAR(var);
2009 oldValue = gMapVars[var];
2010 gMapVars[var] = evt_float_to_fixed_var(value);
2011 return evt_fixed_var_to_float(oldValue);
2012 } else if (var <= EVT_LOCAL_VAR_CUTOFF) {
2013 var = EVT_INDEX_OF_LOCAL_VAR(var);
2014 oldValue = script->varTable[var];
2015 script->varTable[var] = evt_float_to_fixed_var(value);
2016 return evt_fixed_var_to_float(oldValue);
2017 } else {
2018 return value;
2019 }
2020}
Bytecode evt_float_to_fixed_var(f32 value)
Definition evt.c:25

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 20 of file script_list.c.

Referenced by evt_handle_print_debug_var().

◆ EvtCallingLine

Bytecode* EvtCallingLine

Definition at line 8 of file evt.c.

Referenced by evt_handle_call().