View Single Post
Old 07 October 2018, 09:05   #40
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,515
I was too tired, obviously there is vpos accesses because main loop simply polls it.. So the logic is simple: last chipset data access gets copied to first 16 pixels of wide sprite.

$0144 is last copper access (first copper move cycle: load register number, second copper move cycle: write value to previously loaded register). It also explains why active bitplane makes difference in specific horizontal positions: if bitplane access is between two copper moves (copper uses only every other cycles): it becomes last cycle before copper does final write to $144. This is now emulated.

Remaining unknown: sometimes first two 16-pixel sprite "parts" contains duplicated chipset data.

EDIT: One correction in 32-pixel wide sprites: if FMODE has normal 32-bit sprite mode enabled (FMODE bit 2 set), both 16 pixel halves contain written data. Only if FMODE bit 3 is set (without bit 2 being set = sprite DMA mode works strangely) results in first 16 pixel having data bus contents and last 16 pixels contain written data.

Last edited by Toni Wilen; 07 October 2018 at 09:57.
Toni Wilen is offline  
 
Page generated in 0.04274 seconds with 11 queries