Sanny Builder
In English
In English
  • Introduction
  • Credits
  • Version History
  • Language
    • Data Types
      • Constants
      • Variables
      • Arrays
    • Instructions
      • Opcodes
      • Keywords
      • Classes
      • Expressions
      • Built-in Commands
      • HEX..END
    • Control Flow
      • Labels
      • Conditions
      • Loops
      • Switch
    • Functions
    • Import/Export
    • Directives
    • Comments
  • Edit Modes
    • CustomLabels.ini
    • Code Templates
    • Enums.txt
    • Extensions
    • Opcodes List (SCM.INI)
  • Editor
    • Features
    • Options
      • General
      • Formats
      • Editor
      • Theme Editor
      • Hotkeys
      • Debugger
      • Edit modes
    • Console
    • Hotkeys
    • Opcode Search Tool
    • Command Line Interface
    • Language Service
    • SCM Debugger
  • SCM Documentation
    • GTA Limits
    • GTA III
      • Ped Types
      • Radar Icons
    • Vice City
      • Button IDs
      • Gang IDs
      • Garage IDs
      • Interiors
      • Ped Types
      • Radar Icons
      • Weapon IDs
    • San Andreas
      • Button IDs
      • Gang IDs
      • Garage IDs
      • Haircuts
      • Interiors
      • Particle Effects
      • Ped Types
      • Player Clothes
      • Player Body Parts
      • Special Actors
      • Statistics ID
      • Tattoos
      • Train Types
      • Vehicle Variations
      • Weapon IDs
      • Weather IDs
      • Zones
    • Liberty City Stories
      • Gang IDs
      • Model IDs
      • Player Clothes
      • Special Actors
      • Weapon IDs
      • Weather IDs
    • Vice City Stories
      • Gang IDs
      • Player Clothes
      • Weather IDs
  • Troubleshooting
    • Error Messages
      • 0001: INI file not found
      • 0002: Unknown array type
      • 0003: Error reading script.img
      • 0004: Unknown parameter type
      • 0005: Invalid edit mode
      • 0006: Unknown file header
      • 0007: File not found
      • 0008: Error reading opcodes list
      • 0009: Opcodes list not found
      • 0010: Unknown opcode
      • 0011: Unknown opcode
      • 0012: Incorrect jump instruction
      • 0013: Unknown directive
      • 0014: Incorrect expression
      • 0016: Script not found
      • 0017: Unknown type of variable
      • 0018: Invalid array size
      • 0019: Unknown array type
      • 0020: Variable is not declared as array
      • 0021: Incorrect variable name
      • 0022: Loop counter is not a variable
      • 0023: Unexpected instruction
      • 0024: Error reading integer number
      • 0025: Incorrect counter range
      • 0026: Error reading floating-point number
      • 0027: String is too long
      • 0028: Unterminated string
      • 0029: Invalid debug script ID
      • 0031: Invalid total number of elements
      • 0032: Invalid value in the header
      • 0033: Invalid local variable name
      • 0034: Local variable is out of range
      • 0035: Expected word
      • 0036: Local mission variable is out of range
      • 0037: Debug script not found
      • 0038: Unknown type of array
      • 0039: Invalid element definition
      • 0040: Constant name or value not found
      • 0041: Invalid mission id
      • 0042: Duplicate external script name
      • 0043: Invalid array index
      • 0044: Invalid array name
      • 0045: Invalid array syntax: variable name is missing
      • 0046: Invalid array syntax
      • 0047: Invalid array size
      • 0048: Error reading array size
      • 0049: Not enough parameters for opcode
      • 0050: Not enough parameters for command
      • 0051: Error writing script.img header
      • 0052: Error writing script.img
      • 0053: Recursive include
      • 0054: Label not found
      • 0055: Identifier not found
      • 0056: Label redeclared
      • 0057: Internal label not found
      • 0058: Invalid parameter
      • 0059: Invalid opcode definition
      • 0060: No input file
      • 0061: Empty source
      • 0062: IDE file not found
      • 0063: Mission label expected
      • 0064: Mission label not found
      • 0065: External script label not found
      • 0067: Forbidden character in external script name
      • 0068: Forbidden character in identifier
      • 0069: Forbidden character in object name
      • 0071: Incorrect number of conditions
      • 0072: Missing logical operator
      • 0073: Redundant logical operator
      • 0074: Disabled option
      • 0075: Incorrect hexadecimal value
      • 0076: Condition expected
      • 0079: Invalid parameter in Alloc command
      • 0080: Non-negative integer number expected
      • 0081: Too many actual parameters
      • 0082: Invalid syntax
      • 0083: Unknown model ID
      • 0084: Jump to offset 0
      • 0086: Invalid array index
      • 0087: Invalid variable
      • 0088: Global variable is out of range
      • 0089: Opcode not found
      • 0090: Duplicate constant
      • 0091: Not enough memory to allocate a local variable
      • 0092: Incorrect export symbol
      • 0093: Only headless scripts can export code
      • 0094: Duplicate export name
      • 0095: Incorrect import name
      • 0096: Incorrect import path
      • 0097: Too many actual parameters
      • 0098: Unknown operator
      • 0099: Left-hand side of the assignment must be a variable
      • 0100: Invalid operator
      • 0101: Variable is not a class instance
      • 0102: Switch statement needs a variable
      • 0103: Expected a switch case
      • 0104: Expected a value for the switch case
      • 0105: Expected a function argument name
      • 0106: Expected a function argument type
      • 0107: Expected function return type
      • 0108: Unsupported argument type
      • 0109: Expected variables to store function result
      • 0110: Function must return N values
      • 0111: Function not found in current scope
      • 0113: Duplicate function declaration
      • 0115: Invalid variable name. Name is reserved by another class or function
      • 0116: Invalid variable name
      • 0117: Invalid function name
      • 0118: Unexpected value to return
      • 0119: Unsupported type of argument
      • 0120: Expected calling convention type
      • 0121: Expected function's static address
      • 0122: A non-static function can't be called by name
      • 0123: A 'thiscall' function requires a pointer
      • 0124: Foreign functions can't return more than one value
      • 0125: Unexpected return type in function
      • 0126: Can't export a foreign function definition
      • 0127: Unexpected mission label in function
