v0.4.2
New:
- We have a website! Accordingly, HTML documentation is no longer distributed in the source or in the release artifacts below. All old documentation links now redirect to the latest release's documentation
- You may also have noticed the repo has been moved to gbdev instead of rednex! Don't worry, the same people are in charge.
- /* Block comments! */
- Whitespace is now allowed between the brackets in
[bc]
,[de]
and[hl]
, also allowing[\1]
to work. - The second number argument to
INCBIN
can now be omitted, going up to the end of the file - The argument to
rb
andrw
is now optional, defaulting to 1 - RGBASM and RGBLINK can both use
stdin
as input, andstdout
as output (support yet to come to RGBFIX) zsh
completion scripts are available in thecontrib/
folder. (If you want to make bash ones, apply in #620)
Changes:
- Nested macros are now invalid, but a workaround is possible
- The lexer has been fully rewritten, which should make additions to it easier, and improve performance
- Removed arbitrary limits on charmap size and name length
STRSUB
will no longer warn when taking 0 characters at the end of the string- RGBLINK will no longer report errors stemming from other errors
- RGBASM is now able to write more
jr
s without relying on RGBLINK, leading to smaller.o
files and faster linking INCBIN
should produce a slightly more useful error message- A bunch of quality-of-life improvements for downstream packagers, especially using CMake
- Assertions have been removed from release builds, improving performance slightly
charmap
s now allocate memory as nodes are allocated, greatly reducing their size (by a factor of ~8)- Documentation now mentions that
SHIFT
updates_NARG
Fixes:
- Two 6+ year-old crashing bugs have been fixed. They were thankfully rare, but should no longer be a problem now.
LOAD
blocks could produce incorrect output when at the beginning or end of a section__FILE__
caused syntax errors if the file name contained a quotejr
in certain circumstances could crash RGBLINK- Fixed inconsistent version numbering between the Makefile and the CMakeLists
- Documentation failed to mention
SECTION FRAGMENT
- Documentation incorrectly listed bit 7 of symbol type as being the unionized section flag, and failed to mention the section fragment flag
- Documentation erroneously used to claim that symbol names could begin with a digit
- Error out when using
align
outside of aSECTION
, or when usingshift
outside of a macro... instead of crashing - Fixed a potential RGBASM crash with very large expressions
- Fixed overwriting a builtin symbol succeeding after insisting enough
- Fixed a crash when subtracting two invalid labels
- Fixed using
_NARG
outside of a macro crashing RGBASM
Note to Windows users
Release 0.4.1's binaries were compiled with MSVC instead of MinGW, giving apparently better results. Unfortunately, there is currently a problem with MSVC (not that we can do anything about it, yay!), so the binaries below are MinGW again. 0.4.3 should be compiled with MSVC again, though.