I was trying to optimize my current program. For speed reasons I purposefully kept a sprite X value shifted 8 bits to the left ( x 256) because then I could put in into the VRAM X position space quickly by shifting it to the right by ONE place. (instead of the usual 7 to the left)

However when I did this the sprite didn't display correctly. (in my case the sprite just disappeared although this may be because it was placed somewhere else on screen)

BUT I found if I then cleared bits 0-6 with "AND $FF80" it worked as expected

Is there a reason why the first 6 bits must be kept to 0? I was wondering if they might be a secret mirror of the Y reg first 7 bits?? (sticky bit and sprite size) or is this simply an older MAME issue? (I am still using an old version of MAME. I haven't had time to test this in a newer version yet)




It's working as it should. Long story but this turned out to be a pure coincidence - a fault elsewhere in my program that then stopped happening at the same time as I made that change.

At least I don't have to add that AND anymore