Rangi
520cc2a80d
Fix reversing a tilemapped image with -x trimmed tiles
2026-09-12 15:38:34 -04:00
Rangi
a703b8c704
Ignore .pdb files (generated by CMake on Windows)
2026-09-12 14:49:17 -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
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
3112239174
Fix contrib/view_palettes.sh to allow output to stdout with -
2026-09-10 19:32:00 +02: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
db9509fba0
Describe rlc/rrc/rlca/rrca" as capitalized "Rotate Left/Right Circularly"
2026-09-07 19:19:29 +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
b36028d1d1
Avoid unsigned overflow in INCBIN slice size check
2026-08-25 15:47:27 -04:00
Rangi
760cc4d464
Use PRIu8 for uint8_t
2026-08-25 15:06:31 -04:00
Rangi
cebf57630a
Prevent creation of a dangling reference to a temporary rvalue
2026-08-25 15:04:28 -04:00
Rangi
eb2b7c1842
A 1GB ROM does not have "more than 65536 banks"
2026-08-25 15:02:44 -04: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
ed0a2d1075
Fix infinite loop when a symbol name in an invalid object file starts with an invalid UTF-8 byte like 0xC0
2026-08-22 18:06:32 -04:00
Rangi
71d9e236bc
Document multiple -v options in the rgbasm and rgblink man pages, same as rgbgfx
2026-08-19 09:21:05 -04:00
Rangi
307846b03e
Release v1.0.3
2026-08-01 11:27:43 -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
4e87f61656
Edit some comments and formatting in testing.yml for consistency
2026-07-29 22:08:21 -04:00
Rangi
9d854114ea
Use Ninja as the generator for CMake on FreeBSD
2026-07-30 02:33:47 +02:00
Rangi
ca2b8e4cde
Support the COLUMNS environment variable for help/usage output
2026-07-24 14:46:05 +02:00
Rangi
80c8e77b19
Fixed-point FMOD and LOG explicitly return 0 for some invalid inputs
...
This is consistent with `fix_Div`'s explicit error handling,
and does not rely on subtle C/C++ `fmod` or `log` IEEE 754 behavior.
2026-07-23 00:38:44 -04:00
Rangi
ec5e6cbabb
Handle -Wtruncation for link-time jr values
...
Fixes #2028
2026-07-21 14:51:58 -04:00
Rangi
50678d0942
Use _fseeki64/_ftelli64 on Windows since fseek/fell are limited by 32-bit long
2026-07-21 14:38:14 -04:00
Rangi
c691ec6607
Use std::optional<uint64_t> instead of long with a special -1 sentinel for seekSize
2026-07-21 14:31:05 -04:00
Rangi
c3073f4318
Assume that InsertionOrderedMap never adds duplicate keys
2026-07-21 14:07:45 -04:00
Rangi
e5b03e3cb1
Zero-initialize Png struct width and height just in case
2026-07-21 13:58:31 -04:00
Rangi
0d379e9016
Assume clz/ctz argument is nonzero in our fallback implementations
2026-07-21 13:56:57 -04:00
Rangi
9cbfec30c7
Avoid redundant "Unexpected text" error message after "Unknown" error
2026-07-21 13:54:11 -04:00
Rangi
9def9c9aa8
Fix an SDAS object error message to use the valid section name variable
2026-07-21 13:41:53 -04:00
Rangi
b5681c0d34
Set binary or text mode on stdout as well as stdin
2026-07-21 13:39:28 -04:00
Rangi
ec43f06bd9
Fix handling of at-files containing -- followed by positional arguments
2026-07-21 13:35:39 -04:00
Rangi
106ec399d5
Fix reading value of relocations symbol/section index from SDAS objects
2026-07-21 13:14:35 -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
fa49e238a9
Release v1.0.2
2026-07-20 14:08:09 -04:00
Rangi
3426f685a0
Update libpng to 1.6.58
2026-07-20 14:08:09 -04:00
Rangi
c0e2f8340b
Output negative values with correct with in .sym files
2026-07-20 00:09:06 -04:00
Rangi
8883251bf9
Avoid UB from FileStackNodeType(type) on an invalid type
2026-07-20 00:06:09 -04:00
Rangi
f27a8132d9
Avoid truncating too-large JR offset from an invalid object file
2026-07-20 00:02:39 -04:00
Rangi
0af28de791
Fix assertion failure on nonzero base palette ID without an attribute map or palette map
...
Also fix palette map IDs to wrap at 256, not at 8 like attributes
2026-07-19 23:59:38 -04:00
Rangi
8d2275dc48
Use rpnErrorAt wrapper to ensure setting isError on all RPN errors
...
Two possible RPN errors were missing `isError = true;`
2026-07-19 23:45:45 -04:00
Rangi
7e11ab4d8f
uint16_t tileIdx type matches options.baseTileIDs
...
Tile IDs wrap at 8 bits, but that's handled by `uint8_t tileID`
2026-07-19 23:33:01 -04:00
Rangi
e84bcf83b4
Use Procedure concept to type-check decantOn lambda
2026-07-15 23:27:08 -04:00
Rangi
57c9bab3a5
Addresses are 16-bit in .map files, consistent with .sym files
2026-07-15 22:59:50 -04:00
Rangi
4ada3e85d8
Avoid overflow for very large ROMs (e.g. TPP1)
2026-07-15 22:57:25 -04:00
Rangi
ba4a7f2e6a
Explicitly assume what was verified earlier by readSection
2026-07-15 22:56:43 -04:00
Rangi
b0948566bb
Fail-safe treat 16-bit alignment as a fixed address even in RGBLINK
...
RGBASM does this itself, so should not output sections with 16-bit
alignment, but an invalid object file could otherwise cause
`getPlacement` to infinitely loop.
2026-07-15 22:46:57 -04:00
Rangi
5aa7067876
Comment on how overflow to 0 is explicitly allowed for tile and palette IDs
2026-07-15 22:28:08 -04:00
Rangi
dff176791c
Correct grammar "is" vs "are" in RGBGFX reverse mode error messages
2026-07-14 11:29:30 -04:00
Rangi
07f5969005
Consistency check the palette map, not just the attribute map
2026-07-14 11:27:41 -04:00
Rangi
d61c0561c1
Correct condition to completely print both palettes and options.palSpec
2026-07-14 11:23:03 -04:00
Rangi
b13b0c8eb8
Fix the same shifting UB for SDAS objects as for RGBDS ones
2026-07-14 11:13:30 -04:00
Rangi
ca2de0f429
Add issue template
2026-07-14 10:34:43 -04:00
Rangi
a821badc3e
Reorganize the readme
...
- Use sub-headings to let the reader skim more easily
- Link specifically to the Discord server before less-useful
"other community channels"
2026-07-14 10:34:43 -04:00
Rangi
cb34fe18f7
Use transparent instead of repeating 0x8000
2026-07-14 10:34:27 -04:00
Rangi
1ed22cc518
Mask blue for consistency (avoids transparent bit bugs)
2026-07-14 10:34:27 -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
Rangi
7e2a3491a5
Encapsulate fseek+ftell idiom in seekSize
...
This allows a single check for the return value of `seekSize`
to verify all three `fseek`+`ftell`+`fseek` calls.
2026-07-14 01:32:18 -04:00
Rangi
e7855ea1b8
Fix reverse mode with -s/--palette-size too small for the tile data
2026-07-14 01:11:11 -04:00
Rangi
19e60d9864
Fix large ds in linker script overflowing the PC
2026-07-14 00:42:42 -04:00
Rangi
c0ff3d92ad
Fix reverse palette offsets when base palette ID wraps around to 0
2026-07-13 23:08:20 -04:00
Rangi
e4583e7ac2
RGBGFX reverse mode checks for too-low palette IDs, not just too-high
2026-07-13 23:08:20 -04:00
Rangi
5869e0dc60
Fix RGBLINK scrambling algorithm to work for SRAM
...
Since SRAM sections start from 0, we had been using a signed
`int8_t curScrambleSRAM` counter to allow 0 as a scrambled bank,
but this actually just placed all floating SRAM sections in bank 0.
2026-07-13 22:39:41 -04:00
Rangi
196d50c1d7
Add XXX: comment tag to working but fragile test cases
2026-07-13 22:39:41 -04:00
Rangi
8b951bc047
Fix a flaky/random-seed rgbgfx_test test failure
...
Commit 21eaa2d2cc missed some
intentional unsigned underflow that is needed to set `nbTilesInBank`.
Without it, some of the randomly-seeded RGBGFX tests, such as
`./rgbgfx_test seed8.bin -b 207 -N 54,256`, can fail with "Color
mismatch after round-tripping" errors.
2026-07-13 21:31:05 -04:00
Rangi
59b6b15106
Run make format
2026-07-13 21:30:23 -04:00
Rangi
304cbb464f
Factor out verboseDo to encapsulate magenta output color
2026-07-13 18:05:55 -04:00
Rangi
ea3a8ee171
Use magenta color for some verbose output which was missing it
2026-07-13 17:47:38 -04:00
Rangi
f0419eb183
More guards against invalid object file patch data
2026-07-13 17:47:38 -04:00
Rangi
4a6ea35299
Avoid overflow in counting tiles for unrealistically large images
2026-07-13 17:47:38 -04:00
Rangi
08354cf573
Explicitly encode assumption that an overlapping section exists
2026-07-13 17:47:38 -04:00
Rangi
417b5212d4
Fix OOM for too-small overlay files in 32K mode (rgblink -t)
2026-07-13 16:17:30 -04:00
Rangi
66312f55dd
Avoid unsigned overflow/truncation from bad offset values in invalid object files
2026-07-13 13:17:09 -04:00
Rangi
21eaa2d2cc
Fix a > to >=, and avoid underflow in some sanity checks
2026-07-13 13:14:06 -04:00
Rangi
e9fa1e4e94
Avoid closing stdin/stdout/stderr standard streams
2026-07-13 13:02:46 -04:00
Rangi
8ab6190f96
Fix relative links in Markdown docs
2026-07-11 16:19:27 -04:00
Rangi
96bc58b7f7
Add test case for local labels that superficially look like keywords
2026-07-11 13:51:53 -04:00
Rangi
4857ad1e00
Fix crash on image without any colors (all transparent)
2026-07-11 13:18:40 -04:00
Rangi
3b33c942ae
Fix a crash and a limitation in RGBGFX unoptimized output
...
- If both banks 0 and 1 were completely filled, then
`assume(bank == 0)` would false and potentially crash.
- If the input image had fully-background tiles, they would be
incorrectly counted towards `nbTiles` and could cause the
"Image contains N tiles, exceeding the limit" check to fail.
2026-07-11 12:32:31 -04:00
Rangi
5525dd902b
Update external test commits
2026-07-10 23:29:19 -04:00
Rangi
4350a3252d
Upgrade FreeBSD testing from 14.3 to 15.1
2026-07-10 23:14:39 -04:00
Rangi
a8442bccc7
Group the two dep install commands together in Dockerfile
2026-07-10 23:12:49 -04:00
Rangi
00006a9d00
Use set -u too
2026-07-10 23:12:49 -04:00
Rangi
a383bec96e
Rename install_deps.sh to install-deps.sh for consistency
2026-07-10 23:12:49 -04:00
Rangi
226031c18b
Use #!/usr/bin/env bash, not #!/bin/bash
2026-07-10 23:12:49 -04:00
Rangi
24a896f60a
Move CI-only check-diff script to .github/
2026-07-10 23:12:49 -04:00
Rangi
a6f5e3efd1
Move CI-only check-format script to .github/
2026-07-10 23:12:49 -04:00
Rangi
c02b234bb1
Add CI job to check syntax of contrib scripts
...
Note that `zsh` is not installed in `ubuntu-slim` by default.
2026-07-10 23:12:49 -04:00