-
Notifications
You must be signed in to change notification settings - Fork 12
/
flexlinedistance.asm
490 lines (414 loc) · 34.9 KB
/
flexlinedistance.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
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
; -- FLD (Flexible line distance) Example --
;
; Code: Jesder / 0xc64 / Hokuto Force
; Platform: C64
; Compiler: win2c64 (http://www.aartbik.com)
; About: Simple FLD effect to bounce a bitmap logo
;
; common register definitions
REG_INTSERVICE_LOW .equ $0314 ; interrupt service routine low byte
REG_INTSERVICE_HIGH .equ $0315 ; interrupt service routine high byte
REG_SCREENCTL_1 .equ $d011 ; screen control register #1
REG_RASTERLINE .equ $d012 ; raster line position
REG_SCREENCTL_2 .equ $d016 ; screen control register #2
REG_MEMSETUP .equ $d018 ; memory setup register
REG_INTFLAG .equ $d019 ; interrupt flag register
REG_INTCONTROL .equ $d01a ; interrupt control register
REG_BORCOLOUR .equ $d020 ; border colour register
REG_BGCOLOUR .equ $d021 ; background colour register
REG_INTSTATUS_1 .equ $dc0d ; interrupt control and status register #1
REG_INTSTATUS_2 .equ $dd0d ; interrupt control and status register #2
; constants
C_SCREEN_RAM .equ $0400 ; screen RAM
C_COLOUR_RAM .equ $d800 ; colour ram
; program start
.org $0801 ; begin (2049)
.byte $0b, $08, $01, $00, $9e, $32, $30, $36
.byte $31, $00, $00, $00 ;= SYS 2061
; create initial interrupt
sei ; set up interrupt
lda #$7f
sta REG_INTSTATUS_1 ; turn off the CIA interrupts
sta REG_INTSTATUS_2
and REG_SCREENCTL_1 ; clear high bit of raster line
sta REG_SCREENCTL_1
ldy #000
sty REG_RASTERLINE
lda #<sync_intro ; load interrupt address
ldx #>sync_intro
sta REG_INTSERVICE_LOW
stx REG_INTSERVICE_HIGH
lda #$01 ; enable raster interrupts
sta REG_INTCONTROL
cli
; forever loop
forever jmp forever
; helper routines -------------------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
apply_interrupt sta REG_RASTERLINE ; apply next interrupt
stx REG_INTSERVICE_LOW
sty REG_INTSERVICE_HIGH
jmp $ea81
; intro sync ------------------------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
sync_intro inc REG_INTFLAG ; acknowledge interrupt
ldx #000 ; relocate bitmap colour/screen data
setup_bitmap_data lda bitmap_screen_data, x
sta $0428, x
lda bitmap_screen_data + $40, x
sta $0468, x
lda bitmap_colour_ram, x
sta $d828, x
lda bitmap_colour_ram + $40, x
sta $d868, x
inx
bne setup_bitmap_data
lda #255 ; init video garbage
sta $3fff ; fill to highlight fld for debugging
lda #001 ; test characters
sta $400 ; used to verify character positions before / after fld
sta $770
jmp hook_init_frame_fld
; init frame fld state --------------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
hook_init_frame_fld lda #015
ldx #<init_frame_fld
ldy #>init_frame_fld
jmp apply_interrupt
init_frame_fld inc REG_INTFLAG
lda #$1b ; restore register to default
sta REG_SCREENCTL_1
jmp hook_bitmap_start
; begin rendering bitmap ------------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
hook_bitmap_start lda #057
ldx #<render_bitmap_start
ldy #>render_bitmap_start
jmp apply_interrupt
render_bitmap_start ldx #000 ; apply fld effect to top of logo
beq bitmap_top_fld_done ; no fld? then skip past this
wait_bitmap_top_fld lda REG_RASTERLINE
cmp REG_RASTERLINE
beq wait_bitmap_top_fld + 3
lda REG_SCREENCTL_1
adc #001 ; delay next bad scan line
and #007
ora #$18
sta REG_SCREENCTL_1
dex
bne wait_bitmap_top_fld
bitmap_top_fld_done ldx #012 ; wait for raster to get into position for bitmap
dex
bne bitmap_top_fld_done + 2
inc REG_INTFLAG ; acknowledge interrupt
clc
lda REG_SCREENCTL_1 ; switch bitmap mode on
and #007
adc #056
sta REG_SCREENCTL_1
lda #029 ; set bitmap & screen memory pointer
sta REG_MEMSETUP
lda #216 ; switch multi colour mode on
sta REG_SCREENCTL_2
jmp hook_bitmap_end
; complete rendering bitmap ---------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
hook_bitmap_end lda #121
ldx #<render_bitmap_end
ldy #>render_bitmap_end
jmp apply_interrupt
render_bitmap_end ldx #015
wait_bitmap_bot_fld lda REG_RASTERLINE
cmp REG_RASTERLINE
beq wait_bitmap_bot_fld + 3
lda REG_SCREENCTL_1
adc #001
and #007
ora #056
sta REG_SCREENCTL_1
dex
bpl wait_bitmap_bot_fld
ldx #008
latch_final_bitmap_line dex
bne latch_final_bitmap_line
inc REG_INTFLAG ; acknowledge interrupt
clc
lda REG_SCREENCTL_1 ; bitmap off
and #007 ; maintain current vertical scroll bits
adc #024
sta REG_SCREENCTL_1
lda #021
sta REG_MEMSETUP
lda #200 ; multi colour mode off
sta REG_SCREENCTL_2
jmp hook_update_logo_fld
; update fld effect -----------------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
hook_update_logo_fld lda #250
ldx #<update_logo_fld
ldy #>update_logo_fld
jmp apply_interrupt
update_logo_fld inc REG_INTFLAG
dec logo_bounce_delay ; smooth logo bounce effect
bne update_logo_fld_done
lda #002
sta logo_bounce_delay
ldx logo_bounce_index ; advance bounce height index
inx
txa
and #015 ; loop bounce index to start
sta logo_bounce_index
clc
tax
lda logo_bounce_heights, x ; grab next height
tay
adc #121 ; adjust bitmap ending interrupt
sta hook_bitmap_end + 1
sty render_bitmap_start + 1 ; set number of fld lines before the bitmap
clc
lda #016 ; set number of fld lines after the bitmap
sbc render_bitmap_start + 1
sta render_bitmap_end + 1
update_logo_fld_done jmp hook_init_frame_fld
; variables -----------------------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
logo_bounce_heights .byte 000, 000, 001, 001, 003, 005, 008, 013, 015, 012, 009, 006, 003, 001, 001, 000
logo_bounce_index .byte 000
logo_bounce_delay .byte 002
; bitmap colour data ----------------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
bitmap_screen_data .byte $3e, $1a, $fa, $fa, $60, $e6, $6e, $6e, $e3, $23, $30, $6e, $3e, $30, $30, $3e
.byte $e6, $60, $60, $60, $00, $00, $00, $60, $60, $e6, $e0, $3e, $30, $00, $00, $60
.byte $63, $36, $3e, $30, $fa, $fa, $ca, $3e, $fa, $fa, $fa, $fa, $fa, $fa, $c6, $c6
.byte $16, $cf, $3c, $c3, $cf, $c3, $10, $c6, $e6, $b5, $b9, $b9, $19, $cb, $c0, $9c
.byte $9b, $cb, $9b, $c6, $5b, $9b, $f1, $00, $63, $60, $fa, $fa, $fa, $f7, $7f, $fa
.byte $f2, $f2, $92, $2c, $f2, $f2, $ca, $c6, $cf, $c4, $cf, $e3, $ce, $cf, $cf, $ce
.byte $e6, $5b, $98, $b5, $51, $cb, $c0, $9b, $9b, $9b, $9b, $e6, $65, $98, $fb, $9b
.byte $91, $a2, $af, $fa, $a2, $2a, $2a, $fa, $c2, $29, $92, $c9, $9a, $92, $ca, $ca
.byte $cf, $ca, $cf, $c6, $c6, $cf, $c6, $c6, $c6, $b8, $ba, $5b, $3e, $63, $c6, $89
.byte $8f, $fb, $00, $c6, $8d, $89, $fb, $9b, $9b, $a2, $a2, $29, $92, $a9, $a9, $2a
.byte $2a, $29, $b9, $b9, $9b, $2c, $c7, $37, $cf, $c7, $c7, $c6, $c4, $c4, $c4, $c4
.byte $c4, $b1, $d1, $5b, $00, $6e, $d3, $db, $db, $9b, $9c, $db, $d3, $d3, $d3, $d3
.byte $13, $db, $2a, $19, $13, $b9, $92, $12, $20, $92, $ac, $30, $c6, $c0, $73, $37
.byte $cf, $ec, $c3, $c7, $c3, $c7, $c4, $c4, $c5, $d3, $53, $50, $b1, $5b, $3b, $3d
.byte $5d, $1b, $31, $5b, $5b, $35, $5b, $53, $5c, $3b, $e3, $13, $92, $9a, $2a, $20
.byte $28, $20, $9a, $2b, $9b, $c3, $3e, $e3, $cf, $c3, $ce, $37, $3e, $37, $c7, $e3
.byte $b5, $53, $3e, $b5, $b3, $b5, $3b, $c5, $b3, $3b, $35, $db, $fe, $7f, $7f, $3b
.byte $f1, $60, $93, $29, $2a, $92, $92, $29, $28, $28, $28, $20, $92, $c2, $ce, $ce
.byte $cf, $ce, $cf, $f1, $f1, $ce, $c3, $cf, $5b, $5b, $5b, $b5, $b5, $5b, $cb, $5b
.byte $d5, $5b, $5b, $5b, $3e, $63, $c6, $5b, $5c, $29, $28, $28, $28, $28, $a2, $2a
bitmap_colour_ram .byte $01, $03, $0e, $02, $00, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01, $01
.byte $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
.byte $01, $01, $06, $01, $01, $00, $01, $01, $00, $07, $07, $07, $07, $06, $0a, $0f
.byte $0f, $06, $01, $01, $01, $01, $0f, $01, $00, $09, $08, $0f, $0b, $01, $01, $0f
.byte $0c, $01, $0c, $01, $00, $0c, $00, $01, $01, $01, $06, $07, $07, $0a, $0a, $0e
.byte $0a, $0a, $0a, $0a, $0a, $0a, $04, $04, $01, $06, $01, $01, $0f, $0e, $01, $0f
.byte $00, $09, $0b, $01, $09, $01, $01, $0f, $0f, $08, $08, $00, $0d, $00, $01, $0f
.byte $0f, $01, $02, $02, $09, $09, $0f, $02, $0a, $0a, $0a, $0a, $02, $0a, $01, $01
.byte $00, $01, $06, $01, $01, $06, $0f, $0f, $01, $01, $01, $00, $01, $00, $01, $0b
.byte $09, $01, $01, $01, $01, $01, $0c, $08, $08, $01, $09, $0a, $0a, $02, $02, $09
.byte $01, $0a, $01, $01, $06, $09, $01, $01, $01, $01, $03, $01, $03, $06, $06, $01
.byte $0b, $0d, $03, $01, $01, $00, $01, $01, $01, $08, $08, $00, $01, $01, $01, $01
.byte $0d, $01, $09, $03, $09, $01, $0a, $0a, $01, $0a, $09, $01, $01, $01, $0e, $0e
.byte $01, $03, $0e, $01, $01, $01, $01, $01, $0b, $05, $0d, $01, $0d, $00, $0d, $05
.byte $03, $03, $05, $0d, $03, $0b, $03, $0d, $03, $0c, $00, $06, $0a, $00, $09, $01
.byte $01, $01, $02, $09, $00, $01, $01, $00, $01, $0e, $03, $0f, $01, $0c, $01, $01
.byte $0c, $00, $05, $00, $05, $0d, $05, $01, $05, $05, $00, $05, $01, $01, $01, $05
.byte $05, $01, $0e, $06, $09, $0a, $00, $08, $0a, $0a, $01, $01, $00, $09, $01, $0f
.byte $01, $0f, $00, $0e, $0e, $07, $0e, $0e, $0c, $00, $00, $01, $00, $00, $05, $00
.byte $0b, $0d, $00, $00, $01, $01, $01, $00, $0f, $01, $09, $0a, $01, $01, $08, $08
bitmap_padding_to_2000 .align 1024
nop
.align 1024
nop
.align 1024
nop
.align 1024
nop
.align 1024
nop
.align 1024
; bitmap image ----------------------------------------------------------------------------------------------------]
; -----------------------------------------------------------------------------------------------------------------]
;$2000
bitmap_memory_start .byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
;$2140
bitmap_data .byte $00, $00, $00, $04, $0c, $7f, $0c, $04, $40, $00, $30, $00, $00, $c0, $00, $02
.byte $c0, $00, $00, $00, $00, $00, $aa, $95, $00, $00, $00, $00, $00, $00, $a8, $5a
.byte $00, $00, $00, $01, $00, $00, $00, $00, $00, $08, $00, $00, $04, $00, $00, $00
.byte $00, $04, $00, $81, $10, $00, $00, $00, $00, $08, $00, $00, $00, $10, $00, $00
.byte $00, $04, $10, $00, $40, $04, $00, $00, $00, $00, $02, $00, $20, $00, $00, $00
.byte $00, $0c, $00, $00, $00, $00, $01, $00, $08, $00, $00, $00, $0c, $00, $00, $10
.byte $c3, $00, $00, $21, $00, $00, $00, $00, $00, $10, $30, $fd, $30, $10, $00, $00
.byte $00, $00, $01, $00, $00, $0c, $00, $00, $00, $00, $08, $00, $10, $00, $00, $00
.byte $00, $04, $00, $00, $42, $00, $00, $00, $00, $00, $01, $00, $00, $10, $00, $00
.byte $00, $00, $00, $10, $00, $00, $00, $00, $00, $40, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00
.byte $00, $00, $10, $00, $01, $00, $00, $00, $40, $00, $81, $00, $00, $00, $00, $00
.byte $04, $00, $00, $00, $00, $04, $00, $00, $00, $00, $01, $03, $1f, $03, $01, $80
.byte $00, $00, $0c, $00, $d0, $00, $00, $00, $0c, $00, $00, $c0, $00, $00, $00, $00
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $10, $00, $00, $00, $00, $00
.byte $00, $00, $01, $00, $40, $02, $03, $2f, $00, $04, $00, $00, $08, $00, $00, $d0
.byte $80, $00, $04, $00, $00, $03, $00, $c0, $04, $00, $00, $00, $30, $00, $00, $00
.byte $00, $00, $30, $00, $00, $00, $2a, $a5, $00, $00, $00, $00, $00, $00, $aa, $56
.byte $00, $00, $00, $0c, $00, $00, $00, $80, $0c, $00, $04, $00, $80, $00, $02, $00
.byte $00, $00, $00, $00, $02, $0a, $09, $29, $0a, $29, $a7, $9f, $7d, $75, $56, $59
.byte $7f, $ff, $dd, $55, $56, $69, $9a, $aa, $f5, $fd, $df, $57, $65, $99, $aa, $aa
.byte $80, $60, $58, $d6, $d5, $75, $5d, $95, $03, $00, $00, $00, $00, $80, $60, $60
.byte $02, $09, $06, $06, $06, $06, $06, $06, $57, $aa, $aa, $a0, $aa, $aa, $80, $aa
.byte $f5, $80, $a8, $00, $0f, $30, $30, $30, $a7, $01, $00, $00, $00, $40, $70, $7c
.byte $00, $00, $81, $80, $80, $80, $80, $87, $00, $00, $00, $00, $00, $80, $c0, $f8
.byte $55, $40, $48, $80, $40, $80, $8b, $c0, $55, $01, $01, $01, $81, $c1, $f9, $c1
.byte $0f, $0c, $0c, $0c, $0c, $04, $0c, $04, $54, $04, $84, $24, $84, $24, $04, $04
.byte $00, $21, $00, $00, $04, $00, $00, $00, $00, $01, $04, $04, $04, $07, $0b, $07
.byte $55, $00, $08, $20, $82, $8a, $2b, $af, $ff, $00, $2a, $2a, $15, $10, $10, $10
.byte $54, $09, $02, $a0, $c0, $c8, $e8, $e8, $00, $00, $c0, $c0, $40, $40, $40, $40
.byte $00, $00, $00, $00, $00, $00, $00, $00, $0a, $24, $90, $90, $80, $c0, $80, $c1
.byte $ba, $00, $00, $00, $02, $12, $12, $02, $5f, $00, $00, $00, $a8, $08, $08, $08
.byte $c0, $30, $0c, $0c, $0c, $4c, $48, $0c, $00, $00, $00, $0c, $00, $00, $00, $08
.byte $0a, $08, $08, $08, $08, $08, $04, $08, $ef, $00, $00, $00, $40, $40, $04, $00
.byte $50, $10, $10, $20, $10, $20, $20, $20, $00, $00, $00, $00, $00, $00, $00, $00
.byte $03, $02, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $10, $00, $00, $00
.byte $00, $00, $00, $c0, $00, $02, $09, $09, $02, $09, $25, $97, $57, $5d, $75, $56
.byte $5f, $7f, $f7, $d5, $59, $66, $aa, $aa, $a9, $aa, $66, $55, $d5, $7d, $f7, $ff
.byte $f0, $bc, $6f, $5b, $96, $a6, $ea, $ba, $00, $03, $00, $00, $80, $a0, $60, $68
.byte $35, $35, $f5, $d7, $df, $7f, $de, $7f, $7f, $7f, $fe, $fb, $ee, $ba, $ea, $aa
.byte $ee, $bb, $ea, $aa, $aa, $aa, $9b, $6e, $dd, $77, $55, $55, $55, $55, $75, $dd
.byte $f5, $bd, $ef, $bb, $ae, $ab, $aa, $ea, $5c, $5c, $d7, $f5, $fd, $bf, $ef, $bb
.byte $07, $07, $07, $07, $87, $87, $87, $85, $aa, $aa, $aa, $fe, $aa, $fe, $ff, $7f
.byte $30, $30, $20, $20, $10, $20, $10, $20, $6c, $6c, $7c, $7c, $68, $68, $68, $68
.byte $80, $80, $c0, $80, $c0, $c0, $80, $c0, $c0, $80, $00, $10, $00, $40, $00, $04
.byte $c0, $c0, $c0, $43, $c0, $48, $40, $40, $81, $02, $01, $32, $02, $32, $02, $02
.byte $0c, $0c, $0c, $08, $0c, $08, $08, $08, $cc, $04, $8c, $0c, $0c, $8c, $0c, $0c
.byte $00, $08, $00, $00, $10, $00, $00, $00, $07, $07, $07, $07, $07, $07, $0b, $07
.byte $6a, $a6, $96, $5a, $6a, $ab, $af, $bf, $10, $20, $20, $20, $30, $30, $20, $20
.byte $7c, $7c, $70, $70, $4c, $bc, $bc, $a5, $80, $80, $40, $80, $80, $83, $80, $80
.byte $00, $00, $30, $00, $00, $00, $00, $00, $c1, $c0, $c4, $c5, $c1, $d0, $94, $d5
.byte $42, $52, $12, $12, $52, $52, $13, $12, $09, $09, $08, $09, $09, $0b, $0b, $0a
.byte $48, $48, $48, $48, $48, $48, $c8, $a8, $00, $80, $00, $08, $00, $00, $00, $04
.byte $08, $48, $08, $08, $0c, $08, $0c, $0c, $10, $11, $00, $14, $54, $40, $55, $55
.byte $30, $30, $30, $30, $30, $10, $30, $10, $ab, $80, $80, $80, $81, $90, $85, $95
.byte $fa, $02, $42, $03, $43, $03, $43, $03, $00, $00, $00, $00, $02, $02, $09, $05
.byte $1a, $da, $e9, $e5, $55, $57, $5d, $77, $5a, $6b, $ae, $bb, $ef, $bf, $ff, $fe
.byte $99, $66, $aa, $aa, $aa, $aa, $a6, $99, $66, $99, $56, $55, $55, $55, $9d, $67
.byte $ab, $ab, $6a, $9a, $66, $59, $56, $55, $58, $58, $5a, $96, $a6, $a9, $e6, $a9
.byte $fa, $fe, $fa, $ee, $fa, $ea, $aa, $ea, $5a, $65, $5b, $69, $97, $6f, $67, $af
.byte $bf, $ff, $ff, $ff, $f9, $e5, $d4, $91, $ff, $ff, $ff, $ff, $aa, $aa, $88, $00
.byte $ef, $bb, $ae, $ab, $ea, $5e, $55, $15, $ae, $ab, $aa, $ea, $fa, $fe, $bf, $6c
.byte $85, $85, $86, $87, $87, $87, $07, $07, $55, $55, $95, $e5, $f9, $fe, $ff, $ff
.byte $10, $10, $10, $10, $10, $10, $20, $10, $54, $54, $54, $54, $54, $68, $7c, $7c
.byte $80, $80, $80, $40, $80, $4c, $40, $43, $00, $00, $30, $00, $00, $00, $08, $00
.byte $68, $68, $60, $6a, $68, $6a, $6a, $55, $c1, $02, $01, $f1, $01, $f1, $f1, $71
.byte $0e, $06, $0c, $04, $06, $06, $06, $54, $0c, $0c, $84, $8c, $84, $84, $04, $54
.byte $02, $00, $00, $00, $00, $00, $00, $00, $06, $05, $05, $05, $06, $07, $07, $07
.byte $56, $5b, $6f, $bf, $ff, $ff, $ff, $ff, $10, $20, $10, $20, $20, $20, $20, $20
.byte $00, $00, $00, $00, $00, $10, $00, $08, $01, $06, $01, $80, $00, $00, $01, $00
.byte $00, $80, $00, $00, $08, $00, $00, $00, $e9, $da, $d6, $d5, $f6, $f5, $fd, $ff
.byte $f2, $72, $d2, $d2, $52, $d2, $f2, $72, $00, $00, $00, $00, $00, $00, $00, $7d
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $00, $00, $00, $00
.byte $09, $09, $0d, $0d, $09, $09, $09, $09, $5a, $5a, $69, $65, $55, $5b, $6f, $bf
.byte $10, $30, $10, $30, $30, $30, $30, $3f, $95, $9f, $bf, $b7, $95, $95, $bf, $bf
.byte $52, $52, $72, $d2, $d2, $f2, $f2, $f2, $25, $16, $1a, $2a, $2a, $2a, $02, $00
.byte $9a, $aa, $aa, $a9, $a5, $95, $56, $5b, $5d, $77, $df, $7f, $fd, $da, $aa, $a8
.byte $ff, $ff, $ff, $ff, $55, $55, $11, $00, $57, $55, $55, $55, $b5, $ad, $29, $8b
.byte $af, $fb, $6f, $eb, $7e, $5b, $7b, $5a, $5a, $6a, $5a, $66, $5a, $56, $55, $56
.byte $45, $95, $45, $45, $41, $45, $41, $41, $5f, $bd, $5d, $bd, $be, $be, $7e, $7e
.byte $88, $a0, $80, $00, $80, $02, $00, $02, $02, $0a, $88, $00, $80, $80, $80, $00
.byte $55, $00, $00, $00, $00, $00, $03, $00, $f4, $30, $00, $02, $02, $02, $02, $02
.byte $17, $5f, $7f, $7a, $fe, $fa, $ee, $aa, $bb, $ff, $ae, $ab, $6e, $aa, $6e, $9a
.byte $20, $10, $20, $20, $20, $30, $20, $30, $78, $6c, $78, $6e, $7b, $6e, $6a, $6a
.byte $40, $40, $10, $04, $84, $a1, $a1, $b1, $00, $20, $00, $00, $00, $02, $09, $27
.byte $00, $00, $00, $25, $9a, $6a, $5a, $d5, $6f, $6f, $6f, $ad, $a1, $ad, $a1, $a1
.byte $fc, $fc, $fc, $54, $04, $06, $06, $06, $40, $40, $60, $58, $06, $81, $a0, $a8
.byte $00, $00, $00, $03, $03, $83, $43, $63, $1e, $7a, $6a, $ef, $eb, $af, $bb, $ff
.byte $66, $aa, $59, $56, $d9, $55, $d9, $75, $10, $20, $10, $10, $10, $30, $10, $30
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $00, $10, $00, $00, $00, $00
.byte $00, $00, $02, $0b, $09, $27, $2d, $27, $aa, $fe, $7f, $df, $5d, $7f, $5d, $55
.byte $a0, $a0, $a2, $e2, $f2, $72, $51, $72, $00, $54, $f5, $bd, $2f, $0b, $0b, $0b
.byte $a0, $08, $42, $50, $54, $f5, $ff, $ff, $00, $00, $00, $80, $80, $22, $22, $22
.byte $09, $09, $2d, $bf, $bb, $fd, $fa, $ee, $7f, $ff, $ff, $fd, $d5, $59, $69, $9a
.byte $ff, $ff, $f5, $55, $96, $65, $99, $66, $ff, $ff, $57, $55, $59, $66, $59, $66
.byte $50, $54, $55, $fd, $fb, $ef, $fb, $ee, $a8, $08, $c8, $c8, $c8, $48, $48, $48
.byte $5f, $7c, $f0, $c0, $00, $00, $00, $00, $aa, $00, $00, $00, $00, $03, $01, $35
.byte $c0, $f0, $33, $00, $03, $03, $03, $60, $22, $0a, $02, $00, $02, $80, $00, $80
.byte $fa, $bd, $ba, $bd, $7d, $7d, $7e, $7e, $a2, $ab, $a2, $a2, $82, $a2, $82, $82
.byte $41, $41, $40, $41, $40, $40, $50, $40, $bd, $9d, $be, $9e, $9e, $af, $a7, $ab
.byte $c3, $03, $c3, $f3, $cf, $f3, $cf, $73, $00, $00, $00, $00, $01, $00, $00, $00
.byte $20, $00, $00, $30, $00, $00, $00, $00, $01, $01, $01, $01, $01, $01, $01, $01
.byte $55, $9b, $6e, $9b, $6e, $9b, $ae, $af, $6a, $76, $d9, $76, $d9, $f6, $f9, $f6
.byte $30, $30, $30, $20, $30, $20, $20, $20, $bf, $bd, $b7, $bd, $b7, $bd, $b7, $b5
.byte $a1, $b1, $e1, $b1, $e1, $f1, $f1, $f1, $17, $1f, $1f, $1b, $1f, $1b, $1e, $1b
.byte $e5, $fa, $ff, $ff, $bb, $ee, $bb, $ee, $51, $51, $a1, $f1, $f2, $e1, $b2, $e2
.byte $06, $05, $05, $06, $06, $07, $07, $07, $a8, $6a, $5a, $56, $95, $a5, $e9, $fa
.byte $13, $13, $31, $13, $31, $11, $31, $31, $55, $9b, $6e, $9b, $6e, $9b, $ae, $af
.byte $bf, $9b, $6e, $9b, $6e, $5b, $5e, $5b, $30, $30, $30, $10, $30, $10, $10, $10
.byte $00, $55, $68, $68, $68, $78, $6c, $7c, $00, $80, $80, $80, $80, $40, $80, $40
.byte $1f, $17, $1d, $27, $1d, $27, $25, $25, $a6, $77, $dd, $77, $dd, $7f, $df, $ff
.byte $a2, $e2, $b2, $e1, $b2, $e1, $b1, $e1, $09, $09, $0b, $09, $0b, $09, $0b, $0b
.byte $95, $a9, $ea, $7a, $de, $77, $dd, $f7, $12, $21, $12, $11, $11, $31, $10, $30
.byte $ff, $ff, $dd, $f7, $dd, $f7, $55, $2a, $55, $99, $65, $99, $65, $a9, $6a, $ff
.byte $ff, $ff, $df, $77, $dd, $55, $55, $aa, $bb, $ae, $ab, $6a, $a6, $65, $66, $65
.byte $ff, $df, $f7, $dd, $f5, $d5, $d0, $d2, $4c, $48, $4c, $4c, $4c, $4c, $0c, $fc
.byte $00, $00, $00, $00, $08, $00, $00, $04, $01, $42, $00, $00, $03, $00, $00, $80
.byte $00, $00, $00, $00, $00, $00, $00, $00, $41, $40, $41, $45, $51, $45, $51, $46
.byte $e9, $ed, $69, $6d, $6d, $a5, $b5, $95, $41, $41, $01, $41, $01, $01, $05, $01
.byte $50, $50, $94, $50, $94, $95, $a4, $65, $15, $05, $15, $01, $04, $01, $40, $10
.byte $95, $d5, $75, $dd, $f5, $3d, $cf, $33, $c0, $00, $f0, $c0, $fc, $f3, $fc, $5f
.byte $00, $00, $00, $00, $00, $00, $44, $51, $01, $81, $01, $01, $01, $01, $01, $01
.byte $9a, $62, $98, $62, $a8, $a0, $80, $20, $5a, $1a, $46, $19, $05, $01, $04, $01
.byte $10, $20, $10, $20, $10, $10, $10, $10, $6f, $73, $6c, $73, $7c, $70, $40, $70
.byte $a1, $21, $81, $21, $81, $21, $81, $01, $3a, $3a, $36, $39, $36, $39, $35, $35
.byte $55, $66, $99, $66, $9a, $a1, $48, $22, $a2, $a2, $a2, $a2, $62, $92, $62, $93
.byte $07, $07, $06, $07, $06, $06, $06, $06, $fd, $ef, $bb, $ef, $a6, $96, $46, $52
.byte $13, $13, $13, $13, $11, $13, $11, $11, $65, $91, $64, $91, $54, $50, $40, $10
.byte $f5, $35, $cd, $37, $0f, $03, $0c, $03, $10, $20, $10, $20, $10, $10, $10, $10
.byte $68, $78, $6c, $7b, $7c, $73, $4c, $73, $80, $c0, $30, $0c, $8c, $03, $82, $02
.byte $2d, $27, $2d, $27, $2f, $2f, $2c, $23, $aa, $22, $88, $22, $80, $00, $00, $00
.byte $a1, $a1, $e1, $b1, $f3, $31, $c3, $33, $09, $0b, $09, $0b, $0b, $0b, $08, $0b
.byte $a6, $2a, $88, $22, $88, $22, $08, $00, $10, $10, $30, $10, $30, $30, $20, $30
.byte $00, $00, $00, $00, $03, $80, $00, $00, $00, $8a, $44, $c3, $cf, $00, $00, $00
.byte $00, $20, $10, $30, $3c, $00, $00, $00, $9f, $b3, $9c, $b3, $bc, $b3, $80, $b0
.byte $f1, $f1, $c1, $32, $c2, $32, $c1, $01, $00, $00, $00, $00, $04, $00, $00, $00
.byte $00, $00, $30, $00, $00, $00, $00, $05, $00, $00, $0c, $00, $00, $00, $22, $8a
.byte $03, $00, $0f, $03, $3f, $cf, $3f, $f5, $57, $56, $59, $66, $5a, $68, $a2, $88
.byte $a8, $a0, $a8, $80, $20, $80, $02, $08, $05, $05, $17, $05, $17, $57, $1f, $5d
.byte $65, $29, $1a, $1a, $0e, $0e, $0f, $03, $44, $51, $64, $99, $a5, $e9, $ba, $ee
.byte $05, $00, $40, $14, $51, $54, $65, $99, $55, $45, $04, $00, $00, $50, $44, $51
.byte $95, $a9, $8a, $22, $00, $00, $80, $22, $f1, $b1, $a1, $21, $81, $01, $00, $20
.byte $00, $80, $20, $80, $20, $00, $40, $15, $08, $02, $08, $00, $02, $00, $00, $df
.byte $10, $10, $10, $05, $00, $00, $00, $ef, $40, $40, $60, $00, $20, $00, $00, $fd
.byte $01, $01, $01, $01, $01, $01, $04, $90, $2f, $1c, $23, $2c, $23, $20, $20, $2a
.byte $cc, $c0, $00, $c0, $00, $00, $00, $65, $a3, $a1, $21, $81, $21, $01, $01, $55
.byte $07, $07, $04, $07, $04, $04, $04, $05, $cf, $03, $cc, $03, $cc, $00, $00, $9a
.byte $32, $22, $32, $32, $32, $32, $30, $f0, $00, $40, $10, $40, $10, $00, $80, $2a
.byte $04, $01, $04, $00, $01, $00, $00, $65, $10, $10, $10, $15, $00, $00, $00, $fe
.byte $40, $42, $60, $40, $20, $00, $00, $99, $42, $01, $42, $02, $02, $02, $08, $a0
.byte $20, $2c, $23, $2c, $23, $20, $08, $02, $00, $00, $00, $00, $00, $00, $00, $99
.byte $81, $21, $82, $02, $20, $00, $00, $65, $08, $08, $11, $40, $01, $00, $00, $d6
.byte $04, $00, $00, $00, $00, $00, $00, $6a, $20, $20, $20, $20, $20, $20, $80, $00
.byte $0c, $00, $00, $00, $01, $80, $00, $00, $00, $00, $20, $01, $00, $00, $20, $30
.byte $00, $20, $00, $00, $00, $00, $20, $00, $80, $80, $90, $80, $90, $80, $80, $aa
.byte $43, $03, $02, $03, $02, $02, $08, $a0, $00, $06, $11, $04, $11, $04, $00, $00
.byte $ff, $5d, $d5, $54, $11, $00, $00, $04, $55, $55, $51, $44, $00, $00, $01, $44
.byte $55, $51, $10, $00, $00, $05, $11, $45, $50, $00, $01, $14, $45, $15, $59, $66
.byte $22, $8a, $2e, $bb, $af, $bd, $f7, $dd, $5d, $7c, $f4, $f4, $d0, $d0, $90, $80