School Mate: Sdt codes

From Hgames Wiki
Jump to: navigation, search

Illusion

all characters are at least 18


School Mate [edit]

Story

Gameplay

Technical Help

Modding


Information on data types contained within each block based on code by Alamar.

0

Comment

Text - Comment text

1

Dialogue

Int32 - Seems to be incremented for each code 1 block
Text - Name of speaker, 設定1 to display no name
Text - Sound file to play, empty string for no sound
Int32 - number of lines of text

(Below is repeated for each line)
Byte - Some sort of flag? Always 0 in known sdt files.
Byte, Byte, Int32, Int32 - Read only if above byte is non-zero. Never happens in sdt files seen so far, purpose unknown.
Text - Line of text
(End repeated section)

2

Gradually blends the entire screen from/to a given color over a given amount of time.

Byte - 0 blends from the given color to a scene. 1 blends the entire screen to the given color. Screen will stay blended until another code 2 restores it to normal.
Int32 - Color
Int32 - Time to spend blending, in seconds.

3

Does not appear in sdt files seen so far.

4

Unknown

Int32 - always 2
Text - always "NULL" or "siro.ema"
Int32 - always 0
Int32 - always 0
Int32, Int32 - always [64,48] when text is "NULL", [1024,768] when text is "siro.ema"

5

Does not appear in sdt files seen so far.

6

Specifies name of sound file.

When sound file name is not "NULL", always followed by a block 7 and a block 8.
Int32 - id assigned to loaded sound.
Text - Name of sound file. Sometimes "NULL" to unload a sound.
Byte - Unknown
Byte - Unknown

7

Unknown. Often occurs between code 6 and code 8, but not always. count7a is always 1 and count7b always 1 or 2 in seen sdt files.

int count7a = ReadInt32(reader);
for (int i = 0; i < count7a; i++)
{
byte count7b = ReadByte(reader);
ReadInt32(reader);
ReadInt32(reader);
if ((count7b > 0) && (count7b <= 2))
{
ReadInt32(reader);
}
}

8

Believed to start playback of sounds specified in block 6.

Int32 - Matches the Int32 in a previous block 6.

9

Transfers to another .sdt file.

Text - name of .sdt file to move to.
Int32 - Unknown. Seems to be 0 most if not all of the time.

10

Label for jumps within a file. (See Code 22.)

Text - Label name

11

Displays a multiple-choice menu.

Int32 - Number of choices (always 2 in sdt files seen so far)

(Below is repeated for each choice)
Int32 - Number of commands for if this option is chosen.
Text - Text for this option.
(data) - Commands for if this option is chosen.
(End repeated block)


12

Unknown. Always followed by a code 13, a code 25, and a code 9 (jump to another file), but this may be a coincidence.
All 5 examples of this code occur at the end of a file.
Code 13 has only been seen following this code.
Code 25 occurs in many other places.

Text - Always "sm00_00.pp" in sdt files seen so far.
Int32 - Always 4294967295 in sdt files seen so far.

13

Unknown. Always seen preceded by a code 12.

14

Handles some scene transition logic

Int32 - sub-opcode
Byte - Always 0
Byte - Always 0
Int32 - Parameter

The first int32 is a sub-opcode.

  • 1 determine the type of H. However, the game also checks elsewhere, and changing this value may result in incorrect behavior of the game.
  • 3 indicates going back to main menu. Parameter always 1.
  • 4 determines what the girl wear. Parameters:
    • 0 = underwear + stockings, shoes etc
    • 1 = default bikini
    • 2 = personal dress
    • 3 = school uniform
    • FF = player's choice.
  • 5 determines the location. Parameter value corresponds to lines in adv_load_map.lst

15

Unknown; appears to be some kind of if/then/else construct

Int32 - Number of times to repeat loop A. Always 1 in known sdt files.
Byte - Always 0
Int32 - (Number of commands for if true?)
Int32 - (Number of commands for if false?) (Always 0 in known sdt files.)

