DivaScript
DivaScript (commonly referred to as DSC) is the file format used by all the Project DIVA games for storing various commands related to Music Videos/PVs and Rhythm Game Charts.
The data inside .dsc files is stored in a binary format. This means that they can not be edited with a text editor and instead require specialized programs that can decode them such as DSC Studio or ScriptEditor. Additionally, .dsc files from Project DIVA F2nd and Project DIVA X are encrypted using DIVAFILE encryption. They need to be decrypted before editing.
DSC Formats
Every Project DIVA game uses a specific DivaScript format. The exact format of a .dsc file is determined by the first 4 bytes of the file.
List of DSC Commands (Incomplete)
List of commands that can be used in FT, F, F2/X DSC formats. Format-exclusive commands are marked individually.
| Command Name | Definition | Parameter | Description | Type | 
|---|---|---|---|---|
| AGEAGE_CTRL | Controls the effect for the hair of the module "AgeAge Again". FT:  | chara | Character slot | int | 
| parts | Hair parts to control: 
 
 
 | enum | ||
| npr | sets NPR material | bool | ||
| speed | Effect speed | int | ||
| skip | Skips 200 frames of animation. | bool | ||
| disp | Whether to display the effect or not. | bool | ||
| BAR_TIME_SET | Sets the length of a measure. 
 | bpm | Beats per minute | int | 
| beats | Number of quarter note beats minus 1. eg: 3for 4/4. | int | ||
| BLOOM | Sets data from bloompv_param.FT, F2, X:  | id | ID matching the data in pv_param. | int | 
| unk | Unknown | int | ||
| CHANGE_FIELD | Changes the field defined in pv_field/pv_db.
 F2, X:  | id | ID matching the field number in pv_fieldorpv_db. | int | 
| CHARA_SIZE | Sets a character's scale/size. 
 | chara | Character slot | int | 
| size | Character scale | int | ||
| END | Ends reading of the script. 
 | |||
| HAND_SCALE | Sets the size of a character's hand. FT:  | chara | Character slot | int | 
| hand | Which hand to scale: 
 
 | enum | ||
| scale | Hand scale in percentage times 10; eg. for 105%use1050 | int | ||
| LYRIC | Displays a lyric from pv_db.
 | id | ID matching the number of a lyric in pv_db.Use  | int | 
| color | #AARRGGBBhex color code converted to decimal.eg.: for a red lyric the command would be  because Red:  Default:  | int | ||
| MIKU_DISP | Shows or hides a character in a PV. 
 | chara | Character slot | int | 
| disp | Whether to display the character or not. | bool | ||
| MIKU_MOVE | Moves a character in 3D space in a PV. 
 | chara | Character slot | int | 
| x | X coordinate | int | ||
| y | Y coordinate | int | ||
| z | Z coordinate | int | ||
| MIKU_ROT | Rotates a character in a PV. 
 | chara | Character slot | int | 
| angle | Angle value | int | ||
| MIKU_SHADOW | Shows or hides a character's shadow in a PV. 
 | chara | Character slot | int | 
| disp | Whether to display the character's shadow or not. | bool | ||
| MODE_SELECT | Starts or ends a special chart segment, such as Chance Time. 
 | difficulty | Indicates under what difficulties the command will trigger in this exact script. This value is a bit flag corresponding to a group of difficulties: 
 
 
 
 
 Adding the values up to each other results in a group:  Use  | bitfield enum | 
| mode | What segment to start/end: 
 
 
 
 Only used by the New Classics mod: 
 
 | enum | ||
| MOVIE_CUT_CHG | Plays, shows or hides the movie defined in pv_dbor a movie frommovie.listinpv_db. It can be used as a fancier version of bothMOVIE_DISPandMOVIE_PLAYthat allows more control.FT:  | id | The number in movie.listof the movie to be played.Playback starts at the moment the command is called for a newly called  | int | 
| disp | 1- display the movie layerAny other value - hide the movie layer (playback keeps going) | bool | ||
| MOVIE_DISP | Shows or hides the movie layer in a PV. 
 | disp | 1- display the movie layerAny other value - hide the movie layer (playback keeps going) | bool | 
| MOVIE_PLAY | Starts playing the movie defined in pv_dbor the first movie inmovie.listinpv_db.
 | play | 1- plays the movieAny other value doesn't do anything. | bool | 
| MUSIC_PLAY | Starts playing the song file defined in pv_db.
 | |||
| PV_BRANCH_MODE | Make future DSC commands only be executed on either the Global,FailorSuccessbranch.FT, F, F2, X:  | branch | 0- Global (commands are executed regardless of success state)
 
 | enum | 
| PV_END | Ends PV playback. 
 | |||
| SATURATE | Changes color saturation in a PV. 
 | amount | Saturation strength on a scale from 0 to 1000: 
 
 | int | 
| SCENE_FADE | Plays a screen fade effect during PVs. 
 | speed | Fade duration in seconds eg: 
 
 | int | 
| start | The opacity the fade will start with 
 
 | int | ||
| end | The opacity the fade will end with 
 
 | int | ||
| r | Red color component scale, from 0 to 1000 | int | ||
| g | Green color component scale, from 0 to 1000 | int | ||
| b | Blue color component scale, from 0 to 1000 | int | ||
| SE_EFFECT | Plays a sound effect in a PV defined in pv_db. Normally used for success scenes but not restricted to them.FT, F, F2, X:  | id | number of a effect_se_name_listitem defined inpv_db. | int | 
| TARGET | Spawns a rhythm game note. FT:  F:  F2, X:  | type | ID corresponding to a note type. Full ID list for each game on the dedicated Target page. | enum | 
| pos_x | X position of the note's target. | int | ||
| pos_y | Y position of the note's target. | int | ||
| angle | Angle of the note's path. | int | ||
| distance | Distance between the note's spawn position and the target's position. Default:  | int | ||
| amp | Amplitude of the note's path wave. Default:  | int | ||
| freq | Frequency of the note's path wave. | int | ||
| duration | (for F/F2/X formats) Sustain and Rush Note duration.
Default (for notes other than Sustain and Rush):  | DivaTime | ||
| is_end | (for F/F2/X formats) set to  | bool | ||
| fly_time | (for F/F2/X formats) Target Flying Time value (same format as the TARGET_FLYING_TIME command) | DivaTime | ||
| sig | (for F/F2/X formats) Time Signature The same value that would otherwise go in  Number of quarter note beats minus 1. eg:  | int | ||
| hit_eff | (for F2/X formats) Assigns a hit effect to the note based on a local ID defined in a previous TARGET_EFFECT command. | int | ||
| TARGET_FLYING_TIME | Sets the time it takes for the rhythm game notes to hit their targets. 
 | flytime | time value in DivaTime | DivaTime | 
| TIME | Waits until a specified game time. 
 | t | time value in DivaTime | DivaTime | 
References
somewhatlurker's pyDIVA/pyDSC

