xmas2018: something that builds

This commit is contained in:
Vince Weaver 2018-12-10 13:06:21 -05:00
parent afd6e29146
commit a43f875f19
11 changed files with 673 additions and 275 deletions

View File

@ -37,6 +37,9 @@ xmas2018.o: xmas2018.s \
#D_HGRC.BIN: d_hgr.bmp #D_HGRC.BIN: d_hgr.bmp
# $(B2D) d_hgr.bmp HGR -d # $(B2D) d_hgr.bmp HGR -d
wreath.img.lz4: wreath.img
lz4 -f -16 wreath.img
wreath.img: WREATHC.BIN wreath.img: WREATHC.BIN
cp WREATHC.BIN wreath.img cp WREATHC.BIN wreath.img

25
xmas_2018/delay_a.s Normal file
View File

@ -0,0 +1,25 @@
; From http://6502org.wikidot.com/software-delay
; 25+A cycles (including JSR), 19 bytes (excluding JSR)
;
; The branches must not cross page boundaries!
;
; Cycles Accumulator Carry flag
; 0 1 2 3 4 5 6 (hex) 0 1 2 3 4 5 6
; jsr delay_a ; 6 6 6 6 6 6 6 00 01 02 03 04 05 06
dly0: sbc #7
delay_a:cmp #7 ; 2 2 2 2 2 2 2 00 01 02 03 04 05 06 0 0 0 0 0 0 0
bcs dly0 ; 2 2 2 2 2 2 2 00 01 02 03 04 05 06 0 0 0 0 0 0 0
lsr ; 2 2 2 2 2 2 2 00 00 01 01 02 02 03 0 1 0 1 0 1 0
bcs dly1 ; 2 3 2 3 2 3 2 00 00 01 01 02 02 03 0 1 0 1 0 1 0
dly1: beq dly2 ; 3 3 2 2 2 2 2 00 00 01 01 02 02 03 0 1 0 1 0 1 0
lsr ; 2 2 2 2 2 00 00 01 01 01 1 1 0 0 1
beq dly3 ; 3 3 2 2 2 00 00 01 01 01 1 1 0 0 1
bcc dly3 ; 3 3 2 01 01 01 0 0 1
dly2: bne dly3 ; 2 2 3 00 00 01 0 1 0
dly3: rts ; 6 6 6 6 6 6 6 00 00 00 00 01 01 01 0 1 1 1 0 0 1
;
; Total cycles: 25 26 27 28 29 30 31

192
xmas_2018/gr_fast_clear.s Normal file
View File

