HTML5 · CANVAS 2D · VANILLA JS · NO LIBRARIES
32 bricks. 3 balls. One 400 × 600 field. Substepped circle-vs-AABB collision, a fixed 60 Hz physics step, and synthesized WebAudio — all hand-written.