Contents
  1. Acknowledgments
  2. Introduction
  3. Basic Concepts
  4. GSAC-GSDT Relation
  5. Instructions and Properties
  6. List of Preliminary Scenes
  7. List of Functions and Properties [show]
  8. Useful Resources [show]
  9. Conclusion

Acknowledgments

I would like to give my sincerest gratitude to Vras28 and MetalFrieza3000 for being very understanding & trustworthy modders, and providing crystal clear explanations.
In his initial research, Vras also thanked pxgamer13 and Raide Z, and so will I.

None of this would have ever been possible without such efforts.
We would still be looking for strings and changing their pointers, one value at a time.
They have all helped in the transition from mechanical to logical scenario analysis.


Introduction

Before proceeding with the guide, it is highly recommended to have decent knowledge of the hexadecimal system, which is what NIM's guide is all about.
Given how the game was written in C (presumably), knowing a few programming basics would not hurt at all.

SPOILER: The words function, arguments, parameters, property, integer, float and string will be thrown around a bunch, so watch out!


Basic Concepts

The following principles also apply to Budokai Tenkaichi 2 and Raging Blast 1.
Everything else, after the GSAC-GSDT Relation, is exclusive to Budokai Tenkaichi 3.

GSC files are divided into sections. Each section contains a 16-byte header and its data.
Because GSC files are meant to be interpreted as scripts, said data can be treated as if it were lines of code.
In this case, the lines of code are represented by a series of bytes.

Back to the header, here are its contents:

The name of a section can be any of the following: The GSC version can take the following values:


GSAC-GSDT Relation

To avoid confusion, GSAC's will be referred to as scenes, whereas the GSDT will be called data, because that is exactly what it is: just data. Nothing more to it.
Nothing more than an unorganized set of integers and floats.
Due to several scenes often reusing the same data, changing the data directly is discouraged, and so is deleting data or adding already-existing data.
Although, the latter is the least harmful out of the three.

For the scenes to get the data in the first place, they make use of parameters. Each parameter consists of:

In layman terms, an offset with a value of 69 will link to the input data found in byte 276 of its section.
If the section starts at byte 9008 of the GSC file, then the input data in question can be found at byte 9284.
276 is far more readable than 9284, which is why the developers preferred to use relative addresses instead.
As to why they chose to divide the addresses by 4, it was likely out of convenience, because ANM files use it too.

NOTE: The string data type is never used, and was likely meant for debugging purposes.
It can only be found in the last two GSC files (GSC-B-48.gsc and GSC-B-49.gsc), which are unfinished dummy files.
Even the one string each GSC contains literally says dummy in Japanese (ダミー).


Instructions and Properties

Instructions are stored in 4 bytes. These bytes represent its arguments.
Depending on the instruction type, the preceding bytes may behave differently.
Other than that, an instruction may or may not take parameters.
It may or may not take properties as well, which also take parameters.

Here is a hex interpretation of an instruction:
00 01 02 03
XX YY ZZ ZZ

The argument in red represents the instruction type, which can take the following values:

The argument in green represents the number of arguments.

For XX set to 01, the argument in blue will refer to a function ID, stored as a short.
If set to 02, the instruction will look for a scene ID instead, also stored as a short.

Properties are similar to instructions, except their instruction type is set to 08, and they must always follow an instruction that needs it.

Here is a hex interpretation of a property:
00 01 02 03
08 XX YY 00

XX represents the property type, stored as a character (symbol).
For example, if set to 0x61, the property type will be a, not 97.


List of Preliminary Scenes

The following scenes are found at the beginning of every GSC, in this exact order:

Without these, the scenario cannot function.


List of Functions and Properties

Please note that the functions have been listed in ascending order (smallest to biggest).
All given ID's are in decimal. For each function and property, there will be:

Function 1

