As a game lover I have to admire my forebears in the 16-bit era (and earlier) who did all of this in assembly.
Assembly programming does not have any of the guardrails and safety features that modern programming languages do, so with any small bug or miscalculation you can easily overwrite/corrupt memory.
Especially so if you're trying to write code that runs at a high framerate on the CPUs of the day.