Retro City Rampage for NES did something similar (32KB program ROM, 256KB graphics ROM), but the author also developed a High Level Assembler so you he could write structured code more directly:
https://www.youtube.com/watch?v=Hvx4xXhZMrU
Well this video is about fitting all of the vertically-scrolling 4-player run-and-jump action into 40 KB, with some very neat tricks to shave and save everywhere. Really interesting if you're into low-level stuff. The NES looks kind of fun to develop for ...
It is actually - I've done quite a bit over the past two or three years and 6502 assembly is really nice to program - it's hard to explain, but the fact it only has three registers combined with a relative ton of storage space for variables means you're constantly doing this three-card Monte shuffle that is very satisfying.
It's also all eight bit, obviously, so you're also dealing with nice, human manageable numbers of 0 to 255.
For anyone interested in doing some new programming, I recommend starting with nesdougs tutorials, which'll get you started with a dev environment in c:
In addition to this talk, I recommend watching a documentary, Beep, about how musician-programmers managed to compose meaningful sounds and music in memory constrained systems.