Releases: gbdev/rgbds
v0.4.0
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 consistentOPT p
- Deprecated
GLOBAL
symbol (and its synonymXDEF
), as it has the same effect asEXPORT
- 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 argumentsROMX
andWRAMX
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 usingdb
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 toset
, 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
PURGE
d __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 usingmake develop
instead ofmake
; 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
v0.3.9
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
-
rgbasm
andrgblink
- 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
v0.3.6
-
rgbasm
andrgblink
- Fix
HIGH()
andLOW()
for constants. - Added
PRINTI
to print integers in decimal format. - Allow
JR
between sections. - Allow to continue lines with character
\
.
- Fix
-
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.
- The identifier
v0.3.5
v0.3.4
Release 0.3.4 of RGBDS:
- Reintroduce
__LINE__
andDL
. - 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
andPOPS
also affect label scope.- Improve some error messages.
Known bugs:
WRAMX
sections may not link correctly if a linkerscript is used.