-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdblbuf.asm
87 lines (78 loc) · 1.49 KB
/
dblbuf.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
.macro switchBank() {
lda vicBank
eor #2
sta vicBank
}
.macro doSwitchBank() {
lda $dd00
eor #2
sta $dd00
}
.macro copySprites() {
fastMemCopy(sprbank1, sprbank2, sprsize)
}
.macro resetToStart() {
rleReset(bitmap, breadV, brunCount, brunByte)
rleReset(matrix, mreadV, mrunCount, mrunByte)
rleReset(colorram, rreadV, rrunCount, rrunByte)
}
.segment Code2 "DblBuf Code"
copyDblBitmap:
lda vicBank
beq !+
jmp bother
!: fastMemCopy(bmb2 + 8, bmb1, (13 * 8 * 40) - 8)
mov16 #(bmb1 + (39 * 8)) : wrV
jmp bdecrle
bother: fastMemCopy(bmb1 + 8, bmb2, (13 * 8 * 40) - 8)
mov16 #(bmb2 + (39 * 8)) : wrV
// Decode RLE Column
bdecrle: ldy #0
ldx #13
block2: tya; pha; ldy #0
rleNextByte(bitmap, breadV, brunCount, brunByte)
pla; tay
lda brunByte
sta (wrV),y
iny
cpy #8
bne block2
ldy #0
add16 wrV : #40 * 8: wrV
dex
bne block2
rts
.segment Code3 "DblBuf Code"
copyDblMatrix:
lda vicBank
beq !+
jmp mother
!: mov16 #smb1 + 39 : wrV
fastMemCopy(smb2 + 1, smb1, (13 * 40) - 1)
jmp mdecrle
mother: mov16 #smb2 + 39 : wrV
fastMemCopy(smb1 + 1, smb2, (13 * 40) - 1)
// Decode RLE Column
mdecrle: ldy #0
ldx #13
!: rleNextByte(matrix, mreadV, mrunCount, mrunByte)
lda mrunByte
sta (wrV),y
add16 wrV : #40 : wrV
dex
bne !-
rts
copyDblRam:
fastMemCopy($d800 + 1, rmb, (13 * 40) - 1)
unpackRamColumn:
// Unpack RLE Column
mov16 #rmb + 39 : wrV
ldy #0
ldx #13
!: rleNextByte(colorram, rreadV, rrunCount, rrunByte)
lda rrunByte
sta (wrV),y
add16 wrV : #40 : wrV
dex
bne !-
rts