The Nintendo's video arch sounds similar to the
Commodore 128's 8563 VDC,
which according to designer Bil Herd was a nightmare. All 16 to 64K of VDC
memory is only accessible through the ports at $d600/d601. Worse, you have
to observe proper timing (and sometimes write the registers *twice*). The
8563, originally intended for the mythical CBM 900 mainframe, was
supposedly
Pretty much the same.
The read (for some reason) was buffered, so you'd set your two byte address,
then read the register (to bring it into the buffer), then read it again to
get the actual value. NES was also time-critical. If you tried to
read/write graphics data when the screen was on - well, too bad - because
the hardware also used the very same address register for displaying the
screen.. You ended up corrupting the screen and worse.
It made for innovative programming - I ended up using these strange quirks
to implement a software multidirectional scroll, previously considered
impossible on the plain vanilla NES. Fun days.
Cheers
A