mode7: have assembly working with new compressed rle

This commit is contained in:
Vince Weaver 2017-12-15 16:19:01 -05:00
parent e3185239bc
commit d58d2738c8
13 changed files with 1661 additions and 463 deletions

View File

@ -268,7 +268,7 @@ int rle_smaller(int out_type, char *varname,
fprintf(stdout,"0xA1,");
fprintf(stdout,"\t};\n");
} else {
fprintf(stdout,"\t.byte $A1\n");
fprintf(stdout,"\n\t.byte $A1\n");
}
size+=1;

33
mode7_demo/Makefile Normal file
View File

@ -0,0 +1,33 @@
include ../Makefile.inc
DOS33 = ../dos33fs-utils/dos33
PNG2GR = ../gr-utils/png2gr
PNG2RLE = ../gr-utils/png2rle
all: mode7_demo.dsk
$(DOS33):
cd ../dos33fs-utils && make
mode7_demo.dsk: $(DOS33) MODE7_DEMO
$(DOS33) -y mode7_demo.dsk BSAVE -a 0x1000 MODE7_DEMO
###
MODE7_DEMO: mode7_demo.o
ld65 -o MODE7_DEMO mode7_demo.o -C ./apple2_1000.inc
mode7_demo.o: mode7_demo.s mode7_demo_backgrounds.inc utils.s
ca65 -o mode7_demo.o mode7_demo.s -l mode7_demo.lst
mode7_demo_backgrounds.inc: $(PNG2RLE) \
../tfv/demo.png
$(PNG2RLE) asm ../tfv/demo.png demo_rle > mode7_demo_backgrounds.inc
clean:
rm -f *~ *.o MODE7_DEMO *.lst

View File

@ -0,0 +1,12 @@
MEMORY {
ZP: start = $00, size = $1A, type = rw;
RAM: start = $1000, size = $8E00, file = %O;
}
SEGMENTS {
CODE: load = RAM, type = ro;
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
ZEROPAGE: load = ZP, type = zp;
}

BIN
mode7_demo/mode7_demo.dsk Normal file

Binary file not shown.

32
mode7_demo/mode7_demo.s Normal file
View File

@ -0,0 +1,32 @@
.include "zp.inc"
;================================
; Clear screen and setup graphics
;================================
jsr clear_screens ; clear top/bottom of page 0/1
jsr set_gr_page0
lda #<demo_rle
sta GBASL
lda #>demo_rle
sta GBASH
lda #<$400
sta BASL
lda #>$400
sta BASH
jsr load_rle_gr
loop_forever:
jmp loop_forever
;===============================================
; External modules
;===============================================
.include "utils.s"
.include "mode7_demo_backgrounds.inc"

View File

@ -0,0 +1,53 @@
demo_rle: .byte $28 ; ysize=40
.byte $AF,$00, $A7,$CC, $40, $A0,$21,$00, $A4,$04, $CC,$CC, $44
.byte $A0,$11,$00, $FF, $6F, $A3,$FF, $6F, $FF, $2F
.byte $FF, $6F,$6F, $FF, $2F,$2F, $FF, $50, $A3,$00
.byte $C0, $CC, $4C, $44, $00, $FF, $6F,$6F
.byte $FF, $2F,$2F, $6F, $A3,$FF, $6F, $FF, $2F
.byte $FF,$FF, $50, $FF, $66, $F6, $6F, $F6
.byte $66, $22, $FF, $22, $66, $FF, $66
.byte $22, $2F, $FF, $55, $00,$00, $C0, $CC
.byte $4C, $44, $00,$00, $FF, $66, $FF, $66
.byte $22, $2F, $66, $F6, $6F, $F6, $66
.byte $22, $FF, $22, $FF, $55, $FF, $66
.byte $A3,$FF, $66, $22, $FF, $22, $66, $FF
.byte $66, $22, $FF,$FF, $55, $00, $C0, $CC
.byte $4C, $44, $A3,$00, $FF, $66, $FF, $66
.byte $22, $F2, $66, $A3,$FF, $66, $22, $FF
.byte $22, $FF, $55, $FF, $F6, $A3,$FF, $F6
.byte $FF, $F2, $FF, $F6,$F6, $FF, $F2,$F2, $FF
.byte $55, $00, $CC,$CC, $44, $A4,$00, $FF, $F6,$F6
.byte $FF, $F2,$F2, $F6, $A3,$FF, $F6, $FF, $F2
.byte $FF,$FF, $55, $00, $AF,$05, $00, $CC,$CC, $44
.byte $A5,$00, $AF,$05, $A3,$00, $A8,$80, $A6,$00, $CC,$CC, $44
.byte $A0,$17,$00, $88,$88, $A4,$28, $B8, $28, $A3,$20, $A4,$00
.byte $04,$04, $A0,$18,$00, $88, $22, $FB, $0B, $22
.byte $B2, $22, $FB, $0B, $22, $00,$00, $60
.byte $76, $A0,$14,$00, $10, $A5,$00, $88, $A4,$B2, $3B
.byte $32, $B2, $02,$02, $00, $60, $76, $07
.byte $A0,$11,$00, $10, $00, $10, $11, $01, $A4,$00
.byte $88, $55, $A5,$BB, $A3,$00, $60, $76, $07
.byte $A6,$00, $D0, $0D, $00, $D0, $0D, $00
.byte $D0, $A5,$00, $11, $A8,$00, $88, $85, $A3,$BB
.byte $B1, $0B, $00, $0D, $D0, $76, $07
.byte $A5,$00, $D0, $DD, $D0,$D0, $DD, $D0,$D0, $DD
.byte $D0, $A3,$00, $01,$01, $11, $01,$01, $A5,$00, $80
.byte $88, $98, $B8, $B3,$B3, $B0, $30, $33
.byte $F3, $FF, $FD, $A3,$F0, $A3,$00, $DD, $A7,$BB
.byte $DD, $A4,$00, $10, $11, $10, $A6,$00, $88
.byte $A3,$99, $9B, $BB,$BB, $9B, $93, $00, $FF,$FF
.byte $F7, $F0, $FF,$FF, $70, $00, $DD, $BB
.byte $BF, $B0, $BB, $BF, $B0, $BB, $DD
.byte $A3,$00, $10, $A3,$11, $10, $A5,$00, $08, $99
.byte $B9, $A6,$99, $80, $A3,$8F, $FF,$FF, $0F, $07
.byte $00, $DD, $DB, $BB, $3B, $33, $BB,$BB
.byte $DB, $DD, $A3,$00, $01,$01, $11, $01,$01, $A6,$00
.byte $99, $BB, $A4,$99, $09, $80, $A4,$FF, $F7
.byte $0F, $A3,$00, $DD,$DD, $A5,$BB, $DD,$DD, $A5,$00, $11
.byte $A8,$00, $99, $BB, $A3,$B9, $99, $88, $A5,$FF
.byte $A5,$00, $0D, $00, $BB, $A3,$B1, $BB, $00
.byte $0D, $A4,$00, $BB,$BB, $A7,$00, $99,$99, $A4,$9B, $FB
.byte $A6,$FF, $A8,$00, $BB,$BB, $A6,$00, $20, $22, $2B
.byte $0B, $A6,$00, $90, $A5,$99, $F9, $A7,$FF, $A5,$00
.byte $20, $A6,$22, $A3,$20, $22,$22, $02, $A6,$00
.byte $A1

776
mode7_demo/utils.s Normal file
View File

