comparison 06/ecl.xml @ 13:2925b0e246c6 default tip

Fix a lot of things, and add a TODO.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Fri, 17 Feb 2012 12:54:08 +0100
parents 79dfd9765a67
children
comparison
equal deleted inserted replaced
12:79dfd9765a67 13:2925b0e246c6
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>
5 <opcodes xmlns="urn:opcodes:description"> 4 <opcodes xmlns="urn:opcodes:description">
6 <title>ECL Sub format</title> 5 <title>ECL Sub format</title>
7 6
8 <text> 7 <text>
9 <div xmlns="http://www.w3.org/1999/xhtml"> 8 <div xmlns="http://www.w3.org/1999/xhtml">
48 <tr><th>Number</th><th>Type</th> <th>Name</th> <th>RW/RO</th> <th>Notes</th></tr> 47 <tr><th>Number</th><th>Type</th> <th>Name</th> <th>RW/RO</th> <th>Notes</th></tr>
49 <tr><td>-10013</td><td>int</td> <td>rank</td> <td>ro</td> <td></td></tr> 48 <tr><td>-10013</td><td>int</td> <td>rank</td> <td>ro</td> <td></td></tr>
50 <tr><td>-10014</td><td>int</td> <td>difficulty</td> <td>ro</td> <td>Unused.</td></tr> 49 <tr><td>-10014</td><td>int</td> <td>difficulty</td> <td>ro</td> <td>Unused.</td></tr>
51 <tr><td>-10015</td><td>float</td> <td>x</td> <td>rw</td> <td></td></tr> 50 <tr><td>-10015</td><td>float</td> <td>x</td> <td>rw</td> <td></td></tr>
52 <tr><td>-10016</td><td>float</td> <td>y</td> <td>rw</td> <td></td></tr> 51 <tr><td>-10016</td><td>float</td> <td>y</td> <td>rw</td> <td></td></tr>
53 <tr><td>-10017</td><td>float</td> <td>z</td> <td>rw</td> <td></td></tr> 52 <tr><td>-10017</td><td>float</td> <td>z</td> <td>rw</td> <td>Actually used by Flandre. Warning!</td></tr>
54 <tr><td>-10018</td><td>float</td> <td>player_x</td> <td>ro</td> <td></td></tr> 53 <tr><td>-10018</td><td>float</td> <td>player_x</td> <td>ro</td> <td></td></tr>
55 <tr><td>-10019</td><td>float</td> <td>player_y</td> <td>ro</td> <td></td></tr> 54 <tr><td>-10019</td><td>float</td> <td>player_y</td> <td>ro</td> <td></td></tr>
56 <tr><td>-10020</td><td>float</td> <td></td> <td>ro</td> <td>Unused.</td></tr> 55 <tr><td>-10020</td><td>float</td> <td></td> <td>ro</td> <td>Unused.</td></tr>
57 <tr><td>-10021</td><td>float</td> <td>enemy_player_angle</td> <td>ro</td> <td></td></tr> 56 <tr><td>-10021</td><td>float</td> <td>player_angle</td> <td>ro</td> <td></td></tr>
58 <tr><td>-10022</td><td>int</td> <td>last_frame</td> <td>rw</td> <td></td></tr> 57 <tr><td>-10022</td><td>int</td> <td>last_frame</td> <td>rw</td> <td></td></tr>
59 <tr><td>-10023</td><td>float</td> <td>enemy_player_distance</td><td>ro</td><td>Unused.</td></tr> 58 <tr><td>-10023</td><td>float</td> <td>player_distance</td><td>ro</td> <td>Unused.</td></tr>
60 <tr><td>-10024</td><td>int</td> <td>life</td> <td>rw</td> <td></td></tr> 59 <tr><td>-10024</td><td>int</td> <td>life</td> <td>rw</td> <td></td></tr>
61 <tr><td>-10025</td><td>int</td> <td>player</td> <td>ro</td> <td>0 = ReimuA, 1 = ReimuB, 2 = MarisaA, 3 = MarisaB</td></tr> 60 <tr><td>-10025</td><td>int</td> <td>player</td> <td>ro</td> <td>0 = ReimuA, 1 = ReimuB, 2 = MarisaA, 3 = MarisaB</td></tr>
62 </table> 61 </table>
63 62
64 <h2>Opcodes</h2> 63 <h2>Opcodes</h2>
335 <name>relative_jump_if_greater_than</name> 334 <name>relative_jump_if_greater_than</name>
336 <params> 335 <params>
337 <param type="S" name="new_frame" unit="frame" values="120"/> 336 <param type="S" name="new_frame" unit="frame" values="120"/>
338 <param type="S" name="relative_offset" unit="bytes" values="64"/> 337 <param type="S" name="relative_offset" unit="bytes" values="64"/>
339 </params> 338 </params>
340 <desc>Like <ref>2</ref> but only when the comparison register equals to 1. Used only one time in <stage>4</stage>.</desc> 339 <desc>Like <ref>2</ref> but only when the comparison register equals to 1.</desc>
341 </op> 340 </op>
342 341
343 <op> 342 <op>
344 <num>33</num> 343 <num>33</num>
345 <name>relative_jump_if_greater_or_equal</name> 344 <name>relative_jump_if_greater_or_equal</name>
443 <name>set_random_angle</name> 442 <name>set_random_angle</name>
444 <params> 443 <params>
445 <param type="f" name="min" unit="radian" values="0.7853982f"/> 444 <param type="f" name="min" unit="radian" values="0.7853982f"/>
446 <param type="f" name="max" unit="radian" values="2.3561945f"/> 445 <param type="f" name="max" unit="radian" values="2.3561945f"/>
447 </params> 446 </params>
448 <desc>Set the enemy angle in the [min, max-min) range. Used only five times, in <stage>2</stage>.</desc> 447 <desc>Set the enemy angle in the [min, max-min) range.</desc>
449 </op> 448 </op>
450 449
451 <op> 450 <op>
452 <num>50</num> 451 <num>50</num>
453 <name>set_random_angle_ex</name> 452 <name>set_random_angle_ex</name>
463 <name>set_speed_towards_player</name> 462 <name>set_speed_towards_player</name>
464 <params> 463 <params>
465 <param type="S" value="0">Ignored</param> 464 <param type="S" value="0">Ignored</param>
466 <param type="f" name="speed" unit="pixels/frame"/> 465 <param type="f" name="speed" unit="pixels/frame"/>
467 </params> 466 </params>
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> 467 <desc>Sets the speed of the enemy, and change its direction to where the player is at that frame.</desc>
469 </op> 468 </op>
470 469
471 <op> 470 <op>
472 <num>52</num> 471 <num>52</num>
473 <name>move_in_decel</name> 472 <name>move_in_decel</name>
486 <param type="S" name="duration" unit="frames"/> 485 <param type="S" name="duration" unit="frames"/>
487 <param type="f" name="x" unit="pixels"/> 486 <param type="f" name="x" unit="pixels"/>
488 <param type="f" name="y" unit="pixels"/> 487 <param type="f" name="y" unit="pixels"/>
489 <param type="f" name="z" unit="pixels" values="0.0f">Ignored</param> 488 <param type="f" name="z" unit="pixels" values="0.0f">Ignored</param>
490 </params> 489 </params>
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> 490 <desc>Move the enemy to the new position in `duration` amount of frames, using the <code>x↦x</code> function.</desc>
492 </op> 491 </op>
493 492
494 <op> 493 <op>
495 <num>57</num> 494 <num>57</num>
496 <name>move_to_decel</name> 495 <name>move_to_decel</name>
569 </op> 568 </op>
570 569
571 <op> 570 <op>
572 <num>68</num> 571 <num>68</num>
573 <name>set_bullet_attributes_to_the_right</name> 572 <name>set_bullet_attributes_to_the_right</name>
574 <params> 573 <params ref="67"/>
575 <param type="s"/>
576 <param type="s"/>
577 <param type="S"/>
578 <param type="S"/>
579 <param type="f"/>
580 <param type="f"/>
581 <param type="f"/>
582 <param type="f"/>
583 <param type="S"/>
584 </params>
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> 574 <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> 575 </op>
587 576
588 <op> 577 <op>
589 <num>69</num> 578 <num>69</num>
590 <name>set_bullet_attributes_towards_player_equally_distributed</name> 579 <name>set_bullet_attributes_towards_player_equally_distributed</name>
591 <params> 580 <params ref="67"/>
592 <param type="s"/>
593 <param type="s"/>
594 <param type="S"/>
595 <param type="S"/>
596 <param type="f"/>
597 <param type="f"/>
598 <param type="f"/>
599 <param type="f"/>
600 <param type="S"/>
601 </params>
602 <desc>Like <ref>67</ref>, except bullets of a shot are distributed equally all around the enemy, computing the angle by itself.</desc> 581 <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> 582 </op>
604 583
605 <op> 584 <op>
606 <num>70</num> 585 <num>70</num>
607 <name>set_bullet_attributes_to_the_right_equally_distributed</name> 586 <name>set_bullet_attributes_to_the_right_equally_distributed</name>
608 <params> 587 <params ref="67"/>
609 <param type="s"/>
610 <param type="s"/>
611 <param type="S"/>
612 <param type="S"/>
613 <param type="f"/>
614 <param type="f"/>
615 <param type="f"/>
616 <param type="f"/>
617 <param type="S"/>
618 </params>
619 <desc>Like <ref>68</ref>, except bullets of a shot are distributed equally all around the enemy, computing the angle by itself.</desc> 588 <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> 589 </op>
621 590
622 <op> 591 <op>
623 <num>71</num> 592 <num>71</num>
624 <name>set_bullet_attributes_towards_player_equally_distributed_and_rotated</name> 593 <name>set_bullet_attributes_towards_player_equally_distributed_and_rotated</name>
625 <params> 594 <params ref="67"/>
626 <param type="s"/>
627 <param type="s"/>
628 <param type="S"/>
629 <param type="S"/>
630 <param type="f"/>
631 <param type="f"/>
632 <param type="f" values="0.0f"/>
633 <param type="f" values="0.0f"/>
634 <param type="S"/>
635 </params>
636 <desc>Like <ref>69</ref>, but with a rotation of pi/bullets_per_shot.</desc> 595 <desc>Like <ref>69</ref>, but with a rotation of pi/bullets_per_shot.</desc>
637 </op> 596 </op>
638 597
639 <op> 598 <op>
640 <num>74</num> 599 <num>74</num>
641 <name>set_bullet_attributes_towards_player_randomly_distributed</name> 600 <name>set_bullet_attributes_towards_player_randomly_distributed</name>
642 <params> 601 <params ref="67"/>
643 <param type="s"/> 602 <desc>Like <ref>70</ref> but with some alea (?) in the angle.</desc>
644 <param type="s"/>
645 <param type="S"/>
646 <param type="S"/>
647 <param type="f"/>
648 <param type="f"/>
649 <param type="f" values="0.0f"/>
650 <param type="f" values="0.0f"/>
651 <param type="S"/>
652 </params>
653 <desc>Used only one time, in <stage>3</stage>. Like <ref>70</ref> but with some alea (?) in the angle.</desc>
654 </op> 603 </op>
655 604
656 <op> 605 <op>
657 <num>75</num> 606 <num>75</num>
658 <name>set_bullet_attributes_to_the_right_with_some_random_angle</name> 607 <name>set_bullet_attributes_to_the_right_with_some_random_angle</name>
659 <params> 608 <params ref="67"/>
660 <param type="s"/>
661 <param type="s"/>
662 <param type="S"/>
663 <param type="S"/>
664 <param type="f"/>
665 <param type="f"/>
666 <param type="f"/>
667 <param type="f"/>
668 <param type="S"/>
669 </params>
670 <desc>Like <ref>68</ref>, but with some random angle.</desc> 609 <desc>Like <ref>68</ref>, but with some random angle.</desc>
671 </op> 610 </op>
672 611
673 <op> 612 <op>
674 <num>76</num> 613 <num>76</num>
750 <dd>TODO: doesn't seem to change anything?</dd> 689 <dd>TODO: doesn't seem to change anything?</dd>
751 690
752 <dt>1024: <code><ref>82</ref>(int nb_bounces,,,, float speed,,,)</code></dt> 691 <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> 692 <dd>Bullets “bounce”, reentering the screen as soon as they leave it, with a new speed set.</dd>
754 <dt>2048:</dt> 693 <dt>2048:</dt>
755 <dd>Like 1024, except it only bounces when colliding with the left and right edges.</dd></dl></desc> 694 <dd>Like 1024, except it only bounces when colliding with the left, upper and right edges.</dd></dl></desc>
756 </op> 695 </op>
757 696
758 <op> 697 <op>
759 <num>83</num> 698 <num>83</num>
760 <name>change_bullets_in_star_bonus</name> 699 <name>change_bullets_in_star_bonus</name>
772 711
773 <op> 712 <op>
774 <num>85</num> 713 <num>85</num>
775 <name>laser</name> 714 <name>laser</name>
776 <params> 715 <params>
777 <param type="s"/> 716 <param type="s" name="laser_type" unit="script"/>
778 <param type="s"/> 717 <param type="s" name="sprite_index_offset" unit="script"/>
779 <param type="f" name="angle" unit="radian">clockwise, from the +x axis</param> 718 <param type="f" name="angle" unit="radian">clockwise</param>
780 <param type="S" name="speed" unit="pixels/frame">speed of the laser along its axis</param> 719 <param type="S" name="speed" unit="pixels/frame">speed of the laser along its axis</param>
781 <param type="f" name="start_offset" unit="pixels">offset along the laser axis, relative to the enemy. If negative, it is considered as 0.</param> 720 <param type="f" name="start_offset" unit="pixels">offset along the laser axis, relative to the enemy. If negative, it is considered as 0.</param>
782 <param type="f" name="end_offset" unit="pixels">offset along the laser axis, relative to the enemy. Can be negative. In case end_offset &lt; start_offset, the laser will be in the oposite direction.</param> 721 <param type="f" name="end_offset" unit="pixels">offset along the laser axis, relative to the enemy. Can be negative. In case end_offset &lt; start_offset, the laser will be in the oposite direction.</param>
783 <param type="f" name="length" unit="pixels">TODO: Not really a length, something really odd. The laser starts at max(start_offset, end_offset - length) and ends at end_offset.</param> 722 <param type="f" name="max_length" unit="pixels">TODO: Not really a length, something really odd. The laser starts at max(start_offset, end_offset - length) and ends at end_offset.</param>
784 <param type="f" name="width" unit="pixels"/> 723 <param type="f" name="width" unit="pixels"/>
785 <param type="S" name="start_duration" unit="frames"/> 724 <param type="S" name="start_duration" unit="frames"/>
786 <param type="S" name="duration" unit="frames"/> 725 <param type="S" name="duration" unit="frames"/>
787 <param type="S" name="stop_duration" unit="frames"/> 726 <param type="S" name="stop_duration" unit="frames"/>
788 <param type="S" name="grazing_dealy" unit="frames">how long to wait before allowing grazing</param> 727 <param type="S" name="grazing_dealy" unit="frames">how long to wait before allowing grazing</param>
793 </op> 732 </op>
794 733
795 <op> 734 <op>
796 <num>86</num> 735 <num>86</num>
797 <name>laser_towards_player</name> 736 <name>laser_towards_player</name>
798 <params> 737 <params ref="85"/>
799 <param type="s"/>
800 <param type="s"/>
801 <param type="f" name="angle" unit="radian">clockwise, from the enemy->player axis</param>
802 <param type="S" name="speed" unit="pixels/frame">speed of the laser along its axis</param>
803 <param type="f" name="start_offset" unit="pixels">offset along the laser axis, relative to the enemy. If negative, it is considered as 0.</param>
804 <param type="f" name="end_offset" unit="pixels">offset along the laser axis, relative to the enemy. Can be negative. In case end_offset &lt; start_offset, the laser will be in the oposite direction.</param>
805 <param type="f" name="length" unit="pixels">TODO: Not really a length, something really odd. The laser starts at max(start_offset, end_offset - length) and ends at end_offset.</param>
806 <param type="f" name="width" unit="pixels"/>
807 <param type="S" name="start_duration" unit="frames"/>
808 <param type="S" name="duration" unit="frames"/>
809 <param type="S" name="stop_duration" unit="frames"/>
810 <param type="S" name="grazing_dealy" unit="frames">how long to wait before allowing grazing</param>
811 <param type="S" name="grazing_extra_duration" unit="frames">how long to allow grazing after the laser started to disappear</param>
812 <param type="S" values="0"/>
813 </params>
814 <desc>Like <ref>85</ref>, with the default direction towards the player.</desc> 738 <desc>Like <ref>85</ref>, with the default direction towards the player.</desc>
815 </op> 739 </op>
816 740
817 <op> 741 <op>
818 <num>87</num> 742 <num>87</num>
833 <desc>Adds delta to the laser's angle.</desc> 757 <desc>Adds delta to the laser's angle.</desc>
834 </op> 758 </op>
835 759
836 <op> 760 <op>
837 <num>90</num> 761 <num>90</num>
838 <name></name> 762 <name>translate_laser</name>
839 <params> 763 <params>
840 <param type="S" values="0 to 3"/> 764 <param type="S" values="0 to 3" name="laser" unit="laser_id"/>
841 <param type="S" values="0">Perhaps a float?</param> 765 <param type="f" values="0.0f" name="x" unit="pixels"/>
842 <param type="S" values="0">Perhaps a float?</param> 766 <param type="f" values="0.0f" name="y" unit="pixels"/>
843 <param type="S" values="0">Perhaps a float?</param> 767 <param type="f" values="0.0f" name="z" unit="pixels">Ignored</param>
844 </params> 768 </params>
845 <desc>Used only in <stage>7</stage>.</desc> 769 <desc>Translate a laser with the current position of the launching enemy as origin, but don’t follow her after that.</desc>
846 </op> 770 </op>
847 771
848 <op> 772 <op>
849 <num>92</num> 773 <num>92</num>
850 <name></name> 774 <name>cancel_laser</name>
851 <params> 775 <params>
852 <param type="S" values="0 to 3"/> 776 <param type="S" values="0 to 3" name="laser" unit="laser_id"/>
853 </params> 777 </params>
854 <desc>Used only in <stage>7</stage>.</desc> 778 <desc>Cancel a laser before its normal duration.</desc>
855 </op> 779 </op>
856 780
857 <op> 781 <op>
858 <num>93</num> 782 <num>93</num>
859 <name>set_spellcard</name> 783 <name>set_spellcard</name>
860 <params> 784 <params>
861 <param type="s" value="0 to 3"/> 785 <param type="s" name="face" value="0 to 3">If greater than 3, it’s the character faces that are used.</param>
862 <param type="s" name="number">As in the captured spellcards screen, minus 1.</param> 786 <param type="s" name="number">As in the captured spellcards screen, minus 1.</param>
863 <param type="z" name="name">In SHIFT_JIS</param> 787 <param type="z" name="name">In SHIFT_JIS</param>
864 </params> 788 </params>
865 <desc></desc> 789 <desc>
790 <p>Start a spellcard and</p>
791 <ul>
792 <li>Display the name of the spellcard in the screen.</li>
793 <li>Change the background to the eff one.</li>
794 <li>Make the enemies more resistant or the attacks weaker. The damage caused by a bullet is reduced to 6 instead of 48.</li>
795 <li>Clear all the bullets and transform them in star bonus.</li>
796 </ul>
797 </desc>
866 </op> 798 </op>
867 799
868 <op> 800 <op>
869 <num>94</num> 801 <num>94</num>
870 <name>end_spellcard</name> 802 <name>end_spellcard</name>
871 <desc>Finish the current spellcard.</desc> 803 <desc>
804 <p>Finish the current spellcard and</p>
805 <ul>
806 <li>Remove its name.</li>
807 <li>Put back the normal background.</li>
808 <li>Return the damages to the normal.</li>
809 <li>Clear all the bullets and transform them in star bonus.</li>
810 </ul>
811 </desc>
872 </op> 812 </op>
873 813
874 <op> 814 <op>
875 <num>95</num> 815 <num>95</num>
876 <name>spawn_enemy</name> 816 <name>spawn_enemy</name>
879 <param type="f" name="x" unit="pixels" var="can" values="-10015.0f, -10005.0f, -32.0f to 416.0f"/> 819 <param type="f" name="x" unit="pixels" var="can" values="-10015.0f, -10005.0f, -32.0f to 416.0f"/>
880 <param type="f" name="y" unit="pixels" var="can" values="-10016.0f, -32.0f to 464.0f"/> 820 <param type="f" name="y" unit="pixels" var="can" values="-10016.0f, -32.0f to 464.0f"/>
881 <param type="f" name="z" unit="pixels" var="can" values="-10017.0f, -1.5707964f to 3.3379421f, 160.0f, 288.0f"/> 821 <param type="f" name="z" unit="pixels" var="can" values="-10017.0f, -1.5707964f to 3.3379421f, 160.0f, 288.0f"/>
882 <param type="s" name="resistance" values="-5536, 2 to 2000"/> 822 <param type="s" name="resistance" values="-5536, 2 to 2000"/>
883 <param type="s" name="drop_type" values="-2, 0, 1, 2"/> 823 <param type="s" name="drop_type" values="-2, 0, 1, 2"/>
884 <param type="s" name="unknown1" values="0, 10, 2000"/> 824 <param type="S" name="die_score" values="0, 10, 2000"/>
885 <param type="s" name="unknown2" values="0"/>
886 </params> 825 </params>
887 <desc>Spawns an enemy, see <a href="ecl.xhtml#enemy_sub">the main creation of an enemy</a>.</desc> 826 <desc>Spawns an enemy, see <a href="ecl.xhtml#enemy_sub">the main creation of an enemy</a>.</desc>
888 </op> 827 </op>
889 828
890 <op> 829 <op>
891 <num>96</num> 830 <num>96</num>
892 <name>kill_all_enemies</name> 831 <name>kill_all_enemies</name>
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> 832 <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>) or a boss (see <ref>101</ref>).</desc>
894 </op> 833 </op>
895 834
896 <op> 835 <op>
897 <num>97</num> 836 <num>97</num>
898 <name>set_enemy_anim</name> 837 <name>set_enemy_anim</name>
916 <desc>Give a set of animations for a boss deplacements.</desc> 855 <desc>Give a set of animations for a boss deplacements.</desc>
917 </op> 856 </op>
918 857
919 <op> 858 <op>
920 <num>99</num> 859 <num>99</num>
921 <name></name> 860 <name>set_aux_anim</name>
922 <params> 861 <params>
923 <param type="S" values="0, 4"/> 862 <param type="S" name="number" values="0, 4"/>
924 <param type="S" values="16 to 18, 66"/> 863 <param type="S" name="animation" unit="script" values="16 to 18, 66"/>
925 </params> 864 </params>
926 <desc></desc> 865 <desc>Add an auxiliary animation (up to 8) with always the same coordinates as the enemy.</desc>
927 </op> 866 </op>
928 867
929 <op> 868 <op>
930 <num>100</num> 869 <num>100</num>
931 <name>set_death_anim</name> 870 <name>set_death_anim</name>
937 876
938 <op> 877 <op>
939 <num>101</num> 878 <num>101</num>
940 <name>set_boss_mode</name> 879 <name>set_boss_mode</name>
941 <params> 880 <params>
942 <param type="S" values="-1, 0">Unknown meaning, seems to be 0 for mid-boss and -1 for real boss.</param> 881 <param type="S" name="x" values="-1, 0">0 is activate, -1 is deactivate.</param>
943 </params> 882 </params>
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> 883 <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> (TODO: really?). If there are multiple boss, spawned by a <ref>95</ref>, only the last one has her life displayed, but standard enemies are blocked only until any of them is killed.</desc>
945 </op> 884 </op>
946 885
947 <op> 886 <op>
948 <num>102</num> 887 <num>102</num>
949 <name>create_squares</name> 888 <name>create_squares</name>
1003 <num>107</num> 942 <num>107</num>
1004 <name>set_death_flags</name> 943 <name>set_death_flags</name>
1005 <params> 944 <params>
1006 <param type="S"/> 945 <param type="S"/>
1007 </params> 946 </params>
1008 <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> 947 <desc>
948 <p>Control what to do when life falls to zero, only in the [0, 7] interval:</p>
949 <p>0 = normal;<br/>
950 1 = die once and unset touchable/collidable;<br/>
951 2 = die in loop (drop an item each time, start a new die animation), but keep being here, touchable/collidable;<br/>
952 3 = die once and keep being touchable/collidable if killed by the normal attack, else die as in normal (with a bomb, a collision, a <ref>96</ref>…), even after dying once from a normal attack;<br/>
953 4-7 (unused) = die in loop, with lot of sparks, but don't drop bonus.</p>
954 </desc>
1009 </op> 955 </op>
1010 956
1011 <op> 957 <op>
1012 <num>108</num> 958 <num>108</num>
1013 <name>call_when_killed</name> 959 <name>call_when_killed</name>
1014 <params> 960 <params>
1015 <param type="S" name="function" unit="sub"/> 961 <param type="S" name="function" unit="sub"/>
1016 </params> 962 </params>
1017 <desc>Specify the subroutine to call when the enemy is killed.</desc> 963 <desc>Specify the subroutine to call when the enemy is killed. Only if the death flag is not null.</desc>
1018 </op> 964 </op>
1019 965
1020 <op> 966 <op>
1021 <num>109</num> 967 <num>109</num>
1022 <name>memory_write_int32</name> 968 <name>memory_write_int32</name>
1138 <p>Call an hardcoded function in this list:</p> 1084 <p>Call an hardcoded function in this list:</p>
1139 <table> 1085 <table>
1140 <tr><th>Function</th><th>Description</th></tr> 1086 <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> 1087 <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> 1088 <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> 1089 <tr><td>3</td><td>Change the -10002, -10003 and -10004 variables according to the character. [0, 3, 1] for ReimuA, [2, 3, 4] for ReimuB, [1, 4, 0] for MarisaA and [4, 2, 3] for MarisaB. Used to choose the dual-sign spellcards of Patchouli. The parameter is unused.</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> 1090 <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> 1091 <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> 1092 <tr><td>8</td><td>Do nothing?</td></tr>
1147 <tr><td>9</td><td>Do an explosion animation.</td></tr> 1093 <tr><td>9</td><td>Do an explosion animation.</td></tr>
1148 <tr><td>11</td><td>Do an explosion animation.</td></tr> 1094 <tr><td>11</td><td>Do an explosion animation.</td></tr>
1149 <tr><td>12</td><td>Do nothing?</td></tr> 1095 <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> 1096 <tr><td>13</td><td>Fire `param` times the configured attack in circle, as if the enemy was at the center of the screen with:<ul>
1097 <li>-10006 that overrides the launch_angle set in 67-75;</li>
1098 <li>-10007 the rotation of the launch points with the center of the screen as origin;</li>
1099 <li>-10008 the distance between the center of the screen and the launch points.</li></ul>Seems to be launched only each 6 frames, even if the call is each frame.</td></tr>
1151 <tr><td>14</td><td>Do nothing?</td></tr> 1100 <tr><td>14</td><td>Do nothing?</td></tr>
1152 <tr><td>16</td><td>Do nothing?</td></tr> 1101 <tr><td>16</td><td>Used in QED: Ripples of 495 Years and probably do a temporization and modify launch_offset.</td></tr>
1153 </table> 1102 </table>
1154 </desc> 1103 </desc>
1155 </op> 1104 </op>
1156 1105
1157 <op> 1106 <op>
1165 <table> 1114 <table>
1166 <tr><th>Function</th><th>Description</th></tr> 1115 <tr><th>Function</th><th>Description</th></tr>
1167 <tr><td>-1</td><td>Stop</td></tr> 1116 <tr><td>-1</td><td>Stop</td></tr>
1168 <tr><td>2</td><td>Do nothing?</td></tr> 1117 <tr><td>2</td><td>Do nothing?</td></tr>
1169 <tr><td>5</td><td>Sakuya’s knives, each 12 frames.</td></tr> 1118 <tr><td>5</td><td>Sakuya’s knives, each 12 frames.</td></tr>
1170 <tr><td>6</td><td>Some graphic animation.</td></tr> 1119 <tr><td>6</td><td>Add a wings flapping animation. Used by the Scarlet sisters.</td></tr>
1171 <tr><td>10</td><td>Some graphic animation.</td></tr> 1120 <tr><td>10</td><td>Some graphic animation.</td></tr>
1172 <tr><td>15</td><td>Some graphic animation.</td></tr> 1121 <tr><td>15</td><td>The bullets 6, 7, 8 and 9 push the 1, 2, 3, 4 and 5 bullets. Also do some graphic animation.</td></tr>
1173 </table> 1122 </table>
1174 </desc> 1123 </desc>
1175 </op> 1124 </op>
1176 1125
1177 <op> 1126 <op>
1185 1134
1186 <op> 1135 <op>
1187 <num>124</num> 1136 <num>124</num>
1188 <name>drop_specific_bonus</name> 1137 <name>drop_specific_bonus</name>
1189 <params> 1138 <params>
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> 1139 <param type="S" name="type" var="no">0 = power, 1 = point, 2 = big power, 3 = bomb, 4 = full power, 5 = 1up, 6 = star bonus, greater drop nothing.</param>
1191 </params> 1140 </params>
1192 <desc>Drop a bonus vertically. Can be called multiple times to drop more items, but they'll be superposed.</desc> 1141 <desc>Drop a bonus vertically. Can be called multiple times to drop more items, but they'll be superposed.</desc>
1193 </op> 1142 </op>
1194 1143
1195 <op> 1144 <op>
1216 <desc></desc> 1165 <desc></desc>
1217 </op> 1166 </op>
1218 1167
1219 <op> 1168 <op>
1220 <num>128</num> 1169 <num>128</num>
1221 <name>set_smooth_disappear</name> 1170 <name>interrupt_anm</name>
1222 <params> 1171 <params>
1223 <param type="S" values="1">Bitfield</param> 1172 <param type="S" name="interruption" values="1"/>
1224 </params> 1173 </params>
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> 1174 <desc>Send this interruption to the anm.</desc>
1226 </op> 1175 </op>
1227 1176
1228 <op> 1177 <op>
1229 <num>129</num> 1178 <num>129</num>
1230 <name></name> 1179 <name></name>
1244 <desc></desc> 1193 <desc></desc>
1245 </op> 1194 </op>
1246 1195
1247 <op> 1196 <op>
1248 <num>131</num> 1197 <num>131</num>
1249 <name></name> 1198 <name>set_difficulty_influence</name>
1250 <params> 1199 <params>
1251 <param type="f" values="-1.0f, -0.5f, -0.3f, 0.0f"/> 1200 <param type="f" name="speed_low" values="-1.0f, -0.5f, -0.3f, 0.0f"/>
1252 <param type="f" values="0.0f, 0.3f, 0.8f, 1.0f"/> 1201 <param type="f" name="speed_high" values="0.0f, 0.3f, 0.8f, 1.0f"/>
1253 <param type="S" values="-3, -2, -1, 0"/> 1202 <param type="S" name="delay_low" values="-3, -2, -1, 0"/>
1254 <param type="S" values="0, 2, 4, 5, 6"/> 1203 <param type="S" name="delay_high" values="0, 2, 4, 5, 6"/>
1255 <param type="S" values="0"/> 1204 <param type="S" name="shots_low" values="0"/>
1256 <param type="S" values="0"/> 1205 <param type="S" name="shots_high" values="0"/>
1257 </params> 1206 </params>
1258 <desc></desc> 1207 <desc>Change the influence of the difficulty on the attacks. The defaults are (-0.5f, 0.5f, 0, 0, 0, 0).</desc>
1259 </op> 1208 </op>
1260 1209
1261 <op> 1210 <op>
1262 <num>132</num> 1211 <num>132</num>
1263 <name>set_visible</name> 1212 <name>set_invisible</name>
1264 <params> 1213 <params>
1265 <param type="S" values="0, 1">Bitfield</param> 1214 <param type="S" values="0, 1">Bitfield</param>
1266 </params> 1215 </params>
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> 1216 <desc><div xmlns="http://www.w3.org/1999/xhtml">
1217 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.
1218 </div></desc>
1268 </op> 1219 </op>
1269 1220
1270 <op> 1221 <op>
1271 <num>133</num> 1222 <num>133</num>
1272 <name></name> 1223 <name></name>
1279 <desc>Do not influence on the game itself. TODO: what is its utility?</desc> 1230 <desc>Do not influence on the game itself. TODO: what is its utility?</desc>
1280 </op> 1231 </op>
1281 1232
1282 <op> 1233 <op>
1283 <num>135</num> 1234 <num>135</num>
1284 <name></name> 1235 <name>enable_spellcard_bonus</name>
1285 <params> 1236 <params>
1286 <param type="S" values="0, 1">Bitfield</param> 1237 <param type="S" values="0, 1">Bitfield</param>
1287 </params> 1238 </params>
1288 <desc></desc> 1239 <desc>If <code>x &amp; 1</code>, FIXME. Enabled is the default.</desc>
1289 </op> 1240 </op>
1290 </opcodes> 1241 </opcodes>