Mercurial > touhou-doc
comparison 06/t6rp.xhtml @ 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 | 9f0e37b7eeab |
children |
comparison
equal
deleted
inserted
replaced
12:79dfd9765a67 | 13:2925b0e246c6 |
---|---|
7 </head> | 7 </head> |
8 <body> | 8 <body> |
9 <h1>T6RP format</h1> | 9 <h1>T6RP format</h1> |
10 <p>The T6RP format is the replay format used by EoSD.</p> | 10 <p>The T6RP format is the replay format used by EoSD.</p> |
11 | 11 |
12 <p>It is composed of a header and an "encrypted" data section, which is itself composed of a header, per-stage structures and lists of keystates.</p> | 12 <p>It is composed of a header and an “encrypted” data section, which is itself composed of a header, per-stage structures and lists of keystates.</p> |
13 | 13 |
14 | 14 |
15 <h2>Header</h2> | 15 <h2>Header</h2> |
16 <pre> | 16 <pre> |
17 typedef struct { | 17 typedef struct { |
18 char magic[4]; // T6RP | 18 char magic[4]; // T6RP |
19 uint16_t unknown; //TODO: always 0x0102 | 19 uint16_t version; // 0x0102 for 1.02h |
20 // Seems to be a switch, if 0x0102 do something, else (whatever the value is), do something else | |
21 uint8_t player; // 0 = ReimuA, 1 = ReimuB, 2 = MarisaA, 3 = MarisaB | 20 uint8_t player; // 0 = ReimuA, 1 = ReimuB, 2 = MarisaA, 3 = MarisaB |
22 uint8_t rank; // 0 = Easy, 3 = Lunatic, 4 = Extra | 21 uint8_t rank; // 0 = Easy, 3 = Lunatic, 4 = Extra |
23 uint32_t checksum; // (0x3f000318 + key + sum(c for c in decrypted_data)) % (2 ** 32) | 22 uint32_t checksum; // (0x3f000318 + key + sum(c for c in decrypted_data)) % (2 ** 32) |
24 uint16_t unknown2; //TODO: seems to be ignored by the game. | 23 uint16_t unknown2; //TODO: seems to be ignored by the game. |
25 uint8_t key; | 24 uint8_t key; |
67 uint16_t unknown1; //TODO: seems to be ignored by the game. | 66 uint16_t unknown1; //TODO: seems to be ignored by the game. |
68 uint8_t power; | 67 uint8_t power; |
69 int8_t lives; | 68 int8_t lives; |
70 int8_t bombs; | 69 int8_t bombs; |
71 uint8_t difficulty; //TODO: WARNING: This has a huge effect on the game! | 70 uint8_t difficulty; //TODO: WARNING: This has a huge effect on the game! |
72 // It is also called rank (but we use the term "difficulty" because "rank" is the official name for Easy/Normal/Hard/Lunatic/Extra) | 71 // It is also called rank (but we use the term “difficulty” because “rank” is the official name for Easy/Normal/Hard/Lunatic/Extra) |
73 // See: http://en.touhouwiki.net/wiki/Embodiment_of_Scarlet_Devil/Gameplay#Rank | 72 // See: http://en.touhouwiki.net/wiki/Embodiment_of_Scarlet_Devil/Gameplay#Rank |
74 uint8_t unknown3[3]; //TODO: seems to be ignored by the game. Padding? | 73 uint32_t unknown3; //TODO: seems to be ignored by the game. Padding? |
75 thrpy6_keystate_t keystates[]; | 74 thrpy6_keystate_t keystates[]; |
76 } thrpy6_stage_t; | 75 } thrpy6_stage_t; |
77 </pre> | 76 </pre> |
78 | 77 |
79 <h2>Keystates</h2> | 78 <h2>Keystates</h2> |