Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
blog:commodore_c65_dtv_programming [2023/01/25 16:13] – john | blog:commodore_c65_dtv_programming [2023/01/25 17:21] (current) – [Extended DTV Functions] john | ||
---|---|---|---|
Line 475: | Line 475: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | == Bugs == | ||
+ | |||
+ | I've seemingly found a bug which manifests when making sequential DMA calls in a tight loop and the transfer length is 182 bytes or greater. | ||
+ | |||
+ | You can successfully DMA copy quite a large region in a single operation and there are no side-effects, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | The colour bars in the image should be continuous for the entire screen width, but they glitch at two points. | ||
+ | The above example was generated by the following pseudocode: | ||
+ | |||
+ | < | ||
+ | screen = FRAMEBUFFER_LOCATION; | ||
+ | for (line = 0; line < SCREEN_HEIGHT; | ||
+ | memset(line_buffer, | ||
+ | dtv_DMA(& | ||
+ | colour++; | ||
+ | screen += SCREEN_WIDTH; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | If you reduce the transfer size to 181 bytes you do not get the glitching, and if you have a // | ||
---- | ---- | ||
Line 573: | Line 596: | ||
{{: | {{: | ||
+ | |||
+ | Notice that the transparent (aka //black//) pixels in the source region are preserved when copying to the destination, | ||
+ | |||
+ | == Bugs == | ||
However, there is a problem. On the **DTV2** systems (the initial PAL models), the blitter is partially bugged and transparent copies result int a vertical banding effect: | However, there is a problem. On the **DTV2** systems (the initial PAL models), the blitter is partially bugged and transparent copies result int a vertical banding effect: |