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")CHARLENandCHARSUBfor working with charmap output unitsOPT L,OPT W, andOPT hREDEF 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 helpwill list the accepted MBC namesrgbfix -maccepts$-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! STRSUBandCHARSUBallow 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
$ff00inld [$ff00 + c], aandld a, [$ff00 + c]; and arbitrary whitespace, line continuations, and block comments are allowed
Removed:
LOAD FRAGMENThad buggy behavior, and its use cases can be done differently
Fixed:
- Symbols in some
SECTION UNION/FRAGMENTcould 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
jrcould be incorrect withinSECTION FRAGMENTPUSHSdidn't reset the section scope correctly (regression), and didn't save theLOADstateREDEF EQUShad 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.