Skip to content

Releases: gbdev/rgbds

v0.4.0

03 Apr 16:52
Compare
Choose a tag to compare

Very big release! This includes a lot of bug fixes, large portions of the code rewritten, and some features deprecated or removed. We hope not to break anyone's code, but we won't keep bugs for compatibility's sake. If your code broke and the change isn't in the list below, please open an issue in our tracker.

New:

  • Added warning flags to RGBASM: by default, most warnings are disabled now. Please see man rgbasm for more info
  • "LOAD blocks" simplify writing code that should run in RAM; users of unofficial program rgbbin may want to look into this
  • Shiny new assertions, whose checking can be deferred to RGBLINK
  • "Unionized" sections offer a sort of cross-file UNION
  • More flags in the RGBASM -M family for better automatic dependency management
  • Bracketed symbols can be nested (example)
  • SHIFT can now shift multiple times at once
  • Long options (such as --version for -V) have been added to all programs
  • RGBASM now accepts escape \r in strings
  • INCBIN now works with unseekable files as well

Deprecations and removals:

  • As part of a cleanup effort, features previously marked as deprecated have been removed, such as the CODE section type
  • Labels not starting with a dot nor followed by a colon have been deprecated; in a future version, they will be treated as macro invocations
  • Deprecated OPT z in favor of new and more consistent OPT p
  • Deprecated GLOBAL symbol (and its synonym XDEF), as it has the same effect as EXPORT
  • Removed "section-local" charmap (deprecated in 0.3.9)

Changes:

  • .sym and .map files are now output sorted
  • The argument to rst does not need to be known to RGBASM anymore (so labels can be used at all times)
  • Only labels may have dots in their name now
  • Labels beginning with a dot may have whitespace before their declaration
  • DEF() now accepts labels as arguments
  • ROMX and WRAMX sections can be used in RGBLINK's -t and -w modes, respectively
  • RGBLINK will report more detailed "error stacks", like RGBASM
  • RGBASM tries harder to treat expressions as "constant"
  • Second byte of stop can be specified without resorting to using db

For further information on new or changed features, please refer to our documentation.

Fixes:

  • gbz80(7) had incorrect flag descriptions for sub
  • Arguments to RGBASM -i have a / implicitly appended if they don't end with one
  • = was treated as identical to set, so = 7, [hl] was valid; this has been fixed
  • Corrected wrong line reporting with REPT blocks
  • Changing sections now resets the label scope
  • Built-ins and symbols referenced in link-time expressions can no longer be PURGEd
  • __ISO_8601_UTC__ and __ISO_8601_LOCAL__ symbols fixed on Windows (with a caveat for the latter)

Notes:

  • RGBDS is now compiled with optimizations by default. To disable optimizations, use make CFLAGS=-O0. To compile in "debug mode", build using make develop instead of make; this requires a fairly specific configuration, though, and might not work for you.
  • Performance of RGBASM and RGBLINK should have been improved (beyond the above), but we would need help from someone experienced with YACC / Bison to make more significant changes
  • Reliability across systems and platforms has been improved:
    • RGBASM parser grammar has been cleaned up
    • Undefined behavior has been removed from various programs
  • Nightly builds are available for each commit now ("Actions" tab ⇒ "Regression testing" ⇒ click on the commit name)
  • Docs have received an overhaul, including a more responsive and mobile-friendly styling
  • General system stability improvements to enhance the user's experience

v0.3.10

21 Mar 21:00
Compare
Choose a tag to compare

This release is merely a hotfix for 0.3.9 that undoes the mistake that __RGBDS_MAJOR__ etc. symbols were not being defined. Please upgrade from 0.3.9.

v0.3.9

01 Nov 17:09
Compare
Choose a tag to compare

IMPORTANT
This version is missing definitions of the __RGBDS_MAJOR__ etc. symbols. Please use 0.3.10 instead, which rectifies this problem (and does not introduce additional changes).