@ -0,0 +1,192 @@
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
clear_bottoms:
;===================================
; Clear bottom of page 0
;===================================
lda #$0
sta DRAW_PAGE
jsr clear_bottom
;===================================
; Clear bottom of page 1
;===================================
lda #$4
sta DRAW_PAGE
jsr clear_bottom
rts
;=========================================================
; clear_top
;=========================================================
; clear DRAW_PAGE
; original = 14,558 cycles(?) 15ms, 70Hz
; OPTIMIZED MAX (page0,48rows): 45*120+4+6 = 5410 = 5.4ms 185Hz
; (pageX,40rows): 50*120+4+6 = 6010 = 6.0ms 166Hz
; 50*120+4+6+37 = 6055 = 6.0ms 166Hz
clear_top:
lda #0 ; 2
clear_top_a:
sta COLOR ; 3
clc ; 2
lda DRAW_PAGE ; 3
adc #4 ; 2
sta __ctf+2 ; 3
sta __ctf+5 ; 3
adc #1 ; 2
sta __ctf+8 ; 3
sta __ctf+11 ; 3
adc #1 ; 2
sta __ctf2+2 ; 3
sta __ctf2+5 ; 3
adc #1 ; 2
sta __ctf2+8 ; 3
sta __ctf2+11 ; 3
ldy #120 ; 2
lda COLOR ; 3
clear_top_fast_loop:
__ctf:
sta $400,Y ; 5
sta $480,Y ; 5
sta $500,Y ; 5
sta $580,Y ; 5
cpy #80 ; 2
bpl no_draw_bottom ; 2nt/3
__ctf2:
sta $600,Y ; 5
sta $680,Y ; 5
sta $700,Y ; 5
sta $780,Y ; 5
no_draw_bottom:
dey ; 2
bpl clear_top_fast_loop ; 2nt/3
rts ; 6
;=========================================================
; clear_bottom
;=========================================================
; clear bottom of draw page
clear_bottom:
clc ; 2
lda DRAW_PAGE ; 3
adc #6 ; 2
sta __cbf2+2 ; 3
sta __cbf2+5 ; 3
adc #1 ; 2
sta __cbf2+8 ; 3
sta __cbf2+11 ; 3
ldy #120 ; 2
lda #$a0 ; Normal Space ; 2
clear_bottom_fast_loop:
__cbf2:
sta $600,Y ; 5
sta $680,Y ; 5
sta $700,Y ; 5
sta $780,Y ; 5
dey ; 2
cpy #80 ; 2
bpl clear_bottom_fast_loop ; 2nt/3
rts ; 6
clear_screens_notext:
;===================================
; Clear top/bottom of page 0
;===================================
lda #$0
sta DRAW_PAGE
jsr clear_all
;===================================
; Clear top/bottom of page 1
;===================================
lda #$4
sta DRAW_PAGE
jsr clear_all
rts
;=========================================================
; clear_all
;=========================================================
; clear 48 rows
clear_all:
clc ; 2
lda DRAW_PAGE ; 3
adc #4 ; 2
sta __caf+2 ; 3
sta __caf+5 ; 3
adc #1 ; 2
sta __caf+8 ; 3
sta __caf+11 ; 3
adc #1 ; 2
sta __caf2+2 ; 3
sta __caf2+5 ; 3
adc #1 ; 2
sta __caf2+8 ; 3
sta __caf2+11 ; 3
ldy #120 ; 2
clear_all_color:
lda #0 ; 2
clear_all_fast_loop:
__caf:
sta $400,Y ; 5
sta $480,Y ; 5
sta $500,Y ; 5
sta $580,Y ; 5
__caf2:
sta $600,Y ; 5
sta $680,Y ; 5
sta $700,Y ; 5
sta $780,Y ; 5
dey ; 2
bpl clear_all_fast_loop ; 2nt/3
rts ; 6

44
xmas_2018/gr_hline.s Normal file
View File

@ -0,0 +1,44 @@
;==================================
; HLINE
;==================================
; Color in A
; Y has which line
; takes 435 cycles
hline:
pha ; 3
ldx gr_offsets,y ; 4+
stx hline_loop+1 ; self-modify code ; 4
lda gr_offsets+1,y ; 4+
clc ; 2
adc DRAW_PAGE ; 3
sta hline_loop+2 ; self-modify code ; 4
pla ; 4
ldx #39 ; 2
;===========
; 30
hline_loop:
sta $5d0,X ; 38 ; 5
dex ; 2
bpl hline_loop ; 2nt/3
;===========
; 40*(10)=400
; -1
rts ; 6
;==========================
; Clear gr screen
;==========================
; Color in A, Clears 0 to and including Y
; clear_gr: takes 2+(48/2)*(6+435+7)+5 = 10759
; cpl: takes (Y/2)*(6+435+7)+5 = ?
clear_gr:
ldy #46 ; 2
clear_page_loop:
jsr hline ; 6+435
dey ; 2
dey ; 2
bpl clear_page_loop ; 2/3
rts ; 6

4
xmas_2018/gr_offsets.s Normal file
View File

@ -0,0 +1,4 @@
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

137
xmas_2018/gr_putsprite.s Normal file
View File

@ -0,0 +1,137 @@
;=============================================
; put_sprite
;=============================================
; Sprite to display in INH,INL
; Location is XPOS,YPOS
; Note, only works if YPOS is multiple of two
; time= 28 setup
; Y*outerloop
; outerloop = 34 setup
; X*innerloop
; innerloop = 30 if $00 17+13(done)
; 64 if $0X 16+7+8+20(put_sprite_mask)+13(done)
; 69 if $X0 16+8+7+5+20(put_sprite_mask)+13(done)
; 54 if if $XX 16+8+8+9(put_all)+13(done)
; -1 for last iteration
; 18 (-1 for last)
; 6 return
; so cost = 28 + Y*(34+18)+ (INNER-Y) -1 + 6
; = 33 + Y*(52)+(INNER-Y)
; = 33 + Y*(52)+ [30A + 64B + 69C + 54D]-Y
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 ; 4
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 ; 4
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
;===========
; 34
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
;==============
; 16/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
;==============
; 7/8
lda #$f0 ; setup mask ; 2
sta MASK ; 3
bmi put_sprite_mask ; always? ; 3
;=============
; 8
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
;=============
; 7/8
lda #$0f ; 2
sta MASK ; setup mask ; 3
;===========
; 5
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 ; 6
jmp put_sprite_done_draw ; we are done ; 3
;===========
; 20
put_sprite_all:
lda COLOR ; load color ; 3
sta (OUTL),Y ; and write it out ; 6
;============
; 9
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
;==============
; 12/13
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
;==============
; 17/18
rts ; return ; 6

