A while ago I was thinking it'd be nice if it were easier for newcomers to nesdev to make full-screen artwork with data compression, sprite overlays screen splits and less harsh tile counts.
So I made a build script / NES utility library that allows creating a set of pictures into a single Mapper30 16kB bank.
https://github.com/michel-iwaniec/CrunchyNES/releases
It's designed to be configurable whilst easy-to-use in your own NES code.
Currently supports the following features:
* Sprite overlays with scrolling pictures - either 8x8 or 8x16 set at build time
* Up to 512 BG tiles using mid-frame CHR bank-switching.
* Configurable split-screen scrolling using alternate CHR bank / R2001 settings
* No need to worry about sprite#0 hit - the CrunchyBuild / CrunchyLib do it for you
* Data compression - Tokumaru's (/Codemasters') excellent tile compression for CHR, and a simple Nametable compression scheme
It includes a stand-alone demo viewer NES ROM as an example program, which might also be useful for those who just want to quickly look at their NES graphics on a CRT with / without various emphasis bits turned on.
CA65 and ASM6 / ASM6f are both supported.
And that's about it. There's nothing really new or exciting here. Just the usual old tricks in a (hopefully) easier-to-use package.
---
Future things I'm likely to add, in semi-priority order (shout if you care / disagree)
* Multiple banks (just making CHR and nametables decompression read bytes from other banks should be trivial and provide scalability)
* DPCM IRQs to avoid wasting lots of frame time for mid-frame CHR bankswitching / split screen
* DPCM-sample playback raster timing compensation (though you can't have it at the same time as IRQs obviously)
* Pictures spanning multiple nametables
* 8x8 vs 8x16 sprites configurable per-picture
* PAL support
* Palette fades build / display
* OAM write optimisations
* Less noticeable sprite#0 pixel generation
* Top/bottom borders. And maybe a vertical "clamp" modes to avoid the wrap-around effect with vertical mirroring.
* Mapper2 support
* Maybe more general mapper support... though this can easily lead to scope creep
CrunchyNES: A picture converter / NES library for Mapper30
Moderator: Moderators