|
6 | 6 | * Calculates sprite X position register address |
7 | 7 | */ |
8 | 8 | .function spriteXReg(spriteNo) { |
9 | | - .return BASE + spriteNo * 2 |
| 9 | + .return BASE + spriteNo * 2 |
10 | 10 | } |
11 | 11 | .assert "Reg address for sprite0 X pos", spriteXReg(0), SPRITE_0_X |
12 | 12 | .assert "Reg address for sprite7 X pos", spriteXReg(7), SPRITE_7_X |
|
16 | 16 | * Calculates sprite Y position register address |
17 | 17 | */ |
18 | 18 | .function spriteYReg(spriteNo) { |
19 | | - .return spriteXReg(spriteNo) + 1 |
| 19 | + .return spriteXReg(spriteNo) + 1 |
20 | 20 | } |
21 | 21 | .assert "Reg address for sprite0 Y pos", spriteYReg(0), SPRITE_0_Y |
22 | 22 | .assert "Reg address for sprite7 Y pos", spriteYReg(7), SPRITE_7_Y |
|
26 | 26 | * Calculates sprite bit position |
27 | 27 | */ |
28 | 28 | .function spriteMask(spriteNo) { |
29 | | - .return pow(2, spriteNo) |
| 29 | + .return pow(2, spriteNo) |
30 | 30 | } |
31 | 31 | .assert "Bit mask for sprite 0", spriteMask(0), %00000001 |
32 | 32 | .assert "Bit mask for sprite 7", spriteMask(7), %10000000 |
|
36 | 36 | * Calculate sprite color register address |
37 | 37 | */ |
38 | 38 | .function spriteColorReg(spriteNo) { |
39 | | - .return SPRITE_0_COLOR + spriteNo |
| 39 | + .return SPRITE_0_COLOR + spriteNo |
40 | 40 | } |
41 | 41 | .assert "Reg address for sprite0 color", spriteColorReg(0), SPRITE_0_COLOR |
42 | 42 | .assert "Reg address for sprite7 color", spriteColorReg(7), SPRITE_7_COLOR |
|
47 | 47 | * MOD: A |
48 | 48 | */ |
49 | 49 | .macro @locateSpriteX(x, spriteNo) { |
50 | | - .if (x > 255) { |
51 | | - lda #<x |
52 | | - sta spriteXReg(spriteNo) |
53 | | - lda SPRITE_MSB_X |
54 | | - ora #spriteMask(spriteNo) |
55 | | - sta SPRITE_MSB_X |
56 | | - } else { |
57 | | - lda #x |
58 | | - sta spriteXReg(spriteNo) |
59 | | - } |
| 50 | + .if (x > 255) { |
| 51 | + lda #<x |
| 52 | + sta spriteXReg(spriteNo) |
| 53 | + lda SPRITE_MSB_X |
| 54 | + ora #spriteMask(spriteNo) |
| 55 | + sta SPRITE_MSB_X |
| 56 | + } else { |
| 57 | + lda #x |
| 58 | + sta spriteXReg(spriteNo) |
| 59 | + } |
60 | 60 | } |
61 | 61 | .assert "locateSpriteX stores X in SPRITE_X reg", { :locateSpriteX(5, 3) }, { |
62 | | - lda #$05 |
63 | | - sta SPRITE_3_X |
| 62 | + lda #$05 |
| 63 | + sta SPRITE_3_X |
64 | 64 | } |
65 | 65 | .assert "locateSpriteX stores X in SPRITE_X and MSB regs", { :locateSpriteX(257, 3) }, { |
66 | | - lda #$01 |
67 | | - sta SPRITE_3_X |
68 | | - lda SPRITE_MSB_X |
69 | | - ora #%00001000 |
70 | | - sta SPRITE_MSB_X |
| 66 | + lda #$01 |
| 67 | + sta SPRITE_3_X |
| 68 | + lda SPRITE_MSB_X |
| 69 | + ora #%00001000 |
| 70 | + sta SPRITE_MSB_X |
71 | 71 | } |
72 | 72 |
|
73 | 73 | /* |
74 | 74 | * Sets Y position of given sprite |
75 | 75 | * MOD: A |
76 | 76 | */ |
77 | 77 | .macro @locateSpriteY(y, spriteNo) { |
78 | | - lda #y |
79 | | - sta spriteYReg(spriteNo) |
| 78 | + lda #y |
| 79 | + sta spriteYReg(spriteNo) |
80 | 80 | } |
81 | 81 | .assert "locateSpriteY stores Y in SPRITE_Y reg", { :locateSpriteY(5, 3) }, { |
82 | | - lda #$05 |
83 | | - sta SPRITE_3_Y |
| 82 | + lda #$05 |
| 83 | + sta SPRITE_3_Y |
84 | 84 | } |
85 | 85 |
|
86 | 86 | /* |
87 | 87 | * Sets X,Y position of given sprite |
88 | 88 | * MOD A |
89 | 89 | */ |
90 | 90 | .macro @locateSprite(x, y, spriteNo) { |
91 | | - :locateSpriteX(x, spriteNo) |
92 | | - :locateSpriteY(y, spriteNo) |
| 91 | + :locateSpriteX(x, spriteNo) |
| 92 | + :locateSpriteY(y, spriteNo) |
93 | 93 | } |
0 commit comments