After sporadically reading about the C64 and tinkering here and there for over 32 years I finally decided to get to know my C64 memory layout properly. In doing so I have a question about the VIC-II chip:
Why is $D000 - $D03F "copied" to each of $D040 - $D07F, $D080 - $D0BF, ..., $D3C0 - $D3FF ?
According to this C64 Wiki page each one of those 64 byte address areas is the "... same as $D000-$D03F." For years I've only understood the VIC2 registers in terms of $D000 - $D03F.
For a moment I thought I might be able to tell the VIC-II which of those 64 byte memory areas to work with (*), but after doing some POKE-ing and PEEK-ing I found out that the Wiki article is meant to be taken literally. For some reason the C64 duplicates $D000 - $D03F across all those extra 64 byte address areas. Why? I'm guessing some kind of simple hardware hack for cost/design reasons?
Just imagine if (*) were true - the potential for use with raster interrupts and sprites could have been awesome because 128 lots of sprite position/other data could have been stored in those areas and 16 raster line interrupts could have quickly switched between them !