Tip
Starting with this release, we publish universal ("fat") binaries for macOS, so they'll support x86-64 and newer ARM (“Apple Silicon”) CPUs!
⚠️ Deprecated
- Treating multi-character strings as numbers (you can use a single 32-bit character mapping instead)
Added
- RGBASM
-soutputs a "state file", listing the values of (non-label) symbols when finished assembling - RGBASM
-Wpurgewarns when purging exported symbols or labels - Symbols can have non-leading
$characters (so an interpolatedprefix{numeric}symbol works) - Symbols can have the same names as reserved keywords by prefixing them with a
# CHARMAPcan map characters to sequences of multiple values, with values not limited to 8 bits- A string constant
.(period) which expands to the current global label scope - A string constant
..(two periods) which expands to the current fully-qualified local label scope (e.g.Global.local) 0x,0b, and0oprefixes for hex, binary, and octal numbers (in addition to$,%, and&)BITWIDTH(n)returns the number of bits necessary to represent nTZCOUNT(n)returns the count of trailing zero bits of nEXPORT DEFdefines and exports a numeric symbol in a single linePUSHC nameacts likePUSHCfollowed bySETCHARMAP namePUSHS ...acts likePUSHSfollowed bySECTION ...PUSHO ...acts likePUSHOfollowed byOPT ...ENDLis explicitly optional, but with an opt-in-Wunterminated-loadwarning about itcplcan also be written ascpl a- Allow a
no-prefix to negate "meta" warnings (-Wno-all,-Wno-extra,-Wno-everything) - Allow
-Wno-error=...to override-Werror(including for "meta" warnings) - RGBLINK supports e.g.
ROMX FLOATINGin linker scripts, which allows assigning a section to no particular bank (this is generally only useful with SDCC object files) - RGBLINK's
.symfile now includes exported numeric constants (if this breaks your tools, please check the.symspecification!) - RGBGFX
-i/--input-tilesetuses a given tileset instead of generating all the tiles itself - RGBGFX
-r 0infers a valid width for the reversed image - RGBGFX
-Xor-Yonly mirror tiles horizontally or vertically (-X -Yacts like-m) - The contrib/view_palettes.sh script lets you render a GBC
.palfile as an image
Changed
- Macro invocations can be at column 1, the very start of a line
LOW(Label)can be constant ifLabelis aligned to 8 or more bits!exprcan be constant 0 ifexprhas any non-zero bits- Error messages for undefined symbols mention if the symbol was previously purged
- Sections that grew too big are reported after the whole assembly file has been processed
- When RGBLINK encounters an unknown symbol, it lists the potential un-exported symbols by that name
- RGBLINK reports source locations for conflicts between object files
- RGBGFX
-rgives a detailed warning if-cand-pmismatch; improved several other error messages too LOW()andHIGH()have their own RPN operators in the object file (this should lead to nicer output fromrgbobj)- Clarified a lot of documentation, including for fixed-point numbers and macros
- Explicitly document that
FMODbehaves differently than% - Increment object file revision number to 11
- Tests can be run with CTest if you use CMake
Fixed
Label & CONSTANTwas not actually doing the&operation!- Some nonsensical uses of empty local labels (
Global.) were ignored - Many bugs prevented SDCC object files from being processed correctly (special thanks to @RubenZwietering for helping with bugfixing and testing!)
- Crash when assembling a nonexistent file
- Crash when
INCLUDEing an unbounded-size file (e.g./dev/urandom) - Crash when passing an object file with invalid patch offsets to RGBLINK
- Crash when specifying palette files within RGBGFX at-files
- Crash when reversing an image if the tilemap referred to nonexistent tiles
- Multiple bugs with parsing text palette files (GPL, HEX, and PSP)
- Palette generation was suboptimal, potentially failing to fit within 8 palettes
- Tiles with too many colors were being detected incorrectly
- Maximum number of palettes wrapped around after 255
- Allow text palette files to have the maximum number of colors
- Allow tab character after backslash for line continuation
-Walldid not enable-Wcharmap-redef-Wnested-commentwas undocumented- Building works on BSD systems
- Building works on systems with bison 3.8.0