Powered by GitBook
On this page
  • Available commands
  • Debug Options
  • CODE_OFFSETS
  • VAR_COUNTER
  • IGNORE_UNKNOWN
  • CONSTANT_INDEXES
  • SKIP_SCM_HEADER
  • SKIP_EXTRA_INFO
  • Alternate ways
  • Running with --debug
  • Using GUI
  1. Editor

Console

PreviousEdit modesNextHotkeys

Last updated 3 years ago

The console offers an ability to switch debug options of Sanny Builder. Mostly they relate to the disassembler features and you can see the changes when disassemble a file. The console window is open after pressing Ctrl+~. You may enter the commands in the input line. After typing a command press Enter to proceed. The console will display a result.

Available commands

All commands are case-insensitive.

help – shows the help information about the console clear – clears the console list – shows in the console the list of all commands list options – lists all available debug options toggle [on/off] – enable or disable

The input command ends either with the word ON (the option will be enabled) or OFF (the option will be disabled), or nothing (the option will be toggled from ON to OFF or from OFF to ON).

Before enabling the following options turn on the debug mode with the command toggle debug_mode ON

Debug Options

CODE_OFFSETS

The disassembler prints the offset of each command.

VAR_COUNTER

After compiling the console contains the list of the used only once in the code (i.e. can be removed or replaced with ).

IGNORE_UNKNOWN

The disassembler ignores unknown opcodes, incorrect parameters and so on. It helps to open almost any file that used to be protected or compiled incorrectly.

CONSTANT_INDEXES

The disassembler prints array elements as global variables with indexes. It's available for GTA SA, LCS, VCS games.

E.g. given an array of three elements starting at $10 this option affects the way the variables look like after disassembling:

Without CONSTANT_INDEXES

With CONSTANT_INDEXES

$10

$10[0]

$11

$10[1]

$12

$10[2]

SKIP_SCM_HEADER

Disassembler skips the header of the input file. It allows to open headless scripts (e.g. the ones from script.img or CLEO scripts).

SKIP_EXTRA_INFO

Alternate ways

Sanny Builder offers a few other ways to toggling debug options outside of the console that might be useful in some cases.

Running with --debug

Index

Debug Option

1

CODE_OFFSETS

2

IGNORE_UNKNOWN

3

VAR_COUNTER

4

CONSTANT_INDEXES

5

SKIP_SCM_HEADER

6

SKIP_EXTRA_INFO

sanny.exe --debug 110000

The first 1 enables the CODE_OFFSETS option, the second 1 enables the IGNORE_UNKNOWN mode. The remaining options are disabled.

Using GUI

Clicking the right-most button in the main toolbar shows a drop-down menu with the list of debug options.

Each menu item toggles a particular debug option. The change comes into effect immediately.

With this option the compiler makes .scm files without the header (similar to {$EXTERNAL} ).

The disassembler ignores the section attached to the input file. It also treats this section as a set of regular SCM instructions, so enabling IGNORE_UNKNOWN option is recommended.

The --debug provides an alternate way of switching the debug options. Run Sanny with the parameter --debug X, where X is a series of 0 and 1. Each digit in the series corresponds to a particular debug option:

debug options
option
directive
global variables
local variables
extra info