Hmmm... Strange... Have you tried wrapping your getput1 calls in disable_nmi() and enable_nmi() calls, just to see if it fixes the problem?
Yes, I've done that. I've combed through all the code ensuring that. Note that I'm not really getting the type of glitch where just a few items on the screen get messed up (temporarily, until re-written).
What is happening is that the actual character set is being re-written permanently. It happens in BlueMSX and on a real ColecoVision. The blue car should look like the pink car, just in the opposite direction. You can see some of the characters (numbers 15-18... 15 is blank, 16 is blank, 17 looks like part of the sprite, 18 I don't recognize). The last I recall, it sometimes happens to other characters also. The only way to get the proper characters back is to reload them, which usually only happens at the set-up stage of the program (at the beginning).
Here's a few small portions of the code:
extern byte PATTERN1;
extern byte PATTERN2;
extern byte SPATTERN0;
extern byte SPATTERN1;
sprites.pattern = 0;
sprites.y = ygrid*24+56;
Edit: maybe I need to manually set up the locations of the character and sprite data in VRAM somehow?
Edited by 5-11under, Mon Feb 16, 2015 1:38 PM.