v0.5.0-rcCar
Pre-release
Pre-release
github-actions
released this
01 Apr 09:50
·
1078 commits
to master
since this release
April Fools! Please don't actually use this version for anything serious, it's 99% incompatible...
Don't forget to check out our docs (particularly gbz80.7) for more details on the updated functionality!
Please welcome two new contributors, @Rangi42 and @dannye! Rangi did more than half of the work on this release—our biggest one yet!
Changes since v0.5.0-rc2
:
- New revised syntax solves the long-standing debate of whether to align instruction operands or not
Deprecated:
_PI
wasn't useful, so it's deprecated nowPRINTT
,PRINTV
,PRINTF
andPRINTI
are obsoleted by the newPRINT
/PRINTLN
andSTRFMT
Known issues:
- Regression: Expanding
recurse EQUS "recurse"
orrecurse EQUS "\{recurse\}"
hangs rgbasm (#696) - .sym files miss some symbols from multiple SECTION UNIONs/FRAGMENTs (#809)
Added:
- New
MACRO <name>
syntax for defining macros! The old syntax will still be supported for a couple versions, but may eventually be phased out. - RGBFIX can now be used in pipelines! Example:
rgblink -o - obj/header.o obj/game.o | rgbfix -v -p0xFF >bin/dinos_with_lasers.gb
{symbol}
interpolation outside of strings, similar to macro args (differs from the pre-0.4.2 behavior!!)- More complex format specifiers are now allowed in symbol interpolations
- Anonymous labels
- Environment var
SOURCE_DATE_EPOCH
can be used for reproducible builds - Underscores can be used in numeric literals (e.g.
%1101_1110_1010_1101
) - New string functions
STRRIN
,STRRPL
andSTRFMT
\#
to get all of a macro's arguments"""
Multi-line string literals"""
FOR
blocks!BREAK
exitsREPT
andFOR
earlyPOW
andLOG
fixed-point functions**
exponent operator (for integers)REDEF
to redefineEQUS
much more convenientlyRL
has been reintroduced alongsideRB
andRW
LOAD UNION
andLOAD FRAGMENT
Changed:
- Syntax errors will now be more verbose! Be careful that YMMV depending on the Bison version that RGBASM was compiled with.
- Syntax errors are no longer fatal! If a line contains a syntax error, RGBASM will discard it and attempt to continue with the next line.
- RGBFIX's
-m
now accepts MBC names - More symbols will be available in the
.sym
and.map
files - Slack totals are now included in the
.map
files - Interaction of quotes and macro args should be more intuitive
ds
can now repeat patterns, not just a single byte- Global labels can now be indented, not just local ones
- Trailing commas are allowed for most "list" directives, such as
db
STRCAT
can now concat any amount of stringsLOAD
blocks cannot create ROM sections anymore (#576)ROUND
,FLOOR
andCEIL
fixed-point builtins were present but undocumented- Macro arguments can now be shifted by a negative amount, "un-shifting" them
- Macro args can now be empty, though this causes a warning
Removed:
GLOBAL
andXDEF
keywords (deprecated aliases ofEXPORT
)- Colon-less global labels
*
-commentsrgbasm -v
no longer prints the elapsed time (usetime
for that)
Fixed:
- Enabled several optimizations that should improve performance, especially RGBASM
SECTION FRAGMENT
s now respect their constraints at their respective beginnings, not as a whole- Line numbers could be incorrect on Windows
- RGBASM will explicitly reject more than one input file, rather than silently ignore them
- Macro args weren't ignored in block comments
- Fixed a rare crash with unterminated
REPT
/FOR
blocks - Fixed incorrect handling of text after
MACRO
,ENDM
andENDR
tokens - Can't start a new section if another with the same name has been
PUSHS
'd ds N, @
could produce incorrect resultsELIF
andELSE
were allowed afterELSE
.
was treated as a label- Performance of
gbdiff.bash
improved significantly - Defining an
EQUS
after referencing it is now an error - Passing
-t
and-O
to RGBLINK generated an output too large
Attention downstream packagers
Don't package this release, lol