Advertisement
yugorin

Source RasterPump release Silesia 2017

Oct 27th, 2017
686
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. :BasicUpstart2(main)
  2. //----------------------------------------------------------
  3. // Code for creating the breakpoint file sent to Vice.
  4. //----------------------------------------------------------
  5. .var _useBinFolderForBreakpoints = cmdLineVars.get("usebin") == "true"
  6. .var _createDebugFiles = cmdLineVars.get("afo") == "true"
  7. .print "File creation " + [_createDebugFiles
  8.     ? "enabled (creating breakpoint file)"
  9.     : "disabled (no breakpoint file created)"]
  10. .var brkFile
  11. .if(_createDebugFiles) {
  12.     .if(_useBinFolderForBreakpoints)
  13.         .eval brkFile = createFile("bin/breakpoints.txt")
  14.     else
  15.         .eval brkFile = createFile("breakpoints.txt")
  16. }
  17. .macro break() {
  18. .if(_createDebugFiles) {
  19.     .eval brkFile.writeln("break " + toHexString(*))
  20.     }
  21. }
  22. //------------------------------------------------------
  23.  
  24. // For C64Debugger v0.54 (2016/09/03)
  25. .macro setbkg(color) {
  26. .if(_createDebugFiles) {
  27.     .eval brkFile.writeln("setbkg " + toHexString(*) + " " + color)
  28.     }
  29. }
  30.  
  31. //Because Kick Assembler has to be run with the -afo switch to be able to write breakpoints to a file, we can use this to enable "debugger" specific code when build with Shift-F7 or Shift-F5, ie:
  32.  
  33. .const debug = cmdLineVars.get("afo") == "true"
  34.  
  35. .if (debug) {
  36.   inc $d020
  37. }
  38.  
  39. .label border_color = $d020
  40. .label screen_memory = $0400
  41. .label memory_setup_register = $d018
  42.  
  43. .label screen_control_register1 = $d011
  44. .label vic2_rasterline_register = $d012
  45. .label character_rom = $d000
  46. .const scrollLine = $0400+23*40
  47.  
  48.  
  49. * = $af2 "Zmienne"
  50. licznik:
  51. .byte $0
  52. gora:
  53. .byte $0
  54. licznik2:
  55. .byte $1
  56.  
  57. licznik3:
  58. .byte $1
  59. predkosc:
  60. .byte $0
  61.  
  62. * = $900 "program"
  63.  
  64. main:
  65.        
  66. //  jsr $e544
  67. //:break()
  68.  
  69. lda #$00
  70. tax
  71. tay
  72. jsr $1000
  73.  
  74.             lda ' '
  75.             ldx #$0
  76. clear:          sta $0400,x
  77.             sta $0500,x
  78.             sta $0600,x
  79.             sta $0700,x
  80.             inx
  81.             bne clear
  82.            
  83.         lda #BLACK
  84.         sta $d020
  85.         sta $d021
  86.         sei      
  87.  
  88.         lda #$7f
  89.         sta $dc0d
  90.         sta $dd0d
  91.  
  92.  
  93.         lda $dc0d
  94.         lda $dd0d
  95.  
  96.  
  97.         lda #$01
  98.         sta $d01a
  99.  
  100.         lda #$47
  101.         sta $d012
  102.  
  103.         lda #$1b
  104.         sta $d011
  105.  
  106.  
  107. //      lda #$35  
  108.     //  sta $01  
  109. //:break()
  110.  
  111.     lda #<irq  
  112.     sta $0314  
  113.     lda #>irq  
  114.     sta $0315  
  115.  
  116.  
  117.     cli //
  118. //:break()     
  119.     //rts   //
  120.     //  cli    
  121.        
  122.         jmp *  
  123.            
  124.            
  125.  irq:  
  126.        
  127.                
  128. //:break()
  129.  
  130. //:break()
  131.         jsr setsprites
  132.                 lda #$2f
  133. sta $d012
  134. cmp $d012
  135. bne*-3
  136. lda $1645  
  137. cmp #5 
  138. bcc skippo 
  139. :break()
  140.  
  141. lda $d020  
  142. eor #$02   
  143. sta $d020  
  144. //:break()
  145.  
  146. skippo:
  147.  
  148.          jsr $1003
  149.        
  150. //:break()
  151.          
  152.         inc $d019          
  153.          linia1:
  154.         lda #$6b    // zaladuj do akku $6b
  155. !loop:     
  156.  
  157.         cmp $d012       // porownaj z rejestrem rastra
  158.         bne !loop-      // Branch Not Equal? to lec do loop i czekaj dalej
  159.  
  160.  
  161. //:break()
  162.         bit $00         // ok mamy 6B. Te bit $00 i nop nie robia nic poza docyklowaniem rastra. bit $00 ma 3 cykle
  163.         bit $00            
  164.         bit $00
  165.         bit $00
  166.         bit $00
  167.         nop             // nop ma 2 cykle
  168.        
  169.         ldy #$00        // tu zaczyna sie petla zaladuj do rejestru y = 0
  170. !kolor:        
  171. //:break()
  172.         ldx kolor,y         // zaladuj pierwszy bajt z tablicy kolor + y
  173.         stx $d021           // zapisz w rejestrze obrazu (paper). Ta instrukcja wykonuje sie caly czas, az do nastepnego kolory
  174.         ldx tablica,y       // zaladuj pierwszy bajt z tablicy cyklowania (jedna linijka to 63 cykle co 8 linii)
  175. !loop:  dex                 // wartosc Y jest np. 8 - czyli petla ma sie wykonac 8 razy, zeby przelecialo 63 cykle
  176.         bne !loop-          // Y = 0? Nie idz do loop- (czyli pierwsze na gorze)
  177.         iny                 // Tak? Zwieksz Y
  178.         cpy #$24            // Czy Y=$24?
  179.         bne !kolor-         // Nie - idz i wez kolejny kolor z tablicy kolorow jak i z tablicy opoznien
  180. linia2:    
  181.  
  182.         lda #$94                // bylo juz Y=24? to zaladuj $90
  183.         sta $d012               // i zapisz w rejestrze rastra
  184.  !loop:
  185.         cmp $d012               // i znow sprawdz czy jest $90, nie to czekaj tak to
  186.         bne !loop-
  187.        
  188.        
  189.         nop
  190.         bit $00
  191.         bit $00
  192.         bit $00
  193.         bit $00
  194.         bit $00
  195.         bit $00
  196.         bit $00
  197.         bit $00
  198.         bit $00
  199.         bit $00
  200.         bit $00
  201.         bit $00
  202.         bit $00
  203.         bit $00
  204.         bit $00
  205.         bit $00
  206.        
  207.         lda #BLACK
  208.         sta $d021
  209.         sta $d020
  210.         pla                 // te sa niewazne dla Ciebie
  211.         tay
  212.         pla
  213.         tax
  214.         pla
  215.  
  216. sprajt_gora:       
  217.         lda #$80
  218.         sta $07f8      
  219.                
  220. kopia_gora:
  221. //:break()
  222.     lda licznik2
  223.     beq startuj_gora
  224.     jmp czekaj
  225. przesuniecie_gora:
  226. startuj_gora:  
  227.     ldy #10                
  228. !loop:
  229.     lda gora
  230.     cmp #1
  231.     //beq przesuniecie_dol
  232.     beq sprajt_dol
  233.  
  234. x1:    
  235.  
  236. copy:       lda kolor,y
  237.  
  238.            
  239.        
  240.         sta kolor-1,y
  241.         iny
  242.         cpy #26
  243.         bne !loop- 
  244.         inc licznik
  245.         lda licznik
  246.         cmp #10    
  247.         bne wyjscie_irq_gora
  248.  
  249.         inc gora
  250.         lda gora       
  251.         cmp #1     
  252.         beq wyjscie_irq_zwykle_gora
  253.  
  254.  
  255. sprajt_dol:    
  256.         lda #$83
  257.         sta $07f8
  258.                
  259. przesuniecie_dol:
  260. //:break()
  261.     lda licznik3
  262.     beq startuj_dol
  263.     jmp czekaj3
  264.  
  265. kopia_dol:
  266.    
  267.  
  268. startuj_dol:   
  269.     ldy #16
  270. !loop:
  271.     lda gora
  272.     cmp #0
  273.     beq sprajt_gora
  274. //  beq przesuniecie_gora
  275.    
  276. x2:
  277.         lda kolor-2,y
  278.         sta kolor-1,y
  279.         dey
  280.         cpy #00
  281.         bne !loop- 
  282.         inc licznik
  283.         lda licznik
  284.         cmp #10    
  285.         bne wyjscie_z_irq_dol
  286.  
  287.         dec gora
  288.         lda gora       
  289.         cmp #0     
  290.         beq wyjscie_irq_zwykle_dol  
  291.    
  292.  
  293. wyjscie_irq_gora:
  294.        
  295.     dec x1+1
  296.     dec x1+4
  297.     lda predkosc
  298.     sta licznik2
  299. jsr mainProg
  300.  
  301.     rti
  302.  
  303. wyjscie_z_irq_dol:
  304.     inc x2+1
  305.     inc x2+4
  306.     lda predkosc
  307.     sta licznik3
  308.     rti
  309.  
  310. wyjscie_irq_zwykle_dol:
  311.     lda #0
  312.     sta licznik
  313.     lda #$e0
  314.     sta x1+1
  315.     lda #$df
  316.     sta x1+4
  317.     rti
  318.  
  319. wyjscie_irq_zwykle_gora:
  320.     lda #0
  321.     sta licznik
  322.     lda #$de
  323.     sta x2+1
  324.     lda #$df
  325.     sta x2+4
  326.     rti
  327.  
  328. czekaj:
  329.         dec licznik2   
  330.         rti
  331.  
  332. czekaj3:   
  333.         dec licznik3   
  334.         rti
  335.    
  336.         * = $c000 "Scroll"
  337.  
  338. mainProg:   {                          
  339. muza:
  340. //          sei
  341. //          lda #$17
  342.     //      sta $d018
  343.             lda #$1e
  344.             sta $d018
  345.            
  346.            
  347. loop1:      lda #$e9                           
  348.             cmp $d012
  349.             bne loop1
  350.             jsr setScrollD016
  351. //      lda $1645      
  352. //      cmp #5 
  353. //      bcc x      
  354.                
  355. //white:    lda #WHITE     
  356. //      sta $d021
  357.        
  358.                
  359. //x:   
  360.            
  361.  
  362. loop2:      lda #$ff                           
  363.             cmp $d012
  364.             bne loop2
  365. //:break()
  366.            
  367.             lda #$c8
  368.             sta $d016
  369.            
  370.             jsr moveScroll
  371.            
  372. //          jmp loop1
  373. }
  374. //----------------------------------------------------
  375. //          Scroll
  376. //----------------------------------------------------
  377.  
  378. setScrollD016:  {
  379. //:break()
  380.  
  381. value:      lda #0                                 
  382.             and #$07
  383.             ora #$c0
  384.             sta $d016
  385.             rts        
  386. }
  387.  
  388. moveScroll: {
  389.             // Step d016
  390.             dec setScrollD016.value+1              
  391.             dec setScrollD016.value+1              
  392.             lda setScrollD016.value+1
  393.             and #$07
  394.             cmp #$06
  395.             bne exit
  396. //brreak()         
  397.            
  398.             ldx #0
  399. loop1:      lda scrollLine+1,x                 
  400.             sta scrollLine,x
  401.             inx
  402.             clc
  403.             adc #64
  404.             sta scrollLine+39,x
  405.             cpx #39
  406.             bne loop1
  407.            
  408.            
  409. count:      ldx #0
  410.             lda text,x
  411.             sta scrollLine+39  
  412.             inx
  413. //:break()
  414.             txa
  415.             tay
  416.             lda drugie255
  417.             cmp #$ff
  418.             beq drugisc
  419.             cpy #$ff
  420.             bne do255
  421.             sty drugie255
  422.             lda drugie255
  423.             cmp #$ff
  424.             bne do255
  425.             sty drugie255
  426.  
  427. //:break()         
  428. drugisc:    lda text+255,x
  429.             cmp #$ff
  430.             bne over2
  431.             inx
  432.             lda #$01
  433.             sta count+3
  434. over2:     
  435.             lda #$ff
  436.             sta count+3
  437.             inx
  438.             stx count+1
  439.            
  440.             rts
  441.            
  442. do255:      lda text,x
  443.             cmp #$ff
  444.             bne over1
  445.             sta drugie255
  446.             ldx #0
  447. over1:      stx count+1
  448.    
  449. exit:       rts
  450. drugie255:
  451.         .byte $0
  452. * = $3000          
  453. text:       .text "umiem scrolowac duze fonty! hura! nie smiac sie! ucze sie asm. widzicie, jak ciezko mi przesuwac taki duzy scroll? rasterbar pompka skutecznie pomaga, zeby scroll jakos dojechal do konca :p yugorin of samar dziekuje za pomoc dkt,isildur,slajerek,broneck              e n d"
  454.  
  455. //"scroll zrobiony na gravity 2017 wsrod krwiozerczych atarowcow. Mechowte (64bites) dlubal gre o zebrach a ja mam 8x16 font scroll.... umiem wyswietlac i skrolowac duze fonty!!! huraaaa... Wiem, wiem, moze to i smieszne, ale jestem na poczatku drogi. Sami widzicie, jak ciezko przesuwac taki scroll, ale ten ruszajacy sie rasterbar (nauczylem sie tego tydzien temu) skutecznie pomaga, zeby scroll jakos dojechal do konca :P :P. Dziekuje za pomoc dkt, isildurowi, slajerkowi i mojemu bratu broneckowi (kurde, broneck.. mlody! moze jakas inna ksywka? ciezko to odmienic :P                           "
  456.  
  457. }
  458. * = $3350
  459. setsprites:
  460.  
  461.     lda #%00000001  //;how many sprites on screen - ka?dy bit=jeden sprajt
  462.     sta $d015
  463.     lda #$00
  464.     sta $d010
  465.    
  466.     lda #0
  467.     sta $d01b      
  468.     sta $d01c      
  469.    
  470.     lda #$ff    //;ff= wszystkie du?e, 00=wszystkie ma?e
  471.     sta $d017   //;Y Expand czy powi?skzone w Y
  472.     sta $d01d   //;X Expand czy powi?skzone w X
  473.    
  474.     //lda #$80  //;gdzie jest sprite = $0900 i pierwsza klatka animacji
  475.     //sta $07f8 //;pierwszy sprite
  476.    
  477.     //;colors
  478.     lda #$0a
  479.     sta $d027
  480.  
  481.    
  482.     lda #$a0    //;pozX sprajta#1 na ekranie       
  483.     sta $d000
  484.     lda #$40    //;pozY #1
  485.     sta $d001
  486.     rts
  487.  
  488. .pc = $3802 "Font 1"
  489. .import c64 "font.c64"
  490. *=$1000 "Muzyka"
  491. .import binary "pompka.sid", $7c+2
  492. *=$2000 "sprajty"
  493. .import binary "pompasprites.bin"
  494.  
  495.        
  496.    
  497. * = $0ce0 "Kolory"
  498. kolor:
  499.         .byte 0,0,0,0,0,0,0,0,0,0,2,10,8,7,1,1,7,8,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  500.        
  501.  
  502. * = $c00 "Tablica cyklowania"      
  503. tablica:       
  504.         .byte 8,9,9,9,9,9,9,1,8,9,9,9,9,9,9,1,8,9,9,9,9,9,9,1,8,9,9,9,9,9,9,1,8,9,9,9,9,9,9,1,8,9,9,9,9,13,9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement