Last active
February 25, 2022 12:38
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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