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:18] – john | blog:commodore_c65_dtv_programming [2023/01/25 17:21] (current) – [Extended DTV Functions] john | ||
|---|---|---|---|
| Line 479: | Line 479: | ||
| 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. | 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 577: | Line 596: | ||
| {{: | {{: | ||
| + | |||
| + | Notice that the transparent (aka //black//) pixels in the source region are preserved when copying to the destination, | ||
| == Bugs == | == Bugs == | ||