home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 73 / 073.d81 / pipes.buddy < prev    next >
Text File  |  2022-08-26  |  23KB  |  1,401 lines

  1. ;
  2. ; source code for pipes peak
  3. ; by bob blackmer
  4. ;
  5. *=$4000
  6. ;
  7.        jsr chars
  8.        lda #0
  9.        sta $dc0b
  10.        sta $dc0a
  11.        sta $dc09
  12.        sta $dc08
  13. begin  jsr reset
  14.        jsr init
  15.        jsr draw
  16.        jsr plytun
  17.        jsr prtmsg
  18. ;
  19. loop   jsr check
  20.        jsr joystk
  21.        jsr scroll
  22.        jsr cycle
  23.        jsr delay
  24.        jsr timer
  25.        jsr $ffe1
  26.        bne loop1
  27.        jmp kil
  28. loop1  lda pos1y
  29.        cmp #6
  30.        bne qloop
  31.        lda #1
  32.        sta $d01b
  33.        inc lev
  34.        lda lev
  35.        cmp #32
  36.        bne here
  37.        jmp youwin
  38. here   jsr chime
  39.        jsr brate
  40.        jsr bonus
  41.        jsr level
  42.        jsr scroll
  43.        lda #0
  44.        sta $d01b
  45.        jsr prtmsg
  46.        jmp loop
  47. qloop  jsr $ffe4
  48.        cmp #136
  49.        bne loop2
  50.        rts
  51. loop2  lda #0
  52.        sta $c6
  53.        lda over
  54.        beq loop
  55. kil    lda #129
  56.        sta $d404
  57.        lda #224
  58.        sta $7f8
  59.        ldy #30
  60.        ldx #255
  61.        sty $d400
  62. loop3  jsr delay
  63.        inx
  64.        dey
  65.        sty $d401
  66.        lda #0
  67.        sta $3800,x
  68.        sta $381a,x
  69.        cpy #0
  70.        bne loop3
  71.        lda #128
  72.        sta $d404
  73.        lda $7ff
  74.        cmp #229
  75.        beq loop4
  76.        jsr clrmap
  77.        jsr init
  78.        jsr scroll
  79.        dec $7ff
  80.        lda #0
  81.        sta over
  82.        sta skor
  83.        jsr prtmsg
  84.        jmp loop
  85. ;
  86. loop4  ldx #0
  87. loop5  lda strg3,x
  88.        sta $6b7,x
  89.        lda #1
  90.        sta $dab7,x
  91.        inx
  92.        cpx #10
  93.        bne loop5
  94.        jsr prtmsg
  95.        jmp begin
  96. ;
  97. prtmsg ldx #0
  98. prtm   lda strg2,x
  99.        sta $617,x
  100.        lda #1
  101.        sta $da17,x
  102.        inx
  103.        cpx #10
  104.        bne prtm
  105. ;
  106. wait   lda $dc00
  107.        cmp #111
  108.        bne wait
  109.        ldx #0
  110. wait1  lda #32
  111.        sta $617,x
  112.        lda #15
  113.        sta $da17,x
  114.        inx
  115.        cpx #10
  116.        bne wait1
  117.        lda #0
  118.        sta $c6
  119.        rts
  120. ;
  121. delay  inc stat1
  122.        lda stat1
  123.        bne delay
  124.        inc stat1+1
  125.        lda stat1+1
  126. dlay   cmp #18
  127.        bne delay
  128.        lda #0
  129.        sta stat1+1
  130.        rts
  131. ;
  132. level  lda lev
  133.        cmp #16
  134.        bne level1
  135.        jsr kick
  136.        jmp level2
  137. level1 lda chng2+1
  138.        sta chng1+1
  139.        lda chng4+1
  140.        sta chng3+1
  141.        lda chng6+1
  142.        sta chng5+1
  143.        clc
  144.        lda chng2+1
  145.        adc #16
  146.        sta chng2+1
  147.        clc
  148.        lda chng4+1
  149.        adc #16
  150.        sta chng4+1
  151.        clc
  152.        lda chng6+1
  153.        adc #16
  154.        sta chng6+1
  155. level2 jsr clrmap
  156.        jsr plytun
  157.        jsr init
  158.        jsr inclev
  159.        rts
  160. ;
  161. youwin jsr chime
  162.        jsr brate
  163.        jsr bonus
  164.        lda #2
  165.        sta pos1y
  166.        jsr scroll
  167.        inc $d000
  168.        inc $d001
  169.        inc $d001
  170.        ldx #0
  171. youw1  lda strg5,x
  172.        sta $4af,x
  173.        lda #3
  174.        sta $d8af,x
  175.        inx
  176.        cpx #10
  177.        bne youw1
  178.        ldx #0
  179. yw     lda strg6,x
  180.        sta $726,x
  181.        inx
  182.        cpx #28
  183.        bne yw
  184.        lda #23
  185.        sta plymus+1
  186.        lda #22
  187.        sta mus2+1
  188.        lda #0
  189.        sta wcount
  190. youw2  jsr plywin
  191.        lda $dc00
  192.        cmp #111
  193.        bne youw3
  194.        lda #65
  195.        sta plymus+1
  196.        sta mus2+1
  197.        jmp begin
  198. youw3  ldy wcount
  199.        lda winspr,y
  200.        sta $7f8
  201.        inc wcount
  202.        lda wcount
  203.        cmp #8
  204.        bne youw2
  205.        lda #0
  206.        sta wcount
  207.        jmp youw2
  208. ;
  209. timer  lda $dc09
  210.        and #15
  211. hold   cmp #0
  212.        bne clock1
  213.        rts
  214. clock1 sta hold+1
  215.        dec $7fa
  216.        lda $7fa
  217.        cmp #228
  218.        beq clock2
  219.        rts
  220. clock2 lda #238
  221.        sta $7fa
  222.        dec $7f9
  223.        lda $7f9
  224.        cmp #228
  225.        beq clock3
  226.        rts
  227. clock3 lda #229
  228.        sta $7f9
  229.        sta $7fa
  230.        inc over
  231.        rts
  232. ;
  233. inclev lda $7ff
  234.        cmp #238
  235.        beq incl1
  236.        inc $7ff
  237. incl1  inc $7fe
  238.        lda $7fe
  239.        cmp #239
  240.        beq incl2
  241.        rts
  242. incl2  lda #229
  243.        sta $7fe
  244.        inc $7fd
  245.        rts
  246. ;
  247. reset  lda #0
  248.        sta lev
  249.        sta chng1+1
  250.        sta chng3+1
  251.        sta chng5+1
  252.        lda #16
  253.        sta chng2+1
  254.        lda #16
  255.        sta chng4+1
  256.        lda #16
  257.        sta chng6+1
  258.        ldy #229
  259.        sty $7fd
  260.        sty $7ff
  261.        iny
  262.        sty $7fe
  263.        ldy #79
  264.        sty lv1+2
  265.        iny
  266.        iny
  267.        sty lv2+2
  268.        iny
  269.        iny
  270.        sty lv3+2
  271.        iny
  272.        iny
  273.        sty lv4+2
  274.        iny
  275.        iny
  276.        sty lv5+2
  277.        iny
  278.        iny
  279.        sty lv6+2
  280.        rts
  281. ;
  282. kick   lda #0
  283.        sta chng1+1
  284.        sta chng3+1
  285.        sta chng5+1
  286.        lda #16
  287.        sta chng2+1
  288.        sta chng4+1
  289.        sta chng6+1
  290.        inc lv1+2
  291.        inc lv2+2
  292.        inc lv3+2
  293.        inc lv4+2
  294.        inc lv5+2
  295.        inc lv6+2
  296.        rts
  297. ;
  298. plytun ldy #0
  299. play   jsr plymus
  300.        inc mcount
  301.        lda mcount
  302.        cmp #16
  303.        bne play
  304.        lda #0
  305.        sta mcount
  306.        lda #64
  307.        sta $d404
  308.        sta $d40b
  309.        rts
  310. ;
  311. plywin jsr plymus
  312.        inc mcount
  313.        lda mcount
  314.        cmp #16
  315.        bne plyext
  316.        lda #0
  317.        sta mcount
  318. plyext rts
  319. ;
  320. plymus lda #65
  321.        sta $d404
  322.        sta $d40b
  323.        ldx mcount
  324.        lda note1,x
  325.        tax
  326.        lda notel,x
  327.        sta $d400
  328.        lda noteh,x
  329.        sta $d401
  330.        ldx mcount
  331.        lda note2,x
  332.        tax
  333.        lda notel,x
  334.        sta $d407
  335.        lda noteh,x
  336.        sta $d408
  337.        jsr delay
  338.        jsr delay
  339. mus2   lda #65
  340.        sta $d404
  341.        sta $d40b
  342.        rts
  343. ;
  344. ; scroll
  345. ;
  346. scroll lda pos1x
  347.        sta $fb
  348.        lda #96
  349.        sta $fc
  350.        ldx pos1y
  351.        cpx #0
  352.        beq scrll2
  353. scrll1 lda $fb
  354.        clc
  355.        adc #128
  356.        sta $fb
  357.        lda $fc
  358.        adc #0
  359.        sta $fc
  360.        dex
  361.        bne scrll1
  362. scrll2 lda #127
  363.        sta $2
  364.        lda #4
  365.        sta $3
  366.        ldx #14
  367. scrll3 ldy #25
  368. scrll4 lda ($fb),y
  369.        sta ($2),y
  370.        dey
  371.        bpl scrll4
  372.        clc
  373.        lda $2
  374.        adc #40
  375.        sta $2
  376.        lda $3
  377.        adc #0
  378.        sta $3
  379.        clc
  380.        lda $fb
  381.        adc #128
  382.        sta $fb
  383.        lda $fc
  384.        adc #0
  385.        sta $fc
  386.        dex
  387.        bpl scrll3
  388.        rts
  389. ;
  390. ; read joystick
  391. ;
  392. bye    rts
  393. ;
  394. joystk lda $dc00
  395.        cmp #127
  396.        beq bye
  397.        cmp #123 ;lt and #4
  398.        bne joy1
  399.        ldx #0
  400. ck1    lda pos1y
  401.        cmp cklr,x
  402.        beq ok1
  403.        inx
  404.        cpx #14
  405.        bne ck1
  406.        rts
  407. ok1    lda pos1x
  408.        cmp lmin,x
  409.        beq bye
  410.        dec pos1x
  411.        jsr lspr
  412.        rts
  413. joy1   cmp #119 ;rt and #8
  414.        bne joy2
  415.        ldx #0
  416. ck2    lda pos1y
  417.        cmp cklr,x
  418.        beq ok4
  419.        inx
  420.        cpx #14
  421.        bne ck2
  422.        rts
  423. ok4    lda pos1x
  424.        cmp rmax,x
  425.        beq bye
  426.        inc pos1x
  427.        jsr rspr
  428. joy2   rts
  429. ;
  430. lspr   lda $7f8
  431.        cmp #226
  432.        bne lspr1
  433.        lda #227
  434.        sta $7f8
  435.        jmp lspr2
  436. lspr1  lda #226
  437.        sta $7f8
  438. lspr2  dec curpos+1
  439.        rts
  440. ;
  441. rspr   lda $7f8
  442.        cmp #224
  443.        bne rspr1
  444.        lda #225
  445.        sta $7f8
  446.        jmp rspr2
  447. rspr1  lda #224
  448.        sta $7f8
  449. rspr2  inc curpos+1
  450.        rts
  451. ;
  452. cycle  ldy ccount
  453.        ldx #0
  454. cyc1   lda shap1,y
  455.        sta $316a,x
  456.        iny
  457.        inx
  458.        cpx #4
  459.        bne cyc1
  460.        sty ccount
  461.        cpy #16
  462.        bne cycout
  463.        ldy #0
  464.        sty ccount
  465. cycout rts
  466. ;
  467. check  lda curpos+1
  468.        sta look+1
  469.        lda curpos+2
  470.        sta look+2
  471. ;
  472. look   lda $6000
  473.        sta hit
  474.        lda look+2
  475.        sta look1+2
  476.        sec
  477.        lda look+1
  478.        sbc #128
  479.        sta look+1
  480.        sta look1+1
  481.        bcc check2
  482.        jmp look1
  483. check2 dec look+2
  484.        dec look1+2
  485. check3 dec look1+2
  486. look1  lda $6000
  487.        sta hit+1
  488.        cmp #66
  489.        bne check4
  490.        jsr goup
  491.        rts
  492. check4 lda hit
  493.        cmp #74
  494.        bne check5
  495.        jsr godn
  496.        rts
  497. check5 lda hit
  498.        cmp #45
  499.        bne check6
  500.        lda #21
  501.        sta $d40b
  502.        lda #255
  503.        sta $d408
  504.        lda curpos+1
  505.        sta got+1
  506.        lda curpos+2
  507.        sta got+2
  508.        lda #37
  509. got    sta $6000
  510.        jsr score
  511.        ldy #255
  512. got1   dey
  513.        bne got1
  514.        lda #20
  515.        sta $d40b
  516.        jsr jrate
  517. check6 rts
  518. ;
  519. goup   lda #0
  520.        sta count1
  521.        lda #129
  522.        sta $d412
  523.        lda #3
  524.        sta $d40f
  525.        lda #239
  526.        sta $7f8
  527.        lda #1
  528.        sta $d01b
  529. goup1  jsr delay
  530.        dec pos1y
  531.        jsr scroll
  532.        jsr sound1
  533.        inc count1
  534.        lda count1
  535.        cmp #6
  536.        bne goup1
  537.        lda #239
  538.