v0.9.0-rc2
Pre-release
Pre-release
github-actions
released this
22 Oct 03:14
·
18 commits
to master
since this release
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
-s
outputs a "state file", listing the values of (non-label) symbols when finished assembling - RGBASM
-Wpurge
warns 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
#
CHARMAP
can 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
, and0o
prefixes 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 DEF
defines and exports a numeric symbol in a single linePUSHC name
acts likePUSHC
followed bySETCHARMAP name
PUSHS ...
acts likePUSHS
followed bySECTION ...
PUSHO ...
acts likePUSHO
followed byOPT ...
ENDL
is explicitly optional, but with an opt-in-Wunterminated-load
warning about itcpl
can 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 FLOATING
in linker scripts, which allows assigning a section to no particular bank (this is generally only useful with SDCC object files) - RGBLINK's
.sym
file now includes exported numeric constants (if this breaks your tools, please check the.sym
specification!) - RGBGFX
-i/--input-tileset
uses a given tileset instead of generating all the tiles itself - RGBGFX
-r 0
infers a valid width for the reversed image - RGBGFX
-X
or-Y
only mirror tiles horizontally or vertically (-X -Y
acts like-m
) - The contrib/view_palettes.sh script lets you render a GBC
.pal
file as an image
Changed
- Macro invocations can be at column 1, the very start of a line
LOW(Label)
can be constant ifLabel
is aligned to 8 or more bits!expr
can be constant 0 ifexpr
has 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
-r
gives a detailed warning if-c
and-p
mismatch; 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
FMOD
behaves differently than%
- Increment object file revision number to 11
- Tests can be run with CTest if you use CMake
Fixed
Label & CONSTANT
was 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
INCLUDE
ing 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
-Wall
did not enable-Wcharmap-redef
-Wnested-comment
was undocumented- Building works on BSD systems
- Building works on systems with bison 3.8.0