ISSOtm
5b9903f358
Mark a link test as failed if assembling fails
...
Assembling is never *supposed* to fail, but in this case I ended up adding
a test case that triggered a bug in the assembler, and that caused the rest
of the test to become garbled. This is thus more robust.
2026-09-18 21:19:37 +02:00
ISSOtm
ef709fade6
Refactor and fix sect packing's bank iteration
...
Moving both pieces of related code together, as it were.
This also ends up changing the behaviour of scrambling,
where sections could “leak” out of the scrambling's bank pool
and resume being placed normally.
We have discussed it offline, and decided that this was a bug.
The test suite has been updated accordingly, which even gives
the occasion to move this test from a special case to the main
generic loop!
2026-09-18 21:19:37 +02:00
Eldred Habert
afe1f01d00
Fix linker script align 16 in floating address context ( #2115 )
...
Turns out we were just using the wrong var lmao
2026-09-17 20:46:55 -04:00
Rangi
8bf5957c83
Fix RGBLINK assertion failure when -s and -c invalidly match ( #2109 )
2026-09-18 01:34:14 +02:00
Rangi
b4988afc8a
Fix RGBLINK ignoring alignment constraints when placing empty sections
...
Fixes #2095
2026-09-17 11:16:18 -04:00
ISSOtm
6f69867d04
Make more RGBLINK tests use at-files
...
Less special handling = good
Possibly this can be done to more tests, but this is what I found.
2026-09-17 10:25:47 -04:00
ISSOtm
960f82126f
Fix to actually allow one-past-the-end zero-sized sections in linker scripts
2026-09-17 10:19:47 -04:00
ISSOtm
e39dbe1752
Remove no-op in link test script
...
No, `printf` does not do that.
This works because making it read from stdin suppresses
any words after the first one.
2026-09-17 09:35:32 -04:00
Rangi
b2967ff509
Correct rgblink(5) linkerscript doc to match behavior of unbanked ROMX/WRAMX ( #2103 )
2026-09-17 05:32:15 +02:00
Rangi
004749ea75
Halt processing when any ambiguous-transparency colors exist ( #2093 )
2026-09-16 04:03:56 +02:00
Rangi
f4c6221eb1
Fix underflow of ALIGN[16, offset] ( #2090 )
2026-09-15 20:22:33 -04:00
Rangi
d81ab2fb23
Fix underflowing SECTION FRAGMENT fixed address ( #2091 )
2026-09-15 20:22:19 -04:00
Rangi
b0f49a36b7
Fix -t/--tiny for ROMX in bank 1, and -w/--wramx for WRAMX in bank 1 ( #2089 )
2026-09-14 15:53:45 -04:00
Rangi
ed1ac7309b
Fix overflow with high fixed-point magnitudes
2026-09-14 14:27:16 -04:00
Rangi
d082f24a2d
Fix rounding of fixed-point constants where fractional digits should carry into integer part ( #2088 )
2026-09-14 13:52:39 -04:00
Rangi
7746ddbf2b
Fix reverse-graphics check for whether the tilemap references too-high tile IDs in bank 1 ( #2086 )
2026-09-14 10:26:57 -04:00
Rangi
f8a1da71c1
Only sort generated palette colors by PLTE order for indexed PNG images
...
Non-indexed images can still have a PLTE chunk. We should use
`sortRgb` instead of `sortIndexed` for them, since their pixels' colors
may not all be present in the PLTE chunk and would be unsortable.
2026-09-13 18:53:31 -04:00
Rangi
49b3f566b1
Fix handling of PNG files with RGB or RGBA color type that have a PLTE chunk
2026-09-13 16:09:49 -04:00
Rangi
82f58b95ac
Fix reversing some images with an input tileset ( #2081 )
2026-09-13 21:00:58 +02:00
Rangi and Eldred Habert
e9fc7b3135
Warn when tile or palette IDs cannot fit in the tilemap or attrmap respectively ( #2077 )
...
Co-authored-by: Eldred Habert <[email protected] >
2026-09-13 19:18:24 +02:00
Rangi
47bbd30f2c
Fix a failing assertion when two sections have the same name ( #2079 )
2026-09-12 17:58:37 -04:00
Rangi
520cc2a80d
Fix reversing a tilemapped image with -x trimmed tiles
2026-09-12 15:38:34 -04:00
Rangi
e9c800b3be
Fix reversing 1bpp images
...
Fixes #2075
2026-09-12 14:17:33 -04:00
Rangi
8a7019e1f8
Only register colors inside the -L/--slice region, including transparent color
...
Fixes #2074
2026-09-12 12:52:35 -04:00
Rangi
439a7a1828
Fix reversing multiple palettes with fewer than 4 colors per palette
...
Fixes #2073
2026-09-12 11:50:47 -04:00
Rangi
438b943a1a
Make background tile IDs consistent whether or not deduplication is enabled
...
Fixes #2072
2026-09-11 20:45:52 -04:00
Rangi and ISSOtm
9e785495ff
Fix crash when a background tile first occurs after both tile banks are full ( #2070 )
...
Co-authored-by: ISSOtm <[email protected] >
2026-09-12 01:04:31 +02:00
ISSOtm
9d69a08909
Determine the number of fetch/clone jobs ourselves
...
Apparently our CI has some versions of Git too old to support zero to mean that.
2026-09-11 16:31:19 -04:00
ISSOtm
970bb84450
Fix updating ext-test repos from existing copies
...
The current setup fails with a "cannot read tree" error.
Also added flags to parallelise each fetch, which is relevant when submodules
are involved. (So, pretty much just starter-kit, haha.)
It would be nice to also parallelise the various fetches, but that would hit
the same remote multiple times, and could lead to rate-limiting...
2026-09-11 16:17:26 -04:00
Rangi
a662cad7ce
Fix infinite loop when an aligned HRAM section cannot be placed ( #2064 )
2026-09-11 05:21:26 +02:00
Rangi
e85375f3e1
Avoid truncation warning from sp instruction test
2026-09-10 19:09:15 -04:00
Rangi
429a2325fb
Add test case for reversing image with transparent color
2026-09-10 18:18:37 -04:00
Rangi
9c5e872f9c
First color of -c palettes with transparent pixels is transparent $8000, not unspecified $ffff
2026-09-10 16:41:32 -04:00
Rangi
25240e9fc0
Fix but deprecate an implicit transparent color #0
2026-09-10 19:32:00 +02:00
Rangi
8a6b1946e3
Parse inline palette specs after getting CLI palette size limit ( #2054 )
2026-09-10 18:54:24 +02:00
Max Freedom Pollard
631ef003e7
Avoid signed overflow in RGBLINK's +, -, and * ( #2060 )
...
RGBASM computes these with unsigned arithmetic and casts back, since
signed overflow is UB in C++, but RGBLINK's RPN evaluator used `int32_t`
directly, so `src/link/patch.cpp` tripped UBSan on lines 117, 121, and
124. Share the three operators through `opmath.cpp` so both evaluators
stay in step.
2026-09-07 16:15:07 -04:00
Rangi
fdd6cece30
Warn about signed 8-bit truncation for add sp, e8 and ld hl, sp + e8
2026-09-07 19:28:45 +02:00
Rangi
7d0cb000e8
Specify COLUMNS in test scripts for consistent output
2026-09-06 00:07:16 +02:00
Rangi
8988cdde46
Fix reversing images with fewer than 4 colors per palette
2026-09-03 13:39:24 +02:00
Rangi
a2c52caca2
Disallow NUL characters in section names and assertion messages
...
Allowing these in object files would lose anything after the '\0'
when RGBLINK reads the object.
2026-08-22 19:51:03 -04:00
Rangi
21a4b85a4f
Fix STRFMT stopping at NUL characters in format spec strings
2026-08-22 19:23:49 -04:00
Rangi
9fa5058add
Correct error message for macro arg \<-INT_MIN>
2026-08-22 19:02:23 -04:00
Rangi
e287ee2724
Fix C++ UB from negating INT_MIN with macro shift INT_MIN
2026-08-22 18:48:36 -04:00
Rangi
0888600cb7
Avoid OOM allocation error from invalid too-high bank numbers
2026-08-22 18:31:26 -04:00
Rangi
8bc7de35f9
Prevent SECTION FRAGMENT combined sizes from overflowing their uint16_t size
2026-08-22 18:24:17 -04:00
Rangi
e7e671b249
Update external test commits
2026-08-01 11:24:42 -04:00
Rangi
0c772ea049
Update external testing CI with libbet's new way of running Python
...
libbet now uses `py -3` if the `py` binary exists, instead of if
`COMSPEC` is defined. So we don't need to `unset COMSPEC`, we just
need to avoid Windows' `py` launcher from being in Cygwin's `PATH`.
It turns out that `C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 ...`
was not effectively preventing Windows' `PATH` from being inherited
by Cygwin's `PATH`, because to take effect it needs to run Cygwin's
`/etc/profile` script. The simple way to do that is using a login
shell. So we don't need the `PREFIX`/`--prefix` from the previous
commit after all.
2026-08-01 04:49:43 +02:00
Rangi
ec5e6cbabb
Handle -Wtruncation for link-time jr values
...
Fixes #2028
2026-07-21 14:51:58 -04:00
Rangi
d9c0d37fd5
Explicitly allow JR offsets to wrap around in RGBLINK
...
This reverts commit f27a8132d9 .
2026-07-20 19:23:11 -04:00
Rangi
9a15b723f2
Format CGB colors in error/verbose messages as "GB:rr,gg,bb"
...
These should be more debuggable than packed "$xxxx" format.
2026-07-14 10:34:27 -04:00