v0.5.1
github-actions
released this
09 May 03:34
·
1000 commits
to master
since this release
Don't forget to check out our docs for more details on the updated functionality!
Added:
- RGBFIX now supports the homebrew TPP1 mapper! (The emulators BGB 1.5.9 and SameBoy 0.14.3 do too)
- New
\<10>
and\<num_sym>
macro arg syntaxes SIZEOF("section")
andSTARTOF("section")
CHARLEN
andCHARSUB
for working with charmap output unitsOPT L
,OPT W
, andOPT h
REDEF EQU
- Linker scripts can use character escapes in section names (
"\n \r \t \" \\"
) - RGBFIX now reports when it's overwriting non-zero header bytes, helpful for spotting mistakes (thanks @GreenAndEievui!)
rgbfix -m help
will list the accepted MBC namesrgbfix -m
accepts$
-prefixed hex literals
Changed:
- Parentheses in macro args implicitly escape commas now, like C. For example,
macro STRCAT("foo", "bar")
used to be 2 arguments, now it's only one! STRSUB
andCHARSUB
allow negative start positions, relative to the end of the stringSTRSUB
's second parameter can be omitted to read until the end of the string- A lot more errors are non-fatal now
- Any constant expression equal for $FF00 can be substituted to
$ff00
inld [$ff00 + c], a
andld a, [$ff00 + c]
; and arbitrary whitespace, line continuations, and block comments are allowed
Removed:
LOAD FRAGMENT
had buggy behavior, and its use cases can be done differently
Fixed:
- Symbols in some
SECTION UNION
/FRAGMENT
could be missing from the .sym file - Interpolations could recurse infinitely outside of strings
ld hl, sp - <expr>
was broken in 0.5.0 (workaround:ld hl, sp + -<expr>
)$ff00 + constant
(or any symbol name starting with "c") would cause a syntax error since 0.4.2 (workarounds:($ff00) + constant
,constant + $ff00
, or$ff00 + /**/ constant
)- Fixed a lexer bug that could crash RGBASM on "piped" input files
jr
could be incorrect withinSECTION FRAGMENT
PUSHS
didn't reset the section scope correctly (regression), and didn't save theLOAD
stateREDEF EQUS
had a few bugs- RGBFIX incorrectly parsed options on some platforms
- RGBLINK should no longer leak memory
- Fixed some compiler warnings, notably on 32-bit platforms and macOS
- The source now uses
_ISO_C11_SOURCE
; this notably fixes building on FreeBSD (see #789 for more info)
Attention downstream packagers
An "annex" program, rgbobj
, has been developed as an equivalent of objdump
for RGBDS. It's not integrated with the rest of the codebase, as it's written in Rust. If you are distributing pre-built binaries, you may want to bundle it with RGBDS regardless.