I like your idea, though I'm probably biased because I learned computers and computer programming starting with zero experience, zero knowledge and nothing but a 4K, sub-1 Mhz Radio Shack Color Computer. Unfortunately, in 1980 there were virtually no real instructional materials available on microcomputers. Learning consisted mostly of just trying things, typing in listings from low-budget hobbyist 'zines and comparing notes at user's group meetings.
One great advantage to your approach is that emulators are free and some of them, like MAME, have extremely powerful debugging and exploration tools built right in. Plus there's extensive developer documentation, SDKs and instructional materials available for many of the most popular platforms along with lots of commented code disassemblies. Having an actual course structured around curated sets of these materials would be pretty amazing.
There's a YouTube channel called CocoTown where he's building a Moon Patrol clone for the Color Computer in assembly from scratch. He's making good use of MAME and other modern tools. Can't imagine how less pleasant it would have been creating something like that using just EDTASM back in the day.
That's really a nice project. I had a thought a few years ago that if someone wants to be a game programmer, one idea is to find a hero (e.g. Rebecca Heinemann or John Carmack) and replicate some games they made, aka walk their roads on retro platforms.
I think it's a good idea to go further to work on more difficult retro platforms. I know teachers like LC-3 because it is simple, but I think they underestimate the devoted students.
> I think it's a good idea to go further to work on more difficult retro platforms.
Agreed, although I'm not sure platforms like Genesis, Amiga or NeoGeo would really be much more difficult for a beginner following a framework than NES. However, their increased performance, resolution and colors would be more capable of creating inspiring output.
One great advantage to your approach is that emulators are free and some of them, like MAME, have extremely powerful debugging and exploration tools built right in. Plus there's extensive developer documentation, SDKs and instructional materials available for many of the most popular platforms along with lots of commented code disassemblies. Having an actual course structured around curated sets of these materials would be pretty amazing.