View Single Post
Old 16 September 2013, 10:42   #58
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,519
Prurient fixed (stupid off-by-one bug)

Silly scroller finally fixed.

This was really difficult to debug because it was not actual chipset emulation bug but internal emulation bug (internal buffer was not always cleared correctly, this is another speed optimization, only clear just enough, never too much) when resolution or number of bitplanes change mid-scanline. For some reason this didn't trigger with Disposable Hero or others that really abuse BPLCON0 mid-scanline.

This is one of those demos that have (most likely accidental) BPLCON0 write mid-scanline. I am quite sure coder was confused, he probably thought it was some HRM or chipset bug, then he decided to adjust bitplane pointers and/or DDFSTOP/STRT until display was fixed.

RAF Megademo has similar problem. BPLCON0 is written too late, few cycles after DDFSTRT has matched. It causes first 2 bitplane fetches to be ignored. (2 because it is hires and OCS/ECS "display unit" is always 8 cycles, emulation bug caused second half of "display unit" to not be skipped in hires mode if first half didn't start) Unfortunately there is also some Denise internal feature that adds another shift (about 2 pixels) which is not yet fixed. (I don't have any ideas yet)

Coder actually had to add extra code to work around the shift in first line! (Instead of fixing the copper list)
Toni Wilen is offline  
 
Page generated in 0.09007 seconds with 11 queries