Sprite and Layers System Register: Difference between revisions
core 3.0 changes/refresh |
core 3.1.3 changes/refresh |
||
| Line 38: | Line 38: | ||
| %101 || U L S | | %101 || U L S | ||
|- | |- | ||
| %110 || S (U+L) Colours from ULA and Layer 2 are added (per R/G/B channel) and clamped to 7. | | %110 || | since core3.1.1: (U|T)S(T|U)(B+L) Blending layer and Layer 2 combined, colours clamped to [0,7] | ||
<del>S (U+L) Colours from ULA and Layer 2 are added (per R/G/B channel) and clamped to 7.</del> | |||
|- | |- | ||
| %111 || S (U+L-5) Similar as previous, but per R/G/B channel (U+L-5) is calculated and result is clamped by 0..7 range. | | %111 || | since core3.1.1: (U|T)S(T|U)(B+L-5) Blending layer and Layer 2 combined, colours clamped to [0,7] | ||
<del>S (U+L-5) Similar as previous, but per R/G/B channel (U+L-5) is calculated and result is clamped by 0..7 range.</del> | |||
|} | |} | ||
In layer mixing modes (%110 and %111) the "priority bit 7" of Layer 2 colour is propagated through the calculation, i.e. such pixel will raise above sprites even in mixing modes. If either U or L layer contains ''transparent'' colour pixel, the other layer pixel is drawn unchanged (skipping mixing calculation). | In layer mixing modes (%110 and %111) the "priority bit 7" of Layer 2 colour is propagated through the calculation, i.e. such pixel will raise above sprites even in mixing modes. If either U|T or L layer contains ''transparent'' colour pixel, the other layer pixel is drawn unchanged (skipping mixing calculation). | ||
Since core3.1.1 the blending modes allow for layer non-contributing-to-blending (use {{NextRegNo|$68}} to configure blending sub-mode) to show independently in front of sprites. | |||
When both "over border" (bit 1) and "clipping over border" (bit 5) is enabled, the Sprite clipping window {{NextRegNo|$19}} '''X-axis''' coordinates are "doubled", and coordinates origin is moved from pixel [0,0] position to sprite [0,0] position ([-32,-32] pixel position). For example: setting clip coordinates as {x1:5, x2:155, y1:7, y2:248} will make sprites visible in area [10,7]..[311,248] (inclusively) in sprite coordinates, i.e. the first visible pixel is at X1*2 coordinate, and last visible pixel is at X2*2+1 coordinate. | When both "over border" (bit 1) and "clipping over border" (bit 5) is enabled, the Sprite clipping window {{NextRegNo|$19}} '''X-axis''' coordinates are "doubled", and coordinates origin is moved from pixel [0,0] position to sprite [0,0] position ([-32,-32] pixel position). For example: setting clip coordinates as {x1:5, x2:155, y1:7, y2:248} will make sprites visible in area [10,7]..[311,248] (inclusively) in sprite coordinates, i.e. the first visible pixel is at X1*2 coordinate, and last visible pixel is at X2*2+1 coordinate. | ||
Revision as of 07:49, 13 April 2020
| Number | TBRegisterNumber::$15 |
|---|---|
| Readable | TBRegisterReadable::Yes |
| Writable | TBRegisterWritable::Yes |
| Short Description | [[ShortDesc::Enables/disables Sprites and Lores Layer, and chooses priority of sprites and Layer 2.]] |
Bitmapped as follows:
| Bit | Function |
|---|---|
| 7 | Enable Lores Layer |
| 6 | If 1, the sprite rendering priority is flipped, i.e. sprite 0 is on top of other sprites (0 after reset) |
| 5 | If 1, the clipping works even in "over border" mode (doubling X-axis coordinates of clip window) (0 after reset) |
| 4-2 | Layers priority and mixing |
| 1 | Enable sprites over border (0 after reset) |
| 0 | Enable sprite visibility (0 after reset) |
| Bits 4-2 | Priority and mixing of layers |
|---|---|
| %000 | S L U (Sprites are at top, Layer 2 under, Enhanced_ULA at bottom) |
| %001 | L S U |
| %010 | S U L |
| %011 | L U S |
| %100 | U S L |
| %101 | U L S |
| %110 | since core3.1.1: (U|T)S(T|U)(B+L) Blending layer and Layer 2 combined, colours clamped to [0,7]
|
| %111 | since core3.1.1: (U|T)S(T|U)(B+L-5) Blending layer and Layer 2 combined, colours clamped to [0,7]
|
In layer mixing modes (%110 and %111) the "priority bit 7" of Layer 2 colour is propagated through the calculation, i.e. such pixel will raise above sprites even in mixing modes. If either U|T or L layer contains transparent colour pixel, the other layer pixel is drawn unchanged (skipping mixing calculation).
Since core3.1.1 the blending modes allow for layer non-contributing-to-blending (use {{#ask: TBRegisterNumber::$68 }} ($68) to configure blending sub-mode) to show independently in front of sprites.
When both "over border" (bit 1) and "clipping over border" (bit 5) is enabled, the Sprite clipping window {{#ask: TBRegisterNumber::$19 }} ($19) X-axis coordinates are "doubled", and coordinates origin is moved from pixel [0,0] position to sprite [0,0] position ([-32,-32] pixel position). For example: setting clip coordinates as {x1:5, x2:155, y1:7, y2:248} will make sprites visible in area [10,7]..[311,248] (inclusively) in sprite coordinates, i.e. the first visible pixel is at X1*2 coordinate, and last visible pixel is at X2*2+1 coordinate.