Difference between revisions of "Cutscene"

From GTAMods Wiki
Jump to navigation Jump to search
(GTA IV)
(Added vice city cutscene list)
 
(41 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
{{TocRight}}
 
'''Cutscenes''' are short, pre-animated sequences before, during or after missions. Their purpose is to advance the plot and give background information about characters, situations and actions.
 
'''Cutscenes''' are short, pre-animated sequences before, during or after missions. Their purpose is to advance the plot and give background information about characters, situations and actions.
  
==San Andreas Cutscenes==
+
== GTA III/Vice City ==
 +
In GTA III and Vice City, cutscene data are mainly handled by the [[main.scm]] including loading objects and displaying subtitles. Animations and camera movements are stored in <code>anim\cuts.img</code>.
 +
 
 +
=== Mission script ===
 +
This is a list of [[opcode]]s that relates to cutscenes.
 +
{|
 +
| 0244 || {{Icon|3}} {{Icon|VC}} || sets the position of the cutscene
 +
|-
 +
| [[02E4]] || {{Icon|3}} {{Icon|VC}} || loads the cutscene data
 +
|-
 +
| 02E5 || {{Icon|3}} {{Icon|VC}} || creates the cutscene object
 +
|-
 +
| 02E6 || {{Icon|3}} {{Icon|VC}} || sets the cutscene animation
 +
|-
 +
| 02E7 || {{Icon|3}} {{Icon|VC}} || starts the cutscene
 +
|-
 +
| 02E8 || {{Icon|3}} {{Icon|VC}} || get cutscene time
 +
|-
 +
| 02E9 || {{Icon|3}} {{Icon|VC}} || has cutscene finished
 +
|-
 +
| [[02EA]] || {{Icon|3}} {{Icon|VC}} || ends the cutscene
 +
|-
 +
| 02F4 || {{Icon|3}} || create cutscene head
 +
|-
 +
| 02F5 || {{Icon|3}} || set cutscene head animation
 +
|-
 +
| 03EF || {{Icon|3}} {{Icon|VC}} || make player safe for cutscene
 +
|-
 +
| 04BC || {{a|r}} | {{Icon|VC}} || set cutscene animation to loop
 +
|-
 +
| [[0522]] || {{a|r}} | {{Icon|VC}} || disable cutscene shadows
 +
|-
 +
| [[0524]] || {{a|r}} | {{Icon|VC}} || attach cutscene object to bone
 +
|-
 +
| 0525 || {{a|r}} | {{Icon|VC}} || attach cutscene object to component
 +
|-
 +
| 0545 || {{a|r}} | {{Icon|VC}} || remove everything for huge cutscene
 +
|-
 +
| 054B || {{a|r}} | {{Icon|VC}} || attach cutscene object to vehicle
 +
|-
 +
| [[056A]] || {{a|r}} | {{Icon|VC}} || was cutscene skipped
 +
|-
 +
| 0598 || {{a|r}} | {{Icon|VC}} || create dust effect for cutscene helicopter
 +
|}
 +
 
 +
===List of Cutscenes in Vice City===
 +
{| {{Prettytable}} class="collapsible collapsed"
 +
! Cutscene
 +
|-
 +
| STRIPA
 +
|-
 +
| INT_A
 +
|-
 +
| INT_M
 +
|-
 +
| INT_D
 +
|-
 +
| INT_B
 +
|-
 +
| LAW_1A
 +
|-
 +
| LAW_1B
 +
|-
 +
| LAW_2A
 +
|-
 +
| LAW_2B
 +
|-
 +
| LAW_2C
 +
|-
 +
| LAW_3
 +
|-
 +
| LAW_4
 +
|-
 +
| COL_1
 +
|-
 +
| COL_2
 +
|-
 +
| COL_3A
 +
|-
 +
| COL_4A
 +
|-
 +
| COL_5A
 +
|-
 +
| COL_5B
 +
|-
 +
| COK_1
 +
|-
 +
| COK_2A
 +
|-
 +
| COK_2B
 +
|-
 +
| COK_3
 +
|-
 +
| COK_4A
 +
|-
 +
| COK_4A2
 +
|-
 +
| ASS_1
 +
|-
 +
| ASS_2
 +
|-
 +
| RESC_1A
 +
|-
 +
| TEX_1
 +
|-
 +
| TEX_3
 +
|-
 +
| TEX_2
 +
|-
 +
| BANK_1
 +
|-
 +
| BANK_2A
 +
|-
 +
| BANK_2B
 +
|-
 +
| BANK_3A
 +
|-
 +
| BANK_3B
 +
|-
 +
| BANK_4
 +
|-
 +
| PHIL_1
 +
|-
 +
| PHIL_2
 +
|-
 +
| PORN_1
 +
|-
 +
| PORN_2
 +
|-
 +
| PORN_3
 +
|-
 +
| PORN_4
 +
|-
 +
| GSPOT
 +
|-
 +
| BUD_1
 +
|-
 +
| BUD_2
 +
|-
 +
| BUD_3
 +
|-
 +
| CNT_1A
 +
|-
 +
| CNT_1B
 +
|-
 +
| CNT_2
 +
|-
 +
| CAR_1
 +
|-
 +
| ICE_1
 +
|-
 +
| TAX_1
 +
|-
 +
| DRUG_1
 +
|-
 +
| CAP_1
 +
|-
 +
| FIN
 +
|-
 +
| FIN_2
 +
|-
 +
| FINALE
 +
|-
 +
| BIKE_1
 +
|-
 +
| BIKE_3
 +
|-
 +
| BIKE_2
 +
|-
 +
| CUB_1
 +
|-
 +
| CUB_2
 +
|-
 +
| CUB_4
 +
|-
 +
| CUB_3
 +
|-
 +
| HAT_1
 +
|-
 +
| HAT_2
 +
|-
 +
| HAT_3
 +
|-
 +
| ROK_1
 +
|-
 +
| ROK_2
 +
|-
 +
| ROK_3A
 +
|-
 +
| FIST
 +
|}
 +
== San Andreas ==
 
In [[San Andreas]] cutscenes are only loaded using [[main.scm]]. However, camera movement during cutscenes can't be controlled via script. This data is usually stored externally in the <code>anim\cuts.img</code> [[archive]]. Each cutscene consists of 3 files with the same name and a different extension: <code>.cut</code>, <code>.[[IFP|ifp]]</code> and <code>.dat</code>.
 
In [[San Andreas]] cutscenes are only loaded using [[main.scm]]. However, camera movement during cutscenes can't be controlled via script. This data is usually stored externally in the <code>anim\cuts.img</code> [[archive]]. Each cutscene consists of 3 files with the same name and a different extension: <code>.cut</code>, <code>.[[IFP|ifp]]</code> and <code>.dat</code>.
  
Line 58: Line 250:
  
 
  peffect
 
  peffect
  effectname, starttime, endtime, unknown_number, bone, X, Y, Z, ?, ?, ?
+
  effectname, starttime, endtime, object_id, object_part, posn_x, posn_y, posn_z, dir_x, dir_y, dir_z
 
  end
 
  end
  
The bone is a number of the body part the particle effect is attached to.
+
'''effectname''' - string (max. 31 chars) - particle name in effects.fxp
 +
 
 +
'''starttime''' - integer - (cutscene) time when this particle must appear
 +
 
 +
'''endtime''' - integer - (cutscene) time when this particle must be stopped. -1 for infinite time
 +
 
 +
'''object_id''' - integer - an id of cutscene object (starting from 1) this effect is attached to
 +
 
 +
'''object_part''' - string (max. 31 chars)/integer - if model is skinned, it is a number of the body part (bone ID) the particle effect is attached to. If not skinned - this is a name of model node
 +
 
 +
'''posn''' - float vector - particle position vector
 +
 
 +
'''dir''' - float vector - particle direction vector
 +
 
 +
'''''Section limit:''' 8 particle effects''
  
 
=====REMOVE=====
 
=====REMOVE=====
Line 71: Line 277:
  
 
=====ATTACH=====
 
=====ATTACH=====
Actually the content and use of this section is unknown. It is rarely used.
+
Attaches object to character's bone.
  
 
  attach
 
  attach
  Number, Number, Number
+
  Cutscene characted id, Cutscene object id, Bone Id
 
  end
 
  end
  
 
=====MOTION=====
 
=====MOTION=====
''This section is ignored by the game!''
+
''Unused section''
  
====The DAT-File====
+
====The DAT File====
The <code>dat</code>-file contains information about the camera movements during the cutscene.
+
The <code>.dat</code> file contains information about the camera movements during the cutscene.
  
 
It consists of 4 blocks:
 
It consists of 4 blocks:
Line 422: Line 628:
 
|}
 
|}
  
===SCM (OpCodes)===
+
===Mission Script===
  
* [[0244]] - SetsCutscenePosition
+
* [[0244]] - set cutscene offset
* [[02E4]] - LoadsCutsceneData
+
* [[02E4]] - load cutscene
* [[02E7]] - StartsCutscene
+
* [[02E7]] - start cutscene
* [[02E8]] - GetsCutsceneTime
+
* [[02E8]] - get cutscene time
* [[02E9]] - HasCutsceneReachedEnd
+
* [[02E9]] - has cutscene finished
* [[02EA]] - EndsCutscene
+
* [[02EA]] - clear cutscene
* [[03B7]] - ProcessCutsceneOnly
+
* [[03B7]] - switch world processing
* [[06B9]] - IsCutsceneDataLoaded
+
* [[06B9]] - has cutscene loaded
* [[08D0]] - IsCutsceneSkipped
+
* [[08D0]] - is skip cutscene button pressed
* [[08F0]] - SetsCutsceneModelTexture
+
* [[08F0]] - append to next cutscene
  
 
== GTA IV ==
 
== GTA IV ==
Cutscenes in GTA IV used .WAD, .CUT and .model files for cutscenes. Cut files of this game is used tags. List and description of these tags are discussed below.
 
GTA IV Cutscene contain a tags. One cutscene may contain about 15 sections. Tags DRAW_DISTANCE, FLAGS, BLOCKING_BOUNDS, CAMCORDER, TEXT, as usual, are not used within the sections.
 
  
Sections for .cut (GTA 4) was researched by - DK22Pac & Solom.
+
GTA IV Cutscene is loading by .SCO scripts. [[WAD]] file has information about ped movement and .CUT file contain sections [or Tag] with information about Peds that uses in this cutscene. Some sections like DRAW_DISTANCE, FLAGS, BLOCKING_BOUNDS, CAMCORDER and TEXT are not used within the sections.
  
 
=== Tags description ===
 
=== Tags description ===
  
 
===== ID:0 - SECTION_START =====
 
===== ID:0 - SECTION_START =====
The tag indicates the start of the section cutscene.
+
This tag indicates the start of the section cutscene.
 
===== ID:0 - SECTION_END =====
 
===== ID:0 - SECTION_END =====
The tag indicates the end of the section cutscene.
+
This tag indicates the end of the section cutscene.
 
===== ID:1 - OFFSET =====
 
===== ID:1 - OFFSET =====
 
A point that defines the beginning of the coordinate system cutscene
 
A point that defines the beginning of the coordinate system cutscene
Line 459: Line 663:
  
 
===== ID:2 - CUTSCENE_HEADER =====
 
===== ID:2 - CUTSCENE_HEADER =====
Unknown section.
+
''Is it ignored by the game?''
 +
Information about the range of the frames in this cutscene. How much frames it uses.
  
'''Note:''' Parameters of this section is not used by the game, but they must be present.
 
 
===== ID:3 - DURATION =====
 
===== ID:3 - DURATION =====
 
determines the length of sections.
 
determines the length of sections.
Line 493: Line 697:
 
* HeadAnimName - The name of the person's face animations from [[WAD]] file
 
* HeadAnimName - The name of the person's face animations from [[WAD]] file
  
One section in cutscene may to use 570 subjects.
+
One section in cutscene can use 570 subjects.
  
 
Example:
 
Example:
Line 506: Line 710:
 
  [/MODELS]
 
  [/MODELS]
  
===== ID:6 - VEHICLE_DETAILS =====  
+
===== ID:6 - VEHICLE_DETAILS =====
 +
Assigns certain characteristics of transport.
 +
 
 +
int ID, int color1, int color2, int color3, int color4, int dirtLevel, int livery
 +
 
 +
*ID - Identifier subject (defined in the tag [http://www.gtamodding.com/index.php?title=Cutscene#ID:5_-_MODELS| MODELS])
 +
*color 1...4 - Identifier of colors (from [[carcols.dat]])
 +
*dirtLevel -  Pollution level (0-15, standard - 0)
 +
*livery - The type of used logotype (standard - 1) (for example: Enfoncer)
  
 
===== ID:7 - VEHICLE_REMOVAL =====
 
===== ID:7 - VEHICLE_REMOVAL =====
It is used to remove the detail from the car in cutscene.
+
It is used to remove the detail from the car in cutscene. It also can be used to remove a part of model.
  
 
  Number, BoneID
 
  Number, BoneID
Line 549: Line 761:
  
 
===== ID:11 - FIXUP =====
 
===== ID:11 - FIXUP =====
 +
This section is unknown. Below you can see its structure:
  
===== ID:12 - CAMERA =====  
+
unk float1, unk float2, unk float3, unk string, unk float4
 +
 
 +
===== ID:12 - CAMERA =====
 +
Camera name in the .WAD file.
 +
 
 +
Example:
 +
[CAMERA]
 +
camera_0
 +
[/CAMERA]
  
 
===== ID:13 - AUDIO =====
 
===== ID:13 - AUDIO =====
 
The tag is responsible for the use of an audio file of cutscene.  
 
The tag is responsible for the use of an audio file of cutscene.  
  
All audio files is placed for cutscene in this archive - '''cutscenes.rpf'''
+
All audio files are placed for cutscene in this archive - '''cutscenes.rpf'''
  
 
Example:
 
Example:
Line 562: Line 783:
 
  [/AUDIO]
 
  [/AUDIO]
  
===== ID:14 - TEXT =====  
+
===== ID:14 - TEXT =====
 +
Displays text at the bottom of the screen.
 +
 
 +
starttime, length, gxt
 +
 
 +
*starttime - start time (in ms)<br/>
 +
*length - duration (in ms)<br/>
 +
*gxt - string name in gxt
 +
 
 +
Example:
 +
 +
[TEXT]
 +
10817 683 MY_TEXT_1
 +
12250 1033 MY_TEXT_2
 +
15017 2033 MY_TEXT_3
 +
[/TEXT]
  
 
===== ID:15 - ATTACHMENT =====
 
===== ID:15 - ATTACHMENT =====
  
===== ID:16 - PROPS =====  
+
===== ID:16 - PROPS =====
 +
int ModelID, int index, int prop
 +
 
 +
* ModelID -  ID of the model in MODELS section.
 +
Max number of the strings - 50.
  
 
===== ID:17 - FLAGS =====  
 
===== ID:17 - FLAGS =====  
Line 576: Line 816:
 
  [/FLAG]
 
  [/FLAG]
  
 +
===== LIST OF FLAGS =====
  
 
{| {{Prettytable}}
 
{| {{Prettytable}}
Line 588: Line 829:
 
| 2
 
| 2
 
| NO_VEHICLE_LIGHTS
 
| NO_VEHICLE_LIGHTS
| Vehicle light does not
+
|  
 
|-
 
|-
 
| 4
 
| 4
Line 624: Line 865:
 
| 1024
 
| 1024
 
| NO_AMBIENT_LIGHTS
 
| NO_AMBIENT_LIGHTS
| Ambient light does not
+
|  
 
|-
 
|-
 
| 2048
 
| 2048
Line 645: Line 886:
 
*DrawDistance - distance of visibility
 
*DrawDistance - distance of visibility
  
Max number of the string is - 100
+
Max number of the string - 100
  
 
Example:
 
Example:
Line 655: Line 896:
 
  [/DRAW_DISTANCE]
 
  [/DRAW_DISTANCE]
  
'''Note 1:''' Second value is ignored by the game, but he must be present (It maybe any integer value)
+
'''Note 1:''' Second value is ignored by the game, but it must be present (It maybe any integer value)
  
'''Note 2:''' If last value is absence, he is equal to 0.05
+
'''Note 2:''' If last value is absence, its equal to 0.05
  
 
===== ID:20 - EFFECTS =====  
 
===== ID:20 - EFFECTS =====  
  
 
===== ID:21 - BLOCKING_BOUNDS =====
 
===== ID:21 - BLOCKING_BOUNDS =====
Specifies the zone blocking (for peds / cars). used to ignore spawn peds/cars on current zone.
+
Specifies the zone blocking (for peds / cars). Use this to ignore spawn peds/cars on current zone.
  
  float CornerAA_x, float CornerAA_y, float CornerAA_z, float CornerAB_x, float CornerAB_y, float CornerAB_z, float CornerBA_x, float CornerBA_y, float CornerBA_z, float CornerBB_x, float CornerBB_y, float CornerBB_z, float Height
+
  float CornerAA_x, float CornerAA_y, float CornerAA_z, float CornerAB_x, float CornerAB_y, float CornerAB_z, float CornerBA_x,
 +
float CornerBA_y, float CornerBA_z, float CornerBB_x, float CornerBB_y, float CornerBB_z, float Height
  
 
*CornerAA, CornerAB, CornerBA, CornerBB - point of the quadrilateral
 
*CornerAA, CornerAB, CornerBA, CornerBB - point of the quadrilateral
 
*Height - Zone's height
 
*Height - Zone's height
  
Max number of the string is - 24
+
Max number of strings: 24
  
 
Example:
 
Example:
Line 710: Line 952:
  
 
===== ID:27 - TIMECYCLE_MODIFIER_NAME =====
 
===== ID:27 - TIMECYCLE_MODIFIER_NAME =====
 +
This section sets define modificator of Timecycle which gives some graphic effects (dark atmosphere, bright lights, etc). e2_int is standard modificator. You can check the list of modifiers in this list or change some values in files  timecyclemodifiers[1-4].dat.
 +
 +
Example:
 +
[TIMECYCLE_MODIFIER_NAME]
 +
fau3_a
 +
[/TIMECYCLE_MODIFIER_NAME]
  
=== Sections, ignored by the game ===
+
=== Unused sections ===
  
 
''ID:22 - PLAYER_START''  
 
''ID:22 - PLAYER_START''  
Line 717: Line 965:
 
''ID:23 - MISSION_TEXT_NAME''  
 
''ID:23 - MISSION_TEXT_NAME''  
  
'''Note:''' These two parameters used only in [[SCO|.SCO]], so these sections is ignored by the game.
+
'''Note:''' These two parameters uses only in [[SCO|.SCO]].
  
 
''ORIENT''  
 
''ORIENT''  
Line 725: Line 973:
 
''ANIMRANGE''  
 
''ANIMRANGE''  
  
''COMPRESSION''  
+
''COMPRESSION''
 
 
=== SCO (Native functions) for cutscenes ===
 
 
 
[[CLEAR_CUTSCENE]]
 
 
 
[[CLEAR_NAMED_CUTSCENE]]
 
 
 
[[EXPLODE_CAR_IN_CUTSCENE]]
 
 
 
[[EXPLODE_CAR_IN_CUTSCENE_SHAKE_AND_BIT]]
 
 
 
[[GET_CUTSCENE_TIME]]
 
 
 
[[GET_CUTSCENE_AUDIO_TIME_MS]]
 
 
 
[[GET_CUTSCENE_PED_POSITION]]
 
 
 
[[GET_CUTSCENE_SECTION_PLAYING]]
 
 
 
[[HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE]]
 
 
 
[[HAS_CUTSCENE_FINISHED]]
 
 
 
[[HAS_CUTSCENE_LOADED]]
 
 
 
[[INIT_CUTSCENE]]
 
 
 
[[IS_PED_IN_CUTSCENE_BLOCKING_BOUNDS]]
 
 
 
[[IS_PLAYER_READY_FOR_CUTSCENE]]
 
 
 
[[IS_POS_IN_CUTSCENE_BLOCKING_BOUNDS]]
 
 
 
[[MAKE_PLAYER_SAFE_FOR_CUTSCENE]]
 
 
 
[[SET_CAR_IN_CUTSCENE]]
 
 
 
[[SET_CHAR_IN_CUTSCENE]]
 
 
 
[[SET_CUTSCENE_EXTRA_ROOM_POS]]
 
  
[[SHAKE_PAD_IN_CUTSCENE]]
+
== GTA V ==
 +
CUT files in GTA V are compressed into binary format and placed in ''"\x64c.rpf\anim\cutscene\"'' by default.
  
[[START_CUTSCENE_NOW]]
 
  
[[START_CUTSCENE]] - Don't used (?)
+
{{Incomplete}}
  
[[SET_CUTSCENE_EXTRA_ROOM_POS]]
+
== Native Functions ==
  
[[WAS_CUTSCENE_SKIPPED]]
+
* {{Icon|4}} [[CLEAR_CUTSCENE]]
 +
* {{Icon|4}} [[CLEAR_NAMED_CUTSCENE]]
 +
* {{Icon|5}} [[DOES_CUTSCENE_ENTITY_EXIST]]
 +
* {{Icon|4}} [[EXPLODE_CAR_IN_CUTSCENE]]
 +
* {{Icon|4}} [[EXPLODE_CAR_IN_CUTSCENE_SHAKE_AND_BIT]]
 +
* {{Icon|4}} [[GET_CUTSCENE_TIME]]
 +
* {{Icon|4}} [[GET_CUTSCENE_AUDIO_TIME_MS]]
 +
* {{Icon|4}} [[GET_CUTSCENE_PED_POSITION]]
 +
* {{Icon|4}} {{Icon|5}} [[GET_CUTSCENE_SECTION_PLAYING]]
 +
* {{Icon|4}} [[HIDE_CHAR_WEAPON_FOR_SCRIPTED_CUTSCENE]]
 +
* {{Icon|4}} {{Icon|5}} [[HAS_CUTSCENE_FINISHED]]
 +
* {{Icon|4}} [[HAS_CUTSCENE_LOADED]]
 +
* {{Icon|4}} [[INIT_CUTSCENE]]
 +
* {{Icon|5}} [[IS_CUTSCENE_ACTIVE]]
 +
* {{Icon|5}} [[IS_CUTSCENE_PLAYING]]
 +
* {{Icon|4}} [[IS_PED_IN_CUTSCENE_BLOCKING_BOUNDS]]
 +
* {{Icon|4}} [[IS_PLAYER_READY_FOR_CUTSCENE]]
 +
* {{Icon|4}} [[IS_POS_IN_CUTSCENE_BLOCKING_BOUNDS]]
 +
* {{Icon|4}} [[MAKE_PLAYER_SAFE_FOR_CUTSCENE]]
 +
* {{Icon|4}} [[SET_CAR_IN_CUTSCENE]]
 +
* {{Icon|4}} [[SET_CHAR_IN_CUTSCENE]]
 +
* {{Icon|4}} [[SET_CUTSCENE_EXTRA_ROOM_POS]]
 +
* {{Icon|4}} [[SET_CUTSCENE_EXTRA_ROOM_POS]]
 +
* {{Icon|5}} [[SET_CUTSCENE_ORIGIN]]
 +
* {{Icon|5}} [[SET_CUTSCENE_PED_COMPONENT_VARIATION]]
 +
* {{Icon|5}} [[SET_CUTSCENE_FADE_VALUES]]
 +
* {{Icon|4}} [[SHAKE_PAD_IN_CUTSCENE]]
 +
* {{Icon|4}} [[START_CUTSCENE]]
 +
* {{Icon|4}} [[START_CUTSCENE_NOW]]
 +
* {{Icon|5}} [[START_CUTSCENE_AT_COORDS]]
 +
* {{Icon|5}} [[STOP_CUTSCENE]]
 +
* {{Icon|5}} [[STOP_CUTSCENE_IMMEDIATELY]]
 +
* {{Icon|4}} {{Icon|5}} [[WAS_CUTSCENE_SKIPPED]]
  
 
== External link ==
 
== External link ==
 
* [http://sannybuilder.com/forums/viewtopic.php?id=115 Cutscene decoding Thread in SannyBuilder Forums (SA)]
 
* [http://sannybuilder.com/forums/viewtopic.php?id=115 Cutscene decoding Thread in SannyBuilder Forums (SA)]
 
* [http://dk22pac.blogspot.com/p/ivstructure.html IV Structure of CCutscene]
 
* [http://dk22pac.blogspot.com/p/ivstructure.html IV Structure of CCutscene]
 +
* [http://gtamodding.ru/wiki/%D0%9A%D0%B0%D1%82%D1%81%D1%86%D0%B5%D0%BD%D1%8B Article about cutscene on gtamodding.ru]
  
{{N|4|SA}}
+
{{N|4|SA|VC|3}}
 
[[Category:File Formats]]
 
[[Category:File Formats]]

Latest revision as of 21:11, 7 August 2021

Cutscenes are short, pre-animated sequences before, during or after missions. Their purpose is to advance the plot and give background information about characters, situations and actions.

GTA III/Vice City

In GTA III and Vice City, cutscene data are mainly handled by the main.scm including loading objects and displaying subtitles. Animations and camera movements are stored in anim\cuts.img.

Mission script

This is a list of opcodes that relates to cutscenes.

0244 GTA III Vice City sets the position of the cutscene
02E4 GTA III Vice City loads the cutscene data
02E5 GTA III Vice City creates the cutscene object
02E6 GTA III Vice City sets the cutscene animation
02E7 GTA III Vice City starts the cutscene
02E8 GTA III Vice City get cutscene time
02E9 GTA III Vice City has cutscene finished
02EA GTA III Vice City ends the cutscene
02F4 GTA III create cutscene head
02F5 GTA III set cutscene head animation
03EF GTA III Vice City make player safe for cutscene
04BC Vice City set cutscene animation to loop
0522 Vice City disable cutscene shadows
0524 Vice City attach cutscene object to bone
0525 Vice City attach cutscene object to component
0545 Vice City remove everything for huge cutscene
054B Vice City attach cutscene object to vehicle
056A Vice City was cutscene skipped
0598 Vice City create dust effect for cutscene helicopter

List of Cutscenes in Vice City

San Andreas

In San Andreas cutscenes are only loaded using main.scm. However, camera movement during cutscenes can't be controlled via script. This data is usually stored externally in the anim\cuts.img archive. Each cutscene consists of 3 files with the same name and a different extension: .cut, .ifp and .dat.

Whilst modification of existing cutscenes is possible through the files detailed below, new cutscenes cannot be added to the game unless they have a filename that already exists. This is due to the presence of an internally hardcoded table which links each cutscene (the .cut, .ifp and .dat files) to its audio streams and it does so by cutscene filename.

Cutscene data

The CUT File

The .cut file is loaded first. It contains the important data of the cutscene like its offset and the loaded models. The models of an cutscene are usually stored in the models\cutscene.img archive. It's split up into certain sections. Not every cut-file requires all sections, but it is better to include all sections into a cut-file and leave unused sections empty.

INFO

The info section contains information to the offset. It describes the 3D-coords of a point to which all other coords in the rest of the files are relative. Its format is

info
offset X Y Z
end

The offset parameter can also be set using opcode 0244.

MODEL

The model section contains information about models the cutscene uses. The models don't need to be defined in the IDEs. But the texture name must be the same as the model's one. The model section also attaches models to animations in the IFP-animation archive. Its format is:

model
?, name, animation
end

Where the name is without extension, and the animation describes an entry in the IFP file. The unknown value is a number, which is always 1 and actually is ignored by the game.
There is a Limit to 50 entries here!

EXTRACOL

Extracol stands for "Extracolor" and sets the active interior's color. It corresponds to the opcode 04F9.

extracol
Number
end

Extracolours can be edited in the timecyc.dat.

TEXT

The text section displays a GXT entry at an certain point of time relative to the cutscene start.

text
starttime, length, gxt
end

Where the numbers are integer and define the time in milliseconds.

UNCOMPRESS

the uncompress-section uncompresses the IFP animations.

uncompress
Animation
end
PEFFECT

stands for the particle effect and sets an particle effect from the effects.fxp.

peffect
effectname, starttime, endtime, object_id, object_part, posn_x, posn_y, posn_z, dir_x, dir_y, dir_z
end

effectname - string (max. 31 chars) - particle name in effects.fxp

starttime - integer - (cutscene) time when this particle must appear

endtime - integer - (cutscene) time when this particle must be stopped. -1 for infinite time

object_id - integer - an id of cutscene object (starting from 1) this effect is attached to

object_part - string (max. 31 chars)/integer - if model is skinned, it is a number of the body part (bone ID) the particle effect is attached to. If not skinned - this is a name of model node

posn - float vector - particle position vector

dir - float vector - particle direction vector

Section limit: 8 particle effects

REMOVE

Removes an static (IPL-mapped) object being placed at specified coord.

remove
Objectname, X, Y, Z
end
ATTACH

Attaches object to character's bone.

attach
Cutscene characted id, Cutscene object id, Bone Id
end
MOTION

Unused section

The DAT File

The .dat file contains information about the camera movements during the cutscene.

It consists of 4 blocks:

  • Block1: Rotation
  • Block2: Zoom
  • Block3: CameraPositions
  • Block4: CameraTargetPoints

Each block starts with an integer number being the number of entries in this block, followed by its content and ended by a semicolon. The whole file is also marked as finished with an additional semicolon. Each line is marked as finished by an simple comma. The file describes 3 lanes, where the last 2 ones are ignored. So those 3 lines could be set identically by editors. This gives a general format:

TimeOffset,Lane1,Lane2,Lane3,

The TimeOffset is an floating value which defines the time of the event in seconds. The game interpolates the curve between the 2 points.

Block1 - Rotation
TimeOffset,Rotation(Lane_1),Rotation(Lane_2),Rotation(Lane_3),

Describes the rotation around the vector towards the target point in euler angles (degree).

Block2 - Zoom
TimeOffset,Zoom(Lane_1),Zoom(Lane_2),Zoom(Lane_3),

Defines the focal of the camera for each lane.

Block3 - Cameraposition
TimeOffset,X(Lane_1),Y(Lane_1),Z(Lane_1),X(Lane_2),Y(Lane_2),Z(Lane_2),X(Lane_3),Y(Lane_3),Z(Lane_3),

Defines the position of the camera relative to the offset point.

Block4 - Target
TimeOffset,X(Lane_1),Y(Lane_1),Z(Lane_1),X(Lane_2),Y(Lane_2),Z(Lane_2),X(Lane_3),Y(Lane_3),Z(Lane_3),

Defines the position of the target of the camera relative to the offset-point.

The IFP animation archive

This is an ANPK (Animation Package v1 | GTA III/VC) IFP file including the animations used for the cutscene. For the file specification look here: IFP Animations. The positions of the bones and animated objects in the animation are relative to the offset defined in the INFO section of the .cut file.

List of Cutscenes in San Andreas

Mission Script

  • 0244 - set cutscene offset
  • 02E4 - load cutscene
  • 02E7 - start cutscene
  • 02E8 - get cutscene time
  • 02E9 - has cutscene finished
  • 02EA - clear cutscene
  • 03B7 - switch world processing
  • 06B9 - has cutscene loaded
  • 08D0 - is skip cutscene button pressed
  • 08F0 - append to next cutscene

GTA IV

GTA IV Cutscene is loading by .SCO scripts. WAD file has information about ped movement and .CUT file contain sections [or Tag] with information about Peds that uses in this cutscene. Some sections like DRAW_DISTANCE, FLAGS, BLOCKING_BOUNDS, CAMCORDER and TEXT are not used within the sections.

Tags description

ID:0 - SECTION_START

This tag indicates the start of the section cutscene.

ID:0 - SECTION_END

This tag indicates the end of the section cutscene.

ID:1 - OFFSET

A point that defines the beginning of the coordinate system cutscene

float X, float Y, float Z

Example:

[OFFSET]
-109.416000 -265.023010 14.785000
[/OFFSET]
ID:2 - CUTSCENE_HEADER

Is it ignored by the game? Information about the range of the frames in this cutscene. How much frames it uses.

ID:3 - DURATION

determines the length of sections.

Example:

[DURATION]
45466.667969
[/DURATION]
ID:4 - ANIM

File Name of WAD, that contain animations for cutscene.

string WADName

Usually, this is <cutscene name>_<ID section>

Example:

[ANIM]
RB_1_1
[/ANIM]
ID:5 - MODELS

Contain info about subject, that are present in the cutscene, their models and animations.

int ID, string ModelName, string AnimName, string HeadAnimName, int Unknown
  • ID - object identifier that can be used in other tags
  • ModelName - model name (models for cutscene placed in cutsprops.img)
  • AnimName - animation name for the subject from WAD file
  • HeadAnimName - The name of the person's face animations from WAD file

One section in cutscene can use 570 subjects.

Example:

[MODELS]
0 CS_Davethemate CS_Davethemate_0 Davethemate_head_0
1 player player_0 player_head_0
2 CS_Hossan CS_Hossan_0 cs_hossan_head_0 0
3 CS_WhippingGirl CS_WhippingGirl_0
4 csWhip csWhip_0
5 csToolBox csToolBox_0
[/MODELS]
ID:6 - VEHICLE_DETAILS

Assigns certain characteristics of transport.

int ID, int color1, int color2, int color3, int color4, int dirtLevel, int livery
  • ID - Identifier subject (defined in the tag MODELS)
  • color 1...4 - Identifier of colors (from carcols.dat)
  • dirtLevel - Pollution level (0-15, standard - 0)
  • livery - The type of used logotype (standard - 1) (for example: Enfoncer)
ID:7 - VEHICLE_REMOVAL

It is used to remove the detail from the car in cutscene. It also can be used to remove a part of model.

Number, BoneID

Number - Serial number of the model, which is recorded in the tag [MODELS].

BoneID - Identifier bone.

Example:

[MODELS]
0 Banshee Banshee_0
[/MODELS]
[VEHICLE_REMOVAL]
0 15301
[/VEHICLE_REMOVAL]
ID:8 - CAMCORDER

Specifies the time the on/off "camera mode"

int StartTime, int EndTime
  • StartTime - Time start of "camera mode"
  • EndTime - Time end of "camera mode"

Maximum number of the string - 30

Example:

 [CAMCORDER]
14900 19666
24199 27833
31633 37600
64766 67533
72466 100233
[/CAMCORDER]
ID:9 - VARIATION
ID:10 - REMOVE
ID:11 - FIXUP

This section is unknown. Below you can see its structure:

unk float1, unk float2, unk float3, unk string, unk float4
ID:12 - CAMERA

Camera name in the .WAD file.

Example:

[CAMERA]
camera_0
[/CAMERA]
ID:13 - AUDIO

The tag is responsible for the use of an audio file of cutscene.

All audio files are placed for cutscene in this archive - cutscenes.rpf

Example:

[AUDIO]
myaudio
[/AUDIO]
ID:14 - TEXT

Displays text at the bottom of the screen.

starttime, length, gxt
  • starttime - start time (in ms)
  • length - duration (in ms)
  • gxt - string name in gxt

Example:

[TEXT]
10817	683	MY_TEXT_1
12250	1033	MY_TEXT_2
15017	2033	MY_TEXT_3
[/TEXT]
ID:15 - ATTACHMENT
ID:16 - PROPS
int ModelID, int index, int prop
  • ModelID - ID of the model in MODELS section.

Max number of the strings - 50.

ID:17 - FLAGS

Section for flags. They sets some additional effects or parameters for cutscene.

Example:

[FLAG]
SHORT_FADE_OUT
[/FLAG]
LIST OF FLAGS
ID Flag name Description
1 FADE_BETWEEN_SECTION
2 NO_VEHICLE_LIGHTS
4 SHORT_FADE_OUT
8 LONG_FADE_OUT
16
32 FLAG_DONT_FADE_IN_FROM_GAME
64 FLAG_USE_ONE_AUDIO
128 FLAG_MUTE_MUSIC_PLAYER
256 FLAG_LEAK_RADIO
512 FLAG_DONT_FADE_OUT
1024 NO_AMBIENT_LIGHTS
2048 FLAG_DONT_FADE_AUDIO_IN
4096 FLAG_DONT_FADE_AUDIO_OUT
ID:18 - LIGHTS
ID:19 - DRAW_DISTANCE

Distance rendering of objects

int Time, int Unused, float DrawDistance, float Unknown
  • Time - set draw distance time
  • DrawDistance - distance of visibility

Max number of the string - 100

Example:

[DRAW_DISTANCE]
0 0 60.00000
5550 1 200.00000
8177 2 20.00000
[/DRAW_DISTANCE]

Note 1: Second value is ignored by the game, but it must be present (It maybe any integer value)

Note 2: If last value is absence, its equal to 0.05

ID:20 - EFFECTS
ID:21 - BLOCKING_BOUNDS

Specifies the zone blocking (for peds / cars). Use this to ignore spawn peds/cars on current zone.

float CornerAA_x, float CornerAA_y, float CornerAA_z, float CornerAB_x, float CornerAB_y, float CornerAB_z, float CornerBA_x,
float CornerBA_y, float CornerBA_z, float CornerBB_x, float CornerBB_y, float CornerBB_z, float Height
  • CornerAA, CornerAB, CornerBA, CornerBB - point of the quadrilateral
  • Height - Zone's height

Max number of strings: 24

Example:

[BLOCKING_BOUNDS]
-6.656193 3.182460 -1.100477 -3.160525 -2.872214 -1.100477 -0.601519 6.678128 -1.100477 2.894149 0.623454 -1.100477 6.991335
-9.463666 8.045147 -1.100477 -5.967999 1.990473 -1.100477 -3.408992 11.540814 -1.100477 0.086675 5.486141 -1.100477 6.991335
-12.252039 12.874750 -1.100477 -8.756371 6.820076 -1.100477 -6.197365 16.370419 -1.100477 -2.701697 10.315743 -1.100477 6.991335
-15.035851 17.696455 -1.100477 -11.540183 11.641781 -1.100477 -8.981177 21.192123 -1.100477 -5.485509 15.137448 -1.100477 6.991335
-17.831411 22.538509 -1.100477 -14.335744 16.483833 -1.100477 -11.776738 26.034176 -1.100477 -8.281070 19.979500 -1.100477 6.991335
-20.628733 27.383612 -1.100477 -17.133064 21.328936 -1.100477 -14.574059 30.879278 -1.100477 -11.078391 24.824604 -1.100477 6.991335
-3.858371 -1.663509 -1.100477 -0.362703 -7.718184 -1.100477 2.196303 1.832158 -1.100477 5.691970 -4.222516 -1.100477 6.991335
[/BLOCKING_BOUNDS]
ID:24 - EXTRA_ROOM
string Unknown

Note 1: Section is not used in original .cut files.

Note 2: The resulting value is ignored by the game.

ID:25 - MAX_PEDS

Determines the maximum number of peds in cutscene (not counting the peds involved in cutscene)

Example:

[MAX_PEDS]
5
[/MAX_PEDS]
ID:26 - MAX_CARS

Determines the maximum number of cars in cutscene (not counting the cars involved in cutscene)

Example:

[MAX_CARS]
2
[/MAX_CARS]
ID:27 - TIMECYCLE_MODIFIER_NAME

This section sets define modificator of Timecycle which gives some graphic effects (dark atmosphere, bright lights, etc). e2_int is standard modificator. You can check the list of modifiers in this list or change some values in files timecyclemodifiers[1-4].dat.

Example:

[TIMECYCLE_MODIFIER_NAME]
fau3_a
[/TIMECYCLE_MODIFIER_NAME]

Unused sections

ID:22 - PLAYER_START

ID:23 - MISSION_TEXT_NAME

Note: These two parameters uses only in .SCO.

ORIENT

TIME

ANIMRANGE

COMPRESSION

GTA V

CUT files in GTA V are compressed into binary format and placed in "\x64c.rpf\anim\cutscene\" by default.


This section is incomplete. You can help by fixing and expanding it.

Native Functions

External link