213
xmas_2018/lz4_decode.s Normal file
View File

@ -0,0 +1,213 @@
; LZ4 data decompressor for Apple II
; Code by Peter Ferrie (qkumba) (peter.ferrie@gmail.com)
; "LZ4 unpacker in 143 bytes (6502 version) (2013)"
; http://pferrie.host22.com/misc/appleii.htm
; This is that code, but with comments and labels added for clarity.
; I also found a bug when decoding with runs of multiples of 256
; which has since been fixed upstream.
; For LZ4 reference see
; https://github.com/lz4/lz4/wiki/lz4_Frame_format.md
; LZ4 summary:
;
; HEADER:
; Should: check for magic number 04 22 4d 18
; FLG: 64 in our case (01=version, block.index=1, block.checksum=0
; size=0, checksum=1, reserved
; MAX Blocksize: 40 (64kB)
; HEADER CHECKSUM: a7
; BLOCK HEADER: 4 bytes (le) length If highest bit set, uncompressed!
; data (see below), followed by checksum?
; BLOCKS:
; Token byte. High 4-bits literal length, low 4-bits copy length
; + If literal length==15, then following byte gets added to length
; If that byte was 255, then keep adding bytes until not 255
; + The literal bytes follow. There may be zero of them
; + Next is block copy info. little-endian 2-byte offset to
; be subtracted from current read position indicating source
; + The low 4-bits of the token are the copy length, which needs
; 4 added to it. As with the literal length, if it is 15 then
; you read a byte and add (and if that byte is 255, keep adding)
; At end you have 4 byte end-of-block marker (all zeros?) then
; 4 bytes of checksum (if marked in flags)
; our code does that, so be sure to set end -8
;LZ4_SRC EQU $00
;LZ4_DST EQU $02
;LZ4_END EQU $04
;COUNT EQU $06
;DELTA EQU $08
;UNPACK_BUFFER EQU $5E00 ; offset of first unpacked byte
;======================
; LZ4 decode
;======================
; input buffer in LZ4_SRC
; output buffer hardcoded still
; size in ENDH:ENDL
lz4_decode:
; lda LZ4_SRC ; packed data offset
; clc
; adc LZ4_END
; sta LZ4_END
; lda LZ4_SRC+1
; adc LZ4_END+1
; sta LZ4_END+1
; lda #>UNPACK_BUFFER ; original unpacked data offset
; sta LZ4_DST+1
; lda #<UNPACK_BUFFER
; sta LZ4_DST
unpmain:
ldy #0 ; used to index, always zero
parsetoken:
jsr getsrc ; get next token
pha ; save for later (need bottom 4 bits)
lsr ; number of literals in top 4 bits
lsr ; so shift into place
lsr
lsr
beq copymatches ; if zero, then no literals
; jump ahead and copy
jsr buildcount ; add up all the literal sizes
; result is in ram[count+1]-1:A
tax ; now in ram[count+1]-1:X
jsr docopy ; copy the literals
lda LZ4_SRC ; 16-bit compare
cmp LZ4_END ; to see if we have reached the end
lda LZ4_SRC+1
sbc LZ4_END+1
bcs done
copymatches:
jsr getsrc ; get 16-bit delta value
sta DELTA
jsr getsrc
sta DELTA+1
pla ; restore token
and #$0f ; get bottom 4 bits
; match count. 0 means 4
; 15 means 19+, must be calculated
jsr buildcount ; add up count bits, in ram[count+1]-:A
clc
adc #4 ; adjust count by 4 (minmatch)
tax ; now in ramp[count+1]-1:X
beq copy_no_adjust ; BUGFIX, don't increment if
; exactly a multiple of 0x100
bcc copy_no_adjust
inc COUNT+1 ; increment if we overflowed
copy_no_adjust:
lda LZ4_SRC+1 ; save src on stack
pha
lda LZ4_SRC
pha
sec ; subtract delta
lda LZ4_DST ; from destination, make new src
sbc DELTA
sta LZ4_SRC
lda LZ4_DST+1
sbc DELTA+1
sta LZ4_SRC+1
jsr docopy ; do the copy
pla ; restore the src
sta LZ4_SRC
pla
sta LZ4_SRC+1
jmp parsetoken ; back to parsing tokens
done:
pla
rts
;=========
; getsrc
;=========
; gets byte from src into A, increments pointer
getsrc:
lda (LZ4_SRC), Y ; get a byte from src
inc LZ4_SRC ; increment pointer
bne done_getsrc ; update 16-bit pointer
inc LZ4_SRC+1 ; on 8-bit overflow
done_getsrc:
rts
;============
; buildcount
;============
buildcount:
ldx #1 ; high count starts at 1
stx COUNT+1 ; (loops at zero?)
cmp #$0f ; if LITERAL_COUNT < 15, we are done
bne done_buildcount
buildcount_loop:
sta COUNT ; save LITERAL_COUNT (15)
jsr getsrc ; get the next byte
tax ; put in X
clc
adc COUNT ; add new byte to old value
bcc bc_8bit_oflow ; if overflow, increment high byte
inc COUNT+1
bc_8bit_oflow:
inx ; check if read value was 255
beq buildcount_loop ; if it was, keep looping and adding
done_buildcount:
rts
;============
; getput
;============
; gets a byte, then puts the byte
getput:
jsr getsrc
; fallthrough to putdst
;=============
; putdst
;=============
; store A into destination
putdst:
sta (LZ4_DST), Y ; store A into destination
inc LZ4_DST ; increment 16-bit pointer
bne putdst_end ; if overflow, increment top byte
inc LZ4_DST+1
putdst_end:
rts
;=============================
; docopy
;=============================
; copies ram[count+1]-1:X bytes
; from src to dst
docopy:
docopy_loop:
jsr getput ; get/put byte
dex ; decrement count
bne docopy_loop ; if not zero, loop
dec COUNT+1 ; if zero, decrement high byte
bne docopy_loop ; if not zero, loop
rts

View File

@ -156,7 +156,7 @@ interrupt_handler:
bit $C404 ; clear 6522 interrupt by reading T1C-L ; 4 bit $C404 ; clear 6522 interrupt by reading T1C-L ; 4
jsr play_music ; jsr play_music
pla pla
tay ; restore Y tay ; restore Y

View File

@ -0,0 +1,5 @@
wait_until_keypress:
lda KEYPRESS ; 4
bpl wait_until_keypress ; 3
bit KEYRESET ; clear the keyboard buffer
rts ; 6

View File

@ -22,14 +22,14 @@ wreath:
;============================= ;=============================
; Load graphic hgr ; Load graphic hgr
lda #<sb_background_hgr lda #<wreath_hgr
sta LZ4_SRC sta LZ4_SRC
lda #>sb_background_hgr lda #>wreath_hgr
sta LZ4_SRC+1 sta LZ4_SRC+1
lda #<(sb_background_hgr_end-8) ; skip checksum at end lda #<(wreath_hgr_end-8) ; skip checksum at end
sta LZ4_END sta LZ4_END
lda #>(sb_background_hgr_end-8) ; skip checksum at end lda #>(wreath_hgr_end-8) ; skip checksum at end
sta LZ4_END+1 sta LZ4_END+1
lda #<$2000 lda #<$2000
@ -50,7 +50,7 @@ wreath:
; so we have 5070 + 4550 = 9620 to kill ; so we have 5070 + 4550 = 9620 to kill
jsr gr_copy_to_current ; 6+ 9292 ; jsr gr_copy_to_current ; 6+ 9292
; now we have 322 left ; now we have 322 left
@ -137,17 +137,17 @@ sb_hgr_loop:
; draw sprite at same time ; draw sprite at same time
lda #>ship_forward ; 2 ; lda #>ship_forward ; 2
sta INH ; 3 ; sta INH ; 3
lda #<ship_forward ; 2 ; lda #<ship_forward ; 2
sta INL ; 3 ; sta INL ; 3
jsr put_sprite ; 6 ; jsr put_sprite ; 6
; + 2164 ; + 2164
;=========== ;===========
; 2180 ; 2180
jsr play_music ; 6+1032 ; jsr play_music ; 6+1032
; Try X=196 Y=2 cycles=1973 ; Try X=196 Y=2 cycles=1973
@ -169,10 +169,10 @@ sb_mixed:
ldy #9 ; 14 ; 126 ; 2 ldy #9 ; 14 ; 126 ; 2
sb_mixed_loop: sb_mixed_loop:
lda ss_multiples,x ; 4 ; lda ss_multiples,x ; 4
sta split_smc+1 ; 4 sta split_smc+1 ; 4
split_smc: split_smc:
jsr split_4 ; 6+46 ; jsr split_4 ; 6+46
dey ; 2 dey ; 2
bne sb_mixed_loop ; 3 bne sb_mixed_loop ; 3
@ -540,120 +540,16 @@ blueline_loop:
draw_ship_big: draw_ship_big:
jsr clear_all jsr clear_all
lda #>ship_forward ; lda #>ship_forward
sta INH ; sta INH
lda #<ship_forward ; lda #<ship_forward
sta INL ; sta INL
lda #15 ; lda #15
sta XPOS ; sta XPOS
lda #34 ; lda #34
sta YPOS ; sta YPOS
jsr put_sprite ; jsr put_sprite
draw_ship_small:
jsr delay_1s
jsr clear_all
lda #>ship_small
sta INH
lda #<ship_small
sta INL
lda #17
sta XPOS
lda #30
sta YPOS
jsr put_sprite
draw_ship_tiny:
jsr delay_1s
jsr clear_all
lda #>ship_tiny
sta INH
lda #<ship_tiny
sta INL
lda #18
sta XPOS
lda #28
sta YPOS
jsr put_sprite
lda #18
sta SPEED
jsr delay_1s
draw_ship_line:
lda #2
jsr delay_custom
jsr clear_all
lda #COLOR_LIGHTBLUE
sta COLOR
clc
lda #20
adc SPEED
sta V2
sec
lda #20
sbc SPEED
tay
; 20 - 0 to 0 - 20, 20 - 40
lda #26
jsr hlin_double
dec SPEED
bne draw_ship_line
draw_ship_done:
lda #$77
sta clear_all_color+1
jsr clear_all
lda #2
jsr delay_custom
lda #$0
sta clear_all_color+1
jsr clear_all
jsr delay_1s
lda #40
jsr delay_custom
jmp sb_real_exit
;1s = 17030*60 = 1021800
delay_1s:
lda #20
delay_custom:
sta STATE
delay_1s_loop:
; 17030 - 1038 = 15992
; jsr play_music ; 6+1032
; Try X=113 Y=28 cycles=15989 R3
ldy #28 ; 2
sbloopU:ldx #113 ; 2
sbloopV:dex ; 2
bne sbloopV ; 2nt/3
dey ; 2
bne sbloopU ; 2nt/3
dec STATE
bne delay_1s_loop
rts rts

View File

@ -1,5 +1,5 @@
; Apple II Megademo ; VMW Productions 2018 XMAS Demo
;
; by deater (Vince Weaver) <vince@deater.net> ; by deater (Vince Weaver) <vince@deater.net>
.include "zp.inc" .include "zp.inc"
@ -7,12 +7,12 @@
; external routines ; external routines
play_music=$1000 ;play_music=$1000
mockingboard_init=$1100 ;mockingboard_init=$1100
mockingboard_mute=$11a1 ;mockingboard_mute=$11a1
megademo_start: ; this should end up at $4000 xmas2018_start: ; this should end up at $4000
;=================== ;===================
; Check for Apple II and patch ; Check for Apple II and patch
@ -22,8 +22,8 @@ megademo_start: ; this should end up at $4000
cmp #6 cmp #6
beq apple_iie beq apple_iie
lda #$54 ; patch the check_email font code ; lda #$54 ; patch the check_email font code
sta ce_patch+1 ; sta ce_patch+1
apple_iie: apple_iie:
@ -44,146 +44,51 @@ apple_iie:
;=================== ;===================
jsr HOME jsr HOME
; jsr space_bars jsr wreath
; jsr arriving_there
; jsr fireworks
; C64 Opening Sequence
jsr c64_opener
; Falling Apple II
jsr falling_apple
; Starring Screens
jsr starring
jsr setup_people_fs
jsr starring_people
jsr setup_people_deater
jsr starring_people
jsr setup_people_lg
jsr starring_people
; E-mail arriving
jsr check_email
; Leaving house
jsr leaving_home
; Riding bird
jsr bird_mountain
; Waterfall
jsr waterfall
; Enter ship
jsr rocket_takeoff
; mode7 (???)
jsr mode7_flying
; Fly in space
jsr space_bars
; Arrive
jsr arriving_there
; Fireworks
jsr fireworks
;================== ;==================
; Game over ; Game over
;================== ;==================
; we never get here ; we never get here
;game_over_man: game_over_man:
; jmp game_over_man jmp game_over_man
.align $100 .align $100
.include "wreath.s"
.include "lz4_decode.s" .include "lz4_decode.s"
.include "c64_opener.s"
.include "falling_apple.s"
.include "gr_unrle.s"
.include "gr_copy.s"
.include "starring.s"
.include "starring_people.s"
.include "check_email.s"
.align $100
.include "gr_offsets.s" .include "gr_offsets.s"
.include "gr_hline.s" .include "gr_hline.s"
.include "gr_fast_clear.s"
.include "vapor_lock.s" .include "vapor_lock.s"
.include "delay_a.s" .include "delay_a.s"
; .include "wait_keypress.s" .include "wait_keypress.s"
.include "random16.s" .include "mockingboard.s"
.align $100 ; .include "random16.s"
.include "fireworks.s" ; .include "hgr.s"
.include "hgr.s" ; .include "move_letters.s"
.include "bird_mountain.s"
.include "move_letters.s"
.align $100
.include "gr_putsprite.s" .include "gr_putsprite.s"
.include "mode7.s" ; .include "text_print.s"
.include "space_bars.s" ; .include "screen_split.s"
.include "takeoff.s"
.include "leaving.s"
.include "arrival.s"
.include "waterfall.s"
.include "text_print.s"
.align $100
.include "screen_split.s"
;============================ ;============================
; Include Sprites ; Include Sprites
;============================ ;============================
.align $100 ;.align $100
.include "tfv_sprites.inc" ; .include "tfv_sprites.inc"
.include "mode7_sprites.inc" ; .include "mode7_sprites.inc"
;================================= ;=================================
; Include Text for Sliding Letters ; Include Text for Sliding Letters
; *DONT CROSS PAGES* ; *DONT CROSS PAGES*
;================================= ;=================================
.include "letters.s" ;.include "letters.s"
;============================ ;============================
; Include Lores Graphics ; Include Lores Graphics
; No Alignment Needed ; No Alignment Needed
;============================ ;============================
; falling_apple
.include "apple_40_96.inc"
; starring
.include "starring1.inc"
.include "starring2.inc"
.include "fs.inc"
.include "deater.inc"
.include "lg.inc"
.include "sp_names.inc"
; e-mail
.include "email_40_96.inc"
; leaving
.include "leaving.inc"
; waterfall
.include "waterfall_page1.inc"
.include "waterfall_page2.inc"
; takeoff
.include "takeoff.inc"
; arrival
.include "arrival.inc"
;background:
.include "fw_background.inc"
;============================ ;============================
; Include Hires Graphics ; Include Hires Graphics
; No Alignment Needed ; No Alignment Needed
@ -191,34 +96,8 @@ apple_iie:
;============================ ;============================
; starring ; starring
starring3: wreath_hgr:
.incbin "starring3.img.lz4",11 .incbin "wreath.img.lz4",11
starring3_end: wreath_hgr_end:
fs_hgr:
.incbin "FS_HGRC.BIN.lz4",11
fs_hgr_end:
deater_hgr:
.incbin "DEATER_HGRC.BIN.lz4",11
deater_hgr_end:
lg_hgr:
.incbin "LG_HGRC.BIN.lz4",11
lg_hgr_end:
; bird mountain
katahdin:
.incbin "KATC.BIN.lz4",11 ; skip the header
katahdin_end:
; takeoff
takeoff_hgr:
.incbin "takeoff.img.lz4",11
takeoff_hgr_end:
; spacebars
sb_background_hgr:
.incbin "SB_BACKGROUNDC.BIN.lz4",11
sb_background_hgr_end: