Editing Pikmin 2 cutscene file
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | + | Cutscenes in Pikmin 2 are controlled by a file called <code>demo.stb</code>. This file can be found in each of the cutscene archives in <code>/user/Mukki/<name of cutscene>/demo.szs</code>. Cutscenes have predetermined number of frames. | |
− | Cutscenes in | ||
This page describes the format of the file. The page is work in progress. | This page describes the format of the file. The page is work in progress. | ||
Line 17: | Line 16: | ||
|0x4 | |0x4 | ||
|uint16 | |uint16 | ||
− | |Byte order mark? Always | + | |Byte order mark? Always 0xFEFF |
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|0x8 | |0x8 | ||
Line 33: | Line 28: | ||
|0x10 | |0x10 | ||
|char[8] | |char[8] | ||
− | |String that spells "jstudio" | + | |String that spells "jstudio" |
|- | |- | ||
|0x18 | |0x18 | ||
Line 41: | Line 36: | ||
|0x1E | |0x1E | ||
|int16 | |int16 | ||
− | |Unknown. Always | + | |Unknown. Always 0x4? |
|} | |} | ||
Line 48: | Line 43: | ||
= JFVB = | = JFVB = | ||
JFVB is one of the possible objects that can appear in the stb file. The size of the JFVB data is usually big because it's like its own section inside the file. | JFVB is one of the possible objects that can appear in the stb file. The size of the JFVB data is usually big because it's like its own section inside the file. | ||
− | For the purpose of the object count, JFVB counts as one object | + | For the purpose of the object count, JFVB counts as one object |
{| class="wikitable" | {| class="wikitable" | ||
|+JFWB object | |+JFWB object | ||
Line 82: | Line 77: | ||
|0x4 | |0x4 | ||
|uint16 | |uint16 | ||
− | |Byte order mark? Always | + | |Byte order mark? Always 0xFEFF |
|- | |- | ||
|0x6 | |0x6 | ||
|uint16 | |uint16 | ||
− | |Unknown, always | + | |Unknown, always 0x100? |
|- | |- | ||
|0x8 | |0x8 | ||
Line 110: | Line 105: | ||
|0x0 | |0x0 | ||
|uint32 | |uint32 | ||
− | | | + | |entry size starting from 0x0 to end |
|- | |- | ||
|0x4 | |0x4 | ||
|uint16 | |uint16 | ||
− | | | + | |entry type? |
|- | |- | ||
|0x6 | |0x6 | ||
|uint16 | |uint16 | ||
− | | | + | |offset to data? Always 0 |
|- | |- | ||
|0x8 | |0x8 | ||
Line 125: | Line 120: | ||
|} | |} | ||
− | FVB entry types: 1 (composite), 2 (constant), 3 (transition), 4 (list), 5 (list parameter), 6 (hermite). Only 2 and 6 are known to be used by | + | FVB entry types: 1 (composite), 2 (constant), 3 (transition), 4 (list), 5 (list parameter), 6 (hermite). Only 2 and 6 are known to be used by Pikmin 2. |
+ | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 136: | Line 132: | ||
|0x0 | |0x0 | ||
|uint16 | |uint16 | ||
− | |Total subentry size, starting from offset | + | |Total subentry size, starting from offset 0x4 to end |
|- | |- | ||
|0x2 | |0x2 | ||
Line 148: | Line 144: | ||
Known subentry types: | Known subentry types: | ||
− | * | + | * 0x0: terminates the list of subentries |
− | * | + | * 0x1: If entry type is 2, one float follows. If entry type is 6, a 4 bytes integer and many floats follow. The integer is broken up like this: the first 4 bits are the width of the following float table, the remaining bits are the height. Multiply width with height to get the amount of floats that follow. Table is likely used for interpolation, possibly related to hermite interpolation. |
− | * | + | * 0x12: Only known to be used in entry type 6. This subentry contains two floats which specify a value range. It appears before a 0x1 subentry. |
= JMSG = | = JMSG = | ||
Line 171: | Line 167: | ||
|0x8 | |0x8 | ||
|uint32 | |uint32 | ||
− | |If this is the first message box this is set to | + | |If this is the first message box this is set to 0x0000000B, else 0x0000000C |
|- | |- | ||
|0xC | |0xC | ||
Line 183: | Line 179: | ||
|0x18 | |0x18 | ||
|uint16 | |uint16 | ||
− | |An identifer? Value is always | + | |An identifer? Value is always 0x0200 |
|- | |- | ||
|0x1A | |0x1A | ||
Line 191: | Line 187: | ||
|0x1C | |0x1C | ||
|8 Bytes | |8 Bytes | ||
− | |Value doesn't appear to change, always | + | |Value doesn't appear to change, always 0x8000000800040859 |
|- | |- | ||
|0x24 | |0x24 | ||
Line 199: | Line 195: | ||
|0x28 | |0x28 | ||
|uint16 | |uint16 | ||
− | |Same as value from 0x14. Always | + | |Same as value from 0x14. Always 0x0200 |
|- | |- | ||
|0x2A | |0x2A | ||
|uint16 | |uint16 | ||
− | |Always | + | |Always 0x0001 |
|- | |- | ||
|0x2C | |0x2C | ||
|uint16 | |uint16 | ||
− | |Padding of | + | |Padding of 0's, end of section |
|} | |} | ||
Line 223: | Line 219: | ||
|0x4 | |0x4 | ||
|uint32 | |uint32 | ||
− | |Padding of | + | |Padding of FF's |
|- | |- | ||
|0x8 | |0x8 | ||
|uint32 | |uint32 | ||
− | |Unknown, set to | + | |Unknown, set to 0x0000000D |
|- | |- | ||
|0xC | |0xC | ||
Line 235: | Line 231: | ||
|0x18 | |0x18 | ||
|uint32 | |uint32 | ||
− | |Padding of | + | |Padding of 0's |
|- | |- | ||
|0x1C | |0x1C | ||
Line 243: | Line 239: | ||
|0x28* | |0x28* | ||
|uint32 | |uint32 | ||
− | |Padding of | + | |Padding of 0's, end of section |
|} | |} | ||
∗ Ending offset differs depending on the amount of JMSG objects there are since each object gets its own 12 bytes of control values. | ∗ Ending offset differs depending on the amount of JMSG objects there are since each object gets its own 12 bytes of control values. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |