On real c64 hardware triggering a badline during idle state ("DMA delay") causes the VIC to retrieve a different idle byte than usual in the trigger cycle. Ordinarily idle bytes are sourced from $3fff (or $39ff when ECM enabled). When DMA delay is triggered on real hardware the idle byte is instead sourced from $38ff (6569 VICs) or $3807 (8565/8566 VICs) in the cycle the delay is triggered. This is visible in the cycle prior to the 3 cycles of "display mode" artefacts.
Attached is a test program that triggers DMA delay, determines and displays on screen the altered location of the affected idle-byte, as well as animating that specific byte in memory as additional verification. The animated idle byte is located on screen immediately above the address 4th digit.
Attached photos of real hardware VIC 6569 and 8565, and screenshot of x64sc-3.7.1
Really nice - i already prepared this to drop in the test repo when i saw your post on lemon :)
It would be super helpful if you could provide the source for this program, so we can produce a bunch of variants for the testbench
btw, both denise and hoxs64 fail too.
added to test repo https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/VICII/vsp-tester/
Source code, in 64tass format
Last edit: Steve West 2023-03-28
great, thanks!
I am converting the test program for automatic testing atm... one notable thing: on one of my C64s the address is $38D7 :) (and apparently was $38c7 even, when it was cold). I will do more testing with all of my C64s later - would you please also list the exact revisions (full markings) of the VICIIs you tested? And perhaps the ASSY numbers? I will do the same then (and add all that info to the readme). Perhaps we need to post the program somewhere to get more results.... It might turn out that the address is really unstable - or at least the LSB. or perhaps only on some VIC revision. or...whatever =D
that said, i modified it for the testbench now, and i also added a ntsc fixed version . see the readme for test results from my hardware. https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/VICII/vsp-tester/
some more results are rolling in: https://csdb.dk/forums/?roomid=7&topicid=159713#159749
looks like its not a stable artefact to me