View Single Post
Old 02 February 2014, 16:12   #592
Toni Wilen
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 42
Posts: 20,476
Originally Posted by Toni Wilen View Post
Does not happen on real A500 but there is something strange going on because exactly identical glitch appears if I enter Action Replay 3 and then exit it..

EDIT: AR3 is just a side-effect, nothing to do with real problem, it is emulation missing feature that hasn't been triggered until now. Demo has really funny accidental bug.

Copperlist sets 3 plane lores mode, then after 3 full bitplane fetches it writes zero to BPLCON0, immediately after last "fetch block's" BPL1DAT write. This last write has some zeros in upper bits (something like $0xxx), Denise is quick enough to switch of bitplane output just before non-zero data gets shifted out.. This "Agnus fetched it all but Denise didn't output it all" condition isn't emulated.

100% accidental, there is no way coder did this on purpose

EDIT2: Above is slightly wrong, writing to BPLCON0 after Denise starts shifting won't do anything but if BPLCON0 is written immediately after BPL1DAT write, it will prevent Denise from starting to output new 16 bits of data.
Fixed and hopefully correctly fixed..

It appears Denise does not copy temp stored bitplane data to shift register when BPLCON1 matches if bitplane is disabled. (And this demo disables all planes just early enough). At least this is logical enough explanation..
Toni Wilen is online now  
Page generated in 0.08558 seconds with 9 queries