Contended memory article on Wikipedia

Yeah, apparently there's one. https://en.m.wikipedia.org/wiki/ZX_Spectrum_Contended_Memory
However, the ULA must wait for a Z80 read or write to complete before it can stop the Z80's clock and access the memory. As the ULA has no capacity to prefetch and store data in advance, it relies upon the memory being available to read to produce a clean and true video display. If an existing Z80 access is in progress when the ULA must read video data, the read is missed and the display shows blank white pixels in place of the correct video pixels. On the next frame, they may well be read correctly. The consequences of this often appeared as a flickering of missing pixels on the display, or 'snow' as it was also called. To avoid snow, some programs and games only copied data to the display on interrupt, as the Spectrum maskable interrupt was generated by the display vertical refresh signal. This ensures that as much of the display as possible was updated during the blanking and border time when video data was not used.


Surely this is incorrect? They seem to be mixing up several things together (e.g. snow is something else entirely), and this is the first time I've heard of the 'blank white pixels' thing

Comments

  • They are also mixing up the imaginary snow with tearing of graphics when talking about the interrupts.
    Sod it!

    @luny@mstdn.games
    https://www.luny.co.uk
  • I want my missing pixels back!
    Robin Verhagen-Guest
    SevenFFF / Threetwosevensixseven / colonel32
    NXtel NXTP ESP Update ESP Reset CSpect Plugins
  • edited December 2016
    I agree, waiting for a vertical blank (maskable interrupt) in order to update sprites has nothing to do with ULA contention, "snow" or the ULA being unable to read memory at the moment it needs to.

    It is true that contention doesn't occur during the drawing of the border, but that isn't why sprite updates are down on the interrupt. The interrupt provides a "reset" time where you know you aren't going to be updating screen sprites at the same time as the scanline draws the old/new sprite (which results in "tearing")
    Post edited by BloodBaz on
Sign In or Register to comment.