Sprite port-mirror Index Register: Difference between revisions
Core 2.00.22 changes, and forum knowledge from Jim Bagley distilled. |
read register detail extended by info from Allen |
||
| (5 intermediate revisions by 3 users not shown) | |||
| Line 3: | Line 3: | ||
|Readable=Yes | |Readable=Yes | ||
|Writable=Yes | |Writable=Yes | ||
|ShortDesc=Selects sprite index 0.. | |ShortDesc=Selects sprite index 0..127 to be affected by writes to other Sprite ports (and mirrors). | ||
}} | }} | ||
If sprite id lockstep in {{NextRegNo|$09}} is enabled, write to this registers has same effect as writing to {{PortNo|$303B}}. | |||
I.e. bit 7 offsets pattern writes by 128 bytes (second half of 0..63 pattern slot), and bits 6-0 contain index 0..63 (for patterns) or 0..127 for sprite attributes, resetting those indices for ports {{PortNo|$xx57}} and {{PortNo|$xx5B}} and for following NextRegs $35..$39 and $75..$79. | |||
Index-increments caused by write to NextRegs $75..$79 will propagate also to current index of port $xx57 and reset current attribute (next write to port $xx57 after index change will modify first byte of attributes). | |||
The index increment caused by sending full attribute set to port $xx57, or by writing to port $303B, will also propagate to this register, affecting next writes to registers $35..$39/$75..$79. | |||
------- | |||
If sprite id lockstep in {{NextRegNo|$09}} is disabled, bit 7 is ignored and bits 6-0 value selects index 0..127 for NextRegs $35..$39 and $75..$79 (decoupled from ports $xx57/$303B completely). | |||
------- | |||
The read will in every mode return the sprite id (not pattern id) and bit 7 always reads back as zero. | |||
Latest revision as of 20:56, 6 December 2019
| Number | TBRegisterNumber::$34 |
|---|---|
| Readable | TBRegisterReadable::Yes |
| Writable | TBRegisterWritable::Yes |
| Short Description | ShortDesc::Selects sprite index 0..127 to be affected by writes to other Sprite ports (and mirrors). |
If sprite id lockstep in {{#ask: TBRegisterNumber::$09 }} ($09) is enabled, write to this registers has same effect as writing to {{#ask: PortNumber::$303B }} ($303B{{#ask: PortNumber::$303B |mainlabel=- |headers=hide |intro= / |?NumberDec#- }}).
I.e. bit 7 offsets pattern writes by 128 bytes (second half of 0..63 pattern slot), and bits 6-0 contain index 0..63 (for patterns) or 0..127 for sprite attributes, resetting those indices for ports {{#ask: PortNumber::$xx57 }} ($xx57{{#ask: PortNumber::$xx57 |mainlabel=- |headers=hide |intro= / |?NumberDec#- }}) and {{#ask: PortNumber::$xx5B }} ($xx5B{{#ask: PortNumber::$xx5B |mainlabel=- |headers=hide |intro= / |?NumberDec#- }}) and for following NextRegs $35..$39 and $75..$79.
Index-increments caused by write to NextRegs $75..$79 will propagate also to current index of port $xx57 and reset current attribute (next write to port $xx57 after index change will modify first byte of attributes).
The index increment caused by sending full attribute set to port $xx57, or by writing to port $303B, will also propagate to this register, affecting next writes to registers $35..$39/$75..$79.
If sprite id lockstep in {{#ask: TBRegisterNumber::$09 }} ($09) is disabled, bit 7 is ignored and bits 6-0 value selects index 0..127 for NextRegs $35..$39 and $75..$79 (decoupled from ports $xx57/$303B completely).
The read will in every mode return the sprite id (not pattern id) and bit 7 always reads back as zero.