*480 *a000 org $480 opt %10101 portA equ 54016 strig equ 644 right equ %00001000 left equ %00000100 down equ %00000010 up equ %00000001 fzstpleft equ 16 fzstpright equ 17 pmadres equ $b000 __zero equ $f0 _memory equ __zero+2 reals equ __zero+4 lda pl1 sta reals+1 jsr init jsr dli_on jsr translacja lda #0 ldx #0 _clear sta pmadres+1024,x sta pmadres+1280,x sta pmadres+1536,x sta pmadres+1792,x sta msadres,x inx bne _clear lda #3 sta 53277 lda #8 sta 704 lda #6 sta 705 lda #15 sta 706 lda #2 sta 707 lda #12 sta 711 lda 623 ora #%00010001 sta 623 lda >pmadres sta 54279 loop equ * lda _fz05 eor #255 sta _fz05 lda _service_nr beq _lot jsr _joystick jsr _main jsr _pmxy jmp _ptl _lot jsr _air_hero jsr _pmXY _ptl lda 20 _ptl2 cmp 20 beq _ptl2 lda _service_nr beq _ptl3 jsr pociski jmp _ptl4 _ptl3 jsr _movemissile jsr _miskolision _ptl4 inc licz lda licz cmp #2 bne _ptl lda #0 sta licz jmp loop licz dta b(0) _joystick equ * lda portA and #%00001111 eor #%00001111 sta _new_joy and #down bne _air_service lda _old_joy and #up bne _notchange lda _new_joy sta _old_joy _notchange rts _air_service equ * lda _old_joy and #up beq _notup rts _notup lda strig beq _yes rts _yes lda #1 jsr _Y_rozpisz lda #$3c jsr _X_rozpisz jsr _loc bne _yes2 rts _yes2 lda _service_nr eor #255 sta _service_nr jsr _air_fire rts _skrajna_wart equ * lda _faza_nr and #%00000111 bne _skrexit lda _faza_nr sec sbc #8 sta _faza_nr _skrexit rts _rig jmp _right _lft jmp _left _main equ * jsr _ch_obs lda _st_move beq _m2 dec _st_move lda _faza_nr cmp #16 beq _lft cmp #8 bcs _rig bcc _lft _m2 lda #0 jsr _drop cpy #1 bne _m3 rts _m3 lda _old_joy and #right bne _rig lda _old_joy and #left bne _lft lda _old_joy and #up bne _up lda _faza_nr cmp #fzstpleft beq _ex_stp cmp #fzstpright beq _ex_stp cmp #8 bcs _stp_right lda #fzstpleft sta _faza_nr _ex_stp rts _stp_right lda #fzstpright sta _faza_nr rts _up equ * jmp_max equ 30 lda _faza_nr cmp #16 bne _stop_spr lda #0 sta _faza_nr jmp _up_continue _stop_spr cmp #17 bne _up_continue lda #8 sta _faza_nr _up_continue equ * lda _jmp_counter cmp #jmp_max bne _readY _no lda #0 sta _jmp_counter lda _old_joy and #%11111110 sta _old_joy lda #255 jsr _drop rts _readY ldy _jmp_counter lda _jmp_table,y sta _jmpposition jsr _jmp_kolisions cmp #0 beq _read2Y lda _jmp_counter cmp #1 bcs _ye lda #0 sta _jmp_Yposition jmp _no _ye inc _jmp_counter jmp _readY _read2Y ldy _jmp_counter lda _jmp_table,y sta _jmp_Yposition _not_readY inc _fz0_5 lda _fz0_5 cmp #4 beq _next_faza inc _jmp_counter jsr _stand rts _next_faza lda #0 sta _fz0_5 inc _faza_nr jsr _skrajna_wart inc _jmp_counter jsr _stand rts _left equ * lda _faza_nr cmp #8 bcc _notr_change lda #0 sta _faza_nr rts _notr_change jsr _alf_kolision _verify_up equ * lda _old_joy and #up bne __up lda _fz05 beq _ex_left inc _faza_nr jsr _skrajna_wart _ex_left rts __up jmp _up _right equ * lda _faza_nr cmp #fzstpleft beq _l2_change cmp #fzstpright beq _l2_change cmp #8 bcs _notl_change _l2_change lda #8 sta _faza_nr rts _notl_change jsr _arh_kolision jmp _verify_up *end org $9d00 icl 'AIR_FIR4' _X_rozpisz equ * sta granica lda _pos_X sec sbc granica lsr @ lsr @ lsr @ sta _posX rts _Y_rozpisz equ * sta granica lda _pos_Y sec sbc _jmp_Yposition sec sbc granica lsr @ lsr @ lsr @ lsr @ sta _posY rts _Y_2rozpisz equ * sta granica lda _pos_Y sec sbc _jmpposition sec sbc granica lsr @ lsr @ lsr @ lsr @ sta _posY rts *detekcja kolizji przy ruchu w gore _aup_kolision equ * lda #$1d sta glowa lda #$18 sta butla jsr _aupd_kolision cmp #0 bne _aupexit dec _pos_Y _aupexit rts _ado_kolision equ * lda #1 sta glowa lda #8 sta butla jsr _aupd_kolision cmp #0 bne _adoexit inc _pos_Y _adoexit rts _jmp_kolisions equ * lda #$1d-2 sta glowa lda #$18-2 sta butla lda glowa jsr _Y_2rozpisz lda #$3d jsr _X_rozpisz jsr _loc sta _upbyte lda #$3b jsr _rozp lda _faza_nr cmp #8 bcs _gl_4up _gl_3up lda #$40 jsr _rozp jmp _2battle _gl_4up lda #$39 jsr _rozp _2battle lda butla jsr _Y_2rozpisz lda #$39 jsr _rozp lda #$40 jsr _rozp rts _aupd_kolision equ * lda glowa jsr _Y_rozpisz lda #$3d jsr _X_rozpisz jsr _loc sta _upbyte lda #$3b jsr _rozp lda _faza_nr cmp #2+18 beq _gl_2up cmp #5+18 beq _gl_up cmp #3+18 beq _gl_up cmp #4+18 beq _gl_up _gl_2up lda #$40 jsr _rozp jmp _battle _gl_up lda #$39 jsr _rozp _battle lda butla jsr _Y_rozpisz lda #$39 jsr _rozp lda #$40 jsr _rozp rts _upbyte dta b(0) glowa dta b(0) butla dta b(0) _jmpposition dta b(0) _st_move dta b(0) _arh_kolision equ * lda #$38 sta _upbyte jsr _arl_kolision cmp #0 bne _arhex inc _pos_X _arhex rts _alf_kolision equ * lda #$41 sta _upbyte jsr _arl_kolision cmp #0 bne _alfex dec _pos_X _alfex rts _arl_kolision equ * lda _upbyte jsr _X_rozpisz lda #$1d-1 jsr _Y_rozpisz jsr _loc sta _upbyte lda #$1+1 jsr _rozpY lda #$1+16 jsr _rozpY rts _stand equ * lda _jmp_counter cmp #23 beq _st67 cmp #30 bne _st2 _st67 lda _old_joy and #%11111110 beq _st2 lda _faza_nr *zabezpieczenie przed naskokiem na cmp #8 *krawedz wysokiej sciany bcs _st9 lda #$41 sta _upbyte jsr _arl_kolision cmp #0 bne _st2 beq _st8 _st9 lda #$38 sta _upbyte jsr _arl_kolision cmp #0 bne _st2 _st8 lda #1 jsr _Y_2rozpisz lda _faza_nr cmp #8 bcs _st_left lda #$41 jsr _X_rozpisz jsr _loc sta _upbyte jmp _st _st_left lda #$38 jsr _X_rozpisz jsr _loc sta _upbyte _st lda _upbyte cmp #0 beq _st2 lda _jmp_counter cmp #30 beq _st64 lda _pos_Y sec sbc #16 sta _pos_Y _st64 lda #4 (4 kroki) sta _st_move (po naskoczeniu na element) lda #0 sta _jmp_counter sta _jmp_Yposition lda _old_joy and #%11111110 sta _old_joy _st2 rts _loc equ * ldy _posY ldx _posX jsr locate jsr rozpelement rts _rozp equ * jsr _X_rozpisz jsr _loc ora _upbyte sta _upbyte rts _rozpY equ * jsr _Y_rozpisz jsr _loc ora _upbyte sta _upbyte rts __nodrop jmp _nodrop _drop equ * sta drop_up lda _jmp_counter cmp #0 bne __nodrop lda #1 jsr _Y_rozpisz lda _faza_nr cmp #17 beq _dr3 cmp #16 beq _dr4 cmp #8 bcs _dr3 _dr4 lda #$3d jmp _dr2 _dr3 lda #$3c _dr2 jsr _X_rozpisz jsr _loc bne _nodrop lda drop_up cmp #255 beq _dr6 lda drop_counter bne _dr6 lda _old_joy and #right bne _dr5 lda _old_joy and #left beq _dr98 _dr5 lda #3 jmp _dr99 _dr98 lda #5 _dr99 sta _st_move lda #4 sta drop_znacznik inc drop_counter rts _dr6 lda _pos_Y clc adc #4 sta _pos_Y inc drop_counter inc _fz0_5 lda _fz0_5 cmp #4 bne _no_machaj lda #0 sta _fz0_5 inc _faza_nr jsr _skrajna_wart _no_machaj lda drop_counter cmp #5 bcs _no_mv lda drop_up cmp #255 beq _no_mv lda drop_znacznik beq _dr10 dec drop_znacznik jmp _no_mv _dr10 lda _faza_nr cmp #8 bcs _mv_lf jsr _alf_kolision jmp _no_mv _mv_lf jsr _arh_kolision _no_mv ldy #1 rts _nodrop lda #0 sta drop_counter rts _ch_obs equ * lda _faza_nr cmp #19 beq _ccl cmp #20 beq _ccl cmp #22 beq _ccp cmp #23 beq _ccp rts _ccl lda #16 sta _faza_nr rts _ccp lda #17 sta _faza_nr rts rozpelement equ * ldx #0 rozel2 cmp eltable,x beq _nokol inx cpx #7 bne rozel2 lda #1 rts _nokol lda #0 rts eltable dta b(0),b(16),b(18),b(20),b(22),b(24),b(26) dta b(28),b(44) drop_up dta b(0) drop_counter dta b(0) drop_znacznik dta b(0) org $a400 icl 'DANE3' icl 'GAMEFONT'