home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1994 April / 64er_Magazin_94-04_1994_Markt__Technik_de_Side_B.d64 / para64.source < prev    next >
Text File  |  2022-10-26  |  10KB  |  545 lines

  1. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  2. ;   genloc parallaxing / parallaxdemo
  3. ;
  4. ;     program by michael strelecki
  5. ;
  6. ;copyright by michael strelecki in 1994
  7. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  8.  
  9.  
  10.          *= $0900
  11.          jmp start
  12.  
  13. fce2     lda #$81
  14.          sta $dc0d
  15.          lda #$2f
  16.          sta $00
  17.          lda #$37
  18.          sta $01
  19.          jsr $fda3
  20.          ldx #$1f
  21. fce4     lda $fd30,x
  22.          sta $0314,x
  23.          dex
  24.          bpl fce4
  25.          jmp $ff5b
  26.  
  27. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  28.  
  29. bcolour  = $8f00
  30. hin      = $f6
  31. vor      = $f8
  32.  
  33. ready    .byte 0
  34. limove   .byte 0
  35. remove   .byte 0
  36. d16      .byte 0
  37. d18      .byte 0
  38. coltakt  .byte 0
  39. bank     .byte 0
  40. scr2     .byte 0
  41. scr      .byte 0
  42. pseu     .byte 0
  43. scrflag  .byte 0
  44. colflag  .byte 0
  45.  
  46. d18tab   .byte 8,$1c
  47. screentab .byte $40,$44
  48.  
  49.  
  50. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  51.  
  52. start    jsr fce2    ;init
  53.          lda #$00
  54.          sta $d011
  55.          sta $d020
  56.          tax
  57.  
  58. a0       lda #$00    ;beide bildschirme
  59. a1       sta $4000,x ;loeschen
  60.          inx
  61.          bne a1
  62.          inc a1+2
  63.          lda a1+2
  64.          cmp #$48
  65.          bcc a0
  66.  
  67.          sei         ;set irq
  68.          lda #$36
  69.          sta $01
  70.          lda #$01
  71.          sta $d01a
  72.          sta $dc0d
  73.          lda #<irq
  74.          sta $0314
  75.          lda #>irq
  76.          sta $0315
  77.          lda #$fc
  78.          sta $d012
  79.          lda #$00
  80.          sta $d011
  81.          lda #$96    ;bank 1
  82.          sta $dd00
  83.          jsr parainit
  84.          cli
  85.  
  86.  
  87. ;direktmodus
  88. ;berechnung von colourram und screen (!)
  89.  
  90. wait     lda colflag    ;colourram blitt
  91.          beq x
  92.          jsr coblit
  93. x        lda scrflag    ;screen blitten?
  94.          beq wait
  95.          jsr scblit
  96.          jmp wait
  97.  
  98. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  99.  
  100. parainit lda #$08    ;registerinit
  101.          sta pseu
  102.          lda #$00
  103.          sta d16
  104.          sta remove
  105.          sta limove
  106.          lda #$40
  107.          sta scr2
  108.          lda #$44
  109.          sta scr
  110.  
  111.          lda #<$8078 ;startposition
  112.          sta hin
  113.          lda #>$8078
  114.          sta hin+1
  115.          lda #<$91f0
  116.          sta vor
  117.          lda #>$91f0
  118.          sta vor+1
  119.  
  120.          ldy #$00    ;screeninit
  121.          jsr sinit
  122.          jsr scblit
  123.          lda #$44
  124.          sta scr2
  125.          lda #$40
  126.          sta scr
  127.          ldy #$00
  128.          jsr sinit
  129.          jsr scblit
  130.          jsr coblit
  131.          lda #$00
  132.          sta ready
  133.          lda #$07
  134.          sta $05
  135. sch      jsr redo
  136.          lda scrflag
  137.          beq sch1
  138.          jsr scblit
  139. sch1     lda colflag
  140.          beq sch2
  141.          jsr coblit
  142. sch2     dec $05
  143.          bpl sch
  144.          lda #$40
  145.          sta scr2
  146.          lda #$44
  147.          sta scr
  148.          lda #$00    ;mainflag init
  149.          sta scrflag
  150.          sta colflag
  151.          sta ready
  152.          rts
  153.  
  154. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  155.  
  156. scblit   ldx #17     ;screen blitten
  157. sch7     ldy #39
  158. vorne    lda $1111,y
  159.          bne screen
  160. hinten   lda $1111,y
  161. screen   sta $1111,y
  162.          dey
  163.          bpl vorne
  164.  
  165.          lda vorne+1 ;naechste zeilen
  166.          clc
  167.          adc #$68
  168.          sta vorne+1
  169.          lda vorne+2
  170.          adc #$01
  171.          sta vorne+2
  172.  
  173.          lda hinten+1
  174.          clc
  175.          adc #$c8
  176.          sta hinten+1
  177.          bcc ueb
  178.          inc hinten+2
  179.  
  180. ueb      lda screen+1
  181.          clc
  182.          adc #$28
  183.          sta screen+1
  184.          bcc ueb1
  185.          inc screen+2
  186.  
  187. ueb1     dex         ;alle zeilen?
  188.          bpl sch7
  189.  
  190.          lda ready
  191.          ora #$01
  192.          sta ready
  193.          inx
  194.          stx scrflag
  195. outi2    rts
  196.  
  197. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  198.  
  199. bankswap lda colflag ;screenwechsel
  200.          ora scrflag
  201.          bne outi2
  202.          lda bank
  203.          tay
  204.          eor #$01
  205.          sta bank
  206.          tax
  207.          lda screentab,y
  208.          sta scr
  209.          lda d18tab,x
  210.          sta pseu
  211.          lda screentab,x
  212.          sta scr2
  213.          lda #$01    ;impuls colourram
  214.          sta colflag
  215.          rts
  216.  
  217. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  218.  
  219. coblit   lda scr2    ;colourram blitten
  220.          sta mix+2
  221.          ora #$02
  222.          sta block2+2
  223.          lda #$d8
  224.          sta cram+2
  225.          ldx #$01
  226.          stx $02
  227.          dex
  228.          stx coltakt
  229. mix      ldy $4000,x
  230.          lda bcolour,y
  231. cram     sta $d800,x
  232.          inx
  233.          bne mix
  234.          inc mix+2
  235.          inc cram+2
  236.          dec $02
  237.          bpl mix     ;$0200 bytes?
  238.  
  239. block2   ldy $4200,x ;restliche $d0
  240.          lda bcolour,y
  241.          sta $da00,x
  242.          inx
  243.          cpx #$d0
  244.          bne block2
  245.          lda #$00
  246.          sta colflag
  247.          rts
  248.  
  249. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  250.  
  251. sinit    lda vor     ;blitroutinen init
  252.          sta vorne+1
  253.          lda vor+1
  254.          sta vorne+2
  255.          lda hin
  256.          sta hinten+1
  257.          lda hin+1
  258.          sta hinten+2
  259.          lda #$00
  260.          sta screen+1
  261.          lda scr
  262.          sta screen+2
  263.          rts
  264.  
  265. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  266. ;irqmodus
  267. ;impulsgeber(!)
  268.  
  269.  
  270. irq      lda #$0f    ;obere farben
  271.          sta $d021
  272.          lda #$0b
  273.          sta $d022
  274.          lda #$0c
  275.          sta $d023
  276.  
  277.          jsr moving
  278.  
  279.          lda coltakt
  280.          cmp #$04
  281.          bcc doff
  282.          lda #$01    ;impuls colourram
  283.          sta colflag
  284. doff
  285.          lda d16     ;d16 softscroll->
  286.          and #$04    ;d18 softscroll
  287.          lsr a
  288.          ora pseu
  289.          sta d18
  290.  
  291.          lda d18
  292.          sta $d018
  293.          lda d16
  294.          ora #$10
  295.          sta $d016
  296.  
  297.          lda #$1b
  298.          sta $d011
  299.          lda #<irq1
  300.          sta $0314
  301.          lda #>irq1
  302.          sta $0315
  303.          lda #$aa
  304.          sta $d012
  305.          inc $d019
  306.          jmp $ea81
  307.  
  308. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  309.  
  310. irq1     ldx #$03
  311. x1       dex
  312.          bpl x1
  313.          lda #$0d    ;untere farben
  314.          sta $d021
  315.          lda #$09
  316.          sta $d022
  317.          lda #$0c
  318.          sta $d023
  319.  
  320.          lda #<irq
  321.          sta $0314
  322.          lda #>irq
  323.          sta $0315
  324.          lda #$fc
  325.          sta $d012
  326.          inc $d019
  327.          jmp $ea81
  328.  
  329. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  330.  
  331. moving   lda remove
  332.          ora limove
  333.          bne abfrage
  334.          lda coltakt
  335.          cmp #$02
  336.          bcc abfrage
  337.          inc coltakt
  338.          rts
  339.  
  340. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  341.  
  342. joystick ldx #$00    ;joystickabfrage
  343.          stx limove
  344.          stx remove
  345.          inc coltakt
  346.          inx
  347.          lda #$ff
  348.          sta $dc00
  349.          lda $dc00
  350.          lsr a
  351.          lsr a
  352.          lsr a
  353.          bcs clix
  354.          stx limove
  355.          ldy #$00
  356. clix     lsr a
  357.          bcs nojoy
  358.          stx remove
  359.          ldy #$01
  360. nojoy    rts
  361.  
  362. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  363.  
  364. abfrage  jsr joystick
  365.          lda remove  ;joystick-aktion?
  366.          bne redo
  367.          lda limove
  368.          bne lido0
  369.          rts
  370. lido0    jmp lido
  371.  
  372. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  373.  
  374. redo     lda ready   ;rechts scrollen
  375.          bmi onni
  376.          lda #$80
  377.          sta ready
  378.          lda bank
  379.          beq outi
  380.          inc hin
  381.          bne outi
  382.          inc hin+1
  383. outi     rts
  384.  
  385.  
  386. onni     tay
  387.          lda scrflag
  388.          ora colflag
  389.          bne links
  390.          tya
  391.          and #$01
  392.          bne links
  393.          lda #$01    ;impuls screen
  394.          sta scrflag
  395.          jsr sinit
  396.  
  397. links    lda vor     ;rechtes ende?
  398.          cmp #$42
  399.          bne dolinks
  400.          lda vor+1
  401.          cmp #$92
  402.          bne dolinks
  403.          lda #$00
  404.          sta remove
  405.          rts
  406.  
  407. dolinks  lda d16     ;softscroll
  408.          bne dool
  409.          tay
  410.          lda scrflag
  411.          ora colflag
  412.          bne outi
  413.          tya
  414. dool     sec
  415.          sbc #$02
  416.          and #$07
  417.          sta d16
  418.          cmp #$06
  419.          beq rhard
  420.          rts
  421.  
  422.  
  423. rhard    lda ready   ;hardscroll?
  424.          and #$01
  425.          beq bk3
  426.          lda scrflag
  427.          ora colflag
  428.          bne bk3
  429.          inc vor
  430.          bne bk1
  431.          inc vor+1
  432. bk1      lda bank
  433.          bne bk2
  434.          inc hin
  435.          bne bk2
  436.          inc hin+1
  437. bk2      lda #$80
  438.          sta ready
  439.          jmp bankswap
  440.  
  441. bk3      lda #$00
  442.          sta d16
  443.          rts
  444.  
  445. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  446.  
  447. lido     lda ready   ;links scrollen
  448.          bpl bum1
  449.          lda bank
  450.          beq bum
  451.          lda hin
  452.          sec
  453.          sbc #$01
  454.          sta hin
  455.          bcs bum
  456.          dec hin+1
  457. bum      lda #$00
  458.          sta ready
  459.          rts
  460.  
  461. bum1     ldy scrflag
  462.          bne rechts
  463.          and #$01
  464.          bne rechts
  465.          ldy #$01    ;impuls screen
  466.          sty scrflag
  467.          jsr sinit
  468.          jsr setl
  469.  
  470. rechts   lda vor     ;linkes ende?
  471.          bne dorechts
  472.          lda vor+1
  473.          cmp #$91
  474.          bne dorechts
  475.          lda #$00
  476.          sta limove
  477. outi1    rts
  478.  
  479.  
  480. dorechts lda d16     ;softscroll
  481.          cmp #$06
  482.          bne sch8
  483.          tay
  484.          lda scrflag
  485.          ora colflag
  486.          bne outi1
  487.          tya
  488. sch8     clc
  489.          adc #$02
  490.          and #$07
  491.          sta d16
  492.          beq lhard
  493.          rts
  494.  
  495. lhard    lda ready   ;hardscroll?
  496.          and #$01
  497.          beq tuffy
  498.          lda scrflag
  499.          ora colflag
  500.          bne tuffy
  501.  
  502.          lda vor
  503.          sec
  504.          sbc #$01
  505.          sta vor
  506.          bcs xeni
  507.          dec vor+1
  508. xeni
  509.          lda bank
  510.          bne scini
  511.          lda hin
  512.          sec
  513.          sbc #$01
  514.          sta hin
  515.          bcs scini
  516.          dec hin+1
  517. scini    lda #$00
  518.          sta ready
  519.          jmp bankswap
  520.  
  521. tuffy    lda #$06
  522.          sta d16
  523.          rts
  524.  
  525. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  526.  
  527. setl     lda vorne+1
  528.          sec
  529.          sbc #$02
  530.          sta vorne+1
  531.          bcs popl
  532.          dec vorne+2
  533. popl     lda bank
  534.          bne posty
  535.          lda hinten+1
  536.          sec
  537.          sbc #$01
  538.          sta hinten+1
  539.          bcs posty
  540.          dec hinten+2
  541. posty    rts
  542.  
  543. ;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  544.  
  545.