DivaScript: Difference between revisions
Created page with "''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 <code>.dsc</code> 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, <code>.dsc</code> files from ''Project..." |
m Added more DSC commands |
||
| Line 21: | Line 21: | ||
|- | |- | ||
|chara | |chara | ||
|Character | |Character slot | ||
|True | |True | ||
|int | |int | ||
| Line 39: | Line 39: | ||
|- | |- | ||
|scale | |scale | ||
|Effect | |Effect scale | ||
|True | |True | ||
|int | |int | ||
| Line 112: | Line 112: | ||
|} | |} | ||
F2, X: <code>CHANGE_FIELD(id, unk);</code> | F2, X: <code>CHANGE_FIELD(id, unk);</code> | ||
=== CHARA_SIZE === | |||
Sets a character's scale/size. | |||
<code>CHARA_SIZE(chara, size);</code> | |||
{| class="wikitable mw-collapsible mw-collapsed" | |||
!Parameter | |||
!Description | |||
!Required | |||
!Type | |||
|- | |||
|chara | |||
|Character slot | |||
|True | |||
|int | |||
|- | |||
|size | |||
|Character scale | |||
|True | |||
|int | |||
|} | |||
=== END === | |||
Ends reading of the script. | |||
<code>END();</code> | |||
=== HAND_SCALE === | |||
Set the size of a character's hand. | |||
AFT: <code>HAND_SCALE(chara, hand, scale);</code> | |||
{| class="wikitable mw-collapsible mw-collapsed" | |||
!Parameter | |||
!Description | |||
!Required | |||
!Type | |||
|- | |||
|chara | |||
|Character slot | |||
|True | |||
|int | |||
|- | |||
|hand | |||
|Which hand | |||
|True | |||
|enum: | |||
1: left | |||
2: right | |||
|- | |||
|scale | |||
|Hand scale in percentage times 10; eg.: for <code>105%</code> use <code>1050</code> | |||
|True | |||
|int | |||
|} | |||
=== LYRIC === | |||
Display a lyric from <code>pv_db</code>. | |||
<code>LYRIC(id, color);</code> | |||
{| class="wikitable mw-collapsible mw-collapsed" | |||
!Parameter | |||
!Description | |||
!Required | |||
!Type | |||
|- | |||
|id | |||
|ID matching the number of a lyric in <code>pv_db</code>. | |||
Use <code>-1</code> as "disable". | |||
|True | |||
|int | |||
|- | |||
|color | |||
|<code>#AARRGGBB</code> hex color code converted to decimal. | |||
eg.: for a red lyric the command would be <code>LYRIC(id, 16711680);</code> because | |||
Red: <code>#00FF0000</code> → <code>0x00ff0000</code> → <code>16711680</code> | |||
Default: <code>-1</code> | |||
|False | |||
|int | |||
|} | |||
Revision as of 12:50, 20 September 2025
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)
AGEAGE_CTRL
Controls the effect for the hair of the module "AgeAge Again".
AFT: AGEAGE_CTRL(chara, side, unk1, scale, unk2, unk3, -1, -1);
| Parameter | Description | Required | Type |
|---|---|---|---|
| chara | Character slot | True | int |
| side | Side to control | True | enum:
0: both 1: left 2: right |
| unk1 | Unknown | True | int |
| scale | Effect scale | True | int |
| unk2 | Unknown | False | int |
| unk3 | Unknown | True | int |
BAR_TIME_SET
Sets the length of a measure.
BAR_TIME_SET(bpm, beats);
| Parameter | Description | Required | Type |
|---|---|---|---|
| bpm | Beats per minute | True | int |
| beats | Number of quarter note beats minus 1. eg.: 3 for 4/4.
|
True | int |
BLOOM
Sets data from bloom pv_param.
AFT, F2, X: BLOOM(id, unk);
| Parameter | Description | Required | Type |
|---|---|---|---|
| id | ID matching the data in pv_param. | True | int |
| unk | Unknown | True | int |
CHANGE_FIELD
Changes the field defined in pv_field/pv_db.
CHANGE_FIELD(id);
| Parameter | Description | Required | Type |
|---|---|---|---|
| id | ID matching the field number in pv_field or pv_db.
|
True | int |
F2, X: CHANGE_FIELD(id, unk);
CHARA_SIZE
Sets a character's scale/size.
CHARA_SIZE(chara, size);
| Parameter | Description | Required | Type |
|---|---|---|---|
| chara | Character slot | True | int |
| size | Character scale | True | int |
END
Ends reading of the script.
END();
HAND_SCALE
Set the size of a character's hand.
AFT: HAND_SCALE(chara, hand, scale);
| Parameter | Description | Required | Type |
|---|---|---|---|
| chara | Character slot | True | int |
| hand | Which hand | True | enum:
1: left 2: right |
| scale | Hand scale in percentage times 10; eg.: for 105% use 1050
|
True | int |
LYRIC
Display a lyric from pv_db.
LYRIC(id, color);
| Parameter | Description | Required | Type |
|---|---|---|---|
| id | ID matching the number of a lyric in pv_db.
Use |
True | int |
| color | #AARRGGBB hex color code converted to decimal.
eg.: for a red lyric the command would be Default: |
False | int |
