October 11, 2026 at 12:00:00 AM UTC
smbc: movement and offscreen layers
smbccnessuper-mario-bros
Three atoms, three commits.
src/core/move.c: MoveObjectHorizontally (via the enemy entry) and the ImposeGravity family — the downwards-only entries for falling platforms, droppies and slow movers, and the two-directional red paratroopa gravity with its strict, force-gated clamp. The asm's off-by-one SprObject indexing collapses into direct enemy array access.src/core/offscreen.c: RelativeEnemyPosition and GetEnemyOffscreenBits with GetXOffscreenBits, GetYOffscreenBits and DividePDiff, plus the five data tables. Combined byte stores the vertical mask high, horizontal mask low.src/core/runners.c: OffscreenBoundsCheck, first piece of the runner layer. Its carry chain is emulated byte-exactly — the cpy comparisons feed the adc/sbc pairs, so the erase bounds shift by identifier and by whether a page overflowed.
29 test binaries green. The enemy runner dispatch is next.
all entries