-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Description
Download
Features
- debugger for SCM scripts
- implement Function Syntax RFC #263 (
function..end)- function annotations with
/// - language service support (local vars highlighting, autocomplete, showing param descriptions)
- string arguments
- documentation
- function annotations with
- initial support for Modules RFC #264
- compiler support for Custom CLEO Header
- import and export commands
- disassembler support
- documentation
- First-class support for the Sanny Builder Library files #170
- new SBL modes for GTA III, VC and SA See the difference between legacy and SBL modes
- delete SA SCR mode (use SA SBL mode instead)
- Delete extensions.txt and use SBL JSON #271
- use of CLEO extension (via
{$USE CLEO}or{$CLEO}) also enables all standard CLEO extensions (bitwise, ini, file, debug, memory) - don't use keywords.txt when disassembling a file with SBL data available #305
- docs
- language features and improvements
- Binary Number support #31
- Support for switch statement
- Improve string ergonomics #255
- allow keywords in expressions #243
- Variable declaration and type conversion not working in single line #320
- Argument order important for equality operators #321
- support enum syntax in keywords/opcode commands (e.g.
clear_mission_audio MissionAudioSlot.Slot1) - allow custom variable declaration in SCM missions and external scripts (#284)
- document new hotkeys and error codes
- new tabs Support for tabs scroll 📑 #121
- can reorder and pin tabs
- context menu with various closing options (Close Others, Close to the right)
- Open in Windows Explorer
- themes updates for 4.0 themes#14
- Keep last active tab when Sanny starts
- increase max number of tabs restored at startup from
8to24
- New hotkey Ctrl+Shift+T to reopen Last closed file
- Make language service aware of the new
$INCLUDE_ONCEdirective added in 3.9.0 - remove the ability to put the mouse cursor past the end of line (Potential improvements and features #253)
Bug Fixes
- Compiler now correctly reports Max Main size for SA Mobile (270,000 instead of 200,000)
- When decompiling a file that was previously open in Sanny with different edit mode, current edit mode should not switch
- fix cast assignment operator (
=#) not working with arrays - Compiler incorrectly treats string literals with some characters #66
- ⚠ SB cannot decompile and compile a main.scm (unmodified) #186 (new Strict IF validation option, disabled by default)
- array name could be a constant #250
- Normalize VAR section before outputting ALLOC in decompiled file #272
- disassembler should only ALLOC used global variables #286
- Compiler should throw if too many parameters are given #150
- invalid result when indexing adma variable #278
- crash during SBL update #288
- inconsistent result of var declarations #289
- VCS main.scm does not compile due to a syntax error in callable functions 99RED...()
- see the Breaking changes section. main.scm needs to be disassembled again, or all
99REDhave to replaced with_99RED
- see the Breaking changes section. main.scm needs to be disassembled again, or all
Third-party
-
update CLEO library to CLEO5removed from archive due to false virus reports - update CLEO+ plugin to v1.2.0
- update SASCM.INI
- new theme NeoDark by JaggerJam and Johnnie
- update some existing themes by @VitalRus95
- update Portuguese translation by @johnnie-br
- update Chinese translation by @BengbuGuards
Breaking Changes
- Alloc command allowed ADMA type as a noop command: e.g.
Alloc(&2, 4). Now this is a compile error. - Typed array elements allowed hexadecimal notation for
size: e.g.array(index,0xff)(float array of size 0xf). Now this is a compile error. - String literals in opcode argument now support escape sequences similar to strings inside hex..end. This behavior can be disabled with
SB3_COMPATdebug option - second argument in Alloc command is now required (previously was optional and 0 by default). This behavior can be disabled with
SB3_COMPATdebug option. - hardcoded indexes in opcodes 05B6, 0A66, 0A67, 0A68, 0A6E are no longer supported. This behavior can be disabled with
SB3_COMPATdebug option - constant can not be used in a new variable name (inconsistent result of var declarations #289)
const a = $100
int a = 0
is now a compile error (0090) in 4.0.0 beta.0
- variable and constant names can not match class names (
int carorconst car) is now a compile error) - callable labels starting with a number are now a syntax error. Previously you can do the following:
:1
1() // gosub @1
this won't compile now. It is still possible to reference such label using @ prefix (e.g. jump @1 or gosub @1)
Also disassembler checks script names (opcode 03A4) and if the name starts with a number, it prefixes all labels with an underscore (_). It should solve the compilation issue in the original script of Vice City Stories that has a script named '99RED'. All labels of this script now start with _99RED
Reactions are currently unavailable