[view source code]
Hex Interpretation
0x01010100
Description
Stops the flow of execution until some time has passed.
For instance, if there are two cameras (one before, and one after the function), the 2nd camera will not play until the time expires.
Location
Any scene whose ID is greater than or equal to 10000.
Parameters
A time interval (float).

Function 2

[view source code]
Hex Interpretation
0x01010200
Description
Marks the ID of the scenario, used to identify what audio, lip-syncing and subtitle files will be used.
Location
The beginning of Scene -3.
Parameters
An integer that ranges from 0 to 47.

Function 3

[view source code]
Hex Interpretation
0x01000300
Description
Marks the start of a scene. Nothing else.
Location
The beginning of any scene whose ID is greater than or equal to 10000.
Parameters
None.

Function 4

[view source code]
Hex Interpretation
0x01000400
Description
Marks the end of a scene, and the start of a battle.
It resets the battle camera, and allows the characters to move around.
Location
The end of any scene whose ID is greater than or equal to 10000.
Parameters
None.

Function 5

[view source code]
Hex Interpretation
0x01000500
Description
Marks the character positions on the map.
Location
Any scene whose ID is greater than or equal to 10000; next to Function 3.
Parameters
None.

Function 6

[view source code]
Hex Interpretation
0x01000600
Description
Marks the disabling of all VFX (aura charges, ki-charging auras and camera shakes).
Location
Any scene whose ID is greater than or equal to 10000; next to Function 5.
Parameters
None.

Function 7

[view source code]
Hex Interpretation
0x01000700
Description
Marks the storage of conditional properties, audio-related and scene-related.
Location
Any scene whose ID is greater than or equal to 10000; next to Function 6.
Parameters
None.

Properties