rgbasm:

  • Enforced non-overwritability of some symbols
  • - now allows assembling a file from stdin
  • Allowed PUSHS to be used before a section declaration
  • Prevented generating symbols with invalid names using macros
  • Fixed the precedence of the == operator
  • Added different output formats to bracketed symbols
  • Fixed a parsing bug with some nested if constructs
  • Improved error reporting now reports actual file line numbers as well as string expansions
  • Added multiple charmaps (be careful as some feature has been deprecated, a warning has been added about it)
  • Fixed bug with line numbers in some IF/ELIF/ELSE blocks
  • Added configurable recursion limit to prevent infinite loops
  • Fixed unary NOT being a no-op on constant expressions
  • Made behavior consistent whether outputting a .o file or not
  • Allowed tabs to be used before line continuations
  • Allowed sections without content to be placed anywhere
  • Made error message more explicit with macro argument 0

rgblink:

  • Improved many error messages

rgbgfx:

  • Added an option to use the GBC's color profile

other:

  • Added more tests
  • Did some internal cleanup
  • Improved cross-platform compatibility of test suite

Also fixed a lot more bugs and crashes in rgbasm and rgblink.

v0.3.8

19 Feb 23:42
Compare
Choose a tag to compare
  • rgbasm and rgblink

    • Report correct filename and line number of symbols in error messages.
    • Fix long-standing issue of ambiguity in constant parsing.
    • Fix behaviour of parser regarding newlines and \.
  • rgbfix

    • Fix regression on calculation of ROM checksum.
  • Other

    • Documentation updates and cleanups.
    • Some new tests.
    • Re-enabled OS X build CI job.

v0.3.7

02 May 19:08
Compare
Choose a tag to compare
  • rgbasm and rgblink

    • Allow JR to numeric constants.
    • Fix behaviour of @ (including fixing the bug introduced in 0.3.6 related to JR).
  • Other

    • Create target with most GCC warnings enabled for debug purpopses.
    • Several extra checks in the code.

v0.3.6

20 Mar 20:23
Compare
Choose a tag to compare
  • rgbasm and rgblink

    • Fix HIGH() and LOW() for constants.
    • Added PRINTI to print integers in decimal format.
    • Allow JR between sections.
    • Allow to continue lines with character \.
  • rgbgfx

    • Add support for colored images.
  • rgbfix

    • Allow more flexibility when fixing the header.
  • Other

    • Document character maps, fix typos in manpages.
    • Add .css file to the documentation.
  • Known bugs:

    • The identifier @ is off by one in this release compared to previous releases.

v0.3.5

28 Jan 13:20
Compare
Choose a tag to compare

Release 0.3.5 of RGBDS:

  • Fix linkerscripts bugs introduced in v0.3.4.
  • Move documentation to this repository.
  • Code in the repository re-licensed under the MIT license.
  • Add a new rgbasm test. Test external projects as part of the CI regression tests.

v0.3.4

23 Jan 20:52
Compare
Choose a tag to compare

Release 0.3.4 of RGBDS:

  • Reintroduce __LINE__ and DL.
  • Fix NOT operator.
  • Huge cleanup of the codebase.
  • BANK() now works with the name of sections, and it can be used with no arguments to request the bank number where the code is located.
  • Convert markdown files to reStructuredText, add CONTRIBUTORS.rst file.
  • PUSHS and POPS also affect label scope.
  • Improve some error messages.

Known bugs:

  • WRAMX sections may not link correctly if a linkerscript is used.

v0.3.3

16 Sep 10:33
Compare
Choose a tag to compare

Release 0.3.3 of RGBDS:

  • Add support for unions.
  • Add code to detect the version of the binaries.
  • Minor improvements to error output.

v0.3.2

09 Jul 09:40
Compare
Choose a tag to compare

Release 0.3.2 of RGBDS:

  • Child labels can be referenced outside their scope through the parent label, even from other files (if they are made global).
  • Minor bugfixes.