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
  • v. 4.1.0 - Mar 15, 2024
  • v. 4.0.0 - Aug 4, 2024
  • v. 3.9.1 - Sep 18, 2023
  • v. 3.9.0 - Sep 9, 2023
  • v. 3.8.5 - Feb 22, 2023
  • v. 3.8.4 - Feb 17, 2023
  • v. 3.8.3 - Jan 8, 2023
  • v. 3.8.2 - Sep 8, 2022
  • v. 3.8.1 - Sep 1, 2022
  • v. 3.8.0 - Aug 4, 2021
  • v. 3.7.0 - Jan 30, 2021
  • v. 3.6.2 - Nov 29, 2020
  • v. 3.6.1 - Nov 27, 2020
  • v. 3.6.0 - Nov 11, 2020
  • v. 3.5.1 - Aug 21, 2020
  • v. 3.5.0 - Aug 18, 2020
  • v. 3.4.1 - Aug 6, 2020
  • v. 3.4.0 - Aug 4, 2020
  • v. 3.3.3 - Oct 20, 2019
  • v. 3.3.2 - Oct 19, 2019
  • v. 3.3.1 - Sep 14, 2019
  • v. 3.3.0 - Sep 8, 2019
  • v. 3.2.4 - Aug 4, 2019
  • v. 3.2.3 - Jul 7, 2019
  • v. 3.2.2 - Jul 5, 2014
  • v. 3.2.1 - May 4, 2014
  • v. 3.2.0 - Mar 22, 2014
  • v. 3.1.4 -Feb 22, 2014
  • v. 3.1.3 - Dec 22, 2013
  • v. 3.1.2 - Oct 6, 2013
  • v. 3.1.1 - Sep 22, 2013
  • v. 3.1.0 - Sep 14, 2013
  • v. 3.09 - Jul 28, 2013
  • v. 3.08 - Jul 5, 2013
  • v. 3.06 - Jun 17, 2013
  • v. 3.05 - Jun 5, 2013
  • v. 3.04 - Aug 17, 2008
  • v. 3.03 - Nov 17, 2007
  • v. 3.02 - Nov 16, 2007
  • v. 3.01- Aug 6, 2007
  • v. 3.00 - Aug 4, 2007
  • v. 2.99e - Jan 1, 2007
  • v. 2.99d - Dec 3, 2006
  • v. 2.99c - Nov 30, 2006
  • v. 2.99 - Sep 27, 2006
  • v. 2.98 - Aug 4, 2006
  • v. 2.97 - Jun 11, 2006
  • v. 2.96 - Apr 1, 2006
  • v. 2.9f - Feb 18, 2006
  • v. 2.9 - Dec 15, 2005
  • v. 2.6 - Nov 5, 2005
  • v. 2.5 - Oct 10, 2005
  • v. 2.0 - Sep 18, 2005
  • v. 1.1 - Sep 7, 2005
  • v. 1.0 - Sep 4, 2005
  • v. 0.8 - Aug 20, 2005
  • v. 0.7 - Aug 10, 2005
  • v. 0.6 - Aug 4, 2005

Version History

v. 4.1.0 - Mar 15, 2024

  • edit mode enhancements, including a new feature to customize edit mode list

  • two new experimental modes for GTA San Andreas: one with Somersault compiler and one with support for SAMPFUNCS extension

  • autocomplete (Ctrl+Space) improvements

  • code formatter (Ctrl+Alt+3)

  • main menu updates with new icons

  • new theme Night Blue by Vital

  • updated Turkish translation by Bloodriver the Conqueror

  • bug fixes

See the complete list of changes. Visit SannyBuilder Discord for additional information and support.

v. 4.0.0 - Aug 4, 2024

  • functions support (function..end)

  • CLEO 5 modules support

  • new SBL edit modes

  • debugger for main.scm scripts

  • switch..end

  • binary number format (0b101010)

  • new tabs

  • other improvements and fixes

See the complete list of changes. Visit SannyBuilder Discord for additional information and support.

This release won't be possible without great feedback and testing from Sanny Builder community as well as support from my Patreon.

v. 3.9.1 - Sep 18, 2023

  • array name in expressions without opcode could be a constant #250

  • preserve global variable index when disassembling with extra info #251

  • default choice for option Case converting should be "As is" #256

  • fix an issue with compiling opcode 0B17 #254

  • fix an issue when Sanny doesn't present the option to use the included script text. #258

  • fixed some issues with string variables #259, #265

v. 3.9.0 - Sep 9, 2023

  • command names defined in Sanny Builder Library JSON files are now valid keywords

  • HEX..END improvements (repeat the same byte N times, include binary files)

  • simplified const and variable declarations (const x = 1, y = 2, float x, y, z)

  • new operators (bitwise, =@, =#)

  • {$INCLUDE_ONCE} directive

  • adding new edit modes can be done by copying them into the data folder, the modes.xml is gone

  • bug fixes and other changes

👏 Thanks to all people who helped and contributed to this release, and many thanks to my supporters on Patreon.

Previous versions allowed the compilation of some broken code. Now, it will produce an error. You can find examples of such code here.

Complete list of changes

v. 3.8.5 - Feb 22, 2023

  • fix bug #216

v. 3.8.4 - Feb 17, 2023

  • keep previously opened documents when launching SB with an input file (Open with) #151

  • add "--decompile" parameter to CLI

  • fix bugs #212, #213, #180

  • fix some compilation issues with classes using string literals

v. 3.8.3 - Jan 8, 2023

  • fix bugs #210, #204, #168

  • fix a bug in model search

  • update CLEO+ plugin to 1.1.3

v. 3.8.2 - Sep 8, 2022

  • fix bugs #200, #187

v. 3.8.1 - Sep 1, 2022

  • added support for more commands terminating an if statement with multiple conditions #133

    if and
        0AB0: is_key_pressed 9
	0AB0: is_key_pressed 10
    0AA0: gosub_if_false @label // was not working before, now compiles
  • new and updated translations (Spanish, Ukrainian, Romanian, Armenian)

  • new color themes contributed by the users

  • massive update for local help files (CHM)

  • new edit mode for GTA SA PS2 with PS2 CLEO commands

  • updated local CLEO and plugin files:

    • CLEO for San Andreas 4.4.1

    • CLEO for GTA III and Vice City 2.0.0.6

    • plugin CLEO+ 1.1.2

  • fixed bugs #172, #189

👏 Thanks to everyone who contributed to this version: NicusorN5, Junior_Djjr, wmysterio, MatiDragon, DanielSant0s, JaggerJam69, Vital, Sdas50, nick7

Complete list of changes

v. 3.8.0 - Aug 4, 2021

  • integration with Sanny Builder Library: a new portal documenting all known opcodes

  • 16 new color themes

  • disassembler now outputs the content of a hex..end block as a string if it's a sequence of ASCII characters ending with 00 #33

  • new debug option to let disassembler ignore custom information attached to the compiled script

  • new CLI parameter to launch the editor with custom options

  • custom user templates are now stored in a separate file and kept between updates

  • hotkeys using Numpad buttons have been changed (Zoom text: Ctrl + +/- and Navigate to label and back: Alt + Right/Left)

  • updated CLEO+ plugin to v1.0.8

  • updated translations to Hungarian, Spanish, Ukrainian and Chinese languages

  • fixed 16 bugs

👏 Kudos to contributors to this release: forms55, MatiDragon, Vital, wmysterio, XMDS

Complete list of changes

v. 3.7.0 - Jan 30, 2021

  • declared constants are getting highlighted (#28)

  • the autocomplete list displays declared constants (#40)

  • each editor tab maintains its own edit mode selection (#87)

  • new VC Mobile mode with CLEO Android opcodes (sannybuilder/data#11)

  • added spaceeinstein's Opcode Restoration project opcodes in VC PC mode

  • error messages now have a link to localized documentation if possible (#101)

  • user tools configuration supports @sb: and @game: variables (#72)

  • CLEO+ plugin updated to v1.0.7

  • fixed bugs: #103 #114 #120

Read more on constants highlighting there: Language service.

Complete list of changes

v. 3.6.2 - Nov 29, 2020

  • fixed a bug with labels missing in disassembled CLEO scripts #99

v. 3.6.1 - Nov 27, 2020

  • updated translation to Ukrainian language

  • updated CLEO+ plugin to v1.0.4

  • updated opcode definitions and keywords for CLEO opcodes #95

  • fixed several regression bugs in compiler #96, #98

  • minor fixes and improvements (see the complete list)

v. 3.6.0 - Nov 11, 2020

  • support for enumerated types in classes

  • new types of opcode parameters: m% and k%

  • initial support for language extensions

  • better integration with CLEO library:

    • updated third-party tools in the tools directory:

      • CLEO v4.4

      • SCRLog v2020.2

      • added CLEO+ plugin for GTA SA with 250+ new opcodes

    • recognize Cleo for Android scripts (*.csa, *.csi) as compiled scripts

    • compiler uses CLEO opcodes 0A9E, 0A9F, 0A90, 0A91 in certain expressions when no opcode is supplied

    • unified description and keywords for CLEO opcodes across different edit modes

  • added keywords for all opcodes in GTA SA SCR mode

  • word thread has been replaced with script in opcode definitions and keywords (see why)

  • IDE updates:

    • the game directory is no longer required to compile a script (#48)

    • the "Compile and Copy" destination could be configured (#9)

    • updated Spanish and Italian translations

    • added option to associate Sanny Builder with *.csa and *.csi files (CLEO Android scripts).

Complete list of changes

v. 3.5.1 - Aug 21, 2020

  • fixed a bug with LCS and VCS compilation (#56)

  • arrays in LCS and VCS now get custom names from CustomVariables.ini and CustomArrays.ini (#53)

v. 3.5.0 - Aug 18, 2020

  • updated command line interface

    • Unix-style syntax with hyphens (#42)

    • new options -x, --game, --mode

  • improved edit modes

    • games.xml renamed to modes.xml, inner structure updated

    • modes can now inherit properties of other modes (useful for different versions of one game)

    • a new mode for SA v2.0 (using CustomLabels_v2.ini)

    • separate modes for VCS PSP and VCS PS2 (#41)

    • support for custom IDE/DAT files

    • "hot" reloading of modes configuration (#15)

    • increased available space for the mode name section (#8)

  • updated opcode definitions for LCS/VCS*

  • removed SAMB to SB converter (#27)

  • fixed file association (#43)

  • fixed a bug with LCS and VCS compilation (#49, #0053, #0064)

  • fixed an issue with Opcode Search Tool window not available after minimize (#35)

New opcode definitions for GTA LCS and GTA VCS are incompatible with the previous definitions. You must disassemble the main.scm prior to making any scripts for those games.

v. 3.4.1 - Aug 6, 2020

  • fixed incorrect number of parameters in opcode 04E3 in VCSSCM.INI

  • fixed the issue with the disassembler ignoring Write opcodes option and producing a callable label when a regular label is expected

v. 3.4.0 - Aug 4, 2020

  • added compiler support for the SCM format of GTA: Vice City Stories (#2)

  • added syntax for declaring local variables with custom names (#32)

  • added a simpler form of calling subroutines using labels: a label name followed by a pair of parentheses () substitutes a gosub command

  • added more customization points for edit modes:

    • path to a GXT file used by the disassembler (#7)

    • path to opcodes.txt (#5)

    • exclusive code templates

  • added a new tutorial on higher level constructions in the Sanny Builder language, see help\examples directory

  • IDE updates:

    • Run San Andreas menu action now checks for gta-sa.exe (Steam)

    • a new menu item to quickly bootstrap a CLEO script file (see the bottom note in Code Templates)

    • links to the new documentation portal in the main menu and error messages

  • minor updates:

    • updated opcode descriptions (player money += in SA, award_achievement in SA Mobile, 0479 in VCS)

    • renamed variables script_controlled_player and flag_player_on_mission to PLAYER_ACTOR and ONMISSION respectively in GTA III's CustomVariables.ini (#3)

    • reverted files in the help\GXT Strings directory to the older version (#25)

    • renamed macroes.txt to templates.txt

  • translation updates

v. 3.3.3 - Oct 20, 2019

  • fixed a bug causing incorrect external scripts compilation

v. 3.3.2 - Oct 19, 2019

  • fixed bugs #0036, #0050

  • fixed the opcode 059C in the Vice City mode

v. 3.3.1 - Sep 14, 2019

  • fixed the bug #0048

  • included constants.txt missing in the GTA SA mode

v. 3.3.0 - Sep 8, 2019

  • added compiler support for the Liberty City Stories SCM format

  • added aliases for the timer variables: TIMERA and TIMERB

  • changed the Ranges check option to apply to the global variables

v. 3.2.4 - Aug 4, 2019

  • fixed bugs #0031, #0032, #0033, #0040, #0044

  • fixed a regression defect when a CHM help file can not be open

  • updated opcode definitions for GTA 3 and Vice City

  • added IDE support for CLEO 2.0 for III and VC

v. 3.2.3 - Jul 7, 2019

  • improved support for the version of GTA San Andreas for WinStore, Xbox 360, and PS3

  • fixed an issue with opcodes 09A4 and 0A18 not being properly decompiled in the SA_Mobile mode

v. 3.2.2 - Jul 5, 2014

  • added translation into Korean language (thanks to MINE)

  • improved HEX..END construct processing

  • fixed the bug #0000028

v. 3.2.1 - May 4, 2014

  • added translation into Indonesian language (thanks to IMasterFX)

  • CLEO for GTA III and CLEO for Vice City updated (thanks to Silent)

  • fixed bugs #0000026, #0000027

v. 3.2.0 - Mar 22, 2014

  • adding custom edit modes by editing the games.xml file is now possible

  • new edit mode - GTA SA SCR

  • variables can be quickly declared using a type name prefix

  • CLEO updated to the version 4.3.16

  • added the InstaSearch feature (formerly 'jump to label' function)

  • mission names can be changed by editing appropriate missions.txt files

  • improved association of the script file extensions with Sanny Builder

  • Sanny Builder only checks if the game directory path is not empty, no checks for specific files (such as an .exe)

  • minor improvements in the SB updating feature

  • changed the Sanny Builder icon and the menu icons

  • fixed the bug #0000024

v. 3.1.4 -Feb 22, 2014

  • CLEO updated to the version 4.3.14

  • fixed minor interface glitches for hi-res displays

  • updated German, Polish, Chinese, Ukrainian translations

v. 3.1.3 - Dec 22, 2013

  • added support for iOS and Android versions of GTA San Andreas

  • a code scan value is now used when making a list of constants

  • updated Chinese and German translations

v. 3.1.2 - Oct 6, 2013

  • added Czech translation

  • added options to associate file extensions .cs and .cm with Sanny Builder

  • fixed bugs #0000011, #0000020

v. 3.1.1 - Sep 22, 2013

  • added a new directive $OPCODE to register a new opcode in the script

  • corrected behavior of the directive $INCLUDE while scanning directories for the file

  • fixed bugs #0000005, #0000019

v. 3.1.0 - Sep 14, 2013

  • VCSCM.ini is updated to include opcodes for the GTA VC mobile version and unsupported opcodes

  • when the option Add extra info to SCM is enabled, Sanny Builder remembers the game a script is compiled for, to use the proper edit mode when decompiling

  • when the option Add extra info to SCM is enabled, Sanny Builder adds a source code into a script file (only when the directive $EXTERNAL or $CLEO is present)

  • added a new directive $NOSOURCE to prohibit including a source code into a compiled script

  • some hotkeys are now customizable in the options

  • added a feature to check automatically if an update exists at the program startup

  • directives $VERSION and $VERSION_RESTORE are deprecated

  • updated Spanish and Chinese translations

  • Coords manager is now able to change the player's angle in GTA VC

  • The Sanny Builder installation now includes the SCRLog CLEO plugin by LINK/2012 (can be found in the tools folder)

  • fixed bugs #0000010, #0000014, #0000015, #0000016

v. 3.09 - Jul 28, 2013

  • Sanny Builder is licensed under the Sanny Builder Freeware/Donationware License Agreement

  • added a feature to report found bugs via the official bug tracker

  • added a feature to check if an update is available

  • Coords manager is upgraded to work with all known versions of GTA3, VC and SA (thanks to Silent)

  • added an updated Chinese translation

  • fixed bugs #0000002, #0000003, #0000004, #0000006, #0000009

  • minor design changes

v. 3.08 - Jul 5, 2013

  • added Silent's ASI Loader v1.1 as a default ASI loader for CLEO 3 and CLEO 4

  • added Chinese translation

  • added classes File and Audiostream for backward compatibility with CLEO 4 by Alien

File.Open, Audiostream.Load, Audiostream.Load3D were methods in CLEO 4. Now they are properties. It means, if you get an error when compiling old sources with these commands, change their syntax to: var = File.Open(file_name, mode) var = Audiostream.Load(file_name) var = Audiostream.Load3D(file_name)

  • the compiler now accepts a string literal as a parameter in a class property

There is a limit on using space characters in such parameter.

  • the compiler now throws an error for a malformed string literal like text1"text2" or text1'text2' (without a leading quotation mark)

  • the compiler is able to compile comment markers (curly braces) within a string ("{text1}text2")

  • the semicolon (;) can not be used to comment out a line of the code

  • changed the syntax of the \debug parameter

  • added flag icons for the available languages in the options

  • fixed some issues with disassembling of the VCS SCM format

v. 3.06 - Jun 17, 2013

  • added new operators ++ and --

  • added support for block comments /* */

  • SASCM.INI got an update from the GTAG Database

  • replaced properties Actor.Armour and Actor.Car with their correct versions Actor.AddArmour and Actor.MissionCar

  • added a new property Actor.CurrentCar for the opcode 03C0 in the SA and VC classes.

  • added new hotkeys Ctrl+Num+ and Ctrl+Num- to quickly change the text size

  • Sanny Builder now remembers a number of closed files for the option Load all closed files

  • fixed a bug when the compiler failed to compile a source with multiple HEX..END constructs

  • fixed a bug of version 3.05 when the program hung on startup trying to open a file

v. 3.05 - Jun 5, 2013

  • added new translations for the following languages: Finnish, Polish, Hungarian, Turkish, Ukrainian

  • the CLEO library updated to version 4.1.1.30f (CLEO 4 by Alien)

  • added a possibility to install CLEO for GTA III and Vice City (made by Alien)

  • opcode files (**SCM.ini, opcodes.txt) replaced with the ones from the CLEO 4 library installation

  • new command line parameter \nosplash

v. 3.04 - Aug 17, 2008

  • the editor is able to to convert hexadecimal numbers to decimal ones and vice versa (Ctrl+H), and convert the model names to their IDs (Ctrl+Alt+H)

  • removed a warning message about script.img being used by the game when compiling a CLEO script

  • the post-compilation report shows the size of a CLEO script (as Largest script)

  • fixed a bug when compiling an array with constant numeric indexes

  • the installer no longer requires the system administrator rights

v. 3.03 - Nov 17, 2007

  • the previous version of CLEO had a bug

  • minor changes (the toolbar position wasn't saved)

v. 3.02 - Nov 16, 2007

  • new version of the CLEO library

  • main toolbar is movable

  • the Compile+Copy feature (F7) does not create a copy of the output file if the source has $E or $CLEO directives

  • during a compilation run after pressing F6, the output file for a source file with the $CLEO directive

    is created in the same directory; after F7 the output file is created in the CLEO directory (similarly to SCM files)

  • new translations: Italian, Portuguese

v. 3.01- Aug 6, 2007

  • bug-fixes update

v. 3.00 - Aug 4, 2007

  • the CLEO 3 library is integrated into Sanny Builder

  • disassembler supports the SCM format of Vice City Stories

  • constants support

  • new directives $INCLUDE,$EXTERNAL,$CLEO

  • writing of the additional info to the end of a script file

  • custom arrays support

  • a possibility to decompile SCM files having no header

  • an ability to create an external script named AAA

  • a new command line parameter \compile

  • a possibility to use a floating-point value as the counter value in a FOR..END loop

  • dropped support for the commands WriteMem and ReadMem

  • a possibility to use regular expressions when searching

  • a possibility to save a source file in the RTF or HTML formats

  • an ability to skip the splashes at SA startup

  • a new key combo Ctrl+Enter

  • updated SASCM.INI

v. 2.99e - Jan 1, 2007

  • fixed a bug when parts of the code within the HEX..END construct disappeared in debug mode

  • a HEX..END construct now accepts the aDMA type and string literals

  • a FOR loop accepts model identifiers as the counter values

v. 2.99d - Dec 3, 2006

  • Memory Hacker became a separate tool.

  • fixed a decompiler bug

v. 2.99c - Nov 30, 2006

  • added the Memory Hacker plug-in

  • disassembler supports the SCM format of Liberty City Stories

  • support for constant numbers as indexes of global arrays

  • a global variable gets disassembled with the type aDMA (&) if its address is not divisible by 4

  • the compiler uses default values during compilation of amain.scm with the missing header segments (DEFINE XXX)

  • a possibility to Drag&Drop a file into the editor to open it

  • new preprocessor directives: {$VERSION}, {$VERSION_RESTORE}

If you get a compiler error message like Unknown directive xxxx when compiling the sources from v2.99, replace the line {$VERSION xxxx} to any place after the header, for instance before the comment //-------------MAIN---------------

v. 2.99 - Sep 27, 2006

  • added new commands WriteMem and ReadMem

  • support for hexadecimal numbers

  • HEX..END statement accepts labels and global variables

  • full support for the ADMA datatype

  • an opportunity to give custom names to labels

  • an opportunity to choose a different case for custom names and strings

  • added console to switch debug options

  • decompiler supports GXT files of GTA III & GTA VC

  • added escape sequences in long string literals

  • information about INI file (version, author, date)

  • classes support the original order of the parameters (like in SASCM.INI by PLPynton). The script should have a line {$VERSION x.0.xxxx} to support such order, see comments in the INI about this

  • added option to confirm an exit from the program

  • a dropdown menu to switch edit modes

  • converting of the selected piece of code

  • an opportunity to pass the current file name to an external tool

  • corrected some mistakes in the configuration files

  • removed auto-casting of an integer number to the float one when a variable is declared as Float. Now the compiler chooses an opcode depending on the number type only (in math expressions without opcodes)

  • reading/writing of the player's z_angle in Coord Manager; quick insertion of the z_angle value in the script by pressing Ctrl+Shift+E (for SA)

The following opcodes were changed in SASCM.INI: 0181, 00c3, 00c4 in order to support the commands WriteMem and ReadMem. The original scripts did not use these opcodes and the unmodified games do not implement them so it should not break existing scripts.

The class member Car.SetSpeedInstantly was named incorrectly (with a wrong opcode) in the classes.db for SA. If you get an error message about this method during compilation, rename it toActor.DrivingPlane. We apologize.

v. 2.98 - Aug 4, 2006

  • Sanny Builder became multilingual

  • added menu for external applications

  • a special version of Opcode Search Tool has been built into SB. The details can be found in the file OST Readme.txt

  • validating math expressions during disassembling when Write opcodes is disabled (to ensure that opcodes are used properly)

  • an opportunity to choose a script.img file manually if the folder with the main.scm file does not have one

  • an opportunity to add a new code template directly from the editor; added template descriptions

  • the list of models can be sorted alphabetically/by value (Alt+S when the list is active)

  • minor corrections and changes

v. 2.97 - Jun 11, 2006

  • new data type: & for direct byte address (ADMA).

  • minor updates

v. 2.96 - Apr 1, 2006

  • improved the jump to label option

  • added an opportunity to show the list of templates

  • added an option to replace mission numbers with their names

  • fixed some bugs

v. 2.9f - Feb 18, 2006

  • the DEFINE OBJECT list is now optional (the compiler can make it out of model names used in the script)

  • support for block comments {}

  • keypress recording

  • minor changes

v. 2.9 - Dec 15, 2005

  • added additional commands

  • new operator IN

  • added IF..THEN..ELSE..END

  • added support for WHILE and REPEAT loops

  • added support for nested loops

  • added a new function Alloc, allowing to assign a specific memory address to a global variable

  • new comment style: //

  • the editor now remembers the position of markers and the cursor in closed files

v. 2.6 - Nov 5, 2005

  • full support of SCM formats of Vice City and GTA 3

  • an opportunity to declare variables and arrays as class instances

  • added a feature to display the list of variables and labels

  • added loops (FOR..END)

  • minor changes:

    • missions can be referenced by their name (start_mission MYMISSION where MYMISSION is the label defined in lineDEFINE MISSION XX at @MYMISSION)

    • Ctrl+Space displays the list of imported models (DEFINE OBJECT)

    • new operator <>

    • if the disassembler can't find a script.img file, it uses the one from the game folder

    • added handle type for arrays

    • an opportunity to switch off a warning that the script.img file is being used by the game

v. 2.5 - Oct 10, 2005

  • added properties support

  • added code templates support

  • added construction VAR...END for variables declaration

  • all math commands can be used without opcodes (0004..008B)

  • new operators < and <=

  • added a capability that the compiler itself set necessary value for the IF command

  • added extended parameters support

  • added models list showing

  • minor changes and fixes

v. 2.0 - Sep 18, 2005

  • added classes support

  • added keywords support

  • some math commands can be written without opcodes (e.g.0004, 0005, 0006, 0007, 0038, 0039, 0042, 0043)

  • for the opcode 00D6 the default parameter is 0 (if = if 0)

  • added the option to customize labels output

  • added keywords True and False which correspond to 1 and 0

  • added construction HEX...END for writing hexadecimal values directly in a binary output

v. 1.1 - Sep 7, 2005

  • added coords manager

  • some bugs fixed

v. 1.0 - Sep 4, 2005

  • new format of labels

  • added converter from the BW's SA Mission Builder syntax

  • disassembler adds the model names and the text from american.gxt in a source file

  • added new options

  • fixed some bugs

v. 0.8 - Aug 20, 2005

  • added an ability to associate SCM files with Sanny Builder

  • disassembler adds an additional index to the file name if a file with the same name already exists (e.g, if main.scm.txt already exists, a new file will be main.scm[0].txt)

  • more informative error messages

  • added a check for duplicated labels

  • fixed some bugs

v. 0.7 - Aug 10, 2005

  • added new options for text editing

  • added an ability to work with multiple files simultaneously

  • added a function to auto-complete an opcode with the F1 button (beta)

v. 0.6 - Aug 4, 2005

  • disassembling support for GTA SA SCM format

  • compilation of text sources into main.scm and script.img

  • basic features for text editing

PreviousCreditsNextData Types

Last updated 3 months ago

Kudos to XMDS for contributions to this release.

Kudos to wmysterio and XMDS for their contributions.

Kudos to MatiDragon and Wesser for updated translations.

Kudos to darkdraggy for reporting the first bug and helping to test the fix.

Kudos to marcelo_20xx and fastman92 for their awesome contribution to this release.

Kudos to OrionSR, ZAZ, XMDS, and Wesser for their awesome contribution to this release.

👏
👏
👏
👏
👏
👏