If you're into 6502 and more specifically the Commodore 64, you should give the winning demo from last weekends Fjälldata a look. Quite insane stuff they do nowadays... https://www.youtube.com/watch?v=WtpPPgFSwxE
I feel this was an example of the crazy things you can do with PAL C64 hardware and not necessarily what can be done with a 6502. I feel Apple // demos are more representative of what a 6502 can do (without hardware assisted sprites, character generators, ADSR waveform generators, etc.)
It's kinda amazing that the people who wrote this probably know every single byte of code that's running on that computer, rom included. Without such deep knowledge you can't get this kind of performance.
With a modern computer that is simply unthinkable.
C64 demo coders don't generally care about ROM contents, there's nothing useful in there. ROMs are usually switched off. Although there might be a few exceptions.
Amazing resource, classic at this point, still probably the best place to start a 6502 journey. I became an NES romhacker with released projects thanks to this as a first step!
OK, but I think a diagram or two of the architecture would help.
And personally, I think the Z80 is easier to understand (no zero-page, no limited stack size, etc.) but that is probably just me, though I did write professional 6502 and Z80 code way back when.
I tend to think of them as slow registers, since they provide crucial functionality, as in pre-indexed and post-indexed indirect address modes. There is simply no indirect addressing on the 6502 without them. But the notion of "local variables" (as related to the speed advantage) may be useful, as well.
Well, on the 6510 address $01 is a port register and address $00 the related data direction register. Therefore, C64 folks tend to ignore these addresses.
(So there are just 254 usable zeropage addresses on the 6510, while on a stock 6502 and other variants the full complement of 256 zeropage addresses is usable.)
I think I can start in C and check the -s assembly code too, and gradually be comfortable with writing directly in assembly. After all a lot of the code is just function calls into libraries.