SOC++ implements what could be best described as assembly code encoded into SOC Actions.
It has several features, including:
To run it, paste the following code into a blank SOC, run the SOC after loading SOC++, then simply die!
It has several features, including:
- Up to 8GB read-write dynamic memory per object (2^31 32-bit numbers)
- Conditional jumping, unconditional and conditional branching.
- Addition, Subtraction, Multiplication, Division, Modulo operations.
- Facilities to print numbers and strings.
- FIFO stack.
To run it, paste the following code into a blank SOC, run the SOC after loading SOC++, then simply die!
Sonic Object Configuration (SOC):
Freeslot
S_SOCpp_MAIN_HELLOWORLD_PC0
S_SOCpp_MAIN_HELLOWORLD_PC1
S_SOCpp_MAIN_HELLOWORLD_PC2
S_SOCpp_MAIN_HELLOWORLD_PC3
S_SOCpp_MAIN_HELLOWORLD_PC4
Object MT_PLAYER
DeathState S_SOCpp_MAIN_HELLOWORLD_PC0
State S_SOCpp_MAIN_HELLOWORLD_PC0
Duration = 1
Next = S_SOCpp_MAIN_HELLOWORLD_PC1
State S_SOCpp_MAIN_HELLOWORLD_PC1
Action = A_SOC++_SetLongWord
Var1 = 0
Var2 = 0x48656C6C # "Hell"
Next = S_SOCpp_MAIN_HELLOWORLD_PC2
State S_SOCpp_MAIN_HELLOWORLD_PC2
Action = A_SOC++_SetLongWord
Var1 = 4
Var2 = 0x6F20576F # "o Wo"
Next = S_SOCpp_MAIN_HELLOWORLD_PC3
State S_SOCpp_MAIN_HELLOWORLD_PC3
Action = A_SOC++_SetLongWord
Var1 = 8
Var2 = 0x726C6421 # "rld!"
Next = S_SOCpp_MAIN_HELLOWORLD_PC4
State S_SOCpp_MAIN_HELLOWORLD_PC4
Action = A_SOC++_PrintCString # memory is initialised with zeros, so we don't have to specify length
Duration = 1
Next = S_PLAY_DEAD