SB file type

From Sunshine Wiki
Jump to navigation Jump to search

General Info[edit | edit source]

Sb files are SPC binary format files that sunshine reads during gameplay in order to control and manage custom events. They are level-specific and loaded on level start, some common examples being talkevent.sb and redcoin.sb (Controls npc dialogue messages and red coin shine spawning respectively)

File Structure
* Header
* Text (.text)
* Data (.data)
* Sym (.sym)
* Variables

Header Section[edit | edit source]

Intro part of the file, holds info about the future sections of the file

Section Offset Byte Length Description
0x00 4 Magic (always SPCE): char[4]
0x04 4 .text Offset: uint32
0x08 4 .data Offset: uint32
0x0c 4 .data Count: uint32
0x10 4 .sym Offset: uint32
0x14 4 .sym Count: uint32
0x18 4 Var Count: uint32

Text Section[edit | edit source]

These are the assembly instructions that the game will read. Each byte corresponds with the chart below specifying the assembly info (For layers: 0x00 = Script, 0x01 = Local Function)

OP Layout Type
0x00 int32 Integer(int32)
0x01 flt32 Float
0x02 uint32:.data ID String
0x03 int32 Address
0x04 uint32:Layer/VarID Variable
0x05 Instruction No Operator
0x06 var Increment
0x07 var Decrement
0x08 Instruction Add
0x09 Instruction Subtract
0x0A Instruction Multiply
0x0B Instruction Divide
0x0C Instruction Modulo
0x0D var Assign
0x0E Instruction Equal
0x0F Instruction Not Equal
0x10 Instruction Greater Than
0x11 Instruction Modulo
0x12 Instruction Greater or Equal
0x13 Instruction Less or Equal
0x14 Instruction Negative
0x15 Instruction Not
0x16 Instruction And
0x17 Instruction Or
0x18 Instruction bitwise-And
0x19 Instruction bitwise-Or
0x1A Instruction bit-shift Left
0x1B Instruction bit-shift Right
0x1C uint32:.text Offset/Count Local Function Call
0x1D uint32:.sym ID/Var Count Built-in Function
0x1E uint32:Count Make Frame
0x1F uint32:Count Make Dataset? (mkds)
0x20 Instruction Return
0x21 Instruction Return 0
0x22 uint32:Offset Jump if not equal
0x23 uint32:Offset Jump
0x24 Instruction Pop
0x25 Instruction Integer(0/false)
0x26 Instruction Integer(1/true)
0x27 Instruction End of Script

Data Section[edit | edit source]

Contains the strings that the file uses, stored in reverse order of their appearance.

Section Structure
* Offsets (array of uint32 offsets for each string entry)
* Strings (string data, a byte of padding separates each one)

Sym Section[edit | edit source]

Contains an array of entries that contain the information

Entry Offset Byte Length Description
0x00 4 Type: uint32 (0x00 Built-in Function, 0x01 Local Function, 0x02 Variable)
0x04 4 Offset to string: uint32 (0x00 .sym ID, 0x01 Offset in .text, 0x02 Variable ID)
0x08 4 Runtime Field (Hash): uint32
0x0c 4 Runtime Field (Function Pointer): uint32

Variable Section[edit | edit source]

Contains the names of variables the file uses, a byte of padding separates each one