Cutscenes
This page is in progress and may contain incomplete information or editor's notes. |
---|
Todo:
- Finish the hardcoded cutscene names.
- More info and research on the use of canm and supported objects.
Cutscenes are flexible, complex scenes, which can execute more freedom in contrast to the SimpleDemoExecutor.
These scenes consist of individual sequences that are played in order. In each sequence, several actions can be executed from certain frames, such as changing the player's position, camera movements, sound effects, and more. To each sequence (and subsequence) different actions are linked, which are then executed at the time of this sequence.
You can best visualize this in a kind of timeline. The timeline consists of the individual sequences, which consist of several actions. At the same time single subscequences can be executed together with the actual sequences.
Structure
A cutscene is activated by a demo object via SW_APPEAR within the map and loads several sheet BCSV files located in the demo.arc archive of the respective galaxy/zone. The demo object loads the bcsv files using its defined sheet name and additional "Demo" in front of the file name of the BSCV attached and a respective sheet type at the end of the file name (e.g. DemoAfterGameOverTime).
In addition, the demo object has its own cutscene name, which is only used in certain cases (e.g. to load certain sequences for Starship Mario) and also for camera codes. Certain names can be recognized by the game and then loads additional hardcoded settings such as behavior after scene completion. A list of these names can be found below.
Objects other than the player object itself can be linked to the cutscene. These then use a cutscene group ID, which on the one hand must match the demo object ID and on the other hand must be entered in the action sheet together with the object's name. If the object is entered in the ObjNameTable, the name from the Japanese column must be entered instead.
If there are several identical objects that are part of a cutscene, you can also define a cast group id for one specific object to distinguish it from the other identical objects for the scene.
Time
Defines the individual sequences with their names and length. They are played in the order they are in the list.
Field Name | Type | Description |
---|---|---|
PartName | STRING_OFFSET | Name of the sequence |
TotalStep | LONG | Duration of the sequence in frames |
SuspendFlag | LONG | If set to 1, pauses the cutscene and resumes gameplay. The cutscene will continue from here next time it is activated. |
WaitUserInputFlag | LONG |
SubPart
Runs additional subsequences in parallel during a sequence.
Field Name | Type | Description |
---|---|---|
SubPartName | STRING_OFFSET | Name of the sub sequence |
SubPartTotalStep | LONG | The length of the sub sequence |
MainPartName | STRING_OFFSET | Name of the main sequence this sub sequence belongs to |
MainPartStep | LONG | The frame of the main sequence this sub sequence starts at |
Action
Picks up objects and can position them to a given GeneralPos and play an animation.
All animation types are supported. For more control you can use ActorAnimCtrl.bcsv for your objects to define multiple animation names of different animation types to the animation name defined in the cutscene.
Field Name | Type | Description |
---|---|---|
PartName | STRING_OFFSET | Sequence Name |
CastName | STRING_OFFSET | Japanese Name of the object (defined in ObjNameTable) |
CastID | LONG | Cast ID of the object |
ActionType | LONG | Pick an Action Type from the table below. |
PosName | STRING_OFFSET | Name of the GeneralPos object for destination location |
AnimName | STRING_OFFSET | Name of the animation, which can be loaded either from the ARC archive object or from a separate ARC archive with the additional name "Anim". |
Action Types
Note that these action types are not available for any object that registers as a "Simple Demo Cast".
SMG1
ID | Name | Description |
---|---|---|
0 | Apppear | Makes the object Appear. |
1 | Kill | Makes the object Disappear (using it's Kill function). |
2 | Special Function | Executes a function that the object specifically registered to the cutscene. This is object specific, and not every object has one. |
3 | Special Nerve | Sets the objects Nerve to a nerve specifically registered to the cutscene. This is object specific, and not every object has one. |
4 | On SW_A | The SW_A of this object will be activated. |
5 | On SW_B | The SW_B of this object will be activated. |
6 | Show Model | The model of the object will be unhidden. |
7 | Hide Model | The model of the object will be hidden. |
8 | Start NPC Message | Start a conversation with an NPC. Effectively useless because NPC's do not register their text to cutscenes unless the cutscene has a specific name. |
9 | Start NPC Message (Alt) | Start a conversation with an NPC without stopping Mario's current animation. Effectively useless because NPC's do not register their text to cutscenes unless the cutscene has a specific name. |
10 | Duplicate of 9 | Duplicate of 9. |
11 | Play Animation | Plays the animation that "AnimName" is set to. This happens for all Action Types. |
12 | Off SW_A | The SW_A of this object will be deactivated. |
13 | Off SW_B | The SW_B of this object will be deactivated. |
SMG2
ID | Name | Description |
---|---|---|
0 | Play Animation | Plays the animation that "AnimName" is set to. This happens for all Action Types. |
1 | Apppear | Makes the object Appear. |
2 | Kill | Makes the object Disappear (using it's Kill function). |
3 | Special Function | Executes a function that the object specifically registered to the cutscene. This is object specific, and not every object has one. |
4 | Special Nerve | Sets the objects Nerve to a nerve specifically registered to the cutscene. This is object specific, and not every object has one. |
5 | On SW_A | The SW_A of this object will be activated. |
6 | On SW_B | The SW_B of this object will be activated. |
7 | Show Model | The model of the object will be unhidden. |
8 | Hide Model | The model of the object will be hidden. |
9 | Start NPC Message | Start a conversation with an NPC. Effectively useless because NPC's do not register their text to cutscenes unless the cutscene has a specific name. |
10 | Start NPC Message (Alt) | Start a conversation with an NPC without stopping Mario's current animation. Effectively useless because NPC's do not register their text to cutscenes unless the cutscene has a specific name. |
11 | Duplicate of 10 | Duplicate of 10. |
12 | Off SW_A | The SW_A of this object will be deactivated. |
13 | Off SW_B | The SW_B of this object will be deactivated. |
14 | Request Movement Off | Tries to pause execution of this object. |
15 | Request Movement On | Tries to resume execution of this object. |
16 | StoryBookWarpDemo | Unknown. Related to StoryBookWarpDemo. Uses 1 as arg. |
17 | StoryBookWarpDemo | Unknown. Related to StoryBookWarpDemo. Uses 0 as arg. |
18 | StoryBookWarpDemo | Unknown. Related to StoryBookWarpDemo. |
19 | StoryBookWarpDemo | Unknown. Related to StoryBookWarpDemo. |
20 | ? | Unknown. Used at the end of the cutscene where Mario meets Yoshi for the first time. |
Player
Can position Mario/Luigi to a specific GeneralPos and play an animation.
Field Name | Type | Description |
---|---|---|
PartName | STRING_OFFSET | Name of the sequence |
PosName | STRING_OFFSET | Name of the GeneralPos to teleport the player to |
BckName | STRING_OFFSET | Name of the animation from MarioAnim.arc to play. (All other animationtypes than BCK are also supported) |
Visible | LONG |
Camera
Can play cameras, which can be played one after another. Can use either a camera code from the Map archive's CameraParam.bcam file, or a key frame camera animation which are controlled via CANM files, which must be located in the object archive of the targeted object.
By default the camera is fixed on Mario/Luigi.
For BCAM usage, the Camera ID name to be used is composed of the PartName and the Cutscenename (not the sheet name): e:Cutscenename[PartName].
For CANM usage, the name defined in AnimCameraName must match the CANM file's name and needs to be placed in the root of the targeted object's archive.
Seems to be supported only by certain objects. This has not yet been fully explored.
Field Name | Type | Description |
---|---|---|
PartName | STRING_OFFSET | Name of the sequence |
CameraTargetName | STRING_OFFSET | Japanese Name of the object the camera is focussed at. |
CameraTargetCastID | LONG | Cast ID of the object |
AnimCameraName | STRING_OFFSET | CANM file name (with ".canm" extension) which must be placed in the root of the targeted object's archive. |
AnimCameraStartFrame | LONG | |
AnimCameraEndFrame | LONG | |
IsContinuous | LONG |
Sound
Can change music and play sound effects.
Field Name | Type | Description |
---|---|---|
PartName | STRING_OFFSET | Name of the sequence |
Bgm | STRING_OFFSET | Name of the music to play. |
SystemSe | STRING_OFFSET | Name of the soundeffect to play. |
ActionSe | STRING_OFFSET | |
ReturnBgm | LONG | |
BgmWipeoutFrame | LONG | Duration in frames for fading out the music. -1 = No fade-out |
AllSoundStopFrame | LONG |
Wipe
Can perform a fade out animation.
Field Name | Type | Description |
---|---|---|
PartName | STRING_OFFSET | Name of the sequence |
WipeName | STRING_OFFSET | The wipe to use. See the WipeName table below. |
WipeType | LONG | The function for the Wipe to perform. See the WipeType table below. |
WipeFrame | LONG | The amount of frames that the wipe will move for. Higher values = Slower movement |
WipeName
Below is a list of available WipeName values:
Value | Description |
---|---|
円ワイプ | Circle Wipe |
フェードワイプ | Black Fade |
白フェードワイプ | White Fade |
ゲームオーバー | Game Over |
クッパ | Bowser Face (Death wipe) |
Note: The Mario wipe is missing because the Mario wipe is a System Wipe and not a Scene Wipe. DemoWipes can only be Scene Wipes.
WipeType
Below is the list of Wipe functions. The table below uses the Black Fade as an example.
Value | Description |
---|---|
0 | Open Wipe (Fade to Gameplay) |
1 | Close Wipe (Fade to Black) |
2 | Force Open Wipe (Cut to Gameplay) |
3 | Force Close Wipe (Cut to Black) |
Tip: If you need to change wipes while the wipe is closed, use Force Close before using Open for a smoother transition.
Hardcoded Cutscene Names
Todo: Finish this.
Cutscene Name | Meaning | Notes |
---|---|---|
ベビチコ出会い | Master Luma Meeting | -Uses hardcoded cameras -Activates spin after completion when the galaxy uses the StageType "Storybook" |
Tools
Up to now, there are no tools that allow the cutscenes to be edited directly in a clear interface. Since the cutscenes sheet consists of BCSV files, they can be edited with any other BCSV editor, like Whitehole. They can also be converted to CSV files and vice versa with Pyjmap.
The tools can be found on the tools and ressources page.