NeoOne wrote: Mon Sep 15, 2025 10:16 amI can't tell from the gif you showed but it def looks like it is removing edges. I guess that is relatively fast - just writing 0's to VRAM locations?
Look at the thick guy's boots.
Somebody in the thread had previously proposed simply trimming edges (and not uniformly across all sprites in the metasprite either) as a homebrew technique, which may be what confused me.
Also, no, the sprites on SNES use the interleaved bitplane format, so the fastest method of (vertical) edge trimming would probably involve a lot of 16-bit immediate AND, with the results written to WRAM. You don't want to be trying to write directly to VRAM in a software rendering loop on SNES, because during active display and HBlank it's closed for exclusive use of the video chips, and your writes will fail.
This is why VRAM updates on SNES are generally limited to what you can push through with DMA during VBlank, and why games like Final Fight and Star Fox often letterbox with forced blank to give the DMA unit more time. Quite foreign to how the Neo Geo (and NES/Famicom) operate.
I'm not sure if you can join sprites together on the SNES so they all move as one?
No such luck. Sprites on SNES don't know about each other. Metasprites on SNES are a software concept. And the OAM format, while it is nice and compact (requiring only 544 bytes of DMA for 128 sprites), is such a pain to use that there's actually a special chip (the OBC-1, used in Metal Combat: Falcon's Revenge) solely to make it easier to compile an OAM image.
The SNES sprite system is actually a pretty weird quasi-legacy design that could have (IMO) greatly benefited from earlier abandonment of the idea of Famicom backward compatibility. I look with envy at the Mega Drive, where any sprite can have its own unique H
and V sizes rather than having to select from only two global square* sizes, and getting more than 16 KB of sprite data onscreen at the same time doesn't require potentially brittle, difficult, limiting and/or VRAM- and DMA-wasting tricks†...
*
there are two settings with non-square sizes, but they were never finished (or are just accidental undefined behaviour) and vertical flipping doesn't work properly
†
my application involves a fake BG layer made of sprites, which makes bypassing the 16 KB limit almost trivial. Something like Metal Slug would be a whole different ball game...