Skip to content

Instantly share code, notes, and snippets.

@intoinside
Last active February 25, 2022 12:38
Show Gist options
  • Save intoinside/e4485c6aa0b564df05072154a9ccb461 to your computer and use it in GitHub Desktop.
Save intoinside/e4485c6aa0b564df05072154a9ccb461 to your computer and use it in GitHub Desktop.
Some code snippet for copy bit #2 to bit #1. Can be extended to copy bit #x to bit #x-1
// First (worst) version
lda c64lib.SPRITE_MSB_X // 3by + 4cy
and #%00000100 // 2by + 2cy
beq SetBitToZero // 2by + 2cy
lda c64lib.SPRITE_MSB_X // 3by + 4cy
ora #%00000010 // 2by + 2cy
jmp !+ // 3by + 3cy
SetBitToZero:
lda c64lib.SPRITE_MSB_X // 3by + 4cy
and #%11111101 // 2by + 2cy
!:
sta c64lib.SPRITE_MSB_X // 3by + 4cy
//23by + 27cy
// Second version
lda c64lib.SPRITE_MSB_X // 3by + 4cy
and #%00000100 // 2by + 2cy
lsr // 1by + 2cy
sta temp // 3by + 4cy
lda c64lib.SPRITE_MSB_X // 3by + 4cy
and #%11111101 // 2by + 2cy
ora temp // 3by + 4cy
sta c64lib.SPRITE_MSB_X // 3by + 4cy
//20by + 26cy
// Second version using ZP vars
lda c64lib.SPRITE_MSB_X // 3by + 4cy
and #%00000100 // 2by + 2cy
lsr // 1by + 2cy
sta ZpVar1 // 2by + 3cy
lda c64lib.SPRITE_MSB_X // 3by + 4cy
and #%11111101 // 2by + 2cy
ora ZpVar1 // 2by + 3cy
sta c64lib.SPRITE_MSB_X // 3by + 4cy
//18by + 24cy
// Third version
lda c64lib.SPRITE_MSB_X // 3by + 4cy
and #%11111101 // 2by + 2cy
sta c64lib.SPRITE_MSB_X // 3by + 4cy
and #%00000100 // 2by + 2cy
lsr // 1by + 2cy
ora c64lib.SPRITE_MSB_X // 3by + 4cy
sta c64lib.SPRITE_MSB_X // 3by + 4cy
//17by + 22cy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment