<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pikmintkb.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Iwillremembermypasswordthistime</id>
	<title>Pikmin Technical Knowledge Base - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://pikmintkb.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Iwillremembermypasswordthistime"/>
	<link rel="alternate" type="text/html" href="https://pikmintkb.com/wiki/Special:Contributions/Iwillremembermypasswordthistime"/>
	<updated>2026-05-11T14:20:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Olimar%27s_voyage_log_table&amp;diff=5198</id>
		<title>Olimar&#039;s voyage log table</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Olimar%27s_voyage_log_table&amp;diff=5198"/>
		<updated>2026-01-20T01:38:35Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: wii changed a flag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo|Get either images or the actual text for each log, so its clear what they refer to. Also probably better formatting from someone good at it.}}&lt;br /&gt;
&lt;br /&gt;
This is a table in the game&#039;s code that dictates how the end of day logs work in &#039;&#039;Pikmin&#039;&#039;. In the event that conditions for multiple are met in a day, this table determines which one takes priority. It also determines if a log that is triggered, but not viewed on the same day should be forgotten, kept, or reset.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Value explanations==&lt;br /&gt;
The &amp;lt;code&amp;gt;resultsFlags&amp;lt;/code&amp;gt; table is an array of 75 entries, for every possible log, including unused ones.&lt;br /&gt;
&lt;br /&gt;
# The first value, the index, is the ID of the BLO file to open for this log. You will notice some are skipped, either for unused BLO files or logs that consist of multiple BLO files.&lt;br /&gt;
# Next is a flag that dictates if the log should be enabled every day by default. This is used for all of Olimar&#039;s &amp;quot;nothing&amp;quot; logs that appear when he has nothing specific to write about.&lt;br /&gt;
# The third value is the log&#039;s priority. In the event multiple logs are met in a day, the one with the lowest priority value will be seen.&lt;br /&gt;
# The final value determines what to do if the log&#039;s condition is met, but it is not seen on the same day. 0 means that the log will be forgotten forever, 1 means it will be reset so it could be triggered again on a later day. 2 means it will remain in the queue and will be used as soon as nothing with higher priority is used over it.&lt;br /&gt;
&lt;br /&gt;
For example, the log about Olimar being KO&#039;d has very high priority, since if that happened, Olimar would definitely be writing about it right away. But if it were to get skipped that day anyway, its store value is set to 1, so it will be reset and could be triggered on a later day.&lt;br /&gt;
&lt;br /&gt;
Once a log has been used, it can never be used again, regardless of any values in its table.&lt;br /&gt;
&lt;br /&gt;
Lastly, this table also includes what events trigger a log to be viewable that day. Some are very self-explanatory, others not so much. It also has conditions that can force a log to be dropped, even if it was triggered that day.&lt;br /&gt;
&lt;br /&gt;
For example, when Yellow Pikmin are gotten, a log is set about how Olimar has found Yellow Pikmin, but does not know about bomb rocks yet. Once a bomb rock is used, that log is cancelled and killed permanently, and the version where he does know about bomb rocks is put in instead. Once a log has been cancelled, it can never be seen. Same goes for a log with store type 0 that isn&#039;t seen on the day it&#039;s triggered. This is why some logs are very uncommon to actually see, especially for the bosses.&lt;br /&gt;
&lt;br /&gt;
==Table==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Description                || BLO index  || Auto-enabled || Priority || Store type || Trigger                                   || Trigger cancel                           || Notes&lt;br /&gt;
|- &lt;br /&gt;
| End of day 1               || 1          || No           || 1        || Forget     || Set on at the end of day 1                || N/A                                      || Lowest priority in the game since its obviously important.&lt;br /&gt;
|- &lt;br /&gt;
| First Visit Forest of Hope || 3          || No           || 3        || Forget     || Set on ending day while in Forest of Hope || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Forest Navel Opened        || 5          || No           || 9        || Forget     || Set the moment Forest Navel is unlocked   || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| First Visit Forest Navel   || 6          || No           || 10       || Forget     || Set on ending day while in Forest Navel   || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Distant Spring Opened      || 7          || No           || 11       || Forget     || Set the moment Distant Spring is unlocked || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| First Visit Distant Spring || 8          || No           || 12       || Reset      || Set on ending day while in Distant Spring || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Final Day                  || 10         || No           || 13       || Forget     || Set on at end of day 29                   || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| 25 Parts                   || 11         || No           || 14       || Forget     || Set on when player has exactly 25 parts   || Unset when player has 29 parts           ||&lt;br /&gt;
|-&lt;br /&gt;
| 29 Parts                   || 12         || No           || 15       || Forget     || Set on when player has exactly 29 parts   || N/A                                      || Effectively also when Final Trial is unlocked.&lt;br /&gt;
|-&lt;br /&gt;
| Olimar Killed              || 13         || No           || 5        || Reset      || Set upon Olimar entering the Dead state   || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Pikmin Extinction          || 14         || No           || 4        || Reset      || Set upon entering the extinction state    || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Has all 30 parts           || 15         || No           || 2        || Reset      || N/A                                       || N/A                                      || Unused log meant for the good ending, has high priority but never actually enabled. Not that it would matter since there is no log at this point.&lt;br /&gt;
|-&lt;br /&gt;
| Yellow Pikmin with Bomb    || 17         || No           || 6        || Reset      || Set upon a yellow picking up a Bomb Rock  || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Meeting Blue Pikmin        || 18         || No           || 7        || Forget     || Set upon plucking the first Blue          || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Pikmin Routing             || 19         || No           || 16       || Keep       || N/A                                       || N/A                                      || An unused log about Pikmin pathfinding, dropped via having no trigger. Probably due to not being too noteworthy.&lt;br /&gt;
|-&lt;br /&gt;
| Olimar&#039;s Daydream          || 20         || No           || 19       || Reset      || Set on starting day 10                    || Unset starting on day 20                 || Might as well be a nothing log, but has these requirements for some reason.&lt;br /&gt;
|-&lt;br /&gt;
| 15 Parts                   || 21         || No           || 20       || Reset      || Set when the player has 15 or more parts  || Unset when at 25 or 29 parts             ||&lt;br /&gt;
|-&lt;br /&gt;
| Pikmin left behind         || 23         || No           || 8        || Reset      || Set if a Pikmin is left behind today      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Pikmin dies to Bomb Rock   || 24         || No           || 17       || Reset      || Set upon a Pikmin dying to an explosion   || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| 10 Parts                   || 26         || No           || 18       || Keep       || Set if at over 10 parts and past day 8    || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Unused Controls Log 1      || 27         || Yes          || 200      || Keep       || N/A                                       || Unset upon starting a file               || First of multiple unused and untranslated logs, this one uses a controller image.&lt;br /&gt;
|-&lt;br /&gt;
| Unused Controls Log 2      || 29         || No           || 201      || Keep       || Set on at end of day 1                    || Unset upon starting a file               || This one is still enabled, but it&#039;s killed upon starting a file anyway, so it doesn&#039;t matter.&lt;br /&gt;
|-&lt;br /&gt;
| Unused Controls Pikmin Log || 31         || Yes          || 202      || Keep       || N/A                                       || Unset upon starting a file               || Unused again, seems to be related to Pikmin turning pale.&lt;br /&gt;
|-&lt;br /&gt;
| Broken Bridge              || 32         || No           || 203      || Forget     || Set when a bridge has been broken         || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Pikmin Seeds               || 33         || No           || 204      || Keep       || Set when leaving a seed in the ground     || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Pikmin Seed Growth         || 35         || No           || 205      || Keep       || Set when the onion shoots a seed?         || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Pikmin Onions              || 36         || No           || 207      || Keep       || Set when yellows are unlocked             || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Meet Yellow Pikmin         || 37         || No           || 206      || Forget     || Set upon plucking the first Yellow        || Unset when a yellow picks up a Bomb Rock ||&lt;br /&gt;
|-&lt;br /&gt;
| Blue Pikmin in water       || 38         || No           || 208      || Forget     || Set when a blue Pikmin touches water      || Unset upon starting a file               || The last unused and untranslated log. Probably unused since you literally find blues in the water.&lt;br /&gt;
|-&lt;br /&gt;
| Pikmin on Fire             || 39         || No           || 209      || Forget (GameCube) &amp;lt;br&amp;gt; Reset (Wii/Switch)     || Set when a Pikmin catches on fire         || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Smoky Progg                || 40         || No           || 400      || Reset      || Set upon Progg shaking off Pikmin         || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Bulborbs                   || 41         || No           || 401      || Reset      || Set upon killing a Bulborb (or dwarf?)    || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Puffstool                  || 42         || No           || 402      || Reset      || Set when Puffmin attack Olimar            || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Flint Beetle               || 43         || No           || 403      || Reset      || Set when hitting the Flint Beetle         || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Honeywisp                  || 44         || No           || 404      || Reset      || Set when hitting a Honeywisp              || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Candypop Bud               || 45         || No           || 405      || Reset      || Set when using a Candypop Bud             || Unset when a Candypop Bud dies           ||&lt;br /&gt;
|-&lt;br /&gt;
| Beady Long Legs            || 46         || No           || 406      || Reset      || Set when Beady drops                      || Unset when Beady dies                    ||&lt;br /&gt;
|-&lt;br /&gt;
| Cannon Beetle              || 47         || No           || 407      || Reset      || Set when Cannon Beetle shoot              || Unset when Cannon Beetle dies            ||&lt;br /&gt;
|-&lt;br /&gt;
| Snagret                    || 48         || No           || 408      || Reset      || Set when a Snagret attacks                || Unset when a Snagret dies                ||&lt;br /&gt;
|-&lt;br /&gt;
| Emperor                    || 49         || No           || 409      || Reset      || Set when Emperor does... anything really  || Unset when Emperor dies                  || Seriously, the flag is enabled in like 20 different places.&lt;br /&gt;
|-&lt;br /&gt;
| Goolix                     || 50         || No           || 410      || Reset      || Set when something touches Goolix         || Unset when Goolix dies                   ||&lt;br /&gt;
|-&lt;br /&gt;
| Mamuta                     || 51         || No           || 411      || Reset      || Set when Mamuta sees Olimar               || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Sheargrub                  || 52         || No           || 412      || Reset      || Set when a sheargrub attacks              || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Fiery Blowhog              || 53         || No           || 413      || Reset      || Set when a Fiery Blowhog attacks          || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Pearly Clam-clamp          || 54         || No           || 414      || Reset      || Set when a Clam dies                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Breadbug                   || 55         || No           || 415      || Reset      || Set when a Breadbug dies                  || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Puffy Blowhog              || 56         || No           || 416      || Reset      || Set when a Puffy Blowhog Attacks          || Unset when a Puffy Blowhog dies          || Strange that this one would missable, unless Puffy Blowhog was once a boss of some sort :thinking:&lt;br /&gt;
|-&lt;br /&gt;
| Wollywog                   || 57         || No           || 417      || Reset      || Set when a Wollywog dies                  || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 1              || 58         || Yes          || 600      || Keep       || Set on starting file                      || N/A                                      || From here on are the default logs you get if nothing was done that day.&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 2              || 59         || Yes          || 601      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 3              || 60         || Yes          || 602      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 4              || 61         || Yes          || 603      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 5              || 62         || Yes          || 604      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 6              || 63         || Yes          || 605      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 7              || 64         || Yes          || 606      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 8              || 65         || Yes          || 607      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 9              || 66         || Yes          || 608      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 10             || 67         || Yes          || 609      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 11             || 68         || Yes          || 610      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 12             || 69         || Yes          || 611      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 13             || 70         || Yes          || 612      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 14             || 71         || Yes          || 613      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 15             || 72         || Yes          || 614      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 16             || 73         || Yes          || 615      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 17             || 74         || Yes          || 616      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 18             || 75         || Yes          || 617      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 19             || 76         || Yes          || 618      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 20             || 77         || Yes          || 619      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 21             || 78         || Yes          || 620      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 23             || 79         || Yes          || 621      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 24             || 80         || Yes          || 622      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 25             || 81         || Yes          || 623      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 26             || 82         || Yes          || 624      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 27             || 83         || Yes          || 625      || Keep       || Set on starting file                      || N/A                                      ||&lt;br /&gt;
|-&lt;br /&gt;
| Nothing Log 28             || 84         || Yes          || 626      || Keep       || Set on starting file                      || N/A                                      || &amp;quot;I am so very tired.&amp;quot; You can&#039;t see this because of days like 1, 10, and 29 that have unavoidable logs. It was probably meant for day 30.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin]]&lt;br /&gt;
[[Category:Constants]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_instructions&amp;diff=5197</id>
		<title>Pikmin 2 instructions</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_instructions&amp;diff=5197"/>
		<updated>2026-01-03T06:05:39Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: update tool versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Helpful instructions for editing and handling &#039;&#039;Pikmin 2&#039;&#039;&#039;s files. This guide assumes you have some basic knowledge on navigating folders, opening files, using commands, etc.&lt;br /&gt;
See [[General instructions#Obtaining a game&#039;s files|obtaining a game&#039;s files]] if you are unsure on how to do so.&lt;br /&gt;
&lt;br /&gt;
You can view and edit a lot of the game&#039;s files. You can read them without any worry, but if you want to change them and have those changes apply in-game, see [[General instructions#Saving changes|saving changes]] in [[general instructions]].&lt;br /&gt;
{{todo|Elaborate.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended you refer to the file lists and other pages on the main page while editing.&lt;br /&gt;
&lt;br /&gt;
==Tools and files==&lt;br /&gt;
&lt;br /&gt;
Here are some prominent files that come up when modding.&lt;br /&gt;
 .DOL: Segmented executable binary format which contains the games compiled source.&lt;br /&gt;
 .SZS: Archive files similar to .ZIP or .RAR archive files. SZS files are RARC archives compressed with Yaz0 compression.&lt;br /&gt;
 .ARC: Archive files similar to .ZIP or .RAR archive files. ARC files are RARC archives not compressed with Yaz0 compression.&lt;br /&gt;
 .TXT: Generic plaintext files. Use Notepad++ to preserve the Shift-JIS encoding.&lt;br /&gt;
 .BMD/.BDL: Proprietary 3D model files.&lt;br /&gt;
 .BMS: Sequenced audio files, similar to MIDI but more advanced. [https://pikmintkb.com/wiki/Pikmin_2_BMS_file_list List]&lt;br /&gt;
 .CND: Files that control how various sequences in a BMD file are randomly chained together in a complex system. Used for cave music. &lt;br /&gt;
 [https://pikmintkb.com/wiki/Pikmin_2_CND_file_list List]&lt;br /&gt;
 .AST: Streamed audio files. [https://pikmintkb.com/wiki/AST_file_list List]&lt;br /&gt;
 .AW: Soundbank files. Usually named wScene in Pikmin 2.&lt;br /&gt;
 .BMG: Used to store in-game text strings.&lt;br /&gt;
 .BLO: UI screen data.&lt;br /&gt;
 .BTI: Textures.&lt;br /&gt;
 .BTK: Animated textures.&lt;br /&gt;
 .STB: Cutscene data.&lt;br /&gt;
 .THP: Prerendered videos (GC/Wii)&lt;br /&gt;
 .WEBM: Prerendered videos (Switch)&lt;br /&gt;
 .JPC: Particle effect container. [https://pikmintkb.com/wiki/JPC_particles List]&lt;br /&gt;
 .JPA: Particle effect.&lt;br /&gt;
 .BCA: Full animation data.&lt;br /&gt;
 .BCK: Keyframed animation data.&lt;br /&gt;
&lt;br /&gt;
Here are some prominent tools: &lt;br /&gt;
&lt;br /&gt;
 [https://github.com/SuperHackio/WiiExplorer/releases/tag/V2.0.0.0  WiiExplorer]- Used for extracting and converting RARC archives. Can also compress archives to SZS.&lt;br /&gt;
 [https://notepad-plus-plus.org/downloads/ Notepad++] - Used for editing text files, many of which need to preserve Shift-JIS encoding.&lt;br /&gt;
 [https://github.com/RenolY2/pikmin-tools/releases/download/v1.0.1.3/piktools-1.0.1.3.zip Gen &amp;amp; Route Editor]  - Used for editing overworld generation and pikmin carrying routes.&lt;br /&gt;
 [https://github.com/Drought-Ender/Drought-Cave-Creator/archive/refs/heads/main.zip Drought&#039;s Cave Creator] - Used for creating and modifiying cave files, cave lighting, and cave unit definition files.&lt;br /&gt;
 [https://xayr.gay/tools/SoundModdingToolkit/6.3.3/PIKMIN2_SoundModdingToolkit_6.3.3_win64.zip Pikmin 2 Sound Modding Toolkit] - Used for modyfing sounds in the game.&lt;br /&gt;
 [https://github.com/XAYRGA/JAIMaker/releases/download/1.7.5/JAIMaker.1.7.5.-.Ominous.Variable.Resistor.zip JAIMaker] - Used for creating custom sequenced music as BMS files. Also supports creating interactive overworld music. Cave music requires additional hex editing.&lt;br /&gt;
 [https://github.com/XAYRGA/jatast/releases/download/1.1/publish_win64.zip JATAST] - Used for converting .wav files into .ast files for streamed music.&lt;br /&gt;
 [https://github.com/RenolY2/pikminBMG/archive/refs/tags/v0.7.4.zip pikminBMG] - Used for editing text in the game.&lt;br /&gt;
 [https://github.com/RenolY2/pyblo2-gui/releases/download/v0.7.3/blo-gui-editor-v0.7.3.zip pyblo2-gui] - Used for modyfing blo files.&lt;br /&gt;
 [https://mega.nz/file/m4YzXb4b#pXMGCSapWQjB72mushjH0DD7XQOwrMQOm97d_F_CSHs FinModelUtility] - Used for converting BMD files to formats that can be imported into any 3D modeling software. &lt;br /&gt;
 [https://github.com/pish-pish/SuperBMD/releases/download/v2.4.9.2/SuperBMD.zip SuperBMD] - Used for converting FBX and DAE files back to BMD.&lt;br /&gt;
 [https://github.com/snailspeed3/RiiStudio/releases/download/Alpha-5.11.5/RiiStudio_Windows.zip RiiStudio] - Used for BMD materials editing. (Pish don&#039;t kill me GUI is just easier for now)&lt;br /&gt;
 [https://github.com/RenolY2/obj2grid/archive/refs/tags/v0.8.zip obj2grid] - Used for converting between .OBJ 3D files and pikmin 2&#039;s collision formats.&lt;br /&gt;
 [https://github.com/LagoLunatic/GCFT/releases/tag/2.0.0 GameCube File Tools] - Used for modification of many GameCube/early Wii era formats, notably BTI files. &lt;br /&gt;
 Hex editor - needed for additional editing of other files such as .BIN binary files. An editor of choice is HxD: (https://mh-nexus.de/en/hxd/)&lt;br /&gt;
More tools can be found in Hocotate Hacker if needed. Compiled builds for many of these tools are for Windows, but macOS and Linux users can compile many from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A page listing the game&#039;s internal filesystem is [https://pikmintkb.com/wiki/Pikmin_2_directory_tree here], useful for keeping track of where editable files are. &lt;br /&gt;
&lt;br /&gt;
==Cave editing==&lt;br /&gt;
&lt;br /&gt;
You can make custom caves with Drought&#039;s Cave Creator. &lt;br /&gt;
&lt;br /&gt;
See [https://pikmintkb.com/wiki/Cave_generation_parameters this page] for cave generation specifics.&lt;br /&gt;
&lt;br /&gt;
The BgmList files in &amp;lt;code&amp;gt;user/Totaka&amp;lt;/code&amp;gt; control what cave song is used for each sublevel. &amp;lt;code&amp;gt;BgmList_Tutorial.txt&amp;lt;/code&amp;gt; is used for Valley of Repose caves, &amp;lt;code&amp;gt;BgmList_Forest.txt&amp;lt;/code&amp;gt; is used for Awakening Wood caves, &amp;lt;code&amp;gt;BgmList_Yakushima.txt&amp;lt;/code&amp;gt; is used for Perplexing Pool caves, &amp;lt;code&amp;gt;BgmList_Last.txt&amp;lt;/code&amp;gt; is used for Wistful Wild caves, and &amp;lt;code&amp;gt;ChallengeBgmList.txt&amp;lt;/code&amp;gt; is used for caves in Challenge Mode. When adding more sublevels to any cave, you must remember to add more cave songs to the applicable BgmList text file, or else the game will crash.  &lt;br /&gt;
&lt;br /&gt;
You can change the listed CND file to change what song plays in a sublevel.&lt;br /&gt;
&lt;br /&gt;
To add completely new cave music tracks,&lt;br /&gt;
&lt;br /&gt;
1) Make a new BMS file in &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc&amp;lt;/code&amp;gt; called &amp;lt;code&amp;gt;new_09.bms&amp;lt;/code&amp;gt; or so in order, 9, 10, 11, etc&lt;br /&gt;
&lt;br /&gt;
2) Make a new CND file in &amp;lt;code&amp;gt;AudioRes/Conductor.arc&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;new_09_0.cnd&amp;lt;/code&amp;gt;, just the BMS name with _0 (leave the CND blank if you don&#039;t want interactivity, or see the CND file guide below to make a full track.)&lt;br /&gt;
&lt;br /&gt;
3) Add the new BMS in the &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; after the new_0-8&lt;br /&gt;
&lt;br /&gt;
4) Add the new CND in &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt;. If not doing interactivity, copy paste new_00&#039;s entry with the new CND&#039;s name; otherwise, see the cave music guide for more details.&lt;br /&gt;
&lt;br /&gt;
5) Add a new wScene for your song using the Sound Modding Toolkit (see guide below), new_09 will use &amp;lt;code&amp;gt;wScene46.aw&amp;lt;/code&amp;gt; and so on in order. &amp;lt;code&amp;gt;wScene48.aw&amp;lt;/code&amp;gt; is used for the Submerged Castle theme and Waterwraith approaching theme, so it&#039;s a good idea to skip from &amp;lt;code&amp;gt;new_09.bms&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;new_12.bms&amp;lt;/code&amp;gt; so you skip to &amp;lt;code&amp;gt;wScene49.aw&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
6) Set the new song to be used in the applicable BgmList file for your area/challenge mode BgmList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overworld editing==&lt;br /&gt;
&lt;br /&gt;
You can edit overworld generation with the Gen &amp;amp; Route Editor&lt;br /&gt;
&lt;br /&gt;
Instructions on how to use the program are in its reademe as well as the page on this website.&lt;br /&gt;
See [https://pikmintkb.com/wiki/Pikmin_2_area_generator_file this page] for overworld generation specifics.&lt;br /&gt;
&lt;br /&gt;
To change what sounds are made when a leader walks on ground, or to change where Pikmin seeds can sprout, use obj2grid to convert the grid.bin/mapcode.bin files (located in texts.szs for a given area or cave unit model) to obj, then import this obj into blender. Make a material on the mesh you want to edit, and name it according to this scheme:&lt;br /&gt;
&lt;br /&gt;
0xXY&lt;br /&gt;
&lt;br /&gt;
First Digit (Physical characteristics):&lt;br /&gt;
&lt;br /&gt;
Pikmin seeds can root:&lt;br /&gt;
0 - full friction (friction is slipperyness)&lt;br /&gt;
1 - some friction&lt;br /&gt;
2 - no friction&lt;br /&gt;
&lt;br /&gt;
Pikmin seeds die:&lt;br /&gt;
4 - full friction&lt;br /&gt;
5 - some friction&lt;br /&gt;
6 - no friction&lt;br /&gt;
&lt;br /&gt;
Second Digit (Sound index):&lt;br /&gt;
&lt;br /&gt;
0 - grass&lt;br /&gt;
1 - soil&lt;br /&gt;
2 - sand&lt;br /&gt;
3 - wood&lt;br /&gt;
4 - water&lt;br /&gt;
5- stone&lt;br /&gt;
6 - iron&lt;br /&gt;
7 - snow&lt;br /&gt;
8 - water (has water particle effects when used with 1 as the first digit)&lt;br /&gt;
9 - paper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export the model back to obj, use obj2grid to convert the obj to grid.bin/mapcode.bin, and import back into the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Model replacement==&lt;br /&gt;
see this guide for now &lt;br /&gt;
https://pikmintkb.com/wiki/Custom_models&lt;br /&gt;
&lt;br /&gt;
==Adding more treasures==&lt;br /&gt;
&lt;br /&gt;
create a new szs in \user\Abe\Pellet\&amp;lt;region&amp;gt; with your bmd, as well as the carry.bck animation. make sure that the bmd and szs are named the same thing (ex. ahiru.bmd, ahiru.szs).&lt;br /&gt;
then go to otakara_config.txt in pelletlist_(language).szs and add a new entry for your custom treasure, and edit anything you need to. make sure the names refer to the correct things. At the top of the file, increment the number at the top (normally 188). then, open otakara_texts.szs and create a new folder with the same name as your szs containing an animmgr.txt and a collinfo.txt (you can copy these from another treasure).&lt;br /&gt;
This is all you need to do to get the treasure working in game, however the piklopedia requires a bit more work.&lt;br /&gt;
go to \user\Matoba\resulttex\us\arc.szs and again create a folder with the name of your custom treasure. this is where you will but an icon for your treasure. &lt;br /&gt;
the icon should be a 32 x 32 bti image named texture.bti.&lt;br /&gt;
finally, go to \message\mesRes_&amp;lt;language&amp;gt;.szs and extract pikmin2.bmg using the bmg tool in ⁠pikmin-tools. there, you will add an entry for your treasure&#039;s in game name (this does not have to be the same name as the one in the filesystem) and also a piklopedia entry for your treasure. You should be all set at that point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu and HUD editing ==&lt;br /&gt;
&lt;br /&gt;
BLO files, which house most of the screen resources, can be edited with pyblo2-gui. Often, positions of a UI element may be controlled by a BCK element, which can be edited in the animation part of the program.&lt;br /&gt;
BRK and BTK animations may also be involved,which can be edited with bark_conv and btk-conv respectively. BPK files can be edited with j3d-animation-editor.&lt;br /&gt;
&lt;br /&gt;
==Custom sounds and music==&lt;br /&gt;
&lt;br /&gt;
Custom streamed music can be made with JATAST, a command line tool for converting WAV files to AST files. When converting a .wav file, have the loop points be contained in the .wav file itself. It is important to have new .ast files encoded with ADPCM4, as this helps with disc read speeds. To convert .wav files to ADPCM4 .asts, run this in a command prompt or terminal: &amp;lt;code&amp;gt;jatast yoursong.wav newsong.ast -encode-format adpcm4&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Custom sequenced music can be made with either flaaffy (command-line) or JAIMaker (GUI-based), tools that convert MIDI files to BMS files. For non-interactive sequenced music (such as the world map theme and high scores theme), a simple MIDI conversion will suffice. Review [https://docs.google.com/document/d/1UNhdBL3tYAn9sHO8gdOVJIpaHVo9_bbCLz7OazkEgZA/edit this document] to see what instruments you can use for your song depending on what bms you&#039;re replacing  (if you&#039;re not editing wScenes with the Sound Modding Toolkit, that is)&lt;br /&gt;
&lt;br /&gt;
If you want interactive overworld music, or randomized interactive cave music, see these two guides:&lt;br /&gt;
&lt;br /&gt;
[https://pikmintkb.com/wiki/Creating_Interactive_BMS_Files Creating interactive area music]&lt;br /&gt;
&lt;br /&gt;
[https://pikmintkb.com/wiki/Creating_cave_music Creating interactive cave music]&lt;br /&gt;
&lt;br /&gt;
Replacement sounds, custom samples, wScene editing + creation, and new instruments can be done with the Pikmin 2 Sound Modding Toolkit. This [https://pikmintkb.com/wiki/Sound_Replacement_Tutorial page] outlines the process, as well as a process for doing custom sound effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running your modified game==&lt;br /&gt;
See [[General instructions#Running a modified game]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Instructions]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=RARC_file&amp;diff=5196</id>
		<title>RARC file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=RARC_file&amp;diff=5196"/>
		<updated>2025-12-26T17:56:17Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: wiiexplorer got the update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
The RARC file format is an archive format commonly found in first party Nintendo GameCube games. Many files are stored in these archive files in a similar way to ZIP and 7Z files.&lt;br /&gt;
&lt;br /&gt;
In Pikmin 2&#039;s file structure, ARC files are nowhere near as common as the SZS file, which is a version of the format that&#039;s compressed via Yaz0 compression.&lt;br /&gt;
&lt;br /&gt;
Extracting and repacking these archives is done by using WiiExplorer. WiiExplorer also allows compressing archives with Yaz0 compression. When Yaz0 compressing archives, you must enable the setting to pad them to 32 bytes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Format Specifications =&lt;br /&gt;
Below you&#039;ll find helpful tables on how the file is structured&lt;br /&gt;
== Header ==&lt;br /&gt;
Each RARC starts with a &#039;&#039;header&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &amp;quot;RARC&amp;quot; in ASCII&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Size of the entire file&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || Data Header Offset (Always 0x20)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Offset to the File Data section minus 0x20&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Length of the File Data section&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || Size of all the MRAM Files in the File Data section&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || Size of all the ARAM Files in the File Data section&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || Size of all the DVD Files in the File Data section&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
== Data Header ==&lt;br /&gt;
This section has information on the entire archive&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || The number of Directory Nodes&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Offset to the Directory Nodes section minus 0x20 (always 0x20)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || The number of File Nodes&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Offset to the File Nodes section minus 0x20&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Size of the String Table&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || String Table offset minus 0x20&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || The next available File Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || bool || Keeps the File ID&#039;s Synced (Always 0x01, or TRUE in SMG)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B || UInt8[5] || Padding, All 0x00&#039;s&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
== Directory Node section ==&lt;br /&gt;
This section is a list of information for each folder (or, subdirectory) in the archive.&amp;lt;br/&amp;gt;&lt;br /&gt;
Each list entry looks like this:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || The first 4 characters in the Directory&#039;s name in all caps.&amp;lt;br/&amp;gt;Example: &amp;quot;RootFolder&amp;quot; = &amp;quot;ROOT&amp;quot;, and &amp;quot;Tmp&amp;quot; = &amp;quot;TMP &amp;quot; (Names less than 4 characters are padded to 4 characters with spaces)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Offset to the Directory&#039;s name in the String Table&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || Hash of the Directory&#039;s name&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || The number of File Nodes in this directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Offset to the first File Node in the File Nodes section&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
== File Node section ==&lt;br /&gt;
This section is a list of information for each file in the archive. It also contains entries for directories so we can know which directory belongs where.&amp;lt;br/&amp;gt;&lt;br /&gt;
Each list entry looks like this:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Node Index (0xFFFF if this entry represents a subdirectory)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Hash of the Node&#039;s name&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt8 Bitfield || Defines certain Node Attributes. See the Node Attributes table below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || UInt8[1] || Padding. 0x00&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || Offset to the Node&#039;s name in the String Table&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || If this node represents a file: Offset to the File&#039;s Data in the File Data section.&amp;lt;br/&amp;gt;If this node represents a directory: Directory Node section index to use&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || If this node represents a file: Size of the File&#039;s Data.&amp;lt;br/&amp;gt;If this node represents a directory: The size of the Directory Node (always 0x10)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
=== Node Attributes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Mask !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || FILE || This node is a File&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || DIRECTORY || This node is a Directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || COMPRESSED || This node&#039;s file is compressed&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || PRELOAD_TO_MRAM || Set the file to be loaded into Main RAM&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || PRELOAD_TO_ARAM || Set the file to be loaded into Auxiliary RAM (GameCube only)&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || LOAD_FROM_DVD || Set the file to be loaded right off the DVD when needed&lt;br /&gt;
|-&lt;br /&gt;
| 0x80 || YAZ0_COMPRESSED || This node&#039;s file is specifically YAZ0 compressed. Enable the COMPRESSED flag as well when using this&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Among the File Nodes are nodes for a &amp;quot;..&amp;quot; and &amp;quot;.&amp;quot; directory. The &amp;quot;.&amp;quot; entry points to the current directory, and the &amp;quot;..&amp;quot; directory points to the parent directory (or 0xFFFFFFFF if the current directory is the topmost directory).&lt;br /&gt;
&lt;br /&gt;
== String Table ==&lt;br /&gt;
This section is composed of NULL-terminated ASCII strings. The above information references these strings.&lt;br /&gt;
&lt;br /&gt;
== File Data section ==&lt;br /&gt;
This section is a chunk of all the data that files in the archive contain. Files are sorted in a specific order, and are padded to the nearest 32 byte boundary.&amp;lt;br/&amp;gt;The sorting order is MRAM Files then ARAM Files then DVD Files.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_troubleshooting&amp;diff=5195</id>
		<title>Pikmin 2 troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_troubleshooting&amp;diff=5195"/>
		<updated>2025-12-19T02:36:27Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: another common pratfall&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Solutions to common problems that can occur while editing &#039;&#039;Pikmin 2&#039;&#039;&#039;s files.&lt;br /&gt;
&lt;br /&gt;
Note: Get the automatic crash debugger screen code listed below before continuing, as that crash screen can provide valuable info on what caused a crash.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Automatically Show Exception Handler (GameCube USA)&lt;br /&gt;
0442219c 60000000&lt;br /&gt;
&lt;br /&gt;
Automatically Show Exception Handler (GameCube PAL)&lt;br /&gt;
04422440 60000000&lt;br /&gt;
&lt;br /&gt;
Automatically Show Exception Handler (GameCube JPN)&lt;br /&gt;
04423ca0 60000000&lt;br /&gt;
&lt;br /&gt;
Automatically Show Exception Handler (Wii USA)&lt;br /&gt;
044a803c 60000000&lt;br /&gt;
&lt;br /&gt;
Automatically Show Exception Handler (GameCube USA Demo 1)&lt;br /&gt;
04422218 60000000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Custom models ==&lt;br /&gt;
===My custom model has random stretchy bits ===&lt;br /&gt;
:Check your weight painting on the model, partial weights should not be used.&lt;br /&gt;
&lt;br /&gt;
== Overworlds and Caves ==&lt;br /&gt;
=== The changes I made to the overworld aren&#039;t applying ===&lt;br /&gt;
:You need to create a new save, most things are only loaded on first entry&lt;br /&gt;
&lt;br /&gt;
=== Adding more sublevels to a vanilla cave crashes ===&lt;br /&gt;
:Make sure the number of entries in the BgmList (located in &amp;lt;code&amp;gt;user/Totaka&amp;lt;/code&amp;gt;) for the cave matches the number of sublevels that are in the cave.&lt;br /&gt;
&lt;br /&gt;
=== The game crashes when I edit the Valley of Repose ===&lt;br /&gt;
:A tutorial cutscene is hardcoded to look for a paper bag with a weight of 20. If you edit the weight of the bag or remove it, revert those changes.&lt;br /&gt;
&lt;br /&gt;
=== Loading a cave stays stuck for longer than usual and eventually crashes Dolphin ===&lt;br /&gt;
:Open the [[cave definition file]] and go to the sublevel you were trying to load. Make sure that the amount of entries on &amp;lt;code&amp;gt;TekiInfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ItemInfo&amp;lt;/code&amp;gt;, etc. blocks matches the number present at the start of that same block (this number commented with &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Other common crashes ==&lt;br /&gt;
===The crash screen said &amp;quot;Memory Alloc Error&amp;quot;===&lt;br /&gt;
:That means the game is out of memory. Try reducing the size of a model, or the amount of enemies in an overworld, or whatever change you made that caused the error &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Troubleshooting]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5191</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5191"/>
		<updated>2025-10-27T13:16:39Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: flag and particle notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
An object has both properties and variables, which control various things about that object.&lt;br /&gt;
&lt;br /&gt;
Objects also have different &amp;quot;commands&amp;quot; to affect variables and properties of an object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;VAR&amp;quot; command binds a value or function to a variable.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Its syntax is: &amp;lt;code&amp;gt;&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The value/function types are:&lt;br /&gt;
** Void, to write a 0 to the variable&lt;br /&gt;
** Immediate, to write a direct value to the variable (specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Index, to attach a JFVB function to the variable (the function index is specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* A variable can affect more than one value of the bound object, in this case, the &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt; field will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SET&amp;quot; command directly affects the properties of the bound object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* How you set a property is dependent on what the property is (hence they don&#039;t have a specific way of being set, unlike variables.) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;WAIT&amp;quot; command halts the execution of the object for a certain amount of frames.&amp;lt;br&amp;gt;&lt;br /&gt;
* After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/functions will be unbound from the variables.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SYNC&amp;quot; command halts the execution of the object until an event, external to the STB, is fired.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; commands (respectively) OR/XOR/AND the stb flags with a value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used in Pikmin 2: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation. There is also &amp;quot;List-Parameter&amp;quot;, which contains a value that changes based on either spline or linear interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
In the Data field there will be subgroups of values with two floats, the first float being the time and the second being the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc). &amp;lt;br&amp;gt;&lt;br /&gt;
In a List_Parameter function, there will be another group under &amp;quot;Range&amp;quot;, that will detail the type of interpolation used in the function, either &amp;quot;Linerar&amp;quot; or &amp;quot;BSPline&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;Range&amp;quot;: &amp;quot;0.0 0.666667&amp;quot;,&lt;br /&gt;
&amp;quot;Interpolation&amp;quot;: &amp;quot;BSPLine&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In a Hermite function, each subgroup of values instead has three floats. The first one is  time, the second is the value of whatever you&#039;re putting , and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;demos.txt notes&amp;lt;/h2&amp;gt;&lt;br /&gt;
Before getting into major cutscene editing, there are a few things to note in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, the file that controls cutscene configs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Position flags, skip flags, and draw flags are contained here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 will use the origin and camera angle specified in &amp;lt;code&amp;gt;demos.txt&amp;lt;/code&amp;gt; (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Draw flags are the left number on pause/draw/fade.&amp;lt;br&amp;gt;&lt;br /&gt;
A draw flag of 1 will make pikmin visible.&amp;lt;br&amp;gt;&lt;br /&gt;
A draw flag of 2 will make enemies visible.&amp;lt;br&amp;gt;&lt;br /&gt;
A draw flag of 4 will make pellets visible.&amp;lt;br&amp;gt;&lt;br /&gt;
A draw flag of 8 will make navis visible.&amp;lt;br&amp;gt;&lt;br /&gt;
These flags can be combined; for example, to draw all of them would be 15.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fade flags are the right number on pause/draw/fade.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fade flag of 3 will have a smooth fade to black open the cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
A fade flag of 6 will have a sharp cut open the cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip flags are labeled with just &amp;quot;flag&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0=start skips, 1=any button skips, 2=unskippable.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene &amp;lt;code&amp;gt;(x01_gamestart)&amp;lt;/code&amp;gt; with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2). (You can also use blender to get coordinates, which is especially helpful when using a custom map. This tutorial will use the gen editor, but Blender steps will be detailed later below.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
If using Blender for coordinates, assuming your map is centered correctly, you can use the coordinates of Blender&#039;s camera for the cutscene coordinates.&amp;lt;br&amp;gt;&lt;br /&gt;
To convert between Blender coords and game coords, the X value remains the same, the Z coordinate in blender will be the Y coordinate in game, and the Y coordinate in blender should be multiplied by -1.&amp;lt;br&amp;gt;&lt;br /&gt;
Location XYZ will be ViewPos, and Rotation XYZ will be TargPos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain special functions in game. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene &amp;lt;code&amp;gt;(g02_boot_onyonR)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that can be set. When these properties are set,  special functions specific to that creature that can be executed. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
To kill a particle, set the Targ property again with the first string being &amp;quot;*kill&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors whose can affect parts of the game. When a specific property of the special actor is set, the game will execute special functions depending on the property. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open special item collection UI (res_special_item)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5190</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5190"/>
		<updated>2025-10-23T20:27:28Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: so nintendo can&amp;#039;t spell apparently&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
An object has both properties and variables, which control various things about that object.&lt;br /&gt;
&lt;br /&gt;
Objects also have different &amp;quot;commands&amp;quot; to affect variables and properties of an object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;VAR&amp;quot; command binds a value or function to a variable.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Its syntax is: &amp;lt;code&amp;gt;&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The value/function types are:&lt;br /&gt;
** Void, to write a 0 to the variable&lt;br /&gt;
** Immediate, to write a direct value to the variable (specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Index, to attach a JFVB function to the variable (the function index is specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* A variable can affect more than one value of the bound object, in this case, the &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt; field will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SET&amp;quot; command directly affects the properties of the bound object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* How you set a property is dependent on what the property is (hence they don&#039;t have a specific way of being set, unlike variables.) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;WAIT&amp;quot; command halts the execution of the object for a certain amount of frames.&amp;lt;br&amp;gt;&lt;br /&gt;
* After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/functions will be unbound from the variables.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SYNC&amp;quot; command halts the execution of the object until an event, external to the STB, is fired.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; commands (respectively) OR/XOR/AND the stb flags with a value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used in Pikmin 2: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation. There is also &amp;quot;List-Parameter&amp;quot;, which contains a value that changes based on either spline or linear interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
In the Data field there will be subgroups of values with two floats, the first float being the time and the second being the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc). &amp;lt;br&amp;gt;&lt;br /&gt;
In a List_Parameter function, there will be another group under &amp;quot;Range&amp;quot;, that will detail the type of interpolation used in the function, either &amp;quot;Linerar&amp;quot; or &amp;quot;BSPline&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;Range&amp;quot;: &amp;quot;0.0 0.666667&amp;quot;,&lt;br /&gt;
&amp;quot;Interpolation&amp;quot;: &amp;quot;BSPLine&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In a Hermite function, each subgroup of values instead has three floats. The first one is  time, the second is the value of whatever you&#039;re putting , and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 will use the origin and camera angle specified in &amp;lt;code&amp;gt;demos.txt&amp;lt;/code&amp;gt; (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene &amp;lt;code&amp;gt;(x01_gamestart)&amp;lt;/code&amp;gt; with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2). (You can also use blender to get coordinates, which is especially helpful when using a custom map. This tutorial will use the gen editor, but Blender steps will be detailed later below.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
If using Blender for coordinates, assuming your map is centered correctly, you can use the coordinates of Blender&#039;s camera for the cutscene coordinates.&amp;lt;br&amp;gt;&lt;br /&gt;
To convert between Blender coords and game coords, the X value remains the same, the Z coordinate in blender will be the Y coordinate in game, and the Y coordinate in blender should be multiplied by -1.&amp;lt;br&amp;gt;&lt;br /&gt;
Location XYZ will be ViewPos, and Rotation XYZ will be TargPos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain special functions in game. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene &amp;lt;code&amp;gt;(g02_boot_onyonR)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that can be set. When these properties are set,  special functions specific to that creature that can be executed. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors whose can affect parts of the game. When a specific property of the special actor is set, the game will execute special functions depending on the property. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open special item collection UI (res_special_item)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5189</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5189"/>
		<updated>2025-10-23T20:22:10Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: adding more info based on twilight princess stb observations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
An object has both properties and variables, which control various things about that object.&lt;br /&gt;
&lt;br /&gt;
Objects also have different &amp;quot;commands&amp;quot; to affect variables and properties of an object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;VAR&amp;quot; command binds a value or function to a variable.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Its syntax is: &amp;lt;code&amp;gt;&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The value/function types are:&lt;br /&gt;
** Void, to write a 0 to the variable&lt;br /&gt;
** Immediate, to write a direct value to the variable (specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Index, to attach a JFVB function to the variable (the function index is specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* A variable can affect more than one value of the bound object, in this case, the &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt; field will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SET&amp;quot; command directly affects the properties of the bound object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* How you set a property is dependent on what the property is (hence they don&#039;t have a specific way of being set, unlike variables.) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;WAIT&amp;quot; command halts the execution of the object for a certain amount of frames.&amp;lt;br&amp;gt;&lt;br /&gt;
* After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/functions will be unbound from the variables.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SYNC&amp;quot; command halts the execution of the object until an event, external to the STB, is fired.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; commands (respectively) OR/XOR/AND the stb flags with a value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used in Pikmin 2: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation. There is also &amp;quot;List-Parameter&amp;quot;, which contains a value that changes based on either spline or linear interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
In the Data field there will be subgroups of values with two floats, the first float being the time and the second being the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc). &amp;lt;br&amp;gt;&lt;br /&gt;
In a List_Parameter function, there will be another group under &amp;quot;Range&amp;quot;, that will detail the type of interpolation used in the function, either &amp;quot;Linear&amp;quot; or &amp;quot;BSPline&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;Range&amp;quot;: &amp;quot;0.0 0.666667&amp;quot;,&lt;br /&gt;
&amp;quot;Interpolation&amp;quot;: &amp;quot;BSPLine&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In a Hermite function, each subgroup of values instead has three floats. The first one is  time, the second is the value of whatever you&#039;re putting , and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 will use the origin and camera angle specified in &amp;lt;code&amp;gt;demos.txt&amp;lt;/code&amp;gt; (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene &amp;lt;code&amp;gt;(x01_gamestart)&amp;lt;/code&amp;gt; with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2). (You can also use blender to get coordinates, which is especially helpful when using a custom map. This tutorial will use the gen editor, but Blender steps will be detailed later below.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
If using Blender for coordinates, assuming your map is centered correctly, you can use the coordinates of Blender&#039;s camera for the cutscene coordinates.&amp;lt;br&amp;gt;&lt;br /&gt;
To convert between Blender coords and game coords, the X value remains the same, the Z coordinate in blender will be the Y coordinate in game, and the Y coordinate in blender should be multiplied by -1.&amp;lt;br&amp;gt;&lt;br /&gt;
Location XYZ will be ViewPos, and Rotation XYZ will be TargPos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain special functions in game. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene &amp;lt;code&amp;gt;(g02_boot_onyonR)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that can be set. When these properties are set,  special functions specific to that creature that can be executed. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors whose can affect parts of the game. When a specific property of the special actor is set, the game will execute special functions depending on the property. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open special item collection UI (res_special_item)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_instructions&amp;diff=5188</id>
		<title>Pikmin 2 instructions</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_instructions&amp;diff=5188"/>
		<updated>2025-10-22T00:49:52Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: update jatast version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Helpful instructions for editing and handling &#039;&#039;Pikmin 2&#039;&#039;&#039;s files. This guide assumes you have some basic knowledge on navigating folders, opening files, using commands, etc.&lt;br /&gt;
See [[General instructions#Obtaining a game&#039;s files|obtaining a game&#039;s files]] if you are unsure on how to do so.&lt;br /&gt;
&lt;br /&gt;
You can view and edit a lot of the game&#039;s files. You can read them without any worry, but if you want to change them and have those changes apply in-game, see [[General instructions#Saving changes|saving changes]] in [[general instructions]].&lt;br /&gt;
{{todo|Elaborate.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended you refer to the file lists and other pages on the main page while editing.&lt;br /&gt;
&lt;br /&gt;
==Tools and files==&lt;br /&gt;
&lt;br /&gt;
Here are some prominent files that come up when modding.&lt;br /&gt;
 .DOL: Segmented executable binary format which contains the games compiled source.&lt;br /&gt;
 .SZS: Archive files similar to .ZIP or .RAR archive files. SZS files are RARC archives compressed with Yaz0 compression.&lt;br /&gt;
 .ARC: Archive files similar to .ZIP or .RAR archive files. ARC files are RARC archives not compressed with Yaz0 compression.&lt;br /&gt;
 .TXT: Generic plaintext files. Use Notepad++ to preserve the Shift-JIS encoding.&lt;br /&gt;
 .BMD/.BDL: Proprietary 3D model files.&lt;br /&gt;
 .BMS: Sequenced audio files, similar to MIDI but more advanced. [https://pikmintkb.com/wiki/Pikmin_2_BMS_file_list List]&lt;br /&gt;
 .CND: Files that control how various sequences in a BMD file are randomly chained together in a complex system. Used for cave music. &lt;br /&gt;
 [https://pikmintkb.com/wiki/Pikmin_2_CND_file_list List]&lt;br /&gt;
 .AST: Streamed audio files. [https://pikmintkb.com/wiki/AST_file_list List]&lt;br /&gt;
 .AW: Soundbank files. Usually named wScene in Pikmin 2.&lt;br /&gt;
 .BMG: Used to store in-game text strings.&lt;br /&gt;
 .BLO: UI screen data.&lt;br /&gt;
 .BTI: Textures.&lt;br /&gt;
 .BTK: Animated textures.&lt;br /&gt;
 .STB: Cutscene data.&lt;br /&gt;
 .THP: Prerendered videos (GC/Wii)&lt;br /&gt;
 .WEBM: Prerendered videos (Switch)&lt;br /&gt;
 .JPC: Particle effect container. [https://pikmintkb.com/wiki/JPC_particles List]&lt;br /&gt;
 .JPA: Particle effect.&lt;br /&gt;
 .BCA: Full animation data.&lt;br /&gt;
 .BCK: Keyframed animation data.&lt;br /&gt;
&lt;br /&gt;
Here are some prominent tools: &lt;br /&gt;
&lt;br /&gt;
 [https://github.com/SuperHackio/WiiExplorer/releases/download/V1.5.0.5/WiiExplorer.V1.5.0.5.zip  WiiExplorer]- Used for extracting and converting RARC archives. Can also compress archives to SZS.&lt;br /&gt;
 [https://notepad-plus-plus.org/downloads/ Notepad++] - Used for editing text files, many of which need to preserve Shift-JIS encoding.&lt;br /&gt;
 [https://github.com/RenolY2/pikmin-tools/releases/download/v1.0.1.3/piktools-1.0.1.3.zip Gen &amp;amp; Route Editor]  - Used for editing overworld generation and pikmin carrying routes.&lt;br /&gt;
 [https://github.com/Drought-Ender/Drought-Cave-Creator/archive/refs/heads/main.zip Drought&#039;s Cave Creator] - Used for creating and modifiying cave files, cave lighting, and cave unit definition files.&lt;br /&gt;
 [https://xayr.gay/tools/SoundModdingToolkit/6.3.3/PIKMIN2_SoundModdingToolkit_6.3.3_win64.zip Pikmin 2 Sound Modding Toolkit] - Used for modyfing sounds in the game.&lt;br /&gt;
 [https://github.com/XAYRGA/JAIMaker/releases/download/1.7.3/JAIMaker.1.7.3.-.Lightly.Salted.Almond.zip JAIMaker] - Used for creating custom sequenced music as BMS files. Also supports creating interactive overworld music. Cave music requires additional hex editing.&lt;br /&gt;
 [https://github.com/XAYRGA/jatast/releases/download/1.1/publish_win64.zip JATAST] - Used for converting .wav files into .ast files for streamed music.&lt;br /&gt;
 [https://github.com/RenolY2/pikminBMG/archive/refs/tags/v0.7.4.zip pikminBMG] - Used for editing text in the game.&lt;br /&gt;
 [https://github.com/RenolY2/pyblo2-gui/releases/download/v0.7.3/blo-gui-editor-v0.7.3.zip pyblo2-gui] - Used for modyfing blo files.&lt;br /&gt;
 [https://mega.nz/file/m4YzXb4b#pXMGCSapWQjB72mushjH0DD7XQOwrMQOm97d_F_CSHs FinModelUtility] - Used for converting BMD files to formats that can be imported into any 3D modeling software. &lt;br /&gt;
 [https://github.com/pish-pish/SuperBMD/releases/download/v2.4.9.2/SuperBMD.zip SuperBMD] - Used for converting FBX and DAE files back to BMD.&lt;br /&gt;
 [https://github.com/riidefi/RiiStudio/releases/download/Alpha-5.11.1/RiiStudio_Windows.zip RiiStudio] - Used for BMD materials editing. (Pish don&#039;t kill me GUI is just easier for now)&lt;br /&gt;
 [https://github.com/RenolY2/obj2grid/archive/refs/tags/v0.8.zip obj2grid] - Used for converting between .OBJ 3D files and pikmin 2&#039;s collision formats.&lt;br /&gt;
 [https://github.com/LagoLunatic/GCFT/releases/tag/2.0.0 GameCube File Tools] - Used for modification of many GameCube/early Wii era formats, notably BTI files. &lt;br /&gt;
 Hex editor - needed for additional editing of other files such as .BIN binary files. An editor of choice is HxD: (https://mh-nexus.de/en/hxd/)&lt;br /&gt;
More tools can be found in Hocotate Hacker if needed. Compiled builds for many of these tools are for Windows, but macOS and Linux users can compile many from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A page listing the game&#039;s internal filesystem is [https://pikmintkb.com/wiki/Pikmin_2_directory_tree here], useful for keeping track of where editable files are. &lt;br /&gt;
&lt;br /&gt;
==Cave editing==&lt;br /&gt;
&lt;br /&gt;
You can make custom caves with Drought&#039;s Cave Creator. &lt;br /&gt;
&lt;br /&gt;
See [https://pikmintkb.com/wiki/Cave_generation_parameters this page] for cave generation specifics.&lt;br /&gt;
&lt;br /&gt;
The BgmList files in &amp;lt;code&amp;gt;user/Totaka&amp;lt;/code&amp;gt; control what cave song is used for each sublevel. &amp;lt;code&amp;gt;BgmList_Tutorial.txt&amp;lt;/code&amp;gt; is used for Valley of Repose caves, &amp;lt;code&amp;gt;BgmList_Forest.txt&amp;lt;/code&amp;gt; is used for Awakening Wood caves, &amp;lt;code&amp;gt;BgmList_Yakushima.txt&amp;lt;/code&amp;gt; is used for Perplexing Pool caves, &amp;lt;code&amp;gt;BgmList_Last.txt&amp;lt;/code&amp;gt; is used for Wistful Wild caves, and &amp;lt;code&amp;gt;ChallengeBgmList.txt&amp;lt;/code&amp;gt; is used for caves in Challenge Mode. When adding more sublevels to any cave, you must remember to add more cave songs to the applicable BgmList text file, or else the game will crash.  &lt;br /&gt;
&lt;br /&gt;
You can change the listed CND file to change what song plays in a sublevel.&lt;br /&gt;
&lt;br /&gt;
To add completely new cave music tracks,&lt;br /&gt;
&lt;br /&gt;
1) Make a new BMS file in &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc&amp;lt;/code&amp;gt; called &amp;lt;code&amp;gt;new_09.bms&amp;lt;/code&amp;gt; or so in order, 9, 10, 11, etc&lt;br /&gt;
&lt;br /&gt;
2) Make a new CND file in &amp;lt;code&amp;gt;AudioRes/Conductor.arc&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;new_09_0.cnd&amp;lt;/code&amp;gt;, just the BMS name with _0 (leave the CND blank if you don&#039;t want interactivity, or see the CND file guide below to make a full track.)&lt;br /&gt;
&lt;br /&gt;
3) Add the new BMS in the &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; after the new_0-8&lt;br /&gt;
&lt;br /&gt;
4) Add the new CND in &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt;. If not doing interactivity, copy paste new_00&#039;s entry with the new CND&#039;s name; otherwise, see the cave music guide for more details.&lt;br /&gt;
&lt;br /&gt;
5) Add a new wScene for your song using the Sound Modding Toolkit (see guide below), new_09 will use &amp;lt;code&amp;gt;wScene46.aw&amp;lt;/code&amp;gt; and so on in order. &amp;lt;code&amp;gt;wScene48.aw&amp;lt;/code&amp;gt; is used for the Submerged Castle theme and Waterwraith approaching theme, so it&#039;s a good idea to skip from &amp;lt;code&amp;gt;new_09.bms&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;new_12.bms&amp;lt;/code&amp;gt; so you skip to &amp;lt;code&amp;gt;wScene49.aw&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
6) Set the new song to be used in the applicable BgmList file for your area/challenge mode BgmList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overworld editing==&lt;br /&gt;
&lt;br /&gt;
You can edit overworld generation with the Gen &amp;amp; Route Editor&lt;br /&gt;
&lt;br /&gt;
Instructions on how to use the program are in its reademe as well as the page on this website.&lt;br /&gt;
See [https://pikmintkb.com/wiki/Pikmin_2_area_generator_file this page] for overworld generation specifics.&lt;br /&gt;
&lt;br /&gt;
To change what sounds are made when a leader walks on ground, or to change where Pikmin seeds can sprout, use obj2grid to convert the grid.bin/mapcode.bin files (located in texts.szs for a given area or cave unit model) to obj, then import this obj into blender. Make a material on the mesh you want to edit, and name it according to this scheme:&lt;br /&gt;
&lt;br /&gt;
0xXY&lt;br /&gt;
&lt;br /&gt;
First Digit (Physical characteristics):&lt;br /&gt;
&lt;br /&gt;
Pikmin seeds can root:&lt;br /&gt;
0 - full friction (friction is slipperyness)&lt;br /&gt;
1 - some friction&lt;br /&gt;
2 - no friction&lt;br /&gt;
&lt;br /&gt;
Pikmin seeds die:&lt;br /&gt;
4 - full friction&lt;br /&gt;
5 - some friction&lt;br /&gt;
6 - no friction&lt;br /&gt;
&lt;br /&gt;
Second Digit (Sound index):&lt;br /&gt;
&lt;br /&gt;
0 - grass&lt;br /&gt;
1 - soil&lt;br /&gt;
2 - sand&lt;br /&gt;
3 - wood&lt;br /&gt;
4 - water&lt;br /&gt;
5- stone&lt;br /&gt;
6 - iron&lt;br /&gt;
7 - snow&lt;br /&gt;
8 - water (has water particle effects when used with 1 as the first digit)&lt;br /&gt;
9 - paper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export the model back to obj, use obj2grid to convert the obj to grid.bin/mapcode.bin, and import back into the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Model replacement==&lt;br /&gt;
see this guide for now &lt;br /&gt;
https://pikmintkb.com/wiki/Custom_models&lt;br /&gt;
&lt;br /&gt;
==Adding more treasures==&lt;br /&gt;
&lt;br /&gt;
create a new szs in \user\Abe\Pellet\&amp;lt;region&amp;gt; with your bmd, as well as the carry.bck animation. make sure that the bmd and szs are named the same thing (ex. ahiru.bmd, ahiru.szs).&lt;br /&gt;
then go to otakara_config.txt in pelletlist_(language).szs and add a new entry for your custom treasure, and edit anything you need to. make sure the names refer to the correct things. At the top of the file, increment the number at the top (normally 188). then, open otakara_texts.szs and create a new folder with the same name as your szs containing an animmgr.txt and a collinfo.txt (you can copy these from another treasure).&lt;br /&gt;
This is all you need to do to get the treasure working in game, however the piklopedia requires a bit more work.&lt;br /&gt;
go to \user\Matoba\resulttex\us\arc.szs and again create a folder with the name of your custom treasure. this is where you will but an icon for your treasure. &lt;br /&gt;
the icon should be a 32 x 32 bti image named texture.bti.&lt;br /&gt;
finally, go to \message\mesRes_&amp;lt;language&amp;gt;.szs and extract pikmin2.bmg using the bmg tool in ⁠pikmin-tools. there, you will add an entry for your treasure&#039;s in game name (this does not have to be the same name as the one in the filesystem) and also a piklopedia entry for your treasure. You should be all set at that point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu and HUD editing ==&lt;br /&gt;
&lt;br /&gt;
BLO files, which house most of the screen resources, can be edited with pyblo2-gui. Often, positions of a UI element may be controlled by a BCK element, which can be edited in the animation part of the program.&lt;br /&gt;
BRK and BTK animations may also be involved,which can be edited with bark_conv and btk-conv respectively. BPK files can be edited with j3d-animation-editor.&lt;br /&gt;
&lt;br /&gt;
==Custom sounds and music==&lt;br /&gt;
&lt;br /&gt;
Custom streamed music can be made with JATAST, a command line tool for converting WAV files to AST files. When converting a .wav file, have the loop points be contained in the .wav file itself. It is important to have new .ast files encoded with ADPCM4, as this helps with disc read speeds. To convert .wav files to ADPCM4 .asts, run this in a command prompt or terminal: &amp;lt;code&amp;gt;jatast yoursong.wav newsong.ast -encode-format adpcm4&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Custom sequenced music can be made with either flaaffy (command-line) or JAIMaker (GUI-based), tools that convert MIDI files to BMS files. For non-interactive sequenced music (such as the world map theme and high scores theme), a simple MIDI conversion will suffice. Review [https://docs.google.com/document/d/1UNhdBL3tYAn9sHO8gdOVJIpaHVo9_bbCLz7OazkEgZA/edit this document] to see what instruments you can use for your song depending on what bms you&#039;re replacing  (if you&#039;re not editing wScenes with the Sound Modding Toolkit, that is)&lt;br /&gt;
&lt;br /&gt;
If you want interactive overworld music, or randomized interactive cave music, see these two guides:&lt;br /&gt;
&lt;br /&gt;
[https://pikmintkb.com/wiki/Creating_Interactive_BMS_Files Creating interactive area music]&lt;br /&gt;
&lt;br /&gt;
[https://pikmintkb.com/wiki/Creating_cave_music Creating interactive cave music]&lt;br /&gt;
&lt;br /&gt;
Replacement sounds, custom samples, wScene editing + creation, and new instruments can be done with the Pikmin 2 Sound Modding Toolkit. This [https://pikmintkb.com/wiki/Sound_Replacement_Tutorial page] outlines the process, as well as a process for doing custom sound effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running your modified game==&lt;br /&gt;
See [[General instructions#Running a modified game]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Instructions]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5187</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5187"/>
		<updated>2025-10-19T22:22:49Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
An object has both properties and variables, which control various things about that object.&lt;br /&gt;
&lt;br /&gt;
Objects also have different &amp;quot;commands&amp;quot; to affect variables and properties of an object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;VAR&amp;quot; command binds a value or function to a variable.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Its syntax is: &amp;lt;code&amp;gt;&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The value/function types are:&lt;br /&gt;
** Void, to write a 0 to the variable&lt;br /&gt;
** Immediate, to write a direct value to the variable (specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Index, to attach a JFVB function to the variable (the function index is specified in &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* A variable can affect more than one value of the bound object, in this case, the &amp;lt;code&amp;gt;(Data)&amp;lt;/code&amp;gt; field will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SET&amp;quot; command directly affects the properties of the bound object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* How you set a property is dependent on what the property is (hence they don&#039;t have a specific way of being set, unlike variables.) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;WAIT&amp;quot; command halts the execution of the object for a certain amount of frames.&amp;lt;br&amp;gt;&lt;br /&gt;
* After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/functions will be unbound from the variables.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SYNC&amp;quot; command halts the execution of the object until an event, external to the STB, is fired.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; commands (respectively) OR/XOR/AND the stb flags with a value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 will use the origin and camera angle specified in &amp;lt;code&amp;gt;demos.txt&amp;lt;/code&amp;gt; (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene &amp;lt;code&amp;gt;(x01_gamestart)&amp;lt;/code&amp;gt; with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2). (You can also use blender to get coordinates, which is especially helpful when using a custom map. This tutorial will use the gen editor, but Blender steps will be detailed later below.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
If using Blender for coordinates, assuming your map is centered correctly, you can use the coordinates of Blender&#039;s camera for the cutscene coordinates.&amp;lt;br&amp;gt;&lt;br /&gt;
To convert between Blender coords and game coords, the X value remains the same, the Z coordinate in blender will be the Y coordinate in game, and the Y coordinate in blender should be multiplied by -1.&amp;lt;br&amp;gt;&lt;br /&gt;
Location XYZ will be ViewPos, and Rotation XYZ will be TargPos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain special functions in game. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene &amp;lt;code&amp;gt;(g02_boot_onyonR)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that can be set. When these properties are set,  special functions specific to that creature that can be executed. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors whose can affect parts of the game. When a specific property of the special actor is set, the game will execute special functions depending on the property. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open special item collection UI (res_special_item)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5186</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5186"/>
		<updated>2025-10-19T22:21:12Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: clear up stuff about commands, properties and variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
An object has both properties and variables, which control various things about that object.&lt;br /&gt;
&lt;br /&gt;
Objects also have different &amp;quot;commands&amp;quot; to affect variables and properties of an object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;VAR&amp;quot; command binds a value or function to a variable.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Its syntax is:&lt;br /&gt;
* &amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
*The value/function types are:&lt;br /&gt;
** Void, to write a 0 to the variable&lt;br /&gt;
** Immediate, to write a direct value to the variable (specified in (Data))&lt;br /&gt;
** Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&lt;br /&gt;
** Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&lt;br /&gt;
&lt;br /&gt;
* A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
* will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SET&amp;quot; command directly affects the properties of the bound object.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* How you set a property is dependent on what the property is (hence they don&#039;t have a specific way of being set, unlike variables.) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;WAIT&amp;quot; command halts the execution of the object for a certain amount of frames.&amp;lt;br&amp;gt;&lt;br /&gt;
* After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/functions will be unbound from the variables.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;SYNC&amp;quot; command halts the execution of the object until an event, external to the STB, is fired.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; commands (respectively) OR/XOR/AND the stb flags with a value.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 will use the origin and camera angle specified in &amp;lt;code&amp;gt;demos.txt&amp;lt;/code&amp;gt; (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene &amp;lt;code&amp;gt;(x01_gamestart)&amp;lt;/code&amp;gt; with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2). (You can also use blender to get coordinates, which is especially helpful when using a custom map. This tutorial will use the gen editor, but Blender steps will be detailed later below.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
If using Blender for coordinates, assuming your map is centered correctly, you can use the coordinates of Blender&#039;s camera for the cutscene coordinates.&amp;lt;br&amp;gt;&lt;br /&gt;
To convert between Blender coords and game coords, the X value remains the same, the Z coordinate in blender will be the Y coordinate in game, and the Y coordinate in blender should be multiplied by -1.&amp;lt;br&amp;gt;&lt;br /&gt;
Location XYZ will be ViewPos, and Rotation XYZ will be TargPos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain special functions in game. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene &amp;lt;code&amp;gt;(g02_boot_onyonR)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that can be set. When these properties are set,  special functions specific to that creature that can be executed. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors whose can affect parts of the game. When a specific property of the special actor is set, the game will execute special functions depending on the property. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open special item collection UI (res_special_item)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=5185</id>
		<title>Pikmin 2 directory tree</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=5185"/>
		<updated>2025-10-19T19:32:21Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: making sure no one tries deleting mizu.bti accidentally&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&#039;&#039;Pikmin 2&#039;&#039; directory tree}}&lt;br /&gt;
This article lists all folders and noteworthy files in &#039;&#039;Pikmin 2&#039;&#039;, and recommended tools for viewing or modifying them.&amp;lt;br&amp;gt;&lt;br /&gt;
Yellow rows are folders, and red rows are unused files or folders with no effect on the game.&lt;br /&gt;
&lt;br /&gt;
{{todo|Add links for everything.}}&lt;br /&gt;
&lt;br /&gt;
==GameCube==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || bastool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the root directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;*gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || bmc2json&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2*P.MAP&amp;lt;/code&amp;gt; || Symbol map. Text file that lists where every function and piece of data in the game&#039;s code is located and its name, and is used in-game by the crash handler for debugging purposes. The symbol map in retail versions of the game is unreadable. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;timeStamp*.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Build dates. &amp;quot;J&amp;quot;, &amp;quot;P&amp;quot;, and &amp;quot;U&amp;quot; likely represent the Japanese, European, and North American versions. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/stages.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Bridge models. || FinModelUtility, SuperBMD, RiiStudio, objs2PlatAttacher (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; platattacher collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/develop/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover development tool resources, seemingly for a map editor, route/path manager, a [[Jsystem#J2DGraph|2D graphic]] tester, and animation tester, among other things. || FinModelUtility, SuperBMD, RiiStudio, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;user/Kando/mizu.bti&amp;lt;/code&amp;gt; || Default framebuffer texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2pla (for the &amp;lt;code&amp;gt;.pla&amp;lt;/code&amp;gt; platform collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || Texture that is placed below treasures that spawn in caves. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || MailTableConverter&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/caveinfo/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb, stb2json&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveconc and new_XX [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveglass and caverelax [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Wii==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;hbm/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Wii home button menu resources. ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;nand/saveBanner/SaveBanner2_*.tpl&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Save banner images. || Wiimms Image Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;keyconfig.ini&amp;lt;/code&amp;gt; || .ini file that controls button mapping for most actions in the game. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Disc Channel intro. || ShowMeWads, Switch Toolbox (layouts)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin12/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Extra resources shared between Wii Pikmin 1 &amp;amp; 2. ||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin12/3d/cursor.szs/cursor.brres&amp;lt;/code&amp;gt; || 3D model used for the cursor. || BrawlCrate, Switch Toolbox &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin12/cursor/cursorBlur.bti&amp;lt;/code&amp;gt; || Texture used for the cursor trail. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin12/*/font/pikmin12.brfnt&amp;lt;/code&amp;gt; || Main font used for new Wii Pikmin 1 &amp;amp; 2 text, such as the ones in BRLYT files. || BRFNTify Next&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin12/*/message/pik12message.bmc&amp;lt;/code&amp;gt; || Font color data for new Wii Pikmin 1 &amp;amp; 2 text. ||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin12/*/message/pik12message.bmg&amp;lt;/code&amp;gt; || Message resource for new Wii Pikmin 1 &amp;amp; 2 text. || Wiimms BMG Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin12/screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|BRLYT files. Resources for the Wii Remote and Nunchuk connection screens, and the attract mode caption UI. || Switch Toolbox &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Main Pikmin 2 resources. ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || bastool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the pikmin2 directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || bmc2json&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/message/pik12message.bmc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused font coloring data for Wii Pikmin 1 &amp;amp; 2.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/message/pik12message.bmg&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused message resource for Wii Pikmin 1 &amp;amp; 2. || Wiimms BMG Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. The .ini files for the attarct mode demos use a different caption system. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/stages_*.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Bridge models. || FinModelUtility, SuperBMD, RiiStudio, objs2PlatAttacher (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; platattacher collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin2/user/Kando/mizu.bti&amp;lt;/code&amp;gt; || Default framebuffer texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2pla (for the &amp;lt;code&amp;gt;.pla&amp;lt;/code&amp;gt; platform collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the old cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || Texture that is placed below treasures that spawn in caves. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || MailTableConverter&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/caveinfo/*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb, stb2json&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveconc and new_XX [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveglass and caverelax [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;PSSpk/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Wii Remote speaker sound effect resources. ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PSSpk/PSSpkRes.arc/PSSpkWave.csw&amp;lt;/code&amp;gt; || Audio container for sound effects that come out of the Wii Remote speaker.|| cswtool&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;system12.ini&amp;lt;/code&amp;gt; || ini file that contains some extra game configuration options. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;| &amp;lt;code&amp;gt;Wii_Strap_Reminder/*/bti/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;| [[BTI file|&amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; files]]. Wii Remote strap reminders shown on startup. || GameCube File Tools&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Directory trees]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5184</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5184"/>
		<updated>2025-10-18T14:43:24Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An object contains a list of &amp;quot;commands&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;VAR&amp;quot; to bind a value/function to a variable&lt;br /&gt;
* &amp;quot;SET&amp;quot; to directly affect a properties of the bound object&lt;br /&gt;
* &amp;quot;WAIT&amp;quot; to halt the execution of the object for a certain amount of frames&lt;br /&gt;
* &amp;quot;SYNC&amp;quot; to halt the execution of the object until an event, external to the STB, is fired&lt;br /&gt;
* &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; to OR/XOR/AND the stb flags with a value&lt;br /&gt;
&lt;br /&gt;
Each object has a set of &amp;quot;variables&amp;quot;, which are bound to a properties of the object. A value/function can be bound to a variable using the &amp;quot;VAR&amp;quot; command:&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
The value/function types are:&lt;br /&gt;
 &lt;br /&gt;
Void, to write a 0 to the variable&amp;lt;br&amp;gt;&lt;br /&gt;
Immediate, to write a direct value to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/function will be unbound from the &lt;br /&gt;
variables.&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 will use the origin and camera angle specified in &amp;lt;code&amp;gt;demos.txt&amp;lt;/code&amp;gt; (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene &amp;lt;code&amp;gt;(x01_gamestart)&amp;lt;/code&amp;gt; with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2). (You can also use blender to get coordinates, which is especially helpful when using a custom map. This tutorial will use the gen editor, but Blender steps will be detailed later below.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
If using Blender for coordinates, assuming your map is centered correctly, you can use the coordinates of Blender&#039;s camera for the cutscene coordinates.&amp;lt;br&amp;gt;&lt;br /&gt;
To convert between Blender coords and game coords, the X value remains the same, the Z coordinate in blender will be the Y coordinate in game, and the Y coordinate in blender should be multiplied by -1.&amp;lt;br&amp;gt;&lt;br /&gt;
Location XYZ will be ViewPos, and Rotation XYZ will be TargPos.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain commands. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene &amp;lt;code&amp;gt;(g02_boot_onyonR)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that serve as commands that can be set. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors that can affect parts of the game and execute special commands. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties (commands) are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open special item collection UI (res_special_item)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the StartDemoCamera command is used, the cutscene will use the game&#039;s camera rather than the cutscene camera. This is mainly seen in &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5183</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5183"/>
		<updated>2025-10-18T14:41:24Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: blender steps added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An object contains a list of &amp;quot;commands&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;VAR&amp;quot; to bind a value/function to a variable&lt;br /&gt;
* &amp;quot;SET&amp;quot; to directly affect a properties of the bound object&lt;br /&gt;
* &amp;quot;WAIT&amp;quot; to halt the execution of the object for a certain amount of frames&lt;br /&gt;
* &amp;quot;SYNC&amp;quot; to halt the execution of the object until an event, external to the STB, is fired&lt;br /&gt;
* &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; to OR/XOR/AND the stb flags with a value&lt;br /&gt;
&lt;br /&gt;
Each object has a set of &amp;quot;variables&amp;quot;, which are bound to a properties of the object. A value/function can be bound to a variable using the &amp;quot;VAR&amp;quot; command:&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
The value/function types are:&lt;br /&gt;
 &lt;br /&gt;
Void, to write a 0 to the variable&amp;lt;br&amp;gt;&lt;br /&gt;
Immediate, to write a direct value to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/function will be unbound from the &lt;br /&gt;
variables.&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 will use the origin and camera angle specified in &amp;lt;code&amp;gt;demos.txt&amp;lt;/code&amp;gt; (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene &amp;lt;code&amp;gt;(x01_gamestart)&amp;lt;/code&amp;gt; with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2). (You can also use blender to get coordinates, which is especially helpful when using a custom map. This tutorial will use the gen editor, but Blender steps will be detailed later below.)&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
If using Blender for coordinates, assuming your map is centered correctly, you can use the coordinates of Blender&#039;s camera for the cutscene coordinates.&amp;lt;br&amp;gt;&lt;br /&gt;
To convert between Blender coords and game coords, the X value remains the same, the Z coordinate in blender will be the Y coordinate in game, and the Y coordinate in blender should be multiplied by -1.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain commands. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene &amp;lt;code&amp;gt;(g02_boot_onyonR)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that serve as commands that can be set. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors that can affect parts of the game and execute special commands. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties (commands) are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open special item collection UI (res_special_item)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the StartDemoCamera command is used, the cutscene will use the game&#039;s camera rather than the cutscene camera. This is mainly seen in &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=5182</id>
		<title>Pikmin 2 directory tree</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=5182"/>
		<updated>2025-10-14T19:52:48Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: corrections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&#039;&#039;Pikmin 2&#039;&#039; directory tree}}&lt;br /&gt;
This article lists all folders and noteworthy files in &#039;&#039;Pikmin 2&#039;&#039;, and recommended tools for viewing or modifying them.&amp;lt;br&amp;gt;&lt;br /&gt;
Yellow rows are folders, and red rows are unused files or folders with no effect on the game.&lt;br /&gt;
&lt;br /&gt;
{{todo|Add links for everything.}}&lt;br /&gt;
&lt;br /&gt;
==GameCube==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || bastool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the root directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;*gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || bmc2json&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2*P.MAP&amp;lt;/code&amp;gt; || Symbol map. Text file that lists where every function and piece of data in the game&#039;s code is located and its name, and is used in-game by the crash handler for debugging purposes. The symbol map in retail versions of the game is unreadable. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;timeStamp*.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Build dates. &amp;quot;J&amp;quot;, &amp;quot;P&amp;quot;, and &amp;quot;U&amp;quot; likely represent the Japanese, European, and North American versions. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/stages.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Bridge models. || FinModelUtility, SuperBMD, RiiStudio, objs2PlatAttacher (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; platattacher collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/develop/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover development tool resources, seemingly for a map editor, route/path manager, a [[Jsystem#J2DGraph|2D graphic]] tester, and animation tester, among other things. || FinModelUtility, SuperBMD, RiiStudio, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/mizu.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2pla (for the &amp;lt;code&amp;gt;.pla&amp;lt;/code&amp;gt; platform collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || Texture that is placed below treasures that spawn in caves. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || MailTableConverter&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/caveinfo/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb, stb2json&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveconc and new_XX [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveglass and caverelax [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Wii==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;hbm/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Wii home button menu resources. ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;nand/saveBanner/SaveBanner2_*.tpl&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Save banner images. || Wiimms Image Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;keyconfig.ini&amp;lt;/code&amp;gt; || .ini file that controls button mapping for most actions in the game. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Disc Channel intro. || ShowMeWads, Switch Toolbox (layouts)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin12/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Extra resources shared between Wii Pikmin 1 &amp;amp; 2. ||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin12/3d/cursor.szs/cursor.brres&amp;lt;/code&amp;gt; || 3D model used for the cursor. || BrawlCrate, Switch Toolbox &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin12/cursor/cursorBlur.bti&amp;lt;/code&amp;gt; || Texture used for the cursor trail. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin12/*/font/pikmin12.brfnt&amp;lt;/code&amp;gt; || Main font used for new Wii Pikmin 1 &amp;amp; 2 text, such as the ones in BRLYT files. || BRFNTify Next&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin12/*/message/pik12message.bmc&amp;lt;/code&amp;gt; || Font color data for new Wii Pikmin 1 &amp;amp; 2 text. ||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;pikmin12/*/message/pik12message.bmg&amp;lt;/code&amp;gt; || Message resource for new Wii Pikmin 1 &amp;amp; 2 text. || Wiimms BMG Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin12/screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|BRLYT files. Resources for the Wii Remote and Nunchuk connection screens, and the attract mode caption UI. || Switch Toolbox &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Main Pikmin 2 resources. ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || bastool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the pikmin2 directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || bmc2json&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/message/pik12message.bmc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused font coloring data for Wii Pikmin 1 &amp;amp; 2.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/message/pik12message.bmg&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused message resource for Wii Pikmin 1 &amp;amp; 2. || Wiimms BMG Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. The .ini files for the attarct mode demos use a different caption system. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/stages_*.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Bridge models. || FinModelUtility, SuperBMD, RiiStudio, objs2PlatAttacher (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; platattacher collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/mizu.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2pla (for the &amp;lt;code&amp;gt;.pla&amp;lt;/code&amp;gt; platform collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the old cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || Texture that is placed below treasures that spawn in caves. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || MailTableConverter&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/caveinfo/*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb, stb2json&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveconc and new_XX [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveglass and caverelax [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2/user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;pikmin2/user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;PSSpk/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Wii Remote speaker sound effect resources. ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PSSpk/PSSpkRes.arc/PSSpkWave.csw&amp;lt;/code&amp;gt; || Audio container for sound effects that come out of the Wii Remote speaker.|| cswtool&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;system12.ini&amp;lt;/code&amp;gt; || ini file that contains some extra game configuration options. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;| &amp;lt;code&amp;gt;Wii_Strap_Reminder/*/bti/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;| [[BTI file|&amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; files]]. Wii Remote strap reminders shown on startup. || GameCube File Tools&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Directory trees]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_troubleshooting&amp;diff=5151</id>
		<title>Pikmin 2 troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_troubleshooting&amp;diff=5151"/>
		<updated>2025-09-18T19:36:24Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: oops I forgot this&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Solutions to common problems that can occur while editing &#039;&#039;Pikmin 2&#039;&#039;&#039;s files.&lt;br /&gt;
&lt;br /&gt;
Note: Get the automatic crash debugger screen code listed below before continuing, as that crash screen can provide valuable info on what caused a crash.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Automatically Show Exception Handler (GameCube USA)&lt;br /&gt;
0442219c 60000000&lt;br /&gt;
&lt;br /&gt;
Automatically Show Exception Handler (GameCube PAL)&lt;br /&gt;
04422440 60000000&lt;br /&gt;
&lt;br /&gt;
Automatically Show Exception Handler (GameCube JPN)&lt;br /&gt;
04423ca0 60000000&lt;br /&gt;
&lt;br /&gt;
Automatically Show Exception Handler (Wii USA)&lt;br /&gt;
044a803c 60000000&lt;br /&gt;
&lt;br /&gt;
Automatically Show Exception Handler (GameCube USA Demo 1)&lt;br /&gt;
04422218 60000000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Custom models ==&lt;br /&gt;
===My custom model has random stretchy bits ===&lt;br /&gt;
:Check your weight painting on the model, partial weights should not be used.&lt;br /&gt;
&lt;br /&gt;
== Overworlds and Caves ==&lt;br /&gt;
=== The changes I made to the overworld aren&#039;t applying ===&lt;br /&gt;
:You need to create a new save&lt;br /&gt;
&lt;br /&gt;
=== Adding more sublevels to a vanilla cave crashes ===&lt;br /&gt;
:Make sure the number of entries in the BgmList (located in &amp;lt;code&amp;gt;user/Totaka&amp;lt;/code&amp;gt;) for the cave matches the number of sublevels that are in the cave.&lt;br /&gt;
&lt;br /&gt;
=== Loading a cave stays stuck for longer than usual and eventually crashes Dolphin ===&lt;br /&gt;
:Open the [[cave definition file]] and go to the sublevel you were trying to load. Make sure that the amount of entries on &amp;lt;code&amp;gt;TekiInfo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ItemInfo&amp;lt;/code&amp;gt;, etc. blocks matches the number present at the start of that same block (this number commented with &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Other common crashes ==&lt;br /&gt;
===The crash screen said &amp;quot;Memory Alloc Error&amp;quot;===&lt;br /&gt;
:That means the game is out of memory. Try reducing the size of a model, or the amount of enemies in an overworld, or whatever change you made that caused the error &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Troubleshooting]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_area_generator_file&amp;diff=5150</id>
		<title>Pikmin 2 area generator file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_area_generator_file&amp;diff=5150"/>
		<updated>2025-09-10T19:02:35Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: clarify&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo|Determine how the files in loop work, and verify that the information written regarding the gen files is correct.}}&lt;br /&gt;
&lt;br /&gt;
An area&#039;s generator files can be found in &amp;lt;code&amp;gt;/user/Abe/map/*&amp;lt;/code&amp;gt;. Amongst these, the &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nonloop&amp;lt;/code&amp;gt; folders, as well as the &amp;lt;code&amp;gt;defaultgen.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;initgen.txt&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;plantsgen.txt&amp;lt;/code&amp;gt; contain data for what objects to spawn in the area, and how. These text files must be encoded in Shift-JIS, or at least ASCII. To avoid any issues, use [https://notepad-plus-plus.org/download/v7.5.6.html Notepad++] and check the encoding in the bottom right.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nonloop&amp;lt;/code&amp;gt; folders have intriguing file-naming formats. They indicate a range of days, where the day numbering is one less than what day is displayed to players. For example, consider the following files in &amp;lt;code&amp;gt;tutorial/nonloop&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;1-2.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1-4.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2-2.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3-9.txt&amp;lt;/code&amp;gt;. On day 3, the entities in the first 3 files will run their generation procedure, but not the entities in &amp;lt;code&amp;gt;3-9.txt&amp;lt;/code&amp;gt;. Files in &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; will have their entities run their generation procedure on days matching up with the last digit. For example, entities in &amp;lt;code&amp;gt;1-4.txt&amp;lt;/code&amp;gt; will run their generation procedure on days 12-15, 22-25, 32-35, and so on. Both &amp;lt;code&amp;gt;nonloop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; generators can have their days adjusted in &amp;lt;code&amp;gt;stages.txt&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;stages_(region).txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# generatorMgr &amp;lt;Generator(Default)&amp;gt;&lt;br /&gt;
{v0.1} 	# version&lt;br /&gt;
0.000000 0.000000 0.000000 	# startPos&lt;br /&gt;
0.000000 	# startDir&lt;br /&gt;
34 	# 34 generators&lt;br /&gt;
# 宇宙船&lt;br /&gt;
{&lt;br /&gt;
	{v0.1} 	# version&lt;br /&gt;
	0 	# reserved&lt;br /&gt;
	0 	# 復活日数&lt;br /&gt;
	137 70 146 136 145 68 0 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 	# &amp;lt;宇宙船&amp;gt;&lt;br /&gt;
	-331.454987 80.000000 1228.323975 	# pos&lt;br /&gt;
	0.000000 0.000000 0.000000 	# offset&lt;br /&gt;
	{item} {0002} 	# onyn&lt;br /&gt;
	{&lt;br /&gt;
		{onyn} 	# item id&lt;br /&gt;
		0.000000 -171.524994 0.000000 	# rotation&lt;br /&gt;
		{0001} 	# item local version&lt;br /&gt;
		4 	# onyon index&lt;br /&gt;
		1 	# after boot? true==1&lt;br /&gt;
	}&lt;br /&gt;
	# gen base&lt;br /&gt;
	{&lt;br /&gt;
		{_eof} &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
Each file starts with a line titled &amp;lt;code&amp;gt;# generatorMgr &amp;lt;Generator(Default)&amp;gt;&amp;lt;/code&amp;gt;. Under this is, &amp;lt;code&amp;gt;{v0.1}&amp;lt;/code&amp;gt;, which denotes the format of the file. The coordinates next to &amp;lt;code&amp;gt;startPos&amp;lt;/code&amp;gt; seem to be useless. Under &amp;lt;code&amp;gt;startDir&amp;lt;/code&amp;gt; is a number (in this case 34, the number after the hashtag does NOT matter, as does anything else after a hashtag). This number must be the same as the number of entities listed in the file, or else the game will crash. &lt;br /&gt;
&lt;br /&gt;
==Entity==&lt;br /&gt;
Underneath that in the brackets is the actual entity; in the above example, the Hocotate Ship. Everything above &amp;lt;code&amp;gt;# pos&amp;lt;/code&amp;gt; seems to be debug info for the original programmers with no effect on the entity(enemy or object) itself, EXCEPT for &amp;lt;code&amp;gt;# reserved&amp;lt;/code&amp;gt; which if set to zero, the object will only ever load once, and &amp;lt;code&amp;gt;# 復活日数&amp;lt;/code&amp;gt; underneath that, which controls how many days it takes to respawn(if set to zero, it will respawn always, even after leaving a cave). The numbers next to &amp;lt;code&amp;gt;# pos&amp;lt;/code&amp;gt; are the entity&#039;s x, y, and z coordinates. To find a point&#039;s coordinates in a level use 3ds Max or Yoshi2&#039;s Pikmin 2 Gen Editor. In &amp;lt;code&amp;gt;# offset&amp;lt;/code&amp;gt; are more x y z coordinates that will &amp;quot;offset&amp;quot; or move the entity over more by the amount specified. Under that is the Entity&#039;s class, for example &amp;lt;code&amp;gt;{item} {0002}&amp;lt;/code&amp;gt;. Further still under that in the brackets is the &amp;lt;code&amp;gt;# item id&amp;lt;/code&amp;gt;. Finally, entities have 3 &amp;lt;code&amp;gt;# rotation&amp;lt;/code&amp;gt; values, to rotate it a number of degrees on the x, y, or z axis, respectively. To keep an object upright only change the y parameter. Under that lie the Entity&#039;s unique parameters.&lt;br /&gt;
There are multiple types of Entities in the Overworld, with differing parameters. These include...&lt;br /&gt;
&lt;br /&gt;
==Entity categories==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;&amp;quot;{item} {0002}&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
#* Includes the Hocotate Ship, the Onions, Caves, Weight Blocks, Paper Bags, Gates, Rock Clogs, Nectar Grass, Nectar Pebble, Bridges, Burgeoning Spiderwort, Spiderwort Mold, and the Ujadani.&lt;br /&gt;
# &#039;&#039;&#039;&amp;quot;{piki} {0001}&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
#* Includes the main five types of Pikmin.&lt;br /&gt;
# &#039;&#039;&#039;{teki} {0005}&#039;&#039;&#039;&lt;br /&gt;
#* Includes all things in the Piklopedia/entities that can spawn in caves.&lt;br /&gt;
#* An enemy with a treasure in it is part of this group and has a value of that treasure + 768.&lt;br /&gt;
# &#039;&#039;&#039;{pelt} {0000}&#039;&#039;&#039;&lt;br /&gt;
#* Are exclusively treasures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Below, an x is used to denote where the variable is to be input in a parameter line.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Item ID || Parameters || Notes&lt;br /&gt;
|-&lt;br /&gt;
| {onyn} (onion/ship) || &amp;lt;code&amp;gt;x # onyon index&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x # after boot? true==1&amp;lt;/code&amp;gt;  || index: 0=Blue Onion 1=Red Onion 2=Yellow Onion 4=Ship&amp;lt;br&amp;gt;after boot: 0 = wild Onion, only spawns if you haven&#039;t recruited that color; 1 = landing site, only spawns if you&#039;ve already recruited that color&lt;br /&gt;
|-&lt;br /&gt;
| {piki} (wild Pikmin) || &amp;lt;code&amp;gt;{p000} 4 x&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# 色 {p001} 4 x	&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# 数 {p002} 4 x&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# 自活(1=yes) {_eof} &amp;lt;/code&amp;gt; || {p000} 0=Blue 1=Red 2=Yellow 3=Purple 4=White. Attempting to spawn Bulbmin or Pikpik carrots crashes the game.&amp;lt;br&amp;gt;{p001} x = number of Pikmin&amp;lt;br&amp;gt;{p002} 1 = wild Pikmin, 0 = unused, intended for an E3 version &#039;&#039;&#039;The fours are part of the code&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| {cave} (caves) || &amp;lt;code&amp;gt;x.txt&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;units.txt&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{x_XX}&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# id (for stages.txt) &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# FogParm { {fg00} - {fg09} }&amp;lt;/code&amp;gt; || First text file is the caveinfo file name; units.txt does nothing.&amp;lt;br&amp;gt;{x_XX} is the [[Pikmin_2_identifiers#Caves|cave ID]], used for name, hazard data, and various hardcoded boss behavior. The final digit of the ID is also the music index in BgmList.&amp;lt;br&amp;gt;{fg00} through {fg03} deal with fog zone start and end, how fast it starts and how long it lingers&amp;lt;br&amp;gt;{fg04} through {fg06} are the colors of the fog&amp;lt;br&amp;gt;{fg07} through {fg09} deal with the distances the fog spreads out when inside, when it appears, and when it disspates.&amp;lt;br&amp;gt;&#039;&#039;&#039;The fours are part of the code&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {teki} (enemies, plants, and hazards) || [[#Teki|See below]] || &lt;br /&gt;
|-&lt;br /&gt;
| {pelt} (carriable objects) || &amp;lt;code&amp;gt;X   # mgr id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;X.000000 X.000000 X.000000 	# rotation&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{0000} 	# pellet local version&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;XXX&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;mgr id&amp;lt;/code&amp;gt; is the carriable object type: 0=pellets, 3=normal treasures, 4=Exploration Kit treasures. Other values are untested.&amp;lt;br&amp;gt;The line after &amp;lt;code&amp;gt;pellet local version&amp;lt;/code&amp;gt; is the [[Pikmin 2 identifiers#Treasures|treasure ID]] for treasures.&lt;br /&gt;
|-&lt;br /&gt;
| {brdg} (stick bridges) || &amp;lt;code&amp;gt;x  #橋タイプ&amp;lt;/code&amp;gt; ||0 = short bridge 1 = sloped bridge 2 = long bridge&lt;br /&gt;
|-&lt;br /&gt;
| {gate} (bramble gates) || &amp;lt;code&amp;gt;x.000000 	#ライフ &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x 	#Color &amp;lt;/code&amp;gt; ||First parameter is the gate&#039;s HP, second is the gate&#039;s color. 1 for black, 0 for white&lt;br /&gt;
|-&lt;br /&gt;
| {dgat} (electric gates) || &amp;lt;code&amp;gt;x.000000 	#ライフ&amp;lt;/code&amp;gt; ||The gate&#039;s health. Only comes in one color.&lt;br /&gt;
|-&lt;br /&gt;
| {rock} (spiderwort mold) ||  || Mold is actually called &amp;lt;code&amp;gt;{rock}&amp;lt;/code&amp;gt; internally.&lt;br /&gt;
|-&lt;br /&gt;
| {barl} (rock clog) ||  || When destroyed, a clog will drain any waterbox it&#039;s placed inside; the waterbox is not specified here. Instead, the waterbox is specified in &amp;lt;code&amp;gt;waterbox.txt&amp;lt;/code&amp;gt; A clogged cave entrance is simply a &amp;lt;code&amp;gt;{barl}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;{cave}&amp;lt;/code&amp;gt; at the same coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| {plnt} (Burgeoning Spiderwort) || &amp;lt;code&amp;gt;x  #実タイプ&amp;lt;/code&amp;gt; ||What kind of berries it grows. 0=spicy 1=bitter 2=mixed.&lt;br /&gt;
|-&lt;br /&gt;
| {ujms} (Ujadani bugs) || &amp;lt;code&amp;gt;x 	#うじゃ王数&amp;lt;/code&amp;gt; ||Number of bugs in the group.&lt;br /&gt;
|-&lt;br /&gt;
| {weed} (nectar grass/rocks) || &amp;lt;code&amp;gt;x 	#うじゃ王数 &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x 	#石か草か&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;うじゃ王数&amp;lt;/code&amp;gt;: amount of grass/rocks&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;石か草か&amp;lt;/code&amp;gt;: 0=rocks, 1=grass &lt;br /&gt;
|-&lt;br /&gt;
| {dwfl} (downfloors: weight blocks and paper bags) || &amp;lt;code&amp;gt;x 	#沈み人数	&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x 	#type	&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x 	# 1:seesaw&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{XXXX} 	# id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;沈み人数&amp;lt;/code&amp;gt;: weight required to press. Only used if &amp;lt;code&amp;gt;1:seesaw&amp;lt;/code&amp;gt; is 0. The weight is visible on seesaw blocks but has no effect.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: 0=small block, 1=large block, 2=paper bag&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;1:seesaw&amp;lt;/code&amp;gt;: 0=press permanently, 1=seesaw.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: Only used for seesaw blocks. Set 2 blocks to the same ID to pair them. &lt;br /&gt;
|-&lt;br /&gt;
| {pkhd} (Sprout) ||  || Spawns a random color sprout.&lt;br /&gt;
|-&lt;br /&gt;
| {mitu} (Nectar) ||  || Spawns a nectar or spray.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Teki==&lt;br /&gt;
&lt;br /&gt;
Entities in the Teki category have by far the most complex parameters of all types, and thus have their own section.&lt;br /&gt;
&lt;br /&gt;
{{note|Note that certain teki will not drop treasures or pellets, even if set to do so. These include fire/electric/poison hazards, bomb rocks, Volatile Dweevils, eggs, Honeywisps, Candypops, and Spectralids. Pellet Posies are functional and can drop treasure/pellets in addition to their normal pellet.&lt;br /&gt;
Additionally, decorative plants and chiyogami paper can spawn a set of 4 yellow Spectralids when touched, if their pellet color is 0 and pellet size is 1. This is only fully functional for Margaret (ID 77) and red large Figwort (ID 50), but other plants can spawn Spectralids if one of the aforementioned plants is also present and set to spawn Spectralids.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Parameter || Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x		# teki&amp;lt;/code&amp;gt; || The [[Pikmin 2 identifiers#Enemies_and_other_objects|Enemy&#039;s ID]]. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# teki_birth_type&amp;lt;/code&amp;gt; || 0 = Normal, 1 = Falls from the sky&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# teki_num&amp;lt;/code&amp;gt; || Number of enemies to spawn, used if &amp;lt;code&amp;gt;# 0:point 1:circle&amp;lt;/code&amp;gt; is &amp;gt;= 2.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x.000000 		# face direction&amp;lt;/code&amp;gt; || Direction it faces, in degrees.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# 0:point 1:circle&amp;lt;/code&amp;gt; || 1 or less = Single, 2 or more = Multiple&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x.000000 		# appear radius&amp;lt;/code&amp;gt; || Radius the enemy can spawn in, around the specified coordinates. Set to 0 to disable. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x.000000 		# enemy size&amp;lt;/code&amp;gt; || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x # お宝アイテムコード&amp;lt;/code&amp;gt; || ID of treasure to drop. Add 768 for normal treasures, 1024 for Exploration Kit treasures.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# Pellet color&amp;lt;/code&amp;gt; || Color of pellets to drop. 0 = Blue 1 = Red 2 = Yellow 3 = Random.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# Pellet size&amp;lt;/code&amp;gt; || Size of dropped pellets; 1, 5, 10, or 20.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# Pellet Min&amp;lt;/code&amp;gt; || Minimum number of pellets it can drop.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# Pellet Max&amp;lt;/code&amp;gt; || Maximum number of pellets it can drop.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x.xxxxxx 		# Pellet Min&amp;lt;/code&amp;gt; || Different from the first, this controls the percent chance it will drop pellets. 1.0 is 100%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# pellet type&amp;lt;/code&amp;gt; || Only used with Pellet Posies. Works just like the above &amp;lt;code&amp;gt;# Pellet color&amp;lt;/code&amp;gt;, except 3 = cycling between colors, and will crash if none of the primary colors are unlocked yet.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# pellet size&amp;lt;/code&amp;gt; || Size of pellet it bears; only 1, 5, 10, or 20.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# size&amp;lt;/code&amp;gt; || The stage of growth of the Pellet Posy. 0 = Sprout, 1 = Halfway, 2 = Mature.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{credits| [[User:UnclePaul894|UnclePaul894]]}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_area_generator_file&amp;diff=5149</id>
		<title>Pikmin 2 area generator file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_area_generator_file&amp;diff=5149"/>
		<updated>2025-09-10T18:55:29Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: loop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo|Determine how the files in loop work, and verify that the information written regarding the gen files is correct.}}&lt;br /&gt;
&lt;br /&gt;
An area&#039;s generator files can be found in &amp;lt;code&amp;gt;/user/Abe/map/*&amp;lt;/code&amp;gt;. Amongst these, the &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nonloop&amp;lt;/code&amp;gt; folders, as well as the &amp;lt;code&amp;gt;defaultgen.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;initgen.txt&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;plantsgen.txt&amp;lt;/code&amp;gt; contain data for what objects to spawn in the area, and how. These text files must be encoded in Shift-JIS, or at least ASCII. To avoid any issues, use [https://notepad-plus-plus.org/download/v7.5.6.html Notepad++] and check the encoding in the bottom right.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nonloop&amp;lt;/code&amp;gt; folders have intriguing file-naming formats. They indicate a range of days, where the day numbering is one less than what day is displayed to players. For example, consider the following files in &amp;lt;code&amp;gt;tutorial/nonloop&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;1-2.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1-4.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2-2.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3-9.txt&amp;lt;/code&amp;gt;. On day 3, the entities in the first 3 files will run their generation procedure, but not the entities in &amp;lt;code&amp;gt;3-9.txt&amp;lt;/code&amp;gt;. Files in &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; will have their entities run their generation procedure on days matching up with the last digit. For example, entities in &amp;lt;code&amp;gt;1-4.txt&amp;lt;/code&amp;gt; will run their generation procedure on days 12-15, 22-25, 32-35, and so on. Both &amp;lt;code&amp;gt;nonloop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; generators can have their days adjusted in &amp;lt;code&amp;gt;stages_(region).txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# generatorMgr &amp;lt;Generator(Default)&amp;gt;&lt;br /&gt;
{v0.1} 	# version&lt;br /&gt;
0.000000 0.000000 0.000000 	# startPos&lt;br /&gt;
0.000000 	# startDir&lt;br /&gt;
34 	# 34 generators&lt;br /&gt;
# 宇宙船&lt;br /&gt;
{&lt;br /&gt;
	{v0.1} 	# version&lt;br /&gt;
	0 	# reserved&lt;br /&gt;
	0 	# 復活日数&lt;br /&gt;
	137 70 146 136 145 68 0 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 205 	# &amp;lt;宇宙船&amp;gt;&lt;br /&gt;
	-331.454987 80.000000 1228.323975 	# pos&lt;br /&gt;
	0.000000 0.000000 0.000000 	# offset&lt;br /&gt;
	{item} {0002} 	# onyn&lt;br /&gt;
	{&lt;br /&gt;
		{onyn} 	# item id&lt;br /&gt;
		0.000000 -171.524994 0.000000 	# rotation&lt;br /&gt;
		{0001} 	# item local version&lt;br /&gt;
		4 	# onyon index&lt;br /&gt;
		1 	# after boot? true==1&lt;br /&gt;
	}&lt;br /&gt;
	# gen base&lt;br /&gt;
	{&lt;br /&gt;
		{_eof} &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
Each file starts with a line titled &amp;lt;code&amp;gt;# generatorMgr &amp;lt;Generator(Default)&amp;gt;&amp;lt;/code&amp;gt;. Under this is, &amp;lt;code&amp;gt;{v0.1}&amp;lt;/code&amp;gt;, which denotes the format of the file. The coordinates next to &amp;lt;code&amp;gt;startPos&amp;lt;/code&amp;gt; seem to be useless. Under &amp;lt;code&amp;gt;startDir&amp;lt;/code&amp;gt; is a number (in this case 34, the number after the hashtag does NOT matter, as does anything else after a hashtag). This number must be the same as the number of entities listed in the file, or else the game will crash. &lt;br /&gt;
&lt;br /&gt;
==Entity==&lt;br /&gt;
Underneath that in the brackets is the actual entity; in the above example, the Hocotate Ship. Everything above &amp;lt;code&amp;gt;# pos&amp;lt;/code&amp;gt; seems to be debug info for the original programmers with no effect on the entity(enemy or object) itself, EXCEPT for &amp;lt;code&amp;gt;# reserved&amp;lt;/code&amp;gt; which if set to zero, the object will only ever load once, and &amp;lt;code&amp;gt;# 復活日数&amp;lt;/code&amp;gt; underneath that, which controls how many days it takes to respawn(if set to zero, it will respawn always, even after leaving a cave). The numbers next to &amp;lt;code&amp;gt;# pos&amp;lt;/code&amp;gt; are the entity&#039;s x, y, and z coordinates. To find a point&#039;s coordinates in a level use 3ds Max or Yoshi2&#039;s Pikmin 2 Gen Editor. In &amp;lt;code&amp;gt;# offset&amp;lt;/code&amp;gt; are more x y z coordinates that will &amp;quot;offset&amp;quot; or move the entity over more by the amount specified. Under that is the Entity&#039;s class, for example &amp;lt;code&amp;gt;{item} {0002}&amp;lt;/code&amp;gt;. Further still under that in the brackets is the &amp;lt;code&amp;gt;# item id&amp;lt;/code&amp;gt;. Finally, entities have 3 &amp;lt;code&amp;gt;# rotation&amp;lt;/code&amp;gt; values, to rotate it a number of degrees on the x, y, or z axis, respectively. To keep an object upright only change the y parameter. Under that lie the Entity&#039;s unique parameters.&lt;br /&gt;
There are multiple types of Entities in the Overworld, with differing parameters. These include...&lt;br /&gt;
&lt;br /&gt;
==Entity categories==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;&amp;quot;{item} {0002}&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
#* Includes the Hocotate Ship, the Onions, Caves, Weight Blocks, Paper Bags, Gates, Rock Clogs, Nectar Grass, Nectar Pebble, Bridges, Burgeoning Spiderwort, Spiderwort Mold, and the Ujadani.&lt;br /&gt;
# &#039;&#039;&#039;&amp;quot;{piki} {0001}&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
#* Includes the main five types of Pikmin.&lt;br /&gt;
# &#039;&#039;&#039;{teki} {0005}&#039;&#039;&#039;&lt;br /&gt;
#* Includes all things in the Piklopedia/entities that can spawn in caves.&lt;br /&gt;
#* An enemy with a treasure in it is part of this group and has a value of that treasure + 768.&lt;br /&gt;
# &#039;&#039;&#039;{pelt} {0000}&#039;&#039;&#039;&lt;br /&gt;
#* Are exclusively treasures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Below, an x is used to denote where the variable is to be input in a parameter line.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Item ID || Parameters || Notes&lt;br /&gt;
|-&lt;br /&gt;
| {onyn} (onion/ship) || &amp;lt;code&amp;gt;x # onyon index&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x # after boot? true==1&amp;lt;/code&amp;gt;  || index: 0=Blue Onion 1=Red Onion 2=Yellow Onion 4=Ship&amp;lt;br&amp;gt;after boot: 0 = wild Onion, only spawns if you haven&#039;t recruited that color; 1 = landing site, only spawns if you&#039;ve already recruited that color&lt;br /&gt;
|-&lt;br /&gt;
| {piki} (wild Pikmin) || &amp;lt;code&amp;gt;{p000} 4 x&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# 色 {p001} 4 x	&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# 数 {p002} 4 x&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# 自活(1=yes) {_eof} &amp;lt;/code&amp;gt; || {p000} 0=Blue 1=Red 2=Yellow 3=Purple 4=White. Attempting to spawn Bulbmin or Pikpik carrots crashes the game.&amp;lt;br&amp;gt;{p001} x = number of Pikmin&amp;lt;br&amp;gt;{p002} 1 = wild Pikmin, 0 = unused, intended for an E3 version &#039;&#039;&#039;The fours are part of the code&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| {cave} (caves) || &amp;lt;code&amp;gt;x.txt&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;units.txt&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{x_XX}&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# id (for stages.txt) &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;# FogParm { {fg00} - {fg09} }&amp;lt;/code&amp;gt; || First text file is the caveinfo file name; units.txt does nothing.&amp;lt;br&amp;gt;{x_XX} is the [[Pikmin_2_identifiers#Caves|cave ID]], used for name, hazard data, and various hardcoded boss behavior. The final digit of the ID is also the music index in BgmList.&amp;lt;br&amp;gt;{fg00} through {fg03} deal with fog zone start and end, how fast it starts and how long it lingers&amp;lt;br&amp;gt;{fg04} through {fg06} are the colors of the fog&amp;lt;br&amp;gt;{fg07} through {fg09} deal with the distances the fog spreads out when inside, when it appears, and when it disspates.&amp;lt;br&amp;gt;&#039;&#039;&#039;The fours are part of the code&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {teki} (enemies, plants, and hazards) || [[#Teki|See below]] || &lt;br /&gt;
|-&lt;br /&gt;
| {pelt} (carriable objects) || &amp;lt;code&amp;gt;X   # mgr id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;X.000000 X.000000 X.000000 	# rotation&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{0000} 	# pellet local version&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;XXX&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;mgr id&amp;lt;/code&amp;gt; is the carriable object type: 0=pellets, 3=normal treasures, 4=Exploration Kit treasures. Other values are untested.&amp;lt;br&amp;gt;The line after &amp;lt;code&amp;gt;pellet local version&amp;lt;/code&amp;gt; is the [[Pikmin 2 identifiers#Treasures|treasure ID]] for treasures.&lt;br /&gt;
|-&lt;br /&gt;
| {brdg} (stick bridges) || &amp;lt;code&amp;gt;x  #橋タイプ&amp;lt;/code&amp;gt; ||0 = short bridge 1 = sloped bridge 2 = long bridge&lt;br /&gt;
|-&lt;br /&gt;
| {gate} (bramble gates) || &amp;lt;code&amp;gt;x.000000 	#ライフ &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x 	#Color &amp;lt;/code&amp;gt; ||First parameter is the gate&#039;s HP, second is the gate&#039;s color. 1 for black, 0 for white&lt;br /&gt;
|-&lt;br /&gt;
| {dgat} (electric gates) || &amp;lt;code&amp;gt;x.000000 	#ライフ&amp;lt;/code&amp;gt; ||The gate&#039;s health. Only comes in one color.&lt;br /&gt;
|-&lt;br /&gt;
| {rock} (spiderwort mold) ||  || Mold is actually called &amp;lt;code&amp;gt;{rock}&amp;lt;/code&amp;gt; internally.&lt;br /&gt;
|-&lt;br /&gt;
| {barl} (rock clog) ||  || When destroyed, a clog will drain any waterbox it&#039;s placed inside; the waterbox is not specified here. Instead, the waterbox is specified in &amp;lt;code&amp;gt;waterbox.txt&amp;lt;/code&amp;gt; A clogged cave entrance is simply a &amp;lt;code&amp;gt;{barl}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;{cave}&amp;lt;/code&amp;gt; at the same coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| {plnt} (Burgeoning Spiderwort) || &amp;lt;code&amp;gt;x  #実タイプ&amp;lt;/code&amp;gt; ||What kind of berries it grows. 0=spicy 1=bitter 2=mixed.&lt;br /&gt;
|-&lt;br /&gt;
| {ujms} (Ujadani bugs) || &amp;lt;code&amp;gt;x 	#うじゃ王数&amp;lt;/code&amp;gt; ||Number of bugs in the group.&lt;br /&gt;
|-&lt;br /&gt;
| {weed} (nectar grass/rocks) || &amp;lt;code&amp;gt;x 	#うじゃ王数 &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x 	#石か草か&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;うじゃ王数&amp;lt;/code&amp;gt;: amount of grass/rocks&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;石か草か&amp;lt;/code&amp;gt;: 0=rocks, 1=grass &lt;br /&gt;
|-&lt;br /&gt;
| {dwfl} (downfloors: weight blocks and paper bags) || &amp;lt;code&amp;gt;x 	#沈み人数	&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x 	#type	&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;x 	# 1:seesaw&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{XXXX} 	# id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;沈み人数&amp;lt;/code&amp;gt;: weight required to press. Only used if &amp;lt;code&amp;gt;1:seesaw&amp;lt;/code&amp;gt; is 0. The weight is visible on seesaw blocks but has no effect.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: 0=small block, 1=large block, 2=paper bag&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;1:seesaw&amp;lt;/code&amp;gt;: 0=press permanently, 1=seesaw.&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: Only used for seesaw blocks. Set 2 blocks to the same ID to pair them. &lt;br /&gt;
|-&lt;br /&gt;
| {pkhd} (Sprout) ||  || Spawns a random color sprout.&lt;br /&gt;
|-&lt;br /&gt;
| {mitu} (Nectar) ||  || Spawns a nectar or spray.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Teki==&lt;br /&gt;
&lt;br /&gt;
Entities in the Teki category have by far the most complex parameters of all types, and thus have their own section.&lt;br /&gt;
&lt;br /&gt;
{{note|Note that certain teki will not drop treasures or pellets, even if set to do so. These include fire/electric/poison hazards, bomb rocks, Volatile Dweevils, eggs, Honeywisps, Candypops, and Spectralids. Pellet Posies are functional and can drop treasure/pellets in addition to their normal pellet.&lt;br /&gt;
Additionally, decorative plants and chiyogami paper can spawn a set of 4 yellow Spectralids when touched, if their pellet color is 0 and pellet size is 1. This is only fully functional for Margaret (ID 77) and red large Figwort (ID 50), but other plants can spawn Spectralids if one of the aforementioned plants is also present and set to spawn Spectralids.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Parameter || Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x		# teki&amp;lt;/code&amp;gt; || The [[Pikmin 2 identifiers#Enemies_and_other_objects|Enemy&#039;s ID]]. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# teki_birth_type&amp;lt;/code&amp;gt; || 0 = Normal, 1 = Falls from the sky&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# teki_num&amp;lt;/code&amp;gt; || Number of enemies to spawn, used if &amp;lt;code&amp;gt;# 0:point 1:circle&amp;lt;/code&amp;gt; is &amp;gt;= 2.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x.000000 		# face direction&amp;lt;/code&amp;gt; || Direction it faces, in degrees.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# 0:point 1:circle&amp;lt;/code&amp;gt; || 1 or less = Single, 2 or more = Multiple&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x.000000 		# appear radius&amp;lt;/code&amp;gt; || Radius the enemy can spawn in, around the specified coordinates. Set to 0 to disable. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x.000000 		# enemy size&amp;lt;/code&amp;gt; || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x # お宝アイテムコード&amp;lt;/code&amp;gt; || ID of treasure to drop. Add 768 for normal treasures, 1024 for Exploration Kit treasures.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# Pellet color&amp;lt;/code&amp;gt; || Color of pellets to drop. 0 = Blue 1 = Red 2 = Yellow 3 = Random.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# Pellet size&amp;lt;/code&amp;gt; || Size of dropped pellets; 1, 5, 10, or 20.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# Pellet Min&amp;lt;/code&amp;gt; || Minimum number of pellets it can drop.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# Pellet Max&amp;lt;/code&amp;gt; || Maximum number of pellets it can drop.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x.xxxxxx 		# Pellet Min&amp;lt;/code&amp;gt; || Different from the first, this controls the percent chance it will drop pellets. 1.0 is 100%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# pellet type&amp;lt;/code&amp;gt; || Only used with Pellet Posies. Works just like the above &amp;lt;code&amp;gt;# Pellet color&amp;lt;/code&amp;gt;, except 3 = cycling between colors, and will crash if none of the primary colors are unlocked yet.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# pellet size&amp;lt;/code&amp;gt; || Size of pellet it bears; only 1, 5, 10, or 20.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x 		# size&amp;lt;/code&amp;gt; || The stage of growth of the Pellet Posy. 0 = Sprout, 1 = Halfway, 2 = Mature.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{credits| [[User:UnclePaul894|UnclePaul894]]}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Drought_Enders_Cave_Creator&amp;diff=5148</id>
		<title>Drought Enders Cave Creator</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Drought_Enders_Cave_Creator&amp;diff=5148"/>
		<updated>2025-09-07T14:43:30Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: ever heard of a fucking README&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==The Program==&lt;br /&gt;
The so-called &amp;quot;New Cave Creator&amp;quot;, has for the most part replaced jimbles by a long shot and can be found on the github here https://github.com/Drought-Ender/Drought-Cave-Creator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{credits|Drought Ender, GameCubing8619}}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=PikiParms&amp;diff=5129</id>
		<title>PikiParms</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=PikiParms&amp;diff=5129"/>
		<updated>2025-09-05T08:53:18Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: explain some parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTICE: This is a MAJOR work in progress.&lt;br /&gt;
&lt;br /&gt;
Located in &amp;lt;code&amp;gt;/user/Abe/piki&amp;lt;/code&amp;gt; pikiParms.txt is parameter settings for the Pikmin. Below is the file,  along with some notes explaining what the values are.&lt;br /&gt;
&lt;br /&gt;
{{todo|For Fp 04 (the second one) through Fp 09, explain, I don&#039;t know what playback frames are}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable mw-collapsible&amp;quot; &lt;br /&gt;
! pikiParms.txt&lt;br /&gt;
&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
# Creature :: Property (Standard Parameters, also seen in enemy files)&lt;br /&gt;
{&lt;br /&gt;
{S000} 4 0.100000 # friction (not used)&lt;br /&gt;
{S001} 4 0.500000 # wallReflection&lt;br /&gt;
{S002} 4 0.800000 # faceDirAdjust&lt;br /&gt;
{S003} 4 0.140000 # accel&lt;br /&gt;
{S004} 4 0.300000 # bounceFactor&lt;br /&gt;
{_ Eof}&lt;br /&gt;
}&lt;br /&gt;
# FakePiki :: Parms (Settings for both Pikmin and Leaders? Not sure)&lt;br /&gt;
{&lt;br /&gt;
{Fp 01} 4 5.000000 # ASIBUMI start speed (Fp 01 through the first 04 should be pretty self-explanitory)&lt;br /&gt;
{Fp 02} 4 8.000000 # WALK start speed&lt;br /&gt;
{Fp 03} 4 20.000000 # RUN start speed&lt;br /&gt;
{Fp 04} 4 60.000000 # ESCAPE start speed&lt;br /&gt;
{Fp 04} 4 60.000000 # WALK Number of playback frames (min)&lt;br /&gt;
{Fp 05} 4 50.000000 # WALK Number of playback frames (max)&lt;br /&gt;
{Fp 06} 4 40.000000 # RUN Number of playback frames (min)&lt;br /&gt;
{Fp 07} 4 60.000000 # RUN Number of playback frames (max)&lt;br /&gt;
{Fp 08} 4 60.000000 # ESCAPE Number of playback frames (min)&lt;br /&gt;
{Fp 09} 4 100.000000 # ESCAPE Number of playback frames (max)&lt;br /&gt;
{_ Eof}&lt;br /&gt;
{}&lt;br /&gt;
# Piki :: Parms (Normal Pikmin settings, if there&#039;s no explanation added by an editor on this wiki, it&#039;s probably self-explanitory)&lt;br /&gt;
{&lt;br /&gt;
{P000} 4 10.000000 # walking speed&lt;br /&gt;
{P001} 4 120.000000 # Running speed&lt;br /&gt;
{P054} 4 170.000000 # Flower Piki Speed&lt;br /&gt;
{P065} 4 140.000000 # Bud Speed&lt;br /&gt;
{P038} 4 1.000000 # Piki display scale (Size paremeters?)&lt;br /&gt;
{P003} 4 100.000000 # Standard Life (This and the two next ones are probably HP settings)&lt;br /&gt;
{P010} 4 150.000000 # Tail Life&lt;br /&gt;
{P011} 4 200.000000 # Life in&lt;br /&gt;
{P004} 4 10.000000 # Blue Attack Power (Also Bulbmin Attack Power)&lt;br /&gt;
{P012} 4 15.000000 # Red Attack Power&lt;br /&gt;
{P013} 4 10.000000 # Yellow Attack Power&lt;br /&gt;
{P003} 4 20.000000 # Black attack power (Purples are known as Black Pikmin internally)&lt;br /&gt;
{P004} 4 10.000000 # White attack power&lt;br /&gt;
{P005} 4 1 # energy required for buds (?)&lt;br /&gt;
{P006} 4 1 # Number of energy required for flowers (?)&lt;br /&gt;
{P007} 4 0.800000 # Scale of Normal Piki (more size settings?)&lt;br /&gt;
{P008} 4 1.500000 # The scale of the huge Piki (Captain size settings?)&lt;br /&gt;
{P009} 4 1.200000 # Fatty Piki&#039;s scale (Purple Pikmin size settings, probably)&lt;br /&gt;
{P014} 4 2.500000 # Total collapse time (Total time a pikmin is on the ground after tripping, before getting back up)&lt;br /&gt;
{P015} 4 1.000000 # Petankko time (?)&lt;br /&gt;
{P016} 4 0.900000 # Wave time (probably for the Purple Pikmin)&lt;br /&gt;
{P037} 4 35.000000 # Wave Attac attack range&lt;br /&gt;
{P017} 4 5.000000 # ASIBUMI start speed&lt;br /&gt;
{P018} 4 35.000000 # WALK start speed&lt;br /&gt;
{P019} 4 70.000000 # RUN start speed&lt;br /&gt;
{P020} 4 160.000000 # ESCAPE start speed&lt;br /&gt;
{P021} 4 30.000000 # WALK Number of playback frames (min)&lt;br /&gt;
{P022} 4 60.000000 # WALK Number of playback frames (max)&lt;br /&gt;
{P023} 4 30.000000 # RUN Number of playback frames (min)&lt;br /&gt;
{P024} 4 60.000000 # RUN Number of playback frames (max)&lt;br /&gt;
{P025} 4 30.000000 # Number of ESCAPE playback frames (min)&lt;br /&gt;
{P026} 4 60.000000 # ESCAPE Number of playback frames (max)&lt;br /&gt;
{P027} 4 3.000000 # per size (min)&lt;br /&gt;
{P034} 4 5.000000 # per size (max)&lt;br /&gt;
{P028} 4 100.000000 # reciprocal of weight (this and the next 6 don&#039;t have known functions)&lt;br /&gt;
{P039} 4 8.500000 # size per ground&lt;br /&gt;
{P029} 4 600.000000 # white distance&lt;br /&gt;
{P030} 4 1000.000000 # gray Distance&lt;br /&gt;
{P031} 4 10.000000 # Lost child time&lt;br /&gt;
{P032} 4 50.000000 # white distance (Free)&lt;br /&gt;
{P033} 4 250.000000 # gray Distance (Free)&lt;br /&gt;
{P035} 4 2.000000 # Time to start pushing wall (Dynamic)&lt;br /&gt;
{P036} 4 2.000000 # Time to start pushing the wall (Static)&lt;br /&gt;
{P040} 4 120.000000 # Time to free (?)&lt;br /&gt;
{P041} 4 70.000000 # Distance to look for enemies to attack&lt;br /&gt;
{P042} 4 55.000000 # Distance to look for pellets to carry&lt;br /&gt;
{P010} 4 45.000000 # Distance to look for nectar rock to attack&lt;br /&gt;
{P011} 4 45.000000 # Distance to look for nectar rock to attack&lt;br /&gt;
{P012} 4 60.000000 # Distance to look for bridge to work on&lt;br /&gt;
{P013} 4 45.000000 # Distance to look for clog to attack&lt;br /&gt;
{P014} 4 45.000000 # Distance to look for buried treasure to dig up&lt;br /&gt;
{P015} 4 45.000000 # Distance to look for spiderworts to harvest from&lt;br /&gt;
{P043} 4 3.000000 # Maximum time recover from being knocked down&lt;br /&gt;
{P074} 4 1.000000 # Minimum time recover from being knocked down&lt;br /&gt;
{P044} 4 10.000000 # leaf-&amp;gt; time of bud (seconds)&lt;br /&gt;
{P045} 4 10.000000 # bud-&amp;gt; flower time (seconds)&lt;br /&gt;
{P046} 4 10.000000 # flower-&amp;gt; time of seed (seconds)&lt;br /&gt;
{P047} 4 10.000000 # seed-&amp;gt; time of leaf (seconds)&lt;br /&gt;
{P048} 4 0.600000 # Gravity factor for when flower Pikmin fall after being thrown&lt;br /&gt;
{P049} 4 0.100000 # Time until buried Pikmin sprout appears (seconds) &lt;br /&gt;
{P050} 4 5.000000 # Time until buried Pikmin sprout is pluckable (seconds)&lt;br /&gt;
{P051} 4 120.000000 # Time until growing to next seedling state(seconds)&lt;br /&gt;
{P052} 4 180.000000 # Time spent as a seedling in the flower state before regrowing(seconds)&lt;br /&gt;
{P053} 4 1.000000 # Time until seedling resprouts (seconds)&lt;br /&gt;
{P055} 4 6.000000 # Time to wrestle with death (Time until killed by fire/water/poison. Doesn&#039;t include drowning.)&lt;br /&gt;
{P056} 4 1.000000 # Probability of flower Piki to play as seed (Leftover Pikmin 1 data?)&lt;br /&gt;
{P057} 4 2.000000 # Time to explosion&lt;br /&gt;
{P058} 4 50.000000 # Bomb effect range&lt;br /&gt;
{P059} 4 200.000000 # Bomb damage amount Flood gate&lt;br /&gt;
{P075} 4 10.000000 # Bomb Damage Orima&lt;br /&gt;
{P076} 4 120.000000 # Bomb Damage Teki&lt;br /&gt;
{P077} 4 765.000000 # Bomb Damage Piki&lt;br /&gt;
{P060} 4 200.000000 # Sunset Survival range&lt;br /&gt;
{P061} 4 250.000000 # Column activation distance&lt;br /&gt;
{P062} 4 10 # drowning frame number&lt;br /&gt;
{P063} 4 10 # Number of drowning frames (variation)&lt;br /&gt;
{P064} 4 5.000000 # wall pushing up time&lt;br /&gt;
{P066} 4 300.000000 # BOMB search distance (More Leftover pikmin 1 data?)&lt;br /&gt;
{P067} 4 110.000000 # BOMB throw Min (ditto for this and most of the Other &amp;quot;BOMB&amp;quot; settings)&lt;br /&gt;
{P068} 4 160.000000 # BOMB throw Max&lt;br /&gt;
{P069} 4 1.500000 # BOMB placement escape time&lt;br /&gt;
{P070} 4 150.000000 # BOMB throwing speed&lt;br /&gt;
{P071} 4 300.000000 # BOMB Warning range&lt;br /&gt;
{P072} 4 0.650000 # Between BOMB, time&lt;br /&gt;
{P073} 4 50.000000 # BOMB set distance&lt;br /&gt;
{P000} 4 1.250000 # Scale of new color&lt;br /&gt;
{P001} 4 1.200000 # White Pikmin speed ​​multiplier (speed settings for whites and purples)&lt;br /&gt;
{P002} 4 0.800000 # Purple Pikmin speed ​​multiplier (ditto)&lt;br /&gt;
{P005} 4 0.600000 # Purple Pikmin carry speed ​​multiplier (ditto)&lt;br /&gt;
{P006} 4 3.000000 # White Pikmin carry speed ​​multiplier (ditto)&lt;br /&gt;
{P020} 4 0.500000 # Buds carry speed bonus&lt;br /&gt;
{P021} 4 1.000000 # Flower carry speed bonus&lt;br /&gt;
{P018} 4 0.400000 # Carrying MAX FACTOR&lt;br /&gt;
{P019} 4 0.220000 # Carrying MIN FACTOR (original comment likely a mistake)&lt;br /&gt;
{P007} 4 40.000000 # Doping duration (Ultra-Spicy spray duration)&lt;br /&gt;
{P008} 4 10.000000 # Doping Piki Attack (Ultra-Spicy spray attack increase)&lt;br /&gt;
{P009} 4 190.000000 # Doping Piki Speed (Ultra-Spicy spray speed increase)&lt;br /&gt;
{P016} 4 60.000000 # Jellyfish digestion time (Time a Pikmin is inside a Jellyfloat before it dies)&lt;br /&gt;
{P017} 4 60.000000 # Purple Pikmin slam area of impact radius&lt;br /&gt;
{P022} 4 20.000000 # Purple Pikmin slam damage&lt;br /&gt;
{_ Eof}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Main_Page&amp;diff=5128</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Main_Page&amp;diff=5128"/>
		<updated>2025-08-31T03:10:37Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: add p1 screen list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MainTemplate&lt;br /&gt;
| welcome = Welcome to the &#039;&#039;&#039;&#039;&#039;Pikmin&#039;&#039; Technical Knowledge Base&#039;&#039;&#039;!&lt;br /&gt;
| blurb = A wiki dedicated to the internal files in &#039;&#039;Pikmin&#039;&#039; games.&lt;br /&gt;
| about_title = About&lt;br /&gt;
| about_content =&lt;br /&gt;
Throughout the years, &#039;&#039;Pikmin&#039;&#039; fans have tinkered with the files inside the games in order to better learn how they work, and to create custom content. Since there are a lot of nuances in every little thing, and since newcomers to the concept of file editing show up all the time, this wiki was created with the purpose of serving as a knowledge base for all that the fans know!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partners&#039;&#039;&#039;:&lt;br /&gt;
* [https://pikminwiki.com Pikipedia] - the &#039;&#039;Pikmin&#039;&#039; wiki&lt;br /&gt;
* [https://discord.gg/msMKc3G Pikcord] - the &#039;&#039;Pikmin&#039;&#039; community Discord server&lt;br /&gt;
* [https://discord.gg/G7Pgkdh Hocotate Hacker] - the &#039;&#039;Pikmin&#039;&#039; hacking community Discord server&lt;br /&gt;
| other_title = What this wiki is &#039;&#039;not&#039;&#039;&lt;br /&gt;
| other_content =&lt;br /&gt;
* It&#039;s not a wiki about pirating &#039;&#039;Pikmin&#039;&#039; games.&lt;br /&gt;
* It&#039;s not a file-sharing service.&lt;br /&gt;
* It&#039;s not a wiki where you document...&lt;br /&gt;
** Canon content. Try [https://pikminwiki.com/ Pikipedia] instead.&lt;br /&gt;
** Fan-made content. Try [https://pikminfanon.com/ Pikmin Fanon] instead.&lt;br /&gt;
** Unused content or regional differences. Try [https://tcrf.net TCRF] instead.&lt;br /&gt;
* It&#039;s not an official source of info. The information here is mostly obtained via experimenting, and is subject to change as new discoveries are made.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Global information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 75%;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;Global info&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[General instructions]]&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
* [[Save files]]&lt;br /&gt;
* [[:Category:Tools|Tools]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game-specific information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 75%;&amp;quot;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;New Play Control! Pikmin&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 2&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;New Play Control! Pikmin 2&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 3&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;Pikmin 3 Deluxe&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Hey! Pikmin&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 4&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GENERAL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | General&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin|Main information]]&lt;br /&gt;
* [[Pikmin instructions|Instructions]]&lt;br /&gt;
* [[Pikmin cheat codes|Useful cheat codes]]&lt;br /&gt;
* [[Pikmin memory addresses|Memory addresses]]&lt;br /&gt;
* [[Pikmin glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2|Main information]]&lt;br /&gt;
* [[Pikmin 2 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 2 cheat codes|Useful cheat codes]]&lt;br /&gt;
* [[Pikmin 2 memory addresses|Memory addresses]]&lt;br /&gt;
* [[Pikmin 2 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 2 glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3|Main information]]&lt;br /&gt;
* [[Pikmin 3 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 3 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 3 glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin|Main information]]&lt;br /&gt;
* [[Hey! Pikmin instructions|Instructions]]&lt;br /&gt;
* [[Hey! Pikmin troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Hey! Pikmin glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4|Main information]]&lt;br /&gt;
* [[Pikmin 4 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 4 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 4 glossary|Glossary]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE LISTS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | File lists&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin directory tree|Directory tree]]&lt;br /&gt;
* [[JAM file list|JAM file list (Pikiseq.arc)]]&lt;br /&gt;
* [[STX file list|STX file list]]&lt;br /&gt;
* [[CIN file list|CIN file list]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2 directory tree|Directory tree]]&lt;br /&gt;
* [[AST file list|AST (streamed music)]]&lt;br /&gt;
* [[Pikmin 2 BMS file list|BMS (sequenced music)]]&lt;br /&gt;
* [[Pikmin 2 CND file list|CND (sequenced music for caves)]]&lt;br /&gt;
* [[Se.bms|Sound effects list]]&lt;br /&gt;
* [[Pikmin 2 cave units information|List of information of each cave unit]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 directory tree|&#039;&#039;Pikmin 3&#039;&#039; directory tree]]&lt;br /&gt;
* [[Pikmin 3 Deluxe directory tree|&#039;&#039;Pikmin 3 Deluxe&#039;&#039; directory tree]]&lt;br /&gt;
* [[BFSTM file list|BFSTM (streamed music)]]&lt;br /&gt;
* [[MSBT file list|MSBT (text string)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin directory tree|Directory tree]]&lt;br /&gt;
* [[BCSTM file list|BCSTM (music)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4 directory tree|directory tree]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CONSTANTS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Constants&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin identifiers|Identifiers]]&lt;br /&gt;
* [[Olimar&#039;s voyage log table]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 2 Pikmin states|Pikmin states]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 3 progress value|Progress value]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin identifiers|Identifiers]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 4 text identifiers|Text Identifiers]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARTICLES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Particle effects&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PCR particles]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[JPC particles]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PTCL particles (Pikmin 3)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PTCL particles (Hey Pikmin)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE FORMATS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Stage generation&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin binary GEN format|Binary GEN format]]&lt;br /&gt;
* [[Pikmin route|Routes]]&lt;br /&gt;
&lt;br /&gt;
* Outdated pages&lt;br /&gt;
** [[Pikmin area generator file|Generator]]&lt;br /&gt;
** [[Pikmin gen codes|Gen codes]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Overworld&lt;br /&gt;
** [[Pikmin 2 area generator file|Overworld generation parameters]]&lt;br /&gt;
** [[Pikmin 2 map lighting files|Lighting]]&lt;br /&gt;
** [[Pikmin 2 waterboxes|Waterbox]]&lt;br /&gt;
** [[Pikmin 2 collision format|Collision]]&lt;br /&gt;
* Caves&lt;br /&gt;
** [[Cave generation parameters|Cave generation parameters]]&lt;br /&gt;
** [[Pikmin 2 Challenge Mode settings|Challenge Mode]]&lt;br /&gt;
** [[Pikmin 2 cave lighting files|Lighting]]&lt;br /&gt;
* Units (cave rooms)&lt;br /&gt;
** [[Cave unit generation|Cave unit generation]]&lt;br /&gt;
** [[Cave unit definition file|Cave unit definition]]&lt;br /&gt;
** [[Cave fixed layout|Cave fixed layout]]&lt;br /&gt;
* [[Pikmin 2 route|Routes]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Teki Units&lt;br /&gt;
** [[NoraSpawner]]&lt;br /&gt;
* [[Dandori Battles]]&lt;br /&gt;
* [[Disabling Pikmin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE FORMATS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | File formats&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Archive Formats&lt;br /&gt;
** [[Paired ARC+DIR file]]&lt;br /&gt;
** [[BUN file]] (also ANM)&lt;br /&gt;
** [[BARC file]]&lt;br /&gt;
* Binary formats&lt;br /&gt;
** [[MOD file]] (3D Model)&lt;br /&gt;
** [[TXE file]] (Texture)&lt;br /&gt;
** [[BTI file]] (Texture)&lt;br /&gt;
** [[BLO file]] (2D screen data)&lt;br /&gt;
** [[PCR file]] (Particle effect parameters)&lt;br /&gt;
** [[DC? files]] (Identifier for either DCA or DCK)&lt;br /&gt;
*** [[DCA file]] (Animation)&lt;br /&gt;
*** [[DCK file]] (Animation)&lt;br /&gt;
** [[H4M file]] (Pre-rendered video)&lt;br /&gt;
** [[JAM file]] (Sequenced music)&lt;br /&gt;
** [[STX file]] (Streamed music)&lt;br /&gt;
** [[AW file]] (Sound Bank)&lt;br /&gt;
** [[BX file]] (Sound system archive)&lt;br /&gt;
** [[Pikmin parameter files|Parameter Files]]&lt;br /&gt;
* Plaintext Formats&lt;br /&gt;
** [[CIN file]] (Cutscene resource manager)&lt;br /&gt;
** [[DSK file]] (Cutscene data)&lt;br /&gt;
** [[DMD file]] (Intermediary 3D model)&lt;br /&gt;
** [[CNV file]] (Intermediary conversion file)&lt;br /&gt;
* Unknown Formats&lt;br /&gt;
** [[GST file]]&lt;br /&gt;
** [[ACT file]]&lt;br /&gt;
** [[CARD file]]&lt;br /&gt;
* Missing Formats&lt;br /&gt;
** [[DVW file]] (Material file?) &lt;br /&gt;
** [[JMP file]] (Intermediary plaintext 3D model file?)&lt;br /&gt;
** [[MD3 file]] (3D Model)&lt;br /&gt;
** [[BSP flle]] (3D Model)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Archive Formats&lt;br /&gt;
** [[SZS file]]&lt;br /&gt;
** [[RARC file]]&lt;br /&gt;
* [[BMD file]] (J3D model)&lt;br /&gt;
* [[BTI file]] (Texture)&lt;br /&gt;
* [[BTK file]] (Animated texture)&lt;br /&gt;
* [[JPC file]] (Particle effect container)&lt;br /&gt;
** [[JPA file]] (Particle effect)&lt;br /&gt;
* [[BCA file]] (Animation)&lt;br /&gt;
* [[BCK file]] (Animation)&lt;br /&gt;
* [[AAF file]] (Sound system archive)&lt;br /&gt;
* [[BMS file]] (Sequenced music)&lt;br /&gt;
* [[AST file]] (Streamed music)&lt;br /&gt;
* [[AW file]] (Soundfont)&lt;br /&gt;
* [[THP file]] (Pre-rendered video)&lt;br /&gt;
* [[BLO file]] (2D screen data)&lt;br /&gt;
* [[STB file]] (Cutscene data)&lt;br /&gt;
* [[BMG file]] (Text)&lt;br /&gt;
* [[BPK file]]&lt;br /&gt;
* [[BRK file]]&lt;br /&gt;
* [[BMC file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Misc.&lt;br /&gt;
** [[DWN file]] (e-Reader minigames?)&lt;br /&gt;
** [[DMD file]] (Intermediary 3D model)&lt;br /&gt;
** [[Pikmin 2 title screen|Title screen]]&lt;br /&gt;
** [[Pikmin 2 save file|Saved game data]]&lt;br /&gt;
** [[2-Player Battle stage parameters]]&lt;br /&gt;
** [[Mail]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[Pikmin 3 radar files|Radar]]&lt;br /&gt;
* [[BFSTM file|BFSTM (streamed music)]]&lt;br /&gt;
* [[BFRES file|BFRES (file container, usually for 3D models and animations)]]&lt;br /&gt;
* [[BFLYT file|BFLYT (2D layout data)]]&lt;br /&gt;
* [[MSBT file (Pikmin 3)|MSBT (text string)]]&lt;br /&gt;
* [[MSBF file (Pikmin 3)|MSBF (message flow)]]&lt;br /&gt;
* [[FSKB file]] (Unknown)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[Hey! Pikmin save file|Saved game data]]&lt;br /&gt;
* [[ARC file (Hey! Pikmin)|ARC (archive)]]&lt;br /&gt;
* [[BCH file|BCH (animation)]]&lt;br /&gt;
* [[BFLIM file|BFLIM (image)]]&lt;br /&gt;
* [[MSBT file (Hey! Pikmin)|MSBT (text string)]]&lt;br /&gt;
* [[Z file|Z (archive)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[WEBM file|WEBM (video)]]&lt;br /&gt;
* [[BNVIB file|BNVIB]]&lt;br /&gt;
* [[UTOC/UCAS file|UTOC/UCAS (Archive for UASSET Files)]]&lt;br /&gt;
* [[UASSET file|UASSET File (Unreal Engine Asset File)]]&lt;br /&gt;
* [[UFONT file|UFONT]]&lt;br /&gt;
* [[LOCRES file|LOCRES]]&lt;br /&gt;
* [[WEM file|WEM]]&lt;br /&gt;
* [[BNK file|BNK]]&lt;br /&gt;
* [[Save Files]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARAMETERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Parameters&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin labeled parameter file|Labeled]]&lt;br /&gt;
** [[Pikmin AI constants|AI constants]]&lt;br /&gt;
** [[Pikmin cunit parameters|Cuint]]&lt;br /&gt;
** [[Pikmin demo parameters|Demo]]&lt;br /&gt;
** [[Pikmin game parameters|Game parameters]]&lt;br /&gt;
** [[Pikmin navi parameters|NaviMgr]]&lt;br /&gt;
** [[Pikmin piki parameters|PikiMgr]]&lt;br /&gt;
** [[Pikmin sound parameters|Sound]]&lt;br /&gt;
** [[Pikmin wave parameters|Wave]]&lt;br /&gt;
** [[Pikmin prefs parameters|Prefs]]&lt;br /&gt;
** [[Pikmin boss parameters|Boss]]&lt;br /&gt;
* [[Pikmin unlabeled parameter file|Unlabeled]]&lt;br /&gt;
** [[Pikmin camera parameters|Camera]]&lt;br /&gt;
** [[Pikmin key parameters|Key]]&lt;br /&gt;
** [[Pikmin enemy parameter file format|Enemy]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[naviParms|Leader]]&lt;br /&gt;
* [[pikiParms|Pikmin]]&lt;br /&gt;
* [[CameraParms|Camera]]&lt;br /&gt;
* [[Pikmin 2 enemy parameters|Entity]]&lt;br /&gt;
* [[Titan Dweevil parameters]]&lt;br /&gt;
* [[Trackmap parameters|trackMap parameters]]&lt;br /&gt;
* [[Pikmin 2 day time parameters|Day time parameters]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[carryParam|Carry]]&lt;br /&gt;
* [[fruitsParam|Fruit]]&lt;br /&gt;
* [[pikminParam|Pikmin]]&lt;br /&gt;
* [[itemprogressParam|Item progress]]&lt;br /&gt;
* [[Mission settings]]&lt;br /&gt;
* [[GameobjectParam|Object]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[ActorSerializeParameter and AI]]&lt;br /&gt;
* [[Data Table/Actor Parameters]]&lt;br /&gt;
* [[Enemy Parameters]]&lt;br /&gt;
* [[ActorGeneratorList]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MANAGERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Managers&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[pikibank.bx|Pikmin audio system]]&lt;br /&gt;
* [[Pikmin pellet manager|Pellets]]&lt;br /&gt;
* [[Pikmin anim manager|Animations]]&lt;br /&gt;
* [[Pikmin teki manager|Tekis (DOL)]]&lt;br /&gt;
* [[Pikmin stage manager|Stage manager]]&lt;br /&gt;
* [[Pikmin stage information|Stage information / lighting]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PSound.aaf|Audio system]]&lt;br /&gt;
* Pellet List&lt;br /&gt;
** [[Pikmin 2 otakara_config.txt|Treasure Config]]&lt;br /&gt;
** [[Pikmin 2 item_config.txt|Upgrade Config]]&lt;br /&gt;
** [[Pikmin 2 carcass_config.txt|Carcass Config]]&lt;br /&gt;
** [[Pikmin 2 numberpellet_config.txt|Number Pellet Config]]&lt;br /&gt;
* [[Pikmin 2 animmgr.txt|Animation Manager]]&lt;br /&gt;
* [[Pikmin 2 collinfo.txt|Collision Info]]&lt;br /&gt;
&lt;br /&gt;
* [[Mail Table]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
SCREENS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Screens&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Screen file list (Pikmin)]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Screen file list (Pikmin 2)]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EXPLANATIONS AND NOTES&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Explanations and Notes&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin unread files|Unread files]]&lt;br /&gt;
* [[Pikmin disable archives trick|Disable loading from archives]]&lt;br /&gt;
* [[Pikmin Emperor crash|Emperor crash]]&lt;br /&gt;
* [[Minty Ramblings]]&lt;br /&gt;
* [[Custom sequenced Pikmin music|Custom sequenced music]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Cave spawning]]&lt;br /&gt;
* [[Custom models|Custom models]]&lt;br /&gt;
* [[How J3D model materials work]]&lt;br /&gt;
* [[Submerged Castle oddities|Special cave properties]]&lt;br /&gt;
* [[How Pikmin 2 loads text|How &#039;&#039;Pikmin 2&#039;&#039; loads text]]&lt;br /&gt;
* [[Sound Replacement Tutorial|Sound Replacement Tutorial]]&lt;br /&gt;
* [[Enemy Memory Usage]]&lt;br /&gt;
* [[Disassembly instructions]]&lt;br /&gt;
* [[Jsystem]]&lt;br /&gt;
* [[Pikmin 2 gEnemyInfo|gEnemyInfo]]&lt;br /&gt;
* [[Epoch Notes]]&lt;br /&gt;
* [[User:Captain Salty/Blo Editing Notes|Blo Editing Notes]]&lt;br /&gt;
* [[Cutscene Editing and Creation]]&lt;br /&gt;
* [[Cutscene Notes]]&lt;br /&gt;
* [[Creating Interactive BMS Files|Creating interactive area music]]&lt;br /&gt;
* [[Creating cave music|Creating interactive cave music]]&lt;br /&gt;
* [[Editing code with Decomp|Editing code with Decomp]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 oddities|Oddities]]&lt;br /&gt;
* [[Story mode maps in other modes]]&lt;br /&gt;
* [[Pikmin 3 Bingo Battle|Bingo Battle]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin unread files|Unread files]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Documentation&lt;br /&gt;
** [[Lilith&#039;s P4 Notes]]&lt;br /&gt;
** [[Pikmin 4 Demo Research]]&lt;br /&gt;
* Tutorials&lt;br /&gt;
** [[Model Importing Tutorial]]&lt;br /&gt;
** [[WEM Audio Modding Tutorial]]&lt;br /&gt;
** [[Enemy Duplication Tutorial (WIP)]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TOOLS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Tools&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PikBinGen]]&lt;br /&gt;
* [[Archive Toolkit]]&lt;br /&gt;
* [[OpenGL / Dolphin System|OpenGL / Dolphin System]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Cave Creator]]&lt;br /&gt;
* [[Pikmin 2 Routes Editor &amp;amp; Gen Editor]]&lt;br /&gt;
* [[obj2grid]]&lt;br /&gt;
* [[DOL-Ckit]]&lt;br /&gt;
* [[Drought Enders Cave Creator]]&lt;br /&gt;
* [[SuperBMD]]&lt;br /&gt;
* [[FinModelUtility]]&lt;br /&gt;
* [[GameCube File Tools]]&lt;br /&gt;
* [[pyblo2-gui]]&lt;br /&gt;
* [[pikminBMGtool]]&lt;br /&gt;
* [[btk-conv]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Gen Editor]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin stage viewer]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[P4UassetEditor]]&lt;br /&gt;
* [[Modified FModel]]&lt;br /&gt;
* [[UCas/UToc Packer]]&lt;br /&gt;
* [[Dandori DB]]&lt;br /&gt;
* [[Dandori Desktop]]&lt;br /&gt;
* [[UE4LocalizationsTool]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
* [[:Category:Pages with things to do|Things to do]]&lt;br /&gt;
* [[:Category:Pages with unsure information|Unsure info that needs to be confirmed]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PikminTKB]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5121</id>
		<title>Screen file list (Pikmin)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5121"/>
		<updated>2025-08-31T01:31:05Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Below is a list of all screens in &#039;&#039;Pikmin&#039;&#039;. Most screens are usually divided into individual BLO files in the &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; folder in &amp;lt;code&amp;gt;dataDir&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In the GameCube and US/JP/EU Wii versions, BLO files also contain most of the game&#039;s text strings. In the Korea Wii and all Switch versions, text is instead stored in &amp;lt;code&amp;gt;pikmin12/(language)/message/pik12message.bmg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Screen || BLO Files || Image&lt;br /&gt;
|-&lt;br /&gt;
| Main Gameplay HUD || &amp;lt;code&amp;gt;play_day.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;play10.blo&amp;lt;/code&amp;gt; || [[File:Pikmin1mainhud.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Onion menu || US GC, JP GC: &amp;lt;code&amp;gt;con01.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; PAL GC, US Wii, JP Wii, EU Wii, Switch version: &amp;lt;code&amp;gt;conmix.blo&amp;lt;/code&amp;gt; || [[File:pikmin1onionmenu.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| File select || See [[File Select (Pikmin 1) | File Select ]] page|| [[File:pikmin1fileselect.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| High scores || &amp;lt;code&amp;gt;cha_hi.blo&amp;lt;/code&amp;gt; || [[File:pikmin1highscores.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Challenge mode select || &amp;lt;code&amp;gt;cha_sel.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;cha_rank.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;cha_best.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;cha_map.blo&amp;lt;/code&amp;gt; || [[File:pikmin1challengeselect.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Day results || &amp;lt;code&amp;gt;account2.blo&amp;lt;/code&amp;gt; || [[File:Pikmin1dayresults.png|350px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:Pikmin1dayresults.png&amp;diff=5120</id>
		<title>File:Pikmin1dayresults.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:Pikmin1dayresults.png&amp;diff=5120"/>
		<updated>2025-08-31T01:30:33Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5119</id>
		<title>Screen file list (Pikmin)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5119"/>
		<updated>2025-08-31T01:30:26Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: more screens&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Below is a list of all screens in &#039;&#039;Pikmin&#039;&#039;. Most screens are usually divided into individual BLO files in the &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; folder in &amp;lt;code&amp;gt;dataDir&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In the GameCube and US/JP/EU Wii versions, BLO files also contain most of the game&#039;s text strings. In the Korea Wii and all Switch versions, text is instead stored in &amp;lt;code&amp;gt;pikmin12/(language)/message/pik12message.bmg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Screen || BLO Files || Image&lt;br /&gt;
|-&lt;br /&gt;
| Main Gameplay HUD || &amp;lt;code&amp;gt;play_day.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;play10.blo&amp;lt;/code&amp;gt; || [[File:Pikmin1mainhud.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Onion menu || US GC, JP GC: &amp;lt;code&amp;gt;con01.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; PAL GC, US Wii, JP Wii, EU Wii, Switch version: &amp;lt;code&amp;gt;conmix.blo&amp;lt;/code&amp;gt; || [[File:pikmin1onionmenu.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| File select || See [[File Select (Pikmin 1) | File Select ]] page|| [[File:pikmin1fileselect.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| High scores || &amp;lt;code&amp;gt;cha_hi.blo&amp;lt;/code&amp;gt; || [[File:pikmin1highscores.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Challenge mode select || &amp;lt;code&amp;gt;cha_sel.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;cha_rank.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;cha_best.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;cha_map.blo&amp;lt;/code&amp;gt; || [[File:pikmin1challengeselect.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Day results || &amp;lt;code&amp;gt;account2.blo&amp;lt;/code&amp;gt; || [[File:pikmin1dayresults.png|350px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:Pikmin1challengeselect.png&amp;diff=5118</id>
		<title>File:Pikmin1challengeselect.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:Pikmin1challengeselect.png&amp;diff=5118"/>
		<updated>2025-08-31T01:18:59Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5117</id>
		<title>Screen file list (Pikmin)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5117"/>
		<updated>2025-08-31T01:15:28Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: forgot korea uses brlyt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Below is a list of all screens in &#039;&#039;Pikmin&#039;&#039;. Most screens are usually divided into individual BLO files in the &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; folder in &amp;lt;code&amp;gt;dataDir&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In the GameCube and US/JP/EU Wii versions, BLO files also contain most of the game&#039;s text strings. In the Korea Wii and all Switch versions, text is instead stored in &amp;lt;code&amp;gt;pikmin12/(language)/message/pik12message.bmg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Screen || BLO Files || Image&lt;br /&gt;
|-&lt;br /&gt;
| Main Gameplay HUD || &amp;lt;code&amp;gt;play_day.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;play10.blo&amp;lt;/code&amp;gt; || [[File:Pikmin1mainhud.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Onion menu || US GC, JP GC: &amp;lt;code&amp;gt;con01.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; PAL GC, US Wii, JP Wii, EU Wii, Switch version: &amp;lt;code&amp;gt;conmix.blo&amp;lt;/code&amp;gt; || [[File:pikmin1onionmenu.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| File select || See [[File Select (Pikmin 1) | File Select ]] page|| [[File:pikmin1fileselect.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| High scores || &amp;lt;code&amp;gt;cha_hi.blo&amp;lt;/code&amp;gt; || [[File:pikmin1highscores.png|350px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5116</id>
		<title>Screen file list (Pikmin)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5116"/>
		<updated>2025-08-31T01:14:30Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: add file select and high scores&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Below is a list of all screens in &#039;&#039;Pikmin&#039;&#039;. Most screens are usually divided into individual BLO files in the &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; folder in &amp;lt;code&amp;gt;dataDir&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In the GameCube and US/JP/EU Wii versions, BLO files also contain most of the game&#039;s text strings. In the Korea Wii and all Switch versions, text is instead stored in &amp;lt;code&amp;gt;pikmin12/(language)/message/pik12message.bmg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Screen || BLO Files || Image&lt;br /&gt;
|-&lt;br /&gt;
| Main Gameplay HUD || &amp;lt;code&amp;gt;play_day.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;play10.blo&amp;lt;/code&amp;gt; || [[File:Pikmin1mainhud.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Onion menu || US GC, JP GC: &amp;lt;code&amp;gt;con01.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; PAL GC, all Wii &amp;amp; Switch versions: &amp;lt;code&amp;gt;conmix.blo&amp;lt;/code&amp;gt; || [[File:pikmin1onionmenu.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| File select || See [[File Select (Pikmin 1) | File Select ]] page|| [[File:pikmin1fileselect.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| High scores || &amp;lt;code&amp;gt;cha_hi.blo&amp;lt;/code&amp;gt; || [[File:pikmin1highscores.png|350px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:Pikmin1highscores.png&amp;diff=5115</id>
		<title>File:Pikmin1highscores.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:Pikmin1highscores.png&amp;diff=5115"/>
		<updated>2025-08-31T01:11:38Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:Pikmin1fileselect.png&amp;diff=5114</id>
		<title>File:Pikmin1fileselect.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:Pikmin1fileselect.png&amp;diff=5114"/>
		<updated>2025-08-31T01:05:11Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5113</id>
		<title>Screen file list (Pikmin)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5113"/>
		<updated>2025-08-31T01:04:12Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: add onion menu picture&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Below is a list of all screens in &#039;&#039;Pikmin&#039;&#039;. Most screens are usually divided into individual BLO files in the &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; folder in &amp;lt;code&amp;gt;dataDir&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In the GameCube and US/JP/EU Wii versions, BLO files also contain most of the game&#039;s text strings. In the Korea Wii and all Switch versions, text is instead stored in &amp;lt;code&amp;gt;pikmin12/(language)/message/pik12message.bmg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Screen || BLO Files || Image&lt;br /&gt;
|-&lt;br /&gt;
| Main Gameplay HUD || &amp;lt;code&amp;gt;play_day.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;play10.blo&amp;lt;/code&amp;gt; || [[File:Pikmin1mainhud.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Onion menu || US GC, JP GC: &amp;lt;code&amp;gt;con01.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; PAL GC, all Wii &amp;amp; Switch versions: &amp;lt;code&amp;gt;conmix.blo&amp;lt;/code&amp;gt; || [[File:pikmin1onionmenu.png|350px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:Pikmin1onionmenu.png&amp;diff=5112</id>
		<title>File:Pikmin1onionmenu.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:Pikmin1onionmenu.png&amp;diff=5112"/>
		<updated>2025-08-31T01:03:42Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5111</id>
		<title>Screen file list (Pikmin)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin)&amp;diff=5111"/>
		<updated>2025-08-31T01:03:04Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: adding more&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Below is a list of all screens in &#039;&#039;Pikmin&#039;&#039;. Most screens are usually divided into individual BLO files in the &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; folder in &amp;lt;code&amp;gt;dataDir&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In the GameCube and US/JP/EU Wii versions, BLO files also contain most of the game&#039;s text strings. In the Korea Wii and all Switch versions, text is instead stored in &amp;lt;code&amp;gt;pikmin12/(language)/message/pik12message.bmg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Screen || BLO Files || Image&lt;br /&gt;
|-&lt;br /&gt;
| Main Gameplay HUD || &amp;lt;code&amp;gt;play_day.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;play10.blo&amp;lt;/code&amp;gt; || [[File:Pikmin1mainhud.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| Onion menu || US GC, JP GC: &amp;lt;code&amp;gt;con01.blo&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; PAL GC, all Wii &amp;amp; Switch versions: &amp;lt;code&amp;gt;conmix.blo&amp;lt;/code&amp;gt; || [[File:Pikmin1mainhud.png|350px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_instructions&amp;diff=5108</id>
		<title>Pikmin 2 instructions</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_instructions&amp;diff=5108"/>
		<updated>2025-08-17T20:20:14Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: update jaimaker version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Helpful instructions for editing and handling &#039;&#039;Pikmin 2&#039;&#039;&#039;s files. This guide assumes you have some basic knowledge on navigating folders, opening files, using commands, etc.&lt;br /&gt;
See [[General instructions#Obtaining a game&#039;s files|obtaining a game&#039;s files]] if you are unsure on how to do so.&lt;br /&gt;
&lt;br /&gt;
You can view and edit a lot of the game&#039;s files. You can read them without any worry, but if you want to change them and have those changes apply in-game, see [[General instructions#Saving changes|saving changes]] in [[general instructions]].&lt;br /&gt;
{{todo|Elaborate.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended you refer to the file lists and other pages on the main page while editing.&lt;br /&gt;
&lt;br /&gt;
==Tools and files==&lt;br /&gt;
&lt;br /&gt;
Here are some prominent files that come up when modding.&lt;br /&gt;
 .DOL: Segmented executable binary format which contains the games compiled source.&lt;br /&gt;
 .SZS: Archive files similar to .ZIP or .RAR archive files. SZS files are RARC archives compressed with Yaz0 compression.&lt;br /&gt;
 .ARC: Archive files similar to .ZIP or .RAR archive files. ARC files are RARC archives not compressed with Yaz0 compression.&lt;br /&gt;
 .TXT: Generic plaintext files. Use Notepad++ to preserve the Shift-JIS encoding.&lt;br /&gt;
 .BMD/.BDL: Proprietary 3D model files.&lt;br /&gt;
 .BMS: Sequenced audio files, similar to MIDI but more advanced. [https://pikmintkb.com/wiki/Pikmin_2_BMS_file_list List]&lt;br /&gt;
 .CND: Files that control how various sequences in a BMD file are randomly chained together in a complex system. Used for cave music. &lt;br /&gt;
 [https://pikmintkb.com/wiki/Pikmin_2_CND_file_list List]&lt;br /&gt;
 .AST: Streamed audio files. [https://pikmintkb.com/wiki/AST_file_list List]&lt;br /&gt;
 .AW: Soundbank files. Usually named wScene in Pikmin 2.&lt;br /&gt;
 .BMG: Used to store in-game text strings.&lt;br /&gt;
 .BLO: UI screen data.&lt;br /&gt;
 .BTI: Textures.&lt;br /&gt;
 .BTK: Animated textures.&lt;br /&gt;
 .STB: Cutscene data.&lt;br /&gt;
 .THP: Prerendered videos (GC/Wii)&lt;br /&gt;
 .WEBM: Prerendered videos (Switch)&lt;br /&gt;
 .JPC: Particle effect container. [https://pikmintkb.com/wiki/JPC_particles List]&lt;br /&gt;
 .JPA: Particle effect.&lt;br /&gt;
 .BCA: Full animation data.&lt;br /&gt;
 .BCK: Keyframed animation data.&lt;br /&gt;
&lt;br /&gt;
Here are some prominent tools: &lt;br /&gt;
&lt;br /&gt;
 [https://github.com/SuperHackio/WiiExplorer/releases/download/V1.5.0.5/WiiExplorer.V1.5.0.5.zip  WiiExplorer]- Used for extracting and converting RARC archives. Can also compress archives to SZS.&lt;br /&gt;
 [https://notepad-plus-plus.org/downloads/ Notepad++] - Used for editing text files, many of which need to preserve Shift-JIS encoding.&lt;br /&gt;
 [https://github.com/RenolY2/pikmin-tools/releases/download/v1.0.1.3/piktools-1.0.1.3.zip Gen &amp;amp; Route Editor]  - Used for editing overworld generation and pikmin carrying routes.&lt;br /&gt;
 [https://github.com/Drought-Ender/Drought-Cave-Creator/archive/refs/heads/main.zip Drought&#039;s Cave Creator] - Used for creating and modifiying cave files, cave lighting, and cave unit definition files.&lt;br /&gt;
 [https://xayr.gay/tools/SoundModdingToolkit/6.3.3/PIKMIN2_SoundModdingToolkit_6.3.3_win64.zip Pikmin 2 Sound Modding Toolkit] - Used for modyfing sounds in the game.&lt;br /&gt;
 [https://github.com/XAYRGA/JAIMaker/releases/download/1.7.3/JAIMaker.1.7.3.-.Lightly.Salted.Almond.zip JAIMaker] - Used for creating custom sequenced music as BMS files. Also supports creating interactive overworld music. Cave music requires additional hex editing.&lt;br /&gt;
 [https://github.com/XAYRGA/jatast/releases/download/stable/publish_win64.zip JATAST] - Used for converting .wav files into .ast files for streamed music.&lt;br /&gt;
 [https://github.com/RenolY2/pikminBMG/archive/refs/tags/v0.7.4.zip pikminBMG] - Used for editing text in the game.&lt;br /&gt;
 [https://github.com/RenolY2/pyblo2-gui/releases/download/v0.7.3/blo-gui-editor-v0.7.3.zip pyblo2-gui] - Used for modyfing blo files.&lt;br /&gt;
 [https://mega.nz/file/m4YzXb4b#pXMGCSapWQjB72mushjH0DD7XQOwrMQOm97d_F_CSHs FinModelUtility] - Used for converting BMD files to formats that can be imported into any 3D modeling software. &lt;br /&gt;
 [https://github.com/pish-pish/SuperBMD/releases/download/v2.4.9.2/SuperBMD.zip SuperBMD] - Used for converting FBX and DAE files back to BMD.&lt;br /&gt;
 [https://github.com/riidefi/RiiStudio/releases/download/Alpha-5.11.1/RiiStudio_Windows.zip RiiStudio] - Used for BMD materials editing. (Pish don&#039;t kill me GUI is just easier for now)&lt;br /&gt;
 [https://github.com/RenolY2/obj2grid/archive/refs/tags/v0.8.zip obj2grid] - Used for converting between .OBJ 3D files and pikmin 2&#039;s collision formats.&lt;br /&gt;
 [https://github.com/LagoLunatic/GCFT/releases/tag/2.0.0 GameCube File Tools] - Used for modification of many GameCube/early Wii era formats, notably BTI files. &lt;br /&gt;
 Hex editor - needed for additional editing of other files such as .BIN binary files. An editor of choice is HxD: (https://mh-nexus.de/en/hxd/)&lt;br /&gt;
More tools can be found in Hocotate Hacker if needed. Compiled builds for many of these tools are for Windows, but macOS and Linux users can compile many from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A page listing the game&#039;s internal filesystem is [https://pikmintkb.com/wiki/Pikmin_2_directory_tree here], useful for keeping track of where editable files are. &lt;br /&gt;
&lt;br /&gt;
==Cave editing==&lt;br /&gt;
&lt;br /&gt;
You can make custom caves with Drought&#039;s Cave Creator. &lt;br /&gt;
&lt;br /&gt;
See [https://pikmintkb.com/wiki/Cave_generation_parameters this page] for cave generation specifics.&lt;br /&gt;
&lt;br /&gt;
The BgmList files in &amp;lt;code&amp;gt;user/Totaka&amp;lt;/code&amp;gt; control what cave song is used for each sublevel. &amp;lt;code&amp;gt;BgmList_Tutorial.txt&amp;lt;/code&amp;gt; is used for Valley of Repose caves, &amp;lt;code&amp;gt;BgmList_Forest.txt&amp;lt;/code&amp;gt; is used for Awakening Wood caves, &amp;lt;code&amp;gt;BgmList_Yakushima.txt&amp;lt;/code&amp;gt; is used for Perplexing Pool caves, &amp;lt;code&amp;gt;BgmList_Last.txt&amp;lt;/code&amp;gt; is used for Wistful Wild caves, and &amp;lt;code&amp;gt;ChallengeBgmList.txt&amp;lt;/code&amp;gt; is used for caves in Challenge Mode. When adding more sublevels to any cave, you must remember to add more cave songs to the applicable BgmList text file, or else the game will crash.  &lt;br /&gt;
&lt;br /&gt;
You can change the listed CND file to change what song plays in a sublevel.&lt;br /&gt;
&lt;br /&gt;
To add completely new cave music tracks,&lt;br /&gt;
&lt;br /&gt;
1) Make a new BMS file in &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc&amp;lt;/code&amp;gt; called &amp;lt;code&amp;gt;new_09.bms&amp;lt;/code&amp;gt; or so in order, 9, 10, 11, etc&lt;br /&gt;
&lt;br /&gt;
2) Make a new CND file in &amp;lt;code&amp;gt;AudioRes/Conductor.arc&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;new_09_0.cnd&amp;lt;/code&amp;gt;, just the BMS name with _0 (leave the CND blank if you don&#039;t want interactivity, or see the CND file guide below to make a full track.)&lt;br /&gt;
&lt;br /&gt;
3) Add the new BMS in the &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; after the new_0-8&lt;br /&gt;
&lt;br /&gt;
4) Add the new CND in &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt;. If not doing interactivity, copy paste new_00&#039;s entry with the new CND&#039;s name; otherwise, see the cave music guide for more details.&lt;br /&gt;
&lt;br /&gt;
5) Add a new wScene for your song using the Sound Modding Toolkit (see guide below), new_09 will use &amp;lt;code&amp;gt;wScene46.aw&amp;lt;/code&amp;gt; and so on in order. &amp;lt;code&amp;gt;wScene48.aw&amp;lt;/code&amp;gt; is used for the Submerged Castle theme and Waterwraith approaching theme, so it&#039;s a good idea to skip from &amp;lt;code&amp;gt;new_09.bms&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;new_12.bms&amp;lt;/code&amp;gt; so you skip to &amp;lt;code&amp;gt;wScene49.aw&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
6) Set the new song to be used in the applicable BgmList file for your area/challenge mode BgmList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overworld editing==&lt;br /&gt;
&lt;br /&gt;
You can edit overworld generation with the Gen &amp;amp; Route Editor&lt;br /&gt;
&lt;br /&gt;
Instructions on how to use the program are in its reademe as well as the page on this website.&lt;br /&gt;
See [https://pikmintkb.com/wiki/Pikmin_2_area_generator_file this page] for overworld generation specifics.&lt;br /&gt;
&lt;br /&gt;
To change what sounds are made when a leader walks on ground, or to change where Pikmin seeds can sprout, use obj2grid to convert the grid.bin/mapcode.bin files (located in texts.szs for a given area or cave unit model) to obj, then import this obj into blender. Make a material on the mesh you want to edit, and name it according to this scheme:&lt;br /&gt;
&lt;br /&gt;
0xXY&lt;br /&gt;
&lt;br /&gt;
First Digit (Physical characteristics):&lt;br /&gt;
&lt;br /&gt;
Pikmin seeds can root:&lt;br /&gt;
0 - full friction (friction is slipperyness)&lt;br /&gt;
1 - some friction&lt;br /&gt;
2 - no friction&lt;br /&gt;
&lt;br /&gt;
Pikmin seeds die:&lt;br /&gt;
4 - full friction&lt;br /&gt;
5 - some friction&lt;br /&gt;
6 - no friction&lt;br /&gt;
&lt;br /&gt;
Second Digit (Sound index):&lt;br /&gt;
&lt;br /&gt;
0 - grass&lt;br /&gt;
1 - soil&lt;br /&gt;
2 - sand&lt;br /&gt;
3 - wood&lt;br /&gt;
4 - water&lt;br /&gt;
5- stone&lt;br /&gt;
6 - iron&lt;br /&gt;
7 - snow&lt;br /&gt;
8 - water (has water particle effects when used with 1 as the first digit)&lt;br /&gt;
9 - paper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export the model back to obj, use obj2grid to convert the obj to grid.bin/mapcode.bin, and import back into the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Model replacement==&lt;br /&gt;
see this guide for now &lt;br /&gt;
https://pikmintkb.com/wiki/Custom_models&lt;br /&gt;
&lt;br /&gt;
==Adding more treasures==&lt;br /&gt;
&lt;br /&gt;
create a new szs in \user\Abe\Pellet\&amp;lt;region&amp;gt; with your bmd, as well as the carry.bck animation. make sure that the bmd and szs are named the same thing (ex. ahiru.bmd, ahiru.szs).&lt;br /&gt;
then go to otakara_config.txt in pelletlist_(language).szs and add a new entry for your custom treasure, and edit anything you need to. make sure the names refer to the correct things. At the top of the file, increment the number at the top (normally 188). then, open otakara_texts.szs and create a new folder with the same name as your szs containing an animmgr.txt and a collinfo.txt (you can copy these from another treasure).&lt;br /&gt;
This is all you need to do to get the treasure working in game, however the piklopedia requires a bit more work.&lt;br /&gt;
go to \user\Matoba\resulttex\us\arc.szs and again create a folder with the name of your custom treasure. this is where you will but an icon for your treasure. &lt;br /&gt;
the icon should be a 32 x 32 bti image named texture.bti.&lt;br /&gt;
finally, go to \message\mesRes_&amp;lt;language&amp;gt;.szs and extract pikmin2.bmg using the bmg tool in ⁠pikmin-tools. there, you will add an entry for your treasure&#039;s in game name (this does not have to be the same name as the one in the filesystem) and also a piklopedia entry for your treasure. You should be all set at that point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu and HUD editing ==&lt;br /&gt;
&lt;br /&gt;
BLO files, which house most of the screen resources, can be edited with pyblo2-gui. Often, positions of a UI element may be controlled by a BCK element, which can be edited in the animation part of the program.&lt;br /&gt;
BRK and BTK animations may also be involved,which can be edited with bark_conv and btk-conv respectively. BPK files can be edited with j3d-animation-editor.&lt;br /&gt;
&lt;br /&gt;
==Custom sounds and music==&lt;br /&gt;
&lt;br /&gt;
Custom streamed music can be made with JATAST, a command line tool for converting WAV files to AST files. When converting a .wav file, have the loop points be contained in the .wav file itself. It is important to have new .ast files encoded with ADPCM4, as this helps with disc read speeds. To convert .wav files to ADPCM4 .asts, run this in a command prompt or terminal: &amp;lt;code&amp;gt;jatast yoursong.wav newsong.ast -encode-format adpcm4&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Custom sequenced music can be made with either flaaffy (command-line) or JAIMaker (GUI-based), tools that convert MIDI files to BMS files. For non-interactive sequenced music (such as the world map theme and high scores theme), a simple MIDI conversion will suffice. Review [https://docs.google.com/document/d/1UNhdBL3tYAn9sHO8gdOVJIpaHVo9_bbCLz7OazkEgZA/edit this document] to see what instruments you can use for your song depending on what bms you&#039;re replacing  (if you&#039;re not editing wScenes with the Sound Modding Toolkit, that is)&lt;br /&gt;
&lt;br /&gt;
If you want interactive overworld music, or randomized interactive cave music, see these two guides:&lt;br /&gt;
&lt;br /&gt;
[https://pikmintkb.com/wiki/Creating_Interactive_BMS_Files Creating interactive area music]&lt;br /&gt;
&lt;br /&gt;
[https://pikmintkb.com/wiki/Creating_cave_music Creating interactive cave music]&lt;br /&gt;
&lt;br /&gt;
Replacement sounds, custom samples, wScene editing + creation, and new instruments can be done with the Pikmin 2 Sound Modding Toolkit. This [https://pikmintkb.com/wiki/Sound_Replacement_Tutorial page] outlines the process, as well as a process for doing custom sound effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running your modified game==&lt;br /&gt;
See [[General instructions#Running a modified game]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Instructions]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=PSound.aaf&amp;diff=5107</id>
		<title>PSound.aaf</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=PSound.aaf&amp;diff=5107"/>
		<updated>2025-08-17T08:09:22Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; is an [[AAF File|AAF]] file which defines the game&#039;s sound system. It contains references to [[AST  file|streamed]] and [[BMS file|sequenced]] music files as well as data for sound effects and instruments.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This page describes the contents of PSound.aaf when converted with the [https://xayr.gay/tools/SoundModdingToolkit/ Pikmin 2 SoundModdingToolkit]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Instruments&amp;lt;/h2&amp;gt;&lt;br /&gt;
&#039;&#039;Found in the &amp;quot;AudioModding/IBNK(number)/include&amp;quot; folders, as &amp;quot;Inst_(number).json&amp;quot;&#039;&#039; &amp;lt;/br&amp;gt;&lt;br /&gt;
Defines instruments used by sequenced music and sound effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK0&amp;lt;/h3&amp;gt;&lt;br /&gt;
&#039;&#039;Defined by &amp;quot;AudioModding/IBNK0/ibnk.json&amp;quot;.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sound effects brought over from Pikmin 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK1&amp;lt;/h3&amp;gt;&lt;br /&gt;
&#039;&#039;Defined by &amp;quot;AudioModding/IBNK1/ibnk.json&amp;quot;.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sound effects created by Takahiro Watanabe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK2&amp;lt;/h3&amp;gt;&lt;br /&gt;
&#039;&#039;Defined by AudioModding/IBNK2/ibnk.json.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sound effects created by Kazumi Totaka.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK3&amp;lt;/h3&amp;gt;&lt;br /&gt;
&#039;&#039;Defined by &amp;quot;AudioModding/IBNK3/ibnk.json&amp;quot;.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sound effects created by Mitsuhiro Hikino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK4&amp;lt;/h3&amp;gt;&lt;br /&gt;
&#039;&#039;Defined by &amp;quot;AudioModding/IBNK4/ibnk.json&amp;quot;.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sequenced music created by Hajime Wakai.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK5&amp;lt;/h3&amp;gt;&lt;br /&gt;
&#039;&#039;Defined by &amp;quot;AudioModding/IBNK5/ibnk.json&amp;quot;.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sequenced music created by Kazumi Totaka.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK6 (Wii only)&amp;lt;/h3&amp;gt;&lt;br /&gt;
&#039;&#039;Not currently extracted by the Toolkit, though can be with some minor tweaks to the initialization script.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for Wii Home Menu sound effects. (advised to not be touched)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Wave System&amp;lt;/h2&amp;gt;&lt;br /&gt;
&#039;&#039;Found in the &amp;quot;AudioModding/0/&amp;quot; or &amp;quot;AudioModding/WS_MainWSYS&amp;quot; folder&#039;&#039; &amp;lt;/br&amp;gt;&lt;br /&gt;
Defines sample data used by instruments.&amp;lt;br&amp;gt;&lt;br /&gt;
GameCube Pikmin 2 has one main WaveSystem used for all music and sound effects. Wii Pikmin 2 has an additional smaller one for the Wii Home Menu.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
manifest.json controls how many wScene (wave scene, control which samples are loaded at a given time) definitions are in the AAF.&amp;lt;br&amp;gt;&lt;br /&gt;
wavetable.json controls information about the specific audio waves, such as sample rate, looping, and what type of sound it is (e.g. ADPCM4 or PCM16)&amp;lt;br&amp;gt;&lt;br /&gt;
The scenes subfolder contains wScene definition jsons.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sound Table&amp;lt;/h2&amp;gt;&lt;br /&gt;
&#039;&#039;Contains allocations for all sounds, whether streamed music, sequenced music or sound effects.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In the &#039;&#039;AudioModding/SoundTable/includes&#039;&#039; folder, json definitions can be found for each category of sound.&amp;lt;br&amp;gt;&lt;br /&gt;
There are six (seven in Wii) sound effects categories (1-6/7), one sequenced music category (10), and one streamed music category (11).&amp;lt;br&amp;gt;&lt;br /&gt;
In the AAF, the categories are arranged 10, 11, 7 (Wii only), 6, 5, 4, 3, 2, 1.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further info about categories 1-6 can be found on the [[Se.bms|sound effects list page]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Category 10&amp;lt;/h3&amp;gt;&lt;br /&gt;
Category 10 contains entries for each sequenced music song in the game.&amp;lt;br&amp;gt;&lt;br /&gt;
This part of the AAF is mostly overwritten by &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt;, which lists each BMS file&#039;s filename, and the volume of the music track. The game will usually refer to BMS files directly by filename instead of sound ID.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Category 11&amp;lt;/h3&amp;gt;&lt;br /&gt;
Category 11 contains entries for each streamed music song in the game.&amp;lt;br&amp;gt;&lt;br /&gt;
This part of the AAF is augmented by &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt;, which lists each AST file&#039;s internal name (defined in AudioRes/PSound.asn), the ID of the song (defined here in category 11) and the volume of the music track. The game loads AST files through the sound ID determined here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Stream Table&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This part of the AAF defines the file name of each AST file in the game.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=PSound.aaf&amp;diff=5106</id>
		<title>PSound.aaf</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=PSound.aaf&amp;diff=5106"/>
		<updated>2025-08-17T08:02:09Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: add rudimentary info on aaf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; is an &#039;[[AAF File|AAF]] file which defines the game&#039;s sound system. It contains references to [[AST  file|streamed]] and [[BMS file|sequenced]] music files as well as data for sound effects and instruments.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This page describes the contents of PSound.aaf when converted with the [https://xayr.gay/tools/SoundModdingToolkit/ Pikmin 2 SoundModdingToolkit]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Instruments&amp;lt;/h2&amp;gt;&lt;br /&gt;
Found in the &#039;&#039;AudioModding/IBNK(number)/inlcude&#039;&#039; folders, as &#039;&#039;Inst_(number).json&#039;&#039; &amp;lt;/br&amp;gt;&lt;br /&gt;
Defines instruments used by sequenced music and sound effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK0&amp;lt;/h3&amp;gt;&lt;br /&gt;
Defined by AudioModding/IBNK0/ibnk.json.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sound effects brought over from Pikmin 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK1&amp;lt;/h3&amp;gt;&lt;br /&gt;
Defined by AudioModding/IBNK1/ibnk.json.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sound effects created by Takahiro Watanabe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK2&amp;lt;/h3&amp;gt;&lt;br /&gt;
Defined by AudioModding/IBNK2/ibnk.json.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sound effects created by Kazumi Totaka.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK3&amp;lt;/h3&amp;gt;&lt;br /&gt;
Defined by AudioModding/IBNK3/ibnk.json.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sound effects created by Mitsuhiro Hikino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK4&amp;lt;/h3&amp;gt;&lt;br /&gt;
Defined by AudioModding/IBNK4/ibnk.json.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sequenced music created by Hajime Wakai.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK5&amp;lt;/h3&amp;gt;&lt;br /&gt;
Defined by AudioModding/IBNK5/ibnk.json.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for sequenced music created by Kazumi Totaka.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;IBNK6 (Wii only)&amp;lt;/h3&amp;gt;&lt;br /&gt;
Not currently extracted by the Toolkit, though can be with some minor tweaks.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contains instrument data for Wii Home Menu sound effects. (advised to not be touched)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Wave System&amp;lt;/h2&amp;gt;&lt;br /&gt;
Found in the &#039;&#039;AudioModding/0/&#039;&#039; or &#039;&#039;AudioModding/WS_MainWSYS&#039;&#039; folder &amp;lt;/br&amp;gt;&lt;br /&gt;
Defines sample data used by instruments.&amp;lt;br&amp;gt;&lt;br /&gt;
GameCube Pikmin 2 has one main WaveSystem used for all music and sound effects. Wii Pikmin 2 has an additional smaller one for the Wii Home Menu.&lt;br /&gt;
&lt;br /&gt;
manifest.json controls how many wScene (wave scene, control which samples are loaded at a given time) definitions are in the AAF.&amp;lt;br&amp;gt;&lt;br /&gt;
wavetable.json controls information about the specific audio waves, such as sample rate, looping, and what type of sound it is (e.g. ADPCM4 or PCM16)&amp;lt;br&amp;gt;&lt;br /&gt;
The scenes subfolder contains wScene definition jsons.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sound Table&amp;lt;/h2&amp;gt;&lt;br /&gt;
Contains allocations for all sounds, whether streamed music, sequenced music or sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
In the &#039;&#039;AudioModding/SoundTable/includes&#039;&#039; folder, json definitions can be found for each category of sound.&amp;lt;br&amp;gt;&lt;br /&gt;
There are six (seven in Wii) sound effects categories (1-6/7), one sequenced music category (10), and one streamed music category (11).&amp;lt;br&amp;gt;&lt;br /&gt;
In the AAF, the categories are arranged 10, 11, 7 (Wii only), 6, 5, 4, 3, 2, 1.&lt;br /&gt;
&lt;br /&gt;
Further info about categories 1-6 can be found on the [[Se.bms|sound effects list page]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Category 10&amp;lt;/h3&amp;gt;&lt;br /&gt;
Category 10 contains entries for each sequenced music song in the game.&amp;lt;br&amp;gt;&lt;br /&gt;
This part of the AAF is mostly overwritten by &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; which lists each BMS file&#039;s filename, and the volume of the music track.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Category 11&amp;lt;/h3&amp;gt;&lt;br /&gt;
Category 11 contains entries for each streamed music song in the game.&amp;lt;br&amp;gt;&lt;br /&gt;
This part of the AAF is mostly overwritten by &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; which lists each AST file&#039;s internal name (defined in AudioRes/PSound.asn), the ID of the song (defined here in category 11) and the volume of the music track.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Stream Table&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This part of the AAF defines the file name of each AST file in the game.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Main_Page&amp;diff=5105</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Main_Page&amp;diff=5105"/>
		<updated>2025-08-17T07:06:54Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: fix swap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MainTemplate&lt;br /&gt;
| welcome = Welcome to the &#039;&#039;&#039;&#039;&#039;Pikmin&#039;&#039; Technical Knowledge Base&#039;&#039;&#039;!&lt;br /&gt;
| blurb = A wiki dedicated to the internal files in &#039;&#039;Pikmin&#039;&#039; games.&lt;br /&gt;
| about_title = About&lt;br /&gt;
| about_content =&lt;br /&gt;
Throughout the years, &#039;&#039;Pikmin&#039;&#039; fans have tinkered with the files inside the games in order to better learn how they work, and to create custom content. Since there are a lot of nuances in every little thing, and since newcomers to the concept of file editing show up all the time, this wiki was created with the purpose of serving as a knowledge base for all that the fans know!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partners&#039;&#039;&#039;:&lt;br /&gt;
* [https://pikminwiki.com Pikipedia] - the &#039;&#039;Pikmin&#039;&#039; wiki&lt;br /&gt;
* [https://discord.gg/msMKc3G Pikcord] - the &#039;&#039;Pikmin&#039;&#039; community Discord server&lt;br /&gt;
* [https://discord.gg/G7Pgkdh Hocotate Hacker] - the &#039;&#039;Pikmin&#039;&#039; hacking community Discord server&lt;br /&gt;
| other_title = What this wiki is &#039;&#039;not&#039;&#039;&lt;br /&gt;
| other_content =&lt;br /&gt;
* It&#039;s not a wiki about pirating &#039;&#039;Pikmin&#039;&#039; games.&lt;br /&gt;
* It&#039;s not a file-sharing service.&lt;br /&gt;
* It&#039;s not a wiki where you document...&lt;br /&gt;
** Canon content. Try [https://pikminwiki.com/ Pikipedia] instead.&lt;br /&gt;
** Fan-made content. Try [https://pikminfanon.com/ Pikmin Fanon] instead.&lt;br /&gt;
** Unused content or regional differences. Try [https://tcrf.net TCRF] instead.&lt;br /&gt;
* It&#039;s not an official source of info. The information here is mostly obtained via experimenting, and is subject to change as new discoveries are made.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Global information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 75%;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;Global info&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[General instructions]]&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
* [[Save files]]&lt;br /&gt;
* [[:Category:Tools|Tools]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game-specific information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 75%;&amp;quot;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;New Play Control! Pikmin&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 2&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;New Play Control! Pikmin 2&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 3&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;Pikmin 3 Deluxe&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Hey! Pikmin&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 4&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GENERAL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | General&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin|Main information]]&lt;br /&gt;
* [[Pikmin instructions|Instructions]]&lt;br /&gt;
* [[Pikmin cheat codes|Useful cheat codes]]&lt;br /&gt;
* [[Pikmin memory addresses|Memory addresses]]&lt;br /&gt;
* [[Pikmin glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2|Main information]]&lt;br /&gt;
* [[Pikmin 2 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 2 cheat codes|Useful cheat codes]]&lt;br /&gt;
* [[Pikmin 2 memory addresses|Memory addresses]]&lt;br /&gt;
* [[Pikmin 2 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 2 glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3|Main information]]&lt;br /&gt;
* [[Pikmin 3 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 3 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 3 glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin|Main information]]&lt;br /&gt;
* [[Hey! Pikmin instructions|Instructions]]&lt;br /&gt;
* [[Hey! Pikmin troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Hey! Pikmin glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4|Main information]]&lt;br /&gt;
* [[Pikmin 4 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 4 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 4 glossary|Glossary]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE LISTS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | File lists&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin directory tree|Directory tree]]&lt;br /&gt;
* [[JAM file list|JAM file list (Pikiseq.arc)]]&lt;br /&gt;
* [[STX file list|STX file list]]&lt;br /&gt;
* [[CIN file list|CIN file list]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2 directory tree|Directory tree]]&lt;br /&gt;
* [[AST file list|AST (streamed music)]]&lt;br /&gt;
* [[Pikmin 2 BMS file list|BMS (sequenced music)]]&lt;br /&gt;
* [[Pikmin 2 CND file list|CND (sequenced music for caves)]]&lt;br /&gt;
* [[Se.bms|Sound effects list]]&lt;br /&gt;
* [[Pikmin 2 cave units information|List of information of each cave unit]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 directory tree|&#039;&#039;Pikmin 3&#039;&#039; directory tree]]&lt;br /&gt;
* [[Pikmin 3 Deluxe directory tree|&#039;&#039;Pikmin 3 Deluxe&#039;&#039; directory tree]]&lt;br /&gt;
* [[BFSTM file list|BFSTM (streamed music)]]&lt;br /&gt;
* [[MSBT file list|MSBT (text string)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin directory tree|Directory tree]]&lt;br /&gt;
* [[BCSTM file list|BCSTM (music)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4 directory tree|directory tree]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CONSTANTS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Constants&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin identifiers|Identifiers]]&lt;br /&gt;
* [[Olimar&#039;s voyage log table]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 2 Pikmin states|Pikmin states]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 3 progress value|Progress value]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin identifiers|Identifiers]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 4 text identifiers|Text Identifiers]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARTICLES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Particle effects&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PCR particles]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[JPC particles]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PTCL particles (Pikmin 3)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PTCL particles (Hey Pikmin)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE FORMATS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Stage generation&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin binary GEN format|Binary GEN format]]&lt;br /&gt;
* [[Pikmin route|Routes]]&lt;br /&gt;
&lt;br /&gt;
* Outdated pages&lt;br /&gt;
** [[Pikmin area generator file|Generator]]&lt;br /&gt;
** [[Pikmin gen codes|Gen codes]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Overworld&lt;br /&gt;
** [[Pikmin 2 area generator file|Overworld generation parameters]]&lt;br /&gt;
** [[Pikmin 2 map lighting files|Lighting]]&lt;br /&gt;
** [[Pikmin 2 waterboxes|Waterbox]]&lt;br /&gt;
** [[Pikmin 2 collision format|Collision]]&lt;br /&gt;
* Caves&lt;br /&gt;
** [[Cave generation parameters|Cave generation parameters]]&lt;br /&gt;
** [[Pikmin 2 Challenge Mode settings|Challenge Mode]]&lt;br /&gt;
** [[Pikmin 2 cave lighting files|Lighting]]&lt;br /&gt;
* Units (cave rooms)&lt;br /&gt;
** [[Cave unit generation|Cave unit generation]]&lt;br /&gt;
** [[Cave unit definition file|Cave unit definition]]&lt;br /&gt;
** [[Cave fixed layout|Cave fixed layout]]&lt;br /&gt;
* [[Pikmin 2 route|Routes]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Teki Units&lt;br /&gt;
** [[NoraSpawner]]&lt;br /&gt;
* [[Dandori Battles]]&lt;br /&gt;
* [[Disabling Pikmin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE FORMATS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | File formats&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Archive Formats&lt;br /&gt;
** [[Paired ARC+DIR file]]&lt;br /&gt;
** [[BUN file]] (also ANM)&lt;br /&gt;
** [[BARC file]]&lt;br /&gt;
* Binary formats&lt;br /&gt;
** [[MOD file]] (3D Model)&lt;br /&gt;
** [[TXE file]] (Texture)&lt;br /&gt;
** [[BTI file]] (Texture)&lt;br /&gt;
** [[BLO file]] (2D screen data)&lt;br /&gt;
** [[PCR file]] (Particle effect parameters)&lt;br /&gt;
** [[DC? files]] (Identifier for either DCA or DCK)&lt;br /&gt;
*** [[DCA file]] (Animation)&lt;br /&gt;
*** [[DCK file]] (Animation)&lt;br /&gt;
** [[H4M file]] (Pre-rendered video)&lt;br /&gt;
** [[JAM file]] (Sequenced music)&lt;br /&gt;
** [[STX file]] (Streamed music)&lt;br /&gt;
** [[AW file]] (Sound Bank)&lt;br /&gt;
** [[BX file]] (Sound system archive)&lt;br /&gt;
** [[Pikmin parameter files|Parameter Files]]&lt;br /&gt;
* Plaintext Formats&lt;br /&gt;
** [[CIN file]] (Cutscene resource manager)&lt;br /&gt;
** [[DSK file]] (Cutscene data)&lt;br /&gt;
** [[DMD file]] (Intermediary 3D model)&lt;br /&gt;
** [[CNV file]] (Intermediary conversion file)&lt;br /&gt;
* Unknown Formats&lt;br /&gt;
** [[GST file]]&lt;br /&gt;
** [[ACT file]]&lt;br /&gt;
** [[CARD file]]&lt;br /&gt;
* Missing Formats&lt;br /&gt;
** [[DVW file]] (Material file?) &lt;br /&gt;
** [[JMP file]] (Intermediary plaintext 3D model file?)&lt;br /&gt;
** [[MD3 file]] (3D Model)&lt;br /&gt;
** [[BSP flle]] (3D Model)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Archive Formats&lt;br /&gt;
** [[SZS file]]&lt;br /&gt;
** [[RARC file]]&lt;br /&gt;
* [[BMD file]] (J3D model)&lt;br /&gt;
* [[BTI file]] (Texture)&lt;br /&gt;
* [[BTK file]] (Animated texture)&lt;br /&gt;
* [[JPC file]] (Particle effect container)&lt;br /&gt;
** [[JPA file]] (Particle effect)&lt;br /&gt;
* [[BCA file]] (Animation)&lt;br /&gt;
* [[BCK file]] (Animation)&lt;br /&gt;
* [[AAF file]] (Sound system archive)&lt;br /&gt;
* [[BMS file]] (Sequenced music)&lt;br /&gt;
* [[AST file]] (Streamed music)&lt;br /&gt;
* [[AW file]] (Soundfont)&lt;br /&gt;
* [[THP file]] (Pre-rendered video)&lt;br /&gt;
* [[BLO file]] (2D screen data)&lt;br /&gt;
* [[STB file]] (Cutscene data)&lt;br /&gt;
* [[BMG file]] (Text)&lt;br /&gt;
* [[BPK file]]&lt;br /&gt;
* [[BRK file]]&lt;br /&gt;
* [[BMC file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Misc.&lt;br /&gt;
** [[DWN file]] (e-Reader minigames?)&lt;br /&gt;
** [[DMD file]] (Intermediary 3D model)&lt;br /&gt;
** [[Pikmin 2 title screen|Title screen]]&lt;br /&gt;
** [[Pikmin 2 save file|Saved game data]]&lt;br /&gt;
** [[2-Player Battle stage parameters]]&lt;br /&gt;
** [[Mail]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[Pikmin 3 radar files|Radar]]&lt;br /&gt;
* [[BFSTM file|BFSTM (streamed music)]]&lt;br /&gt;
* [[BFRES file|BFRES (file container, usually for 3D models and animations)]]&lt;br /&gt;
* [[BFLYT file|BFLYT (2D layout data)]]&lt;br /&gt;
* [[MSBT file (Pikmin 3)|MSBT (text string)]]&lt;br /&gt;
* [[MSBF file (Pikmin 3)|MSBF (message flow)]]&lt;br /&gt;
* [[FSKB file]] (Unknown)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[Hey! Pikmin save file|Saved game data]]&lt;br /&gt;
* [[ARC file (Hey! Pikmin)|ARC (archive)]]&lt;br /&gt;
* [[BCH file|BCH (animation)]]&lt;br /&gt;
* [[BFLIM file|BFLIM (image)]]&lt;br /&gt;
* [[MSBT file (Hey! Pikmin)|MSBT (text string)]]&lt;br /&gt;
* [[Z file|Z (archive)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[WEBM file|WEBM (video)]]&lt;br /&gt;
* [[BNVIB file|BNVIB]]&lt;br /&gt;
* [[UTOC/UCAS file|UTOC/UCAS (Archive for UASSET Files)]]&lt;br /&gt;
* [[UASSET file|UASSET File (Unreal Engine Asset File)]]&lt;br /&gt;
* [[UFONT file|UFONT]]&lt;br /&gt;
* [[LOCRES file|LOCRES]]&lt;br /&gt;
* [[WEM file|WEM]]&lt;br /&gt;
* [[BNK file|BNK]]&lt;br /&gt;
* [[Save Files]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARAMETERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Parameters&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin labeled parameter file|Labeled]]&lt;br /&gt;
** [[Pikmin AI constants|AI constants]]&lt;br /&gt;
** [[Pikmin cunit parameters|Cuint]]&lt;br /&gt;
** [[Pikmin demo parameters|Demo]]&lt;br /&gt;
** [[Pikmin game parameters|Game parameters]]&lt;br /&gt;
** [[Pikmin navi parameters|NaviMgr]]&lt;br /&gt;
** [[Pikmin piki parameters|PikiMgr]]&lt;br /&gt;
** [[Pikmin sound parameters|Sound]]&lt;br /&gt;
** [[Pikmin wave parameters|Wave]]&lt;br /&gt;
** [[Pikmin prefs parameters|Prefs]]&lt;br /&gt;
** [[Pikmin boss parameters|Boss]]&lt;br /&gt;
* [[Pikmin unlabeled parameter file|Unlabeled]]&lt;br /&gt;
** [[Pikmin camera parameters|Camera]]&lt;br /&gt;
** [[Pikmin key parameters|Key]]&lt;br /&gt;
** [[Pikmin enemy parameter file format|Enemy]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[naviParms|Leader]]&lt;br /&gt;
* [[pikiParms|Pikmin]]&lt;br /&gt;
* [[CameraParms|Camera]]&lt;br /&gt;
* [[Pikmin 2 enemy parameters|Entity]]&lt;br /&gt;
* [[Titan Dweevil parameters]]&lt;br /&gt;
* [[Trackmap parameters|trackMap parameters]]&lt;br /&gt;
* [[Pikmin 2 day time parameters|Day time parameters]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[carryParam|Carry]]&lt;br /&gt;
* [[fruitsParam|Fruit]]&lt;br /&gt;
* [[pikminParam|Pikmin]]&lt;br /&gt;
* [[itemprogressParam|Item progress]]&lt;br /&gt;
* [[Mission settings]]&lt;br /&gt;
* [[GameobjectParam|Object]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[ActorSerializeParameter and AI]]&lt;br /&gt;
* [[Data Table/Actor Parameters]]&lt;br /&gt;
* [[Enemy Parameters]]&lt;br /&gt;
* [[ActorGeneratorList]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MANAGERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Managers&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[pikibank.bx|Pikmin audio system]]&lt;br /&gt;
* [[Pikmin pellet manager|Pellets]]&lt;br /&gt;
* [[Pikmin anim manager|Animations]]&lt;br /&gt;
* [[Pikmin teki manager|Tekis (DOL)]]&lt;br /&gt;
* [[Pikmin stage manager|Stage manager]]&lt;br /&gt;
* [[Pikmin stage information|Stage information / lighting]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PSound.aaf|Audio system]]&lt;br /&gt;
* Pellet List&lt;br /&gt;
** [[Pikmin 2 otakara_config.txt|Treasure Config]]&lt;br /&gt;
** [[Pikmin 2 item_config.txt|Upgrade Config]]&lt;br /&gt;
** [[Pikmin 2 carcass_config.txt|Carcass Config]]&lt;br /&gt;
** [[Pikmin 2 numberpellet_config.txt|Number Pellet Config]]&lt;br /&gt;
* [[Pikmin 2 animmgr.txt|Animation Manager]]&lt;br /&gt;
* [[Pikmin 2 collinfo.txt|Collision Info]]&lt;br /&gt;
&lt;br /&gt;
* [[Mail Table]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
SCREENS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Screens&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Screen file list (Pikmin 2)]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EXPLANATIONS AND NOTES&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Explanations and Notes&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin unread files|Unread files]]&lt;br /&gt;
* [[Pikmin disable archives trick|Disable loading from archives]]&lt;br /&gt;
* [[Pikmin Emperor crash|Emperor crash]]&lt;br /&gt;
* [[Minty Ramblings]]&lt;br /&gt;
* [[Custom sequenced Pikmin music|Custom sequenced music]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Cave spawning]]&lt;br /&gt;
* [[Custom models]]&lt;br /&gt;
* [[Submerged Castle oddities|Special cave properties]]&lt;br /&gt;
* [[How Pikmin 2 loads text|How &#039;&#039;Pikmin 2&#039;&#039; loads text]]&lt;br /&gt;
* [[Sound Replacement Tutorial|Sound Replacement Tutorial]]&lt;br /&gt;
* [[Enemy Memory Usage]]&lt;br /&gt;
* [[Disassembly instructions]]&lt;br /&gt;
* [[Jsystem]]&lt;br /&gt;
* [[Pikmin 2 gEnemyInfo|gEnemyInfo]]&lt;br /&gt;
* [[Epoch Notes]]&lt;br /&gt;
* [[User:Captain Salty/Blo Editing Notes|Blo Editing Notes]]&lt;br /&gt;
* [[Cutscene Editing and Creation]]&lt;br /&gt;
* [[Cutscene Notes]]&lt;br /&gt;
* [[Creating Interactive BMS Files|Creating interactive area music]]&lt;br /&gt;
* [[Creating cave music|Creating interactive cave music]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 oddities|Oddities]]&lt;br /&gt;
* [[Story mode maps in other modes]]&lt;br /&gt;
* [[Pikmin 3 Bingo Battle|Bingo Battle]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin unread files|Unread files]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Documentation&lt;br /&gt;
** [[Lilith&#039;s P4 Notes]]&lt;br /&gt;
** [[Pikmin 4 Demo Research]]&lt;br /&gt;
* Tutorials&lt;br /&gt;
** [[Model Importing Tutorial]]&lt;br /&gt;
** [[WEM Audio Modding Tutorial]]&lt;br /&gt;
** [[Enemy Duplication Tutorial (WIP)]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TOOLS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Tools&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PikBinGen]]&lt;br /&gt;
* [[Archive Toolkit]]&lt;br /&gt;
* [[OpenGL / Dolphin System|OpenGL / Dolphin System]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Cave Creator]]&lt;br /&gt;
* [[Pikmin 2 Routes Editor &amp;amp; Gen Editor]]&lt;br /&gt;
* [[obj2grid]]&lt;br /&gt;
* [[DOL-Ckit]]&lt;br /&gt;
* [[Drought Enders Cave Creator]]&lt;br /&gt;
* [[SuperBMD]]&lt;br /&gt;
* [[FinModelUtility]]&lt;br /&gt;
* [[GameCube File Tools]]&lt;br /&gt;
* [[pyblo2-gui]]&lt;br /&gt;
* [[pikminBMGtool]]&lt;br /&gt;
* [[btk-conv]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Gen Editor]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin stage viewer]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[P4UassetEditor]]&lt;br /&gt;
* [[Modified FModel]]&lt;br /&gt;
* [[UCas/UToc Packer]]&lt;br /&gt;
* [[Dandori DB]]&lt;br /&gt;
* [[Dandori Desktop]]&lt;br /&gt;
* [[UE4LocalizationsTool]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
* [[:Category:Pages with things to do|Things to do]]&lt;br /&gt;
* [[:Category:Pages with unsure information|Unsure info that needs to be confirmed]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PikminTKB]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Main_Page&amp;diff=5104</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Main_Page&amp;diff=5104"/>
		<updated>2025-08-17T07:05:32Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: additions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MainTemplate&lt;br /&gt;
| welcome = Welcome to the &#039;&#039;&#039;&#039;&#039;Pikmin&#039;&#039; Technical Knowledge Base&#039;&#039;&#039;!&lt;br /&gt;
| blurb = A wiki dedicated to the internal files in &#039;&#039;Pikmin&#039;&#039; games.&lt;br /&gt;
| about_title = About&lt;br /&gt;
| about_content =&lt;br /&gt;
Throughout the years, &#039;&#039;Pikmin&#039;&#039; fans have tinkered with the files inside the games in order to better learn how they work, and to create custom content. Since there are a lot of nuances in every little thing, and since newcomers to the concept of file editing show up all the time, this wiki was created with the purpose of serving as a knowledge base for all that the fans know!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partners&#039;&#039;&#039;:&lt;br /&gt;
* [https://pikminwiki.com Pikipedia] - the &#039;&#039;Pikmin&#039;&#039; wiki&lt;br /&gt;
* [https://discord.gg/msMKc3G Pikcord] - the &#039;&#039;Pikmin&#039;&#039; community Discord server&lt;br /&gt;
* [https://discord.gg/G7Pgkdh Hocotate Hacker] - the &#039;&#039;Pikmin&#039;&#039; hacking community Discord server&lt;br /&gt;
| other_title = What this wiki is &#039;&#039;not&#039;&#039;&lt;br /&gt;
| other_content =&lt;br /&gt;
* It&#039;s not a wiki about pirating &#039;&#039;Pikmin&#039;&#039; games.&lt;br /&gt;
* It&#039;s not a file-sharing service.&lt;br /&gt;
* It&#039;s not a wiki where you document...&lt;br /&gt;
** Canon content. Try [https://pikminwiki.com/ Pikipedia] instead.&lt;br /&gt;
** Fan-made content. Try [https://pikminfanon.com/ Pikmin Fanon] instead.&lt;br /&gt;
** Unused content or regional differences. Try [https://tcrf.net TCRF] instead.&lt;br /&gt;
* It&#039;s not an official source of info. The information here is mostly obtained via experimenting, and is subject to change as new discoveries are made.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Global information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 75%;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;Global info&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[General instructions]]&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
* [[Save files]]&lt;br /&gt;
* [[:Category:Tools|Tools]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game-specific information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 75%;&amp;quot;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;New Play Control! Pikmin&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 2&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;New Play Control! Pikmin 2&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 3&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;Pikmin 3 Deluxe&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Hey! Pikmin&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 4&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GENERAL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | General&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin|Main information]]&lt;br /&gt;
* [[Pikmin instructions|Instructions]]&lt;br /&gt;
* [[Pikmin cheat codes|Useful cheat codes]]&lt;br /&gt;
* [[Pikmin memory addresses|Memory addresses]]&lt;br /&gt;
* [[Pikmin glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2|Main information]]&lt;br /&gt;
* [[Pikmin 2 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 2 cheat codes|Useful cheat codes]]&lt;br /&gt;
* [[Pikmin 2 memory addresses|Memory addresses]]&lt;br /&gt;
* [[Pikmin 2 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 2 glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3|Main information]]&lt;br /&gt;
* [[Pikmin 3 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 3 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 3 glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin|Main information]]&lt;br /&gt;
* [[Hey! Pikmin instructions|Instructions]]&lt;br /&gt;
* [[Hey! Pikmin troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Hey! Pikmin glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4|Main information]]&lt;br /&gt;
* [[Pikmin 4 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 4 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 4 glossary|Glossary]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE LISTS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | File lists&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin directory tree|Directory tree]]&lt;br /&gt;
* [[JAM file list|JAM file list (Pikiseq.arc)]]&lt;br /&gt;
* [[STX file list|STX file list]]&lt;br /&gt;
* [[CIN file list|CIN file list]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2 directory tree|Directory tree]]&lt;br /&gt;
* [[AST file list|AST (streamed music)]]&lt;br /&gt;
* [[Pikmin 2 BMS file list|BMS (sequenced music)]]&lt;br /&gt;
* [[Pikmin 2 CND file list|CND (sequenced music for caves)]]&lt;br /&gt;
* [[Se.bms|Sound effects list]]&lt;br /&gt;
* [[Pikmin 2 cave units information|List of information of each cave unit]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 directory tree|&#039;&#039;Pikmin 3&#039;&#039; directory tree]]&lt;br /&gt;
* [[Pikmin 3 Deluxe directory tree|&#039;&#039;Pikmin 3 Deluxe&#039;&#039; directory tree]]&lt;br /&gt;
* [[BFSTM file list|BFSTM (streamed music)]]&lt;br /&gt;
* [[MSBT file list|MSBT (text string)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin directory tree|Directory tree]]&lt;br /&gt;
* [[BCSTM file list|BCSTM (music)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4 directory tree|directory tree]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CONSTANTS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Constants&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin identifiers|Identifiers]]&lt;br /&gt;
* [[Olimar&#039;s voyage log table]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 2 Pikmin states|Pikmin states]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 3 progress value|Progress value]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin identifiers|Identifiers]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 4 text identifiers|Text Identifiers]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARTICLES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Particle effects&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PCR particles]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[JPC particles]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PTCL particles (Pikmin 3)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PTCL particles (Hey Pikmin)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE FORMATS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Stage generation&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin binary GEN format|Binary GEN format]]&lt;br /&gt;
* [[Pikmin route|Routes]]&lt;br /&gt;
&lt;br /&gt;
* Outdated pages&lt;br /&gt;
** [[Pikmin area generator file|Generator]]&lt;br /&gt;
** [[Pikmin gen codes|Gen codes]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Overworld&lt;br /&gt;
** [[Pikmin 2 area generator file|Overworld generation parameters]]&lt;br /&gt;
** [[Pikmin 2 map lighting files|Lighting]]&lt;br /&gt;
** [[Pikmin 2 waterboxes|Waterbox]]&lt;br /&gt;
** [[Pikmin 2 collision format|Collision]]&lt;br /&gt;
* Caves&lt;br /&gt;
** [[Cave generation parameters|Cave generation parameters]]&lt;br /&gt;
** [[Pikmin 2 Challenge Mode settings|Challenge Mode]]&lt;br /&gt;
** [[Pikmin 2 cave lighting files|Lighting]]&lt;br /&gt;
* Units (cave rooms)&lt;br /&gt;
** [[Cave unit generation|Cave unit generation]]&lt;br /&gt;
** [[Cave unit definition file|Cave unit definition]]&lt;br /&gt;
** [[Cave fixed layout|Cave fixed layout]]&lt;br /&gt;
* [[Pikmin 2 route|Routes]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Teki Units&lt;br /&gt;
** [[NoraSpawner]]&lt;br /&gt;
* [[Dandori Battles]]&lt;br /&gt;
* [[Disabling Pikmin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE FORMATS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | File formats&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Archive Formats&lt;br /&gt;
** [[Paired ARC+DIR file]]&lt;br /&gt;
** [[BUN file]] (also ANM)&lt;br /&gt;
** [[BARC file]]&lt;br /&gt;
* Binary formats&lt;br /&gt;
** [[MOD file]] (3D Model)&lt;br /&gt;
** [[TXE file]] (Texture)&lt;br /&gt;
** [[BTI file]] (Texture)&lt;br /&gt;
** [[BLO file]] (2D screen data)&lt;br /&gt;
** [[PCR file]] (Particle effect parameters)&lt;br /&gt;
** [[DC? files]] (Identifier for either DCA or DCK)&lt;br /&gt;
*** [[DCA file]] (Animation)&lt;br /&gt;
*** [[DCK file]] (Animation)&lt;br /&gt;
** [[H4M file]] (Pre-rendered video)&lt;br /&gt;
** [[JAM file]] (Sequenced music)&lt;br /&gt;
** [[STX file]] (Streamed music)&lt;br /&gt;
** [[AW file]] (Sound Bank)&lt;br /&gt;
** [[BX file]] (Sound system archive)&lt;br /&gt;
** [[Pikmin parameter files|Parameter Files]]&lt;br /&gt;
* Plaintext Formats&lt;br /&gt;
** [[CIN file]] (Cutscene resource manager)&lt;br /&gt;
** [[DSK file]] (Cutscene data)&lt;br /&gt;
** [[DMD file]] (Intermediary 3D model)&lt;br /&gt;
** [[CNV file]] (Intermediary conversion file)&lt;br /&gt;
* Unknown Formats&lt;br /&gt;
** [[GST file]]&lt;br /&gt;
** [[ACT file]]&lt;br /&gt;
** [[CARD file]]&lt;br /&gt;
* Missing Formats&lt;br /&gt;
** [[DVW file]] (Material file?) &lt;br /&gt;
** [[JMP file]] (Intermediary plaintext 3D model file?)&lt;br /&gt;
** [[MD3 file]] (3D Model)&lt;br /&gt;
** [[BSP flle]] (3D Model)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Archive Formats&lt;br /&gt;
** [[SZS file]]&lt;br /&gt;
** [[RARC file]]&lt;br /&gt;
* [[BMD file]] (J3D model)&lt;br /&gt;
* [[BTI file]] (Texture)&lt;br /&gt;
* [[BTK file]] (Animated texture)&lt;br /&gt;
* [[JPC file]] (Particle effect container)&lt;br /&gt;
** [[JPA file]] (Particle effect)&lt;br /&gt;
* [[BCA file]] (Animation)&lt;br /&gt;
* [[BCK file]] (Animation)&lt;br /&gt;
* [[AAF file]] (Sound system archive)&lt;br /&gt;
* [[BMS file]] (Sequenced music)&lt;br /&gt;
* [[AST file]] (Streamed music)&lt;br /&gt;
* [[AW file]] (Soundfont)&lt;br /&gt;
* [[THP file]] (Pre-rendered video)&lt;br /&gt;
* [[BLO file]] (2D screen data)&lt;br /&gt;
* [[STB file]] (Cutscene data)&lt;br /&gt;
* [[BMG file]] (Text)&lt;br /&gt;
* [[BPK file]]&lt;br /&gt;
* [[BRK file]]&lt;br /&gt;
* [[BMC file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Misc.&lt;br /&gt;
** [[DWN file]] (e-Reader minigames?)&lt;br /&gt;
** [[DMD file]] (Intermediary 3D model)&lt;br /&gt;
** [[Pikmin 2 title screen|Title screen]]&lt;br /&gt;
** [[Pikmin 2 save file|Saved game data]]&lt;br /&gt;
** [[2-Player Battle stage parameters]]&lt;br /&gt;
** [[Mail]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[Pikmin 3 radar files|Radar]]&lt;br /&gt;
* [[BFSTM file|BFSTM (streamed music)]]&lt;br /&gt;
* [[BFRES file|BFRES (file container, usually for 3D models and animations)]]&lt;br /&gt;
* [[BFLYT file|BFLYT (2D layout data)]]&lt;br /&gt;
* [[MSBT file (Pikmin 3)|MSBT (text string)]]&lt;br /&gt;
* [[MSBF file (Pikmin 3)|MSBF (message flow)]]&lt;br /&gt;
* [[FSKB file]] (Unknown)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[Hey! Pikmin save file|Saved game data]]&lt;br /&gt;
* [[ARC file (Hey! Pikmin)|ARC (archive)]]&lt;br /&gt;
* [[BCH file|BCH (animation)]]&lt;br /&gt;
* [[BFLIM file|BFLIM (image)]]&lt;br /&gt;
* [[MSBT file (Hey! Pikmin)|MSBT (text string)]]&lt;br /&gt;
* [[Z file|Z (archive)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[WEBM file|WEBM (video)]]&lt;br /&gt;
* [[BNVIB file|BNVIB]]&lt;br /&gt;
* [[UTOC/UCAS file|UTOC/UCAS (Archive for UASSET Files)]]&lt;br /&gt;
* [[UASSET file|UASSET File (Unreal Engine Asset File)]]&lt;br /&gt;
* [[UFONT file|UFONT]]&lt;br /&gt;
* [[LOCRES file|LOCRES]]&lt;br /&gt;
* [[WEM file|WEM]]&lt;br /&gt;
* [[BNK file|BNK]]&lt;br /&gt;
* [[Save Files]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARAMETERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Parameters&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin labeled parameter file|Labeled]]&lt;br /&gt;
** [[Pikmin AI constants|AI constants]]&lt;br /&gt;
** [[Pikmin cunit parameters|Cuint]]&lt;br /&gt;
** [[Pikmin demo parameters|Demo]]&lt;br /&gt;
** [[Pikmin game parameters|Game parameters]]&lt;br /&gt;
** [[Pikmin navi parameters|NaviMgr]]&lt;br /&gt;
** [[Pikmin piki parameters|PikiMgr]]&lt;br /&gt;
** [[Pikmin sound parameters|Sound]]&lt;br /&gt;
** [[Pikmin wave parameters|Wave]]&lt;br /&gt;
** [[Pikmin prefs parameters|Prefs]]&lt;br /&gt;
** [[Pikmin boss parameters|Boss]]&lt;br /&gt;
* [[Pikmin unlabeled parameter file|Unlabeled]]&lt;br /&gt;
** [[Pikmin camera parameters|Camera]]&lt;br /&gt;
** [[Pikmin key parameters|Key]]&lt;br /&gt;
** [[Pikmin enemy parameter file format|Enemy]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[naviParms|Leader]]&lt;br /&gt;
* [[pikiParms|Pikmin]]&lt;br /&gt;
* [[CameraParms|Camera]]&lt;br /&gt;
* [[Pikmin 2 enemy parameters|Entity]]&lt;br /&gt;
* [[Titan Dweevil parameters]]&lt;br /&gt;
* [[Trackmap parameters|trackMap parameters]]&lt;br /&gt;
* [[Pikmin 2 day time parameters|Day time parameters]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[carryParam|Carry]]&lt;br /&gt;
* [[fruitsParam|Fruit]]&lt;br /&gt;
* [[pikminParam|Pikmin]]&lt;br /&gt;
* [[itemprogressParam|Item progress]]&lt;br /&gt;
* [[Mission settings]]&lt;br /&gt;
* [[GameobjectParam|Object]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[ActorSerializeParameter and AI]]&lt;br /&gt;
* [[Data Table/Actor Parameters]]&lt;br /&gt;
* [[Enemy Parameters]]&lt;br /&gt;
* [[ActorGeneratorList]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MANAGERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Managers&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin audio system|pikibank.bx]]&lt;br /&gt;
* [[Pikmin pellet manager|Pellets]]&lt;br /&gt;
* [[Pikmin anim manager|Animations]]&lt;br /&gt;
* [[Pikmin teki manager|Tekis (DOL)]]&lt;br /&gt;
* [[Pikmin stage manager|Stage manager]]&lt;br /&gt;
* [[Pikmin stage information|Stage information / lighting]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PSound.aaf|Audio system]]&lt;br /&gt;
* Pellet List&lt;br /&gt;
** [[Pikmin 2 otakara_config.txt|Treasure Config]]&lt;br /&gt;
** [[Pikmin 2 item_config.txt|Upgrade Config]]&lt;br /&gt;
** [[Pikmin 2 carcass_config.txt|Carcass Config]]&lt;br /&gt;
** [[Pikmin 2 numberpellet_config.txt|Number Pellet Config]]&lt;br /&gt;
* [[Pikmin 2 animmgr.txt|Animation Manager]]&lt;br /&gt;
* [[Pikmin 2 collinfo.txt|Collision Info]]&lt;br /&gt;
&lt;br /&gt;
* [[Mail Table]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
SCREENS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Screens&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Screen file list (Pikmin 2)]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EXPLANATIONS AND NOTES&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Explanations and Notes&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin unread files|Unread files]]&lt;br /&gt;
* [[Pikmin disable archives trick|Disable loading from archives]]&lt;br /&gt;
* [[Pikmin Emperor crash|Emperor crash]]&lt;br /&gt;
* [[Minty Ramblings]]&lt;br /&gt;
* [[Custom sequenced Pikmin music|Custom sequenced music]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Cave spawning]]&lt;br /&gt;
* [[Custom models]]&lt;br /&gt;
* [[Submerged Castle oddities|Special cave properties]]&lt;br /&gt;
* [[How Pikmin 2 loads text|How &#039;&#039;Pikmin 2&#039;&#039; loads text]]&lt;br /&gt;
* [[Sound Replacement Tutorial|Sound Replacement Tutorial]]&lt;br /&gt;
* [[Enemy Memory Usage]]&lt;br /&gt;
* [[Disassembly instructions]]&lt;br /&gt;
* [[Jsystem]]&lt;br /&gt;
* [[Pikmin 2 gEnemyInfo|gEnemyInfo]]&lt;br /&gt;
* [[Epoch Notes]]&lt;br /&gt;
* [[User:Captain Salty/Blo Editing Notes|Blo Editing Notes]]&lt;br /&gt;
* [[Cutscene Editing and Creation]]&lt;br /&gt;
* [[Cutscene Notes]]&lt;br /&gt;
* [[Creating Interactive BMS Files|Creating interactive area music]]&lt;br /&gt;
* [[Creating cave music|Creating interactive cave music]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 oddities|Oddities]]&lt;br /&gt;
* [[Story mode maps in other modes]]&lt;br /&gt;
* [[Pikmin 3 Bingo Battle|Bingo Battle]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin unread files|Unread files]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Documentation&lt;br /&gt;
** [[Lilith&#039;s P4 Notes]]&lt;br /&gt;
** [[Pikmin 4 Demo Research]]&lt;br /&gt;
* Tutorials&lt;br /&gt;
** [[Model Importing Tutorial]]&lt;br /&gt;
** [[WEM Audio Modding Tutorial]]&lt;br /&gt;
** [[Enemy Duplication Tutorial (WIP)]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TOOLS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Tools&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PikBinGen]]&lt;br /&gt;
* [[Archive Toolkit]]&lt;br /&gt;
* [[OpenGL / Dolphin System|OpenGL / Dolphin System]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Cave Creator]]&lt;br /&gt;
* [[Pikmin 2 Routes Editor &amp;amp; Gen Editor]]&lt;br /&gt;
* [[obj2grid]]&lt;br /&gt;
* [[DOL-Ckit]]&lt;br /&gt;
* [[Drought Enders Cave Creator]]&lt;br /&gt;
* [[SuperBMD]]&lt;br /&gt;
* [[FinModelUtility]]&lt;br /&gt;
* [[GameCube File Tools]]&lt;br /&gt;
* [[pyblo2-gui]]&lt;br /&gt;
* [[pikminBMGtool]]&lt;br /&gt;
* [[btk-conv]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Gen Editor]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin stage viewer]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[P4UassetEditor]]&lt;br /&gt;
* [[Modified FModel]]&lt;br /&gt;
* [[UCas/UToc Packer]]&lt;br /&gt;
* [[Dandori DB]]&lt;br /&gt;
* [[Dandori Desktop]]&lt;br /&gt;
* [[UE4LocalizationsTool]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
* [[:Category:Pages with things to do|Things to do]]&lt;br /&gt;
* [[:Category:Pages with unsure information|Unsure info that needs to be confirmed]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PikminTKB]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Mail_Table&amp;diff=5103</id>
		<title>Mail Table</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Mail_Table&amp;diff=5103"/>
		<updated>2025-08-17T06:41:58Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: initial mail table page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;code&amp;gt;user/Koono/mail_table.bin&amp;lt;/code&amp;gt; is the config file used for space mail entries at the end of day screen.&amp;lt;br&amp;gt;&lt;br /&gt;
it can be converted using [[https://github.com/pish-pish/MailTableConverter MailTableConverter]].&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=RARC_file&amp;diff=5102</id>
		<title>RARC file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=RARC_file&amp;diff=5102"/>
		<updated>2025-08-17T06:35:29Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: grab info from luma&amp;#039;s workshop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
The RARC file format is an archive format commonly found in first party Nintendo GameCube games. Many files are stored in these archive files in a similar way to ZIP and 7Z files.&lt;br /&gt;
&lt;br /&gt;
In Pikmin 2&#039;s file structure, ARC files are nowhere near as common as the SZS file, which is a version of the format that&#039;s compressed via Yaz0 compression.&lt;br /&gt;
&lt;br /&gt;
Extracting and repacking these archives is done by using WiiExplorer. WiiExplorer also allows compressing archives with Yaz0 compression, though at the time of writing, it does not take into account a quirk with Pikmin 2 where Yaz0 compressed archives have to be padded to 0x20 bytes. Use [https://pikmintkb.com/wiki/GameCube_File_Tools GameCube File Tools] for Yaz0 compression instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Format Specifications =&lt;br /&gt;
Below you&#039;ll find helpful tables on how the file is structured&lt;br /&gt;
== Header ==&lt;br /&gt;
Each RARC starts with a &#039;&#039;header&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &amp;quot;RARC&amp;quot; in ASCII&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Size of the entire file&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || Data Header Offset (Always 0x20)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Offset to the File Data section minus 0x20&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Length of the File Data section&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || Size of all the MRAM Files in the File Data section&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || Size of all the ARAM Files in the File Data section&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || Size of all the DVD Files in the File Data section&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
== Data Header ==&lt;br /&gt;
This section has information on the entire archive&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || The number of Directory Nodes&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Offset to the Directory Nodes section minus 0x20 (always 0x20)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || The number of File Nodes&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Offset to the File Nodes section minus 0x20&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Size of the String Table&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || String Table offset minus 0x20&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || The next available File Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || bool || Keeps the File ID&#039;s Synced (Always 0x01, or TRUE in SMG)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B || UInt8[5] || Padding, All 0x00&#039;s&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
== Directory Node section ==&lt;br /&gt;
This section is a list of information for each folder (or, subdirectory) in the archive.&amp;lt;br/&amp;gt;&lt;br /&gt;
Each list entry looks like this:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || The first 4 characters in the Directory&#039;s name in all caps.&amp;lt;br/&amp;gt;Example: &amp;quot;RootFolder&amp;quot; = &amp;quot;ROOT&amp;quot;, and &amp;quot;Tmp&amp;quot; = &amp;quot;TMP &amp;quot; (Names less than 4 characters are padded to 4 characters with spaces)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Offset to the Directory&#039;s name in the String Table&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || Hash of the Directory&#039;s name&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || The number of File Nodes in this directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Offset to the first File Node in the File Nodes section&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
== File Node section ==&lt;br /&gt;
This section is a list of information for each file in the archive. It also contains entries for directories so we can know which directory belongs where.&amp;lt;br/&amp;gt;&lt;br /&gt;
Each list entry looks like this:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Node Index (0xFFFF if this entry represents a subdirectory)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Hash of the Node&#039;s name&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt8 Bitfield || Defines certain Node Attributes. See the Node Attributes table below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || UInt8[1] || Padding. 0x00&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || Offset to the Node&#039;s name in the String Table&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || If this node represents a file: Offset to the File&#039;s Data in the File Data section.&amp;lt;br/&amp;gt;If this node represents a directory: Directory Node section index to use&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || If this node represents a file: Size of the File&#039;s Data.&amp;lt;br/&amp;gt;If this node represents a directory: The size of the Directory Node (always 0x10)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
=== Node Attributes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Mask !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || FILE || This node is a File&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || DIRECTORY || This node is a Directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || COMPRESSED || This node&#039;s file is compressed&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || PRELOAD_TO_MRAM || Set the file to be loaded into Main RAM&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || PRELOAD_TO_ARAM || Set the file to be loaded into Auxiliary RAM (GameCube only)&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || LOAD_FROM_DVD || Set the file to be loaded right off the DVD when needed&lt;br /&gt;
|-&lt;br /&gt;
| 0x80 || YAZ0_COMPRESSED || This node&#039;s file is specifically YAZ0 compressed. Enable the COMPRESSED flag as well when using this&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Among the File Nodes are nodes for a &amp;quot;..&amp;quot; and &amp;quot;.&amp;quot; directory. The &amp;quot;.&amp;quot; entry points to the current directory, and the &amp;quot;..&amp;quot; directory points to the parent directory (or 0xFFFFFFFF if the current directory is the topmost directory).&lt;br /&gt;
&lt;br /&gt;
== String Table ==&lt;br /&gt;
This section is composed of NULL-terminated ASCII strings. The above information references these strings.&lt;br /&gt;
&lt;br /&gt;
== File Data section ==&lt;br /&gt;
This section is a chunk of all the data that files in the archive contain. Files are sorted in a specific order, and are padded to the nearest 32 byte boundary.&amp;lt;br/&amp;gt;The sorting order is MRAM Files then ARAM Files then DVD Files.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=BARC_file&amp;diff=5087</id>
		<title>BARC file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=BARC_file&amp;diff=5087"/>
		<updated>2025-06-26T18:00:29Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: rewrite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&#039;&#039;&#039;BARC files&#039;&#039;&#039; are a file format used in some games using the JAudio sound engine, such as Luigi&#039;s Mansion and Super Mario Sunshine. These files contain all of the music sequences used in the game. &lt;br /&gt;
&lt;br /&gt;
In Pikmin, the BARC file is named &amp;lt;code&amp;gt;pikiseq.arc&amp;lt;/code&amp;gt;, and is located in &amp;lt;code&amp;gt;dataDir/SndData/Seqs.&amp;lt;/code&amp;gt; The header of the BARC, &amp;lt;code&amp;gt;pikiseq.hed&amp;lt;/code&amp;gt; is embedded in the game&#039;s DOL, though if it is not found there, it will load the file from the disc.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin]]&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5082</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5082"/>
		<updated>2025-06-06T06:02:00Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: minor tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An object contains a list of &amp;quot;commands&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;VAR&amp;quot; to bind a value/function to a variable&lt;br /&gt;
* &amp;quot;SET&amp;quot; to directly affect a properties of the bound object&lt;br /&gt;
* &amp;quot;WAIT&amp;quot; to halt the execution of the object for a certain amount of frames&lt;br /&gt;
* &amp;quot;SYNC&amp;quot; to halt the execution of the object until an event, external to the STB, is fired&lt;br /&gt;
* &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; to OR/XOR/AND the stb flags with a value&lt;br /&gt;
&lt;br /&gt;
Each object has a set of &amp;quot;variables&amp;quot;, which are bound to a properties of the object. A value/function can be bound to a variable using the &amp;quot;VAR&amp;quot; command:&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
The value/function types are:&lt;br /&gt;
 &lt;br /&gt;
Void, to write a 0 to the variable&amp;lt;br&amp;gt;&lt;br /&gt;
Immediate, to write a direct value to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/function will be unbound from the &lt;br /&gt;
variables.&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 will use the origin and camera angle specified in &amp;lt;code&amp;gt;demos.txt&amp;lt;/code&amp;gt; (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene &amp;lt;code&amp;gt;(x01_gamestart)&amp;lt;/code&amp;gt; with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2).&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain commands. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene &amp;lt;code&amp;gt;(g02_boot_onyonR)&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that serve as commands that can be set. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors that can affect parts of the game and execute special commands. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties (commands) are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open special item collection UI (res_special_item)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the StartDemoCamera command is used, the cutscene will use the game&#039;s camera rather than the cutscene camera. This is mainly seen in &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5079</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5079"/>
		<updated>2025-06-04T17:30:24Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An object contains a list of &amp;quot;commands&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;VAR&amp;quot; to bind a value/function to a variable&lt;br /&gt;
* &amp;quot;SET&amp;quot; to directly affect a properties of the bound object&lt;br /&gt;
* &amp;quot;WAIT&amp;quot; to halt the execution of the object for a certain amount of frames&lt;br /&gt;
* &amp;quot;SYNC&amp;quot; to halt the execution of the object until an event, external to the STB, is fired&lt;br /&gt;
* &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; to OR/XOR/AND the stb flags with a value&lt;br /&gt;
&lt;br /&gt;
Each object has a set of &amp;quot;variables&amp;quot;, which are bound to a properties of the object. A value/function can be bound to a variable using the &amp;quot;VAR&amp;quot; command:&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
The value/function types are:&lt;br /&gt;
 &lt;br /&gt;
Void, to write a 0 to the variable&amp;lt;br&amp;gt;&lt;br /&gt;
Immediate, to write a direct value to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/function will be unbound from the &lt;br /&gt;
variables.&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 the origin and camera angle specified in demos.txt (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2).&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain commands. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Rotation - the XYZ rotation of the actor relative to the actor&#039;s default orientation. Only the Y value seems to be used (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck.&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the Y value of the Rotation variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that serve as commands that can be set. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors that can affect parts of the game and execute special commands. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties (commands) are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the StartDemoCamera command is used, the cutscene will use the game&#039;s camera rather than the cutscene camera. This is mainly seen in &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5078</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5078"/>
		<updated>2025-06-04T16:36:05Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: we need a new tool assuming the game doesn&amp;#039;t throw a fit either&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are theoretically supported. (note STB2JSON only supports the blocks vanilla uses) Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An object contains a list of &amp;quot;commands&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;VAR&amp;quot; to bind a value/function to a variable&lt;br /&gt;
* &amp;quot;SET&amp;quot; to directly affect a properties of the bound object&lt;br /&gt;
* &amp;quot;WAIT&amp;quot; to halt the execution of the object for a certain amount of frames&lt;br /&gt;
* &amp;quot;SYNC&amp;quot; to halt the execution of the object until an event, external to the STB, is fired&lt;br /&gt;
* &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; to OR/XOR/AND the stb flags with a value&lt;br /&gt;
&lt;br /&gt;
Each object has a set of &amp;quot;variables&amp;quot;, which are bound to a properties of the object. A value/function can be bound to a variable using the &amp;quot;VAR&amp;quot; command:&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
The value/function types are:&lt;br /&gt;
 &lt;br /&gt;
Void, to write a 0 to the variable&amp;lt;br&amp;gt;&lt;br /&gt;
Immediate, to write a direct value to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/function will be unbound from the &lt;br /&gt;
variables.&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 the origin and camera angle specified in demos.txt (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2).&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain commands. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* RotationY - the Y rotation of the actor (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck.&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the RotationY variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that serve as commands that can be set. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors that can affect parts of the game and execute special commands. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties (commands) are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the StartDemoCamera command is used, the cutscene will use the game&#039;s camera rather than the cutscene camera. This is mainly seen in &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5077</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5077"/>
		<updated>2025-06-04T16:17:53Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: position flags explanation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are supported. Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An object contains a list of &amp;quot;commands&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;VAR&amp;quot; to bind a value/function to a variable&lt;br /&gt;
* &amp;quot;SET&amp;quot; to directly affect a properties of the bound object&lt;br /&gt;
* &amp;quot;WAIT&amp;quot; to halt the execution of the object for a certain amount of frames&lt;br /&gt;
* &amp;quot;SYNC&amp;quot; to halt the execution of the object until an event, external to the STB, is fired&lt;br /&gt;
* &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; to OR/XOR/AND the stb flags with a value&lt;br /&gt;
&lt;br /&gt;
Each object has a set of &amp;quot;variables&amp;quot;, which are bound to a properties of the object. A value/function can be bound to a variable using the &amp;quot;VAR&amp;quot; command:&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
The value/function types are:&lt;br /&gt;
 &lt;br /&gt;
Void, to write a 0 to the variable&amp;lt;br&amp;gt;&lt;br /&gt;
Immediate, to write a direct value to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/function will be unbound from the &lt;br /&gt;
variables.&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demos.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
Position flags are also important to note too.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A position flag of 2 the origin and camera angle specified in demos.txt (both value are confusingly named origin in the file, but the origin is the one with three floats and the angle is the one with one float)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 4 or 8 will use the origin and camera angle specified in the code that plays the specific cutscene. (8 specifically will also try to get the best camera angle for the cutscene when played)&amp;lt;br&amp;gt;&lt;br /&gt;
A position flag of 16 will do the same as 4 &amp;amp; 8, in addition to taking into account the sound position of certain objects in the cutscene (specified in code)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For this example, we will be using a cutscene with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin, as the position flag is set to 2).&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain commands. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* RotationY - the Y rotation of the actor (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck.&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the RotationY variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that serve as commands that can be set. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors that can affect parts of the game and execute special commands. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties (commands) are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the StartDemoCamera command is used, the cutscene will use the game&#039;s camera rather than the cutscene camera. This is mainly seen in &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5076</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5076"/>
		<updated>2025-06-04T15:02:28Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: particle correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are supported. Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An object contains a list of &amp;quot;commands&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;VAR&amp;quot; to bind a value/function to a variable&lt;br /&gt;
* &amp;quot;SET&amp;quot; to directly affect a properties of the bound object&lt;br /&gt;
* &amp;quot;WAIT&amp;quot; to halt the execution of the object for a certain amount of frames&lt;br /&gt;
* &amp;quot;SYNC&amp;quot; to halt the execution of the object until an event, external to the STB, is fired&lt;br /&gt;
* &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; to OR/XOR/AND the stb flags with a value&lt;br /&gt;
&lt;br /&gt;
Each object has a set of &amp;quot;variables&amp;quot;, which are bound to a properties of the object. A value/function can be bound to a variable using the &amp;quot;VAR&amp;quot; command:&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
The value/function types are:&lt;br /&gt;
 &lt;br /&gt;
Void, to write a 0 to the variable&amp;lt;br&amp;gt;&lt;br /&gt;
Immediate, to write a direct value to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/function will be unbound from the &lt;br /&gt;
variables.&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demo.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
For this example, we will be using a cutscene with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin).&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain commands. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* RotationY - the Y rotation of the actor (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck.&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the RotationY variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that serve as commands that can be set. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have three variables:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to, or the cutscene position if not attached to an object.(float)&lt;br /&gt;
* Rotation - XYZ rotation relative to the particle&#039;s default orientation(float)&lt;br /&gt;
* Scaling - XYZ size relative to the particle&#039;s default size(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors that can affect parts of the game and execute special commands. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties (commands) are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the StartDemoCamera command is used, the cutscene will use the game&#039;s camera rather than the cutscene camera. This is mainly seen in &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=BTK_file&amp;diff=5074</id>
		<title>BTK file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=BTK_file&amp;diff=5074"/>
		<updated>2025-05-28T20:38:19Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: fix damn page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;BTK&#039;&#039;&#039; stores texture matrix animation data.&lt;br /&gt;
&lt;br /&gt;
=JSYSTEM header=&lt;br /&gt;
&lt;br /&gt;
The file starts with a standard [[JSYSTEM#Header|JSYSTEM]] header, using a magic of J3D1btk1. BTK files have one chunk, the TTK1 chunk.&lt;br /&gt;
&lt;br /&gt;
=TTK1 Chunk=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset                !! Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x00&amp;lt;/center&amp;gt; || [[JSYSTEM#Chunk_Data|Chunk Header]] || Standard JSYSTEM chunk header&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x08&amp;lt;/center&amp;gt; || [[BCK#LoopMode|Loop Mode]] || Loop Mode ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x09&amp;lt;/center&amp;gt; || int || Rotation Frac || Multiplier for fixed-point decimal&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x0A&amp;lt;/center&amp;gt; || short || Duration || The number of frames in the animation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x0C&amp;lt;/center&amp;gt; || short || Keyframe Count || The total number of keyframes, times 3&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x0E&amp;lt;/center&amp;gt; || short || Scale Table Count || The number of entries in the scale table&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x10&amp;lt;/center&amp;gt; || short || Rotation Table Count || The number of entries in the rotation table&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x12&amp;lt;/center&amp;gt; || short || Translation Table Count || The number of entries in the translation table&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x14&amp;lt;/center&amp;gt; || int || Animation Data Table Offset || Offset to the start of the animation data table&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x18&amp;lt;/center&amp;gt; || int || Remap Table Offset || Not used at runtime&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x1C&amp;lt;/center&amp;gt; || int || Name Table Offset || Contains the material names to bind against&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x20&amp;lt;/center&amp;gt; || int || Texture Coordinate Index Table Offset ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x24&amp;lt;/center&amp;gt; || int || Center Coordinate Table Offset ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x28&amp;lt;/center&amp;gt; || int || Scale Table Offset ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x2C&amp;lt;/center&amp;gt; || int || Rotation Table Offset ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x30&amp;lt;/center&amp;gt; || int || Translation Table Offset ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x34&amp;lt;/center&amp;gt; || byte[0x28] || Post Matrix Data || A similar set of tables, for Post Matrices. Has never been observed to exist in the wild.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x5C&amp;lt;/center&amp;gt; || MatrixMode || Matrix Mode || Determines whether texture coordinates should be calculated with the Basic or Maya algorithm.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==MatrixMode==&lt;br /&gt;
&lt;br /&gt;
MatrixMode is an enum as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Name || Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000000 || Basic Mode ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000001 || Maya Mode ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The table data is packed in Struct-of-Arrays fashion, meaning that to read the Nth animation, one should read the Nth item in the material name, texture coordinate index, material center, and animation data tables.&lt;br /&gt;
&lt;br /&gt;
==Material Name and Texture Coordinate Index==&lt;br /&gt;
&lt;br /&gt;
The material name and texture coordinate index tell you how to bind the animation to a model. Animations are always bound by material name and texture coordinate index. The material name table is a [[JSYSTEM#Name_Tables|JUTNameTab]] table. The table entries are laid out as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset                !! Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x00&amp;lt;/center&amp;gt; || GXTexCoordID (byte) || Texture Coordinate Index ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Center Coordinate Table==&lt;br /&gt;
&lt;br /&gt;
The center coordinate is used by the Basic Matrix Mode algorithm. The table entries are laid out as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset                !! Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x00&amp;lt;/center&amp;gt; || float || S ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x04&amp;lt;/center&amp;gt; || float || T ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;0x08&amp;lt;/center&amp;gt; || float || Q ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Animation Data ==&lt;br /&gt;
&lt;br /&gt;
The animation data itself is stored in an identical form to BCK, so see the [[BCK page|BCK]] for details. Note that as this is acting on texture coordinates rather than world positions, the coordinates S, T, Q are used instead of X, Y, Z.&lt;br /&gt;
&lt;br /&gt;
== Calculating the SRT Texture Matrix ==&lt;br /&gt;
&lt;br /&gt;
The SRT texture matrix can be calculated by either the Basic or Maya matrix modes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Mode ===&lt;br /&gt;
&lt;br /&gt;
The Center S, Center T, Scale S, Scale T, Rotation Q, Translation S and Translation T inputs are used. The final matrix is a 3x2 matrix, which is as follows:&lt;br /&gt;
&lt;br /&gt;
 00 = Scale S * cos(Rotation Q)&lt;br /&gt;
 01 = Scale S * -sin(Rotation Q)&lt;br /&gt;
 02 = Translation S + Center S + (Scale S * (sin(Rotation Q) * Center T - cos(Rotation Q) * Center S))&lt;br /&gt;
&lt;br /&gt;
 10 = Scale T * sin(Rotation Q)&lt;br /&gt;
 11 = Scale T * cos(Rotation R)&lt;br /&gt;
 12 = Translation T + Center T + (Scale T * (-sin(Rotation Q) * Center S + cos(Rotation Q) * Center T))&lt;br /&gt;
&lt;br /&gt;
=== Maya Mode ===&lt;br /&gt;
&lt;br /&gt;
The Scale S, Scale T, Rotation Q, Translation S and Translation T inputs are used. The final matrix is a 3x2 matrix, which is as follows:&lt;br /&gt;
&lt;br /&gt;
 00 = Scale S * cos(Rotation Q)&lt;br /&gt;
 01 = Scale T * -sin(Rotation Q)&lt;br /&gt;
 02 = Scale S * ((0.5 * -cos(Rotation Q)) - (0.5 * sin(Rotation Q) - 0.5) - Translation S)&lt;br /&gt;
&lt;br /&gt;
 10 = Scale S * sin(rotation)&lt;br /&gt;
 11 = Scale T * cos(rotation)&lt;br /&gt;
 12 = Scale T * ((0.5 * -cos(Rotation Q)) + (0.5 * sin(Rotation Q) - 0.5) + Translation T) + 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{credits|cloudmodding}}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5073</id>
		<title>Cutscene Editing and Creation</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cutscene_Editing_and_Creation&amp;diff=5073"/>
		<updated>2025-05-21T05:37:24Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: apparently cutscenes can use the other blocks?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will run through editing and creating your own cutscenes in Pikmin 2. &amp;lt;br&amp;gt;&lt;br /&gt;
Cutscenes use the JStudio library, which was used in Wind Waker, Twilight Princess, Pikmin 2, and Skyward Sword.&amp;lt;br&amp;gt;&lt;br /&gt;
In Pikmin 2, cutscenes are contained in &amp;lt;code&amp;gt;demo.szs&amp;lt;/code&amp;gt; files in &amp;lt;code&amp;gt;user/Mukki/movie&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt; &lt;br /&gt;
Inside these szs files are a few assets, most notably the JStudio Binary (STB) file. This file controls initialization of cutscene data, as well as camera instructions.&amp;lt;br&amp;gt;&lt;br /&gt;
We can use a program called [https://drive.google.com/file/d/1JNqFF1IuJgdwzNA3XvVUEapyCwc2xfvP STB2JSON] to convert this to a more readable format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when extracting cutscene archives, you must use a program like WiiExplorer that can preserve the file indexes. This is because stb files load assets based in index, not by filename.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;STB Basics&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
STB files are separated into different &amp;quot;blocks&amp;quot; that can represent different &amp;quot;objects&amp;quot;. The available blocks in the format are:&lt;br /&gt;
&lt;br /&gt;
- JFVB (function value block)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCMR (camera)&amp;lt;br&amp;gt;&lt;br /&gt;
- JABL (ambient light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JACT (actor)&amp;lt;br&amp;gt;&lt;br /&gt;
- JSND (sound)&amp;lt;br&amp;gt;&lt;br /&gt;
- JLIT (light)&amp;lt;br&amp;gt;&lt;br /&gt;
- JCNT (control)&amp;lt;br&amp;gt;&lt;br /&gt;
- JMSG (message)&amp;lt;br&amp;gt;&lt;br /&gt;
- JFOG (fog)&amp;lt;br&amp;gt;&lt;br /&gt;
- JPTC (particle)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pikmin 2 only uses JFVB, JCMR, JCNT, JACT, JMSG, and JSND (which are the blocks that are going to be covered here), though the other blocks are supported. Particles are instead actors with a special identifier (an @ symbol in front of the name of the actor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An object contains a list of &amp;quot;commands&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;VAR&amp;quot; to bind a value/function to a variable&lt;br /&gt;
* &amp;quot;SET&amp;quot; to directly affect a properties of the bound object&lt;br /&gt;
* &amp;quot;WAIT&amp;quot; to halt the execution of the object for a certain amount of frames&lt;br /&gt;
* &amp;quot;SYNC&amp;quot; to halt the execution of the object until an event, external to the STB, is fired&lt;br /&gt;
* &amp;quot;OFLG&amp;quot;, &amp;quot;XFLG&amp;quot; and &amp;quot;AFLG&amp;quot; to OR/XOR/AND the stb flags with a value&lt;br /&gt;
&lt;br /&gt;
Each object has a set of &amp;quot;variables&amp;quot;, which are bound to a properties of the object. A value/function can be bound to a variable using the &amp;quot;VAR&amp;quot; command:&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;VAR (VarName) (Value/function) (Data)&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
The value/function types are:&lt;br /&gt;
 &lt;br /&gt;
Void, to write a 0 to the variable&amp;lt;br&amp;gt;&lt;br /&gt;
Immediate, to write a direct value to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Time, to write a direct value, that is multiplied by the number of frames since the last &amp;quot;WAIT&amp;quot; command multiplied by 0.03333333, to the variable (specified in (Data))&amp;lt;br&amp;gt;&lt;br /&gt;
Index, to attach a JFVB function to the variable (the function index is specified in (Data)).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A variable can affect more than one value of the bound object, in this case, the (Data) field&lt;br /&gt;
will have more than 1 value.&amp;lt;br&amp;gt;&lt;br /&gt;
After the delay of a &amp;quot;WAIT&amp;quot; command has passed, ALL value/function will be unbound from the &lt;br /&gt;
variables.&lt;br /&gt;
&lt;br /&gt;
An object&#039;s name is defined by the &amp;quot;Type&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
The JFVB block is the only one that does not represent objects. Instead, it holds &amp;quot;functions&amp;quot; all that represent data and how it evolves over time. There are two main types of functions used: &amp;quot;Constant&amp;quot;, which contains a value that never changes, and &amp;quot;Hermite&amp;quot;, which contains a value that changes following Hermite interpolation.&lt;br /&gt;
This is where values such as animation translation data and camera coordinates are stored.&lt;br /&gt;
&lt;br /&gt;
A group of values typically looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 12.966666&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;70.229546&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;12.966666&amp;quot;,&lt;br /&gt;
						&amp;quot;188.07487&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range is typically the start and end frames of the movement, if the value is not a constant value. To convert between the time values in range and frames, divide the frame number by 0.03333333.&amp;lt;br&amp;gt;&lt;br /&gt;
in this example, 12.966666 becomes roughly frame 389. To convert frames to time, multiply by 0.03333333.&lt;br /&gt;
&lt;br /&gt;
Each subgroup of values has three floats. The first one is the time, the second is the value of whatever you&#039;re putting (camera coordinates, animation translation data, etc), and the third is the tangent value for the hermite interpolation. Setting tangent values to 0.0 will result in a smooth ease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Camera&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note when getting camera coordinates, the position coordinates and target coordinates will be relative to the origin of the cutscene&#039;s location (wherever it is activated). The origin of a cutscene is specified in &amp;lt;code&amp;gt;user/Mukki/movie/demo.txt&amp;lt;/code&amp;gt;, and that value will need to be accounted for when getting coordinate values. &amp;lt;br&amp;gt;&lt;br /&gt;
For this example, we will be using a cutscene with an origin of &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt;, and we will use the pikmin 2 gen editor to get coordinates, where values will be relative to &amp;lt;code&amp;gt;0.0, 0.0, 0.0&amp;lt;/code&amp;gt; of the map&#039;s origin (which will serve as our cutscene origin).&lt;br /&gt;
Let&#039;s start making our stb. It&#039;s a good idea to start by getting a vanilla stb, and converting it to json, then editing our own values in.&amp;lt;br&amp;gt;&lt;br /&gt;
First, we&#039;re just doing camera, so delete everything aside from the JFVB and JCMR blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup our camera block, input this information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the Type to &amp;quot;camera&amp;quot; will set the camera.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Camera variables are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ProjFovy - the field of view (FOV) of the camera. (float)&lt;br /&gt;
* ViewRoll - the rotation of the camera. (float)&lt;br /&gt;
* ViewPos - the XYZ position of the camera in the world. (float)&lt;br /&gt;
* TargPos - the XYZ position of where the camera is looking in the world. (float)&lt;br /&gt;
* Distance - the culling distance of the camera. It is usually set to &amp;lt;code&amp;gt;1.0 12800.0&amp;lt;/code&amp;gt; (near distance, far distance)  (float)&lt;br /&gt;
&lt;br /&gt;
The indexes here correspond to values in the function value block. For instance, TargPos index 7 will have the Z coordinate of where the camera is looking take the values from the eighth group in the JFVB block.&amp;lt;br&amp;gt;&lt;br /&gt;
The index counts from 0.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start setting some values. Our first value (ProjFovy) will be the FOV of our camera. We want to keep it a constant value, so well have our first FVB group look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ (this is the bracket for the start of our JSON)&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: { (this is the bracket for the start of the JFVB block)&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [ (this is the bracket for the start of all data values in the block)&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our next group will be rotation values. As before, we want to keep this constant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to get position coordinates from the gen editor. Open up the files for the valley of Repose, as that is the location of where our cutscene is.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Place a reference object for the first set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the third (X), fourth (Y), and fifth (Z) set of values as Hermite functions. &amp;lt;br&amp;gt;&lt;br /&gt;
The first time value should be 0.0, for the start of the cutscene. Make sure the range is from frames 0 to 565 (converted to time).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],           &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],              &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place a reference object for the second set of coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Copy the XYZ coordinates of the second object into the JSON as the second set in the value groups.&lt;br /&gt;
The time value should be 18.83333145 (frame 565), for the end of the cutscene. &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the target coordinates. It helps to move your position in the gen editor to one of your position reference objects, to get a betteer view of where you want your camera to look.&amp;lt;br&amp;gt;&lt;br /&gt;
Place a reference object for your target coordinates.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Cutscenetutorialimage4.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
We&#039;ll use a Constant function for the target, since we currently do not want where the camera is looking to change.&lt;br /&gt;
Copy the XYZ coordinates of the object into the JSON. They should be in the sixth (X), seventh (Y), and eighth (Z) set of values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		](this is the bracket for the end of all data values in the block)&lt;br /&gt;
	},(this is the bracket for the end of the JFVB block)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what your JSON should look like now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can save your JSON, use STB2JSON to convert it to STB, then repack the cutscene archive.&lt;br /&gt;
If everything was done correctly, it should look like this ingame:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:cutscene1.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Actors (and particles)&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actors are the most complicated part of cutscenes, so we&#039;ll need to break a few things down. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are four main types of actors:&lt;br /&gt;
&lt;br /&gt;
Game Actors, which are certain creatures in the game world (like navis and onions). These are denoted with a &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Special Actors, which are actors that can activate certain commands. These are denoted with a &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Particle Actors, which are particles. These are denoted with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name. &amp;lt;br&amp;gt;&lt;br /&gt;
Actors, which are regular models placed in a cutscene. These are denoted with a &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name, though this doesn&#039;t seem to be required. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound effects are not part of the JACT block, but behave similarly to actors. These are denoted with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; symbol in front of the actor&#039;s name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Game Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Game Actors, each one has an identifier:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theOrima&amp;quot;&amp;lt;/code&amp;gt; is Olimar.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;theLouie&amp;quot;&amp;lt;/code&amp;gt; is Louie/President.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_1&amp;quot;&amp;lt;/code&amp;gt; is the first alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaAlive_2&amp;quot;&amp;lt;/code&amp;gt; is the second alive leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_1&amp;quot;&amp;lt;/code&amp;gt; is the first dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orimaDead_2&amp;quot;&amp;lt;/code&amp;gt; is the second dead leader.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_R&amp;quot;&amp;lt;/code&amp;gt; is the Red Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_Y&amp;quot;&amp;lt;/code&amp;gt; is the Yellow Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;onyon_B&amp;quot;&amp;lt;/code&amp;gt; is the Blue Onion.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;ufo&amp;quot;&amp;lt;/code&amp;gt; is the Hocotate Ship.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pod&amp;quot;&amp;lt;/code&amp;gt; is the Research Pod.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;pikmin&amp;quot;&amp;lt;/code&amp;gt; is the target of the cutscene, if that target is a Pikmin.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;orima&amp;quot;&amp;lt;/code&amp;gt; or &amp;quot;player&amp;quot; is the current active player.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;target&amp;lt;/code&amp;gt;&amp;quot; is the target of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Game Actor variables are:&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* RotationY - the Y rotation of the actor (float)&lt;br /&gt;
&lt;br /&gt;
Game Actor properties are:&lt;br /&gt;
 &lt;br /&gt;
* AnimData&lt;br /&gt;
* Anim&lt;br /&gt;
* MovieTranslation&lt;br /&gt;
&lt;br /&gt;
AnimData sets the index of the BCK data in the cutscene archive that will be applied to the creature it&#039;s set to affect. (int)&lt;br /&gt;
Anim sets which animation will be used. Setting Anim to &amp;quot;BCK&amp;quot; will use the BCK, while setting it to &amp;quot;None&amp;quot; will use the creature&#039;s base animation archive. (string)&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example from the unused red onion boot cutscene:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, Anim is set to None, so the animation will instead come from the onion&#039;s animations, and AnimData being set to 4 (counting from 0) will have the onion perform the fifth animation in the onion&#039;s &amp;lt;code&amp;gt;animmgr.txt&amp;lt;/code&amp;gt;, which is &amp;lt;code&amp;gt;bootup.bck.&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MovieTranslation defines how translation will be applied to the actor (string):&lt;br /&gt;
  &lt;br /&gt;
* &amp;quot;None&amp;quot; wont do anything,&lt;br /&gt;
* &amp;quot;Direct&amp;quot; will directly copy the translation to the actor position,&lt;br /&gt;
* &amp;quot;MinY&amp;quot; will directly copy the X and Z translations to the actor position, but set the Y position to the map&#039;s minimum Y,&lt;br /&gt;
* &amp;quot;FaceDir&amp;quot; will directly copy the translation to the actor position and copy the RotationY variable to the direction the actor is facing,&lt;br /&gt;
* &amp;quot;MoviePos&amp;quot; will copy the movie position to the actor position. &lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theLouie&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR Translation Index 16 17 18&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 3&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 70&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Translation Index 19 20 21&amp;quot;,&lt;br /&gt;
			&amp;quot;SET MovieTranslation Direct&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 4&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 350&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, our actor is &amp;lt;code&amp;gt;*theLouie&amp;lt;/code&amp;gt; (Louie), the first set of translation (in this case, movement of Louie&#039;s model) coordinates come from the value groups at indexes 16, 17, 18 (counting from 0) in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fourth (0, 1, 2, 3) file in the archive as the animation.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage1.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
After waiting 70 frames (and after the textbox is cleared) the second set of translation coordinates come from the value groups at indexes 19, 20, 21 in the FVB block, the animation is set to pull from the cutscene archive, and it sets the fifth (0, 1, 2, 3, 4) file in the archive as the animation.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation coordinates can be obtained the same way as obtaining camera position coordinates. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions (including the ship and pod), navis, underground cave holes, and geysers also have their own special properties that serve as commands that can be set. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note: the format for these identifiers is hex value/JSON name)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onions&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/CreateHead1 - create sprout&lt;br /&gt;
* 0x65/Spot - starts onion/ship/pod spot effect&lt;br /&gt;
* 0x66/SpotState - stops onion/ship/pod spot effect&lt;br /&gt;
* 0x67/StartPropera - start ship propeller animation&lt;br /&gt;
* 0x68/StopPropera - stop ship propeller animation&lt;br /&gt;
* 0x69/CreateHead2 - create sprout&lt;br /&gt;
&lt;br /&gt;
Navi &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64/EnterPikis - make Pikmin go into the onion/ship&lt;br /&gt;
* 0x66/HoleInPikis - make Pikmin go into a cave hole&lt;br /&gt;
* 0x67/FountainPikis - make Pikmin jump onto a geyser&lt;br /&gt;
* 0x68/DelShadow - hide leader shadow&lt;br /&gt;
* 0x69/DelParticles - hide leader particles&lt;br /&gt;
* 0x6a/AddParticles - show leader particles&lt;br /&gt;
* 0x6b/AddShadow - show leader shadow&lt;br /&gt;
&lt;br /&gt;
Hole&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x64 - make hole appear&lt;br /&gt;
&lt;br /&gt;
Geyser &lt;br /&gt;
&lt;br /&gt;
* 0x64 - make geyser appear&lt;br /&gt;
&lt;br /&gt;
Example (from &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*onyon_R&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 105&amp;quot;,&lt;br /&gt;
			&amp;quot;SET CreateHead2&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 315&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Particle Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Particle Actors are particles, getting their data from the &amp;lt;code&amp;gt;efx.jpc&amp;lt;/code&amp;gt; included in the cutscene archive.&lt;br /&gt;
&lt;br /&gt;
Particle actors have two properties:&lt;br /&gt;
&lt;br /&gt;
* Parc - the particle ID (Short) and the particle list index (Byte) in the JPC.&lt;br /&gt;
* Targ - the object on which the particle will appear. If a second string is specified, the particle will appear on the object&#039;s model joint specified by the second string&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_b&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 5 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;@boot_gr_o&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET Parc 6 5&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Targ *onyon_R body_1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 390&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Particles have one variable:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Translation - XYZ position offset from the position of the object it is attached to(float)&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;ground&amp;quot; is the second string, the particle will uses the object position and ignore the object matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Special Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Special Actors are actors that can affect parts of the game and execute special commands. They are usually context sensitive.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties (commands) are:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x00/LeaveCave - abandon treasures and pikmin when giving up&lt;br /&gt;
* 0x01/DayEnd - create day end enemies, spawn left behind Pikmin&lt;br /&gt;
* 0x02/FallPikiSound - start falling Pikmin sound effects in cave entry&lt;br /&gt;
* 0x03/ForceEnterPiki - force Pikmin into the Onion on day 1&lt;br /&gt;
* 0x65/StartDemoCamera - start &amp;quot;demo&amp;quot; camera type (using the regular game camera instead of the cutscene camera)&lt;br /&gt;
* 0x66/EndDemoCamera - go back to normal player camera&lt;br /&gt;
* 0xC9/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0xCB/OpenKentei - open treasure collection UI (res_kantei)&lt;br /&gt;
* 0x12D/FadeOut - fade the screen&lt;br /&gt;
* 0x12E/FadeIn - unfade the screen&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;+MovieCommand&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET FallPikiSound&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 219&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the StartDemoCamera command is used, the cutscene will use the game&#039;s camera rather than the cutscene camera. This is mainly seen in &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Actors&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actors are regular models that can appear in a cutscene.&lt;br /&gt;
&lt;br /&gt;
Actor properties are:&lt;br /&gt;
&lt;br /&gt;
* BCKIdx - sets the index of the BCK data in the cutscene archive that will be applied to the actor it&#039;s set to affect. (int)&lt;br /&gt;
* BMDIdx - sets the index of the BMD model the actor will use. (int)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actor variables are&lt;br /&gt;
&lt;br /&gt;
* Translation - the XYZ actor position offset from the movie position. (float)&lt;br /&gt;
* Scaling - the XYZ actor size relative to its default model size. (float)&lt;br /&gt;
* Rotation - the XYZ actor rotation relative to its default orientation. (float)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve absorbed all that, let&#039;s add some actors to our cutscene.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to add Olimar, and have him play the down animation from &amp;lt;code&amp;gt;s03_orimadown&amp;lt;/code&amp;gt;. We&#039;ll keep him stationary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: because we don&#039;t have any translation going on here, olimar will be spawned where he would be spawned in regular gameplay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=100px heights=100px&amp;gt;&lt;br /&gt;
File:Actortutorialimage2.png &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Actortutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Sounds and messages&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message blocks are usually paired with a control block, presumably to halt things until the text box is done.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;メッセージ&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 88&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Code 894 0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;コントロール&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 89&amp;quot;,&lt;br /&gt;
            &amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Type for messages is always &amp;quot;メッセージ&amp;quot; (&amp;quot;message&amp;quot;), and the Type for control is always &amp;quot;コントロール&amp;quot; (&amp;quot;control&amp;quot;). If there is more than one message/control in a cutscene, a number will follow the text (e.g. &amp;quot;メッセージ２&amp;quot; for the second message). Note that these aren&#039;t required, and currently, replacing the japanese text with english is needed for the rebuilding to not make a malformed STB.&lt;br /&gt;
Note the Code being set for the message block. The first three digits (short) are the message index (in decimal) in the [[BMG_file|BMG]]. The last digit (short) is the sub index of the message.&lt;br /&gt;
&lt;br /&gt;
Sounds have two major components: Music, which is handled outside the STB, and sound effects, which for the most part are handled inside the STB.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s still worth mentioning some things about music:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which AST that is associated with which cutscene is controlled by &amp;lt;code&amp;gt;PSM::Demo::initiate&amp;lt;/code&amp;gt; (in utilityU/PSMainSide_Demo.cpp) in the game&#039;s code. The function checks for a cutscene&#039;s name, then associates a stream file ID with it.&lt;br /&gt;
&lt;br /&gt;
In vanilla, two cutscenes (&amp;lt;code&amp;gt;x20_blackman&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x03_find_red_onyon&amp;lt;/code&amp;gt;) are coded not to start with music initially. For the latter cutscene, audio is coded to start after the first text box has been closed.&lt;br /&gt;
&lt;br /&gt;
Now about the other part of cutscene audio: Sound effects.&amp;lt;br&amp;gt;&lt;br /&gt;
This is what a typical sound block looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
        &amp;quot;Type&amp;quot;: &amp;quot;#orimaAlive_2_1&amp;quot;,&lt;br /&gt;
        &amp;quot;Commands&amp;quot;: [&lt;br /&gt;
            &amp;quot;WAIT 335&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Parent *orimaAlive_2&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentNode happajnt3&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ParentEnable True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
            &amp;quot;SET ID 2161&amp;quot;,&lt;br /&gt;
            &amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
            &amp;quot;WAIT 12&amp;quot;,&lt;br /&gt;
        ]&lt;br /&gt;
    },&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated earlier, a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; in front of the name of the actor denotes a sound. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s properties are:&lt;br /&gt;
&lt;br /&gt;
* Parent - binds the sound to an actor (in this case, the second alive player, or Louie) (string)&lt;br /&gt;
* ParentNode - further binds the sound to a specific joint on the model of the actor (string)&lt;br /&gt;
* ParentEnable - sets this binding to true. (boolean)&lt;br /&gt;
* Located - tells the sound to follow a position, whether from an attached creature or a direct position variable. (boolean)&lt;br /&gt;
* ID - the sound effect ID, in decimal. See [https://pikmintkb.com/wiki/Se.bms this page] for IDs. (int)&lt;br /&gt;
* Begin - starts the sound.&lt;br /&gt;
* BeginFadeIn - tells the sound to fade in when started, with the time it takes to fade in determined by the float after it.&lt;br /&gt;
* End - stops the sound.&lt;br /&gt;
* EndFadeOut - tells the sound to fade out when started, with the time it takes to fade out determined by the float after it.&lt;br /&gt;
&lt;br /&gt;
Sound&#039;s variables are: &lt;br /&gt;
&lt;br /&gt;
* Volume (float)&lt;br /&gt;
* Pan  (float)&lt;br /&gt;
* Pitch (float)&lt;br /&gt;
* TempoProportion (float) - speed&lt;br /&gt;
* Fxmix (float) - reverb/echo&lt;br /&gt;
* Position (float) - XYZ sound position offset from the movie position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s add a sound effect and a text box to our cutscene. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text box first, we&#039;ll use message index 915 (in the BMG, this will show as hex, so it&#039;s actually 0x393) and have it appear at the end of the cutscene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Due to a seemingly hardware dependent bug, the stb created by STB2JSON may have the &amp;quot;control block&amp;quot; represented as &amp;lt;code&amp;gt;0xEFBFBDEFBFBDEFBFBDEFBFBD&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;, which is the correct one. If this happens, open your stb in a hex editor and change the offending bytes, making sure to delete the extra bytes.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=200px heights=200px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Now let&#039;s test in game. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Messagetutorialimage3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, let&#039;s add a sound. Let&#039;s play &amp;lt;code&amp;gt;PSSE_SY_WMAP_MONEY_UP&amp;lt;/code&amp;gt; (one of the ka-ching sounds)&lt;br /&gt;
We&#039;re not going to tie it to any actor, just have it play on its own.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our whole JSON should now look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
	&amp;quot;JFVB&amp;quot;: {&lt;br /&gt;
		&amp;quot;Values&amp;quot;: [&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;45.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;414.939424&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;-524.69691&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;313.322154&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;416.293478&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Hermite&amp;quot;,&lt;br /&gt;
				&amp;quot;Range&amp;quot;: &amp;quot;0.0 18.83333145&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: [&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
						&amp;quot;2703.901104&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],&lt;br /&gt;
                    [&lt;br /&gt;
						&amp;quot;18.83333145&amp;quot;,&lt;br /&gt;
						&amp;quot;2444.029785&amp;quot;,&lt;br /&gt;
						&amp;quot;0.0&amp;quot;,&lt;br /&gt;
					],                 &lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;-308.449492&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;79.412207&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				&amp;quot;Func&amp;quot;: &amp;quot;Constant&amp;quot;,&lt;br /&gt;
				&amp;quot;Data&amp;quot;: &amp;quot;3268.020343&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCMR&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;camera&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;VAR ProjFovy Index 0&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewRoll Index 1&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR ViewPos Index 2 3 4&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR TargPos Index 5 6 7&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Distance Immediate 1.0 12800.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JACT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;*theOrima&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;SET MovieTranslation None&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Anim BCK&amp;quot;,&lt;br /&gt;
			&amp;quot;SET AnimData 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JMSG&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;message&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 564&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Code 915 0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JCNT&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;control&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 565&amp;quot;,&lt;br /&gt;
			&amp;quot;SYNC 1&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 1&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;JSND&amp;quot;: {&lt;br /&gt;
		&amp;quot;Type&amp;quot;: &amp;quot;#bling&amp;quot;,&lt;br /&gt;
		&amp;quot;Commands&amp;quot;: [&lt;br /&gt;
			&amp;quot;WAIT 194&amp;quot;,&lt;br /&gt;
			&amp;quot;VAR Position Immediate 0.0 0.0 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;SET Located True&amp;quot;,&lt;br /&gt;
			&amp;quot;SET ID 6205&amp;quot;,&lt;br /&gt;
			&amp;quot;SET BeginFadeIn 0.0&amp;quot;,&lt;br /&gt;
			&amp;quot;WAIT 371&amp;quot;,&lt;br /&gt;
		]&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Convert your JSON to STB, remember to fix the control block if needed, repack your archive with WiiExplorer (make sure the file IDs are correct!), and play the cutscene in game.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now made a full cutscene! Feel free to experiment with editing vanilla cutscenes, or making more of your own.&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin_2)&amp;diff=5072</id>
		<title>Screen file list (Pikmin 2)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Screen_file_list_(Pikmin_2)&amp;diff=5072"/>
		<updated>2025-05-17T03:26:32Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: add cave results page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Below is a file list of all screens in &#039;&#039;Pikmin 2&#039;&#039;. Screen resources are usually contained in SZS archives, with BTI textures, BLO screen files and BCK/BPK/BTK animations within these archives. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Contained in new_screen/cmn/ ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Archive name || Description || Image&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gold_pod_for_message_window.szs&amp;lt;/code&amp;gt; || Post debt ship cutscene talk icon || [[File:Gold ship.png|90px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message_window.szs&amp;lt;/code&amp;gt; || Ship cutscene dialogue box || [[File:Ship dialogue.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pod_for_message_window.szs&amp;lt;/code&amp;gt; || Pre debt ship cutscene talk icon  || [[File:Ship.png|90px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_map_image_forest.szs&amp;lt;/code&amp;gt; || Awakening Wood radar map image || [[File:Aw radar.png|272px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_map_image_last.szs&amp;lt;/code&amp;gt; || Wistful Wild radar map image || [[File:Ww radar.png|272px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_map_image_tutorial.szs&amp;lt;/code&amp;gt; || Valley of Repose radar map image || [[File:Vor radar.png|272px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_map_image_yakushima.szs&amp;lt;/code&amp;gt; || Perplexing Pool radar map image || [[File:Pp radar.png|272px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_image_final.szs&amp;lt;/code&amp;gt; || Textures used for final results screen thumbnails || [[File:Final result images.png|256px|none]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contained in new_screen/(language folder)/ ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Archive name || Description || Image&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E3_title_menu.szs&amp;lt;/code&amp;gt; || Unused E3 title screen with only 2 options || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;file_select.szs&amp;lt;/code&amp;gt; || File select screen || [[File:Pikmin2FileSelect.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;final_floor.szs&amp;lt;/code&amp;gt; || Final floor of cave screen || [[File:Pikmin2FinalFloor.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gameover_louie.szs&amp;lt;/code&amp;gt; || Louie is down! screen || [[File:Pikmin2LouieIsDown.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hensai_demo_kanryo.szs&amp;lt;/code&amp;gt; || You repayed the entire debt! screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hensai_demo_otakara.szs&amp;lt;/code&amp;gt; || You collected every treasure! screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hensai_demo_parsent.szs&amp;lt;/code&amp;gt; || X% of debt recovered! screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;info_window.szs&amp;lt;/code&amp;gt; || Menu prompt for stuff like saving after a day is done || [[File:Pikmin2SaveWindow.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;memory_card.szs&amp;lt;/code&amp;gt; || Memory card screens, appears when there&#039;s no memory card, no save data created, or if the memory card is corrupted || [[File:Pikmin2MemoryCardCheckScreen.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;omake.szs&amp;lt;/code&amp;gt; || Title screen bonus menu/E reader menu || [[File:Pikmin2BonusMenu.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;option_jp.szs&amp;lt;/code&amp;gt; || Japanese version of options screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;option_pal.szs&amp;lt;/code&amp;gt; || European version of options screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;option_us.szs&amp;lt;/code&amp;gt; || US version of options screen || [[File:Pikmin2OptionsMenu.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;progre.szs&amp;lt;/code&amp;gt; || Enable progressive scan menu from game boot. Unused in Wii and Switch versions. || [[File:Pikmin2EnableProgressiveMode.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ready_go.szs&amp;lt;/code&amp;gt; || Ready/Go! screen from challenge mode/versus || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_ana_demo.szs&amp;lt;/code&amp;gt; || Cave entry screen, delve deeper screen, and geyser escape screen || [[File:Pikmin2CaveEntryScreen.png|300px]] [[File:Pikmin2DelveDeeperScreen.png|200px]] [[File:Pikmin2EscapeToSurfaceScreen.png|200px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_cave.szs&amp;lt;/code&amp;gt; || Cave HUD || [[File:Pikmin2CaveHUD.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_challenge_1p.szs&amp;lt;/code&amp;gt; || Challenge Mode 1-Player HUD || [[File:Pikmin2Challenge1pHUD.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_challenge_2p.szs&amp;lt;/code&amp;gt; || Challenge Mode 2-Player HUD || [[File:2p challenge.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_challengeResult.szs&amp;lt;/code&amp;gt; || Challenge Mode results screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_challengeSelect.szs&amp;lt;/code&amp;gt; || Challenge Mode main menu || [[File:Pikmin2ChallengeSelect.png|300px]] [[File:Pikmin2ChallengeRules.png|300px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_contena.szs&amp;lt;/code&amp;gt; || Onion menus || [[File:Pikmin2BlueOnionMenu.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_course_name00.szs&amp;lt;/code&amp;gt; || Valley of Repose loading screen || [[File:Pikmin2ValleyofReposeLoadingScreen.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_course_name01.szs&amp;lt;/code&amp;gt; || Awakening Wood loading screen || [[File:Pikmin2AwakeningWoodLoadingScreen.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_course_name02.szs&amp;lt;/code&amp;gt; || Perplexing Pool loading screen || [[File:Pikmin2PerplexingPoolLoadingScreen.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_course_name03.szs&amp;lt;/code&amp;gt; || Wistful Wild loading screen || [[File:Pikmin2WistfulWildlLoadingScreen.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_dayend.szs&amp;lt;/code&amp;gt; || Unused sunset approaching screen resources (used resources are in res_ground) || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_enemyZukan.szs&amp;lt;/code&amp;gt; || Piklopedia screen || [[File:Pikmin2Piklopedia.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_final_message.szs&amp;lt;/code&amp;gt; || &amp;quot;Return to planet and resume expedition?&amp;quot; screen || [[File:Pikmin2ReturnToPlanetMessage.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_floor_name.szs&amp;lt;/code&amp;gt; || Unused cave loading screen || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_floor_name_eng_pal.szs&amp;lt;/code&amp;gt; || US/PAL cave loading screen || [[File:Pikmin2StoryCaveLoadScreen.png|250px]] [[File:Pikmin2ChallengeModeLoadScreen.png|250px]] [[File:Pikmin2VsModeLoadScreen.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_floor_name_jpn.szs&amp;lt;/code&amp;gt; || Japanese cave loading screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_gameover.szs&amp;lt;/code&amp;gt; || Unused Game Over! screen || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_ground.szs&amp;lt;/code&amp;gt; || [[Ground HUD | Overworld HUD]] || [[File:Pikmin2GroundHUD.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_hiscore.szs&amp;lt;/code&amp;gt; || Title screen high scores menu || [[File:Pikmin2HighScoresMenu.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_hiscoreTexture.szs&amp;lt;/code&amp;gt; || Thumbnails for high scores screen || [[File:high score images.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_itemZukan.szs&amp;lt;/code&amp;gt; || Treasure Hoard screen || [[File:Pikmin2TreasureHoard.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_kantei.szs&amp;lt;/code&amp;gt; || Treasure Collected screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_lujidown.szs&amp;lt;/code&amp;gt; || Unused Louie is down screen || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_orimadown.szs&amp;lt;/code&amp;gt; || Olimar is down! screen || [[File:Pikmin2OlimarIsDown.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_pikmindown.szs&amp;lt;/code&amp;gt; || Pikmin Extinction! screen || [[File:Pikmin2PikminExtinction.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_presidentdown.szs&amp;lt;/code&amp;gt; || President is down! screen || [[File:Pikmin2PresidentIsDown.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_s_menu_controller.szs&amp;lt;/code&amp;gt; || Unused game controls pause screen || [[File:Pause controls.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_s_menu_item.szs&amp;lt;/code&amp;gt; || Collected upgrades and berries pause screen || [[File:Pause items.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_s_menu_map.szs&amp;lt;/code&amp;gt; || Radar map and Pikmin count pause screen || [[File:Pause radar.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_s_menu_pause.szs&amp;lt;/code&amp;gt; || Total pokos and skip to sunset pause screen || [[File:Pause menu.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_s_menu_pause_doukutu.szs&amp;lt;/code&amp;gt; || Total pokos and give up cave pause screen || [[File:Pause cave.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_s_menu_pause_VS.szs&amp;lt;/code&amp;gt; || Pause in challenge/vs mode screen, also used for other stuff || [[File:Pause side modes.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_special_item.szs&amp;lt;/code&amp;gt; || Collection screen for items like berries and spray drops || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_ufo.szs&amp;lt;/code&amp;gt; || Purple or White Pikmin selection ship menu || [[File:Pikmin2PurplesAndWhitesSelection.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_vs.szs&amp;lt;/code&amp;gt; || Main 2-Player Battle HUD || [[File:Pikmin2VsHUD.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_vsSelect.szs&amp;lt;/code&amp;gt; || 2-Player Battle main menu || [[File:Pikmin2VsModeSelect.png|300px]][[File:Pikmin2VsModeRules.png|300px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_vsSelectTexture.szs&amp;lt;/code&amp;gt; || 2-Player Battle stage thumbnails, Olimar and Louie icons, and item icons || [[File:Vsselecttexture.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_world_map_info_window0.szs&amp;lt;/code&amp;gt; || World map do you return to title screen || [[File:Pikmin2Worldmapinfowindow0.png|300px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;res_world_map_info_window1.szs&amp;lt;/code&amp;gt; || World map do you land in this area screen || [[File:Pikmin2Worldmapinfowindow1.png|300px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_doukutu.szs&amp;lt;/code&amp;gt; || [[Cave_Results_menu_(Pikmin_2) | Cave results screen]] || [[File:Pikmin2CaveResults.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_final.szs&amp;lt;/code&amp;gt; || Debt repaid/All treasures final results screen || [[File:Pikmin2DebtResults.png|350px]][[File:Pikmin2FinalResults.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_fueta.szs&amp;lt;/code&amp;gt; || Unused day results Pikmin grown screen || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_fuetaheta.szs&amp;lt;/code&amp;gt; || Day results Pikmin grown and Pikmin deaths screen || [[File:Pikmin2Dayendpikmintotals.png|350px]][[File:Pikmin2Dayendpikmindeaths.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_heta.szs&amp;lt;/code&amp;gt; || Unused day results Pikmin deaths screen || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_item.szs&amp;lt;/code&amp;gt; || Day results treasures collected screen || [[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_mail.szs&amp;lt;/code&amp;gt; || Day results mail screen || [[File:Mail.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;result_title_new.szs&amp;lt;/code&amp;gt; || Today&#039;s Report end of day results screen || [[File:Pikmin2TodaysReport.png|350px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;title.szs&amp;lt;/code&amp;gt; || Main title screen menu || [[File:Pikmin2TitleScreenMenu.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win_lose.szs&amp;lt;/code&amp;gt; || 2-Player Battle win/lose/draw/time up results screen || [[File:FileSelect1.png|100px]][[File:FileSelect1.png|100px]][[File:FileSelect1.png|100px]][[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win_lose_reason.szs&amp;lt;/code&amp;gt; || Like above but for Olimar is Down! or Pikmin Extinction! || [[File:FileSelect1.png|100px]][[File:FileSelect1.png|100px]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;worldmap.szs&amp;lt;/code&amp;gt; || World map screen || [[File:Pikmin2WorldMap.png|350px]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cave_Results_menu_(Pikmin_2)&amp;diff=5071</id>
		<title>Cave Results menu (Pikmin 2)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cave_Results_menu_(Pikmin_2)&amp;diff=5071"/>
		<updated>2025-05-17T03:24:51Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: add more images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This menu is shown when you exit a cave. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Screen files ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Description || BLO Filename || Animation files || Image&lt;br /&gt;
|-&lt;br /&gt;
| Main screen || &amp;lt;code&amp;gt;result_doukutu.blo&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;result_doukutu.bck&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;result_doukutu.brk&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;result_doukutu.bpk&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;result_doukutu.btk&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;|| [[File:Resultdoukutumain.png|450px]]&lt;br /&gt;
|-&lt;br /&gt;
| Screen for lost items || &amp;lt;code&amp;gt;result_doukutu_drop_item.blo&amp;lt;/code&amp;gt; || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Cave Complete!&amp;quot; || &amp;lt;code&amp;gt;doukutu_complete.blo&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;doukutu_complete.bck&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;doukutu_complete.bpk&amp;lt;/code&amp;gt; || [[File:Cavecomplete.gif|450px]]&lt;br /&gt;
|-&lt;br /&gt;
| Control stick icon || &amp;lt;code&amp;gt;tga_3d_anim_otah.blo&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;tga_3d_anim_otah.btp&amp;lt;/code&amp;gt; || [[File:Controlstickicon.png|300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:Cavecomplete.gif&amp;diff=5070</id>
		<title>File:Cavecomplete.gif</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:Cavecomplete.gif&amp;diff=5070"/>
		<updated>2025-05-17T03:23:55Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cave_Results_menu_(Pikmin_2)&amp;diff=5069</id>
		<title>Cave Results menu (Pikmin 2)</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cave_Results_menu_(Pikmin_2)&amp;diff=5069"/>
		<updated>2025-05-17T03:17:30Z</updated>

		<summary type="html">&lt;p&gt;Iwillremembermypasswordthistime: create cave results screen page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This menu is shown when you exit a cave. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Screen files ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Description || BLO Filename || Animation files || Image&lt;br /&gt;
|-&lt;br /&gt;
| Main screen || &amp;lt;code&amp;gt;result_doukutu.blo&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;result_doukutu.bck&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;result_doukutu.brk&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;result_doukutu.bpk&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;result_doukutu.btk&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;|| [[File:Resultdoukutumain.png|300px]]&lt;br /&gt;
|-&lt;br /&gt;
| Screen for lost items || &amp;lt;code&amp;gt;result_doukutu_drop_item.blo&amp;lt;/code&amp;gt; || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Cave Complete!&amp;quot; || &amp;lt;code&amp;gt;doukutu_complete.blo&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;doukutu_complete.bck&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;doukutu_complete.bpk&amp;lt;/code&amp;gt; || [[File:Gauge.png|300px]]&lt;br /&gt;
|-&lt;br /&gt;
| Control stick icon || &amp;lt;code&amp;gt;tga_3d_anim_otah.blo&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;tga_3d_anim_otah.btp&amp;lt;/code&amp;gt; || [[File:Controlstickicon.png|450px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Iwillremembermypasswordthistime</name></author>
	</entry>
</feed>