From af5383f58f062683ca25ef7a376d1c60a1d1b563 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Mon, 4 Nov 2019 22:47:52 -0500 Subject: [PATCH] ds: hook up end animations --- demosplash/Makefile | 5 +- demosplash/demosplash.s | 6 +- demosplash/gr_overlay.s | 108 +++++++++++++++++++ demosplash/gr_run_sequence.s | 104 ++++++++++++++++++ demosplash/graphics/starbase/Makefile | 3 +- demosplash/graphics/starbase/empty.png | Bin 0 -> 1412 bytes demosplash/graphics/starbase/star1.png | Bin 1669 -> 2074 bytes demosplash/graphics/starbase/star2.png | Bin 2163 -> 2567 bytes demosplash/graphics/starbase/star3.png | Bin 3265 -> 3591 bytes demosplash/graphics/starbase/star4.png | Bin 2715 -> 3118 bytes demosplash/graphics/starbase/star5.png | Bin 1624 -> 2010 bytes demosplash/graphics/starbase/star_wipe.inc | 36 +++---- demosplash/starbase.s | 16 +-- demosplash/starbase_action.s | 116 ++++++++++++++++++++- 14 files changed, 358 insertions(+), 36 deletions(-) create mode 100644 demosplash/gr_overlay.s create mode 100644 demosplash/gr_run_sequence.s create mode 100644 demosplash/graphics/starbase/empty.png diff --git a/demosplash/Makefile b/demosplash/Makefile index 425e9024..44382a94 100644 --- a/demosplash/Makefile +++ b/demosplash/Makefile @@ -53,10 +53,13 @@ demosplash.o: demosplash.s \ pt3_lib_init.s pt3_lib_core.s pt3_lib_mockingboard.s \ pt3_lib_play_frame.s pt3_lib_write_frame.s \ interrupt_handler.s \ + missing.s k_40_48d.inc create_update_type1.s \ starbase.s \ starbase_action.s \ - missing.s k_40_48d.inc create_update_type1.s \ + gr_run_sequence.s \ graphics/starbase/starbase.inc \ + graphics/starbase/ship_flames.inc \ + graphics/starbase/star_wipe.inc \ graphics/sprites/alien.inc graphics/sprites/astronaut.inc \ escape.s create_update_type2.s offsets_table2.s \ book.s book_40_48d.inc \ diff --git a/demosplash/demosplash.s b/demosplash/demosplash.s index 613cf116..3d2526d0 100644 --- a/demosplash/demosplash.s +++ b/demosplash/demosplash.s @@ -185,7 +185,8 @@ wait_until_keypressed: .include "gr_pageflip.s" .align $100 .include "gr_fast_clear.s" -;.include "gr_overlay.s" +.include "gr_overlay.s" +.include "gr_run_sequence.s" .align $100 .include "movement_table.s" .include "font.s" @@ -220,6 +221,9 @@ wait_until_keypressed: ; Pictures (no need to align) .include "appleII_40_96.inc" +.include "graphics/starbase/starbase.inc" +.include "graphics/starbase/ship_flames.inc" +.include "graphics/starbase/star_wipe.inc" .include "earth.inc" .include "book_40_48d.inc" .include "credits_bg.inc" diff --git a/demosplash/gr_overlay.s b/demosplash/gr_overlay.s new file mode 100644 index 00000000..d0a6bcac --- /dev/null +++ b/demosplash/gr_overlay.s @@ -0,0 +1,108 @@ + + ;========================================================= + ; gr_overlay, 40x48 version + ;========================================================= + ; copy 0xc00 to DRAW_PAGE + ; then overlay with 0x1000, treating 0xa as transparent + +gr_overlay: + jsr gr_copy_to_current + + +gr_overlay_noload: + + lda #40 + sta CH ; xsize is in CH ; 3 + lda #46 + sta CV ; ysize is in CV ; 3 + +gr_overlay_custom: + + ldy #0 + +gr_overlay_loop: + + ldy CV ; 3 + lda gr_offsets,Y ; lookup low-res memory address ; 4 + sta OUTL ; store out low byte of addy ; 3 + sta INL + lda gr_offsets+1,Y ; look up high byte ; 4 + clc + adc DRAW_PAGE ; ; 3 + sta OUTH ; and store it out ; 3 + + lda gr_offsets+1,Y ; look up high byte ; 4 + clc + adc #$c ; force to start at $1000 + sta INH + + ; OUTH:OUTL now points at right place + + ldx CH ; load xsize into x ; 3 + ldy #0 +gr_overlay_put_pixel: + lda (INL),Y ; get sprite colors ; 5 + + ; check if completely transparent + ; if so, skip + + cmp #$aa ; if all zero, transparent ; 2 + beq gr_overlay_done_draw ; don't draw it ; 2nt/3 + + sta COLOR ; save color for later ; 3 + + ; check if top pixel transparent + + and #$f0 ; check if top nibble zero ; 2 + cmp #$a0 + bne gr_overlay_bottom ; if not skip ahead ; 2nt/3 + + lda COLOR + and #$0f + sta COLOR + + lda #$f0 ; setup mask ; 2 + sta MASK ; 3 + bmi gr_overlay_mask ; always? ; 3 + + +gr_overlay_bottom: + lda COLOR ; re-load color ; 3 + and #$0f ; check if bottom nibble zero ; 2 + cmp #$0a + bne overlay_put_sprite_all ; if not, skip ahead ; 2nt/3 + ;============= + ; 7/8 + + lda COLOR + and #$f0 + sta COLOR + lda #$0f ; 2 + sta MASK ; setup mask ; 3 + ;=========== + ; 5 + +gr_overlay_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 gr_overlay_done_draw ; we are done ; 3 + +overlay_put_sprite_all: + lda COLOR ; load color ; 3 + sta (OUTL),Y ; and write it out ; 6 + + +gr_overlay_done_draw: + iny + dex ; decrement x counter ; 2 + bne gr_overlay_put_pixel ; if not done, keep looping ; 2nt/3 + + dec CV ; decemenet total y count ; 5 + dec CV + bpl gr_overlay_loop ; loop if not done ; 2nt/3 + + + rts ; return ; 6 diff --git a/demosplash/gr_run_sequence.s b/demosplash/gr_run_sequence.s new file mode 100644 index 00000000..e51727c0 --- /dev/null +++ b/demosplash/gr_run_sequence.s @@ -0,0 +1,104 @@ + ;================================= + ; Display a sequence of images + ;================================= + ; quit if escape pressed? + + ; pattern is TIME, PTR + ; if time==0, then done + ; if time==255, reload $C00 with PTR + ; if time==0..127 wait TIME, then overlay PTR over $C00 + ; if time==128..254, wait TIME-128, then overlay GBASL over $C00 + +run_sequence: + ldy #0 + +run_sequence_loop: + lda (INTRO_LOOPL),Y ; get time + beq run_sequence_done ; if zero, then done + + cmp #$ff ; if $ff, then load image to $c00 + bne not_reload + +reload_image: + iny + lda (INTRO_LOOPL),Y + sta GBASL + iny + lda (INTRO_LOOPL),Y + sta GBASH + iny + sty INTRO_LOOPER ; save for later + lda #$0c ; load to $c00 + jsr load_rle_gr + jmp seq_stuff + +not_reload: + tax + cmp #$80 ;if negative, no need to load pointer + bcs no_set_image_ptr ; bge (branch if greater equal) + + +get_image_ptr: + iny + lda (INTRO_LOOPL),Y + sta GBASL + iny + lda (INTRO_LOOPL),Y + sta GBASH + +no_set_image_ptr: + txa + and #$7f + tax + cpx #1 + beq seq_no_wait + + jsr long_wait +seq_no_wait: + + iny + sty INTRO_LOOPER ; save for later + lda #$10 ; load to $1000 + jsr load_rle_gr + + jsr gr_overlay + jsr page_flip +seq_stuff: + ldy INTRO_LOOPER + + ; exit early if escape pressed + + lda KEYPRESS + cmp #27+$80 + beq run_sequence_done + bit KEYRESET + + jmp run_sequence_loop +run_sequence_done: + rts + + + + ;===================== + ; long(er) wait + ; waits approximately ?? ms + +long_wait: + lda #64 + jsr wait ; delay + dex + bne long_wait + rts + + ;================= + ; from apple II rom monitor + ; in case we have language card active + +wait: sec +wait2: pha +wait3: sbc #$01 + bne wait3 + pla + sbc #$01 + bne wait2 + rts diff --git a/demosplash/graphics/starbase/Makefile b/demosplash/graphics/starbase/Makefile index d8f61a2a..863d6e32 100644 --- a/demosplash/graphics/starbase/Makefile +++ b/demosplash/graphics/starbase/Makefile @@ -25,12 +25,13 @@ ship_flames.inc: $(PNG2RLE) \ $(PNG2RLE) asm ship_flame5.png ship_flame5_rle >> ship_flames.inc star_wipe.inc: $(PNG2RLE) \ - star1.png star2.png star3.png star4.png star5.png + star1.png star2.png star3.png star4.png star5.png empty.png $(PNG2RLE) asm star1.png star_wipe1_rle > star_wipe.inc $(PNG2RLE) asm star2.png star_wipe2_rle >> star_wipe.inc $(PNG2RLE) asm star3.png star_wipe3_rle >> star_wipe.inc $(PNG2RLE) asm star4.png star_wipe4_rle >> star_wipe.inc $(PNG2RLE) asm star5.png star_wipe5_rle >> star_wipe.inc + $(PNG2RLE) asm empty.png empty_rle >> star_wipe.inc ##### diff --git a/demosplash/graphics/starbase/empty.png b/demosplash/graphics/starbase/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..34facb805518975832817ad7662271899f45f8ea GIT binary patch literal 1412 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 K?iLS|mj{DUp`{l9 diff --git a/demosplash/graphics/starbase/star2.png b/demosplash/graphics/starbase/star2.png index c8d227556fb4032076ca3e1bce04dfa3856a2066..79aa6ea854feeae5653af07e21d531878342fdc7 100644 GIT binary patch delta 2295 zcmVAxlynG+>>eh5sw`aO%=En|8 zRgx}6ksuP80Nwi6Kezh_N6a<5ELw||;yJQqi;aisUq`#w;PbuSL!MXs{?zW$`$eSb z{CFB_dD<84k^b>%AI~_AcKK!?ThELB`9*sMiuIY`X@5_Y!fOIQpMihcGf;}p%=z`Z zKQkAr`t1^)@BDt=UpMgY≪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 diff --git a/demosplash/graphics/starbase/star3.png b/demosplash/graphics/starbase/star3.png index 53b719070b4356f6137c415c593beb2cd9538259..a7ba0a418a9fbb5b37e59f16b09605a5c60dbf4f 100644 GIT binary patch delta 3463 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 delta 3134 zcmV-E48ik<9KjioB!3}#R9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}t(j|f+&B(} z|8o_y1inEohv4I!*}*J-K1eFtah$Z%-Bq!qq9{Iafr|^p?f?Dvxc~4;sYaKJwAyR+ zd~(k{4lbI%KjS(EpReQfDbFo_|IqHz>qex>emo7WKJA4CH zjyZaf+PQAgXTfgkT4=m27yGk=Pru!(Yh+Dvr;t3yW-ClAKlL;?297>41y}WIsaH$9 zR|;CudEvUh?0@?E&+k_5UQ2%<{{hmst4~n({xj0%PNRuwZwbXJetu|?`^)`C!3C1m*cwvBSodcHU*z zExYZ$$HCQ3I{B1SkDPY8JL3(t2iBjye}GzeP>UB*)=}P2qgCWJL@+ujh8c*(8~|Jl zfskB`hM8|6=V-_oX1+(FqC^&144f4VF%Zl<#B#zLcJIg)2WkE*xH*7`{|0i-p!)`L zKY!!)6>4i-i7s6TSs0p8eIokS8nN+@g!va|_tg#P=$w|Pmcw9N9X*=TUQlQg=Iy5n zOPU>0UFCFDaiK5myRVZv>pG=q7AG+2QIb*I+UlbTa%GaE5clLfU~p?_<0l4qA|Bx*U>&=7EgL;bEeR1OrxDV_{YY! z&Zxs_wnTG1U4r6<F?hS&ghvw!q0 zakRPFbqWpmb=2mQxiS4rZ~evDeYfLZoR16ZG!5o>@bxk`m(GHAtEbFZh{zN0%bjaC z|HN4{ef-*LAo-{(0ihRn=EO_)YIeYWDPY5mH(!HeopZEa*IIBJ((nFqQSP7Zinv#1 zg&$mkY|fgiPbJoO%_?vYgrxyt+kf%Q04W@F0MG7a2!#Z4RW}cwv^$=_dL3Sp?E<2> z8d@1=1Ud7-J;_?cFt$4;bobt055?C0d?;=ETp&ejo$+2#x05;58qh_S-u28~YHAC1 z2#vIR)=s6!7aMwCg!?c&wkSNr$hWhaubyYz0^O{8+;kQ(XgQx+CN^!g8c-Dsr!8Zw67hG{< zf}}b5;?25TIhL&pj4R;B5m6&3NmBI+6O!+Fd)NqCVL0Y$WdFJV?td~vH#b5DR7cF? zLiHRpO3BMoJ&fyx36ae3TM}WF;Rh)Kv!;gl!oaz- zog7OU1VXa%8o2$QR)3(M@9gG>v-|pnSf)jv8s%?RMRrDguwMNT+Iv`ON#p2S9Bg6e z$vUL!iH;PauCoErjJ^X9f_x1zn&};pW&vrYL4=mQ)-~;%#omp;I!u`Jigg~UJvnJ9 zs;?q!ry|o^2ws!RWD5vwr{`^h$~&0Iq7UK?6z6 zhZ`bc5j9$hBhUb84kTfv_uMnDiCZ?G`_B02@a&xw>UWw+2c8W@4%2NyltRsG7wE}B zV5OQLqL&o!0l}?t>Alk}rEh+yMsx|&eAs0`3`dVOOF4tB#eXOJ|2z;d8uDj0cm~6- zJLynf_d-G|8-Gn2ys3d)7LLIpO)5Cc_r8BMlNO93kG$CZ%Kzo4zqqPdsP0!6I=HLH zec$dvWt))sb7AVf{lM`E98WGuWi(uuGJ-Iu1L05dp%y`@QEIHI_97y63iFhvzl>#a zZ7gs@PXcGX#7&^UnItXb(6#Lvt02|c8qe;8j)cWL&wrt1E8F!`bJ0U4;sGQxYM2rW z21HgW)sj^kg{+jQLlTveE9uNcpy7pQwQz|A{Kr(>GO-D_lPiciIA~Hlv{`rPh_iH< zR4fArl&-ypq>6`bFheOOrP&q4XoaECBkDa4m=0g141x7jSFTnrp}eWfP|s|2`QZ>) zV{|e|mVf&2_)X*M6OGSb(0D4RwX+?}%4RyQ4vVv+OF1q<3}DuAnU_4ysFWB8O0jf< z&WzBEsx8oWJd+BNq)soSKXpeR)VH}IXT!#3R$CIZ)ODx=oNmE#NS<{$X)a8sO8S~s z`z4o9kNX-7;TuvUqs$&se+$b5`eiemSL$VOB!A^mffC9B_Y2u>k{7lU>K|&KqzBgP z_<_ItAc6be&9uKdqnYrYg46{!I0($3y2G-Qy?TiU+pq4>za+$xLs*nI$B$K^LwFQZ zSe4U&W~O9;PA*z(HICA{y_mB-uZmv8Xx*Wvd4y7l3c%Zw)B%-ZeT5_2XNU^`Pq`$SKjIWHht4_p-Z;PckoW}}G#AUL&Gsc`_ zr1+O&ufnV`pLCTvDd6+dmjT05XsiU;6MtMRK!|d;VyQSHC485dQy?HQ0Ma01C}myb zjZvy)jR4Irh_&}k`7$Uf8v&h?LPZ$6Q~quxK+PUjo>|_>g@@nsj+FPjb5MHkX~$dI zp+BmY=O9|iD8-fUx{PYbC=1nux%cI-y?TW;0<4@VYA#B)cc+SrAm7Gx$%|H}b_R0^mp^;+$A%wEe9hHLasUD>Q!%z=Z3Kqo^ zB3Wo^sCTv+9pv;a7O3sp0wbP3aS+`saqfe|fg<{QKrhm_ zjSI-ZK>6qo3#Ek4Z5bHz#9u6U3g6|NYNBmriTB_MxxKen4#DA^-a#+FFB!7i&Z(SP_1Pg? zQb-g9;sFm2;nsitz1_d~L{aZju3B0to=6B|8(8Ow;O>= z=gV_J%X58kJup5z*T*wY=X(AyQCrUq`+TE669s)<@LYd;QIyvU{Cs~V>d!@Y&j4UCx*x3tvAJZAf*7=X@vEgN{12RnD{F!+L|I5$Mtal&He_;Ov>-*U^ zaJTjuZTE&k3D1!D4N8CI{rJP{lHVr!2G)z+hc_2}&cf&Gdp+U$eB2v+=YQ|1d#~5( zdMYfrJd1i;;yq)W9dF&I3S0HX5roRg*&3VjoFbqUwKTgfp!Ef8QpMz@z!F=7UEURqKD|VW?{Le9p?Sy;JE(gfy#J9Vwpc4R-?tXI2>4Ns(Y9lpnok_fSWCCbrV# zoaL4MIWG0VRxNL%+|P$$V!m_sqX7Qu=)OAe^KnNqq*WaTy=RsL{49|$*{jTv3`|Da zp`<(@`P5eGDlicM)t^jlOWTIC&q9Xw*;C!Kw&Q=ve*6R8HtY3~cuQ?tSOjvcv#nj% z6boW`PLo&)H0*da<-1DT<(QoOSFrwkG);RuYFsw*tM0Lh*$XW%yhk;@FDaww4TZQ` zr-IIHJV|^4huQxp`octn_o~Cyy2M}uXkqp`la(~RS)xkqqaThOph5+RY!(yy*~IS5 zY@>g}PG-7pnsnoeYV^9e86YJ{VI^N6$WrHSC(vrjlJZf(ucLcA5u!UKQ|$wSnXxZu zZz4BhWdOWed_%Mp+JoU&?K%6)7_4tb8^z`BOP_@AgblC3&8h?z9%?&67t(KW9IHB6 zY?gPNTjAcK2%QaqAJVbh zC>r{x7L*d6olrOEaG-IW)Yg$Ga>KHQRidA!A))9=lTFVG=|c^^ju~mrEu6XxcaS3% z-N`aMOD&QPG^9y7Hj+qwV8L38dE%fbMa#7Xig%&jpcneFv$jTdQ(536wMz48XcLhJ zl&hs9u70y*y5Fs_>?W=wVhV92K_`Fpl~p=uVK!*dmpnH}Y)b6Oeq`OAa6&Kw^OQ-y z%RtYaK%ADQA-CX~!K!NROtgTgjTJ+NeN%<`ZfU=4CD!-qvxv+EU7_u)>_b(NLM)KA zPa21yZM!0C){3+PKvgOv*N|utw>LCt)*hSC+2L@a=}1e6yQ3PgNlNvBStftowNJrW zqkNB~awI5mkEDs68h|R!mxei3fpxb>dSu&d%|CEH-hbVnYk(cbF&+#R=bsm+(sYq&^S8$*ixojoUD} zZrl?q%7-LatqD@pND^;u;U_sEW6m*hzJge&E9m;^YbyZv8AP z-5=-s>PF^yL1Wh)rqjXxv&0{J97SzFWqX zGw%@HfV;K<1rw2@B^;fG;5syrb;dHT1V)&53Ofotj=|u8K1QgO<2Zk~E~;amLpTB- z&gFR$wMWqn`2%x^oVKC?3q}&*S;ijlH0{KD`nX@^)hdQOf2L1%h~m&0)639CJEf5Q zOf(E3xm|N){&Ak!pqF%E($NtIK7kog5=k3$w&;3F@JB}|;gVn>koJ42(HujF!+Oek zgn|+GwUELgD@_Y}p`L%HATFZnFHrm?{0F2x@W{ldiNa}g_(`#Gg?Xp3N$a+e%i(XD zFIG&EWBxFaP81I$d2R$rG8jJ;UNajMkLIGMr4}IV@F3D@|3QCO@=mpzw(}344aD_Z z8x~z!PlL7XX|M=xWaTr4;&unTZl9aCT(rI}yl2no7~nh7oFmTXMDU%h;OdFu78 zNn{dopY3X-w-A4OT0}2&kmo1$N>ww$iH>r~f;bfcRL&z14x&oPLP+LgJ^1eEet1I& zW@2)b-DzA4GC_$(UTr5Ms}Yx}LEYLYCk2VF)yc*Im`J)Cm16C+D1t}U(+0FmzmHH; z^mhwY7Fw>BwuKV8QfbFt9!3P7-ys)m(%%T_=jc2DM5=!$QC6XIK|vY-Y}x|^3hC=x zjx7ghn@rm99CgTS`Gj3po>Gnx1TK<AFB6^c+H)C#RSm|Xe=O&XFE7e~Rh;NZt%)xpJC zR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0DryARI_6oP&La)CE`LRyDEfU(TyMi z=*N)6Onpuilkgm0_we!cF2=LG&;2=il$^-`pFn>+%XGsc-XNadv~*5I4?2F4Tr#;zVB}ap1u7)R5B>+g zyET9FlM`-II1U6~Z2Myb2<-xmnr(j{+jipw2s{HPQfAvm1#cJP+p7qXmlRcBS#XIq(; zOj8ty00IHK{r~?R_ZP1ywYijQE4>uYEA`aF;G+4*Yh3T*)AfG6^8FQ`-;KNY{30-9 zAMSxx?(xldV1BsA=e^EgJil3}@B0gV|HZf$3hjQtJ^p-9l*a@7y|8~9_d+q;Pfm}| z`q-8)z16o{nD_j1e}B1we`jwg)=+Yhns`sa*IGK)E%;RN+qw)556^{u@8H8{_naEA zDeNfG^WMzDi21R{!MpJ8Bah&!TqBM56z?sAR&c&@-JgE_`RiwvyQk?l1m14mqI$`~u_`(-u+()gfQzsoV+?7N#21NKiuf9Wt0FkE0notoKtd_7NX}tlWFVgk;E)A8n|rEU zQ$r4qVTceQax8x?RmVZn@`CVzCS>r50nVGIo#HEGtORhxDlGq@RNnt7I4 zXPbSF6;@p2@hYpXw)z@dHleiB&b#co+wOZDLhZzpPCkF-)YDFPXS|?x!}{s?1=Qq5 zEnG<1#QK67qqRPl5Tlc9n1NVG0^rpUkmy1%%zTrSf+1&^`5wrM956B)I7x35rJ<0^FVLdeq4oa!Ulx7G-aKMLkQoZWp9 zdpoVw!_9wC)gIZd$^_X|2J#@Ss#<4?Hr{bJP;jM%iMTqbo1uL5oHIh5@m^R<7rV+k zdpqyugYH`1&T?N*!^C{8Ijs7B=j^^a@%4Nn8PaQ;3cY8Y#49^=gvr@u&7@#5(+MTz z3CX9v(`W({0Z{$H(z;teeqCFeZLE>%S+$!dhxva8ymi%U_u@76qhS-sv97*P-Agox z=Cu?hP@rL+Tpf`q{S-4f`R`)=de)ZAo|c`GU-isG%wEv)!0X(U&s)kY?Fxms`=ElZ zqufb+0*C5<3w>iD!h6?Q>lUZ50kp72T}ew?UNupsj_C)J15~I0k*%VlKU>)89I%sW z+gE>@4Ba|gi@t5X4UiI~uoF@#q*B-E7HBnPN!b+e>)BlwM0ZNs+L#c`iep223%L<1 zGvVFhJEEn~8ce_I$k|_v!Twg%S@Q73jYaq_*zhvAYn8ypL+vJVA^jewSvAOF)qLVQ z4el+C`g$O6bFGP@NL};$tf??rZaWJ?Erx&OH$E%6Lj5js&Y=4fA@JWqKU`>1Eyq?W zZ9lE*P>SP7EY;RrGlMx`E(0@aFR>R-Cv$~CKY38$K9Q62zrki-o&R|u;&-n?GuC3B zE08Bde%>jyQkH5T!GzAFr!CSZsmbmWJiiagXZPe)JNJ2N4XK^#Rgf@jP+ET& zvubFR@GO)KM~4HAw?%E8i6S>Ox3Ej}OIt`t`f6?G_K-f*;OktG#$1EdV^#F2!ykYRu95>{BQLyNxTbwJ`!VlDfTb!Wi|K?zJNlm3*6 zp0hw)nwBEB;F@W>$|IZ&LaxspLxz1*h54@1ezBG4ID4!jvNm*uxYKfssv?D0AZwpm zoPxF;#Kqn&(hdMssjyr}qD9=^(WJSJ*oDpxhZ9XEEg|lKYQQEb)dyBtwAX*0rlT*V z@k>oif)e*gnmDKdsN#I_G3P3;>gFQ-@47q326V6Me);L<2@tY9^Yv zTTq94#EtNS%e$hMQHpqJ4h3k@g)FsKEZz)6t9u(_ai+P*Ldi}*6>yrwNxkR=ic#vIJrWF+ds=n z_gneChmv_-(Af2a)#eFqSzbnxfwEFDqqKvpEmOkugbAhq~NRpkN_#v;@;>2ri?6+*T~}lE4V_L19Os$2pli(Z>k2Vvc`<>)7*Jq=}FlT1e#e1gd+iPSoDw&{9G@TMag;gVn>koIRcjmC$QrY7ZP zLP3f9T1erL8%+y(p;~`a5I0fv4K#lUzkzfn9$6T*P&l0qKQ(OJA=gyo`fcPQX}x@e ztk_29nhRXL=fIOE7G_WM`p sZa4B8KnBmqB>B_DrVmfR=|{bv=k1SBCOmc#R$>|mBZ7woEZcRHO;dOl;S z43@DFx_S}jzu#8)2NzRHA*p#TIY(Tnq{0;gkJnYtonkuobLssG&#&k~9xoWA{csaJ z-}DJOV?N*Xe)FlI>kCF@-Y?qg7xiYuelKv-9}5Xx3&e3Vsy8Fyd*y$0J-2)1T-;u6 z;r=eJ`~6V^{$bye7-!973HQX&EEkNOV>0M%96|Zg9G80sZ=S;4Z0MPLU^zqw7=`AP{s0a`Fo(O*tXHf{z`5tdd61Gh;q0urSRiHzBZphyQm6{0g7 zssRB~!hS3{Y^bVeQq`=cu0?B> zyge*u%R8!86HBI+&CG)pt1g~gJ-fMk@mjbDqOKPBe`E1dO08J5f^)^!6%%T0+@z(Z zEjMf4N@%sie0u8IbGPoj^g4LRfFF-MZ1^anPMR>KnWoM>ZTc*;E|}Vqm6oo&EG%DT z)hB8+7mTU%^oahhZEhH0WnSlzzwJYF&Os7EIQH?Z{#*+vFs42 z3?X%ce=}$!1_aY2)A_`l#5%nxq-Rpi2k?vu#t`=wbFKV6bByZRWph%Fj(l+?mh z?MVwVV@q%q6e|KpgNr~L_Mz=Wnse;R@o4kscJ#6J#App6Lnp~E>_|Sco|nS>%8qvb z6zQcvmpF1D(p@TEeRxaw)BZ1`zl{DeSNd&6*0OnTT~HgqcfE|cT^NblTOKR-HO4Bo zGO_`}oXl0H1wsnPiR9>p9mN@Qw@Z@K4L?4ZbKLWbM7;sN=4M= zeein>zS@6+le+{Nf8m@$QtYM`yB{P_O+C>PrxoO^TnFXeCQ@@&$7T`xhl)*93nHzd ziYk4Ygq@tH*M_L+?c{Ohrn{=JdBQBR&KLtno<$k)7ZNnYNr-vkJYj-#R7+=T`%wPX z{*#PQP%Knr$TB!V7o-PNOfAtqc7o822**@j1f%9wl z52nKK0W=EVNB{rD-ISBb;wYi zEQpFYY88r5A=C=3I+$Gg1x*@~6cF9F6;-2rf5v5n^A=~dTxHFBfASZGbK1%>*J%zTfkiAqga8>; zlu(9+7_Ay9CQ`H?_wWxoevw=D^OF;9QaBC-Uu^qh1PJW{ zjhbzLAKP~01PD9>S6a(osRJ{gq}N(n^a$wP1}?5!n!E>G?f?T%x@1U>6rkzP=YjV# z`lc+j20++-Q(Sz?Y;ebrrF;Q5qfffwy9>-lWGND z2n7Qd9^t?R1C!AOC{H>`L_t(Y$L-f44geq!1Hse$|G^{()Coc=PR#hOZ>>f>YPbKn sKA8^!002yry(;HP#e=!z{d%K=8&y9Ap$Xn<7XSbN07*qoM6N<$f_frLLI3~& delta 1432 zcmV;J1!wx&57-QlBmq5UteEI9v-6KkiUWSIeG_mDIbvzN1=}?@(!W= z>_4TGzR<&KNDpqWR?dI<9`RfHlIIdnaoQ$!o0S%b-v1I zhQCJN%HFM@Ib5Q{js}dZp>-<6fN@cxL6sKG(|76+G4W(W&)iw42M`@#6z&J^v>Pop z06fHD1Rdrepz>1|I?I-`TqnoEgFL``2+Rnd{89@)Gij~uP(*)Qmw=uwe0h5sq}a$2 zg-DnNL}=Yg)uZ4?dw*?Q1qkXDTjk^{70qN2YXm~7k(pdv`15C(3O zC}t9+OwpKw5kZj-fGR|1I8*~Hq{;(AauUe^2VQ`+@r}`$%E}iRfe=8bSxsGw)+~8@Sk9JrM6D*4Of8$4Td^8kJh^&ybNAx4a1lgYE%3+U zrIcE+Xa(nruPY|h+PFzeOivhb}#J?YUd`UV0roWWbL{9yWZGQ7289(o9ol zo;H1!Sr<%g$x2ICUbcLdu<8@F8`cl)8>rEZ8Xu(gM0a>oq=E zqLl&9@{$+Nil;J`^&x<-1QsNV-jIaZqWEkHp-_J*>8>We(T8i07VOd(mWK$hGeK>A zuUmV?PEd~25>vL(e4E`?BBYJYdg7rCyP?1^vNBBaLMn@Wv}LexpX8aScoy!kUz$bn z(LJKI8JG{=;Q%AlyDp3sJ%J`pgg@Ict> zBQ{j$HiQu{Co%(~Mn%-c2{Z0KJO;no|A3Rc1Q~z(5E4*0b=z@sSY@2tS1N1vIHb*? z6(1OOH<7Qbw3$b(c@2bk6f-DtaM0+}cGMh!22M1{k0&}}iFQViZ;k$5>1o*244sS6%#TSV-!P^V+SZ-N=ZaPR7l6| z*C7r7APfY-nltzR2SdOCqJ##uqucctUdfK6alD8<7#9vfZLWe(-v9sr0PsbAh$U;a m+oumZORmdlj>o#7>w^vG-vq26BE7Ky0000(ship_rle) +; sta GBASH +; lda #<(ship_rle) +; sta GBASL +; lda #$0c ; load image off-screen $c00 +; jsr load_rle_gr + + + lda #flame_sequence + sta INTRO_LOOPH + + jsr run_sequence + + lda #star_sequence + sta INTRO_LOOPH + + jsr run_sequence + + +; bit KEYRESET + +; jsr wait_until_keypressed + + ; trigger end + lda #5 + sta WHICH_ROOM + + rts + +FLAME_FRAMERATE = 10 + +flame_sequence: + .byte 255 + .word ship_rle + .byte 1 + .word ship_rle + .byte 50 + .word ship_flame0_rle + .byte 40 + .word ship_flame1_rle + .byte 40 + .word ship_flame2_rle + + .byte FLAME_FRAMERATE + .word ship_flame3_rle + .byte FLAME_FRAMERATE + .word ship_flame4_rle + .byte FLAME_FRAMERATE + .word ship_flame5_rle + + .byte FLAME_FRAMERATE + .word ship_flame3_rle + .byte FLAME_FRAMERATE + .word ship_flame4_rle + .byte FLAME_FRAMERATE + .word ship_flame5_rle + + .byte FLAME_FRAMERATE + .word ship_flame3_rle + .byte FLAME_FRAMERATE + .word ship_flame4_rle + .byte FLAME_FRAMERATE + .word ship_flame5_rle + + .byte FLAME_FRAMERATE + .word ship_flame3_rle + .byte FLAME_FRAMERATE + .word ship_flame4_rle + .byte FLAME_FRAMERATE + .word ship_flame5_rle + + .byte FLAME_FRAMERATE + .word ship_flame3_rle + .byte FLAME_FRAMERATE + .word ship_flame4_rle + .byte 255 + .word ship_flame5_rle + + .byte 0 + +star_sequence: + .byte 20 + .word star_wipe1_rle + .byte 20 + .word star_wipe2_rle + .byte 20 + .word star_wipe3_rle + .byte 20 + .word star_wipe4_rle + .byte 20 + .word star_wipe5_rle + .byte 20 + .word empty_rle + + .byte 0