# HG changeset patch # User Emmanuel Gil Peyrot # Date 1311886628 -7200 # Node ID f82309a9465ed8a89a9fcb51933d2e2709e341e9 Initial commit. diff --git a/06/ecl.xml b/06/ecl.xml new file mode 100644 --- /dev/null +++ b/06/ecl.xml @@ -0,0 +1,1161 @@ + + + + + + ECL opcodes + + + 0 + return + Returns from the current function. + + + + 1 + return + + + + Always at the end of the function. Often after a very long amount of time, like 10000 frames. + + + + 2 + + + + + + + + + + 3 + + + + + + + + + + + 4 + + + + + + + + + + 5 + + + + + + + + + + 6 + + + + + + + + + + 8 + + + + + + + + + + 9 + + + + + + + + + + + 10 + + + + + Used only one time, in 2. + + + + 13 + + + + + + + + + + + 14 + + + + + + + + + + + 15 + + + + + + + + + + + 16 + + + + + + + + + + + 17 + + + + + + + + + + + 18 + + + + + + + + + 20 + + + + + + + + + + + 21 + + + + + + + + + + + 23 + + + + + + + + + + + 25 + + + + + + + + + + + + + 26 + + + + + + + + + 27 + + + + + + + + + + 28 + + + + + + + + + + 29 + + + + + + + + + + 30 + + + + + + + + + + 31 + + + + + + + + + + 32 + + + + + + Used only one time in 4 + + + + 33 + + + + + + + + + + 34 + + + + + + + + + + 35 + + + + + + + + + + + 36 + return + Almost always called at the end of the function. See stage3 for two times where it is called before 1. + + + + 39 + + + + + + + + + + + + + 43 + + + + + + + + + + + 45 + set_angle_speed + + Angle in radians, 0.0f is left, PI/2 is down. + Speed in pixels per frame. + + Set the angular trajectory and speed of the enemy. + + + + 46 + set_angle + + The new angle, in radians. + + Change the angular trajectory of the enemy. It continues to turn until this function is called again. + + + + 47 + set_speed + + The new speed. + + Change the speed of the enemy. + + + + 48 + set_acceleration + + New step. + + Change the speed of the enemy step by step, at each frame. + + + + 49 + + + The new angle?. + Some deplacement?. + + Used only five times, in 2. + + + + 50 + + + + + + + + + + 51 + + + + + + Used only one time in 2 + + + + 52 + + + + + + + + + + + 56 + + + + + + + + Used only two times in 7 + + + + 57 + + + + + + + + + + + + 59 + + + + + + + + + + + + 61 + + + + + + + + + 63 + + + + + + + + + 65 + + + + + + + + + + + + 66 + + + + + + 67 + set_bullet_attributes + + Bullet sprite. + Launch sprite. + Number of bullets per salvo. + Number of salvos. + Speed. + Speed2?. + Launch angle. + Angle between two bullets of a same salvo. + (>= 64, freezed). + + Modify the attributes of the next enemy attack + + + + 68 + + + + + + + + + + + + + Supposedly the same as 67. + + + + 69 + + + + + + + + + + + + + + + + + 70 + + + + + + + + + + + + + + + + + 71 + + + + + + + + + + + + + + + + + 74 + + + + + + + + + + + + + Used only one time, in 3. + + + + 75 + + + + + + + + + + + + + + + + + 76 + + + + + + + + + 77 + bullet_interval + + In frames. + + Time between two salvos. + + + + 78 + + Seems related to attacks, but removing them doesn't change anything... + + + + 79 + + Seems related to attacks, but removing them doesn't change anything... + + + + 81 + bullet_launch_offset + + x offset. + y offset. + + + Change the offset of the launch of bullets. + + + + 82 + + + + + + + + + + + + + + + + 83 + + + + + + 84 + + + + + + + + + 85 + + + + + + + + + + + + + + + + + + + + + + 86 + + + + + + + + + + + + + + + + + + + + + + 87 + + + + + + + + + 88 + + + + + + + + + + 90 + + + + + + + + Used only one time, in 7. + + + + 92 + + + + + + + + + 93 + set_spellcard + + + The number of the spellcard, as it will be counted in the captured spellcards. + The name of the spellcard, in SHIFT_JIS. + + + + + + 94 + + + + + + 95 + + + + + + + + + + + + + + + 96 + + + + + + 97 + set_enemy_sprite + + Sprite number. + + Set a sprite (taken from current anm) for the enemy. + + + + 98 + + + + + + + + + + + + + 99 + + + + + + + + + + 100 + set_death_anim + + In fact, any 256n+[0-2] works and is the same; other values make the program crash. + + When the enemy is destroyed, the animation used. + + + + 101 + + + + + + + + + 102 + + + + + + + + + + + + + 103 + set_enemy + + Size of the enemy hitbox. + + + + The two last parameters are unknown + + + + 104 + + + + + + + + + 105 + + + + + + + + + 106 + + + + + + + + + 107 + + + + + + + + + 108 + + + + + + + + + 109 + + + + + + + + + + 111 + + + + + + + + + 112 + + + + + + + + + 113 + + + + + + + + + 114 + + + + + + + + + 115 + + + + + + + + + 116 + + + + + + + + + 117 + + + + + + + + + 118 + + + + + + + + + + + + 119 + + + + + + + + + 120 + + + + + + + + + 121 + + + + + + + + + + 122 + + + + + + + + + 123 + + + + + + + + + 124 + + + + + + + + + 125 + + + + + + 126 + + + + + + + + + 127 + + + + + + + + + 128 + + + + + + + + + 129 + + + + + + + + + + 130 + + + + + + + + + 131 + + + + + + + + + + + + + + 132 + + + + + + + + + 133 + + + + + + 134 + + + + + + 135 + + + + + + + diff --git a/06/msg.xml b/06/msg.xml new file mode 100644 --- /dev/null +++ b/06/msg.xml @@ -0,0 +1,131 @@ + + + + + + MSG opcodes + + + 0 + + + + + + 1 + + + + + + + + + + 2 + change_face + + Affected girl (0 is left, 1 is right) + Sprite to use. + + + + + + 3 + display + + Girl speaking (0 is left, 1 is right) + Line to which display. + The text to display. + + Displays a line of text. + + + + 4 + pause + + Number of frames to wait. + + Wait for the user to provide an input, or timeout. + + + + 5 + switch + + Affected girl (0 is left, 1 is right) + Animation to use (0=?; 1=appear; 2=unused (leave too?); 3=front; 4=back; 5=leave) + + Makes one of the two girls come to or leave the screen. + + + + 6 + appear_enemy + Makes the enemy sprite come in the game area. + + + + 7 + music + + Music number. + + Plays the selected music. + + + + 8 + display2 + + Girl speaking (0 is left, 1 is right) + Line to which display. + The text to display. + + Displays a line of text on a character. Always used to introduce her. + + + + 9 + + + + + + + + + 10 + + + + + + 11 + next_level + Close the score panel and launch the next level. + + + + 12 + + + + + + 13 + + + + + + + + + 14 + + + + diff --git a/06/std.xhtml b/06/std.xhtml new file mode 100644 --- /dev/null +++ b/06/std.xhtml @@ -0,0 +1,34 @@ + + + + + STD format + + +

STD format

+

All integers are little endian, all number are hex.

+ +

Header

+
+0 - 2 - 
+2 - 2 - 
+4 - 4 - Size of something
+8 - 2 - 
+a - 6 - Always zero
+10 - 80 - Name of the stage
+90 - 80 - Name of the first song
+110 - 80 - Name of the second song
+190 - 80 - A string of only a single whitespace
+210 - 80 - A string of only a single whitespace
+290 - 80 - path to the first song (as midi)
+310 - 80 - path to the second song (as midi)
+390 - 80 - A string of only a single whitespace
+410 - 80 - A string of only a single whitespace
+490 - ... - The real data
+ +

Data

+
+0 - ... - ...
+
+ + diff --git a/10/ecl.xml b/10/ecl.xml new file mode 100644 --- /dev/null +++ b/10/ecl.xml @@ -0,0 +1,1227 @@ + + + + + + ECL opcodes + + + 0 + + + + 1 + return + A return instruction. + + + + 10 + return + A return instruction. + + + + 11 + + Subroutine name. + Optional parameters. + + +

Calls a subroutine and passes it a number of parameters.

+

The parameters have a special representation in the data files: a type indicator, and then the data value. The data value can be either an integer or a float. The type indicator can indicate three things,

+
    +
  1. That the data is of float type. (0x6666)
  2. +
  3. That the data is of integer type, but is used as a float type. (0x6669)
  4. +
  5. That the data is of integer type. (0x6969)
  6. +
+

In the current syntax this is represented by prefixing the data with either (int) or (float).

+

The parameters seem to end up on the stack of the called subroutine.

+
+
+ + + 12 + + Relative jump offset. + New time value. + + +

Jumps to another instruction. The offset is calculated by subtracting the location of the current instruction from the location of the target instruction. Labels can be used to calculate this automatically.

+

The current time is also changed.

+
+
+ + + 13 + + Relative jump offset. + New time value. + + Jumps when the top of the arithmetic stack is equal to 0. Refer to 12. + + + + 14 + + Relative jump offset. + New time value. + + +

Jumps when the top of the arithmetic stack is not equal to 0.

+

Refer to 12.

+
+
+ + + 15 + + + + + Refer to 11. + + + + 16 + + Subroutine name. + Index. + + Runs a subroutine in the background and assigns it the given slot. + + + + 17 + + Index. + + Terminates a subroutine launched with 16. + + + + 21 + + + + 40 + + Stack size. + + Sets up the stack which is used for local variables and passed parameters. The stack size should be a multiple of four. + + + + 42 + + Value. + + Pushes a value onto the arithmetic stack. + + + + 43 + + Stack offset. + + Stores the value at the top of the arithmetic stack at the given stack offset. + + + + 44 + + + + Pushes a value onto the arithmetic stack. Might be intended for floats. + + + + 45 + + + + Stores the value at the top of the arithmetic stack at the given stack offset. Might be intended for floats. + + + + 50 + Addition operator. + + + + 51 + Addition operator. Might be intended for floats. + + + + 52 + Subtraction operator. + + + + 53 + Subtraction operator. Might be intended for floats. + + + + 54 + Multiplication operator. + + + + 55 + Multiplication operator. Might be intended for floats. + + + + 56 + Division operator. + + + + 57 + Division operator. Might be intended for floats. + + + + 58 + Modulo operator. + + + + 59 + Equality operator. + + + + 61 + Inequality operator. + + + + 63 + Less-than operator. + + + + 64 + Less-than operator. Might be intended for floats. + + + + 65 + Less-than-or-equal-to operator. + + + + 67 + Greater-than operator. + + + + 68 + Greater-than operator. Might be intended for floats. + + + + 69 + Greater-than-or-equal-to operator. + + + + 70 + Greater-than-or-equal-to operator. Might be intended for floats. + + + + 71 + Boolean not operator. + + + + 73 + Boolean or operator. + + + + 74 + Boolean and operator. + + + + 78 + + Stack offset. + + Decrements the value passed and pushes its old value onto the arithmetic stack. + + + + 79 +

Takes no parameters.

+
+ + + 81 + + + + + + + + + + + 82 + + + + + + + + 83 + + Time to wait. + + Wait the the specified time before continuing. + + + + 85 + + + + 256 + + Subroutine name. + Starting x position. + Starting y position. + Hit points. + Score reward. + Item dropped when destroyed. + + +

Create an "object", i.e. an enemy or something that can move around. The subroutine is called to set up and control the object.

+

