Rangi
9b4b4a581b
Check for overflow in fixed-point precision suffix ( #1918 )
...
Fixes #1917
2026-04-07 17:06:54 -04:00
Rangi
11f6278d95
Refactor lexing of fixed-point numbers ( #1915 )
...
This incidentally fixes a bug with too-long fixed-point literals
that have precision suffixes.
2026-04-06 21:45:34 -04:00
Rangi
ede9405daf
Fix some fixed-point literal lexing issues ( #1914 )
...
- No fractional digits are necessary after the decimal point,
e.g. `42.` is valid instead of `42.0`
- Error messages refer to "fixed-point" not "integer" constants
- Test more carefully for lexing unrelated to underscores
2026-04-04 13:41:45 -04:00
Rangi
66e521e9e5
Factor out common error-handling functions for lexing numbers of different bases ( #1888 )
2026-03-19 15:32:25 -04:00
Rangi
41fe1d8f25
Correct error message for unconstrained sections with overlay ( #1879 )
2025-12-28 19:21:53 -05:00
Rangi
63a911e657
Specify -std=c++20 not c++2a ( #1877 )
2025-12-21 11:44:14 -05:00
Rangi
a9ab248fed
Improve some RGBGFX error messages ( #1876 )
...
* Improve some RGBGFX error messages
* Fix assertion failure on ambiguous transparent/opaque pixels
2025-12-19 13:00:05 -05:00
Rangi
e08de399db
Clarify usage versus encoding of jr and ldh ( #1875 )
2025-12-11 17:46:39 -05:00
Rangi
2666dcbc26
Remove exclamation marks and periods from error messages ( #1874 )
2025-12-10 11:50:33 -05:00
Rangi
b0e0dfc56e
Handle a missing -P/--preinclude file the same as an INCLUDE ( #1873 )
2025-12-08 14:39:34 -05:00
Rangi
33475e2c36
Factor out version-printing to usage.cpp ( #1870 )
2025-12-05 23:04:49 -05:00
Rangi
3631fab63c
Fix bug where an object's invalid ROMX bank of 0 could break rgblink ( #1868 )
2025-12-05 11:21:00 -05:00
Rangi
131bb97ebc
Fix some rgblink object file input bugs found via fuzzing with AFL++ ( #1867 )
...
- ID numbers (for fstack nodes, sections, symbols, patches, etc)
might be too large for their associated collection
- Enum values might be invalid
- Bank values might be out of range for their section types
2025-12-04 20:49:16 -05:00
Rangi
a6eb6457d8
Clarify documentation of rgbgfx -C/--color-curve ( #1864 )
2025-12-04 10:49:23 -05:00
Rangi
0d3276975e
Update test dependencies ( #1865 )
2025-12-04 10:29:40 -05:00
Rangi
d961c697d7
Update libpng to 1.6.51 ( #1862 )
2025-11-22 19:05:52 -05:00
Rangi
0f266d1c66
Specify more ASan options ( #1860 )
2025-11-16 17:11:09 -05:00
Rangi
8ab4602ae5
Add -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG to develop builds ( #1859 )
2025-11-16 13:11:08 -05:00
Rangi
35e5808423
Update rgbasm(5) docs based on @nummacway's feedback ( #1852 )
2025-10-31 18:36:53 -04:00
Rangi
f065243cd2
Enable RGBGFX's CLI "at-files" for all programs ( #1848 )
2025-10-22 17:05:59 -04:00
Rangi
7462bccb72
Move struct Palette into its own file ( #1850 )
2025-10-20 16:59:24 -04:00
Rangi
2873e0b8c8
Use musttail attribute to guarantee tail recursion ( #1849 )
2025-10-20 15:56:22 -04:00
Rangi
7733ccdeb6
Implement __SCOPE__ ( #1845 )
2025-10-04 16:41:21 -04:00
Rangi
634fd853d1
Factor out a single parseNumber utility function ( #1839 )
2025-09-22 15:15:24 -04:00
Rangi
c49a7d1e2f
Make CLI and OPT options -p and -Q more consistent ( #1834 )
2025-09-20 13:54:28 -04:00
Rangi
e31bcabbaa
Implement === and !== string comparison operators ( #1832 )
2025-09-19 14:06:36 -04:00
Rangi
67741ab428
Trim left space from macro args, even past block comments ( #1831 )
2025-09-19 13:44:18 -04:00
Rangi
e0a6199f83
Allow charmap to map 'characters' as well as "strings" ( #1830 )
2025-09-16 12:51:07 +02:00
Rangi
223b3d1921
More accurate 8-bit <=> 5-bit RGB color conversion ( #1827 )
2025-09-08 15:13:25 -04:00
Rangi
65d408eb5d
Document more about the RGBDS architecture ( #1809 )
2025-09-07 15:34:52 -04:00
Rangi
590d113e94
Use a vector of RPN values ( #1820 )
...
This is instead of byte-encoding them in a different way than the actual object output's RPN buffer
2025-09-03 14:42:37 -04:00
Rangi
ee1db0a582
Fix RPN patches for all commands ( #1819 )
2025-09-02 16:44:25 -04:00
Rangi
534a4efee4
Add 0/1/2 warning levels to rgblink -Wtruncation ( #1816 )
2025-09-01 15:35:53 -04:00
Rangi
531278961f
Require underscores to actually be digit separators ( #1812 )
...
Multiple, trailing, or next to decimal point are errors
2025-08-30 10:44:20 -04:00
Rangi
85176ef10a
Fix q format spec ( #1811 )
2025-08-29 14:23:49 -04:00
Rangi
02b880e1b0
Separate RGBFIX header fixing from CLI option parsing ( #1808 )
2025-08-28 12:28:08 -04:00
Rangi
3d155d5695
Some refactoring and cleanup ( #1806 )
...
* Use clang-tidy `misc-include-cleaner` for IWYU `#include` cleanup
* Use `std::optional<size_t>` instead of `ssize_t`
* Rename some functions in linkdefs.hpp
* Fix header order
2025-08-20 16:09:04 -04:00
Rangi
0c4c25b2d2
Add a little more test coverage ( #1805 )
...
Format main.cpp files more consistently
Add `make format` to run clang-format on everything
2025-08-19 15:26:23 -04:00
Rangi
b7e0783ae7
Implement ? suffix to "quiet" a context and exclude it from backtraces ( #1800 )
2025-08-18 21:34:58 -04:00
Rangi
272019beb0
Fix line numbers from nested expansions ( #1802 )
2025-08-14 11:13:50 -04:00
Rangi
db6793f444
Don't count single quote ' as garbage ( #1801 )
...
Also copy the "blank space" (space or tab) vs "whitespace" (space,
tab, or newline) convention from `<ctype.h>`
2025-08-14 10:10:59 -04:00
Rangi
9c3ce69180
Factor out shared backtrace code ( #1793 )
2025-08-12 17:56:54 -04:00
Rangi
50d0b101c3
Format linker script error backtraces the same way as others ( #1792 )
2025-08-12 16:58:17 -04:00
Rangi
7b405513d9
Make quote marks consistent in error/warning messages ( #1791 )
...
- "Double quotes" for strings (filenames, section names, CLI option arguments, etc)
- 'Single quotes' for characters and CLI option flags
- `Backticks` for keywords and identifiers (symbol names, charmap names, etc)
CLI option flags also have their leading dashes
2025-08-12 15:24:21 -04:00
Rangi
7df9c12a6c
Fix division and modulo for very large negative numbers ( #1790 )
2025-08-11 20:46:47 -04:00
Rangi
5f8b7474b4
Add -B/--backtrace option to RGBASM and RGBLINK ( #1787 )
2025-08-11 14:30:14 -04:00
Rangi
92a9c73ee7
Deprecate __DATE__ and __TIME__ ( #1786 )
2025-08-11 09:48:18 -04:00
Rangi
978e832914
Allow :: to join instructions *and* data declarations ( #1785 )
2025-08-11 08:04:42 -04:00
Rangi
e41ce49698
Only print one warning for too-large integer constants, not one per digit ( #1781 )
...
This also makes all too-large integer constants evaluate to 0.
2025-08-08 18:58:38 -04:00
Rangi
a4a830776b
Deprecate treating strings as numbers ( #1780 )
2025-08-06 10:13:22 -04:00
Rangi
39f0f9edc0
Remove previously deprecated features ( #1777 )
...
- Treating multi-unit strings as numbers
- `rgbasm -Wnumeric-string`
- `ldio [c], a` and `ldio a, [c]` (use `ldh`)
- `ld [c], a` and `ld a, [c]` (use `ldh`)
- `ldh [$xx], a` and `ldh a, [$xx]` (use `$FFxx`)
2025-08-05 16:24:10 -04:00
Rangi
23ce888d65
Use colored/styled text output for diagnostics and usage info ( #1775 )
2025-08-04 17:02:24 -04:00
Rangi
752b273aec
Extend RGBASM and RGBLINK verbosity flags to have multiple levels like RGBGFX ( #1772 )
2025-08-02 17:10:10 -04:00
Rangi
225490163e
Fix RGBGFX "decanting" on "components" (color sets sharing colors) ( #1768 )
2025-07-29 14:52:20 -04:00
Rangi
0df5b7b86d
Implement warning diagnostic flags for RGBFIX ( #1766 )
...
* Implement warning diagnostic flags for RGBFIX
* `-m/--mbc-type help` prints to stdout
* Support `-m list` as well as `-m help`
* Make invalid `rgbfix -l` characters a fatal error, like other invalid CLI arguments
* Refactor fix/main.cpp into multiple files
2025-07-26 12:11:52 -04:00
Rangi
7e151f16c3
Factor out a single PNG-reading function to encapsulate the libpng API ( #1765 )
2025-07-23 15:53:33 -04:00
Rangi
ad81c74cda
Support PNG-format palette spec files ( #1764 )
2025-07-21 11:33:16 -04:00
Rangi
2935942667
Allow multiple preinclude files ( #1763 )
2025-07-19 17:07:15 -04:00
Rangi
53c39d01d4
Implement READFILE function ( #1759 )
2025-07-18 18:27:52 -04:00
Rangi
4c8724899b
Support SIZEOF(reg) to distinguish 8- and 16-bit registers ( #1758 )
2025-07-17 15:49:28 -04:00
Rangi
0c96234532
Use concrete types instead of auto when convenient and not redundant ( #1757 )
2025-07-17 14:59:51 -04:00
Rangi
9dddd87893
Run all CMake commands in bash ( #1755 )
2025-07-17 13:39:37 -04:00
Rangi
5eb093f13e
Implement warning diagnostic flags for RGBLINK ( #1754 )
2025-07-17 12:54:29 -04:00
Rangi
529989bde5
Update libpng to 1.6.50 ( #1750 )
...
* Update libpng to 1.6.50
* Don't patch MinGW libpng APNG support
* Use current libpng repo URL
2025-07-16 19:00:51 -04:00
Rangi
776e37980b
Add gb-starter-kit to test suite, excluding it on Windows, macOS, and BSD ( #1753 )
2025-07-16 18:17:01 -04:00
Rangi
7f24d46d44
Support more syntax in linkerscripts ( #1752 )
...
* No need to use `locale`s
* Implement octal numbers, `_` digit separators, and `0x/0b/0o` prefixes in linkerscripts
* Refactor some functions out of `yylex`
* Support `\0` in linkerscripts
2025-07-16 15:00:02 -04:00
Rangi
1fecf80659
Implement 'character' literals ( #1747 )
2025-07-15 13:08:50 -04:00
Rangi
b6d77fbb9e
Implement BYTELEN and STRBYTE ( #1744 )
2025-07-14 21:46:35 -04:00
Rangi
8a19c5c30a
Fix string function behavior with NUL characters ( #1746 )
2025-07-14 21:43:32 -04:00
Rangi
611b0041c4
Exclude Bison-generated files from coverage report, and use dark theme ( #1742 )
2025-07-12 10:11:23 -04:00
Rangi
510a4aa99d
Add RGBASM -MC flag to continue -MG after missing dependency files ( #1687 )
2025-07-10 13:25:36 -04:00
Rangi
3f4e8396aa
Implement warning diagnostic flags for RGBGFX ( #1738 )
2025-07-10 09:58:40 -04:00
Rangi
a40109e4e4
Update the UTF-8 decoder ( #1741 )
2025-07-09 23:13:30 -04:00
Rangi
34cf959c9d
Refactor to reduce nesting depth some more ( #1740 )
2025-07-09 22:46:40 -04:00
Rangi
44f5b47bf0
Reduce nesting depth in some functions ( #1739 )
2025-07-09 16:20:33 -04:00
Rangi
41ab5dff5a
Implement [[ fragment literals ]] ( #1614 )
...
This feature is referred to as "code/data literals" in ASMotor,
and simply as "literals" in some older assemblers like MIDAS
for the PDP-10. RGBASM already had the "section fragments"
feature for keeping disparate contents together when linked,
so these worked naturally as "fragment literals".
2025-07-09 12:13:01 -04:00
Rangi
5e43ece578
Remove errx and errors.hpp ( #1737 )
2025-07-09 11:04:23 -04:00
Rangi
9acba4b412
Generate a coverage report in CI ( #1736 )
2025-07-08 21:39:11 -04:00
Rangi
6869e4807c
Make file.hpp independent of gfx ( #1733 )
2025-07-08 15:16:16 -04:00
Rangi
5de05e2e4b
Replace DefaultInitVec with std::vector ( #1732 )
2025-07-08 14:55:28 -04:00
Rangi
fda54fd0c3
Replace Either with std::variant ( #1731 )
2025-07-08 13:59:03 -04:00
Rangi
35962dedc4
Refactor warnings and errors ( #1728 )
...
* Remove `err` and `warn`, keep `errx` and `warnx`, using them in RGBGFX too
* Separate RGBGFX and RGBLINK warnings/errors from main options
* Separate `report` function into `error` and `fatal` messages
* Implicit newlines for most RGBASM errors
2025-07-08 12:58:23 -04:00
Rangi
991b74dd0d
Fix segfault with invalid RGBLINK scramble spec ( #1730 )
2025-07-08 12:34:54 -04:00
Rangi
1a77667409
Fix UBSan error with overflowing exponent operator ( #1727 )
2025-07-07 19:08:26 -04:00
Rangi
c9765ec158
Factor out program-independent warning diagnostic code ( #1725 )
2025-07-07 18:34:34 -04:00
Rangi
e14f68d1d7
Improve error message for align failure ( #1721 )
2025-07-06 08:36:11 -04:00
Rangi
7054d81650
Implement grayscale DMG palette specs ( #1709 )
2025-06-30 14:53:05 -04:00
Rangi
5942117ac3
Avoid generating phony dependencies for files that don't exist ( #1708 )
2025-06-29 16:42:24 -04:00
Rangi
b13d623ad4
Encode reversed PNG images as grayscale or indexed when possible ( #1703 )
2025-06-19 09:48:27 -04:00
Rangi
37bf9fae01
Only define parse.lac for Bison 3.5 or greater ( #1702 )
2025-06-14 17:01:16 -04:00
Rangi
089e366ddc
Implement CHARVAL function ( #1701 )
2025-06-12 17:21:12 -04:00
Rangi
fa9e29e4ce
Implement ++ operator for string concatenation ( #1698 )
2025-06-12 22:52:00 +02:00
Rangi
804db4e073
Handle missing newline at EOF for linkerscript INCLUDEd files ( #1691 )
2025-05-22 10:55:58 +02:00
Rangi
5d998ef483
Restrict custom binary and graphics digits ( #1693 )
...
* Restrict custom binary and graphics digits
* Update documentation
* Fix build error
2025-05-22 10:52:51 +02:00
Rangi
126b1e5726
Reuse startsIdentifier and continuesIdentifier functions ( #1695 )
2025-05-19 15:31:26 -04:00
Rangi
4f2400c15b
Hint to {interpolate} names when EQUS expanding does not occur ( #1692 )
2025-05-18 17:53:34 +02:00
Rangi
41c94aa448
Omit the version number from distrbuted release archive filenames ( #1685 )
2025-05-06 13:28:54 +02:00
Rangi
d413870e6d
.sym file sorting accounts for local labels' parents' addresses and names ( #1684 )
2025-05-05 13:57:25 -04:00
Rangi
e95ac6fb06
Recover from errors even inside REPT/FOR loops ( #1683 )
2025-05-04 17:51:53 -04:00
Rangi
e1ae92709c
Fix STRSLICE with no stop index argument ( #1682 )
2025-05-04 16:56:25 -04:00