Skip to content

v0.5.1

Compare
Choose a tag to compare
@github-actions github-actions released this 09 May 03:34
· 786 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") and STARTOF("section")
  • CHARLEN and CHARSUB for working with charmap output units
  • OPT L, OPT W, and OPT 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 names
  • rgbfix -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 and CHARSUB allow negative start positions, relative to the end of the string
  • STRSUB'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 in ld [$ff00 + c], a and ld 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 within SECTION FRAGMENT
  • PUSHS didn't reset the section scope correctly (regression), and didn't save the LOAD state
  • REDEF 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.