CrunchyNES: A picture converter / NES library for Mapper30

A place for your artistic side. Discuss techniques and tools for pixel art on the NES, GBC, or similar platforms.

Moderator: Moderators

Post Reply
Bananmos
Posts: 552
Joined: Wed Mar 09, 2005 9:08 am
Contact:

CrunchyNES: A picture converter / NES library for Mapper30

Post by Bananmos »

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
Post Reply