32k Translucent Sprite Plot Fails In 16M Mode
Andy S (2979) 504 posts |
Sprite Extend’s support for translucent sprite plotting seems to be broken when trying to plot a 32k colour sprite in a 16M colour screen mode. This is using OS_SpriteOp 52 (put sprite scaled). It works great when translucency is zero (fully opaque), but any non-zero value causes nothing to be plotted in the 16M screen mode but it works perfectly in 64k, 32k and 4k screen modes. Here’s a BASIC program to reproduce the issue:
If I run it in a 64k, 32k or 4k colour screen mode, I see a series of overlapping green rectangles at varying opacities, which is the correct output. If I run it in a 16M colour screen mode, only the fully opaque green rectangle at the bottom left is rendered. In 256 colour screen modes and below, it gets an abort on data transfer at &2009EB18; is this latter issue just because I didn’t supply any translation table? |
Andy S (2979) 504 posts |
I’ve tried some different mode words and the bug seems to affect 32k and 64k colour sprites but 4k colour sprites seem to be unaffected (the translucent plots work correctly in a 16M screen mode). Mode Words I Used: |
Sprow (202) 1150 posts |
This is fixed in Sprite Extend 1.85, it was caused by the code generator trying to output an impossible shifted mask to extract the components from 32/64k sources. 4k worked because all the 4:4:4 components are even sized shifts.
I had a brief look at that, the abort comes from trying to address off the end of the blendtable (in my example, by +&D303E0 which sounds a bit like a 24b RGB pixel), but didn’t peer too deeply in where the table is supposed to have come from before running out of time. |
Andy S (2979) 504 posts |
Nice work, thanks Sprow. |