comparison 06/ecl.xml @ 5:b3644dff344c

Way too much changes. :/
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Mon, 22 Aug 2011 20:30:51 +0200
parents bd0f1253691d
children 578e67aa3c03
comparison
equal deleted inserted replaced
4:617e7760fd9f 5:b3644dff344c
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <?xml-stylesheet type="text/xsl" href="../html.xsl"?> 2 <?xml-stylesheet type="text/xsl" href="../html.xsl"?>
3 <?xml-stylesheet type="text/css" href="../style.css"?> 3 <?xml-stylesheet type="text/css" href="../style.css"?>
4 <!DOCTYPE html> 4 <!DOCTYPE html>
5 <opcodes xmlns="urn:opcodes:description"> 5 <opcodes xmlns="urn:opcodes:description">
6 <title>ECL opcodes</title> 6 <title>ECL Sub format</title>
7
8 <text>
9 <div xmlns="http://www.w3.org/1999/xhtml">
10 <h2>Lvalues and Rvalues / direct vs memory indirect addressing</h2>
11 <p>In EoSD, most 32-bits arguments passed to instructions may be actual values or variable/register indexes.<br/>
12 [TODO: verify] values inferior to -10000 are variable/register indexes, whereas values superior to this are actual values.<br/>
13 Values passed through variable/register indexes are Lvalues, other values are not. Some instructions require some of their operands to be Lvalues.<br/>
14 Another way to look at it would be C++-style references. <code>ins_20</code> would then be <code>ins_20(int32 &amp;value, float a, float b);</code></p>
15
16 <p>Note: variables seems to be somehow superposed to the enemy's state structure, with <code>-10015 = x</code> and <code>-10016 = y</code>.</p>
17
18
19 <h2>Accessing values</h2>
20 <p>[TODO: verify] How the game accesses values passed as argument is as follows:<br/>
21 TYPE is the type of the argument (float, int32, ...):</p>
22
23 <pre>if ((TYPE) argument &lt; -10000)
24 return *(TYPE*) &amp;variables[(int)(-10000-(TYPE) argument)];
25 else
26 return (TYPE) argument;</pre>
27
28 <h2>Variables</h2>
29 <p>Only variables in the range [-10001, -10025] without -10014, -10020 and -10023 are used in the game.</p>
30
31 <h3>Local variables</h3>
32 <table>
33 <tr><th>Number</th><th>Type</th></tr>
34 <tr><td>-10001</td><td>int</td></tr>
35 <tr><td>-10002</td><td>int</td></tr>
36 <tr><td>-10003</td><td>int</td></tr>
37 <tr><td>-10004</td><td>int</td></tr>
38 <tr><td>-10005</td><td>float</td></tr>
39 <tr><td>-10006</td><td>float</td></tr>
40 <tr><td>-10007</td><td>float</td></tr>
41 <tr><td>-10008</td><td>float</td></tr>
42 <tr><td>-10009</td><td>int</td></tr>
43 <tr><td>-10010</td><td>int</td></tr>
44 <tr><td>-10011</td><td>int</td></tr>
45 <tr><td>-10012</td><td>int</td></tr>
46 </table>
47
48 <h3>Special variables</h3>
49 <table>
50 <tr><th>Number</th><th>Type</th> <th>Name</th> <th>RW/RO</th> <th>Notes</th></tr>
51 <tr><td>-10013</td><td>int</td> <td>rank</td> <td>ro</td> <td></td></tr>
52 <tr><td>-10014</td><td>int</td> <td>difficulty</td> <td>ro</td> <td>Unused.</td></tr>
53 <tr><td>-10015</td><td>float</td> <td>x</td> <td>rw</td> <td></td></tr>
54 <tr><td>-10016</td><td>float</td> <td>y</td> <td>rw</td> <td></td></tr>
55 <tr><td>-10017</td><td>float</td> <td>z</td> <td>rw</td> <td></td></tr>
56 <tr><td>-10018</td><td>float</td> <td>player_x</td> <td>ro</td> <td></td></tr>
57 <tr><td>-10019</td><td>float</td> <td>player_y</td> <td>ro</td> <td></td></tr>
58 <tr><td>-10020</td><td>float</td> <td></td> <td>ro</td> <td>Unused.</td></tr>
59 <tr><td>-10021</td><td>float</td> <td>enemy_player_angle</td> <td>ro</td> <td></td></tr>
60 <tr><td>-10022</td><td>int</td> <td>last_frame</td> <td>rw</td> <td></td></tr>
61 <tr><td>-10023</td><td>float</td> <td>enemy_player_distance</td><td>ro</td><td>Unused.</td></tr>
62 <tr><td>-10024</td><td>int</td> <td>life</td> <td>rw</td> <td></td></tr>
63 <tr><td>-10025</td><td>int</td> <td>player</td> <td>ro</td> <td>0 = ReimuA, 1 = ReimuB, 2 = MarisaA, 3 = MarisaB</td></tr>
64 </table>
65
66 <h2>Opcodes</h2>
67 </div>
68 </text>
7 69
8 <op> 70 <op>
9 <num>0</num> 71 <num>0</num>
10 <name>return</name> 72 <name>noop</name>
11 <desc>Returns from the current function.</desc> 73 <desc>Do nothing.</desc>
12 </op> 74 </op>
13 75
14 <op> 76 <op>
15 <num>1</num> 77 <num>1</num>
16 <name>return</name> 78 <name>delete</name>
17 <params> 79 <params>
18 <param type="S" values="0"></param> 80 <param type="S" values="0">Unknown</param>
19 </params> 81 </params>
20 <desc>Always at the end of the function. Often after a very long amount of time, like 10000 frames.</desc> 82 <desc>Delete the sprite and perhaps free the memory used.</desc>
21 </op> 83 </op>
22 84
23 <op> 85 <op>
24 <num>2</num> 86 <num>2</num>
25 <name></name> 87 <name>relative_jump</name>
26 <params> 88 <params>
27 <param type="S" min="0" max="360"></param> 89 <param type="S" name="new_frame" unit="frame" values="0 to 360"/>
28 <param type="S" min="-2032" max="632"></param> 90 <param type="S" name="relative_offset" unit="bytes" values="-2032 to 632">Starting from the start of the current opcode.</param>
29 </params> 91 </params>
30 <desc></desc> 92 <desc>Unconditionally jump to relative_offset with new frame counter. Used as a while.</desc>
31 </op> 93 </op>
32 94
33 <op> 95 <op>
34 <num>3</num> 96 <num>3</num>
35 <name></name> 97 <name>relative_jump_ex</name>
36 <params> 98 <params>
37 <param type="S" min="0" max="532"></param> 99 <param type="S" name="new_frame" unit="frame" values="0 to 532"/>
38 <param type="S" min="-1376" max="-12"></param> 100 <param type="S" name="relative_offset" unit="bytes" values="-1376 to -12"/>
39 <param type="S" min="-10011" max="-10009"></param> 101 <param type="S" name="counter_id" unit="var_id" var="must" values="-10011 to -10009"/>
40 </params> 102 </params>
41 <desc></desc> 103 <desc>If the counter is non-null, jump to relative_offset with new frame counter, and decrease counter counter_id by 1. Used as a for.</desc>
42 </op> 104 </op>
43 105
44 <op> 106 <op>
45 <num>4</num> 107 <num>4</num>
46 <name></name> 108 <name>set_int</name>
47 <params> 109 <params>
48 <param type="S" min="-10012" max="-10001"></param> 110 <param type="S" name="variable" unit="var_id" var="must" values="-10012 to -10001"/>
49 <param type="S" min="-10021, 0" max="-10005, 300"></param> 111 <param type="S" name="value" var="can" values="-10005 to -10021, 0 to 300"/>
50 </params> 112 </params>
51 <desc></desc> 113 <desc>Assign a value to the variable. Sometimes, value can be another variable.</desc>
52 </op> 114 </op>
53 115
54 <op> 116 <op>
55 <num>5</num> 117 <num>5</num>
56 <name></name> 118 <name>set_float</name>
57 <params> 119 <params>
58 <param type="S"></param> 120 <param type="S" name="variable" unit="var_id" var="must" values="-10005 to -10017"/>
59 <param type="f"></param> 121 <param type="f" name="value" var="can" values="-12.0f to 460.0f"/>
60 </params> 122 </params>
61 <desc></desc> 123 <desc>Like <ref>4</ref>, but with a float as value.</desc>
62 </op> 124 </op>
63 125
64 <op> 126 <op>
65 <num>6</num> 127 <num>6</num>
66 <name></name> 128 <name>set_random_int</name>
67 <params> 129 <params>
68 <param type="S" values="-10001"></param> 130 <param type="S" name="variable" unit="var_id" var="must" values="-10001"/>
69 <param type="S" values="2 or 3"></param> 131 <param type="S" name="value" var="can" values="2, 3"/>
70 </params> 132 </params>
71 <desc></desc> 133 <desc>Assign an integer in the [0, value) range to the variable.</desc>
72 </op> 134 </op>
73 135
74 <op> 136 <op>
75 <num>8</num> 137 <num>8</num>
76 <name></name> 138 <name>set_random_float</name>
77 <params> 139 <params>
78 <param type="S"></param> 140 <param type="S" name="variable" unit="var_id" var="must"/>
79 <param type="f"></param> 141 <param type="f" name="maximum" var="can" values="1.0f to 2pi to 384.0f"/>
80 </params> 142 </params>
81 <desc></desc> 143 <desc>Like <ref>6</ref>, but with a float as value.</desc>
82 </op> 144 </op>
83 145
84 <op> 146 <op>
85 <num>9</num> 147 <num>9</num>
86 <name></name> 148 <name></name>
87 <params> 149 <params>
88 <param type="S"></param> 150 <param type="S"/>
89 <param type="f"></param> 151 <param type="f"/>
90 <param type="f"></param> 152 <param type="f"/>
91 </params> 153 </params>
92 <desc></desc> 154 <desc></desc>
93 </op> 155 </op>
94 156
95 <op> 157 <op>
96 <num>10</num> 158 <num>10</num>
97 <name></name> 159 <name></name>
98 <params> 160 <params>
99 <param type="S" values="-10005"></param> 161 <param type="S" var="can/must" values="-10005"/>
100 </params> 162 </params>
101 <desc>Used only one time, in <stage>2</stage>.</desc> 163 <desc>Used only one time, in <stage>2</stage>.</desc>
102 </op> 164 </op>
103 165
104 <op> 166 <op>
105 <num>13</num> 167 <num>13</num>
106 <name></name> 168 <name></name>
107 <params> 169 <params>
108 <param type="S"></param> 170 <param type="S"/>
109 <param type="S"></param> 171 <param type="S"/>
110 <param type="S"></param> 172 <param type="S"/>
111 </params> 173 </params>
112 <desc></desc> 174 <desc></desc>
113 </op> 175 </op>
114 176
115 <op> 177 <op>
116 <num>14</num> 178 <num>14</num>
117 <name></name> 179 <name></name>
118 <params> 180 <params>
119 <param type="S"></param> 181 <param type="S"/>
120 <param type="S"></param> 182 <param type="S"/>
121 <param type="S"></param> 183 <param type="S"/>
122 </params> 184 </params>
123 <desc></desc> 185 <desc></desc>
124 </op> 186 </op>
125 187
126 <op> 188 <op>
127 <num>15</num> 189 <num>15</num>
128 <name></name> 190 <name></name>
129 <params> 191 <params>
130 <param type="S" values="-10001"></param> 192 <param type="S" var="can/must" values="-10001"/>
131 <param type="S" values="-10012"></param> 193 <param type="S" var="can/must" values="-10012"/>
132 <param type="S" min="1" max="5"></param> 194 <param type="S" values="1 to 5"/>
133 </params> 195 </params>
134 <desc></desc> 196 <desc></desc>
135 </op> 197 </op>
136 198
137 <op> 199 <op>
138 <num>16</num> 200 <num>16</num>
139 <name></name> 201 <name></name>
140 <params> 202 <params>
141 <param type="S"></param> 203 <param type="S"/>
142 <param type="S"></param> 204 <param type="S"/>
143 <param type="S"></param> 205 <param type="S"/>
144 </params> 206 </params>
145 <desc></desc> 207 <desc></desc>
146 </op> 208 </op>
147 209
148 <op> 210 <op>
149 <num>17</num> 211 <num>17</num>
150 <name></name> 212 <name></name>
151 <params> 213 <params>
152 <param type="S"></param> 214 <param type="S" name="variable1?"/>
153 <param type="S"></param> 215 <param type="S" name="variable2?"/>
154 <param type="S"></param> 216 <param type="S"/>
155 </params> 217 </params>
156 <desc></desc> 218 <desc></desc>
157 </op> 219 </op>
158 220
159 <op> 221 <op>
160 <num>18</num> 222 <num>18</num>
161 <name></name> 223 <name></name>
162 <params> 224 <params>
163 <param type="S"></param> 225 <param type="S" name="variable?" var="can/must" values="-10012, -10004, -10002, -10001"/>
164 </params> 226 </params>
165 <desc></desc> 227 <desc></desc>
166 </op> 228 </op>
167 229
168 <op> 230 <op>
169 <num>20</num> 231 <num>20</num>
170 <name></name> 232 <name>add</name>
171 <params> 233 <params>
172 <param type="S"></param> 234 <param type="S" name="variable" unit="var_id" var="must"/>
173 <param type="f"></param> 235 <param type="f" name="a"/>
174 <param type="f"></param> 236 <param type="f" name="b"/>
175 </params> 237 </params>
176 <desc></desc> 238 <desc>variable = a + b; Warning: a and b will be dereferenced as integers (not converted) if variable is an integer!</desc>
177 </op> 239 </op>
178 240
179 <op> 241 <op>
180 <num>21</num> 242 <num>21</num>
181 <name></name> 243 <name></name>
182 <params> 244 <params>
183 <param type="S"></param> 245 <param type="S" name="variable" unit="var_id" var="must"/>
184 <param type="f"></param> 246 <param type="f" name="a"/>
185 <param type="f"></param> 247 <param type="f" name="b"/>
186 </params> 248 </params>
187 <desc></desc> 249 <desc>variable = a - b; Warning: a and b will be dereferenced as integers (not converted) if variable is an integer!</desc>
188 </op> 250 </op>
189 251
190 <op> 252 <op>
191 <num>23</num> 253 <num>23</num>
192 <name></name> 254 <name></name>
193 <params> 255 <params>
194 <param type="S"></param> 256 <param type="S"/>
195 <param type="f"></param> 257 <param type="f"/>
196 <param type="f"></param> 258 <param type="f"/>
197 </params> 259 </params>
198 <desc></desc> 260 <desc></desc>
199 </op> 261 </op>
200 262
201 <op> 263 <op>
202 <num>25</num> 264 <num>25</num>
203 <name></name> 265 <name></name>
204 <params> 266 <params>
205 <param type="S" values="-10005"></param> 267 <param type="S" var="can/must" values="-10005"/>
206 <param type="f"></param> 268 <param type="f"/>
207 <param type="f"></param> 269 <param type="f"/>
208 <param type="f" values="192.0f"></param> 270 <param type="f" values="192.0f"/>
209 <param type="f" values="224.0f"></param> 271 <param type="f" values="224.0f"/>
210 </params> 272 </params>
211 <desc></desc> 273 <desc></desc>
212 </op> 274 </op>
213 275
214 <op> 276 <op>
215 <num>26</num> 277 <num>26</num>
216 <name></name> 278 <name></name>
217 <params> 279 <params>
218 <param type="S"></param> 280 <param type="S"/>
219 </params> 281 </params>
220 <desc></desc> 282 <desc></desc>
221 </op> 283 </op>
222 284
223 <op> 285 <op>
224 <num>27</num> 286 <num>27</num>
225 <name></name> 287 <name>compare_ints</name>
226 <params> 288 <params>
227 <param type="S"></param> 289 <param type="S" name="a"/>
228 <param type="S"></param> 290 <param type="S" name="b"/>
229 </params> 291 </params>
230 <desc></desc> 292 <desc>Compare a and b, store the result (-1 if a &lt; b, 0 if a == b, 1 if a > b) in the "comparison register".</desc>
231 </op> 293 </op>
232 294
233 <op> 295 <op>
234 <num>28</num> 296 <num>28</num>
235 <name></name> 297 <name></name>
236 <params> 298 <params>
237 <param type="f"></param> 299 <param type="f"/>
238 <param type="f"></param> 300 <param type="f"/>
239 </params> 301 </params>
240 <desc></desc> 302 <desc></desc>
241 </op> 303 </op>
242 304
243 <op> 305 <op>
244 <num>29</num> 306 <num>29</num>
245 <name></name> 307 <name></name>
246 <params> 308 <params>
247 <param type="S"></param> 309 <param type="S"/>
248 <param type="S"></param> 310 <param type="S"/>
249 </params> 311 </params>
250 <desc></desc> 312 <desc></desc>
251 </op> 313 </op>
252 314
253 <op> 315 <op>
254 <num>30</num> 316 <num>30</num>
255 <name></name> 317 <name></name>
256 <params> 318 <params>
257 <param type="S"></param> 319 <param type="S"/>
258 <param type="S"></param> 320 <param type="S"/>
259 </params> 321 </params>
260 <desc></desc> 322 <desc></desc>
261 </op> 323 </op>
262 324
263 <op> 325 <op>
264 <num>31</num> 326 <num>31</num>
265 <name></name> 327 <name>relative_jump_if_equal</name>
266 <params> 328 <params>
267 <param type="S"></param> 329 <param type="S" name="new_frame" unit="frame" values="0, 2, 60"/>
268 <param type="S"></param> 330 <param type="S" name="relative_offset" unit="bytes" values="44, 176, 324">Starting from the start of the current opcode.</param>
269 </params> 331 </params>
270 <desc></desc> 332 <desc>Jump if the "comparison register" equals to 0, that is, if the compared values are equal.</desc>
271 </op> 333 </op>
272 334
273 <op> 335 <op>
274 <num>32</num> 336 <num>32</num>
275 <name></name> 337 <name></name>
276 <params> 338 <params>
277 <param type="S" value="120"></param> 339 <param type="S" value="120"/>
278 <param type="S" value="64"></param> 340 <param type="S" value="64"/>
279 </params> 341 </params>
280 <desc>Used only one time in <stage>4</stage></desc> 342 <desc>Used only one time in <stage>4</stage></desc>
281 </op> 343 </op>
282 344
283 <op> 345 <op>
284 <num>33</num> 346 <num>33</num>
285 <name></name> 347 <name></name>
286 <params> 348 <params>
287 <param type="S"></param> 349 <param type="S"/>
288 <param type="S"></param> 350 <param type="S"/>
289 </params> 351 </params>
290 <desc></desc> 352 <desc></desc>
291 </op> 353 </op>
292 354
293 <op> 355 <op>
294 <num>34</num> 356 <num>34</num>
295 <name></name> 357 <name></name>
296 <params> 358 <params>
297 <param type="S"></param> 359 <param type="S"/>
298 <param type="S"></param> 360 <param type="S"/>
299 </params> 361 </params>
300 <desc></desc> 362 <desc></desc>
301 </op> 363 </op>
302 364
303 <op> 365 <op>
304 <num>35</num> 366 <num>35</num>
305 <name></name> 367 <name>call</name>
306 <params> 368 <params>
307 <param type="S"></param> 369 <param type="S" name="function" unit="sub"/>
308 <param type="S"></param> 370 <param type="S" name="param1"/>
309 <param type="f"></param> 371 <param type="f" name="param2" values="-0.31415927f to 0.31415927f"/>
310 </params> 372 </params>
311 <desc></desc> 373 <desc>Call given sub with -10001 = param1, -10005 = param2</desc>
312 </op> 374 </op>
313 375
314 <op> 376 <op>
315 <num>36</num> 377 <num>36</num>
316 <name>return</name> 378 <name>return</name>
317 <desc>Almost always called at the end of the function. See stage3 for two times where it is called before <ref>1</ref>.</desc> 379 <desc>Almost always called at the end of the function. See stage3 for two times where it is called before <ref>1</ref>.</desc>
318 </op> 380 </op>
319 381
320 <op> 382 <op>
321 <num>39</num> 383 <num>39</num>
322 <name></name> 384 <name>call_if_equal</name>
323 <params> 385 <params>
324 <param type="S"></param> 386 <param type="S" name="function" unit="sub"/>
325 <param type="S" values="0"></param> 387 <param type="S" values="0" name="param1"/>
326 <param type="S" values="0"></param> 388 <param type="f" values="0" name="param2"/>
327 <param type="S"></param> 389 <param type="S" name="a"/>
328 <param type="S"></param> 390 <param type="S" name="b"/>
329 </params> 391 </params>
330 <desc></desc> 392 <desc>Call given sub with -10001 = param1, -10005 = param2 if a == b</desc>
331 </op> 393 </op>
332 394
333 <op> 395 <op>
334 <num>43</num> 396 <num>43</num>
335 <name></name> 397 <name>set_position</name>
336 <params> 398 <params>
337 <param type="f"></param> 399 <param type="f" name="x"/>
338 <param type="f"></param> 400 <param type="f" name="y"/>
339 <param type="S" values="0"></param> 401 <param type="f" name="y" values="0">Ignored</param>
340 </params> 402 </params>
341 <desc></desc> 403 <desc>Move the enemy to a new position, using interpolation.</desc>
342 </op> 404 </op>
343 405
344 <op> 406 <op>
345 <num>45</num> 407 <num>45</num>
346 <name>set_angle_speed</name> 408 <name>set_angle_speed</name>
347 <params> 409 <params>
348 <param type="f">Angle in radians, 0.0f is left, PI/2 is down.</param> 410 <param type="f" name="angle" unit="radian">0.0f is left, PI/2 is down.</param>
349 <param type="f">Speed in pixels per frame.</param> 411 <param type="f" name="speed" unit="pixels/frame"/>
350 </params> 412 </params>
351 <desc>Set the angular trajectory and speed of the enemy.</desc> 413 <desc>Set the angular trajectory and speed of the enemy.</desc>
352 </op> 414 </op>
353 415
354 <op> 416 <op>
355 <num>46</num> 417 <num>46</num>
356 <name>set_angle</name> 418 <name>set_rotation_speed</name>
357 <params> 419 <params>
358 <param type="f">The new angle, in radians.</param> 420 <param type="f" name="speed" unit="radian/frame"/>
359 </params> 421 </params>
360 <desc>Change the angular trajectory of the enemy. It continues to turn until this function is called again.</desc> 422 <desc>Change the angular trajectory of the enemy. It continues to turn until this function is called again.</desc>
361 </op> 423 </op>
362 424
363 <op> 425 <op>
364 <num>47</num> 426 <num>47</num>
365 <name>set_speed</name> 427 <name>set_speed</name>
366 <params> 428 <params>
367 <param type="f">The new speed.</param> 429 <param type="f" name="speed" unit="pixels/frame"/>
368 </params> 430 </params>
369 <desc>Change the speed of the enemy.</desc> 431 <desc>Change the speed of the enemy.</desc>
370 </op> 432 </op>
371 433
372 <op> 434 <op>
373 <num>48</num> 435 <num>48</num>
374 <name>set_acceleration</name> 436 <name>set_acceleration</name>
375 <params> 437 <params>
376 <param type="f">New step.</param> 438 <param type="f" name="step" unit="pixels/frame"/>
377 </params> 439 </params>
378 <desc>Change the speed of the enemy step by step, at each frame.</desc> 440 <desc>Change the speed of the enemy step by step, at each frame.</desc>
379 </op> 441 </op>
380 442
381 <op> 443 <op>
382 <num>49</num> 444 <num>49</num>
383 <name>set_random_?</name> 445 <name>set_random_?</name>
384 <params> 446 <params>
385 <param type="f" values="0.7853982f">The new angle?.</param> 447 <param type="f" values="0.7853982f">The new angle?</param>
386 <param type="f" values="2.3561945f">Some deplacement?.</param> 448 <param type="f" values="2.3561945f">Some deplacement?</param>
387 </params> 449 </params>
388 <desc>Used only five times, in <stage>2</stage>. Seems to involve some randomness.</desc> 450 <desc>Used only five times, in <stage>2</stage>. Seems to involve some randomness.</desc>
389 </op> 451 </op>
390 452
391 <op> 453 <op>
392 <num>50</num> 454 <num>50</num>
393 <name></name> 455 <name></name>
394 <params> 456 <params>
395 <param type="f" values="PI (3.1415927f)"></param> 457 <param type="f" values="PI (3.1415927f)"/>
396 <param type="f" values="PI (3.1415927f)"></param> 458 <param type="f" values="PI (3.1415927f)"/>
397 </params> 459 </params>
398 <desc></desc> 460 <desc></desc>
399 </op> 461 </op>
400 462
401 <op> 463 <op>
402 <num>51</num> 464 <num>51</num>
403 <name></name> 465 <name>set_speed_forward_player</name>
404 <params> 466 <params>
405 <param type="S" value="0"></param> 467 <param type="S" value="0">Ignored</param>
406 <param type="f" value="2.4f"></param> 468 <param type="f" name="speed" unit="pixels/frame"/>
407 </params> 469 </params>
408 <desc>Used only one time in <stage>2</stage></desc> 470 <desc>Sets the speed of the enemy, and change its direction to where the player is at that frame. Used only one time in <stage>2</stage>.</desc>
409 </op> 471 </op>
410 472
411 <op> 473 <op>
412 <num>52</num> 474 <num>52</num>
413 <name></name> 475 <name></name>
414 <params> 476 <params>
415 <param type="S"></param> 477 <param type="S"/>
416 <param type="f"></param> 478 <param type="f"/>
417 <param type="f"></param> 479 <param type="f"/>
418 </params> 480 </params>
419 <desc></desc> 481 <desc></desc>
420 </op> 482 </op>
421 483
422 <op> 484 <op>
423 <num>56</num> 485 <num>56</num>
424 <name></name> 486 <name></name>
425 <params> 487 <params>
426 <param type="S"></param> 488 <param type="S"/>
427 <param type="f"></param> 489 <param type="f"/>
428 <param type="f"></param> 490 <param type="f"/>
429 <param type="S" values="0"></param> 491 <param type="S" values="0"/>
430 </params> 492 </params>
431 <desc>Used only two times in <stage>7</stage></desc> 493 <desc>Used only two times in <stage>7</stage></desc>
432 </op> 494 </op>
433 495
434 <op> 496 <op>
435 <num>57</num> 497 <num>57</num>
436 <name></name> 498 <name>move_to</name>
437 <params> 499 <params>
438 <param type="S"></param> 500 <param type="S" name="duration" unit="frames"/>
439 <param type="f"></param> 501 <param type="f" name="x" unit="pixels"/>
440 <param type="f"></param> 502 <param type="f" name="y" unit="pixels"/>
441 <param type="S" values="0"></param> 503 <param type="f" name="z" unit="pixels" values="0.0f">Ignored</param>
442 </params> 504 </params>
443 <desc></desc> 505 <desc>Move the enemy to the new position in this amount of frames.</desc>
444 </op> 506 </op>
445 507
446 <op> 508 <op>
447 <num>59</num> 509 <num>59</num>
448 <name></name> 510 <name>move_to2</name>
449 <params> 511 <params>
450 <param type="S"></param> 512 <param type="S" name="duration" unit="frames"/>
451 <param type="f" values="192.0f"></param> 513 <param type="f" name="x" unit="pixels" values="192.0f"/>
452 <param type="f"></param> 514 <param type="f" name="y" unit="pixels" values="-64.0f, 150.0f"/>
453 <param type="S" values="0"></param> 515 <param type="f" name="z" unit="pixels" values="0.0f"/>
454 </params> 516 </params>
455 <desc></desc> 517 <desc>Move the enemy to the new position in this amount of frames. TODO: how it is different from move_to?</desc>
456 </op> 518 </op>
457 519
458 <op> 520 <op>
459 <num>61</num> 521 <num>61</num>
460 <name></name> 522 <name>stop_in</name>
461 <params> 523 <params>
462 <param type="S"></param> 524 <param type="S" name="duration" unit="frames"/>
463 </params> 525 </params>
464 <desc></desc> 526 <desc>keep a straight trajectory with decelerating speed to stop in duration frames.</desc>
465 </op> 527 </op>
466 528
467 <op> 529 <op>
468 <num>63</num> 530 <num>63</num>
469 <name></name> 531 <name></name>
470 <params> 532 <params>
471 <param type="S"></param> 533 <param type="S"/>
472 </params> 534 </params>
473 <desc></desc> 535 <desc></desc>
474 </op> 536 </op>
475 537
476 <op> 538 <op>
477 <num>65</num> 539 <num>65</num>
478 <name></name> 540 <name>set_screen_box</name>
479 <params> 541 <params>
480 <param type="f"></param> 542 <param type="f" name="x1" unit="pixels"/>
481 <param type="f"></param> 543 <param type="f" name="y1" unit="pixels"/>
482 <param type="f"></param> 544 <param type="f" name="x2" unit="pixels"/>
483 <param type="f"></param> 545 <param type="f" name="y2" unit="pixels"/>
484 </params> 546 </params>
485 <desc></desc> 547 <desc>Disallow an enemy to quit the defined rectangle. If it goes outside it is destroyed. By default this rectangle is the displayed screen.</desc>
486 </op> 548 </op>
487 549
488 <op> 550 <op>
489 <num>66</num> 551 <num>66</num>
490 <name></name> 552 <name>clear_screen_box</name>
491 <desc></desc> 553 <desc>Remove the limit set in <ref>65</ref>.</desc>
492 </op> 554 </op>
493 555
494 <op> 556 <op>
495 <num>67</num> 557 <num>67</num>
496 <name>set_bullet_attributes</name> 558 <name>set_bullet_attributes</name>
497 <params> 559 <params>
498 <param type="s">Bullet sprite.</param> 560 <param type="s" name="bullet" unit="script"/>
499 <param type="s">Launch sprite.</param> 561 <param type="s" name="launch" unit="script"/>
500 <param type="S">Number of bullets per salvo.</param> 562 <param type="S" name="bullets_per_shot"/>
501 <param type="S">Number of salvos.</param> 563 <param type="S" name="number_of_shots"/>
502 <param type="f">Speed.</param> 564 <param type="f" name="speed" unit="pixels/frame"/>
503 <param type="f">Speed2?.</param> 565 <param type="f"/>
504 <param type="f">Launch angle.</param> 566 <param type="f" name="launch_angle" unit="radian"/>
505 <param type="f">Angle between two bullets of a same salvo.</param> 567 <param type="f" name="angle_between_two_bullets" unit="radian"/>
506 <param type="S">(>= 64, freezed).</param> 568 <param type="S" name="flags">>= 64, freezed</param>
507 </params> 569 </params>
508 <desc>Modify the attributes of the next enemy attack</desc> 570 <desc>Modify the attributes of the next enemy attack. Directs it to the player.</desc>
509 </op> 571 </op>
510 572
511 <op> 573 <op>
512 <num>68</num> 574 <num>68</num>
513 <name></name> 575 <name></name>
514 <params> 576 <params>
515 <param type="s"></param> 577 <param type="s"/>
516 <param type="s"></param> 578 <param type="s"/>
517 <param type="S"></param> 579 <param type="S"/>
518 <param type="S"></param> 580 <param type="S"/>
519 <param type="f"></param> 581 <param type="f"/>
520 <param type="f"></param> 582 <param type="f"/>
521 <param type="f"></param> 583 <param type="f"/>
522 <param type="f"></param> 584 <param type="f"/>
523 <param type="S"></param> 585 <param type="S"/>
524 </params> 586 </params>
525 <desc>Supposedly the same as <ref>67</ref>.</desc> 587 <desc>The same as <ref>67</ref>, except the shot is directed to the right of the enemy.</desc>
526 </op> 588 </op>
527 589
528 <op> 590 <op>
529 <num>69</num> 591 <num>69</num>
530 <name></name> 592 <name></name>
531 <params> 593 <params>
532 <param type="s"></param> 594 <param type="s"/>
533 <param type="s"></param> 595 <param type="s"/>
534 <param type="S"></param> 596 <param type="S"/>
535 <param type="S"></param> 597 <param type="S"/>
536 <param type="f"></param> 598 <param type="f"/>
537 <param type="f"></param> 599 <param type="f"/>
538 <param type="f"></param> 600 <param type="f"/>
539 <param type="f"></param> 601 <param type="f"/>
540 <param type="S"></param> 602 <param type="S"/>
541 </params> 603 </params>
542 <desc></desc> 604 <desc>No visible difference from <ref>67</ref>.</desc>
543 </op> 605 </op>
544 606
545 <op> 607 <op>
546 <num>70</num> 608 <num>70</num>
547 <name></name> 609 <name></name>
548 <params> 610 <params>
549 <param type="s"></param> 611 <param type="s"/>
550 <param type="s"></param> 612 <param type="s"/>
551 <param type="S"></param> 613 <param type="S"/>
552 <param type="S"></param> 614 <param type="S"/>
553 <param type="f"></param> 615 <param type="f"/>
554 <param type="f"></param> 616 <param type="f"/>
555 <param type="f"></param> 617 <param type="f"/>
556 <param type="f"></param> 618 <param type="f"/>
557 <param type="S"></param> 619 <param type="S"/>
558 </params> 620 </params>
559 <desc></desc> 621 <desc>No visible difference from <ref>68</ref>.</desc>
560 </op> 622 </op>
561 623
562 <op> 624 <op>
563 <num>71</num> 625 <num>71</num>
564 <name></name> 626 <name></name>
565 <params> 627 <params>
566 <param type="s"></param> 628 <param type="s"/>
567 <param type="s"></param> 629 <param type="s"/>
568 <param type="S"></param> 630 <param type="S"/>
569 <param type="S"></param> 631 <param type="S"/>
570 <param type="f"></param> 632 <param type="f"/>
571 <param type="f"></param> 633 <param type="f"/>
572 <param type="S"></param> 634 <param type="S"/>
573 <param type="S"></param> 635 <param type="S"/>
574 <param type="S"></param> 636 <param type="S"/>
575 </params> 637 </params>
576 <desc></desc> 638 <desc></desc>
577 </op> 639 </op>
578 640
579 <op> 641 <op>
580 <num>74</num> 642 <num>74</num>
581 <name></name> 643 <name></name>
582 <params> 644 <params>
583 <param type="s"></param> 645 <param type="s"/>
584 <param type="s"></param> 646 <param type="s"/>
585 <param type="S"></param> 647 <param type="S"/>
586 <param type="S"></param> 648 <param type="S"/>
587 <param type="f"></param> 649 <param type="f"/>
588 <param type="f"></param> 650 <param type="f"/>
589 <param type="S"></param> 651 <param type="S"/>
590 <param type="S"></param> 652 <param type="S"/>
591 <param type="S"></param> 653 <param type="S"/>
592 </params> 654 </params>
593 <desc>Used only one time, in <stage>3</stage>.</desc> 655 <desc>Used only one time, in <stage>3</stage>.</desc>
594 </op> 656 </op>
595 657
596 <op> 658 <op>
597 <num>75</num> 659 <num>75</num>
598 <name></name> 660 <name></name>
599 <params> 661 <params>
600 <param type="s"></param> 662 <param type="s"/>
601 <param type="s"></param> 663 <param type="s"/>
602 <param type="S"></param> 664 <param type="S"/>
603 <param type="S"></param> 665 <param type="S"/>
604 <param type="f"></param> 666 <param type="f"/>
605 <param type="f"></param> 667 <param type="f"/>
606 <param type="f"></param> 668 <param type="f"/>
607 <param type="f"></param> 669 <param type="f"/>
608 <param type="S"></param> 670 <param type="S"/>
609 </params> 671 </params>
610 <desc></desc> 672 <desc>Seems like <ref>68</ref>, but with some differences in speed.</desc>
611 </op> 673 </op>
612 674
613 <op> 675 <op>
614 <num>76</num> 676 <num>76</num>
615 <name></name> 677 <name></name>
616 <params> 678 <params>
617 <param type="S"></param> 679 <param type="S"/>
618 </params> 680 </params>
619 <desc></desc> 681 <desc></desc>
620 </op> 682 </op>
621 683
622 <op> 684 <op>
623 <num>77</num> 685 <num>77</num>
624 <name>bullet_interval</name> 686 <name>bullet_interval</name>
625 <params> 687 <params>
626 <param type="S">In frames.</param> 688 <param type="S" name="interval" unit="frames"/>
627 </params> 689 </params>
628 <desc>Time between two salvos.</desc> 690 <desc>Time between two shots.</desc>
629 </op> 691 </op>
630 692
631 <op> 693 <op>
632 <num>78</num> 694 <num>78</num>
633 <name></name> 695 <name>delay_attack</name>
634 <desc>Seems related to attacks, but removing them doesn't change anything...</desc> 696 <desc>If present, delays the first attack of the amount of frames defined by <ref>77</ref>. If not, the enemy shoots instantly after setting the bullets attributes.</desc>
635 </op> 697 </op>
636 698
637 <op> 699 <op>
638 <num>79</num> 700 <num>79</num>
639 <name></name> 701 <name>no_delay_attack</name>
640 <desc>Seems related to attacks, but removing them doesn't change anything...</desc> 702 <desc></desc>
641 </op> 703 </op>
642 704
643 <op> 705 <op>
644 <num>81</num> 706 <num>81</num>
645 <name>bullet_launch_offset</name> 707 <name>bullet_launch_offset</name>
646 <params> 708 <params>
647 <param type="f">x offset.</param> 709 <param type="f" name="x" unit="pixels"/>
648 <param type="f">y offset.</param> 710 <param type="f" name="y" unit="pixels"/>
649 <param type="S" values="0"></param> 711 <param type="f" name="z" unit="pixels" values="0">Ignored</param>
650 </params> 712 </params>
651 <desc>Change the offset of the launch of bullets.</desc> 713 <desc>Change the offset of the launch of bullets.</desc>
652 </op> 714 </op>
653 715
654 <op> 716 <op>
655 <num>82</num> 717 <num>82</num>
656 <name></name> 718 <name></name>
657 <params> 719 <params>
658 <param type="S"></param> 720 <param type="S"/>
659 <param type="S"></param> 721 <param type="S"/>
660 <param type="S"></param> 722 <param type="S"/>
661 <param type="S"></param> 723 <param type="S"/>
662 <param type="f"></param> 724 <param type="f"/>
663 <param type="f"></param> 725 <param type="f"/>
664 <param type="f" values="-1.0f"></param> 726 <param type="f" values="-1.0f"/>
665 <param type="f" values="-1.0f"></param> 727 <param type="f" values="-1.0f"/>
666 </params> 728 </params>
667 <desc></desc> 729 <desc></desc>
668 </op> 730 </op>
669 731
670 <op> 732 <op>
671 <num>83</num> 733 <num>83</num>
672 <name></name> 734 <name></name>
673 <desc></desc> 735 <desc>No-op? Doesn't seem to change anything.</desc>
674 </op> 736 </op>
675 737
676 <op> 738 <op>
677 <num>84</num> 739 <num>84</num>
678 <name></name> 740 <name></name>
679 <params> 741 <params>
680 <param type="S"></param> 742 <param type="S"/>
681 </params> 743 </params>
682 <desc></desc> 744 <desc></desc>
683 </op> 745 </op>
684 746
685 <op> 747 <op>
686 <num>85</num> 748 <num>85</num>
687 <name></name> 749 <name>laser</name>
688 <params> 750 <params>
689 <param type="s"></param> 751 <param type="s"/>
690 <param type="s"></param> 752 <param type="s"/>
691 <param type="f"></param> 753 <param type="f"/>
692 <param type="S"></param> 754 <param type="S"/>
693 <param type="f"></param> 755 <param type="f"/>
694 <param type="f"></param> 756 <param type="f"/>
695 <param type="f"></param> 757 <param type="f"/>
696 <param type="f"></param> 758 <param type="f"/>
697 <param type="S"></param> 759 <param type="S"/>
698 <param type="S"></param> 760 <param type="S"/>
699 <param type="S"></param> 761 <param type="S"/>
700 <param type="S"></param> 762 <param type="S"/>
701 <param type="S"></param> 763 <param type="S"/>
702 <param type="S" values="0"></param> 764 <param type="S" values="0"/>
703 </params> 765 </params>
704 <desc></desc> 766 <desc></desc>
705 </op> 767 </op>
706 768
707 <op> 769 <op>
708 <num>86</num> 770 <num>86</num>
709 <name></name> 771 <name></name>
710 <params> 772 <params>
711 <param type="s"></param> 773 <param type="s"/>
712 <param type="s"></param> 774 <param type="s"/>
713 <param type="f"></param> 775 <param type="f"/>
714 <param type="f"></param> 776 <param type="f"/>
715 <param type="S"></param> 777 <param type="S"/>
716 <param type="f"></param> 778 <param type="f"/>
717 <param type="f"></param> 779 <param type="f"/>
718 <param type="f"></param> 780 <param type="f"/>
719 <param type="S"></param> 781 <param type="S"/>
720 <param type="S"></param> 782 <param type="S"/>
721 <param type="S"></param> 783 <param type="S"/>
722 <param type="S"></param> 784 <param type="S"/>
723 <param type="S"></param> 785 <param type="S"/>
724 <param type="S" values="0"></param> 786 <param type="S" values="0"/>
725 </params> 787 </params>
726 <desc></desc> 788 <desc></desc>
727 </op> 789 </op>
728 790
729 <op> 791 <op>
730 <num>87</num> 792 <num>87</num>
731 <name></name> 793 <name>set_upcoming_id</name>
732 <params> 794 <params>
733 <param type="S"></param> 795 <param type="S" name="laser" unit="laser_id"/>
734 </params> 796 </params>
735 <desc></desc> 797 <desc>Sets upcoming laser to a given id, in order to manipulate it later.</desc>
736 </op> 798 </op>
737 799
738 <op> 800 <op>
739 <num>88</num> 801 <num>88</num>
740 <name></name> 802 <name>alter_laser_angle</name>
741 <params> 803 <params>
742 <param type="S"></param> 804 <param type="S" name="laser" unit="laser_id"/>
743 <param type="f"></param> 805 <param type="f" name="delta" unit="radian"/>
744 </params> 806 </params>
745 <desc></desc> 807 <desc>Adds delta to the laser's angle.</desc>
746 </op> 808 </op>
747 809
748 <op> 810 <op>
749 <num>90</num> 811 <num>90</num>
750 <name></name> 812 <name></name>
751 <params> 813 <params>
752 <param type="S"></param> 814 <param type="S" values="0 to 3"/>
753 <param type="S" values="0"></param> 815 <param type="S" values="0"/>
754 <param type="S" values="0"></param> 816 <param type="S" values="0"/>
755 <param type="S" values="0"></param> 817 <param type="S" values="0"/>
756 </params> 818 </params>
757 <desc>Used only one time, in <stage>7</stage>.</desc> 819 <desc>Used only one time, in <stage>7</stage>.</desc>
758 </op> 820 </op>
759 821
760 <op> 822 <op>
761 <num>92</num> 823 <num>92</num>
762 <name></name> 824 <name></name>
763 <params> 825 <params>
764 <param type="S"></param> 826 <param type="S"/>
765 </params> 827 </params>
766 <desc></desc> 828 <desc></desc>
767 </op> 829 </op>
768 830
769 <op> 831 <op>
770 <num>93</num> 832 <num>93</num>
771 <name>set_spellcard</name> 833 <name>set_spellcard</name>
772 <params> 834 <params>
773 <param type="s"></param> 835 <param type="s"/>
774 <param type="s">The number of the spellcard, as it will be counted in the captured spellcards.</param> 836 <param type="s" name="number">As in the captured spellcards screen, minus 1.</param>
775 <param type="z">The name of the spellcard, in SHIFT_JIS.</param> 837 <param type="z" name="name">In SHIFT_JIS</param>
776 </params> 838 </params>
777 <desc></desc> 839 <desc></desc>
778 </op> 840 </op>
779 841
780 <op> 842 <op>
785 847
786 <op> 848 <op>
787 <num>95</num> 849 <num>95</num>
788 <name></name> 850 <name></name>
789 <params> 851 <params>
790 <param type="S"></param> 852 <param type="S"/>
791 <param type="f"></param> 853 <param type="f"/>
792 <param type="f"></param> 854 <param type="f"/>
793 <param type="f"></param> 855 <param type="f"/>
794 <param type="s"></param> 856 <param type="s"/>
795 <param type="s"></param> 857 <param type="s"/>
796 <param type="S"></param> 858 <param type="S"/>
797 </params> 859 </params>
798 <desc></desc> 860 <desc></desc>
799 </op> 861 </op>
800 862
801 <op> 863 <op>
804 <desc></desc> 866 <desc></desc>
805 </op> 867 </op>
806 868
807 <op> 869 <op>
808 <num>97</num> 870 <num>97</num>
809 <name>set_enemy_sprite</name> 871 <name>set_enemy_anim</name>
810 <params> 872 <params>
811 <param type="S" min="0" max="165">Sprite number.</param> 873 <param type="S" name="anim" unit="script"/>
812 </params> 874 </params>
813 <desc>Set a sprite (taken from current anm) for the enemy.</desc> 875 <desc>Set a sprite (taken from current anm) for the enemy.</desc>
814 </op> 876 </op>
815 877
816 <op> 878 <op>
817 <num>98</num> 879 <num>98</num>
818 <name></name> 880 <name>set_boss_anims</name>
819 <params> 881 <params>
820 <param type="s"></param> 882 <param type="s" name="default" unit="script"/>
821 <param type="s"></param> 883 <param type="s" name="far_left" unit="script"/>
822 <param type="s"></param> 884 <param type="s" name="far_right" unit="script"/>
823 <param type="s"></param> 885 <param type="s" name="left" unit="script"/>
824 <param type="S"></param> 886 <param type="S" name="right" unit="script">Perhaps two int16_t instead.</param>
825 </params> 887 </params>
826 <desc></desc> 888 <desc>Give a set of animations for a boss deplacements.</desc>
827 </op> 889 </op>
828 890
829 <op> 891 <op>
830 <num>99</num> 892 <num>99</num>
831 <name></name> 893 <name></name>
832 <params> 894 <params>
833 <param type="S"></param> 895 <param type="S"/>
834 <param type="S"></param> 896 <param type="S"/>
835 </params> 897 </params>
836 <desc></desc> 898 <desc></desc>
837 </op> 899 </op>
838 900
839 <op> 901 <op>
840 <num>100</num> 902 <num>100</num>
841 <name>set_death_anim</name> 903 <name>set_death_anim</name>
842 <params> 904 <params>
843 <param type="S" values="258, 768, 769">In fact, any 256n+[0-2] works and is the same; other values make the program crash.</param> 905 <param type="S" name="anim" unit="script" values="768, 769, 258">In fact, any 256n+[0-2] works and is the same; other values make the program crash.</param>
844 </params> 906 </params>
845 <desc>When the enemy is destroyed, the animation used.</desc> 907 <desc>When the enemy is destroyed, the animation used.</desc>
846 </op> 908 </op>
847 909
848 <op> 910 <op>
849 <num>101</num> 911 <num>101</num>
850 <name></name> 912 <name>set_boss_mode</name>
851 <params> 913 <params>
852 <param type="S" values="-1, 0"></param> 914 <param type="S" values="-1, 0">Unknown meaning, seems to be 0 for mid-boss and -1 for real boss.</param>
853 </params> 915 </params>
854 <desc></desc> 916 <desc>Activates the boss mode, with her life bar and lives number displayed on the top. Doesn't do anything before calling <ref>126</ref>.</desc>
855 </op> 917 </op>
856 918
857 <op> 919 <op>
858 <num>102</num> 920 <num>102</num>
859 <name></name> 921 <name></name>
860 <params> 922 <params>
861 <param type="S"></param> 923 <param type="S"/>
862 <param type="f"></param> 924 <param type="f"/>
863 <param type="f"></param> 925 <param type="f"/>
864 <param type="f"></param> 926 <param type="f"/>
865 <param type="f" values="48.0f"></param> 927 <param type="f" values="48.0f"/>
866 </params> 928 </params>
867 <desc></desc> 929 <desc>Create the "squares" running around Rumia ???</desc>
868 </op> 930 </op>
869 931
870 <op> 932 <op>
871 <num>103</num> 933 <num>103</num>
872 <name>set_enemy</name> 934 <name>set_enemy_hitbox</name>
873 <params> 935 <params>
874 <param type="f" min="16" max="56">Size of the enemy hitbox.</param> 936 <param type="f" name="width" unit="pixels" values="16 to 56"/>
875 <param type="f" min="16" max="56"></param> 937 <param type="f" name="height" unit="pixels" values="16 to 56"/>
876 <param type="f" values="32.0f"></param> 938 <param type="f" name="depth" unit="pixels" values="32.0f">Ignored</param>
877 </params> 939 </params>
878 <desc>The two last parameters are unknown</desc> 940 <desc></desc>
879 </op> 941 </op>
880 942
881 <op> 943 <op>
882 <num>104</num> 944 <num>104</num>
883 <name></name> 945 <name></name>
884 <params> 946 <params>
885 <param type="S" values="0, 1"></param> 947 <param type="S" values="0, 1"/>
886 </params> 948 </params>
887 <desc></desc> 949 <desc>noop?</desc>
888 </op> 950 </op>
889 951
890 <op> 952 <op>
891 <num>105</num> 953 <num>105</num>
892 <name></name> 954 <name>set_vulnerable</name>
893 <params> 955 <params>
894 <param type="S" values="0, 1"></param> 956 <param type="S" name="x" values="0, 1"/>
895 </params> 957 </params>
896 <desc></desc> 958 <desc>if x &amp; 1, the enemy can take damage, else it cannot.</desc>
897 </op> 959 </op>
898 960
899 <op> 961 <op>
900 <num>106</num> 962 <num>106</num>
901 <name></name> 963 <name>play_sound</name>
902 <params> 964 <params>
903 <param type="S"></param> 965 <param type="S"/>
904 </params> 966 </params>
905 <desc></desc> 967 <desc>Play a sound.</desc>
906 </op> 968 </op>
907 969
908 <op> 970 <op>
909 <num>107</num> 971 <num>107</num>
910 <name></name> 972 <name>set_death_flags</name>
911 <params> 973 <params>
912 <param type="S"></param> 974 <param type="S"/>
913 </params> 975 </params>
914 <desc></desc> 976 <desc>Control what to do when life falls to zero. 0 = normal, 1 = don't clean the sprite, 2 = don't die, 4 (unused) = don't die and don't drop bonus. These are flags that can be combined.</desc>
915 </op> 977 </op>
916 978
917 <op> 979 <op>
918 <num>108</num> 980 <num>108</num>
919 <name></name> 981 <name>call_when_killed</name>
920 <params> 982 <params>
921 <param type="S"></param> 983 <param type="S" name="function" unit="sub"/>
922 </params> 984 </params>
923 <desc></desc> 985 <desc>Specify the subroutine to call when the enemy is killed.</desc>
924 </op> 986 </op>
925 987
926 <op> 988 <op>
927 <num>109</num> 989 <num>109</num>
928 <name></name> 990 <name></name>
929 <params> 991 <params>
930 <param type="S"></param> 992 <param type="S"/>
931 <param type="S" values="0"></param> 993 <param type="S" values="0"/>
932 </params> 994 </params>
933 <desc></desc> 995 <desc></desc>
934 </op> 996 </op>
935 997
936 <op> 998 <op>
937 <num>111</num> 999 <num>111</num>
938 <name></name> 1000 <name>set_life</name>
939 <params> 1001 <params>
940 <param type="S"></param> 1002 <param type="S" name="life"/>
941 </params> 1003 </params>
942 <desc></desc> 1004 <desc>equivalent to <ref>4</ref>(-10024, life)</desc>
943 </op> 1005 </op>
944 1006
945 <op> 1007 <op>
946 <num>112</num> 1008 <num>112</num>
947 <name></name> 1009 <name></name>
948 <params> 1010 <params>
949 <param type="S" values="0, 99999"></param> 1011 <param type="S" values="0, 99999"/>
950 </params> 1012 </params>
951 <desc></desc> 1013 <desc></desc>
952 </op> 1014 </op>
953 1015
954 <op> 1016 <op>
955 <num>113</num> 1017 <num>113</num>
956 <name></name> 1018 <name>set_boss_lower_life_limit</name>
957 <params> 1019 <params>
958 <param type="S" values="-1, 500-3400"></param> 1020 <param type="S" name="limit" unit="life" values="-1, 500-3400"/>
959 </params> 1021 </params>
960 <desc></desc> 1022 <desc>When enemy's life gets lower or equal to the limit, the callback set by <ref>114</ref> is called.</desc>
961 </op> 1023 </op>
962 1024
963 <op> 1025 <op>
964 <num>114</num> 1026 <num>114</num>
965 <name></name> 1027 <name>set_boss_callback</name>
966 <params> 1028 <params>
967 <param type="S" values="9-68"></param> 1029 <param type="S" name="callback" unit="sub" values="9-68"/>
968 </params> 1030 </params>
969 <desc></desc> 1031 <desc>Specify the sub to call when the enemy's life gets below a certain amount set by a <ref>113</ref>.</desc>
970 </op> 1032 </op>
971 1033
972 <op> 1034 <op>
973 <num>115</num> 1035 <num>115</num>
974 <name></name> 1036 <name>set_timeout</name>
975 <params> 1037 <params>
976 <param type="S"></param> 1038 <param type="S" name="timeout" unit="frame"/>
977 </params> 1039 </params>
978 <desc></desc> 1040 <desc>Sets the timeout of the current boss attack.</desc>
979 </op> 1041 </op>
980 1042
981 <op> 1043 <op>
982 <num>116</num> 1044 <num>116</num>
983 <name></name> 1045 <name></name>
984 <params> 1046 <params>
985 <param type="S"></param> 1047 <param type="S"/>
986 </params> 1048 </params>
987 <desc></desc> 1049 <desc>Doesn't seem to do anything. Tried to remove it, use 0, 1, 127, 1023, 1024, 4096 as an argument, nothing... ???</desc>
988 </op> 1050 </op>
989 1051
990 <op> 1052 <op>
991 <num>117</num> 1053 <num>117</num>
992 <name></name> 1054 <name></name>
993 <params> 1055 <params>
994 <param type="S"></param> 1056 <param type="S"/>
995 </params> 1057 </params>
996 <desc></desc> 1058 <desc></desc>
997 </op> 1059 </op>
998 1060
999 <op> 1061 <op>
1000 <num>118</num> 1062 <num>118</num>
1001 <name></name> 1063 <name></name>
1002 <params> 1064 <params>
1003 <param type="S"></param> 1065 <param type="S"/>
1004 <param type="S"></param> 1066 <param type="S"/>
1005 <param type="s"></param> 1067 <param type="s"/>
1006 <param type="s"></param> 1068 <param type="s"/>
1007 </params> 1069 </params>
1008 <desc></desc> 1070 <desc>TODO: "explosion" (dying boss)</desc>
1009 </op> 1071 </op>
1010 1072
1011 <op> 1073 <op>
1012 <num>119</num> 1074 <num>119</num>
1013 <name></name> 1075 <name>drop_bonus</name>
1014 <params> 1076 <params>
1015 <param type="S"></param> 1077 <param type="S" name="number" values="3, 4, 5, 6, 8, 10, 12, 20"/>
1016 </params> 1078 </params>
1017 <desc></desc> 1079 <desc>Drop a certain number of bonus at the frame it is called. If the power is not max, drop power items, else drop point items.</desc>
1018 </op> 1080 </op>
1019 1081
1020 <op> 1082 <op>
1021 <num>120</num> 1083 <num>120</num>
1022 <name></name> 1084 <name></name>
1023 <params> 1085 <params>
1024 <param type="S"></param> 1086 <param type="S"/>
1025 </params> 1087 </params>
1026 <desc></desc> 1088 <desc></desc>
1027 </op> 1089 </op>
1028 1090
1029 <op> 1091 <op>
1030 <num>121</num> 1092 <num>121</num>
1031 <name></name> 1093 <name></name>
1032 <params> 1094 <params>
1033 <param type="S"></param> 1095 <param type="S"/>
1034 <param type="S"></param> 1096 <param type="S"/>
1035 </params> 1097 </params>
1036 <desc></desc> 1098 <desc></desc>
1037 </op> 1099 </op>
1038 1100
1039 <op> 1101 <op>
1040 <num>122</num> 1102 <num>122</num>
1041 <name></name> 1103 <name></name>
1042 <params> 1104 <params>
1043 <param type="S"></param> 1105 <param type="S"/>
1044 </params> 1106 </params>
1045 <desc></desc> 1107 <desc></desc>
1046 </op> 1108 </op>
1047 1109
1048 <op> 1110 <op>
1049 <num>123</num> 1111 <num>123</num>
1050 <name></name> 1112 <name></name>
1051 <params> 1113 <params>
1052 <param type="S"></param> 1114 <param type="S"/>
1053 </params> 1115 </params>
1054 <desc></desc> 1116 <desc></desc>
1055 </op> 1117 </op>
1056 1118
1057 <op> 1119 <op>
1058 <num>124</num> 1120 <num>124</num>
1059 <name></name> 1121 <name></name>
1060 <params> 1122 <params>
1061 <param type="S"></param> 1123 <param type="S"/>
1062 </params> 1124 </params>
1063 <desc></desc> 1125 <desc></desc>
1064 </op> 1126 </op>
1065 1127
1066 <op> 1128 <op>
1069 <desc></desc> 1131 <desc></desc>
1070 </op> 1132 </op>
1071 1133
1072 <op> 1134 <op>
1073 <num>126</num> 1135 <num>126</num>
1074 <name></name> 1136 <name>set_boss_lives</name>
1075 <params> 1137 <params>
1076 <param type="S"></param> 1138 <param type="S" name="lives">Can even be negative. :D</param>
1077 </params> 1139 </params>
1078 <desc></desc> 1140 <desc>Sets the remaining lives of a boss. Should be called at the start of each round.</desc>
1079 </op> 1141 </op>
1080 1142
1081 <op> 1143 <op>
1082 <num>127</num> 1144 <num>127</num>
1083 <name></name> 1145 <name></name>
1084 <params> 1146 <params>
1085 <param type="S"></param> 1147 <param type="S"/>
1086 </params> 1148 </params>
1087 <desc></desc> 1149 <desc></desc>
1088 </op> 1150 </op>
1089 1151
1090 <op> 1152 <op>
1091 <num>128</num> 1153 <num>128</num>
1092 <name></name> 1154 <name></name>
1093 <params> 1155 <params>
1094 <param type="S"></param> 1156 <param type="S"/>
1095 </params> 1157 </params>
1096 <desc></desc> 1158 <desc></desc>
1097 </op> 1159 </op>
1098 1160
1099 <op> 1161 <op>
1100 <num>129</num> 1162 <num>129</num>
1101 <name></name> 1163 <name></name>
1102 <params> 1164 <params>
1103 <param type="S"></param> 1165 <param type="S"/>
1104 <param type="S"></param> 1166 <param type="S"/>
1105 </params> 1167 </params>
1106 <desc></desc> 1168 <desc></desc>
1107 </op> 1169 </op>
1108 1170
1109 <op> 1171 <op>
1110 <num>130</num> 1172 <num>130</num>
1111 <name></name> 1173 <name></name>
1112 <params> 1174 <params>
1113 <param type="S"></param> 1175 <param type="S"/>
1114 </params> 1176 </params>
1115 <desc></desc> 1177 <desc></desc>
1116 </op> 1178 </op>
1117 1179
1118 <op> 1180 <op>
1119 <num>131</num> 1181 <num>131</num>
1120 <name></name> 1182 <name></name>
1121 <params> 1183 <params>
1122 <param type="f"></param> 1184 <param type="f"/>
1123 <param type="f"></param> 1185 <param type="f"/>
1124 <param type="S"></param> 1186 <param type="S"/>
1125 <param type="S"></param> 1187 <param type="S"/>
1126 <param type="S"></param> 1188 <param type="S"/>
1127 <param type="S"></param> 1189 <param type="S"/>
1128 </params> 1190 </params>
1129 <desc></desc> 1191 <desc></desc>
1130 </op> 1192 </op>
1131 1193
1132 <op> 1194 <op>
1133 <num>132</num> 1195 <num>132</num>
1134 <name></name> 1196 <name></name>
1135 <params> 1197 <params>
1136 <param type="S"></param> 1198 <param type="S"/>
1137 </params> 1199 </params>
1138 <desc></desc> 1200 <desc></desc>
1139 </op> 1201 </op>
1140 1202
1141 <op> 1203 <op>
1152 1214
1153 <op> 1215 <op>
1154 <num>135</num> 1216 <num>135</num>
1155 <name></name> 1217 <name></name>
1156 <params> 1218 <params>
1157 <param type="S"></param> 1219 <param type="S"/>
1158 </params> 1220 </params>
1159 <desc></desc> 1221 <desc></desc>
1160 </op> 1222 </op>
1161 </opcodes> 1223 </opcodes>