[Feature request] Support non-tiled "streams" of PNG-to-1bpp/2bpp conversion
- Dominant language
- C++
- Stars
- 1.6k
- Forks
- 193
- Avg merge
- 22h 17m
- Merged PRs (30d)
- 26
Description
If an input image is 8px wide, *and* the only output is graphics data (no tilemap, attrmap, palmap, or palette), *and* there's no deduplication or mirroring, then it's not necessary to divide the image into tiles: RGBGFX can just process the graphic one pixel row at a time.
This would occasionally be useful, e.g. for this sprite in [pokered](https://github.com/pret/pokered/blob/master/engine/battle/animations.asm#L1744-L1753):
```asm
MinimizedMonSprite:
; 8x5 partial tile graphic
pusho b.X ; . = 0, X = 1
db %...XX...
db %..XXXX..
db %.XXXXXX.
db %..XXXX..
db %..X..X..
popo
MinimizedMonSpriteEnd:
```
It's been requested before in https://github.com/gbdev/rgbds/pull/234#issuecomment-366035943 (as noted in https://github.com/gbdev/rgbds/pull/981#issuecomment-1067202197), and semi-supported by 8fe52930776f8803c215c67e22ba558db5e360bb.
Contributor guide
Research direction
Start by reviewing the prior discussion in pull request #234, the note in pull request #981, and commit 8fe52930776f8803c215c67e22ba558db5e360bb. Use the pokered MinimizedMonSprite example to verify the intended behavior: an 8px-wide graphics-only input is processed row by row when tilemaps, palettes, deduplication, and mirroring are absent.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-graphics, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100