comparison 06/ecl.xml @ 12:79dfd9765a67

I *really* should commit more often.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Tue, 04 Oct 2011 11:45:04 +0200
parents 2a7b9d62c0c4
children 2925b0e246c6
comparison
equal deleted inserted replaced
11:9f0e37b7eeab 12:79dfd9765a67
141 <desc>Like <ref>6</ref>, but with a float as value.</desc> 141 <desc>Like <ref>6</ref>, but with a float as value.</desc>
142 </op> 142 </op>
143 143
144 <op> 144 <op>
145 <num>9</num> 145 <num>9</num>
146 <name></name> 146 <name>set_random_float2</name>
147 <params> 147 <params>
148 <param type="S"/> 148 <param type="S" name="variable" unit="var_id" var="must"/>
149 <param type="f"/> 149 <param type="f" name="amplitude"/>
150 <param type="f"/> 150 <param type="f" name="minimum"/>
151 </params> 151 </params>
152 <desc></desc> 152 <desc>Assign a float in the [minimum, minimum+amplitude) range to the variable.</desc>
153 </op> 153 </op>
154 154
155 <op> 155 <op>
156 <num>10</num> 156 <num>10</num>
157 <name></name> 157 <name>store_x</name>
158 <params> 158 <params>
159 <param type="S" var="can/must" values="-10005"/> 159 <param type="S" name="variable" unit="var_id" var="must" values="-10005"/>
160 </params> 160 </params>
161 <desc>Used only one time, in <stage>2</stage>.</desc> 161 <desc>Store the x value of the enemy in the specified variable. Equivalent to <ref>4</ref>(variable, -10015).</desc>
162 </op> 162 </op>
163 163
164 <op> 164 <op>
165 <num>13</num> 165 <num>13</num>
166 <name></name> 166 <name>add_int</name>
167 <params> 167 <params>
168 <param type="S"/> 168 <param type="S" name="variable" unit="var_id" var="must"/>
169 <param type="S"/> 169 <param type="S" name="a" var="can"/>
170 <param type="S"/> 170 <param type="S" name="b" var="can"/>
171 </params> 171 </params>
172 <desc></desc> 172 <desc>variable = a + b;</desc>
173 </op> 173 </op>
174 174
175 <op> 175 <op>
176 <num>14</num> 176 <num>14</num>
177 <name></name> 177 <name>substract_int</name>
178 <params> 178 <params>
179 <param type="S"/> 179 <param type="S" name="variable" unit="var_id" var="must"/>
180 <param type="S"/> 180 <param type="S" name="a" var="can"/>
181 <param type="S"/> 181 <param type="S" name="b" var="can"/>
182 </params> 182 </params>
183 <desc></desc> 183 <desc>variable = a - b;</desc>
184 </op> 184 </op>
185 185
186 <op> 186 <op>
187 <num>15</num> 187 <num>15</num>
188 <name></name> 188 <name>multiply_int</name>
189 <params> 189 <params>
190 <param type="S" var="can/must" values="-10001"/> 190 <param type="S" name="variable" var="must" values="-10001"/>
191 <param type="S" var="can/must" values="-10012"/> 191 <param type="S" name="a" var="can" values="-10012"/>
192 <param type="S" values="1 to 5"/> 192 <param type="S" name="b" var="can" values="1 to 5"/>
193 </params> 193 </params>
194 <desc></desc> 194 <desc>variable = a * b;</desc>
195 </op> 195 </op>
196 196
197 <op> 197 <op>
198 <num>16</num> 198 <num>16</num>
199 <name></name> 199 <name>divide_int</name>
200 <params> 200 <params>
201 <param type="S"/> 201 <param type="S" name="variable" var="must"/>
202 <param type="S"/> 202 <param type="S" name="a" var="can"/>
203 <param type="S"/> 203 <param type="S" name="b" var="can"/>
204 </params> 204 </params>
205 <desc></desc> 205 <desc>variable = a / b;</desc>
206 </op> 206 </op>
207 207
208 <op> 208 <op>
209 <num>17</num> 209 <num>17</num>
210 <name></name> 210 <name>modulo</name>
211 <params> 211 <params>
212 <param type="S" name="variable1?"/> 212 <param type="S" name="variable" var="must"/>
213 <param type="S" name="variable2?"/> 213 <param type="S" name="a" var="can"/>
214 <param type="S"/> 214 <param type="S" name="b" var="can"/>
215 </params> 215 </params>
216 <desc></desc> 216 <desc>variable = a % b;</desc>
217 </op> 217 </op>
218 218
219 <op> 219 <op>
220 <num>18</num> 220 <num>18</num>
221 <name></name> 221 <name>increment</name>
222 <params> 222 <params>
223 <param type="S" name="variable?" var="can/must" values="-10012, -10004, -10002, -10001"/> 223 <param type="S" name="variable" unit="var_id" var="must" values="-10012, -10004, -10002, -10001"/>
224 </params> 224 </params>
225 <desc></desc> 225 <desc>Increment the given integer variable of 1.</desc>
226 </op> 226 </op>
227 227
228 <op> 228 <op>
229 <num>20</num> 229 <num>20</num>
230 <name>add</name> 230 <name>add_float</name>
231 <params> 231 <params>
232 <param type="S" name="variable" unit="var_id" var="must"/> 232 <param type="S" name="variable" unit="var_id" var="must"/>
233 <param type="f" var="can" name="a"/> 233 <param type="f" var="can" name="a"/>
234 <param type="f" var="can" name="b"/> 234 <param type="f" var="can" name="b"/>
235 </params> 235 </params>
236 <desc>variable = a + b; Warning: a and b will be dereferenced as integers (not converted) if variable is an integer!</desc> 236 <desc>variable = a + b; Warning: a and b will be dereferenced as integers (not converted) if variable is an integer!</desc>
237 </op> 237 </op>
238 238
239 <op> 239 <op>
240 <num>21</num> 240 <num>21</num>
241 <name></name> 241 <name>substract_float</name>
242 <params> 242 <params>
243 <param type="S" name="variable" unit="var_id" var="must"/> 243 <param type="S" name="variable" unit="var_id" var="must"/>
244 <param type="f" var="can" name="a"/> 244 <param type="f" var="can" name="a"/>
245 <param type="f" var="can" name="b"/> 245 <param type="f" var="can" name="b"/>
246 </params> 246 </params>
247 <desc>variable = a - b; Warning: a and b will be dereferenced as integers (not converted) if variable is an integer!</desc> 247 <desc>variable = a - b; Warning: a and b will be dereferenced as integers (not converted) if variable is an integer!</desc>
248 </op> 248 </op>
249 249
250 <op> 250 <op>
251 <num>23</num> 251 <num>23</num>
252 <name></name> 252 <name>divide_float</name>
253 <params> 253 <params>
254 <param type="S"/> 254 <param type="S" name="variable" unit="var_id" var="must"/>
255 <param type="f"/> 255 <param type="f" var="can" name="a"/>
256 <param type="f"/> 256 <param type="f" var="can" name="b"/>
257 </params> 257 </params>
258 <desc></desc> 258 <desc>variable = a / b;</desc>
259 </op> 259 </op>
260 260
261 <op> 261 <op>
262 <num>25</num> 262 <num>25</num>
263 <name></name> 263 <name>get_direction</name>
264 <params> 264 <params>
265 <param type="S" var="can/must" values="-10005"/> 265 <param type="S" var="must" values="-10005"/>
266 <param type="f"/> 266 <param type="f" name="x1" unit="pixels" var="can"/>
267 <param type="f"/> 267 <param type="f" name="y1" unit="pixels" var="can"/>
268 <param type="f" values="192.0f"/> 268 <param type="f" name="x2" unit="pixels" var="can" values="192.0f"/>
269 <param type="f" values="224.0f"/> 269 <param type="f" name="y2" unit="pixels" var="can" values="224.0f"/>
270 </params> 270 </params>
271 <desc></desc> 271 <desc>Compute the direction between two points. If the first is at the left of the second put 0.0f in the variable, if it is above put pi/2, etc.</desc>
272 </op> 272 </op>
273 273
274 <op> 274 <op>
275 <num>26</num> 275 <num>26</num>
276 <name></name> 276 <name>float_to_unit_circle</name>
277 <params> 277 <params>
278 <param type="S"/> 278 <param type="S" var="must" values="float variables"/>
279 </params> 279 </params>
280 <desc></desc> 280 <desc>Takes a float and transforms it to be in the [-pi, pi] interval.<br/>3.1415928 -> pi; 3.1415929 -> -pi.</desc>
281 </op> 281 </op>
282 282
283 <op> 283 <op>
284 <num>27</num> 284 <num>27</num>
285 <name>compare_ints</name> 285 <name>compare_ints</name>
290 <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> 290 <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>
291 </op> 291 </op>
292 292
293 <op> 293 <op>
294 <num>28</num> 294 <num>28</num>
295 <name></name> 295 <name>compare_floats</name>
296 <params> 296 <params>
297 <param type="f"/> 297 <param type="f" var="can" name="a"/>
298 <param type="f"/> 298 <param type="f" var="can" name="b"/>
299 </params> 299 </params>
300 <desc></desc> 300 <desc>Like <ref>27</ref>, but with floats.</desc>
301 </op> 301 </op>
302 302
303 <op> 303 <op>
304 <num>29</num> 304 <num>29</num>
305 <name></name> 305 <name>relative_jump_if_lower_than</name>
306 <params> 306 <params>
307 <param type="S"/> 307 <param type="S" name="new_frame" unit="frame"/>
308 <param type="S"/> 308 <param type="S" name="relative_offset" unit="bytes"/>
309 </params> 309 </params>
310 <desc></desc> 310 <desc>Like <ref>2</ref> but only when the comparison register equals to -1.</desc>
311 </op> 311 </op>
312 312
313 <op> 313 <op>
314 <num>30</num> 314 <num>30</num>
315 <name></name> 315 <name>relative_jump_if_lower_or_equal</name>
316 <params> 316 <params>
317 <param type="S"/> 317 <param type="S" name="new_frame" unit="frame" values="0, 60, 65, 120"/>
318 <param type="S"/> 318 <param type="S" name="relative_offset" unit="bytes" values="40, 44, 60, 456"/>
319 </params> 319 </params>
320 <desc></desc> 320 <desc>Like <ref>2</ref> but only when the comparison register is different of 1.</desc>
321 </op> 321 </op>
322 322
323 <op> 323 <op>
324 <num>31</num> 324 <num>31</num>
325 <name>relative_jump_if_equal</name> 325 <name>relative_jump_if_equal</name>
326 <params> 326 <params>
327 <param type="S" name="new_frame" unit="frame" values="0, 2, 60"/> 327 <param type="S" name="new_frame" unit="frame" values="0, 2, 60"/>
328 <param type="S" name="relative_offset" unit="bytes" values="44, 176, 324">Starting from the start of the current opcode.</param> 328 <param type="S" name="relative_offset" unit="bytes" values="44, 176, 324">Starting from the start of the current opcode.</param>
329 </params> 329 </params>
330 <desc>Jump if the "comparison register" equals to 0, that is, if the compared values are equal.</desc> 330 <desc>Like <ref>2</ref> but only when the comparison register equals to 0.</desc>
331 </op> 331 </op>
332 332
333 <op> 333 <op>
334 <num>32</num> 334 <num>32</num>
335 <name></name> 335 <name>relative_jump_if_greater_than</name>
336 <params> 336 <params>
337 <param type="S" value="120"/> 337 <param type="S" name="new_frame" unit="frame" values="120"/>
338 <param type="S" value="64"/> 338 <param type="S" name="relative_offset" unit="bytes" values="64"/>
339 </params> 339 </params>
340 <desc>Used only one time in <stage>4</stage></desc> 340 <desc>Like <ref>2</ref> but only when the comparison register equals to 1. Used only one time in <stage>4</stage>.</desc>
341 </op> 341 </op>
342 342
343 <op> 343 <op>
344 <num>33</num> 344 <num>33</num>
345 <name></name> 345 <name>relative_jump_if_greater_or_equal</name>
346 <params> 346 <params>
347 <param type="S"/> 347 <param type="S" name="new_frame" unit="frame"/>
348 <param type="S"/> 348 <param type="S" name="relative_offset" unit="bytes"/>
349 </params> 349 </params>
350 <desc></desc> 350 <desc>Like <ref>2</ref> but only when the comparison register is different of -1.</desc>
351 </op> 351 </op>
352 352
353 <op> 353 <op>
354 <num>34</num> 354 <num>34</num>
355 <name></name> 355 <name>relative_jump_if_not_equal</name>
356 <params> 356 <params>
357 <param type="S"/> 357 <param type="S" name="new_frame" unit="frame"/>
358 <param type="S"/> 358 <param type="S" name="relative_offset" unit="bytes"/>
359 </params> 359 </params>
360 <desc></desc> 360 <desc>Like <ref>2</ref> but only when the comparison register is different of 0.</desc>
361 </op> 361 </op>
362 362
363 <op> 363 <op>
364 <num>35</num> 364 <num>35</num>
365 <name>call</name> 365 <name>call</name>
372 </op> 372 </op>
373 373
374 <op> 374 <op>
375 <num>36</num> 375 <num>36</num>
376 <name>return</name> 376 <name>return</name>
377 <desc>Almost always called at the end of the function. See stage3 for two times where it is called before <ref>1</ref>.</desc> 377 <desc>When the sub is called by a <ref>35</ref> or a <ref>39</ref>, returns to the calling sub. If it was called from the main, crash.</desc>
378 </op> 378 </op>
379 379
380 <op> 380 <op>
381 <num>39</num> 381 <num>39</num>
382 <name>call_if_equal</name> 382 <name>call_if_equal</name>
383 <params> 383 <params>
384 <param type="S" name="function" unit="sub"/> 384 <param type="S" name="function" unit="sub"/>
385 <param type="S" values="0" name="param1"/> 385 <param type="S" values="0" name="param1"/>
386 <param type="f" values="0" name="param2"/> 386 <param type="f" values="0.0f" name="param2"/>
387 <param type="S" name="a"/> 387 <param type="S" name="a"/>
388 <param type="S" name="b"/> 388 <param type="S" name="b"/>
389 </params> 389 </params>
390 <desc>Call given sub with -10001 = param1, -10005 = param2 if a == b.</desc> 390 <desc>Call given sub with -10001 = param1, -10005 = param2 if a == b.</desc>
391 </op> 391 </op>
392 392
393 <op> 393 <op>
394 <num>43</num> 394 <num>43</num>
395 <name>set_position</name> 395 <name>set_pos</name>
396 <params> 396 <params>
397 <param type="f" name="x"/> 397 <param type="f" name="x" var="can"/>
398 <param type="f" name="y"/> 398 <param type="f" name="y" var="can"/>
399 <param type="f" name="y" values="0">Ignored</param> 399 <param type="f" name="z" var="can" values="0.0f">Ignored</param>
400 </params> 400 </params>
401 <desc>Move the enemy to a new position, used for interpolation.</desc> 401 <desc>Move the enemy to a new position, used for interpolation.</desc>
402 </op> 402 </op>
403 403
404 <op> 404 <op>
438 <desc>Change the speed of the enemy step by step, at each frame.</desc> 438 <desc>Change the speed of the enemy step by step, at each frame.</desc>
439 </op> 439 </op>
440 440
441 <op> 441 <op>
442 <num>49</num> 442 <num>49</num>
443 <name>set_random_?</name> 443 <name>set_random_angle</name>
444 <params> 444 <params>
445 <param type="f" values="0.7853982f">The new angle?</param> 445 <param type="f" name="min" unit="radian" values="0.7853982f"/>
446 <param type="f" values="2.3561945f">Some deplacement?</param> 446 <param type="f" name="max" unit="radian" values="2.3561945f"/>
447 </params> 447 </params>
448 <desc>Used only five times, in <stage>2</stage>. Seems to involve some randomness.</desc> 448 <desc>Set the enemy angle in the [min, max-min) range. Used only five times, in <stage>2</stage>.</desc>
449 </op> 449 </op>
450 450
451 <op> 451 <op>
452 <num>50</num> 452 <num>50</num>
453 <name></name> 453 <name>set_random_angle_ex</name>
454 <params> 454 <params>
455 <param type="f" values="-PI (-3.1415927f)"/> 455 <param type="f" values="-PI (-3.1415927f)"/>
456 <param type="f" values="PI (3.1415927f)"/> 456 <param type="f" values="PI (3.1415927f)"/>
457 </params> 457 </params>
458 <desc></desc> 458 <desc>Like <ref>49</ref>, but enclosed in boxes. TODO: document that.</desc>
459 </op> 459 </op>
460 460
461 <op> 461 <op>
462 <num>51</num> 462 <num>51</num>
463 <name>set_speed_towards_player</name> 463 <name>set_speed_towards_player</name>
468 <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> 468 <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>
469 </op> 469 </op>
470 470
471 <op> 471 <op>
472 <num>52</num> 472 <num>52</num>
473 <name></name> 473 <name>move_in_decel</name>
474 <params> 474 <params>
475 <param type="S"/> 475 <param type="S" name="duration" unit="frames" values="10, 370"/>
476 <param type="f"/> 476 <param type="f" name="angle" unit="radian" values="0.0f to pi"/>
477 <param type="f"/> 477 <param type="f" name="speed" unit="pixels/frame" values="0.8f, 4.0f"/>
478 </params> 478 </params>
479 <desc></desc> 479 <desc>Like <ref>45</ref>, but move the enemy in `duration` frames, using an decelerating interpolation function. TODO: find that function.</desc>
480 </op> 480 </op>
481 481
482 <op> 482 <op>
483 <num>56</num> 483 <num>56</num>
484 <name></name> 484 <name>move_to_linear</name>
485 <params>
486 <param type="S"/>
487 <param type="f"/>
488 <param type="f"/>
489 <param type="S" values="0"/>
490 </params>
491 <desc>Used only two times in <stage>7</stage></desc>
492 </op>
493
494 <op>
495 <num>57</num>
496 <name>move_to</name>
497 <params> 485 <params>
498 <param type="S" name="duration" unit="frames"/> 486 <param type="S" name="duration" unit="frames"/>
499 <param type="f" name="x" unit="pixels"/> 487 <param type="f" name="x" unit="pixels"/>
500 <param type="f" name="y" unit="pixels"/> 488 <param type="f" name="y" unit="pixels"/>
501 <param type="f" name="z" unit="pixels" values="0.0f">Ignored</param> 489 <param type="f" name="z" unit="pixels" values="0.0f">Ignored</param>
502 </params> 490 </params>
503 <desc>Move the enemy to the new position in this amount of frames. TODO: find the exact interpolation method</desc> 491 <desc>Move the enemy to the new position in `duration` amount of frames, using the <code>x↦x</code> function. Used only two times in <stage>7</stage>.</desc>
492 </op>
493
494 <op>
495 <num>57</num>
496 <name>move_to_decel</name>
497 <params>
498 <param type="S" name="duration" unit="frames"/>
499 <param type="f" name="x" unit="pixels"/>
500 <param type="f" name="y" unit="pixels"/>
501 <param type="f" name="z" unit="pixels" values="0.0f">Ignored</param>
502 </params>
503 <desc>Like <ref>56</ref>, but with <code>x↦2x-x²</code>.</desc>
504 </op> 504 </op>
505 505
506 <op> 506 <op>
507 <num>59</num> 507 <num>59</num>
508 <name>move_to2</name> 508 <name>move_to_accel</name>
509 <params> 509 <params>
510 <param type="S" name="duration" unit="frames"/> 510 <param type="S" name="duration" unit="frames"/>
511 <param type="f" name="x" unit="pixels" values="192.0f"/> 511 <param type="f" name="x" unit="pixels" values="192.0f"/>
512 <param type="f" name="y" unit="pixels" values="-64.0f, 150.0f"/> 512 <param type="f" name="y" unit="pixels" values="-64.0f, 150.0f"/>
513 <param type="f" name="z" unit="pixels" values="0.0f"/> 513 <param type="f" name="z" unit="pixels" values="0.0f"/>
514 </params> 514 </params>
515 <desc>Move the enemy to the new position in this amount of frames. TODO: how it is different from move_to?</desc> 515 <desc>Like <ref>56</ref>, but with <code>x↦x²</code>.</desc>
516 </op> 516 </op>
517 517
518 <op> 518 <op>
519 <num>61</num> 519 <num>61</num>
520 <name>stop_in_decel</name> 520 <name>stop_in_decel</name>
551 <desc>Remove the limit set in <ref>65</ref>.</desc> 551 <desc>Remove the limit set in <ref>65</ref>.</desc>
552 </op> 552 </op>
553 553
554 <op> 554 <op>
555 <num>67</num> 555 <num>67</num>
556 <name>set_bullet_attributes</name> 556 <name>set_bullet_attributes_towards_player</name>
557 <params> 557 <params>
558 <param type="s" name="bullet" unit="script"/> 558 <param type="s" name="anim" unit="script"/>
559 <param type="s" name="launch" unit="script"/> 559 <param type="s" name="sprite_index_offset" unit="script"/>
560 <param type="S" name="bullets_per_shot"/> 560 <param type="S" name="bullets_per_shot" var="can"/>
561 <param type="S" name="number_of_shots"/> 561 <param type="S" name="number_of_shots"/>
562 <param type="f" name="speed" unit="pixels/frame"/> 562 <param type="f" name="speed" unit="pixels/frame"/>
563 <param type="f"/> 563 <param type="f" name="speed2" unit="pixels/frame">speed + (speed2 - speed) * salve / nb_salve</param>
564 <param type="f" name="launch_angle" unit="radian"/> 564 <param type="f" name="launch_angle" unit="radian"/>
565 <param type="f" name="angle_between_two_bullets" unit="radian"/> 565 <param type="f" name="angle" unit="radian"/>
566 <param type="S" name="flags">>= 64, freezed</param> 566 <param type="S" name="flags">>= 64, freezed</param>
567 </params> 567 </params>
568 <desc>Modify the attributes of the next enemy attack. Directs it to the player.</desc> 568 <desc>Modify the attributes of the next enemy attack. Directs it to the player.</desc>
569 </op> 569 </op>
570 570
571 <op> 571 <op>
572 <num>68</num> 572 <num>68</num>
573 <name></name> 573 <name>set_bullet_attributes_to_the_right</name>
574 <params> 574 <params>
575 <param type="s"/> 575 <param type="s"/>
576 <param type="s"/> 576 <param type="s"/>
577 <param type="S"/> 577 <param type="S"/>
578 <param type="S"/> 578 <param type="S"/>
579 <param type="f"/> 579 <param type="f"/>
580 <param type="f"/> 580 <param type="f"/>
581 <param type="f"/> 581 <param type="f"/>
582 <param type="f"/> 582 <param type="f"/>
583 <param type="S"/> 583 <param type="S"/>
584 </params> 584 </params>
585 <desc>The same as <ref>67</ref>, except the shot is directed to the right of the enemy.</desc> 585 <desc>The same as <ref>67</ref>, except the 0.0f launch angle is to the right of the enemy, instead of towards the player.</desc>
586 </op> 586 </op>
587 587
588 <op> 588 <op>
589 <num>69</num> 589 <num>69</num>
590 <name></name> 590 <name>set_bullet_attributes_towards_player_equally_distributed</name>
591 <params> 591 <params>
592 <param type="s"/> 592 <param type="s"/>
593 <param type="s"/> 593 <param type="s"/>
594 <param type="S"/> 594 <param type="S"/>
595 <param type="S"/> 595 <param type="S"/>
596 <param type="f"/> 596 <param type="f"/>
597 <param type="f"/> 597 <param type="f"/>
598 <param type="f"/> 598 <param type="f"/>
599 <param type="f"/> 599 <param type="f"/>
600 <param type="S"/> 600 <param type="S"/>
601 </params> 601 </params>
602 <desc>No visible difference from <ref>67</ref>.</desc> 602 <desc>Like <ref>67</ref>, except bullets of a shot are distributed equally all around the enemy, computing the angle by itself.</desc>
603 </op> 603 </op>
604 604
605 <op> 605 <op>
606 <num>70</num> 606 <num>70</num>
607 <name></name> 607 <name>set_bullet_attributes_to_the_right_equally_distributed</name>
608 <params> 608 <params>
609 <param type="s"/> 609 <param type="s"/>
610 <param type="s"/> 610 <param type="s"/>
611 <param type="S"/> 611 <param type="S"/>
612 <param type="S"/> 612 <param type="S"/>
613 <param type="f"/> 613 <param type="f"/>
614 <param type="f"/> 614 <param type="f"/>
615 <param type="f"/> 615 <param type="f"/>
616 <param type="f"/> 616 <param type="f"/>
617 <param type="S"/> 617 <param type="S"/>
618 </params> 618 </params>
619 <desc>No visible difference from <ref>68</ref>.</desc> 619 <desc>Like <ref>68</ref>, except bullets of a shot are distributed equally all around the enemy, computing the angle by itself.</desc>
620 </op> 620 </op>
621 621
622 <op> 622 <op>
623 <num>71</num> 623 <num>71</num>
624 <name></name> 624 <name>set_bullet_attributes_towards_player_equally_distributed_and_rotated</name>
625 <params> 625 <params>
626 <param type="s"/> 626 <param type="s"/>
627 <param type="s"/> 627 <param type="s"/>
628 <param type="S"/> 628 <param type="S"/>
629 <param type="S"/> 629 <param type="S"/>
630 <param type="f"/> 630 <param type="f"/>
631 <param type="f"/> 631 <param type="f"/>
632 <param type="S"/> 632 <param type="f" values="0.0f"/>
633 <param type="S"/> 633 <param type="f" values="0.0f"/>
634 <param type="S"/> 634 <param type="S"/>
635 </params> 635 </params>
636 <desc></desc> 636 <desc>Like <ref>69</ref>, but with a rotation of pi/bullets_per_shot.</desc>
637 </op> 637 </op>
638 638
639 <op> 639 <op>
640 <num>74</num> 640 <num>74</num>
641 <name></name> 641 <name>set_bullet_attributes_towards_player_randomly_distributed</name>
642 <params> 642 <params>
643 <param type="s"/> 643 <param type="s"/>
644 <param type="s"/> 644 <param type="s"/>
645 <param type="S"/> 645 <param type="S"/>
646 <param type="S"/> 646 <param type="S"/>
647 <param type="f"/> 647 <param type="f"/>
648 <param type="f"/> 648 <param type="f"/>
649 <param type="S"/> 649 <param type="f" values="0.0f"/>
650 <param type="S"/> 650 <param type="f" values="0.0f"/>
651 <param type="S"/> 651 <param type="S"/>
652 </params> 652 </params>
653 <desc>Used only one time, in <stage>3</stage>.</desc> 653 <desc>Used only one time, in <stage>3</stage>. Like <ref>70</ref> but with some alea (?) in the angle.</desc>
654 </op> 654 </op>
655 655
656 <op> 656 <op>
657 <num>75</num> 657 <num>75</num>
658 <name></name> 658 <name>set_bullet_attributes_to_the_right_with_some_random_angle</name>
659 <params> 659 <params>
660 <param type="s"/> 660 <param type="s"/>
661 <param type="s"/> 661 <param type="s"/>
662 <param type="S"/> 662 <param type="S"/>
663 <param type="S"/> 663 <param type="S"/>
664 <param type="f"/> 664 <param type="f"/>
665 <param type="f"/> 665 <param type="f"/>
666 <param type="f"/> 666 <param type="f"/>
667 <param type="f"/> 667 <param type="f"/>
668 <param type="S"/> 668 <param type="S"/>
669 </params> 669 </params>
670 <desc>Seems like <ref>68</ref>, but with some differences in speed.</desc> 670 <desc>Like <ref>68</ref>, but with some random angle.</desc>
671 </op> 671 </op>
672 672
673 <op> 673 <op>
674 <num>76</num> 674 <num>76</num>
675 <name></name> 675 <name>bullet_interval</name>
676 <params> 676 <params>
677 <param type="S"/> 677 <param type="S" name="interval" unit="frames" values="0 to 70"/>
678 </params> 678 </params>
679 <desc></desc> 679 <desc>Time between two shots, 0 is infinite.</desc>
680 </op> 680 </op>
681 681
682 <op> 682 <op>
683 <num>77</num> 683 <num>77</num>
684 <name>bullet_interval</name> 684 <name>bullet_interval_random</name>
685 <params> 685 <params>
686 <param type="S" name="interval" unit="frames"/> 686 <param type="S" name="interval" unit="frames" values="0 to 300"/>
687 </params> 687 </params>
688 <desc>Time between two shots.</desc> 688 <desc>Like <ref>76</ref>, but with a random delay of [0, interval) frames at the start.</desc>
689 </op> 689 </op>
690 690
691 <op> 691 <op>
692 <num>78</num> 692 <num>78</num>
693 <name>delay_attack</name> 693 <name>delay_attack</name>
695 </op> 695 </op>
696 696
697 <op> 697 <op>
698 <num>79</num> 698 <num>79</num>
699 <name>no_delay_attack</name> 699 <name>no_delay_attack</name>
700 <desc></desc> 700 <desc>Instantly start to attack.</desc>
701 </op> 701 </op>
702 702
703 <op> 703 <op>
704 <num>81</num> 704 <num>81</num>
705 <name>bullet_launch_offset</name> 705 <name>bullet_launch_offset</name>
706 <params> 706 <params>
707 <param type="f" name="x" unit="pixels"/> 707 <param type="f" name="x" unit="pixels" var="can"/>
708 <param type="f" name="y" unit="pixels"/> 708 <param type="f" name="y" unit="pixels" var="can"/>
709 <param type="f" name="z" unit="pixels" values="0">Ignored</param> 709 <param type="f" name="z" unit="pixels" var="can" values="0.0f">Ignored</param>
710 </params> 710 </params>
711 <desc>Change the offset of the launch of bullets.</desc> 711 <desc>Change the offset of the launch of bullets.</desc>
712 </op> 712 </op>
713 713
714 <op> 714 <op>
715 <num>82</num> 715 <num>82</num>
716 <name></name> 716 <name>set_extended_bullet_attributes</name>
717 <params> 717 <params>
718 <param type="S"/> 718 <param type="S" values="-1, 1, 2, 40 to 240"/>
719 <param type="S"/> 719 <param type="S" values="-1, 1, 2"/>
720 <param type="S"/> 720 <param type="S" values="-1">Unused</param>
721 <param type="S"/> 721 <param type="S" values="-1">Unused</param>
722 <param type="f"/> 722 <param type="f" var="can" values="-100021.0f, variables, -1.0f, -3.6651914f to 2.443461f"/>
723 <param type="f"/> 723 <param type="f" var="can" values="variables, -999.0f, -1.0f, -0.03141593f to 4.0f"/>
724 <param type="f" values="-1.0f"/> 724 <param type="f" values="-1.0f">Unused</param>
725 <param type="f" values="-1.0f"/> 725 <param type="f" values="-1.0f">Unused</param>
726 </params> 726 </params>
727 <desc></desc> 727 <desc>Heavily linked to 67-75 last parameter, the flags:<dl>
728 <dt>1:</dt>
729 <dd>TODO: changes the bullet's speed in a strange way</dd>
730
731 <dt>2:</dt>
732 <dd>TODO: Whatever 2 does, it is in the same group as, and takes precedence over 4 and 8</dd>
733 <dt>4:</dt>
734 <dd>TODO: Whatever 4 does, it is in the same group as, and takes precedence over 8</dd>
735 <dt>8:</dt>
736 <dd>TODO</dd>
737
738 <dt>16: <code><ref>82</ref>(int duration,,,, float length, float angle,,)</code></dt>
739 <dd>for `duration` frames, add (cos(angle) * length, sin(angle) * length) to the speed vector at each frame?</dd>
740 <dt>32: <code><ref>82</ref>(int duration, int count,,, float acceleration, float angular_speed,,)</code></dt>
741 <dd>for `duration` frames, add acceleration to speed, and angular_speed to angle at each frame. Do that count times.</dd>
742 <dt>64: <code><ref>82</ref>(int nb_frames, int count,,, float angle, float speed,,)</code></dt>
743 <dd>stop the bullet in nb_frames, then add angle to its angle, and sets its speed to speed. Do that count times.</dd>
744 <dt>128: <code><ref>82</ref>(int nb_frames, int count,,, float angle, float speed,,)</code></dt>
745 <dd>stop the bullet in nb_frames, then directs the bullet towards the player, add angle to its angle, and sets its speed to speed. Do that count times.</dd>
746 <dt>256: <code><ref>82</ref>(int nb_frames, int count,,, float angle, float speed,,)</code></dt>
747 <dd>stop the bullet in nb_frames, then sets the bullet's angle and speed to angle and speed. Do that count times.</dd>
748
749 <dt>512:</dt>
750 <dd>TODO: doesn't seem to change anything?</dd>
751
752 <dt>1024: <code><ref>82</ref>(int nb_bounces,,,, float speed,,,)</code></dt>
753 <dd>Bullets “bounce”, reentering the screen as soon as they leave it, with a new speed set.</dd>
754 <dt>2048:</dt>
755 <dd>Like 1024, except it only bounces when colliding with the left and right edges.</dd></dl></desc>
728 </op> 756 </op>
729 757
730 <op> 758 <op>
731 <num>83</num> 759 <num>83</num>
732 <name></name> 760 <name>change_bullets_in_star_bonus</name>
733 <desc>No-op? Doesn't seem to change anything.</desc> 761 <desc>Isn’t called for every boss, there should be another way to do that.</desc>
734 </op> 762 </op>
735 763
736 <op> 764 <op>
737 <num>84</num> 765 <num>84</num>
738 <name></name> 766 <name></name>
739 <params> 767 <params>
740 <param type="S"/> 768 <param type="S" values="-1, 7, 22, 23, 25, 27"/>
741 </params> 769 </params>
742 <desc></desc> 770 <desc></desc>
743 </op> 771 </op>
744 772
745 <op> 773 <op>
759 <param type="S" name="stop_duration" unit="frames"/> 787 <param type="S" name="stop_duration" unit="frames"/>
760 <param type="S" name="grazing_dealy" unit="frames">how long to wait before allowing grazing</param> 788 <param type="S" name="grazing_dealy" unit="frames">how long to wait before allowing grazing</param>
761 <param type="S" name="grazing_extra_duration" unit="frames">how long to allow grazing after the laser started to disappear</param> 789 <param type="S" name="grazing_extra_duration" unit="frames">how long to allow grazing after the laser started to disappear</param>
762 <param type="S" values="0"/> 790 <param type="S" values="0"/>
763 </params> 791 </params>
764 <desc></desc> 792 <desc>Spawn a laser and set its attributes.</desc>
765 </op> 793 </op>
766 794
767 <op> 795 <op>
768 <num>86</num> 796 <num>86</num>
769 <name>laser_towards_player</name> 797 <name>laser_towards_player</name>
781 <param type="S" name="stop_duration" unit="frames"/> 809 <param type="S" name="stop_duration" unit="frames"/>
782 <param type="S" name="grazing_dealy" unit="frames">how long to wait before allowing grazing</param> 810 <param type="S" name="grazing_dealy" unit="frames">how long to wait before allowing grazing</param>
783 <param type="S" name="grazing_extra_duration" unit="frames">how long to allow grazing after the laser started to disappear</param> 811 <param type="S" name="grazing_extra_duration" unit="frames">how long to allow grazing after the laser started to disappear</param>
784 <param type="S" values="0"/> 812 <param type="S" values="0"/>
785 </params> 813 </params>
786 <desc></desc> 814 <desc>Like <ref>85</ref>, with the default direction towards the player.</desc>
787 </op> 815 </op>
788 816
789 <op> 817 <op>
790 <num>87</num> 818 <num>87</num>
791 <name>set_upcoming_id</name> 819 <name>set_upcoming_id</name>
808 <op> 836 <op>
809 <num>90</num> 837 <num>90</num>
810 <name></name> 838 <name></name>
811 <params> 839 <params>
812 <param type="S" values="0 to 3"/> 840 <param type="S" values="0 to 3"/>
813 <param type="S" values="0"/> 841 <param type="S" values="0">Perhaps a float?</param>
814 <param type="S" values="0"/> 842 <param type="S" values="0">Perhaps a float?</param>
815 <param type="S" values="0"/> 843 <param type="S" values="0">Perhaps a float?</param>
816 </params> 844 </params>
817 <desc>Used only one time, in <stage>7</stage>.</desc> 845 <desc>Used only in <stage>7</stage>.</desc>
818 </op> 846 </op>
819 847
820 <op> 848 <op>
821 <num>92</num> 849 <num>92</num>
822 <name></name> 850 <name></name>
823 <params> 851 <params>
824 <param type="S"/> 852 <param type="S" values="0 to 3"/>
825 </params> 853 </params>
826 <desc></desc> 854 <desc>Used only in <stage>7</stage>.</desc>
827 </op> 855 </op>
828 856
829 <op> 857 <op>
830 <num>93</num> 858 <num>93</num>
831 <name>set_spellcard</name> 859 <name>set_spellcard</name>
832 <params> 860 <params>
833 <param type="s"/> 861 <param type="s" value="0 to 3"/>
834 <param type="s" name="number">As in the captured spellcards screen, minus 1.</param> 862 <param type="s" name="number">As in the captured spellcards screen, minus 1.</param>
835 <param type="z" name="name">In SHIFT_JIS</param> 863 <param type="z" name="name">In SHIFT_JIS</param>
836 </params> 864 </params>
837 <desc></desc> 865 <desc></desc>
838 </op> 866 </op>
839 867
840 <op> 868 <op>
841 <num>94</num> 869 <num>94</num>
842 <name></name> 870 <name>end_spellcard</name>
843 <desc></desc> 871 <desc>Finish the current spellcard.</desc>
844 </op> 872 </op>
845 873
846 <op> 874 <op>
847 <num>95</num> 875 <num>95</num>
848 <name></name> 876 <name>spawn_enemy</name>
849 <params> 877 <params>
850 <param type="S"/> 878 <param type="S" name="function" unit="sub" values="1, 20 to 66"/>
851 <param type="f"/> 879 <param type="f" name="x" unit="pixels" var="can" values="-10015.0f, -10005.0f, -32.0f to 416.0f"/>
852 <param type="f"/> 880 <param type="f" name="y" unit="pixels" var="can" values="-10016.0f, -32.0f to 464.0f"/>
853 <param type="f"/> 881 <param type="f" name="z" unit="pixels" var="can" values="-10017.0f, -1.5707964f to 3.3379421f, 160.0f, 288.0f"/>
854 <param type="s"/> 882 <param type="s" name="resistance" values="-5536, 2 to 2000"/>
855 <param type="s"/> 883 <param type="s" name="drop_type" values="-2, 0, 1, 2"/>
856 <param type="S"/> 884 <param type="s" name="unknown1" values="0, 10, 2000"/>
857 </params> 885 <param type="s" name="unknown2" values="0"/>
858 <desc></desc> 886 </params>
887 <desc>Spawns an enemy, see <a href="ecl.xhtml#enemy_sub">the main creation of an enemy</a>.</desc>
859 </op> 888 </op>
860 889
861 <op> 890 <op>
862 <num>96</num> 891 <num>96</num>
863 <name></name> 892 <name>kill_all_enemies</name>
864 <desc></desc> 893 <desc>Instantly kill all enemies presents in the screen, dropping their bonus as if they were killed by the player. Seems to not kill if the enemy is not touchable (see <ref>117</ref>).</desc>
865 </op> 894 </op>
866 895
867 <op> 896 <op>
868 <num>97</num> 897 <num>97</num>
869 <name>set_enemy_anim</name> 898 <name>set_enemy_anim</name>
870 <params> 899 <params>
871 <param type="S" name="anim" unit="script"/> 900 <param type="S" name="anim" unit="script" var="no"/>
872 </params> 901 </params>
873 <desc>Set a sprite (taken from current anm) for the enemy.</desc> 902 <desc>Set a sprite (taken from current anm) for the enemy.</desc>
874 </op> 903 </op>
875 904
876 <op> 905 <op>
877 <num>98</num> 906 <num>98</num>
878 <name>set_boss_anims</name> 907 <name>set_boss_anims</name>
879 <params> 908 <params>
880 <param type="s" name="default" unit="script"/> 909 <param type="s" name="default" unit="script" var="no"/>
881 <param type="s" name="far_left" unit="script"/> 910 <param type="s" name="far_left" unit="script" var="no"/>
882 <param type="s" name="far_right" unit="script"/> 911 <param type="s" name="far_right" unit="script" var="no"/>
883 <param type="s" name="left" unit="script"/> 912 <param type="s" name="left" unit="script" var="no"/>
884 <param type="S" name="right" unit="script">Perhaps two int16_t instead.</param> 913 <param type="s" name="right" unit="script" var="no"/>
914 <param type="s" name="padding"/>
885 </params> 915 </params>
886 <desc>Give a set of animations for a boss deplacements.</desc> 916 <desc>Give a set of animations for a boss deplacements.</desc>
887 </op> 917 </op>
888 918
889 <op> 919 <op>
890 <num>99</num> 920 <num>99</num>
891 <name></name> 921 <name></name>
892 <params> 922 <params>
893 <param type="S"/> 923 <param type="S" values="0, 4"/>
894 <param type="S"/> 924 <param type="S" values="16 to 18, 66"/>
895 </params> 925 </params>
896 <desc></desc> 926 <desc></desc>
897 </op> 927 </op>
898 928
899 <op> 929 <op>
900 <num>100</num> 930 <num>100</num>
901 <name>set_death_anim</name> 931 <name>set_death_anim</name>
902 <params> 932 <params>
903 <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> 933 <param type="S" name="anim" unit="script" var="no" values="768, 769, 258">In fact, any 256n+[0-2] works and is the same; other values make the program crash.</param>
904 </params> 934 </params>
905 <desc>When the enemy is destroyed, the animation used.</desc> 935 <desc>When the enemy is destroyed, the animation used.</desc>
906 </op> 936 </op>
907 937
908 <op> 938 <op>
914 <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> 944 <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>
915 </op> 945 </op>
916 946
917 <op> 947 <op>
918 <num>102</num> 948 <num>102</num>
919 <name></name> 949 <name>create_squares</name>
920 <params> 950 <params>
921 <param type="S"/> 951 <param type="S" values="0 to 11, 16, 22, 25"/>
922 <param type="f"/> 952 <param type="f" name="x_rotate" values="-1.0f to 1.1f"/>
923 <param type="f"/> 953 <param type="f" name="y_rotate" values="-1.0f to -0.1f"/>
924 <param type="f"/> 954 <param type="f" name="z_rotate" values="-0.3f, -0.5f"/>
925 <param type="f" values="48.0f"/> 955 <param type="f" values="48.0f"/>
926 </params> 956 </params>
927 <desc>Create the "squares" running around Rumia ???</desc> 957 <desc>Create the squares turning around some boss. They stay even after the destruction of the enemy.</desc>
928 </op> 958 </op>
929 959
930 <op> 960 <op>
931 <num>103</num> 961 <num>103</num>
932 <name>set_enemy_hitbox</name> 962 <name>set_enemy_hitbox</name>
938 <desc></desc> 968 <desc></desc>
939 </op> 969 </op>
940 970
941 <op> 971 <op>
942 <num>104</num> 972 <num>104</num>
943 <name></name> 973 <name>set_collidable</name>
944 <params> 974 <params>
945 <param type="S" values="0, 1"/> 975 <param type="S" name="x" values="0, 1">Bitfield</param>
946 </params> 976 </params>
947 <desc>noop?</desc> 977 <desc>if x &amp; 1, the enemy can collide with the player, else it cannot.</desc>
948 </op> 978 </op>
949 979
950 <op> 980 <op>
951 <num>105</num> 981 <num>105</num>
952 <name>set_vulnerable</name> 982 <name>set_damageable</name>
953 <params> 983 <params>
954 <param type="S" name="x" values="0, 1"/> 984 <param type="S" name="x" values="0, 1">Bitfield</param>
955 </params> 985 </params>
956 <desc>if x &amp; 1, the enemy can take damage, else it cannot.</desc> 986 <desc>if x &amp; 1, the enemy can take damage, else it cannot.</desc>
957 </op> 987 </op>
958 988
959 <op> 989 <op>
960 <num>106</num> 990 <num>106</num>
961 <name>play_sound</name> 991 <name>play_sound</name>
962 <params> 992 <params>
963 <param type="S"/> 993 <param type="S" values="5 to 9, 14, 16 to 18, 22, 24 to 27">
994 0 = crash,
995 1 = crash,
996 /11
997 </param>
964 </params> 998 </params>
965 <desc>Play a sound.</desc> 999 <desc>Play a sound.</desc>
966 </op> 1000 </op>
967 1001
968 <op> 1002 <op>
983 <desc>Specify the subroutine to call when the enemy is killed.</desc> 1017 <desc>Specify the subroutine to call when the enemy is killed.</desc>
984 </op> 1018 </op>
985 1019
986 <op> 1020 <op>
987 <num>109</num> 1021 <num>109</num>
988 <name></name> 1022 <name>memory_write_int32</name>
989 <params> 1023 <params>
990 <param type="S"/> 1024 <param type="S" name="value"/>
991 <param type="S" values="0"/> 1025 <param type="S" name="offset" values="0"/>
992 </params> 1026 </params>
993 <desc></desc> 1027 <desc>
1028 <pre>int32_t memory *= enemy->data;
1029 memory[offset] = value;</pre>
1030 <p>Eight variables (indexes 0 to 7) seems to be available, the following data is enemy state, with:<br/>
1031 9: x, 10: y, 11: z, 12: hitbox width, 13: hitbox height, 14: hitbox depth, ...<br/>
1032 TODO: see 0x00409532</p>
1033
1034 <p>This is used to set a sub to call once the MSG has finished.</p>
1035 </desc>
994 </op> 1036 </op>
995 1037
996 <op> 1038 <op>
997 <num>111</num> 1039 <num>111</num>
998 <name>set_life</name> 1040 <name>set_life</name>
999 <params> 1041 <params>
1000 <param type="S" name="life"/> 1042 <param type="S" name="life"/>
1001 </params> 1043 </params>
1002 <desc>equivalent to <ref>4</ref>(-10024, life).</desc> 1044 <desc>Equivalent to <ref>4</ref>(-10024, life).</desc>
1003 </op> 1045 </op>
1004 1046
1005 <op> 1047 <op>
1006 <num>112</num> 1048 <num>112</num>
1007 <name></name> 1049 <name>set_elapsed_time</name>
1008 <params> 1050 <params>
1009 <param type="S" values="0, 99999"/> 1051 <param type="S" name="time" unit="frames" values="0, 99999"/>
1010 </params> 1052 </params>
1011 <desc></desc> 1053 <desc>Equivalent to <ref>4</ref>(-10022, time).</desc>
1012 </op> 1054 </op>
1013 1055
1014 <op> 1056 <op>
1015 <num>113</num> 1057 <num>113</num>
1016 <name>set_boss_lower_life_limit</name> 1058 <name>set_boss_lower_life_limit</name>
1020 <desc>When enemy's life gets lower or equal to the limit, the callback set by <ref>114</ref> is called.</desc> 1062 <desc>When enemy's life gets lower or equal to the limit, the callback set by <ref>114</ref> is called.</desc>
1021 </op> 1063 </op>
1022 1064
1023 <op> 1065 <op>
1024 <num>114</num> 1066 <num>114</num>
1025 <name>set_boss_callback</name> 1067 <name>set_boss_life_callback</name>
1026 <params> 1068 <params>
1027 <param type="S" name="callback" unit="sub" values="9-68"/> 1069 <param type="S" name="callback" unit="sub" values="9-68"/>
1028 </params> 1070 </params>
1029 <desc>Specify the sub to call when the enemy's life gets below a certain amount set by a <ref>113</ref>.</desc> 1071 <desc>Specify the sub to call when the enemy's life gets below a certain amount set by a <ref>113</ref>.</desc>
1030 </op> 1072 </op>
1033 <num>115</num> 1075 <num>115</num>
1034 <name>set_timeout</name> 1076 <name>set_timeout</name>
1035 <params> 1077 <params>
1036 <param type="S" name="timeout" unit="frame"/> 1078 <param type="S" name="timeout" unit="frame"/>
1037 </params> 1079 </params>
1038 <desc>Sets the timeout of the current boss attack.</desc> 1080 <desc>Set the timeout of the current boss attack.</desc>
1039 </op> 1081 </op>
1040 1082
1041 <op> 1083 <op>
1042 <num>116</num> 1084 <num>116</num>
1043 <name></name> 1085 <name>set_timeout_callback</name>
1044 <params> 1086 <params>
1045 <param type="S"/> 1087 <param type="S" name="function" unit="sub" values="6 to 68"/>
1046 </params> 1088 </params>
1047 <desc>Doesn't seem to do anything. Tried to remove it, use 0, 1, 127, 1023, 1024, 4096 as an argument, nothing... ???</desc> 1089 <desc>Like <ref>114</ref>, but when timeouted.</desc>
1048 </op> 1090 </op>
1049 1091
1050 <op> 1092 <op>
1051 <num>117</num> 1093 <num>117</num>
1052 <name></name> 1094 <name>set_touchable</name>
1053 <params> 1095 <params>
1054 <param type="S"/> 1096 <param type="S" name="x" values="0, 1">Bitfield</param>
1055 </params> 1097 </params>
1056 <desc></desc> 1098 <desc>If 0, the player's attacks don't do anything to the enemy. RumiaA's homing attack is no more attracted by that enemy. <ref>96</ref> won’t kill it. 1 restores the usual comportment.</desc>
1057 </op> 1099 </op>
1058 1100
1059 <op> 1101 <op>
1060 <num>118</num> 1102 <num>118</num>
1061 <name></name> 1103 <name>quot_explosion_quot</name> <!-- TODO: find a better name. -->
1062 <params> 1104 <params>
1063 <param type="S"/> 1105 <param type="S" values="3, 4, 12, 17, 18"/>
1064 <param type="S"/> 1106 <param type="S" values="1, 2, 6"/>
1065 <param type="s"/> 1107 <param type="S" values="1, 0xffffffff, 0xffffff80, 0xffff8080, 0xff80ff80, 0xff8080ff"/>
1066 <param type="s"/> 1108 </params>
1067 </params> 1109 <desc>"Explosion" (dying boss), Meiling’s moves, and various graphical effects like that.</desc>
1068 <desc>TODO: "explosion" (dying boss).</desc>
1069 </op> 1110 </op>
1070 1111
1071 <op> 1112 <op>
1072 <num>119</num> 1113 <num>119</num>
1073 <name>drop_bonus</name> 1114 <name>drop_bonus</name>
1074 <params> 1115 <params>
1075 <param type="S" name="number" values="3, 4, 5, 6, 8, 10, 12, 20"/> 1116 <param type="S" name="number" values="3, 4, 5, 6, 8, 10, 12, 20"/>
1076 </params> 1117 </params>
1077 <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> 1118 <desc>Drop a certain number of bonus at the frame it is called, in a square around the enemy (TODO: check its dimensions). If the power is not max, drop power items, else drop point items.</desc>
1078 </op> 1119 </op>
1079 1120
1080 <op> 1121 <op>
1081 <num>120</num> 1122 <num>120</num>
1082 <name></name> 1123 <name>set_automatic_rotate</name>
1083 <params> 1124 <params>
1084 <param type="S"/> 1125 <param type="S" name="x" values="0, 1">Bitfield</param>
1085 </params> 1126 </params>
1086 <desc></desc> 1127 <desc>if x &amp; 1, rotate the sprite according to the angle of the enemy.</desc>
1087 </op> 1128 </op>
1088 1129
1089 <op> 1130 <op>
1090 <num>121</num> 1131 <num>121</num>
1091 <name></name> 1132 <name>call_special_function_with_param</name>
1092 <params> 1133 <params>
1093 <param type="S"/> 1134 <param type="S" name="function" values="0, 1, 3, 4, 7 to 9, 11 to 14, 16"/>
1094 <param type="S"/> 1135 <param type="S" name="param" values="0 to 3, 5, 6, 128"/>
1095 </params> 1136 </params>
1096 <desc></desc> 1137 <desc>
1138 <p>Call an hardcoded function in this list:</p>
1139 <table>
1140 <tr><th>Function</th><th>Description</th></tr>
1141 <tr><td>0</td><td>Freeze all the bullets in the screen if the parameter is 0, else unfreeze them. Do an explosion animation too.</td></tr>
1142 <tr><td>1</td><td>Launch a bullet immediately, with a launch_offset of [-param, param] for each coordinate.</td></tr>
1143 <tr><td>3</td><td>Do nothing?</td></tr>
1144 <tr><td>4</td><td>If 0, unfreeze time and do an explosion animation. If 1, freeze time for the player, the bullets, the texts, but let the ECL run normally, also do an explosion animation. Else do nothing.</td></tr>
1145 <tr><td>7</td><td>If 0, make a lasers web, and remove any previous. Else, a crapload of bullets directed towards the player (TODO: find their origin).</td></tr>
1146 <tr><td>8</td><td>Do nothing?</td></tr>
1147 <tr><td>9</td><td>Do an explosion animation.</td></tr>
1148 <tr><td>11</td><td>Do an explosion animation.</td></tr>
1149 <tr><td>12</td><td>Do nothing?</td></tr>
1150 <tr><td>13</td><td>Launch `param` bullets in circle towards the player with the launch point being the center of the screen.</td></tr>
1151 <tr><td>14</td><td>Do nothing?</td></tr>
1152 <tr><td>16</td><td>Do nothing?</td></tr>
1153 </table>
1154 </desc>
1097 </op> 1155 </op>
1098 1156
1099 <op> 1157 <op>
1100 <num>122</num> 1158 <num>122</num>
1101 <name></name> 1159 <name>call_special_function_without_param</name>
1102 <params> 1160 <params>
1103 <param type="S"/> 1161 <param type="S" name="function"/>
1104 </params> 1162 </params>
1105 <desc></desc> 1163 <desc>
1164 <p>Call an hardcoded function in this list:</p>
1165 <table>
1166 <tr><th>Function</th><th>Description</th></tr>
1167 <tr><td>-1</td><td>Stop</td></tr>
1168 <tr><td>2</td><td>Do nothing?</td></tr>
1169 <tr><td>5</td><td>Sakuya’s knives, each 12 frames.</td></tr>
1170 <tr><td>6</td><td>Some graphic animation.</td></tr>
1171 <tr><td>10</td><td>Some graphic animation.</td></tr>
1172 <tr><td>15</td><td>Some graphic animation.</td></tr>
1173 </table>
1174 </desc>
1106 </op> 1175 </op>
1107 1176
1108 <op> 1177 <op>
1109 <num>123</num> 1178 <num>123</num>
1110 <name></name> 1179 <name>skip_frames</name>
1111 <params> 1180 <params>
1112 <param type="S"/> 1181 <param type="S" name="number" unit="frames" var="can"/>
1113 </params> 1182 </params>
1114 <desc></desc> 1183 <desc>Skip a certain amount of frames, while keeping the current instruction pointer in place.</desc>
1115 </op> 1184 </op>
1116 1185
1117 <op> 1186 <op>
1118 <num>124</num> 1187 <num>124</num>
1119 <name></name> 1188 <name>drop_specific_bonus</name>
1120 <params> 1189 <params>
1121 <param type="S"/> 1190 <param type="S" name="type">0 = power, 1 = point, 2 = big power, 3 = bomb, 4 = full power, 5 = 1up, 6 = star bonus, greater drop nothing.</param>
1122 </params> 1191 </params>
1123 <desc></desc> 1192 <desc>Drop a bonus vertically. Can be called multiple times to drop more items, but they'll be superposed.</desc>
1124 </op> 1193 </op>
1125 1194
1126 <op> 1195 <op>
1127 <num>125</num> 1196 <num>125</num>
1128 <name></name> 1197 <name></name>
1140 1209
1141 <op> 1210 <op>
1142 <num>127</num> 1211 <num>127</num>
1143 <name></name> 1212 <name></name>
1144 <params> 1213 <params>
1145 <param type="S"/> 1214 <param type="S" var="can/must" values="integer variables"/>
1146 </params> 1215 </params>
1147 <desc></desc> 1216 <desc></desc>
1148 </op> 1217 </op>
1149 1218
1150 <op> 1219 <op>
1151 <num>128</num> 1220 <num>128</num>
1152 <name></name> 1221 <name>set_smooth_disappear</name>
1153 <params> 1222 <params>
1154 <param type="S"/> 1223 <param type="S" values="1">Bitfield</param>
1155 </params> 1224 </params>
1156 <desc></desc> 1225 <desc>If <code>x &amp; 1</code>, make the enemy sprite diseappear in a fade out now, not abruptly at <ref>1</ref>. TODO: check the duration.</desc>
1157 </op> 1226 </op>
1158 1227
1159 <op> 1228 <op>
1160 <num>129</num> 1229 <num>129</num>
1161 <name></name> 1230 <name></name>
1162 <params> 1231 <params>
1163 <param type="S"/> 1232 <param type="S" values="0">Bitfield?</param>
1164 <param type="S"/> 1233 <param type="S" values="1">Bitfield?</param>
1165 </params> 1234 </params>
1166 <desc></desc> 1235 <desc></desc>
1167 </op> 1236 </op>
1168 1237
1169 <op> 1238 <op>
1170 <num>130</num> 1239 <num>130</num>
1171 <name></name> 1240 <name></name>
1172 <params> 1241 <params>
1173 <param type="S"/> 1242 <param type="S" values="1">Bitfield?</param>
1174 </params> 1243 </params>
1175 <desc></desc> 1244 <desc></desc>
1176 </op> 1245 </op>
1177 1246
1178 <op> 1247 <op>
1179 <num>131</num> 1248 <num>131</num>
1180 <name></name> 1249 <name></name>
1181 <params> 1250 <params>
1182 <param type="f"/> 1251 <param type="f" values="-1.0f, -0.5f, -0.3f, 0.0f"/>
1183 <param type="f"/> 1252 <param type="f" values="0.0f, 0.3f, 0.8f, 1.0f"/>
1184 <param type="S"/> 1253 <param type="S" values="-3, -2, -1, 0"/>
1185 <param type="S"/> 1254 <param type="S" values="0, 2, 4, 5, 6"/>
1186 <param type="S"/> 1255 <param type="S" values="0"/>
1187 <param type="S"/> 1256 <param type="S" values="0"/>
1188 </params> 1257 </params>
1189 <desc></desc> 1258 <desc></desc>
1190 </op> 1259 </op>
1191 1260
1192 <op> 1261 <op>
1193 <num>132</num> 1262 <num>132</num>
1194 <name></name> 1263 <name>set_visible</name>
1195 <params> 1264 <params>
1196 <param type="S"/> 1265 <param type="S" values="0, 1">Bitfield</param>
1197 </params> 1266 </params>
1198 <desc></desc> 1267 <desc>If <code>x &amp; 1</code>, disable drawing of the sprite <strong>and</strong> destroy it. While it isn’t set to 0, loading a new sprite won’t make it reappear.</desc>
1199 </op> 1268 </op>
1200 1269
1201 <op> 1270 <op>
1202 <num>133</num> 1271 <num>133</num>
1203 <name></name> 1272 <name></name>
1204 <desc></desc> 1273 <desc>Do not influence on the game itself. TODO: what is its utility?</desc>
1205 </op> 1274 </op>
1206 1275
1207 <op> 1276 <op>
1208 <num>134</num> 1277 <num>134</num>
1209 <name></name> 1278 <name></name>
1210 <desc></desc> 1279 <desc>Do not influence on the game itself. TODO: what is its utility?</desc>
1211 </op> 1280 </op>
1212 1281
1213 <op> 1282 <op>
1214 <num>135</num> 1283 <num>135</num>
1215 <name></name> 1284 <name></name>
1216 <params> 1285 <params>
1217 <param type="S"/> 1286 <param type="S" values="0, 1">Bitfield</param>
1218 </params> 1287 </params>
1219 <desc></desc> 1288 <desc></desc>
1220 </op> 1289 </op>
1221 </opcodes> 1290 </opcodes>