@ -0,0 +1,776 @@
;=====================================================================
;= ROUTINES
;=====================================================================
clear_screens:
;===================================
; Clear top/bottom of page 0
;===================================
lda #$0
sta DRAW_PAGE
jsr clear_top
jsr clear_bottom
;===================================
; Clear top/bottom of page 1
;===================================
lda #$4
sta DRAW_PAGE
jsr clear_top
jsr clear_bottom
rts
;==========
; page_flip
;==========
page_flip:
lda DISP_PAGE ; 3
beq page_flip_show_1 ; 2nt/3
page_flip_show_0:
bit PAGE0 ; 4
lda #4 ; 2
sta DRAW_PAGE ; DRAW_PAGE=1 ; 3
lda #0 ; 2
sta DISP_PAGE ; DISP_PAGE=0 ; 3
rts ; 6
page_flip_show_1:
bit PAGE1 ; 4
sta DRAW_PAGE ; DRAW_PAGE=0 ; 3
lda #1 ; 2
sta DISP_PAGE ; DISP_PAGE=1 ; 3
rts ; 6
;====================
; DISP_PAGE=0 26
; DISP_PAGE=1 24
;======================
; memset
;======================
; a=value
; x=length
; MEMPTRL/MEMPTRH is address
memset:
ldy #0
memset_loop:
sta MEMPTRL,Y
iny
dex
bne memset_loop
rts
;=================
; load RLE image
;=================
; Output is BASH/BASL
; Input is in GBASH/GBASL
load_rle_gr:
lda #$0
tay ; init Y to 0
sta TEMP ; stores the xcoord
sta CV ; ycoord=0
jsr load_and_increment ; load xsize
sta CH
rle_loop:
jsr load_and_increment
cmp #$A1 ; if 0xa1
beq rle_done ; we are done
pha
and #$f0 ; mask
cmp #$a0 ; see if special AX
beq decompress_special
pla ; note, PLA sets flags!
ldx #$1 ; only want to print 1
bne decompress_run
decompress_special:
pla
and #$0f ; check if was A0
bne decompress_color ; if A0 need to read run, color
decompress_large:
jsr load_and_increment ; get run length
decompress_color:
tax ; put runlen into X
jsr load_and_increment ; get color
decompress_run:
rle_run_loop:
sta (BASL),y ; write out the value
inc BASL ; increment the pointer
bne rle_skip3 ; if wrapped
inc BASH ; then increment the high value
rle_skip3:
pha ; store colore for later
inc TEMP ; increment the X value
lda TEMP
cmp CH ; compare against the image width
bcc rle_not_eol ; if less then keep going
lda BASL ; cheat to avoid a 16-bit add
cmp #$a7 ; we are adding 0x58 to get
bcc rle_add_skip ; to the next line
inc BASH
rle_add_skip:
clc
adc #$58 ; actually do the 0x58 add
sta BASL ; and store it back
inc CV ; add 2 to ypos
inc CV ; each "line" is two high
lda CV ; load value
cmp #15 ; if it's greater than 14 it wraps
bcc rle_no_wrap ; Thanks Woz
lda #$0 ; we wrapped, so set to zero
sta CV
; when wrapping have to sub 0x3d8
sec ; this is a 16-bit subtract routine
lda BASL
sbc #$d8 ; LSB
sta BASL
lda BASH ; MSB
sbc #$3 ;
sta BASH
rle_no_wrap:
lda #$0 ; set X value back to zero
sta TEMP
rle_not_eol:
pla ; restore color
dex
bne rle_run_loop ; if not zero, keep looping
beq rle_loop ; and branch always
rle_done:
lda #$15 ; move the cursor somewhere sane
sta CV
rts
load_and_increment:
lda (GBASL),y ; load value ; 5?
inc GBASL ; 5?
bne lskip2 ; 2nt/3
inc GBASH ; 5?
lskip2:
rts ; 6
;==========================================================
; set_text_page0
;==========================================================
;
set_text_page0:
bit PAGE0 ; set page0
bit TEXT ; set text mode
rts
;==========================================================
; set_gr_page0
;==========================================================
;
set_gr_page0:
;lda #4
;sta GR_PAGE
bit PAGE0 ; set page 0
bit LORES ; Lo-res graphics
bit TEXTGR ; mixed gr/text mode
bit SET_GR ; set graphics
rts
;=========================================================
; gr_copy_to_current
;=========================================================
; copy 0xc00 to DRAW_PAGE
; 2 + 8*38 + 4*80*23 + 4*120*26 + 13 = 20,159 = 20ms = 50Hz
;
gr_copy_to_current:
ldx #0 ; set y to zero ; 2
gr_copy_loop:
stx TEMP ; save y ; 3
txa ; move to A ; 2
asl ; mult by 2 ; 2
tay ; put into Y ; 2
lda gr_offsets,Y ; lookup low byte for line addr ; 5
sta OUTL ; out and in are the same ; 3
sta INL ; 3
lda gr_offsets+1,Y ; lookup high byte for line addr ; 5
adc DRAW_PAGE
sta OUTH ; 3
lda gr_offsets+1,Y ; lookup high byte for line addr ; 5
adc #$8 ; for now, fixed 0xc ; 2
sta INH ; 3
ldx TEMP ; restore y ; 3
ldy #0 ; set X counter to 0 ; 2
gr_copy_line:
lda (INL),Y ; load a byte ; 5
sta (OUTL),Y ; store a byte ; 6
iny ; increment pointer ; 2
cpx #$4 ; don't want to copy bottom 4*40 ; 2
bcs gr_copy_above4 ; 3
gr_copy_below4:
cpy #120 ; for early ones, copy 120 bytes ; 2
bne gr_copy_line ; 3
beq gr_copy_line_done ; 3
gr_copy_above4: ; for last four, just copy 80 bytes
cpy #80 ; 2
bne gr_copy_line ; 3
gr_copy_line_done:
inx ; increment y value ; 2
cpx #8 ; there are 8 of them ; 2
bne gr_copy_loop ; if not, loop ; 3
rts ; 6
;==========================================================
; Wait until keypressed
;==========================================================
;
wait_until_keypressed:
lda KEYPRESS ; check if keypressed
bpl wait_until_keypressed ; if not, loop
jmp figure_out_key
;==========================================================
; Get Key
;==========================================================
;
get_key:
check_paddle_button:
; check for paddle button
bit PADDLE_BUTTON0 ; 4
bpl no_button ; 2nt/3
lda #' '+128 ; 2
jmp save_key ; 3
no_button:
lda KEYPRESS ; 3
bpl no_key ; 2nt/3
figure_out_key:
cmp #' '+128 ; the mask destroys space ; 2
beq save_key ; so handle it specially ; 2nt/3
and #$5f ; mask, to make upper-case ; 2
check_right_arrow:
cmp #$15 ; 2
bne check_left_arrow ; 2nt/3
lda #'D' ; 2
check_left_arrow:
cmp #$08 ; 2
bne check_up_arrow ; 2nt/3
lda #'A' ; 2
check_up_arrow:
cmp #$0B ; 2
bne check_down_arrow ; 2nt/3
lda #'W' ; 2
check_down_arrow:
cmp #$0A ; 2
bne check_escape ; 2nt/3
lda #'S' ; 2
check_escape:
cmp #$1B ; 2
bne save_key ; 2nt/3
lda #'Q' ; 2
jmp save_key ; 3
no_key:
bit PADDLE_STATUS ; 3
bpl no_key_store ; 2nt/3
; check for paddle action
; code from http://web.pdx.edu/~heiss/technotes/aiie/tn.aiie.06.html
inc PADDLE_STATUS ; 5
lda PADDLE_STATUS ; 3
and #$03 ; 2
beq check_paddles ; 2nt/3
jmp no_key_store ; 3
check_paddles:
lda PADDLE_STATUS ; 3
and #$80 ; 2
sta PADDLE_STATUS ; 3
ldx #$0 ; 2
LDA PTRIG ;TRIGGER PADDLES ; 4
LDY #0 ;INIT COUNTER ; 2
NOP ;COMPENSATE FOR 1ST COUNT ; 2
NOP ; 2
PREAD2: LDA PADDL0,X ;COUNT EVERY 11 uSEC. ; 4
BPL RTS2D ;BRANCH WHEN TIMED OUT ; 2nt/3
INY ;INCREMENT COUNTER ; 2
BNE PREAD2 ;CONTINUE COUNTING ; 2nt/3
DEY ;COUNTER OVERFLOWED ; 2
RTS2D: ;RETURN W/VALUE 0-255
cpy #96 ; 2
bmi paddle_left ; 2nt/3
cpy #160 ; 2
bmi no_key_store ; 2nt/3
lda #'D' ; 2
jmp save_key ; 3
paddle_left:
lda #'A' ; 2
jmp save_key ; 3
no_key_store:
lda #0 ; no key, so save a zero ; 2
save_key:
sta LASTKEY ; save the key to our buffer ; 2
bit KEYRESET ; clear the keyboard buffer ; 4
rts ; 6
;============
; 33=nokey
; 48=worstkey
;=============================================
; put_sprite
;=============================================
; Sprite to display in INH,INL
; Location is XPOS,YPOS
; Note, only works if YPOS is multiple of two?
put_sprite:
ldy #0 ; byte 0 is xsize ; 2
lda (INL),Y ; 5
sta CH ; xsize is in CH ; 3
iny ; 2
lda (INL),Y ; byte 1 is ysize ; 5
sta CV ; ysize is in CV ; 3
iny ; 2
lda YPOS ; make a copy of ypos ; 3
sta TEMPY ; as we modify it ; 3
;===========
; 28
put_sprite_loop:
sty TEMP ; save sprite pointer ; 3
ldy TEMPY ; 3
lda gr_offsets,Y ; lookup low-res memory address ; 5
clc ; 2
adc XPOS ; add in xpos ; 3
sta OUTL ; store out low byte of addy ; 3
lda gr_offsets+1,Y ; look up high byte ; 5
adc DRAW_PAGE ; ; 3
sta OUTH ; and store it out ; 3
ldy TEMP ; restore sprite pointer ; 3
; OUTH:OUTL now points at right place
ldx CH ; load xsize into x ; 3
;===========
; 36
put_sprite_pixel:
lda (INL),Y ; get sprite colors ; 5
iny ; increment sprite pointer ; 2
sty TEMP ; save sprite pointer ; 3
ldy #$0 ; 2
; check if completely transparent
; if so, skip
cmp #$0 ; if all zero, transparent ; 2
beq put_sprite_done_draw ; don't draw it ; 2nt/3
; FIXME: use BIT? ;==============
; 17
sta COLOR ; save color for later ; 3
; check if top pixel transparent
and #$f0 ; check if top nibble zero ; 2
bne put_sprite_bottom ; if not skip ahead ; 2nt/3
lda #$f0 ; setup mask ; 2
sta MASK ; 3
bmi put_sprite_mask ; 2nt/3
put_sprite_bottom:
lda COLOR ; re-load color ; 3
and #$0f ; check if bottom nibble zero ; 2
bne put_sprite_all ; if not, skip ahead ; 2nt/3
lda #$0f ; 2
sta MASK ; setup mask ; 3
put_sprite_mask:
lda (OUTL),Y ; get color at output ; 5
and MASK ; mask off unneeded part ; 3
ora COLOR ; or the color in ; 3
sta (OUTL),Y ; store it back ; 5
jmp put_sprite_done_draw ; we are done ; 3
put_sprite_all:
lda COLOR ; load color ; 3
sta (OUTL),Y ; and write it out ; 5
put_sprite_done_draw:
ldy TEMP ; restore sprite pointer ; 3
inc OUTL ; increment output pointer ; 5
dex ; decrement x counter ; 2
bne put_sprite_pixel ; if not done, keep looping ; 2nt/3
inc TEMPY ; each line has two y vars ; 5
inc TEMPY ; 5
dec CV ; decemenet total y count ; 5
bne put_sprite_loop ; loop if not done ; 2nt/3
rts ; return ; 6
;================================
; htab_vtab
;================================
; move to CH/CV
htab_vtab:
lda CV
asl
tay
lda gr_offsets,Y ; lookup low-res memory address
clc
adc CH ; add in xpos
sta BASL ; store out low byte of addy
lda gr_offsets+1,Y ; look up high byte
adc DRAW_PAGE ;
sta BASH ; and store it out
; BASH:BASL now points at right place
rts
;================================
; move_and_print
;================================
; move to CH/CV
move_and_print:
jsr htab_vtab
;================================
; print_string
;================================
print_string:
ldy #0
print_string_loop:
lda (OUTL),Y
beq done_print_string
ora #$80
sta (BASL),Y
iny
bne print_string_loop
done_print_string:
rts
;====================
; point_to_end_string
;====================
point_to_end_string:
iny
tya
clc
adc OUTL
sta OUTL
lda #0
adc OUTH
sta OUTH
rts
;================================
; print_both_pages
;================================
print_both_pages:
lda DRAW_PAGE
pha
lda #0
sta DRAW_PAGE
jsr move_and_print
lda #4
sta DRAW_PAGE
jsr move_and_print
pla
sta DRAW_PAGE
rts ; oops forgot this initially
; explains the weird vertical stripes on the screen
;=========================================
; vlin
;=========================================
; X, V2 at Y
vlin:
sty TEMPY ; save Y (x location)
vlin_loop:
txa ; a=x (get first y)
and #$fe ; Clear bottom bit
tay ;
lda gr_offsets,Y ; lookup low-res memory address low
sta GBASL ; put it into our indirect pointer
iny
lda gr_offsets,Y ; lookup low-res memory address high
clc
adc DRAW_PAGE ; add in draw page offset
sta GBASH ; put into top of indirect
ldy TEMPY ; load back in y (x offset)
txa ; load back in x (current y)
lsr ; check the low bit
bcc vlin_low ; if not set, skip to low
vlin_high:
lda #$F0 ; setup masks
sta MASK
lda #$0f
bcs vlin_too_slow
vlin_low: ; setup masks
lda #$0f
sta MASK
lda #$f0
vlin_too_slow:
and (GBASL),Y ; mask current byte
sta (GBASL),Y ; and store back
lda MASK ; mask the color
and COLOR
ora (GBASL),Y ; or into the right place
sta (GBASL),Y ; store it
inx ; increment X (current y)
cpx V2 ; compare to the limit
bcc vlin_loop ; if <= then loop
rts ; return
;================================
; hlin_setup
;================================
; put address in GBASL/GBASH
; Ycoord in A, Xcoord in Y
hlin_setup:
sty TEMPY ; 3
tay ; y=A ; 2
lda gr_offsets,Y ; lookup low-res memory address ; 4
clc ; 2
adc TEMPY ; 3
sta GBASL ; 3
iny ; 2
lda gr_offsets,Y ; 4
adc DRAW_PAGE ; add in draw page offset ; 3
sta GBASH ; 3
rts ; 6
;===========
; 35
;================================
; hlin_double:
;================================
; HLIN Y, V2 AT A
; Y, X, A trashed
; start at Y, draw up to and including X
hlin_double:
;int hlin_double(int page, int x1, int x2, int at) {
jsr hlin_setup ; 41
sec ; 2
lda V2 ; 3
sbc TEMPY ; 3
tax ; 2
inx ; 2
;===========
; 53
; fallthrough
;=================================
; hlin_double_continue: width
;=================================
; width in X
hlin_double_continue:
ldy #0 ; 2
lda COLOR ; 3
hlin_double_loop:
sta (GBASL),Y ; 6
inc GBASL ; 5
dex ; 2
bne hlin_double_loop ; 2nt/3
rts ; 6
;=============
; 53+5+X*16+5
;================================
; hlin_single:
;================================
; HLIN Y, V2 AT A
; Y, X, A trashed
hlin_single:
jsr hlin_setup
sec
lda V2
sbc TEMPY
tax
; fallthrough
;=================================
; hlin_single_continue: width
;=================================
; width in X
hlin_single_continue:
hlin_single_top:
lda COLOR
and #$f0
sta COLOR
hlin_single_top_loop:
ldy #0
lda (GBASL),Y
and #$0f
ora COLOR
sta (GBASL),Y
inc GBASL
dex
bne hlin_single_top_loop
rts
hlin_single_bottom:
lda COLOR
and #$0f
sta COLOR
hlin_single_bottom_loop:
ldy #0
lda (GBASL),Y
and #$f0
sta (GBASL),Y
inc GBASL
dex
bne hlin_single_bottom_loop
rts
;=============================
; clear_top
;=============================
clear_top:
lda #$00
;=============================
; clear_top_a
;=============================
clear_top_a:
sta COLOR
; VLIN Y, V2 AT A
lda #40
sta V2
lda #0
clear_top_loop:
ldy #0
pha
jsr hlin_double
pla
clc
adc #$2
cmp #40
bne clear_top_loop
rts
clear_bottom:
lda #$a0 ; NORMAL space
sta COLOR
lda #40
sta V2
clear_bottom_loop:
ldy #0
pha
jsr hlin_double
pla
clc
adc #$2
cmp #48
bne clear_bottom_loop
rts
; move these to zero page for slight speed increase?
gr_offsets:
.word $400,$480,$500,$580,$600,$680,$700,$780
.word $428,$4a8,$528,$5a8,$628,$6a8,$728,$7a8
.word $450,$4d0,$550,$5d0,$650,$6d0,$750,$7d0

179
mode7_demo/zp.inc Normal file
View File

@ -0,0 +1,179 @@
.define EQU =
;; Zero page monitor routines addresses
WNDLFT EQU $20
WNDWDTH EQU $21
WNDTOP EQU $22
WNDBTM EQU $23
CH EQU $24
CV EQU $25
GBASL EQU $26
GBASH EQU $27
BASL EQU $28
BASH EQU $29
H2 EQU $2C
V2 EQU $2D
MASK EQU $2E
COLOR EQU $30
INVFLG EQU $32
; More zero-page addresses
; we try not to conflict with anything DOS, MONITOR or BASIC related
COLOR1 EQU $E0
COLOR2 EQU $E1
MATCH EQU $E2
XX EQU $E3
YY EQU $E4
YADD EQU $E5
LOOP EQU $E6
MEMPTRL EQU $E7
MEMPTRH EQU $E8
NAMEL EQU $E9
NAMEH EQU $EA
NAMEX EQU $EB
CHAR EQU $EC
DISP_PAGE EQU $ED
DRAW_PAGE EQU $EE
FIRST EQU $F0
LASTKEY EQU $F1
PADDLE_STATUS EQU $F2
XPOS EQU $F3
YPOS EQU $F4
TEMP EQU $FA
RUN EQU $FA
TEMP2 EQU $FB
TEMPY EQU $FB
INL EQU $FC
INH EQU $FD
OUTL EQU $FE
OUTH EQU $FF
;; Flying Routine Only
TURNING EQU $60
;SCREEN_X EQU $61 ; not used?
SCREEN_Y EQU $62
ANGLE EQU $63
HORIZ_SCALE_I EQU $64
HORIZ_SCALE_F EQU $65
FACTOR_I EQU $66
FACTOR_F EQU $67
DX_I EQU $68
DX_F EQU $69
SPACEX_I EQU $6A
SPACEX_F EQU $6B
CX_I EQU $6C
CX_F EQU $6D
DY_I EQU $6E
DY_F EQU $6F
SPACEY_I EQU $70
SPACEY_F EQU $71
CY_I EQU $72
CY_F EQU $73
TEMP_I EQU $74
TEMP_F EQU $75
DISTANCE_I EQU $76
DISTANCE_F EQU $77
SPACEZ_I EQU $78
SPACEZ_F EQU $79
DRAW_SPLASH EQU $7A
SPEED EQU $7B
SPLASH_COUNT EQU $7C
OVER_LAND EQU $7D
NUM1L EQU $7E
NUM1H EQU $7F
NUM2L EQU $80
NUM2H EQU $81
RESULT EQU $82 ; 83,84,85
NEGATE EQU $86 ; UNUSED?
LAST_SPACEX_I EQU $87
LAST_SPACEY_I EQU $88
LAST_MAP_COLOR EQU $89
DRAW_SKY EQU $8A
COLOR_MASK EQU $8B
SHIPY EQU $E4
KEYPRESS EQU $C000
KEYRESET EQU $C010
;; SOFT SWITCHES
CLR80COL EQU $C000 ; PAGE0/PAGE1 normal
SET80COL EQU $C001 ; PAGE0/PAGE1 switches PAGE0 in Aux instead
EIGHTYCOL EQU $C00D
SET_GR EQU $C050
SET_TEXT EQU $C051
FULLGR EQU $C052
TEXTGR EQU $C053
PAGE0 EQU $C054
PAGE1 EQU $C055
LORES EQU $C056 ; Enable LORES graphics
HIRES EQU $C057 ; Enable HIRES graphics
AN3 EQU $C05E ; Annunciator 3
PADDLE_BUTTON0 EQU $C061
PADDL0 EQU $C064
PTRIG EQU $C070
;; BASIC ROUTINES
NORMAL EQU $F273
;; MONITOR ROUTINES
HLINE EQU $F819 ;; HLINE Y,$2C at A
VLINE EQU $F828 ;; VLINE A,$2D at Y
CLRSCR EQU $F832 ;; Clear low-res screen
CLRTOP EQU $F836 ;; clear only top of low-res screen
SETCOL EQU $F864 ;; COLOR=A
TEXT EQU $FB36
TABV EQU $FB5B ;; VTAB to A
BASCALC EQU $FBC1 ;;
VTAB EQU $FC22 ;; VTAB to CV
HOME EQU $FC58 ;; Clear the text screen
WAIT EQU $FCA8 ;; delay 1/2(26+27A+5A^2) us
SETINV EQU $FE80 ;; INVERSE
SETNORM EQU $FE84 ;; NORMAL
COUT EQU $FDED ;; output A to screen
COUT1 EQU $FDF0 ;; output A to screen
COLOR_BLACK EQU 0
COLOR_RED EQU 1
COLOR_DARKBLUE EQU 2
COLOR_PURPLE EQU 3
COLOR_DARKGREEN EQU 4
COLOR_GREY EQU 5
COLOR_MEDIUMBLUE EQU 6
COLOR_LIGHTBLUE EQU 7
COLOR_BROWN EQU 8
COLOR_ORANGE EQU 9
COLOR_GREY2 EQU 10
COLOR_PINK EQU 11
COLOR_LIGHTGREEN EQU 12
COLOR_YELLOW EQU 13
COLOR_AQUA EQU 14
COLOR_WHITE EQU 15
COLOR_BOTH_RED EQU $11
COLOR_BOTH_DARKBLUE EQU $22
COLOR_BOTH_DARKGREEN EQU $44
COLOR_BOTH_GREY EQU $55
COLOR_BOTH_MEDIUMBLUE EQU $66
COLOR_BOTH_LIGHTBLUE EQU $77
COLOR_BOTH_BROWN EQU $88
COLOR_BOTH_ORANGE EQU $99
COLOR_BOTH_LIGHTGREEN EQU $CC
COLOR_BOTH_YELLOW EQU $DD
COLOR_BOTH_WHITE EQU $FF
AUX_BOTH_MEDIUMBLUE EQU $33 ; 0011 0011
AUX_BOTH_GREY EQU $AA ; 1010 1010

View File

@ -102,13 +102,5 @@ name:
.byte $0,$0,$0,$0,$0,$0,$0,$0
; waste memory with a lookup table
; maybe faster than using GBASCALC?
gr_offsets:
.word $400,$480,$500,$580,$600,$680,$700,$780
.word $428,$4a8,$528,$5a8,$628,$6a8,$728,$7a8
.word $450,$4d0,$550,$5d0,$650,$6d0,$750,$7d0
.include "tfv_sprites.inc"
.include "tfv_backgrounds.inc"

View File

@ -1,416 +1,416 @@
title_rle: .byte $28,$28
.byte $01,$00, $19,$20, $0F,$00, $01,$22, $03,$66, $01,$22, $01,$62
.byte $01,$66, $01,$62, $01,$22, $01,$66, $03,$22, $01,$66, $01,$26
.byte $01,$62, $01,$22, $01,$62, $01,$26, $01,$62, $01,$22, $03,$66
.byte $01,$22, $01,$55, $01,$00, $03,$11, $01,$44, $03,$22, $01,$44
.byte $03,$22, $02,$00, $02,$22, $01,$66, $02,$22, $01,$66, $01,$62
.byte $01,$66, $01,$22, $01,$66, $03,$22, $01,$66, $01,$26, $01,$62
.byte $01,$22, $01,$66, $01,$22, $01,$66, $02,$22, $01,$66, $02,$22
.byte $01,$55, $01,$00, $01,$01, $01,$11, $01,$41, $01,$44, $01,$42
.byte $01,$22, $01,$42, $01,$44, $01,$42, $01,$22, $01,$02, $02,$00
.byte $02,$22, $01,$66, $02,$22, $01,$66, $01,$22, $01,$66, $01,$22
.byte $03,$66, $01,$22, $01,$66, $01,$62, $01,$26, $01,$22, $01,$26
.byte $01,$62, $01,$26, $02,$22, $01,$66, $02,$22, $01,$55, $02,$00
.byte $01,$11, $03,$44, $01,$22, $03,$44, $01,$22, $03,$00, $01,$02
.byte $18,$52, $01,$55, $0E,$00, $1E,$60, $0A,$00, $01,$66, $03,$22
.byte $01,$66, $01,$26, $01,$22, $01,$26, $01,$66, $01,$22, $01,$26
.byte $01,$66, $01,$22, $01,$66, $03,$22, $01,$66, $01,$26, $01,$22
.byte $01,$26, $01,$66, $01,$26, $02,$62, $01,$66, $01,$22, $01,$66
.byte $01,$22, $01,$66, $01,$55, $09,$00, $01,$66, $01,$22, $01,$26
.byte $02,$66, $01,$22, $01,$26, $01,$22, $01,$66, $01,$22, $01,$62
.byte $01,$26, $01,$22, $02,$66, $01,$22, $02,$66, $01,$22, $01,$26
.byte $01,$22, $01,$66, $01,$22, $02,$26, $01,$66, $01,$62, $01,$26
.byte $01,$62, $01,$66, $01,$55, $09,$00, $01,$66, $01,$22, $03,$66
.byte $01,$22, $01,$66, $01,$22, $01,$66, $01,$22, $01,$66, $01,$62
.byte $01,$22, $02,$66, $01,$22, $02,$66, $01,$22, $01,$66, $01,$22
.byte $01,$66, $02,$26, $01,$22, $02,$66, $01,$22, $02,$66, $01,$55
.byte $09,$00, $01,$06, $1D,$56, $01,$55, $03,$00, $01,$10, $24,$00
.byte $01,$10, $01,$00, $01,$10, $01,$11, $01,$01, $05,$00, $08,$CC
.byte $01,$40, $09,$00, $01,$D0, $01,$0D, $01,$00, $01,$D0, $01,$0D
.byte $01,$00, $01,$D0, $05,$00, $01,$11, $0A,$00, $01,$04, $04,$54
.byte $02,$CC, $01,$44, $01,$55, $06,$00, $01,$D0, $01,$DD, $02,$D0
.byte $01,$DD, $02,$D0, $01,$DD, $01,$D0, $03,$00, $02,$01, $01,$11
.byte $02,$01, $0C,$00, $02,$CC, $01,$44, $01,$54, $01,$55, $06,$00
.byte $01,$DD, $07,$BB, $01,$DD, $04,$00, $01,$10, $01,$11, $01,$10
.byte $0C,$00, $02,$CC, $01,$44, $01,$54, $01,$55, $07,$00, $01,$DD
.byte $01,$BB, $01,$BF, $01,$B0, $01,$BB, $01,$BF, $01,$B0, $01,$BB
.byte $01,$DD, $03,$00, $01,$10, $03,$11, $01,$10, $0A,$00, $02,$CC
.byte $01,$44, $01,$54, $01,$55, $08,$00, $01,$DD, $01,$DB, $01,$BB
.byte $01,$3B, $01,$33, $02,$BB, $01,$DB, $01,$DD, $03,$00, $02,$01
.byte $01,$11, $02,$01, $0A,$00, $02,$CC, $01,$44, $01,$55, $09,$00
.byte $02,$DD, $05,$BB, $02,$DD, $05,$00, $01,$11, $0C,$00, $02,$CC
.byte $01,$44, $01,$55, $09,$00, $01,$0D, $01,$00, $01,$BB, $03,$B1
.byte $01,$BB, $01,$00, $01,$0D, $04,$00, $02,$BB, $0C,$00, $01,$0C
.byte $01,$4C, $01,$44, $01,$55, $0C,$00, $02,$BB, $06,$00, $01,$20
.byte $01,$22, $01,$2B, $01,$0B, $0E,$00, $02,$05, $09,$00, $01,$20
.byte $06,$22, $03,$20, $02,$22, $01,$02, $09,$00
.byte $FF,$FF
map_rle: .byte $28,$28
.byte $23,$66, $01,$46, $01,$06, $05,$66, $01,$56, $0E,$66, $01,$E6
.byte $04,$66, $01,$77, $01,$FF, $01,$F6, $08,$66, $01,$46, $03,$44
.byte $03,$66, $01,$E6, $01,$56, $01,$55, $01,$56, $01,$E6, $0B,$66
.byte $01,$6E, $01,$66, $01,$6E, $02,$66, $01,$67, $04,$6F, $07,$66
.byte $01,$4F, $01,$47, $01,$4F, $01,$44, $0B,$66, $17,$D6, $03,$66
.byte $01,$64, $03,$44, $01,$46, $08,$66, $01,$DD, $07,$FF, $01,$4F
.byte $05,$FF, $01,$8F, $01,$88, $01,$8F, $01,$FF, $01,$7F, $01,$77
.byte $01,$07, $01,$77, $01,$07, $01,$77, $01,$DD, $03,$66, $01,$E6
.byte $03,$E4, $01,$E6, $07,$66, $01,$DD, $06,$FF, $01,$F4, $01,$84
.byte $01,$F4, $04,$FF, $01,$8F, $03,$FF, $01,$7F, $01,$77, $03,$75
.byte $01,$77, $01,$DD, $0F,$66, $01,$DD, $0C,$CF, $03,$C8, $03,$CF
.byte $05,$C7, $01,$DD, $0A,$66, $01,$E6, $04,$66, $01,$DD, $02,$CC
.byte $01,$4C, $03,$CC, $01,$77, $06,$CC, $01,$8C, $01,$88, $01,$8C
.byte $01,$CC, $01,$4C, $05,$44, $01,$DD, $09,$66, $01,$6E, $01,$66
.byte $01,$6E, $03,$66, $01,$DD, $01,$CC, $01,$4C, $01,$44, $01,$4C
.byte $01,$CC, $01,$22, $03,$FF, $01,$22, $03,$CC, $01,$8C, $03,$CC
.byte $01,$C4, $05,$44, $01,$DD, $0C,$66, $01,$E6, $02,$66, $01,$DD
.byte $02,$CC, $01,$C8, $02,$CC, $01,$C2, $02,$C7, $01,$CF, $02,$C2
.byte $01,$CC, $03,$C8, $03,$CC, $01,$C8, $01,$CC, $01,$C8, $01,$CC
.byte $01,$C8, $01,$DD, $0B,$66, $01,$6E, $01,$66, $01,$6E, $01,$66
.byte $01,$DD, $01,$4C, $01,$84, $01,$C4, $0A,$CC, $01,$8C, $01,$88
.byte $01,$8C, $01,$CC, $01,$4C, $05,$44, $01,$DD, $0F,$66, $01,$DD
.byte $01,$C4, $01,$CC, $01,$88, $0A,$CC, $01,$8C, $03,$CC, $06,$44
.byte $01,$DD, $02,$66, $01,$55, $01,$56, $02,$66, $01,$55, $08,$66
.byte $01,$DD, $05,$CC, $05,$9C, $01,$CC, $01,$1C, $03,$C8, $01,$1C
.byte $02,$CC, $01,$84, $01,$C4, $01,$84, $01,$C4, $01,$84, $01,$DD
.byte $02,$66, $01,$55, $01,$66, $01,$65, $01,$56, $01,$55, $08,$66
.byte $01,$DD, $03,$CC, $02,$4C, $01,$99, $01,$49, $01,$44, $02,$99
.byte $01,$CC, $01,$11, $01,$C1, $01,$1C, $01,$C1, $01,$11, $07,$CC
.byte $01,$DD, $02,$66, $01,$65, $03,$66, $01,$65, $02,$66, $01,$6E
.byte $01,$E6, $01,$6E, $03,$66, $01,$DD, $02,$CC, $01,$44, $01,$C8
.byte $01,$8C, $01,$99, $01,$94, $01,$44, $01,$94, $01,$99, $01,$CC
.byte $01,$C1, $03,$CC, $01,$C1, $07,$CC, $01,$DD, $03,$66, $01,$16
.byte $01,$91, $01,$16, $04,$66, $01,$EE, $04,$66, $01,$6D, $04,$DC
.byte $01,$D8, $02,$D9, $01,$D4, $02,$D9, $02,$DC, $01,$8C, $01,$88
.byte $01,$8E, $01,$EE, $07,$DC, $01,$6D, $03,$66, $01,$69, $01,$99
.byte $01,$69, $03,$66, $01,$05, $01,$55, $01,$66, $01,$55, $01,$65
.byte $1C,$66, $01,$86, $01,$96, $01,$99, $01,$96, $01,$86, $02,$66
.byte $04,$65, $1F,$66, $01,$99, $1B,$66, $01,$E6, $01,$6E, $01,$E6
.byte $09,$66, $01,$69, $2B,$66
.byte $FF,$FF
landing_rle: .byte $28,$28
.byte $03,$66, $01,$56, $27,$66, $01,$55, $01,$F5, $26,$66, $01,$55
.byte $01,$FF, $01,$F5, $25,$66, $01,$55, $02,$FF, $01,$F5, $24,$66
.byte $01,$55, $03,$FF, $01,$F5, $20,$66, $01,$CC, $01,$2C, $01,$CC
.byte $01,$55, $0F,$F5, $04,$22, $12,$CC, $01,$62, $01,$22, $01,$55
.byte $01,$FF, $03,$11, $01,$44, $03,$22, $01,$44, $03,$22, $03,$FF
.byte $05,$22, $11,$CC, $01,$22, $01,$26, $01,$55, $02,$FF, $01,$11
.byte $03,$44, $01,$22, $03,$44, $01,$22, $04,$FF, $06,$22, $10,$CC
.byte $02,$26, $01,$55, $02,$FF, $01,$F1, $03,$F4, $01,$F2, $03,$F4
.byte $01,$F2, $01,$FF, $02,$8F, $01,$FF, $07,$22, $0F,$CC, $01,$62
.byte $01,$26, $01,$55, $0A,$5F, $02,$FF, $02,$88, $01,$FF, $08,$22
.byte $0E,$CC, $01,$22, $01,$C2, $01,$55, $09,$FF, $01,$55, $02,$FF
.byte $02,$88, $0A,$FF, $0F,$CC, $03,$C5, $01,$85, $09,$C5, $02,$85
.byte $04,$C5, $01,$85, $05,$C5, $11,$CC, $01,$C8, $09,$CC, $04,$85
.byte $04,$CC, $01,$C8, $1E,$CC, $06,$85, $FE,$CC, $06,$CC
.byte $FF,$FF
harfco_rle: .byte $28,$28
.byte $05,$00, $1D,$AA, $01,$77, $09,$00, $01,$F0, $01,$00, $1B,$AA
.byte $01,$77, $03,$00, $01,$F0, $03,$00, $01,$F0, $17,$00, $01,$F0
.byte $15,$00, $01,$0F, $19,$00, $01,$F0, $16,$00, $01,$0F, $17,$00
.byte $28,$22, $1D,$77, $01,$72, $0A,$22, $1F,$77, $01,$72, $08,$22
.byte $21,$77, $01,$72, $06,$22, $11,$77, $01,$07, $01,$77, $05,$07
.byte $01,$77, $01,$00, $01,$77, $01,$07, $07,$77, $05,$22, $0C,$77
.byte $01,$57, $01,$00, $01,$57, $01,$00, $01,$57, $01,$00, $01,$57
.byte $05,$00, $01,$57, $01,$00, $01,$57, $01,$00, $01,$57, $07,$77
.byte $04,$22, $0B,$77, $01,$75, $01,$55, $01,$50, $03,$55, $01,$50
.byte $09,$55, $01,$50, $01,$55, $01,$75, $07,$77, $03,$22, $25,$77
.byte $03,$22, $24,$77, $01,$27, $03,$22, $24,$77, $04,$22, $22,$77
.byte $01,$27, $05,$22, $21,$77, $01,$27, $06,$22, $20,$77, $01,$27
.byte $07,$22, $1F,$77, $01,$27, $08,$22, $1E,$77, $01,$27, $09,$22
.byte $FF,$FF
belair_rle: .byte $28,$28
.byte $0A,$00, $01,$05, $01,$57, $01,$75, $01,$57, $01,$75, $01,$57
.byte $01,$75, $01,$57, $01,$75, $01,$57, $01,$75, $01,$57, $01,$75
.byte $01,$57, $01,$75, $01,$57, $01,$75, $01,$57, $01,$75, $01,$57
.byte $01,$05, $0B,$00, $01,$70, $09,$00, $01,$05, $0F,$57, $01,$05
.byte $05,$00, $01,$0D, $01,$D0, $05,$00, $01,$07, $01,$7F, $01,$07
.byte $05,$00, $01,$70, $01,$F7, $01,$70, $17,$00, $01,$DD, $0E,$00
.byte $01,$07, $17,$00, $01,$0D, $0D,$00, $01,$70, $1C,$00, $01,$60
.byte $01,$E6, $01,$60, $07,$00, $01,$07, $01,$7F, $01,$07, $06,$00
.byte $01,$50, $06,$85, $01,$50, $0E,$00, $01,$06, $0C,$00, $05,$50
.byte $08,$88, $10,$00, $02,$50, $01,$20, $03,$22, $01,$92, $01,$D9
.byte $03,$50, $01,$88, $01,$98, $01,$88, $01,$98, $01,$55, $01,$88
.byte $01,$89, $01,$88, $02,$08, $01,$88, $01,$89, $01,$88, $03,$50
.byte $06,$40, $07,$50, $01,$20, $03,$22, $01,$92, $01,$D9, $01,$0D
.byte $01,$D9, $03,$00, $04,$88, $01,$55, $03,$88, $02,$00, $03,$88
.byte $03,$00, $06,$74, $07,$00, $02,$22, $01,$92, $01,$D9, $01,$0D
.byte $01,$D9, $01,$9D, $01,$D9, $09,$00, $01,$08, $01,$88, $02,$00
.byte $01,$88, $01,$08, $04,$00, $01,$77, $01,$07, $02,$E7, $01,$07
.byte $01,$77, $07,$00, $01,$88, $01,$D9, $01,$0D, $01,$D9, $01,$9D
.byte $01,$D9, $01,$0D, $01,$D9, $13,$00, $01,$77, $01,$00, $02,$EE
.byte $01,$00, $01,$77, $07,$00, $01,$88, $01,$D9, $01,$9D, $01,$D9
.byte $01,$0D, $01,$D9, $01,$9D, $01,$09, $13,$00, $02,$77, $02,$EE
.byte $02,$77, $04,$00, $01,$D0, $01,$10, $01,$00, $01,$88, $01,$D9
.byte $01,$0D, $01,$D9, $01,$00, $01,$09, $1F,$00, $01,$DD, $01,$11
.byte $01,$01, $01,$88, $01,$D9, $01,$9D, $01,$09, $21,$00, $01,$DD
.byte $02,$00, $01,$08, $01,$09, $20,$00, $01,$40, $01,$44, $01,$04
.byte $01,$DD, $01,$04, $01,$44, $23,$00, $05,$04, $A0,$00
.byte $FF,$FF
math_office_rle: .byte $28,$28
.byte $19,$00, $0F,$44, $19,$00, $01,$44, $01,$FF, $01,$4F, $01,$F4
.byte $02,$44, $01,$F4, $01,$FF, $01,$F4, $02,$44, $01,$FF, $01,$F4
.byte $01,$44, $01,$FF, $19,$00, $01,$44, $01,$FF, $01,$4F, $01,$F4
.byte $01,$44, $01,$4F, $01,$44, $01,$FF, $01,$44, $01,$4F, $01,$44
.byte $01,$FF, $01,$44, $01,$4F, $01,$FF, $19,$00, $01,$44, $02,$4F
.byte $04,$44, $01,$4F, $03,$44, $01,$4F, $02,$44, $01,$4F, $19,$00
.byte $0F,$44, $02,$00, $01,$88, $01,$B8, $07,$00, $02,$80, $07,$00
.byte $01,$B8, $01,$88, $02,$00, $01,$0A, $0F,$07, $02,$00, $01,$88
.byte $01,$BB, $01,$0B, $06,$00, $01,$88, $01,$BB, $01,$B0, $05,$00
.byte $01,$0B, $01,$BB, $01,$88, $04,$00, $01,$B8, $01,$88, $0E,$00
.byte $01,$88, $08,$00, $01,$88, $01,$FB, $07,$00, $01,$2B, $04,$00
.byte $01,$0B, $01,$BB, $01,$88, $0E,$00, $01,$77, $01,$FF, $07,$00
.byte $01,$F8, $01,$FF, $01,$F0, $05,$00, $01,$44, $01,$22, $05,$00
.byte $01,$FF, $01,$08, $01,$80, $0D,$00, $02,$F7, $01,$0B, $06,$00
.byte $01,$7F, $01,$11, $01,$7F, $04,$70, $01,$11, $01,$74, $01,$72
.byte $03,$70, $01,$11, $02,$7F, $06,$70, $09,$00, $02,$4F, $05,$00
.byte $01,$70, $02,$77, $01,$71, $05,$77, $01,$71, $05,$77, $01,$71
.byte $06,$77, $01,$57, $01,$55, $09,$00, $02,$44, $04,$00, $16,$57
.byte $01,$55, $01,$05, $01,$55, $08,$00, $02,$04, $01,$B4, $01,$04
.byte $03,$00, $01,$55, $02,$05, $01,$55, $01,$05, $01,$B5, $04,$05
.byte $01,$D5, $05,$05, $01,$B5, $04,$05, $01,$55, $02,$00, $01,$55
.byte $0A,$00, $01,$BB, $04,$00, $01,$55, $02,$00, $01,$55, $01,$00
.byte $02,$08, $02,$00, $02,$08, $04,$00, $02,$08, $04,$00, $01,$55
.byte $02,$00, $01,$55, $0A,$00, $01,$8B, $01,$80, $03,$00, $01,$55
.byte $02,$00, $01,$55, $11,$00, $01,$55, $02,$00, $01,$55, $0A,$00
.byte $02,$08, $03,$00, $01,$55, $02,$00, $01,$05, $11,$00, $01,$55
.byte $02,$00, $01,$05, $0F,$00, $01,$55, $14,$00, $01,$55, $82,$00
.byte $FF,$FF
video_hr_rle: .byte $28,$28
.byte $20,$00, $01,$77, $06,$57, $01,$77, $20,$00, $01,$77, $02,$55
.byte $01,$15, $03,$55, $01,$77, $20,$00, $01,$77, $01,$55, $01,$51
.byte $01,$11, $03,$55, $01,$77, $20,$00, $01,$77, $02,$55, $01,$11
.byte $03,$55, $01,$77, $13,$00, $01,$50, $02,$55, $01,$50, $09,$00
.byte $01,$77, $01,$55, $03,$51, $02,$55, $01,$77, $03,$00, $06,$70
.byte $03,$00, $01,$DD, $01,$BD, $05,$00, $01,$B0, $01,$BB, $01,$88
.byte $04,$00, $02,$80, $04,$00, $01,$77, $01,$7C, $06,$77, $02,$00
.byte $01,$70, $04,$77, $01,$87, $01,$88, $03,$00, $01,$DD, $01,$BB
.byte $01,$0B, $05,$00, $01,$BB, $01,$08, $03,$00, $01,$B0, $01,$BB
.byte $01,$88, $09,$00, $01,$05, $01,$50, $02,$00, $01,$74, $01,$47
.byte $01,$44, $02,$77, $01,$87, $01,$00, $01,$88, $03,$00, $01,$DD
.byte $01,$FF, $06,$00, $02,$22, $04,$00, $01,$BB, $01,$08, $0B,$00
.byte $01,$05, $01,$77, $02,$99, $01,$74, $01,$77, $01,$87, $02,$00
.byte $01,$88, $03,$00, $01,$DD, $01,$FF, $01,$0F, $01,$0B, $02,$00
.byte $01,$B0, $01,$20, $02,$22, $04,$00, $01,$11, $0D,$00, $01,$77
.byte $02,$79, $01,$77, $01,$87, $01,$00, $02,$E0, $01,$88, $03,$00
.byte $01,$0D, $01,$8F, $06,$00, $02,$52, $02,$00, $01,$0B, $01,$01
.byte $01,$11, $0D,$00, $03,$77, $01,$87, $01,$00, $01,$D0, $01,$DE
.byte $01,$EE, $01,$88, $04,$07, $01,$88, $06,$07, $02,$55, $04,$07
.byte $01,$44, $0D,$07, $02,$77, $01,$87, $01,$00, $01,$30, $01,$3D
.byte $01,$DD, $01,$8E, $01,$08, $03,$00, $01,$08, $01,$B8, $01,$08
.byte $05,$00, $02,$55, $04,$00, $01,$44, $0D,$00, $01,$77, $01,$08
.byte $01,$00, $02,$22, $01,$33, $01,$8D, $01,$08, $05,$00, $01,$BB
.byte $06,$00, $02,$55, $04,$00, $01,$44, $0D,$00, $01,$08, $01,$00
.byte $01,$10, $01,$12, $01,$22, $01,$83, $01,$08, $06,$00, $02,$08
.byte $04,$00, $03,$08, $03,$00, $02,$08, $0E,$00, $01,$40, $01,$41
.byte $01,$11, $01,$82, $01,$08, $22,$00, $01,$19, $01,$99, $01,$44
.byte $01,$11, $01,$88, $23,$00, $01,$11, $01,$99, $01,$44, $01,$88
.byte $24,$00, $01,$11, $01,$99, $01,$88, $25,$00, $01,$11, $01,$88
.byte $26,$00, $01,$88, $27,$00
.byte $FF,$FF
collegep_rle: .byte $28,$28
.byte $21,$66, $02,$F6, $08,$66, $02,$F6, $03,$FF, $01,$F6, $15,$66
.byte $01,$F6, $05,$FF, $01,$F6, $06,$66, $01,$6F, $01,$5F, $01,$FF
.byte $01,$F5, $03,$FF, $05,$66, $01,$76, $04,$A6, $01,$76, $04,$A6
.byte $01,$76, $03,$66, $02,$5F, $03,$FF, $02,$5F, $01,$6F, $08,$66
.byte $04,$65, $05,$66, $03,$17, $02,$1A, $01,$17, $01,$F7, $01,$17
.byte $02,$1A, $03,$17, $03,$66, $02,$65, $02,$6F, $14,$66, $01,$1F
.byte $01,$FF, $01,$1F, $01,$4F, $01,$1F, $01,$FF, $01,$1F, $01,$FF
.byte $01,$1F, $01,$4F, $01,$1F, $01,$FF, $01,$1F, $0D,$66, $0E,$CC
.byte $01,$11, $01,$FF, $01,$11, $01,$84, $01,$11, $01,$FF, $01,$00
.byte $01,$FF, $01,$11, $01,$84, $01,$11, $01,$FF, $01,$11, $1B,$CC
.byte $01,$C7, $01,$CF, $01,$C7, $01,$C8, $01,$C7, $01,$CF, $01,$C0
.byte $01,$CF, $01,$C7, $01,$C8, $01,$C7, $01,$CF, $01,$C7, $1E,$CC
.byte $01,$5C, $02,$15, $01,$55, $02,$15, $01,$5C, $21,$CC, $01,$55
.byte $01,$11, $01,$55, $01,$51, $01,$55, $01,$11, $01,$55, $21,$CC
.byte $01,$C5, $01,$51, $03,$55, $01,$51, $01,$C5, $05,$CC, $01,$5C
.byte $0A,$88, $0B,$CC, $01,$FC, $01,$FF, $01,$5C, $01,$CC, $01,$DC
.byte $08,$8C, $05,$CC, $01,$88, $01,$77, $01,$7E, $08,$EE, $0A,$CC
.byte $01,$8F, $02,$FF, $01,$85, $01,$ED, $09,$EE, $02,$E8, $01,$DC
.byte $02,$CC, $01,$88, $02,$77, $01,$85, $01,$58, $01,$98, $05,$88
.byte $09,$CC, $01,$9C, $02,$88, $01,$48, $01,$58, $01,$88, $01,$8E
.byte $0A,$EE, $01,$ED, $01,$DC, $01,$CC, $01,$88, $02,$77, $01,$88
.byte $01,$85, $03,$58, $01,$55, $02,$58, $08,$CC, $01,$8C, $01,$98
.byte $03,$88, $01,$48, $01,$88, $01,$A8, $01,$8E, $0A,$EE, $01,$DD
.byte $01,$CC, $01,$C8, $02,$77, $02,$88, $01,$55, $02,$88, $01,$85
.byte $02,$88, $07,$CC, $01,$8C, $01,$89, $02,$88, $01,$89, $04,$88
.byte $01,$85, $01,$88, $0B,$EE, $03,$C7, $01,$C8, $01,$88, $01,$55
.byte $03,$88, $02,$48, $06,$CC, $01,$8C, $01,$89, $01,$98, $01,$88
.byte $01,$98, $01,$88, $01,$84, $03,$88, $01,$85, $01,$88, $01,$A8
.byte $06,$EE, $01,$DE, $01,$CE, $07,$CC, $01,$55, $01,$48, $02,$44
.byte $01,$49, $01,$44, $08,$CC, $05,$C8, $06,$88, $05,$EE, $01,$DD
.byte $01,$CD, $07,$CC, $01,$4C, $02,$44, $01,$49, $03,$44, $11,$DD
.byte $01,$ED, $05,$EE, $11,$DD, $10,$77, $01,$E7, $05,$EE, $12,$77
.byte $28,$22
.byte $FF,$FF
umcp_rle: .byte $28,$28
.byte $1D,$66, $03,$F6, $01,$76, $03,$56, $10,$66, $02,$96, $0D,$66
.byte $01,$F6, $01,$7F, $01,$FF, $01,$7F, $01,$57, $01,$75, $01,$57
.byte $01,$77, $01,$55, $0F,$66, $01,$99, $02,$DD, $01,$99, $08,$66
.byte $01,$F6, $01,$7F, $01,$F7, $01,$7F, $03,$77, $01,$75, $01,$57
.byte $01,$75, $02,$55, $01,$65, $0B,$66, $01,$F6, $01,$76, $01,$56
.byte $01,$66, $01,$99, $02,$DD, $01,$99, $08,$66, $01,$6F, $01,$F7
.byte $03,$77, $01,$57, $02,$55, $03,$65, $0A,$66, $01,$FF, $01,$7F
.byte $01,$FF, $01,$77, $01,$55, $01,$65, $02,$66, $02,$69, $2B,$66
.byte $07,$46, $1C,$66, $01,$44, $03,$66, $09,$D4, $12,$66, $01,$16
.byte $01,$66, $01,$F6, $01,$66, $01,$16, $03,$66, $03,$44, $02,$66
.byte $01,$DD, $01,$5D, $02,$DD, $01,$5D, $02,$DD, $01,$5D, $01,$DD
.byte $02,$66, $02,$86, $01,$46, $08,$66, $02,$D6, $03,$66, $01,$51
.byte $01,$56, $01,$5F, $01,$56, $01,$51, $02,$66, $02,$64, $01,$84
.byte $02,$64, $01,$66, $01,$DD, $01,$D5, $01,$DD, $01,$4D, $01,$44
.byte $01,$4D, $01,$DD, $01,$D5, $01,$DD, $01,$66, $01,$86, $01,$88
.byte $01,$84, $02,$44, $05,$66, $02,$6D, $02,$1D, $01,$CC, $01,$5C
.byte $07,$55, $01,$5C, $02,$CC, $01,$88, $03,$CC, $01,$DD, $01,$5D
.byte $02,$DD, $01,$8D, $02,$DD, $01,$5D, $01,$DD, $01,$CC, $01,$C8
.byte $01,$88, $03,$44, $01,$C0, $01,$08, $01,$58, $01,$50, $01,$0C
.byte $02,$CC, $02,$11, $01,$CC, $01,$1F, $01,$FF, $05,$1F, $01,$FF
.byte $01,$1F, $02,$CC, $01,$88, $03,$CC, $01,$DD, $01,$D5, $02,$DD
.byte $01,$88, $02,$DD, $01,$D5, $01,$DD, $02,$CC, $02,$C8, $01,$C4
.byte $02,$CC, $01,$C0, $01,$08, $01,$58, $01,$50, $01,$05, $01,$55
.byte $01,$11, $01,$10, $01,$CC, $01,$11, $01,$FF, $01,$10, $01,$11
.byte $01,$10, $01,$11, $01,$10, $01,$FF, $01,$11, $17,$CC, $01,$00
.byte $01,$08, $01,$58, $01,$50, $01,$05, $01,$51, $01,$11, $01,$CC
.byte $01,$11, $01,$FF, $01,$10, $01,$11, $01,$88, $01,$11, $01,$10
.byte $01,$FF, $01,$11, $18,$CC, $01,$00, $02,$58, $01,$50, $01,$00
.byte $01,$51, $01,$CC, $01,$11, $01,$7F, $02,$71, $01,$78, $02,$71
.byte $01,$7F, $01,$11, $19,$CC, $01,$00, $02,$88, $01,$00, $01,$05
.byte $01,$CC, $09,$C7, $09,$CC, $03,$5C, $0D,$CC, $01,$C0, $01,$05
.byte $02,$85, $01,$00, $11,$CC, $01,$5C, $01,$E5, $03,$EE, $01,$E5
.byte $01,$5C, $0C,$CC, $01,$00, $02,$58, $01,$50, $11,$CC, $01,$FF
.byte $02,$75, $04,$55, $0C,$CC, $01,$C0, $01,$00, $02,$88, $10,$CC
.byte $02,$44, $02,$47, $03,$45, $02,$44, $0C,$CC, $01,$00, $01,$05
.byte $01,$85, $10,$CC, $01,$44, $01,$D4, $01,$9D, $01,$D4, $01,$44
.byte $01,$34, $01,$D3, $01,$34, $01,$44, $0D,$CC, $01,$00, $01,$08
.byte $0F,$CC, $03,$44, $01,$CD, $03,$44, $01,$C3, $03,$44, $0C,$CC
.byte $01,$C0, $01,$00
.byte $FF,$FF
dining_rle: .byte $28,$28
.byte $01,$88, $03,$98, $02,$88, $01,$98, $02,$88, $02,$98, $02,$88
.byte $03,$98, $01,$88, $02,$98, $01,$88, $03,$98, $04,$88, $01,$98
.byte $01,$88, $01,$98, $01,$88, $03,$98, $01,$88, $01,$98, $01,$88
.byte $01,$98, $01,$88, $01,$98, $02,$88, $01,$99, $02,$88, $01,$99
.byte $01,$88, $01,$99, $01,$88, $01,$99, $01,$98, $01,$89, $01,$88
.byte $01,$99, $01,$88, $01,$98, $01,$88, $01,$99, $01,$98, $02,$88
.byte $01,$99, $05,$88, $01,$89, $01,$98, $01,$89, $01,$88, $01,$99
.byte $01,$88, $01,$99, $01,$88, $01,$99, $01,$88, $01,$99, $01,$88
.byte $01,$99, $02,$88, $01,$99, $02,$88, $01,$99, $01,$89, $01,$99
.byte $01,$88, $01,$99, $01,$88, $01,$99, $01,$88, $01,$99, $01,$98
.byte $01,$99, $01,$88, $01,$99, $01,$98, $02,$88, $01,$99, $06,$88
.byte $01,$99, $02,$88, $01,$99, $01,$98, $01,$99, $01,$88, $01,$99
.byte $01,$98, $01,$99, $01,$88, $01,$99, $05,$88, $01,$08, $01,$D8
.byte $01,$08, $01,$D8, $01,$F8, $01,$18, $01,$F8, $01,$18, $07,$88
.byte $03,$98, $01,$88, $03,$98, $01,$88, $03,$98, $01,$88, $01,$98
.byte $02,$88, $01,$98, $01,$88, $03,$98, $05,$88, $01,$DD, $01,$00
.byte $01,$DD, $01,$0D, $02,$F1, $02,$1F, $07,$88, $01,$99, $01,$98
.byte $01,$99, $01,$88, $01,$99, $01,$88, $01,$99, $02,$88, $01,$99
.byte $02,$88, $02,$99, $01,$98, $01,$99, $02,$88, $01,$99, $06,$88
.byte $01,$00, $01,$DD, $01,$00, $01,$D0, $01,$11, $01,$FF, $01,$11
.byte $01,$FF, $07,$88, $01,$99, $03,$88, $01,$99, $01,$98, $01,$99
.byte $01,$88, $01,$98, $01,$99, $01,$98, $01,$88, $01,$99, $01,$88
.byte $01,$89, $01,$99, $02,$88, $01,$99, $2C,$88, $02,$58, $08,$88
.byte $01,$00, $01,$B0, $1B,$88, $01,$58, $01,$55, $01,$BB, $01,$B8
.byte $07,$88, $01,$00, $01,$BB, $01,$8B, $01,$88, $01,$68, $03,$88
.byte $01,$78, $03,$88, $02,$08, $04,$88, $02,$08, $09,$88, $02,$85
.byte $01,$BB, $03,$88, $01,$66, $04,$88, $01,$00, $01,$22, $02,$88
.byte $01,$FF, $03,$88, $01,$77, $02,$A7, $01,$B7, $01,$BB, $01,$00
.byte $01,$57, $02,$A7, $01,$B7, $01,$BB, $01,$00, $07,$A7, $03,$08
.byte $02,$11, $01,$08, $01,$77, $02,$66, $01,$77, $04,$08, $01,$22
.byte $01,$02, $03,$05, $02,$08, $01,$77, $03,$AA, $01,$FB, $01,$F0
.byte $01,$55, $03,$AA, $01,$2B, $01,$00, $07,$AA, $03,$00, $02,$11
.byte $04,$77, $05,$00, $01,$A2, $07,$00, $02,$0A, $01,$7A, $02,$7F
.byte $01,$75, $01,$7A, $01,$6A, $02,$72, $01,$70, $03,$AA, $01,$B8
.byte $01,$88, $02,$AA, $03,$00, $01,$81, $04,$77, $06,$00, $01,$AA
.byte $07,$00, $01,$70, $01,$87, $02,$88, $01,$78, $02,$77, $01,$99
.byte $02,$77, $01,$66, $01,$77, $01,$70, $01,$0B, $01,$BB, $01,$88
.byte $05,$00, $04,$57, $07,$00, $02,$08, $05,$00, $01,$07, $0A,$77
.byte $01,$7F, $01,$77, $01,$7B, $01,$04, $01,$44, $01,$08, $01,$70
.byte $04,$00, $01,$55, $01,$88, $12,$00, $01,$07, $01,$87, $07,$07
.byte $01,$87, $01,$07, $01,$00, $01,$20, $01,$24, $01,$00, $01,$77
.byte $04,$00, $01,$55, $02,$08, $12,$00, $01,$88, $07,$00, $01,$88
.byte $02,$00, $01,$22, $01,$77, $01,$07, $01,$77, $04,$00, $01,$55
.byte $14,$00, $01,$08, $07,$00, $01,$08, $01,$00, $02,$08, $01,$07
.byte $01,$00, $01,$07, $79,$00
.byte $FF,$FF
metro_rle: .byte $28,$28
.byte $1F,$66, $09,$77, $03,$66, $04,$F6, $0A,$66, $01,$11, $01,$66
.byte $02,$16, $01,$66, $01,$76, $08,$66, $01,$77, $02,$22, $02,$27
.byte $04,$77, $02,$66, $01,$6F, $04,$7F, $01,$77, $09,$66, $02,$69
.byte $02,$19, $01,$69, $01,$77, $08,$66, $01,$77, $05,$22, $01,$27
.byte $02,$77, $02,$66, $01,$46, $1C,$66, $01,$77, $07,$22, $01,$77
.byte $01,$66, $01,$46, $01,$44, $01,$46, $1B,$66, $01,$77, $07,$22
.byte $01,$77, $01,$C6, $01,$C4, $01,$84, $01,$C4, $03,$C6, $01,$76
.byte $02,$86, $01,$76, $09,$C6, $0B,$56, $01,$97, $01,$DD, $06,$22
.byte $01,$77, $02,$CC, $01,$C8, $03,$CC, $01,$77, $02,$80, $01,$77
.byte $01,$FF, $14,$CC, $01,$77, $01,$DD, $06,$22, $01,$77, $04,$CC
.byte $01,$7C, $01,$77, $02,$80, $01,$77, $02,$FF, $14,$0C, $01,$77
.byte $01,$DD, $04,$D2, $02,$22, $01,$77, $03,$CC, $01,$7C, $01,$77
.byte $02,$08, $01,$78, $01,$F7, $01,$FF, $01,$0F, $14,$00, $01,$77
.byte $01,$0D, $02,$DD, $01,$0D, $03,$02, $01,$77, $02,$CC, $01,$7C
.byte $01,$87, $03,$80, $01,$77, $01,$FF, $01,$0F, $01,$00, $01,$55
.byte $01,$85, $14,$00, $01,$F9, $02,$30, $01,$F0, $02,$80, $01,$77
.byte $01,$CC, $01,$7C, $01,$07, $03,$08, $01,$77, $02,$FF, $02,$00
.byte $01,$55, $01,$88, $01,$08, $11,$00, $01,$30, $01,$FF, $01,$F0
.byte $02,$F3, $02,$FF, $01,$88, $01,$77, $01,$7C, $01,$87, $03,$80
.byte $01,$70, $01,$F7, $01,$1F, $01,$FF, $02,$00, $02,$FF, $01,$00
.byte $01,$80, $10,$00, $01,$0F, $06,$FF, $01,$88, $01,$77, $01,$07
.byte $03,$08, $01,$78, $01,$77, $01,$FF, $01,$F1, $01,$FF, $02,$00
.byte $02,$FF, $01,$0F, $01,$08, $04,$00, $01,$DD, $01,$BD, $0C,$00
.byte $02,$3F, $02,$0F, $01,$3F, $01,$38, $01,$77, $04,$80, $01,$77
.byte $01,$FF, $01,$1F, $01,$FF, $03,$00, $02,$1F, $06,$00, $01,$DD
.byte $01,$DB, $01,$0B, $11,$00, $01,$77, $03,$08, $01,$77, $01,$F7
.byte $01,$FF, $01,$F1, $01,$0F, $03,$00, $02,$11, $06,$00, $01,$22
.byte $13,$00, $01,$77, $02,$00, $01,$70, $01,$77, $03,$FF, $04,$00
.byte $02,$11, $06,$00, $01,$22, $01,$02, $01,$03, $0E,$00, $01,$50
.byte $02,$55, $01,$77, $02,$88, $01,$77, $01,$FF, $01,$11, $01,$FF
.byte $05,$00, $03,$88, $05,$00, $01,$22, $11,$00, $02,$05, $01,$77
.byte $01,$00, $01,$77, $01,$F7, $02,$FF, $01,$0F, $0D,$00, $01,$82
.byte $01,$80, $12,$00, $01,$77, $01,$70, $01,$77, $03,$FF, $22,$00
.byte $02,$77, $03,$FF, $23,$00, $01,$77
.byte $FF,$FF
talbot_rle: .byte $28,$28
.byte $01,$22, $02,$66, $02,$77, $01,$FF, $0C,$77, $01,$55, $01,$00
.byte $01,$66, $02,$00, $01,$55, $0B,$77, $01,$FF, $04,$77, $03,$66
.byte $02,$77, $01,$FF, $0B,$77, $01,$87, $01,$55, $02,$50, $02,$53
.byte $01,$55, $01,$87, $0A,$77, $01,$FF, $04,$77, $03,$66, $02,$77
.byte $01,$FF, $06,$77, $01,$07, $01,$00, $01,$07, $01,$77, $02,$88
.byte $04,$85, $01,$8C, $01,$85, $02,$88, $02,$77, $02,$87, $05,$77
.byte $01,$FF, $04,$77, $01,$66, $01,$33, $01,$66, $02,$77, $01,$FF
.byte $06,$77, $01,$88, $01,$BB, $01,$B7, $01,$77, $01,$88, $01,$77
.byte $01,$88, $01,$77, $02,$27, $01,$77, $01,$88, $01,$77, $01,$88
.byte $01,$77, $01,$B7, $01,$BB, $01,$88, $05,$77, $01,$FF, $04,$77
.byte $02,$66, $01,$76, $02,$77, $01,$FF, $06,$77, $01,$78, $01,$1B
.byte $02,$77, $01,$88, $01,$87, $01,$88, $01,$57, $02,$85, $01,$57
.byte $01,$88, $01,$87, $01,$88, $02,$77, $01,$5B, $01,$78, $05,$77
.byte $01,$FF, $04,$77, $02,$66, $02,$77, $01,$FF, $08,$0F, $01,$11
.byte $01,$1F, $01,$BF, $01,$58, $02,$05, $04,$0F, $01,$05, $01,$5F
.byte $01,$58, $01,$BF, $01,$5F, $01,$55, $05,$0F, $01,$B8, $01,$88
.byte $04,$77, $01,$66, $03,$77, $01,$44, $08,$00, $01,$41, $02,$00
.byte $01,$88, $08,$00, $01,$88, $02,$00, $01,$25, $04,$00, $01,$B7
.byte $01,$B5, $01,$88, $04,$77, $01,$66, $02,$77, $01,$47, $01,$C4
.byte $01,$40, $02,$00, $01,$55, $01,$B5, $03,$00, $01,$44, $02,$00
.byte $01,$08, $06,$00, $01,$90, $01,$95, $01,$08, $02,$00, $01,$22
.byte $05,$00, $01,$2B, $01,$00, $01,$FF, $03,$77, $01,$66, $02,$77
.byte $01,$44, $01,$CC, $01,$44, $01,$80, $01,$00, $01,$55, $01,$BB
.byte $01,$0B, $02,$00, $02,$08, $08,$00, $01,$09, $01,$99, $01,$55
.byte $01,$99, $01,$09, $01,$95, $03,$00, $01,$B0, $01,$20, $01,$22
.byte $01,$00, $01,$FF, $05,$77, $01,$44, $01,$CC, $01,$4C, $02,$C4
.byte $01,$40, $01,$00, $01,$4B, $01,$40, $01,$B0, $0C,$00, $01,$99
.byte $01,$00, $01,$99, $01,$00, $01,$09, $05,$00, $01,$82, $01,$00
.byte $01,$FF, $05,$77, $01,$44, $01,$4C, $01,$C4, $01,$CC, $01,$4C
.byte $01,$04, $01,$00, $01,$44, $18,$00, $01,$88, $01,$00, $01,$FF
.byte $01,$F7, $04,$77, $02,$84, $02,$8C, $01,$44, $02,$00, $01,$55
.byte $07,$00, $01,$D0, $06,$8D, $01,$D0, $08,$00, $01,$A0, $01,$A8
.byte $02,$00, $01,$FF, $04,$77, $01,$88, $02,$44, $01,$88, $01,$00
.byte $02,$80, $02,$05, $05,$00, $02,$0D, $06,$D8, $02,$0D, $09,$00
.byte $01,$5D, $01,$DD, $01,$FF, $04,$77, $01,$88, $02,$00, $01,$88
.byte $01,$00, $01,$88, $01,$BB, $01,$B0, $0A,$00, $02,$88, $0C,$00
.byte $01,$0B, $01,$BB, $01,$0D, $01,$FF, $03,$77, $01,$FF, $01,$88
.byte $02,$80, $01,$88, $01,$00, $01,$88, $01,$4B, $09,$00, $02,$D0
.byte $02,$88, $02,$D0, $0B,$00, $01,$6B, $01,$00, $01,$0F, $01,$FF
.byte $02,$77, $01,$FF, $05,$00, $01,$88, $01,$44, $01,$04, $01,$0B
.byte $05,$00, $01,$D0, $01,$DD, $06,$88, $01,$DD, $01,$D0, $07,$00
.byte $01,$0B, $01,$06, $01,$66, $02,$00, $01,$FF, $02,$77, $01,$FF
.byte $06,$00, $01,$22, $09,$00, $06,$0D, $0B,$00, $01,$22, $02,$00
.byte $01,$FF, $01,$77, $02,$FF, $06,$00, $01,$82, $01,$80, $18,$00
.byte $01,$50, $01,$52, $02,$00, $01,$0F, $01,$F7, $01,$FF, $01,$0F
.byte $25,$00, $02,$FF, $26,$00, $01,$FF
.byte $FF,$FF
title_rle: .byte $28 ; ysize=40
.byte $00, $A0,$19,$20, $AF,$00, $22, $A3,$66, $22, $62
.byte $66, $62, $22, $66, $A3,$22, $66, $26
.byte $62, $22, $62, $26, $62, $22, $A3,$66
.byte $22, $55, $00, $A3,$11, $44, $A3,$22, $44
.byte $A3,$22, $00,$00, $22,$22, $66, $22,$22, $66, $62
.byte $66, $22, $66, $A3,$22, $66, $26, $62
.byte $22, $66, $22, $66, $22,$22, $66, $22,$22
.byte $55, $00, $01, $11, $41, $44, $42
.byte $22, $42, $44, $42, $22, $02, $00,$00
.byte $22,$22, $66, $22,$22, $66, $22, $66, $22
.byte $A3,$66, $22, $66, $62, $26, $22, $26
.byte $62, $26, $22,$22, $66, $22,$22, $55, $00,$00
.byte $11, $A3,$44, $22, $A3,$44, $22, $A3,$00, $02
.byte $A0,$18,$52, $55, $AE,$00, $A0,$1E,$60, $AA,$00, $66, $A3,$22
.byte $66, $26, $22, $26, $66, $22, $26
.byte $66, $22, $66, $A3,$22, $66, $26, $22
.byte $26, $66, $26, $62,$62, $66, $22, $66
.byte $22, $66, $55, $A9,$00, $66, $22, $26
.byte $66,$66, $22, $26, $22, $66, $22, $62
.byte $26, $22, $66,$66, $22, $66,$66, $22, $26
.byte $22, $66, $22, $26,$26, $66, $62, $26
.byte $62, $66, $55, $A9,$00, $66, $22, $A3,$66
.byte $22, $66, $22, $66, $22, $66, $62
.byte $22, $66,$66, $22, $66,$66, $22, $66, $22
.byte $66, $26,$26, $22, $66,$66, $22, $66,$66, $55
.byte $A9,$00, $06, $A0,$1D,$56, $55, $A3,$00, $10, $A0,$24,$00
.byte $10, $00, $10, $11, $01, $A5,$00, $A8,$CC
.byte $40, $A9,$00, $D0, $0D, $00, $D0, $0D
.byte $00, $D0, $A5,$00, $11, $AA,$00, $04, $A4,$54
.byte $CC,$CC, $44, $55, $A6,$00, $D0, $DD, $D0,$D0
.byte $DD, $D0,$D0, $DD, $D0, $A3,$00, $01,$01, $11
.byte $01,$01, $AC,$00, $CC,$CC, $44, $54, $55, $A6,$00
.byte $DD, $A7,$BB, $DD, $A4,$00, $10, $11, $10
.byte $AC,$00, $CC,$CC, $44, $54, $55, $A7,$00, $DD
.byte $BB, $BF, $B0, $BB, $BF, $B0, $BB
.byte $DD, $A3,$00, $10, $A3,$11, $10, $AA,$00, $CC,$CC
.byte $44, $54, $55, $A8,$00, $DD, $DB, $BB
.byte $3B, $33, $BB,$BB, $DB, $DD, $A3,$00, $01,$01
.byte $11, $01,$01, $AA,$00, $CC,$CC, $44, $55, $A9,$00
.byte $DD,$DD, $A5,$BB, $DD,$DD, $A5,$00, $11, $AC,$00, $CC,$CC
.byte $44, $55, $A9,$00, $0D, $00, $BB, $A3,$B1
.byte $BB, $00, $0D, $A4,$00, $BB,$BB, $AC,$00, $0C
.byte $4C, $44, $55, $AC,$00, $BB,$BB, $A6,$00, $20
.byte $22, $2B, $0B, $AE,$00, $05,$05, $A9,$00, $20
.byte $A6,$22, $A3,$20, $22,$22, $02, $A9,$00
.byte $A1
map_rle: .byte $28 ; ysize=40
.byte $A0,$23,$66, $46, $06, $A5,$66, $56, $AE,$66, $E6
.byte $A4,$66, $77, $FF, $F6, $A8,$66, $46, $A3,$44
.byte $A3,$66, $E6, $56, $55, $56, $E6, $AB,$66
.byte $6E, $66, $6E, $66,$66, $67, $A4,$6F, $A7,$66
.byte $4F, $47, $4F, $44, $AB,$66, $A0,$17,$D6, $A3,$66
.byte $64, $A3,$44, $46, $A8,$66, $DD, $A7,$FF, $4F
.byte $A5,$FF, $8F, $88, $8F, $FF, $7F, $77
.byte $07, $77, $07, $77, $DD, $A3,$66, $E6
.byte $A3,$E4, $E6, $A7,$66, $DD, $A6,$FF, $F4, $84
.byte $F4, $A4,$FF, $8F, $A3,$FF, $7F, $77, $A3,$75
.byte $77, $DD, $AF,$66, $DD, $AC,$CF, $A3,$C8, $A3,$CF
.byte $A5,$C7, $DD, $AA,$66, $E6, $A4,$66, $DD, $CC,$CC
.byte $4C, $A3,$CC, $77, $A6,$CC, $8C, $88, $8C
.byte $CC, $4C, $A5,$44, $DD, $A9,$66, $6E, $66
.byte $6E, $A3,$66, $DD, $CC, $4C, $44, $4C
.byte $CC, $22, $A3,$FF, $22, $A3,$CC, $8C, $A3,$CC
.byte $C4, $A5,$44, $DD, $AC,$66, $E6, $66,$66, $DD
.byte $CC,$CC, $C8, $CC,$CC, $C2, $C7,$C7, $CF, $C2,$C2
.byte $CC, $A3,$C8, $A3,$CC, $C8, $CC, $C8, $CC
.byte $C8, $DD, $AB,$66, $6E, $66, $6E, $66
.byte $DD, $4C, $84, $C4, $AA,$CC, $8C, $88
.byte $8C, $CC, $4C, $A5,$44, $DD, $AF,$66, $DD
.byte $C4, $CC, $88, $AA,$CC, $8C, $A3,$CC, $A6,$44
.byte $DD, $66,$66, $55, $56, $66,$66, $55, $A8,$66
.byte $DD, $A5,$CC, $A5,$9C, $CC, $1C, $A3,$C8, $1C
.byte $CC,$CC, $84, $C4, $84, $C4, $84, $DD
.byte $66,$66, $55, $66, $65, $56, $55, $A8,$66
.byte $DD, $A3,$CC, $4C,$4C, $99, $49, $44, $99,$99
.byte $CC, $11, $C1, $1C, $C1, $11, $A7,$CC
.byte $DD, $66,$66, $65, $A3,$66, $65, $66,$66, $6E
.byte $E6, $6E, $A3,$66, $DD, $CC,$CC, $44, $C8
.byte $8C, $99, $94, $44, $94, $99, $CC
.byte $C1, $A3,$CC, $C1, $A7,$CC, $DD, $A3,$66, $16
.byte $91, $16, $A4,$66, $EE, $A4,$66, $6D, $A4,$DC
.byte $D8, $D9,$D9, $D4, $D9,$D9, $DC,$DC, $8C, $88
.byte $8E, $EE, $A7,$DC, $6D, $A3,$66, $69, $99
.byte $69, $A3,$66, $05, $55, $66, $55, $65
.byte $A0,$1C,$66, $86, $96, $99, $96, $86, $66,$66
.byte $A4,$65, $A0,$1F,$66, $99, $A0,$1B,$66, $E6, $6E, $E6
.byte $A9,$66, $69, $A0,$2B,$66
.byte $A1
landing_rle: .byte $28 ; ysize=40
.byte $A3,$66, $56, $A0,$27,$66, $55, $F5, $A0,$26,$66, $55
.byte $FF, $F5, $A0,$25,$66, $55, $FF,$FF, $F5, $A0,$24,$66
.byte $55, $A3,$FF, $F5, $A0,$20,$66, $CC, $2C, $CC
.byte $55, $AF,$F5, $A4,$22, $A0,$12,$CC, $62, $22, $55
.byte $FF, $A3,$11, $44, $A3,$22, $44, $A3,$22, $A3,$FF
.byte $A5,$22, $A0,$11,$CC, $22, $26, $55, $FF,$FF, $11
.byte $A3,$44, $22, $A3,$44, $22, $A4,$FF, $A6,$22, $A0,$10,$CC
.byte $26,$26, $55, $FF,$FF, $F1, $A3,$F4, $F2, $A3,$F4
.byte $F2, $FF, $8F,$8F, $FF, $A7,$22, $AF,$CC, $62
.byte $26, $55, $AA,$5F, $FF,$FF, $88,$88, $FF, $A8,$22
.byte $AE,$CC, $22, $C2, $55, $A9,$FF, $55, $FF,$FF
.byte $88,$88, $AA,$FF, $AF,$CC, $A3,$C5, $85, $A9,$C5, $85,$85
.byte $A4,$C5, $85, $A5,$C5, $A0,$11,$CC, $C8, $A9,$CC, $A4,$85
.byte $A4,$CC, $C8, $A0,$1E,$CC, $A6,$85, $A0,$FF,$CC, $A5,$CC
.byte $A1
harfco_rle: .byte $28 ; ysize=40
.byte $A5,$00, $A0,$1D,$5A, $77, $A9,$00, $F0, $00, $A0,$1B,$5A
.byte $77, $A3,$00, $F0, $A3,$00, $F0, $A0,$17,$00, $F0
.byte $A0,$15,$00, $0F, $A0,$19,$00, $F0, $A0,$16,$00, $0F, $A0,$17,$00
.byte $A0,$28,$22, $A0,$1D,$77, $72, $AA,$22, $A0,$1F,$77, $72, $A8,$22
.byte $A0,$21,$77, $72, $A6,$22, $A0,$11,$77, $07, $77, $A5,$07
.byte $77, $00, $77, $07, $A7,$77, $A5,$22, $AC,$77
.byte $57, $00, $57, $00, $57, $00, $57
.byte $A5,$00, $57, $00, $57, $00, $57, $A7,$77
.byte $A4,$22, $AB,$77, $75, $55, $50, $A3,$55, $50
.byte $A9,$55, $50, $55, $75, $A7,$77, $A3,$22, $A0,$25,$77
.byte $A3,$22, $A0,$24,$77, $27, $A3,$22, $A0,$24,$77, $A4,$22, $A0,$22,$77
.byte $27, $A5,$22, $A0,$21,$77, $27, $A6,$22, $A0,$20,$77, $27
.byte $A7,$22, $A0,$1F,$77, $27, $A8,$22, $A0,$1E,$77, $27, $A9,$22
.byte $A1
belair_rle: .byte $28 ; ysize=40
.byte $AA,$00, $05, $57, $75, $57, $75, $57
.byte $75, $57, $75, $57, $75, $57, $75
.byte $57, $75, $57, $75, $57, $75, $57
.byte $05, $AB,$00, $70, $A9,$00, $05, $AF,$57, $05
.byte $A5,$00, $0D, $D0, $A5,$00, $07, $7F, $07
.byte $A5,$00, $70, $F7, $70, $A0,$17,$00, $DD, $AE,$00
.byte $07, $A0,$17,$00, $0D, $AD,$00, $70, $A0,$1C,$00, $60
.byte $E6, $60, $A7,$00, $07, $7F, $07, $A6,$00
.byte $50, $A6,$85, $50, $AE,$00, $06, $AC,$00, $A5,$50
.byte $A8,$88, $A0,$10,$00, $50,$50, $20, $A3,$22, $92, $D9
.byte $A3,$50, $88, $98, $88, $98, $55, $88
.byte $89, $88, $08,$08, $88, $89, $88, $A3,$50
.byte $A6,$40, $A7,$50, $20, $A3,$22, $92, $D9, $0D
.byte $D9, $A3,$00, $A4,$88, $55, $A3,$88, $00,$00, $A3,$88
.byte $A3,$00, $A6,$74, $A7,$00, $22,$22, $92, $D9, $0D
.byte $D9, $9D, $D9, $A9,$00, $08, $88, $00,$00
.byte $88, $08, $A4,$00, $77, $07, $E7,$E7, $07
.byte $77, $A7,$00, $88, $D9, $0D, $D9, $9D
.byte $D9, $0D, $D9, $A0,$13,$00, $77, $00, $EE,$EE
.byte $00, $77, $A7,$00, $88, $D9, $9D, $D9
.byte $0D, $D9, $9D, $09, $A0,$13,$00, $77,$77, $EE,$EE
.byte $77,$77, $A4,$00, $D0, $10, $00, $88, $D9
.byte $0D, $D9, $00, $09, $A0,$1F,$00, $DD, $11
.byte $01, $88, $D9, $9D, $09, $A0,$21,$00, $DD
.byte $00,$00, $08, $09, $A0,$20,$00, $40, $44, $04
.byte $DD, $04, $44, $A0,$23,$00, $A5,$04, $A0,$A0,$00
.byte $A1
math_office_rle: .byte $28 ; ysize=40
.byte $A0,$19,$00, $AF,$44, $A0,$19,$00, $44, $FF, $4F, $F4
.byte $44,$44, $F4, $FF, $F4, $44,$44, $FF, $F4
.byte $44, $FF, $A0,$19,$00, $44, $FF, $4F, $F4
.byte $44, $4F, $44, $FF, $44, $4F, $44
.byte $FF, $44, $4F, $FF, $A0,$19,$00, $44, $4F,$4F
.byte $A4,$44, $4F, $A3,$44, $4F, $44,$44, $4F, $A0,$19,$00
.byte $AF,$44, $00,$00, $88, $B8, $A7,$00, $80,$80, $A7,$00
.byte $B8, $88, $00,$00, $0A, $AF,$07, $00,$00, $88
.byte $BB, $0B, $A6,$00, $88, $BB, $B0, $A5,$00
.byte $0B, $BB, $88, $A4,$00, $B8, $88, $AE,$00
.byte $88, $A8,$00, $88, $FB, $A7,$00, $2B, $A4,$00
.byte $0B, $BB, $88, $AE,$00, $77, $FF, $A7,$00
.byte $F8, $FF, $F0, $A5,$00, $44, $22, $A5,$00
.byte $FF, $08, $80, $AD,$00, $F7,$F7, $0B, $A6,$00
.byte $7F, $11, $7F, $A4,$70, $11, $74, $72
.byte $A3,$70, $11, $7F,$7F, $A6,$70, $A9,$00, $4F,$4F, $A5,$00
.byte $70, $77,$77, $71, $A5,$77, $71, $A5,$77, $71
.byte $A6,$77, $57, $55, $A9,$00, $44,$44, $A4,$00, $A0,$16,$57
.byte $55, $05, $55, $A8,$00, $04,$04, $B4, $04
.byte $A3,$00, $55, $05,$05, $55, $05, $B5, $A4,$05
.byte $D5, $A5,$05, $B5, $A4,$05, $55, $00,$00, $55
.byte $AA,$00, $BB, $A4,$00, $55, $00,$00, $55, $00
.byte $08,$08, $00,$00, $08,$08, $A4,$00, $08,$08, $A4,$00, $55
.byte $00,$00, $55, $AA,$00, $8B, $80, $A3,$00, $55
.byte $00,$00, $55, $A0,$11,$00, $55, $00,$00, $55, $AA,$00
.byte $08,$08, $A3,$00, $55, $00,$00, $05, $A0,$11,$00, $55
.byte $00,$00, $05, $AF,$00, $55, $A0,$14,$00, $55, $A0,$82,$00
.byte $A1
video_hr_rle: .byte $28 ; ysize=40
.byte $A0,$20,$00, $77, $A6,$57, $77, $A0,$20,$00, $77, $55,$55
.byte $15, $A3,$55, $77, $A0,$20,$00, $77, $55, $51
.byte $11, $A3,$55, $77, $A0,$20,$00, $77, $55,$55, $11
.byte $A3,$55, $77, $A0,$13,$00, $50, $55,$55, $50, $A9,$00
.byte $77, $55, $A3,$51, $55,$55, $77, $A3,$00, $A6,$70
.byte $A3,$00, $DD, $BD, $A5,$00, $B0, $BB, $88
.byte $A4,$00, $80,$80, $A4,$00, $77, $7C, $A6,$77, $00,$00
.byte $70, $A4,$77, $87, $88, $A3,$00, $DD, $BB
.byte $0B, $A5,$00, $BB, $08, $A3,$00, $B0, $BB
.byte $88, $A9,$00, $05, $50, $00,$00, $74, $47
.byte $44, $77,$77, $87, $00, $88, $A3,$00, $DD
.byte $FF, $A6,$00, $22,$22, $A4,$00, $BB, $08, $AB,$00
.byte $05, $77, $99,$99, $74, $77, $87, $00,$00
.byte $88, $A3,$00, $DD, $FF, $0F, $0B, $00,$00
.byte $B0, $20, $22,$22, $A4,$00, $11, $AD,$00, $77
.byte $79,$79, $77, $87, $00, $E0,$E0, $88, $A3,$00
.byte $0D, $8F, $A6,$00, $52,$52, $00,$00, $0B, $01
.byte $11, $AD,$00, $A3,$77, $87, $00, $D0, $DE
.byte $EE, $88, $A4,$07, $88, $A6,$07, $55,$55, $A4,$07
.byte $44, $AD,$07, $77,$77, $87, $00, $30, $3D
.byte $DD, $8E, $08, $A3,$00, $08, $B8, $08
.byte $A5,$00, $55,$55, $A4,$00, $44, $AD,$00, $77, $08
.byte $00, $22,$22, $33, $8D, $08, $A5,$00, $BB
.byte $A6,$00, $55,$55, $A4,$00, $44, $AD,$00, $08, $00
.byte $10, $12, $22, $83, $08, $A6,$00, $08,$08
.byte $A4,$00, $A3,$08, $A3,$00, $08,$08, $AE,$00, $40, $41
.byte $11, $82, $08, $A0,$22,$00, $19, $99, $44
.byte $11, $88, $A0,$23,$00, $11, $99, $44, $88
.byte $A0,$24,$00, $11, $99, $88, $A0,$25,$00, $11, $88
.byte $A0,$26,$00, $88, $A0,$27,$00
.byte $A1
collegep_rle: .byte $28 ; ysize=40
.byte $A0,$21,$66, $F6,$F6, $A8,$66, $F6,$F6, $A3,$FF, $F6, $A0,$15,$66
.byte $F6, $A5,$FF, $F6, $A6,$66, $6F, $5F, $FF
.byte $F5, $A3,$FF, $A5,$66, $76, $A4,$56, $76, $A4,$56
.byte $76, $A3,$66, $5F,$5F, $A3,$FF, $5F,$5F, $6F, $A8,$66
.byte $A4,$65, $A5,$66, $A3,$17, $1A,$1A, $17, $F7, $17
.byte $1A,$1A, $A3,$17, $A3,$66, $65,$65, $6F,$6F, $A0,$14,$66, $1F
.byte $FF, $1F, $4F, $1F, $FF, $1F, $FF
.byte $1F, $4F, $1F, $FF, $1F, $AD,$66, $AE,$CC
.byte $11, $FF, $11, $84, $11, $FF, $00
.byte $FF, $11, $84, $11, $FF, $11, $A0,$1B,$CC
.byte $C7, $CF, $C7, $C8, $C7, $CF, $C0
.byte $CF, $C7, $C8, $C7, $CF, $C7, $A0,$1E,$CC
.byte $5C, $15,$15, $55, $15,$15, $5C, $A0,$21,$CC, $55
.byte $11, $55, $51, $55, $11, $55, $A0,$21,$CC
.byte $C5, $51, $A3,$55, $51, $C5, $A5,$CC, $5C
.byte $AA,$88, $AB,$CC, $FC, $FF, $5C, $CC, $DC
.byte $A8,$8C, $A5,$CC, $88, $77, $7E, $A8,$EE, $AA,$CC
.byte $8F, $FF,$FF, $85, $ED, $A9,$EE, $E8,$E8, $DC
.byte $CC,$CC, $88, $77,$77, $85, $58, $98, $A5,$88
.byte $A9,$CC, $9C, $88,$88, $48, $58, $88, $8E
.byte $AA,$EE, $ED, $DC, $CC, $88, $77,$77, $88
.byte $85, $A3,$58, $55, $58,$58, $A8,$CC, $8C, $98
.byte $A3,$88, $48, $88, $58, $8E, $AA,$EE, $DD
.byte $CC, $C8, $77,$77, $88,$88, $55, $88,$88, $85
.byte $88,$88, $A7,$CC, $8C, $89, $88,$88, $89, $A4,$88
.byte $85, $88, $AB,$EE, $A3,$C7, $C8, $88, $55
.byte $A3,$88, $48,$48, $A6,$CC, $8C, $89, $98, $88
.byte $98, $88, $84, $A3,$88, $85, $88, $58
.byte $A6,$EE, $DE, $CE, $A7,$CC, $55, $48, $44,$44
.byte $49, $44, $A8,$CC, $A5,$C8, $A6,$88, $A5,$EE, $DD
.byte $CD, $A7,$CC, $4C, $44,$44, $49, $A3,$44, $A0,$11,$DD
.byte $ED, $A5,$EE, $A0,$11,$DD, $A0,$10,$77, $E7, $A5,$EE, $A0,$12,$77
.byte $A0,$28,$22
.byte $A1
umcp_rle: .byte $28 ; ysize=40
.byte $A0,$1D,$66, $A3,$F6, $76, $A3,$56, $A0,$10,$66, $96,$96, $AD,$66
.byte $F6, $7F, $FF, $7F, $57, $75, $57
.byte $77, $55, $AF,$66, $99, $DD,$DD, $99, $A8,$66
.byte $F6, $7F, $F7, $7F, $A3,$77, $75, $57
.byte $75, $55,$55, $65, $AB,$66, $F6, $76, $56
.byte $66, $99, $DD,$DD, $99, $A8,$66, $6F, $F7
.byte $A3,$77, $57, $55,$55, $A3,$65, $AA,$66, $FF, $7F
.byte $FF, $77, $55, $65, $66,$66, $69,$69, $A0,$2B,$66
.byte $A7,$46, $A0,$1C,$66, $44, $A3,$66, $A9,$D4, $A0,$12,$66, $16
.byte $66, $F6, $66, $16, $A3,$66, $A3,$44, $66,$66
.byte $DD, $5D, $DD,$DD, $5D, $DD,$DD, $5D, $DD
.byte $66,$66, $86,$86, $46, $A8,$66, $D6,$D6, $A3,$66, $51
.byte $56, $5F, $56, $51, $66,$66, $64,$64, $84
.byte $64,$64, $66, $DD, $D5, $DD, $4D, $44
.byte $4D, $DD, $D5, $DD, $66, $86, $88
.byte $84, $44,$44, $A5,$66, $6D,$6D, $1D,$1D, $CC, $5C
.byte $A7,$55, $5C, $CC,$CC, $88, $A3,$CC, $DD, $5D
.byte $DD,$DD, $8D, $DD,$DD, $5D, $DD, $CC, $C8
.byte $88, $A3,$44, $C0, $08, $58, $50, $0C
.byte $CC,$CC, $11,$11, $CC, $1F, $FF, $A5,$1F, $FF
.byte $1F, $CC,$CC, $88, $A3,$CC, $DD, $D5, $DD,$DD
.byte $88, $DD,$DD, $D5, $DD, $CC,$CC, $C8,$C8, $C4
.byte $CC,$CC, $C0, $08, $58, $50, $05, $55
.byte $11, $10, $CC, $11, $FF, $10, $11
.byte $10, $11, $10, $FF, $11, $A0,$17,$CC, $00
.byte $08, $58, $50, $05, $51, $11, $CC
.byte $11, $FF, $10, $11, $88, $11, $10
.byte $FF, $11, $A0,$18,$CC, $00, $58,$58, $50, $00
.byte $51, $CC, $11, $7F, $71,$71, $78, $71,$71
.byte $7F, $11, $A0,$19,$CC, $00, $88,$88, $00, $05
.byte $CC, $A9,$C7, $A9,$CC, $A3,$5C, $AD,$CC, $C0, $05
.byte $85,$85, $00, $A0,$11,$CC, $5C, $E5, $A3,$EE, $E5
.byte $5C, $AC,$CC, $00, $58,$58, $50, $A0,$11,$CC, $FF
.byte $75,$75, $A4,$55, $AC,$CC, $C0, $00, $88,$88, $A0,$10,$CC
.byte $44,$44, $47,$47, $A3,$45, $44,$44, $AC,$CC, $00, $05
.byte $85, $A0,$10,$CC, $44, $D4, $9D, $D4, $44
.byte $34, $D3, $34, $44, $AD,$CC, $00, $08
.byte $AF,$CC, $A3,$44, $CD, $A3,$44, $C3, $A3,$44, $AC,$CC
.byte $C0, $00
.byte $A1
dining_rle: .byte $28 ; ysize=40
.byte $88, $A3,$98, $88,$88, $98, $88,$88, $98,$98, $88,$88
.byte $A3,$98, $88, $98,$98, $88, $A3,$98, $A4,$88, $98
.byte $88, $98, $88, $A3,$98, $88, $98, $88
.byte $98, $88, $98, $88,$88, $99, $88,$88, $99
.byte $88, $99, $88, $99, $98, $89, $88
.byte $99, $88, $98, $88, $99, $98, $88,$88
.byte $99, $A5,$88, $89, $98, $89, $88, $99
.byte $88, $99, $88, $99, $88, $99, $88
.byte $99, $88,$88, $99, $88,$88, $99, $89, $99
.byte $88, $99, $88, $99, $88, $99, $98
.byte $99, $88, $99, $98, $88,$88, $99, $A6,$88
.byte $99, $88,$88, $99, $98, $99, $88, $99
.byte $98, $99, $88, $99, $A5,$88, $08, $D8
.byte $08, $D8, $F8, $18, $F8, $18, $A7,$88
.byte $A3,$98, $88, $A3,$98, $88, $A3,$98, $88, $98
.byte $88,$88, $98, $88, $A3,$98, $A5,$88, $DD, $00
.byte $DD, $0D, $F1,$F1, $1F,$1F, $A7,$88, $99, $98
.byte $99, $88, $99, $88, $99, $88,$88, $99
.byte $88,$88, $99,$99, $98, $99, $88,$88, $99, $A6,$88
.byte $00, $DD, $00, $D0, $11, $FF, $11
.byte $FF, $A7,$88, $99, $A3,$88, $99, $98, $99
.byte $88, $98, $99, $98, $88, $99, $88
.byte $89, $99, $88,$88, $99, $A0,$2C,$88, $58,$58, $A8,$88
.byte $00, $B0, $A0,$1B,$88, $58, $55, $BB, $B8
.byte $A7,$88, $00, $BB, $8B, $88, $68, $A3,$88
.byte $78, $A3,$88, $08,$08, $A4,$88, $08,$08, $A9,$88, $85,$85
.byte $BB, $A3,$88, $66, $A4,$88, $00, $22, $88,$88
.byte $FF, $A3,$88, $77, $57,$57, $B7, $BB, $00
.byte $A3,$57, $B7, $BB, $00, $A7,$57, $A3,$08, $11,$11
.byte $08, $77, $66,$66, $77, $A4,$08, $22, $02
.byte $A3,$05, $08,$08, $77, $A3,$5A, $FB, $F0, $55
.byte $A3,$5A, $2B, $00, $A7,$5A, $A3,$00, $11,$11, $A4,$77
.byte $A5,$00, $52, $A7,$00, $0A,$0A, $7A, $7F,$7F, $75
.byte $7A, $6A, $72,$72, $70, $A3,$5A, $B8, $88
.byte $5A,$5A, $A3,$00, $81, $A4,$77, $A6,$00, $5A, $A7,$00
.byte $70, $87, $88,$88, $78, $77,$77, $99, $77,$77
.byte $66, $77, $70, $0B, $BB, $88, $A5,$00
.byte $A4,$57, $A7,$00, $08,$08, $A5,$00, $07, $AA,$77, $7F
.byte $77, $7B, $04, $44, $08, $70, $A4,$00
.byte $55, $88, $A0,$12,$00, $07, $87, $A7,$07, $87
.byte $07, $00, $20, $24, $00, $77, $A4,$00
.byte $55, $08,$08, $A0,$12,$00, $88, $A7,$00, $88, $00,$00
.byte $22, $77, $07, $77, $A4,$00, $55, $A0,$14,$00
.byte $08, $A7,$00, $08, $00, $08,$08, $07, $00
.byte $07, $A0,$79,$00
.byte $A1
metro_rle: .byte $28 ; ysize=40
.byte $A0,$1F,$66, $A9,$77, $A3,$66, $A4,$F6, $AA,$66, $11, $66
.byte $16,$16, $66, $76, $A8,$66, $77, $22,$22, $27,$27
.byte $A4,$77, $66,$66, $6F, $A4,$7F, $77, $A9,$66, $69,$69
.byte $19,$19, $69, $77, $A8,$66, $77, $A5,$22, $27
.byte $77,$77, $66,$66, $46, $A0,$1C,$66, $77, $A7,$22, $77
.byte $66, $46, $44, $46, $A0,$1B,$66, $77, $A7,$22
.byte $77, $C6, $C4, $84, $C4, $A3,$C6, $76
.byte $86,$86, $76, $A9,$C6, $AB,$56, $97, $DD, $A6,$22
.byte $77, $CC,$CC, $C8, $A3,$CC, $77, $80,$80, $77
.byte $FF, $A0,$14,$CC, $77, $DD, $A6,$22, $77, $A4,$CC
.byte $7C, $77, $80,$80, $77, $FF,$FF, $A0,$14,$0C, $77
.byte $DD, $A4,$D2, $22,$22, $77, $A3,$CC, $7C, $77
.byte $08,$08, $78, $F7, $FF, $0F, $A0,$14,$00, $77
.byte $0D, $DD,$DD, $0D, $A3,$02, $77, $CC,$CC, $7C
.byte $87, $A3,$80, $77, $FF, $0F, $00, $55
.byte $85, $A0,$14,$00, $F9, $30,$30, $F0, $80,$80, $77
.byte $CC, $7C, $07, $A3,$08, $77, $FF,$FF, $00,$00
.byte $55, $88, $08, $A0,$11,$00, $30, $FF, $F0
.byte $F3,$F3, $FF,$FF, $88, $77, $7C, $87, $A3,$80
.byte $70, $F7, $1F, $FF, $00,$00, $FF,$FF, $00
.byte $80, $A0,$10,$00, $0F, $A6,$FF, $88, $77, $07
.byte $A3,$08, $78, $77, $FF, $F1, $FF, $00,$00
.byte $FF,$FF, $0F, $08, $A4,$00, $DD, $BD, $AC,$00
.byte $3F,$3F, $0F,$0F, $3F, $38, $77, $A4,$80, $77
.byte $FF, $1F, $FF, $A3,$00, $1F,$1F, $A6,$00, $DD
.byte $DB, $0B, $A0,$11,$00, $77, $A3,$08, $77, $F7
.byte $FF, $F1, $0F, $A3,$00, $11,$11, $A6,$00, $22
.byte $A0,$13,$00, $77, $00,$00, $70, $77, $A3,$FF, $A4,$00
.byte $11,$11, $A6,$00, $22, $02, $03, $AE,$00, $50
.byte $55,$55, $77, $88,$88, $77, $FF, $11, $FF
.byte $A5,$00, $A3,$88, $A5,$00, $22, $A0,$11,$00, $05,$05, $77
.byte $00, $77, $F7, $FF,$FF, $0F, $AD,$00, $82
.byte $80, $A0,$12,$00, $77, $70, $77, $A3,$FF, $A0,$22,$00
.byte $77,$77, $A3,$FF, $A0,$23,$00, $77
.byte $A1
talbot_rle: .byte $28 ; ysize=40
.byte $22, $66,$66, $77,$77, $FF, $AC,$77, $55, $00
.byte $66, $00,$00, $55, $AB,$77, $FF, $A4,$77, $A3,$66
.byte $77,$77, $FF, $AB,$77, $87, $55, $50,$50, $53,$53
.byte $55, $87, $AA,$77, $FF, $A4,$77, $A3,$66, $77,$77
.byte $FF, $A6,$77, $07, $00, $07, $77, $88,$88
.byte $A4,$85, $8C, $85, $88,$88, $77,$77, $87,$87, $A5,$77
.byte $FF, $A4,$77, $66, $33, $66, $77,$77, $FF
.byte $A6,$77, $88, $BB, $B7, $77, $88, $77
.byte $88, $77, $27,$27, $77, $88, $77, $88
.byte $77, $B7, $BB, $88, $A5,$77, $FF, $A4,$77
.byte $66,$66, $76, $77,$77, $FF, $A6,$77, $78, $1B
.byte $77,$77, $88, $87, $88, $57, $85,$85, $57
.byte $88, $87, $88, $77,$77, $5B, $78, $A5,$77
.byte $FF, $A4,$77, $66,$66, $77,$77, $FF, $A8,$0F, $11
.byte $1F, $BF, $58, $05,$05, $A4,$0F, $05, $5F
.byte $58, $BF, $5F, $55, $A5,$0F, $B8, $88
.byte $A4,$77, $66, $A3,$77, $44, $A8,$00, $41, $00,$00
.byte $88, $A8,$00, $88, $00,$00, $25, $A4,$00, $B7
.byte $B5, $88, $A4,$77, $66, $77,$77, $47, $C4
.byte $40, $00,$00, $55, $B5, $A3,$00, $44, $00,$00
.byte $08, $A6,$00, $90, $95, $08, $00,$00, $22
.byte $A5,$00, $2B, $00, $FF, $A3,$77, $66, $77,$77
.byte $44, $CC, $44, $80, $00, $55, $BB
.byte $0B, $00,$00, $08,$08, $A8,$00, $09, $99, $55
.byte $99, $09, $95, $A3,$00, $B0, $20, $22
.byte $00, $FF, $A5,$77, $44, $CC, $4C, $C4,$C4
.byte $40, $00, $4B, $40, $B0, $AC,$00, $99
.byte $00, $99, $00, $09, $A5,$00, $82, $00
.byte $FF, $A5,$77, $44, $4C, $C4, $CC, $4C
.byte $04, $00, $44, $A0,$18,$00, $88, $00, $FF
.byte $F7, $A4,$77, $84,$84, $8C,$8C, $44, $00,$00, $55
.byte $A7,$00, $D0, $A6,$8D, $D0, $A8,$00, $50, $58
.byte $00,$00, $FF, $A4,$77, $88, $44,$44, $88, $00
.byte $80,$80, $05,$05, $A5,$00, $0D,$0D, $A6,$D8, $0D,$0D, $A9,$00
.byte $5D, $DD, $FF, $A4,$77, $88, $00,$00, $88
.byte $00, $88, $BB, $B0, $AA,$00, $88,$88, $AC,$00
.byte $0B, $BB, $0D, $FF, $A3,$77, $FF, $88
.byte $80,$80, $88, $00, $88, $4B, $A9,$00, $D0,$D0
.byte $88,$88, $D0,$D0, $AB,$00, $6B, $00, $0F, $FF
.byte $77,$77, $FF, $A5,$00, $88, $44, $04, $0B
.byte $A5,$00, $D0, $DD, $A6,$88, $DD, $D0, $A7,$00
.byte $0B, $06, $66, $00,$00, $FF, $77,$77, $FF
.byte $A6,$00, $22, $A9,$00, $A6,$0D, $AB,$00, $22, $00,$00
.byte $FF, $77, $FF,$FF, $A6,$00, $82, $80, $A0,$18,$00
.byte $50, $52, $00,$00, $0F, $F7, $FF, $0F
.byte $A0,$25,$00, $FF,$FF, $A0,$26,$00, $FF
.byte $A1

View File

@ -1222,7 +1222,7 @@ fixed_sin_scale:
; .byte $A6,$8A,$76,$68,$5C,$53,$4B,$45,$40,$3B,$37,$34,$30,$2E,$2B,$29
; we can guarantee 4 cycle indexed reads if we page-aligned this
.align 256
;.align 256
horizontal_lookup:
.byte $0C,$0B,$0A,$09,$09,$08,$08,$07,$07,$06,$06,$06,$05,$05,$05,$05
.byte $04,$04,$04,$04,$04,$04,$04,$03,$03,$03,$03,$03,$03,$03,$03,$03

98
tfv/tfv_old.s Normal file
View File

@ -0,0 +1,98 @@
;=================
; load RLE image
;=================
; Output is BASH/BASL
; Input is in GBASH/GBASL
load_rle_gr:
lda #$0
tax
tay ; init X and Y to 0
sta CV ; ycoord=0
lda (GBASL),y ; load xsize
sta CH
iny ; (we should check if we had
; bad luck and overflows page)
iny ; skip ysize
rle_loop:
lda (GBASL),y ; load run value
cmp #$ff ; if 0xff
beq rle_done ; we are done
sta RUN
iny ; point to next value
bne rle_yskip1 ; if overflow, increment address
inc GBASH
rle_yskip1:
lda (GBASL),y ; load value to write
iny
bne rle_yskip2
inc GBASH
rle_yskip2:
sty TEMP2 ; save y for later
pha
lda #$0
tay
pla ; convoluted way to set y to 0
rle_run_loop:
sta (BASL),y ; write out the value
inc BASL ; increment the pointer
bne rle_skip3 ; if wrapped
inc BASH ; then increment the high value
rle_skip3:
inx ; increment the X value
cpx CH ; compare against the image width
bcc rle_not_eol ; if less then keep going
pha ; save out value on stack
lda BASL ; cheat to avoid a 16-bit add
cmp #$a7 ; we are adding 0x58 to get
bcc rle_add_skip ; to the next line
inc BASH
rle_add_skip:
clc
adc #$58 ; actually do the 0x58 add
sta BASL ; and store it back
inc CV ; add 2 to ypos
inc CV ; each "line" is two high
lda CV ; load value
cmp #15 ; if it's greater than 14 it wraps
bcc rle_no_wrap ; Thanks Woz
lda #$0 ; we wrapped, so set to zero
sta CV
; when wrapping have to sub 0x3d8
sec ; this is a 16-bit subtract routine
lda BASL
sbc #$d8 ; LSB
sta BASL
lda BASH ; MSB
sbc #$3 ;
sta BASH
rle_no_wrap:
lda #$0 ; set X value back to zero
tax
pla ; restore value to write from stack
rle_not_eol:
dec RUN ; decrement run value
bne rle_run_loop ; if not zero, keep looping
ldy TEMP2 ; restore the input pointer
sec
bcs rle_loop ; and branch always
rle_done:
lda #$15 ; move the cursor somewhere sane
sta CV
rts

View File

@ -71,49 +71,59 @@ memset_loop:
; Input is in GBASH/GBASL
load_rle_gr:
lda #$0
tax
tay ; init X and Y to 0
tay ; init Y to 0
sta TEMP ; stores the xcoord
sta CV ; ycoord=0
lda (GBASL),y ; load xsize
jsr load_and_increment ; load xsize
sta CH
iny ; (we should check if we had
; bad luck and overflows page)
iny ; skip ysize
rle_loop:
lda (GBASL),y ; load run value
cmp #$ff ; if 0xff
beq rle_done ; we are done
sta RUN
iny ; point to next value
bne rle_yskip1 ; if overflow, increment address
inc GBASH
rle_yskip1:
lda (GBASL),y ; load value to write
iny
bne rle_yskip2
inc GBASH
rle_yskip2:
sty TEMP2 ; save y for later
pha
lda #$0
tay
pla ; convoluted way to set y to 0
jsr load_and_increment
cmp #$A1 ; if 0xa1
beq rle_done ; we are done
pha
and #$f0 ; mask
cmp #$a0 ; see if special AX
beq decompress_special
pla ; note, PLA sets flags!
ldx #$1 ; only want to print 1
bne decompress_run
decompress_special:
pla
and #$0f ; check if was A0
bne decompress_color ; if A0 need to read run, color
decompress_large:
jsr load_and_increment ; get run length
decompress_color:
tax ; put runlen into X
jsr load_and_increment ; get color
decompress_run:
rle_run_loop:
sta (BASL),y ; write out the value
inc BASL ; increment the pointer
bne rle_skip3 ; if wrapped
inc BASH ; then increment the high value
rle_skip3:
inx ; increment the X value
cpx CH ; compare against the image width
bcc rle_not_eol ; if less then keep going
pha ; save out value on stack
rle_skip3:
pha ; store colore for later
inc TEMP ; increment the X value
lda TEMP
cmp CH ; compare against the image width
bcc rle_not_eol ; if less then keep going
lda BASL ; cheat to avoid a 16-bit add
cmp #$a7 ; we are adding 0x58 to get
@ -145,16 +155,13 @@ rle_add_skip:
rle_no_wrap:
lda #$0 ; set X value back to zero
tax
pla ; restore value to write from stack
sta TEMP
rle_not_eol:
dec RUN ; decrement run value
pla ; restore color
dex
bne rle_run_loop ; if not zero, keep looping
ldy TEMP2 ; restore the input pointer
sec
bcs rle_loop ; and branch always
beq rle_loop ; and branch always
rle_done:
lda #$15 ; move the cursor somewhere sane
@ -162,6 +169,15 @@ rle_done:
rts
load_and_increment:
lda (GBASL),y ; load value ; 5?
inc GBASL ; 5?
bne lskip2 ; 2nt/3
inc GBASH ; 5?
lskip2:
rts ; 6
;==========================================================
; set_text_page0
;==========================================================
@ -751,3 +767,10 @@ clear_bottom_loop:
bne clear_bottom_loop
rts
; move these to zero page for slight speed increase?
gr_offsets:
.word $400,$480,$500,$580,$600,$680,$700,$780
.word $428,$4a8,$528,$5a8,$628,$6a8,$728,$7a8
.word $450,$4d0,$550,$5d0,$650,$6d0,$750,$7d0