DivaScript: Difference between revisions

From DivaDocs
GGAB3 (talk | contribs)
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..."
 
GGAB3 (talk | contribs)
m Added more DSC commands
Line 21: Line 21:
|-
|-
|chara
|chara
|Character Slot
|Character slot
|True
|True
|int
|int
Line 39: Line 39:
|-
|-
|scale
|scale
|Effect Scale
|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 -1 as "disable".

True int
color #AARRGGBB hex color code converted to decimal.

eg.: for a red lyric the command would be LYRIC(id, 16711680); because Red: #00FF00000x00ff000016711680

Default: -1

False int