Posted by Luigi Di Fraia on September 16, 2002 at 23:08:14:
In Reply to: Re: Updated the CCS64 Bug-List posted by Luigi Di Fraia on September 11, 2002 at 19:18:02:
: The bug with Haunted House is caused by a problem with sprite collision detection (sprite-background characters, I would say).
Sprite to Background Collision Detect Register ($D01F)
Every bit that is set to 1 indicates that the corresponding sprite was involved in a collision with background data. On a real C64 the bits in this register remain set until read (PEEKed). Once read, the register is automatically cleared so that it can detect next collision.
CCS64 doesn't clear it after it's been read. Older versions of CCS64 suffer a deeper problem: collision with background data is not even detected in certain cases.
This behaviour may be causing the problem with "Haunted House". A sure fact is that the bug with this game is caused by a wrong emulation of the Sprite to Background Collision Detect Register. If you change the "LDA $D01F" at $1850 with "LDA #$00" followed by a "NOP" (in other words disable Sprite-background collision detection), the bug disappears (you've just gained an Action Replay "Sprite Killer" :).
Regards,
Luigi.