(Loop A)
Int32, Byte, Byte, Byte, Int32 - Unknown; possibly condition to be tested.
(End loop A)

(data) - Commands (for if condition is true?)

(data) - Commands (for if condition is false?)

16-19

Not present in any known sdt files.

20

Stops script execution.

21

Not present in any known sdt files.

22

Jumps to a label within the file. Labels are set by code 10.

Text - Name of label

23-24

Not present in any known sdt files.

25

Delay, can be skipped by pressing mouse.

Int32 - Duration in milliseconds.

26

Loads information from/based on .lst files. (Unconfirmed, but seems highly likely.)

Int32 - 0 for adv_load_map.lst, 1 or higher for adv_load_cha.lst. Has not been seen higher than 3.
Byte - 0 if Int32 is 0, 1 otherwise (0 for map, 1 for character?)
Text - Seems to be either "adv_load_cha.lst", "adv_load_map.lst", or "NULL"
Int32 - Refers to a line in the .lst file. 0 if text is "NULL"

With adv_load_map.lst, loads a location for the scene.

With adv_load_cha.lst, loads characters for the scene. Int32 is a number which is used by other commands to refer to that character.

When text is "NULL", unloads the map or a character from memory. (Based on value of Int32.) Always done before a second map is loaded.

27

Unknown
In some randomly selected examples, always preceded by a code 30 or another code 27.

Int32
Byte
Int32
Int32

28

Tilt Head?
In some randomly selected examples, was always followed by a code 29.

Int32 Character Id
Int32
Int32
Byte

29

Unknown

Int32 - Unknown
Int32 - Always 0xFFFFFFFF if text value is "NULL"
Text - Often "NULL", sometimes what looks like a mesh name

30

Moves a character to a new pose

Int32 - Character id from a code 26 line
Int32 - Always -1 (0xFFFFFFFF)
Int32 - Pose to switch to
Byte - Always 0
Byte - Always 0
Byte - Always 0 or 1

31

Sets a character's expression.

Int32 - Character id, from a previous code 26.
Int32 - Code for eye expression
Int32 - Code for mouth expression
Byte - Always 0 or 1

32

Moves a character to a specified location
Often seems to be preceded by code 26 and followed by code 33.

Int32 - Character id
Byte - Always 0
Int32 - Interval to spend walking, in milliseconds
Float32
Float32
Float32
Byte - Always 0 or 1

33

Make a character face a given direction

Int32 - Character id
Byte
Int32 - Interval to spend turning to face new direction
Int32 - Usually 0
Float32 - New direction. Not sure if relative or absolue.
Int32 - Usually 0
Byte

34-35

Not present in any known sdt files.

36

Add/remove a mesh to a character, such as clothing.

Int32 - Character id
Int32
Text - Contains the name of a mesh of that character. (May be in head or body .xx file. Names can be found in the cat*.lst files)
Byte - 0 to add, 1 to remove.

37

Unknown

Float32

38

Code 38 is capable of either zooming or moving the camera forward/backward. Details unknown.

Byte - Always 0
Int32 - Time to spend moving camera
Float32
Float32
Float32
Byte - Always 0 or 1

39

Camera movement

Byte
Int32 - Time to spend moving camera
Int32 - Float?
Int32 - Float?
Int32 - Float?
Byte

40

Not present in any known sdt files.

41

Unknown

Int32
Int32

42

Unknown
Seems to often be followed by 43-47 in sequence.

43

Unknown

44

Unknown

45

Unknown

46

Unknown

47

Unknown

48

Gradually blends the entire scene to/from the given color. Dialog text will still be displayed. Screen stays blended until the next code 48.

Byte - 1 to blend to the color, 0 to blend from it.
Int32 - Color
Int32 - Time to spend blending, in milliseconds.

49

Unknown

Int32
Byte