Cutscenes

From Luma's Workshop
Revision as of 12:21, 27 April 2024 by Louis Miles (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
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 visual representation of the first Yoshi Meets cutscene.

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.