LoadPNG decodes with rpng, straight into the caller's buffer, and
SavePNG encodes with rpng through the frontend's VFS. Both go through
libretro-common's own deflate, so libspng, and with it one of zlib-ng's
users, goes; rpng, its streams and the deflate codec are copied in
unchanged from libretro-common.
On 72 PNGs of every colour type, 1 to 16 bits a channel, with and
without tRNS and Adam7, rpng decodes the same RGBA bytes libspng did,
and RGBA rows saved a stride apart read back exactly.
Every PNG saved is RGBA, so the RGB format goes, and rpng picks its own
compression, so the texture dumps' compression level, which this core
does not expose, goes with it.