forked from martinpiper/C64Public
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAnimationBitmap2.a
More file actions
181 lines (144 loc) · 3.35 KB
/
Copy pathAnimationBitmap2.a
File metadata and controls
181 lines (144 loc) · 3.35 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
; Bitmap animation test code
!source "../stdlib/stdlib.a"
!to "AnimationBitmap.prg", cbm
!sal
!sl "AnimationBitmap.map"
!svl "AnimationBitmap.lbl"
!pdb "AnimationBitmap.pdb"
!cpu 6510
!ct pet
!initmem %10100101
; Note in TODO
TestingExtraCompression = 1
CartSelectBank_ProcessorPort = ProcessorPortDefault
CartKillBank_ProcessorPort = ProcessorPortKERNALWithIO
DeltaDecompression_ZP_DeltaFrameLoHi = $10
!ifdef TestingExtraCompression {
DeltaDecompression_ZP_DeltaFrameCompressed = $12
}
;!source "../MakeCart/asm/GMod2_Macros.a"
!source "../MakeCart/asm/EasyFlash_Macros.a"
!source "../Animation/DeltaDecompressionMacros.a"
UseCartBanks = 1
StartCartBank = 4
; Define this if \CharPack.exe uses -sheetframes and -sheetinfo
SpriteSheetInfoBankOffset = $1000
;SpriteSheetFadeScreenPointers = 1
; MaxCartBank should equal the bank number after the last bank displayed by MakeCart for the animation delta data
;MaxCartBank = 57
MaxCartBank = 64
;MaxCartBank = 9
;NoLoopAnimation=1
!macro DeltaDecompression_AddressTweak {
clc
adc #4
}
ScreenColour = VIC2Colour_Black
*=$c000
sei
lda #CartSelectBank_ProcessorPort
jsr InitialiseMachine
; +WaitForFire_A
lda #ScreenColour
sta VIC2ScreenColour
sta VIC2BorderColour
lda #%00101000
sta VIC2MemorySetup
; lda #VIC2ScreenControlHDefault
lda #VIC2ScreenControlHDefault | %10000
sta VIC2ScreenControlH
lda #$ff
sta VIC2SpriteMulticolour
jsr DeltaDecompression_InitZP
.startDisplayingData
!ifdef UseCartBanks {
jsr DeltaDecompression_ResetFrame
jsr AnimationRestoreCartBank
}
.fr1
ldx #<$400
ldy #>$400
jsr RNXPCompressionDecompressDeltaRLE_InitStore
jsr DeltaDecompression_UnpackFrameEx
jsr DeltaDecompression_AdvanceFrameCount
+MACROWaitForTheLastScanPlus1_A
lda #%11
sta CIA2PortASerialBusVICBank
lda #VIC2ScreenControlVDefault | %100000
sta VIC2ScreenControlV
lda $be8
sta VIC2ScreenColour
lda #%00101000
sta VIC2MemorySetup
!ifdef SpriteSheetInfoBankOffset {
lda #<SpriteSheetInfoBankOffset
sta $02
lda #>SpriteSheetInfoBankOffset
sta $03
jsr ProcessSpriteSheetInfo
jsr DebugSpriteDisplayTest
}
+MDeltaDecompression_CopyColours $400
; +WaitForFire_A
jsr TestEndReached
.nextFrame
ldx #<$400
ldy #>$400
jsr RNXPCompressionDecompressDeltaRLE_InitStore
jsr DeltaDecompression_UnpackFrameEx
jsr DeltaDecompression_AdvanceFrameCount
+MACROWaitForTheLastScanPlus1_A
lda #%10
sta CIA2PortASerialBusVICBank
lda $4be8
sta VIC2ScreenColour
!ifdef SpriteSheetInfoBankOffset {
lda #<($4000 + SpriteSheetInfoBankOffset)
sta $02
lda #>($4000 + SpriteSheetInfoBankOffset)
sta $03
jsr ProcessSpriteSheetInfo
jsr DebugSpriteDisplayTest
}
+MDeltaDecompression_CopyColours $4400
; +WaitForFire_A
jsr TestEndReached
jmp .fr1
TestEndReached
!ifdef NoLoopAnimation {
lda DeltaDecompression_End
bne .fin
}
rts
!ifdef NoLoopAnimation {
.fin
inc VIC2BorderColour
jmp .fin
}
!source "../stdlib/Initialise.a"
!source "../Animation/DeltaDecompression.a"
!ifdef SpriteSheetInfoBankOffset {
!source "SpriteSheet.a"
}
DeltaDecompression_UnpackFrameEx
jsr AnimationRestoreCartBank
jsr DeltaDecompression_UnpackFrame
jsr AnimationKillCartBank
rts
AnimationKillCartBank
; sei
+MACRO_CartKillBank
; cli
rts
AnimationRestoreCartBank
; sei
jsr DeltaDecompression_GetBank
+MACRO_CartSelectBank_16K_NoSEI_A
; cli
rts
AnimationCode_End = *
!if * >= $d000 {
!error "Code is too large!"
}
*=$400
!bin "Data/frm-0001.del"