home *** CD-ROM | disk | FTP | other *** search
/ ArachnoPhobia 30 / ArachnoPhobia_30_2003-11-01_Raiders_of_the_Lost_Empire_Spiders-Crew_The_ArachnoPhobia_Staff.d64 / rast+showpic.seq < prev    next >
Text File  |  2023-02-26  |  8KB  |  269 lines

  1.  
  2. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  3. ;showmpic.src
  4. ;
  5. ;a routine that displays art studio's
  6. ;multi-hires pictures (.mpic).
  7. ;
  8. ;(change the address used below for
  9. ;viewing koala paint pictures)
  10. ;
  11. ;last modified on 14.10.2003
  12. ;coded by stirf/spiders-crew/role
  13. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  14. ;art studio pic present at $2000..$4711,
  15. ;load "beast city  mpic" for example
  16.  
  17. ;constances...
  18.  
  19. scrline  = $0c ;line yposition of scroll
  20. scrolltext = $4800  ;where text is at
  21.  
  22. kcol     = $4338 ;colordata! koala=$4328
  23. kscr     = $3f40 ;screendata! (chars)
  24.  
  25.          *= $4800 ;based not at default!
  26.                   ;because that is $2000
  27. ;init...
  28.  
  29.          lda #$00  ;00 to $d011 via accu
  30.          sta $d011 ;to turn off screen
  31.          sta $d020 ;border: black ($00)
  32.          sta $d021 ;screen set black too
  33.  
  34.          lda #$00 ;set accu to #$00
  35.          tax      ;set x-reg to accu
  36.          tay      ;set y-reg to accu
  37.          jsr $1000 ;do music-init
  38.  
  39. ;routine usage...
  40.  
  41.          jsr scrollinit ;initialisation
  42.          jsr getmpic ;get mpic-data 1st!
  43.  
  44.          jsr newrastirq ;use the routine
  45.          jsr showpic ;view multi hires
  46.  
  47. ;additional...
  48.  
  49. wait
  50.          lda $dc01;read keyboard direct
  51.          cmp #$7f ;run/stop check
  52.          bne wait ;if not try again
  53.  
  54.          jmp $9000;back to assembler
  55. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  56. showpic   ;vic settings!
  57.          lda #$18 ;use $18 and $3b
  58.          sta $d016;to set c64-vic up to
  59.          sta $d018;view multi-coloured
  60.          lda #$3b ;high resolution
  61.          sta $d011;pictures
  62.          rts ;end of vic settings
  63. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  64. getmpic   ;get screen+colour data!
  65.          ldx #$00    ;start with x=0
  66.  
  67. gdat     lda kcol,x ;first get colordata
  68.          sta $d800,x;place at colormem
  69.          lda kscr,x ;then get screendata
  70.          sta $0400,x;place on screen
  71.          inx         ;x=x+1
  72.          cpx #<$07e8 ;check x=$e8 (lo)
  73.          beq lastpos ;if $e8 check hi
  74.          cpx #$00  ;check x=0
  75.          bne gdat  ;not 0 is continue
  76.  
  77.          inc gdat+2 ;incr #>kcol,x
  78.          inc gdat+5 ;incr #>$d800,x
  79.          inc gdat+8 ;incr #>kscr,x
  80.          inc gdat+11;incr #>0400,x
  81.          jmp gdat  ;always continue
  82. lastpos
  83.          lda gdat+11 ;check is #>$0400
  84.          cmp #>$07e8 ;has become #>$07xx
  85.          bne gdat    ;if not continue
  86.          rts ;last line is reached
  87. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  88. ;irqscroller.seq (only the subroutines )
  89. ;
  90. ;newrastirq and the charscroller
  91. ;modified.
  92. ;"!new!" mark a modification!
  93. ;
  94. ;usable scroller effect with music.
  95. ;
  96. ;last modified on 8.6.2003
  97. ;coded by stirf/spiders-crew/role
  98. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  99. scrollinit
  100.          jsr setvic38c;$c0 to $d016
  101.          jsr maketext ;convert text
  102.          jsr getstart ;set start
  103.          rts ;end scrollinit subroutine
  104. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  105. setvic38c ;setup vic for scroll
  106.          lda #$c0  ;bit3=38col bit 2,1,0
  107.          sta $d016 ;=VICaddress 4 scroll
  108.          rts ;end setvic38c subroutine
  109. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  110. maketext
  111.          ldx #$00   ;make x-register 0
  112. ad1      lda text,x ;load original text
  113.  
  114.          cmp #$40   ;compare original to
  115.          bcc ad2    ;$40 if beneath=>ok!
  116.  
  117.          cmp #$80   ;compare original to
  118.          bcs ad2    ;$80 ($40..$80!!) if
  119.          sec        ;so subtract $40.
  120.          sbc #$40   ;$41 will become $01
  121.  
  122. ad2      sta scrolltext,x ;overwrite old
  123.          beq done   ;@($00)-sign is wrap
  124.          inx        ;next char
  125.          bne ad1    ;continue conversion
  126.          inc ad1+2  ;if x=$ff=>$00 then
  127.          inc ad2+2  ;increase hi-bytes
  128.          jmp ad1    ;of addies, continue
  129. done     rts ;end maketext subroutine
  130. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  131. getstart
  132.          lda #$00         ;set counter
  133.          sta counter+1    ;to 0
  134.          lda #<scrolltext ;set lobyte of
  135.          sta textaddy+1   ;address text-
  136.          lda #>scrolltext ;addy and hi-
  137.          sta textaddy+2   ;byte to begin
  138.          rts              ;end subrout.
  139. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  140. scroller           ;actual scroller
  141. tab      ldx #$00  ;start with 1st tab-
  142.          lda tab+1 ;position (=pos.)
  143.          clc       ;add speed to tabpos.
  144.          adc #$02  ;speed=>1,2,4 or 8
  145.          sta tab+1 ;try it!
  146.  
  147.          cpx #$08     ;if tab-pos.8 isnt
  148.          bcc nextbits ;reached continue
  149.  
  150.          ldx #$00   ;start over table
  151.          stx tab+1  ;by setting tab to 0
  152.  
  153.          jsr pulltext   ;moves text and
  154.          jsr putnewchar ;adds new char
  155.          jmp tab ;do scroller-routine
  156. nextbits
  157.          lda scrolltab,x ;set scrollpos.
  158.          sta scrollreg ;!new!/was $d016
  159.          rts ;end scroller routine
  160.  
  161. scrolltab
  162.          .byte $c7,$c6,$c5,$c4 ;scroll-
  163.          .byte $c3,$c2,$c1,$c0 ;values
  164. scrollreg        ;!new!
  165.          .byte 0 ;!new!
  166. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  167. putnewchar
  168. counter  ldx #$00         ;ldx counter
  169. textaddy lda scrolltext,x ;get next char
  170.          bne noend        ;if not $00
  171.          jsr getstart     ;start over
  172.          jmp putnewchar   ;continue
  173. noend
  174.          sta $0400+($28*scrline)+$27
  175.          inc counter+1  ;^put new char
  176.          lda counter+1  ;next char, if
  177.          bne nohi       ;$ff=>$00 incr.
  178.          inc textaddy+2 ;high byte
  179. nohi     rts ;end putnewchar subroutine
  180. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  181. pulltext
  182.          ldx #$00 ;start left
  183. pullnext
  184.          lda $0400+($28*scrline)+1,x
  185.          sta $0400+($28*scrline),x
  186.          inx ;move x=1 to x=0,x=2 to x=1
  187.          cpx #$27 ;untill x=$27 to x=$26
  188.          bne pullnext
  189.          rts ;end pulltext subroutine
  190. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  191. text     .text "is this nice?"
  192.          .byte 0  ;example text ended
  193.                   ;with $00
  194. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  195. newrastirq
  196.          lda irqrast+1 ;wait for
  197.          clc           ;a good
  198.          adc #$80      ;moment to
  199.          cmp $d012     ;start the
  200.          bne *-3       ;raster-interrupt
  201.  
  202.          sei ;block interrupt first
  203.          lda #$35  ;set c64 to all=ram
  204.          sta $01   ;except $d000-$e000
  205.          lda #$7f
  206.          sta $dc0d
  207.          lda $dc0d ;set i/o to irq
  208.          lda #$01
  209.          sta $d019 ;initialise the
  210.          sta $d01a ;new interrupt
  211.          lda #<newirq ;give in the
  212.          sta $fffe    ;location of
  213.          lda #>newirq ;the new interrupt
  214.          sta $ffff    ;to $fffe & $ffff
  215.          lda $d011 ;reset hi-byte
  216.          and #$7f  ;of the intterupt-
  217.          sta $d011 ;irq=$00xx not $01xx
  218. irqrast  lda #$28  ;raster takes place
  219.          sta $d012 ;on raster $0028
  220.          cli ;allow the new interrupt.
  221.          rts ;end this routine
  222. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  223. newirq
  224.          pha ;push a,x,y to stack
  225.          txa ;
  226.          pha ;
  227.          tya ;
  228.          pha ;
  229.  
  230.          inc $d019 ;allow next interrupt
  231.  
  232.          lda #$c8 ;!new!normal state of
  233.          sta $d016;!new!video controller
  234.  
  235.          ldx #$06 ;make raster colour
  236.          dex      ;switch exactly right
  237.          bne *-1  ;not in the middle
  238.  
  239.          inc $d020 ;border colour+1
  240.  
  241.          jsr $1003 ;do music-play
  242.  
  243.          lda #$57  ;wait for
  244.          cmp $d012 ;raster $57.
  245.          bne *-3   ;$d012=actual raster
  246.  
  247.          lda $dc01   ;read run/stop
  248.          cmp #$7f    ;if pressed
  249.          beq runstop ;jump to "runstop"
  250.  
  251.          dec $d020 ;border colour-1
  252.  
  253.          jsr scroller;do scroller
  254.  
  255.          lda scrollreg ;!new!
  256.          sta $d016     ;!new! VIC scroll
  257.  
  258.          pla ;pull a,x,y from stack
  259.          tay ;
  260.          pla ;
  261.          tax ;
  262.          pla ;
  263.          rti ;end this interrupt
  264. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  265. runstop
  266.          jmp $9000 ;jump to assembler
  267. ;{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}
  268.  
  269.