base:decrease_x_register_by_more_than_1
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
base:decrease_x_register_by_more_than_1 [2017-03-04 22:14] – [Decreasing the X register by more than 1] monte_carlos | base:decrease_x_register_by_more_than_1 [2017-03-30 12:44] (current) – ftc | ||
---|---|---|---|
Line 12: | Line 12: | ||
</ | </ | ||
- | This procedure takes 8 cycles (and 5 bytes in mem). If the value of the carry flag is always known at this point in the code, it can be removed and the snippet would then take 6 cycles (and 4 bytes in mem). However, there is another way to do it. You can use the illegal opcode SBX (sometimes called AXS). It operates like this: | + | This procedure takes 8 cycles (and 5 bytes in mem). If the value of the carry flag is always known at this point in the code, the SEC instruction |
- AND X with A and put result in X | - AND X with A and put result in X | ||
Line 43: | Line 43: | ||
====== Examples ====== | ====== Examples ====== | ||
- | ===== Fill sprite with vertical pattern (containing $ff, $7f, $3f) ===== | + | ===== Fill sprite with vertical pattern (containing $ff, $bf, $7f, $3f) ===== |
< | < | ||
Line 52: | Line 52: | ||
lda #yy | lda #yy | ||
sta spr+o1,x | sta spr+o1,x | ||
- | lda #$ff or $7f or $3f | + | lda #$ff or $bf or $7f or $3f |
sta spr+o2,x | sta spr+o2,x | ||
axs#3 | axs#3 | ||
Line 60: | Line 60: | ||
where o0,o1,o2 is an excluding choice of {0,1,2}. | where o0,o1,o2 is an excluding choice of {0,1,2}. | ||
- | On one column of the sprite a must contain $ff, $7f or $3f, because if it is anded with the value of the x reg, x must be contained. As x runs from 60 to 0 (where 63 is $3f) this is only the case for these three values. | + | On one column of the sprite a must contain $ff, $bf, $7f or $3f, because if it is anded with the value of the x reg, x must be preserved. As x runs from 60 to 0 (where 63 is $3f) this is only the case for these four values. |
===== Info on SBX/AXS on external sites ===== | ===== Info on SBX/AXS on external sites ===== | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// |
base/decrease_x_register_by_more_than_1.1488662092.txt.gz · Last modified: 2017-03-04 22:14 by monte_carlos