Items dropped (0 for nothing):

+
    +
  1. Small powerup.
  2. +
  3. Point item.
  4. +
  5. Large green star.
  6. +
  7. Large powerup.
  8. +
  9. Full-score point item.
  10. +
  11. Full-power powerup.
  12. +
  13. 1-up.
  14. +
  15. An autocollecting yellow orb.
  16. +
  17. Small green star.
  18. +
+
+
+ + + 257 + + + + + + + + + No differences from 256 have been observed. + + + + 258 + + ANM include index. + + Selects which ANM file to use for further animation operations. 1 refers to the first file listed, and 2 to the second. 0 appears to have some special meaning. + + + + 259 + + ? + Animation index. + + +

Selects an animation for an object. The animation indices are listed in the ANM files, and contain their own animation script.

+

The first parameter might allow for attaching several sprites to an object.

+
+
+ + + 260 + + + + + + + + + No differences from 256 have been observed. + + + + 261 + + + + + + + + + No differences from 256 have been observed. + + + + 262 + + + + + Similar to 257. + + + + 263 + + + + + + + + + 264 + + + + + + + + + 265 + + + + + + + + + No differences from 256 have been observed. + + + + 266 + + + + + + + + + No differences from 256 have been observed. + + + + 267 + + + + + + + + + No differences from 256 have been observed. + + + + 268 + + + + + + + + + No differences from 256 have been observed. + + + + 269 + + + + Related to animation. + + + + 270 + + + + + + + + + + Similar to 256. Adds a third float parameter. + + + + 272 + + + + + + + + + 273 + + + + + + + + + + 280 + + Target x position. + Target y position. + + Instantly moves an object to the specified position. + + + + 281 + + Move duration. + Movement mode. + Target x position. + Target y position. + + +

Moves the object to the specified position in the specified time.

+

The movement mode controls how the object moves to the target position, but the time it takes is the same. 0 is normal movement, 1 accelerates and stops suddenly, 4 moves in an interpolated manner.

+
+
+ + + 282 + + + + + + + + + 283 + + + + + + + + + + + 284 + + Direction. + Speed. + + Sets movement direction and speed for an object. The speed might be pixels per frame. + + + + 285 + + + + + + + Similar to 285. Maybe it is used to change from one movement to another. + + + + 286 + + + + + + + + + 287 + + + + + + + + + + + 288 + + + + + + + + + + + 290 + + + + + + + + + + + 291 + + + + + + + + + + + + + 292 + + + + + + + + + + 294 + + + + 296 + + + + + + + + + + 298 + + + + + + + + + 299 + + + + + + + + + 320 + + Hitbox width. + Hidbox height. + + Sets up a hitbox for an object. It is not disabled by setting both parameters to 0.0f. + + + + 321 + + Killbox width. + Killbox height. + + Sets up a killbox (the area which kills the player) for an object. It can be disabled by setting both parameters to 0.0f. + + + + 322 + + + + Appears to set flags for objects, such as if it has a hitbox or not. + + + + 323 + + + + + + + + 324 + + + + + + + + + + + 325 + Related to item drops. + + + + 326 + Clears the list of items to be dropped. + + + + 327 + + Item. + Count. + + Sets up which items (256) are dropped when this object is defeated (in addition to the one specified by the creation instruction). Can be called several times for more items. + + + + 328 + + Width. + Height. + + Sets up an area in which items are dropped. + + + + 329 + Drops all loaded items. + + + + 330 + + + + + + + + 331 + + Hit points. + + Changes the hit points of an object. + + + + 332 + + Flag. + + Enables or disables "boss mode" (hit point bar, and name display). Enabled with 0 and disabled with -1. + + + + 333 + + + + 334 + + + + Time. + Subroutine name. + + Sets up a condition for a boss. For example the specified subroutine can be called after a period of time has passed. It can also be used for hit points. + + + + 335 + + Invulnerability duration. + + Makes the object invulnerable for the specified period of time. + + + + 336 + + + + + + + + 337 + + + + + + + + + + 338 + + Dialogue index. + + Initiates dialogue. The first dialogue has index 0. + + + + 339 + + + + 340 + + + + 341 + + + + + + + + + 342 + + Spell card number. + Spell card bonus timer. + + Spell card name. + + Set up a spell card. One is added to the spell card number to get the number displayed in-game. + + + + 343 + + + + 344 + + + + + + + + 345 + + + + 346 + + + + + + + + 347 + + + + + + + + + + 355 + + + + + + + + + + + + 356 + + + + + + + + + + + + 357 + + + + + + + No differences from 342 have been observed. + + + + 359 + + + + + + + No differences from 342 have been observed. + + + + 360 + + Number of spell card stars. + + Sets the number of spell cards remaining, as indicated by a series of stars. Requires boss mode (332) for the stars to show up. + + + + 361 + + + + + + + + 362 + + + + 363 + + + + 364 + + + + + + + + 365 + + + + 366 + + Flag. + Animation index. + + Enables or disables bomb-invulnerability for an object. Set the flag to 1 to enable or 0 to disable it. The object's animation is changed as specified for the duration of the bomb. + + + + 367 + + + + + + + + 368 + + + + + + + + + + + 400 + + Bullet type. + + Might initialize a new bullet type. Eight different bullet types have been observed. + + + + 401 + + Bullet type. + + Fires a bullet of the specified type. + + + + 402 + + Bullet type. + + + + Sets the bullet type appearance. + + + + 403 + + Bullet type. + x offset. + y offset. + + Makes bullets spawn in a position offset from the object which fires them. + + + + 404 + + + + + + + + + + 405 + + + + + + + + + + 406 + + Bullet type. + Bullet count. + Extra bullets. + + The bullet count parameter can be used to fire walls or circles of bullets The extra parameter fires additional bullets, each at half the speed of the previous. + + + + 407 + + + + + + + + + 409 + + Bullet type. + + + + + + + + + Might set up random bullet attributes. + + + + 410 + + + + 411 + + + + + + + + + 412 + + + + + + + + + + + + + + + 413 + + + + + + + + + + + + + + + + + + + 420 + + + + + + + + 421 + + + + + + + + 425 + + + + + + + + + + + + + + 428 + + + + + + + + + + + + + + + 431 + + + + + + + + + + + + + + + 433 + + + + + + + + + + + + + + + 435 + + + + + + + + + + + + + + + + 436 + + + + + + + + + + + + + +
diff --git a/html.xsl b/html.xsl new file mode 100644 --- /dev/null +++ b/html.xsl @@ -0,0 +1,132 @@ + + + + + + + type="text/css" href="../style.css" + + + <x:value-of select="o:title"/> + + +

+ + + + +
+ + +
+
+ + +

+ + + - + +

+ + + + + + +

Takes no parameters.

+
+
+ +

+
+ + + + + + + + + + +
TypeDescriptionValuesRange
+
+ + + + + + + + + + + + to + + + + + + + int8 + int16 + int32 + uint8 + uint16 + uint32 + float + double + string + data + + + + + + + + + + +

+
+
+
+ + +

+
+ + + + + + + + + + +
+
+ + +
+
+ + +
  • +
    + + + stage + + + + instruction + +
    diff --git a/index.xhtml b/index.xhtml new file mode 100644 --- /dev/null +++ b/index.xhtml @@ -0,0 +1,31 @@ + + + + + Touhou + + +

    Touhou

    +

    Embodiment of Scarlet Devil

    +

    Formats

    + +

    Opcodes

    + + +

    Mountain of Faith

    + + +

    Subterranean Animism

    + + + diff --git a/style.css b/style.css new file mode 100644 --- /dev/null +++ b/style.css @@ -0,0 +1,12 @@ +body { + font-size: 0.9em; +} + +table { + border-collapse: collapse; +} + +th, td { + border: 2px solid #ccc; + padding: 4px; +}