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