RGBDS's major version number is finally going to increment from 0 to 1! As of this release, we'll stick to semantic versioning, so that any future breaking changes will require a major version update, new features will be a minor version, and bug fixes will be a patch version. That should make it easier to manage RGBDS version compatibility for assembly projects. (And if a "version 2.0" does eventually come after this one, it might be rewritten in Rust.)
This is a release candidate to help people test it out early, and make sure we won't need to release a 1.0.1 bugfix immediately afterwards.
Removed
- Treating multi-value strings as numbers, and the
rgbasm -Wnumeric-stringwarning about doing so ldio [c], a/ldio a, [c], andld [c], a/ld a, [c](useldh [c], a/ldh a, [c]instead)ldh [$xx], a/ldh a, [$xx](useldh [$FFxx], a/ldh a, [$FFxx]instead)
Deprecated
- Treating single-value strings as numbers (use
'c'haracter constants or theCHARVALfunction instead) - 1-indexed string functions
STRIN,STRRIN,STRSUB, andCHARSUB(use 0-indexedSTRFIND,STRRFIND,STRSLICE, andSTRCHARinstead) rgbfix -O/--overwrite(use the-Wno-overwritediagnostic flag instead)
Added
- Error/warning output is $\normalsize{\textsf{\color{#ff0000}c\color{#ff8000}o\color{#cccc00}l\color{#00aa00}o\color{#00aaaa}r\color{#4444ff}f\color{#6600cc}u\color{#ff00aa}l}}$ by default when sent to a terminal; control it with
--color always/never/auto, or theNO_COLORorFORCE_COLORenvironment variables - Add a question mark after
macro?,rept?,for?,include?or macro invocations likemy_mac?, to "silence" them, excluding them from error/warning location backtraces -
::can joindb/dw/dl/dsdirectives as well as instructions onto one line -
CHARVAL(str), without an index argument, gets the numeric value of a single-character string -
OPTallows an optional dash before flags to be more like the CLI (e.g.OPT -Wno-obsolete) -
-B/--backtraceconfigures location backtraces for error/warning messages in RGBASM and RGBLINK -
-v/--verbosehas multiple levels for RGBASM and RGBLINK too, not just RGBGFX
(RGBFIX's functionality is too simple to need verbose debug output, and it uses the-vflag for something else already) -
rgbasm -Wexport-undefinedwarns when youEXPORTan undefined symbol (enabled by-Wall) -
rgblink -Wtruncationsupports warning levels=0,=1, or=2, same asrgbasm -Wtruncation -
rgbgfx -c autoexplicitly specifies to use the automatic palette generation algorithm -
rgbgfx -c dmgis short forrgbgfx -c dmg=e4
Changed
- Underscores in integer constants can go after the base prefix, between digits, or before the fixed-point
qsuffix, but cannot be multiple in a row or trailing - Too-large integer constants get evaluated as 0
rgbasm -Wlarge-constantis enabled by default instead of by-Wall- Reformatted and rephrased some error messages; in particular, location traces are now indented and have one file location per line
Fixed
- Division and modulo were off by one for very large negative numbers
- Exporting an undefined symbol is now an error
- Line numbers after using "nested" macros were incorrect
Macros can be "nested" by defining the inner macro within anEQUSand expanding it - Interpolation would fail after an empty string literal (
""{example}) qcould be repeated in fixed-point format specs (e.g.STRFMT("%qqq16f", 3.14q16))- Character literals would be misread after invalid "garbage" characters
- "while expanding symbol" error backtrace was printing the symbol's contents instead of its name
- Too-large integer constants would print a
-Wlarge-constanterror for every subsequent digit - RGBASM's Bash completion script supports
-MC - RGBLINK supports .rel object files generated by SDCC 4.4.0 and later (
XL4instead ofXL3)
Thanks to @Rangi42 and @ISSOtm for the work done for this release.