a type (0x08610200)
A predetermined scene link that takes two parameters:
  • Condition ID (int)
  • Scene ID (int)
  • v type (0x08760200)
    A predetermined audio link that takes two parameters:
  • Condition ID (int)
  • Voice Line ID (int)
  • Function 8

    [view source code]
    Hex Interpretation
    0x01020800
    Description
    Manages post-cutscene events, one for each scene.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 14.
    Parameters
    Event ID (int)
    Character ID (int)

    Function 9

    [view source code]
    Hex Interpretation
    0x01010900
    Description
    Indicates the end of the battle.
    Location
    The end of any scene whose ID is greater than or equal to 10000; next to Function 3.
    Parameters
    Battle Outcome ID (int), which can take these values:
  • 00 = You Win! (K.O.)
  • 01 = You Lose! (K.O.)
  • 02 = You Win! (Ringout)
  • 03 = You Lose! (Ringout)
  • Function 10

    [view source code]
    Hex Interpretation
    0x01050A00
    Description
    Initializes the Battle Settings.
    Location
    The beginning of Scene -4.
    Parameters
    Map ID (int), that ranges from 0 to 34
    Initial BGM Track ID (int)
    Battle Time ID (int), which can take the following values:
  • 00 = Infinite (default value)
  • 01 = 60 s
  • 02 = 90 s
  • 03 = 180 s
  • 04 = 240 s
  • Announcer ID (int), which can take the following values:
  • 00 = Ox King
  • 01 = Videl
  • 02 = Supreme Kai
  • 03 = Shenron (default value)
  • 04 = Announcer 1
  • 05 = Announcer 2
  • 06 = Announcer 3
  • 07 = Videl (used for Battle Training only)
  • Enable/Disable Map Destruction (int), that acts like a boolean - 00 means disabled, 01 means enabled

    The other Battle Time values are unused, because the battle still goes on, even if the timer ends.

    Function 11

    [view source code]
    Hex Interpretation
    0x01020B00
    Description
    Initializes the Team Settings.
    Location
    Scene -4; repeated twice; next to Function 10.
    Parameters
    Team ID (int), that acts like a boolean - 00 refers to Player 1's Team, 01 refers to the Opponent's Team
    Number of Teammates (int), that ranges from 1 to 5

    Function 12

    [view source code]
    Hex Interpretation
    0x010E0C00
    Description
    Initializes the Character Settings.
    Location
    Scene -4; next to Function 11.
    Parameters
    Character Index (int), that ranges from 0 to 4
    Character ID (int), that ranges from 0 to 160
    Costume ID (int), that ranges from 0 to 3
    Enable/Disable Damaged Costume (int), that acts like a boolean - 00 means disabled, 01 means enabled
    Z-Item ID #8 (int) (represents a Strategy Type Z-Item
    Initial Health Percentage (int), that ranges from 1 to 100
    Z-Item ID #1 (int)
    Z-Item ID #2 (int)
    Z-Item ID #3 (int)
    Z-Item ID #4 (int)
    Z-Item ID #5 (int)
    Z-Item ID #6 (int)
    Z-Item ID #7 (int)

    Function 13

    Hex Interpretation
    0x01000D00
    Description
    Marks the storage of properties that change Player 1's Character Settings mid-battle.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 7.
    Parameters
    None.

    Properties

    C type (0x08430100)
    Assigns all previously given properties to a character.
    It takes one parameter:
  • Character Index (int), that ranges from 0 to 4)
  • If not specified, the properties will be applied to the currently chosen character.
    h type (0x08680100)
    Assigns a percentage of health to the currently chosen character.
    It takes one parameter:
  • Health Percentage (int), that ranges from 0 to 100)
  • I type (0x08490100)
    Assigns a percentage of ki to the currently chosen character.
    It takes one parameter:
  • Ki Percentage (int), that ranges from 0 to 100)
  • F type (0x08460100)
    Adds a percentage of ki to the currently chosen character.
    It takes one parameter:
  • Ki Percentage (int), that ranges from 0 to 100)
  • b type (0x08620100)
    Assigns a given number of Blast Stocks to the currently chosen character.
    It takes one parameter:
  • Number of Blast Stocks (int)
  • B type (0x08620100)
    Is supposed to add a given number of Blast Stocks to the currently chosen character.
    However, it acts the same as the F type property because someone at Spike messed up.
    It takes one parameter:
  • Number of Blast Stocks (int)
  • 0 type (0x08300100) - 6 type (0x08360100)
    Assigns a Z-Item to the slot with the same number as the property type itself.
    It takes one parameter:
  • Z-Item ID (int)
  • These properties also apply to Function 14.

    Function 14

    Hex Interpretation
    0x01000E00
    Description
    Marks the storage of properties that change the Opponent's Character Settings mid-battle.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 13.
    Parameters
    None.

    Properties

    l type (0x086C0100)
    Changes the COM Difficulty Level to the given value.
    It takes one parameter:
  • COM Difficulty Level (int)
  • a type (0x08610100)
    Is supposed to overwrite the 8th Z-Item of the currently chosen character.
    However, it ends up affecting the next teammate's 1st Z-Item instead.
    It takes one parameter:
  • Z-Item ID (int)
  • Function 15

    Hex Interpretation
    0x01000F00
    Description
    Marks the storage of audio-related properties.
    Location
    The beginning of Scene -5.
    Parameters
    None.

    Properties

    v type (0x08760200)
    Indicates what audio file is being used, and which character is speaking.
    It takes two parameters:
  • Voice Line ID (int)
  • Character Index (int)
  • This property also helps to make the subtitles gray if said character is not present in the scene.

    Function 16

    [view source code]
    Hex Interpretation
    0x010F1000
    Description
    Assigns the rewards given upon scenario completion.
    Location
    Scene -3; next to Function 2.
    Parameters
    Number of Z-Points for Easy Mode (int)
    Number of Z-Points for Normal Mode (int)
    Number of Z-Points for Hard Mode (int)
    Unlockable Z-Item ID #1 (int)
    Unlockable Z-Item ID #2 (int)
    Unlockable Z-Item ID #3 (int)
    Unlockable Map ID #1 (int)
    Unlockable Map ID #2 (int)
    Unlockable Map ID #3 (int)
    Unlockable Character ID #1 (int)
    Unlockable Character ID #2 (int)
    Unlockable Character ID #3 (int)
    Unlockable Scenario ID #1 (int)
    Unlockable Scenario ID #2 (int)
    Unlockable Scenario ID #3 (int)

    Function 701

    [view source code]
    Hex Interpretation
    0x0100BD02
    Description
    Loads the correct text PAK file, based on the scenario ID.
    Location
    Scene -2
    Parameters
    None.

    Function 702

    [view source code]
    Hex Interpretation
    0x0100BE02
    Description
    Loads the correct lip-syncing PAK file, based on the scenario ID.
    Location
    Scene -2; next to Function 701.
    Parameters
    None.

    Function 801

    [view source code]
    Hex Interpretation
    0x01072103
    Description
    Assigns the character's position and rotation.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 5.
    Parameters
    Character Index (int)
    X Position (float)
    Y Position (float)
    Z Position (float)
    X Rotation (float)
    Y Rotation (float)
    Z Rotation (float)
    If not present, the game will refer to the map's original positions.

    Function 802

    [view source code]
    Hex Interpretation
    0x01042203
    Description
    Only assigns the character's position.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 5.
    Parameters
    Character Index (int)
    X Position (float)
    Y Position (float)
    Z Position (float)

    Function 803

    [view source code]
    Hex Interpretation
    0x01042303
    Description
    Only assigns the character's rotation.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 5.
    Parameters
    Character Index (int)
    X Rotation (float)
    Y Rotation (float)
    Z Rotation (float)

    Function 804

    [view source code]
    Hex Interpretation
    0x01012403
    Description
    Makes the character visible, in case they were invisible beforehand.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)

    Function 805

    [view source code]
    Hex Interpretation
    0x01012503
    Description
    Makes the character invisible, in case they were visible beforehand.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)

    Function 806

    [view source code]
    Hex Interpretation
    0x01012603
    Description
    Activates the Aura Charge (lingering aura) VFX.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)

    Function 807

    [view source code]
    Hex Interpretation
    0x01012703
    Description
    Deactivates the Aura Charge (lingering aura) VFX.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)

    Function 808

    Hex Interpretation
    0x01012803
    Description
    Activates the Ki-Charging Aura VFX.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)

    Function 809

    Hex Interpretation
    0x01012903
    Description
    Deactivates the Ki-Charging Aura VFX.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)

    Function 810

    Hex Interpretation
    0x01012A03
    Description
    Activates the MAX POWER Mode Explosion VFX.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)

    Function 901

    [view source code]
    Hex Interpretation
    0x01028503
    Description
    Assigns an animation to a character in the scene.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)
    Animation ID (int)

    Properties

    t type (0x08740100)
    Speeds up or slows down an animation based on a coefficient.
    It takes one parameter:
  • Animation Speed Coefficient (an float)
  • l type (0x086C0000)
    Makes an animation repeatable (l is short for loop).
    It takes no parameters.
    w type (0x08770000)
    Makes the animation freeze after its completion, because it is waiting for another animation.
    It takes no parameters.
    NOTE: w is short for wait.

    Function 902

    Hex Interpretation
    0x01008603
    Description
    Enables character movement. This is unnecessary (thus unused), because Function 4 already does that.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    None.

    Function 1001

    [view source code]
    Hex Interpretation
    0x0101E903
    Description
    Creates a fade-out, usually at the beginning of a scene.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Time Interval (float)

    Properties

    W type (0x08570000)
    Changes the fade-out color to white (l is short for White).
    It takes no parameters.
    w type (0x08770000)
    Gives the fade-out a higher priority, thus stopping the flow of execution until the fadeout is finished.
    It takes no parameters.
    NOTE: These properties also apply to Function 1002.

    Function 1002

    Hex Interpretation
    0x0101EA03
    Description
    Creates a fade-in, usually at the end of a scene.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Time Interval (float)

    Function 1003

    [view source code]
    Hex Interpretation
    0x0100EB03
    Description
    Disables the current fade.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    None.

    Function 1201

    [view source code]
    Hex Interpretation
    0x0106B104
    Description
    Marks the starting point of a camera.
    If there are no other points, the camera becomes static.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
  • X Position (float)
  • Y Position (float)
  • Z Position (float)
  • Y Rotation (float)
  • X Rotation (float)
  • Z Rotation (float)
  • Function 1202

    Hex Interpretation
    0x0100B204
    Description
    Marks the 2nd point of a camera.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 1201.
    Parameters
    None.

    Properties

    l type (0x086C0700)
    Represents another camera point (not just the 2nd, but also the 3rd).
    It takes 7 parameters:
  • Transition Speed, from starting point to current camera point (float)
  • X Position (float)
  • Y Position (float)
  • Z Position (float)
  • Y Rotation (float)
  • X Rotation (float)
  • Z Rotation (float)
  • w type (0x08770000)
    Gives the camera a higher priority, thus stopping the flow of execution until the camera is finished.
    It takes no parameters.

    Function 1203

    [view source code]
    Hex Interpretation
    0x0100B304
    Description
    Resets the Battle Camera. This is unnecessary (thus unused), because Function 4 already does that.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    None.

    Function 1204

    [view source code]
    Hex Interpretation
    0x0101B404
    Description
    Shakes the current camera.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 1202.
    Parameters
    Shake Force/Intensity (float)

    Properties

    l type (0x086C0000)
    Makes the shake go on repeatedly.
    It takes no parameters.

    Function 1205

    [view source code]
    Hex Interpretation
    0x0100B504
    Description
    Disables the current camera shake.
    Location
    Any scene whose ID is greater than or equal to 10000; next to Function 1203.
    Parameters
    None.

    Function 1301

    [view source code]
    Hex Interpretation
    0x01011505
    Description
    Does nothing. Used for debugging purposes, to load a comment (string) in memory.
    Location
    Scene -1
    Parameters
    Any string

    Function 1302

    Hex Interpretation
    0x01001605
    Description
    Establishes subtitle settings.
    Location
    Scene -3
    Parameters
    None.

    Properties

    l type (0x086C0100)
    Changes the region of the subtitles.
    Its integer parameter can take one of these values:
  • 00 = Japan
  • 01 = USA
  • 02 = Europe
  • 03 = Korea (Unused)
  • n type (0x086E0100)
    Indicates if the text is white or grey.
    It takes one parameter:
  • Text Indicator (int), that acts like a boolean - 00 means white text, 01 means grey text)
  • d type (0x08640200)
    Indicates the text position.
    It takes two parameters:
  • X Position (int)
  • Y Position (int)
  • a type (0x08610200)
    Indicates the text size.
    It takes two parameters:
  • Size in terms of X (float), aka the width
  • Size in terms of Y (float), aka the height
  • s type (0x08730100)
    Resizes the text using the given coefficient, otherwise known as a scale.
    It takes one parameter:
  • Text Scale (float)
  • c type (0x08630400)
    Assigns a color to the text.
    It takes four parameters:
  • Amount of Red (int)
  • Amount of Green (int)
  • Amount of Blue (int)
  • Opacity (int)
  • p type (0x08700200)
    Refers to the padding, between both symbols and lines.
    It takes two parameters:
  • Padding between lines (int)
  • Padding between symbols (int)
  • w type (0x08770100)
    Refers to the text alignment.
    Its integer parameter can take one of these values:
  • 00 = Right-aligned
  • 01 = Center-aligned (default value)
  • 02 = Left-aligned
  • T type (0x08540100)
    Refers to the "type" of symbol, what the T stands for.
    It takes one parameter:
  • Symbol Type (int)
  • It is set to 02 by default, and it enables the outline around the text.
    O type (0x084F0200)
    Indicates the outline size.
    It takes two parameters:
  • Size in terms of X (float), aka the width
  • Size in terms of Y (float), aka the height
  • C type (0x08430400)
    Assigns a color to the outline.
    It takes four parameters:
  • Amount of Red (int)
  • Amount of Green (int)
  • Amount of Blue (int)
  • Opacity (int)
  • Function 1501

    [view source code]
    Hex Interpretation
    0x0101DD05
    Description
    Establishes a change in Background Music.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    BGM Track ID (int)

    Function 1502

    [view source code]
    Hex Interpretation
    0x0100DE05
    Description
    Turns down the volume of the currently playing BGM.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    None.

    Properties

    w type (0x08770000)
    Stops the flow of execution until the BGM ends.
    It takes no parameters.

    Function 1601

    [view source code]
    Hex Interpretation
    0x01014106
    Description
    Plays a sound from SE_Battle.pak. As the name says, it contains most Battle Sound Effects.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Audio ID (int)

    Function 1602

    [view source code]
    Hex Interpretation
    0x01014206
    Description
    Plays an audio file out of 300 that each scenario has.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Audio ID (int)

    Properties

    h type (0x08680100)
    Allows 2 audio files to be played at the same time.
    It takes one parameter:
  • Audio Channel (int)
  • w type (0x08770000)
    Stops the flow of execution until the voice line ends.
    It takes no parameters.

    These properties also apply to

    Function 1603

    Hex Interpretation
    0x01024306
    Description
    Works the same as Function 1602, except it is used for character audio.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Character Index (int)
    Voice Line ID (int)

    Function 1701

    [view source code]
    Hex Interpretation
    0x0101A506
    Description
    Stops the flow of execution until a certain button is pressed. In other words, a poor attempt at a cutscene skip.
    Location
    Any scene whose ID is greater than or equal to 10000.
    Parameters
    Button ID (int), which can take the following values:
  • 0x00, 0x15, 0x20 = Left
  • 0x03, 0x18, 0x23 = Up
  • 0x01, 0x16, 0x21 = Right
  • 0x02, 0x17, 0x22 = Down
  • 0x13, 0x33 = R3
  • 0x0B, 0x2B = Square
  • 0x0A, 0x2A = Triangle
  • 0x09, 0x29 = Cross
  • 0x08, 0x28 = Circle
  • 0x0E, 0x2E = L1
  • 0x0F, 0x2F = L2
  • 0x12, 0x32 = L3
  • 0x10, 0x30 = R1
  • 0x11, 0x31 = R2
  • 0x07, 0x27 = R-Stick Up
  • 0x04, 0x24 = R-Stick Left
  • 0x06, 0x26 = R-Stick Down
  • 0x05, 0x25 = R-Stick Right
  • 0x0D, 0x2D = Select

  • Useful Resources

    BGM ID List



    Note that the last 4 songs are exclusive to the Japanese version of the game.

    Character ID List



    Condition ID List



    To apply the condition to the opponent instead, replace the 2nd byte (00) of the condition ID with 0x80.

    Event ID List



    To apply the event to the opponent instead, replace the 2nd byte (00) of the event ID with 0x80.

    Map ID List



    Z-Item ID List




    Conclusion

    To end this on a high note, I shall provide a bit more insight.

    Additional References

    1. pxgamer13's tutorial on Super-Z, which was originally translated from French to Spanish, and then saved as a PDF for archival purposes.
    2. Vras's original Dragon History research, obviously written in Spanish and far from finished.
    3. My English adapation of the research above, made in Google Docs and converted into a PDF afterwards.
    4. Metal's translation from Spanish to English of Vras's latest Dragon History research.
    5. Offline Backup of this website.
    Knowledge is power, and Dragon History is written by the victors. Happy Modding!