Advertisement
Guest User

Untitled

a guest
Apr 17th, 2011
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;....................................................................................................
  2.  
  3.  
  4.   .bank $01
  5.  
  6. ;BASE_SM1 = $3e00
  7.  
  8.   .bss
  9.       BASE_SM1: .ds (TIMER_PLAYER_END-TIMER_PLAYER)
  10.  
  11.   .code
  12.        
  13.        
  14. TIMER_PLAYER:
  15.  
  16.         ;ram
  17.  
  18.  
  19. .chn0_chk
  20.       jmp (.chn0_end_chk-TIMER_PLAYER)+BASE_SM1       ;.chn0_end_chk
  21. .chn1_chk
  22.       jmp (.chn1_end_chk-TIMER_PLAYER)+BASE_SM1       ;.chn1_end_chk
  23.                              
  24. .PCM_DRIVER
  25.         ;int call              
  26.         stz $1403
  27.         tst #$ff,$3fff
  28.         beq .do
  29.             rti
  30. .do              
  31.         pha                    
  32.                                 ; 15 cycles
  33.    
  34.         stz $800                
  35. .sm1    lda #$00                
  36. .dda0   sta $806                
  37.         lda #$01                
  38.         sta $800                
  39. .sm2    lda #$00                
  40. .dda1   sta $806                
  41.         lda #$02                
  42.         sta $800                
  43. .sm3    lda #$00                
  44. .dda2   sta $806                
  45.         lda #$03                
  46.         sta $800                
  47. .sm4    lda #$00                
  48. .dda3   sta $806                
  49.                 lda #$01
  50.                 sta $3fff
  51.         cli                    
  52.                                 ; 56 cycles
  53.  
  54. .ch0    lda #$00                
  55.         tam #$06                
  56. .sm5    lda #$00                
  57. .cn0    adc #$00                
  58.         sta (.sm5-TIMER_PLAYER)+BASE_SM1+1                
  59. .sm6    lda #$00                
  60. .cn1    adc #$00                
  61.         sta (.sm6-TIMER_PLAYER)+BASE_SM1+1              
  62. .sm7    lda #$00                
  63.         adc (.sm8-TIMER_PLAYER)+BASE_SM1+1              
  64.         sta (.sm8-TIMER_PLAYER)+BASE_SM1+1              
  65.         bcs .inc_chn0_msb      
  66. .sm8    lda $0000              
  67.         bmi .chn0_chk          
  68.         sta (.sm1-TIMER_PLAYER)+BASE_SM1+1          
  69.                                 ; 51 cycles
  70.  
  71. .ch1    lda #$00              
  72.         tam #$06              
  73. .sm9    lda #$00                
  74. .cn2    adc #$00                
  75.         sta (.sm9-TIMER_PLAYER)+BASE_SM1+1                
  76. .sm10   lda #$00                
  77. .cn3    adc #$00                
  78.         sta (.sm10-TIMER_PLAYER)+BASE_SM1+1                
  79. .sm11   lda #$00                
  80.         adc (.sm12-TIMER_PLAYER)+BASE_SM1+1              
  81.         sta (.sm12-TIMER_PLAYER)+BASE_SM1+1              
  82.         bcs .inc_chn1_msb      
  83. .sm12   lda $0000              
  84.         bmi .chn1_chk          
  85.         sta (.sm2-TIMER_PLAYER)+BASE_SM1+1              
  86.                                ; 51 cycles
  87.  
  88. .ch2    lda #$00                
  89.         tam #$06                
  90. .sm13   lda #$00                
  91. .cn4    adc #$00                
  92.         sta (.sm13-TIMER_PLAYER)+BASE_SM1+1                
  93. .sm14   lda #$00                
  94. .cn5    adc #$00                
  95.         sta (.sm14-TIMER_PLAYER)+BASE_SM1+1                
  96. .sm15   lda #$00                
  97.         adc (.sm16-TIMER_PLAYER)+BASE_SM1+1              
  98.         sta (.sm16-TIMER_PLAYER)+BASE_SM1+1              
  99.         bcs .inc_chn2_msb      
  100. .sm16   lda $0000              
  101.         bmi .chn2_chk          
  102.         sta (.sm3-TIMER_PLAYER)+BASE_SM1+1              
  103.                                 ; 51 cycles
  104.  
  105. .ch3    lda #$00                
  106.         tam #$06                
  107. .sm17   lda #$00                
  108. .cn6    adc #$00                
  109.         sta (.sm17-TIMER_PLAYER)+BASE_SM1+1                
  110. .sm18   lda #$00                
  111. .cn7    adc #$00                
  112.         sta (.sm18-TIMER_PLAYER)+BASE_SM1+1                
  113. .sm19   lda #$00                
  114.         adc (.sm20-TIMER_PLAYER)+BASE_SM1+1              
  115.         sta (.sm20-TIMER_PLAYER)+BASE_SM1+1              
  116.         bcs .inc_chn3_msb      
  117. .sm20   lda $0000              
  118.         bmi .chn3_chk          
  119.         sta (.sm4-TIMER_PLAYER)+BASE_SM1+1              
  120.                                 ; 51 cycles
  121. .end                                
  122.         pla
  123.         stz $3fff                    
  124.         rti                    
  125.                                 ; 11 cycles
  126.  
  127.  
  128.                                 ; 286 cycles total.
  129.                                 ; 33176 cycles per frame
  130.                                 ; 27.7% cpu resource
  131.  
  132.  
  133.  
  134.     ;rest of the conditional called code
  135.  
  136. .chn2_chk
  137.       jmp (.chn2_end_chk-TIMER_PLAYER)+BASE_SM1
  138. .chn3_chk
  139.       jmp (.chn3_end_chk-TIMER_PLAYER)+BASE_SM1
  140.  
  141.  
  142. .inc_chn0_msb
  143.       lda (.sm8-TIMER_PLAYER)+BASE_SM1+2                
  144.       adc #$00                  
  145.       cmp #$e0                  
  146.       bcs .inc_chn0_bnk        
  147.       sta (.sm8-TIMER_PLAYER)+BASE_SM1+2                
  148.       jmp (.sm8-TIMER_PLAYER)+BASE_SM1                  
  149. .inc_chn0_bnk
  150.       and #$c0
  151.       sta (.sm8-TIMER_PLAYER)+BASE_SM1+2
  152.       lda (.ch0-TIMER_PLAYER)+BASE_SM1+1              
  153.       inc a
  154.       sta (.ch0-TIMER_PLAYER)+BASE_SM1+1
  155. .ch0_ tam #$06
  156.       jmp (.sm8-TIMER_PLAYER)+BASE_SM1                  
  157.  
  158.      
  159.  
  160. .inc_chn1_msb
  161.       lda (.sm12-TIMER_PLAYER)+BASE_SM1+2                
  162.       adc #$00                  
  163.       cmp #$e0                  
  164.       bcs .inc_chn1_bnk        
  165.       sta (.sm12-TIMER_PLAYER)+BASE_SM1+2                
  166.       jmp (.sm12-TIMER_PLAYER)+BASE_SM1                  
  167. .inc_chn1_bnk
  168.       and #$c0
  169.       sta (.sm12-TIMER_PLAYER)+BASE_SM1+2
  170.       lda (.ch1-TIMER_PLAYER)+BASE_SM1+1              
  171.       inc a
  172.       sta (.ch1-TIMER_PLAYER)+BASE_SM1+1
  173. .ch1_ tam #$06
  174.       jmp (.sm12-TIMER_PLAYER)+BASE_SM1                  
  175.  
  176.  
  177.  
  178. .inc_chn2_msb
  179.       lda (.sm16-TIMER_PLAYER)+BASE_SM1+2                
  180.       adc #$00                  
  181.       cmp #$e0                  
  182.       bcs .inc_chn2_bnk        
  183.       sta (.sm16-TIMER_PLAYER)+BASE_SM1+2                
  184.       jmp (.sm16-TIMER_PLAYER)+BASE_SM1                  
  185. .inc_chn2_bnk
  186.       and #$c0
  187.       sta (.sm16-TIMER_PLAYER)+BASE_SM1+2
  188.       lda (.ch2-TIMER_PLAYER)+BASE_SM1+1              
  189.       inc a
  190.       sta (.ch2-TIMER_PLAYER)+BASE_SM1+1
  191. .ch2_ tam #$06
  192.       jmp (.sm16-TIMER_PLAYER)+BASE_SM1                  
  193.  
  194.  
  195.  
  196. .inc_chn3_msb
  197.       lda (.sm20-TIMER_PLAYER)+BASE_SM1+2                
  198.       adc #$00                  
  199.       cmp #$e0                  
  200.       bcs .inc_chn3_bnk        
  201.       sta (.sm20-TIMER_PLAYER)+BASE_SM1+2                
  202.       jmp (.sm20-TIMER_PLAYER)+BASE_SM1                  
  203. .inc_chn3_bnk
  204.       and #$c0
  205.       sta (.sm20-TIMER_PLAYER)+BASE_SM1+2
  206.       lda (.ch3-TIMER_PLAYER)+BASE_SM1+1              
  207.       inc a
  208.       sta (.ch3-TIMER_PLAYER)+BASE_SM1+1
  209. .ch3_ tam #$06
  210.       jmp (.sm20-TIMER_PLAYER)+BASE_SM1                  
  211.  
  212.  
  213.  
  214. .chn0_end_chk
  215.       lda #$80
  216.       sta (.ch0-TIMER_PLAYER)+BASE_SM1              ;.ch0
  217. .0    lda #low(.ch1 - .ch0)-2
  218.       sta (.ch0-TIMER_PLAYER)+BASE_SM1+1            ;.ch0+1
  219.       stz (.dda0-TIMER_PLAYER)+BASE_SM1+1           ;.dda0+1
  220.       jmp (.ch1-TIMER_PLAYER)+BASE_SM1              ;.ch1
  221.  
  222. .chn1_end_chk
  223.       lda #$80
  224.       sta (.ch1-TIMER_PLAYER)+BASE_SM1              ;.ch1
  225. .1    lda #low(.ch2 - .ch1)-2
  226.       sta (.ch1-TIMER_PLAYER)+BASE_SM1+1            ;.ch1+1
  227.       stz (.dda1-TIMER_PLAYER)+BASE_SM1+1           ;.dda1+1
  228.       jmp (.ch2-TIMER_PLAYER)+BASE_SM1              ;.ch2
  229.  
  230. .chn2_end_chk
  231.       lda #$80
  232.       sta (.ch2-TIMER_PLAYER)+BASE_SM1              ;.ch2
  233. .2    lda #low(.ch3 - .ch2)-2
  234.       sta (.ch2-TIMER_PLAYER)+BASE_SM1+1            ;.ch2+1
  235.       stz (.dda2-TIMER_PLAYER)+BASE_SM1+1           ;.dda2+1
  236.       jmp (.ch3-TIMER_PLAYER)+BASE_SM1              ;.ch3
  237.  
  238. .chn3_end_chk
  239.       lda #$80
  240.       sta (.ch3-TIMER_PLAYER)+BASE_SM1              ;.ch3
  241. .3    lda #low(.end - .ch3)-2
  242.       sta (.ch3-TIMER_PLAYER)+BASE_SM1+1            ;.ch3+1
  243.       stz (.dda3-TIMER_PLAYER)+BASE_SM1+1           ;.dda3+1
  244.       jmp (.end-TIMER_PLAYER)+BASE_SM1              ;.end
  245.  
  246.     ;Need to make some private labels, public.
  247.  
  248. PCM_DRIVER = (.PCM_DRIVER-TIMER_PLAYER)+BASE_SM1
  249.  
  250. CHN0.bnk = (.ch0-TIMER_PLAYER)+BASE_SM1+1
  251. CHN0.mode = (.ch0-TIMER_PLAYER)+BASE_SM1
  252. CHN0.on  =  $a9
  253. CHN0.off =  $80
  254. CHN0.stop = (.ch1 - .ch0)-2                              
  255. CHN0.ddaOff  = $00                              
  256. CHN0.ddaOn = $06                              
  257. CHN0.dda = (.dda0-TIMER_PLAYER)+BASE_SM1+1                                
  258. CHN0.lo  = (.cn0-TIMER_PLAYER)+BASE_SM1+1
  259. CHN0.mid = (.cn1-TIMER_PLAYER)+BASE_SM1+1
  260. CHN0.hi  = (.sm7-TIMER_PLAYER)+BASE_SM1+1
  261. CHN0.ptr = (.sm8-TIMER_PLAYER)+BASE_SM1+1
  262.  
  263. CHN1.bnk = (.ch1-TIMER_PLAYER)+BASE_SM1+1                              
  264. CHN1.mode = (.ch1-TIMER_PLAYER)+BASE_SM1
  265. CHN1.on  =  $a9
  266. CHN1.off =  $80
  267. CHN1.ddaOff  = $00                              
  268. CHN1.ddaOn = $06                              
  269. CHN1.stop = (.ch2 - .ch1)-2                              
  270. CHN1.dda = (.dda1-TIMER_PLAYER)+BASE_SM1+1                                
  271. CHN1.lo  = (.cn2-TIMER_PLAYER)+BASE_SM1+1
  272. CHN1.mid = (.cn3-TIMER_PLAYER)+BASE_SM1+1
  273. CHN1.hi  = (.sm11-TIMER_PLAYER)+BASE_SM1+1
  274. CHN1.ptr = (.sm12-TIMER_PLAYER)+BASE_SM1+1
  275.  
  276. CHN2.bnk = (.ch2-TIMER_PLAYER)+BASE_SM1+1                              
  277. CHN2.mode = (.ch2-TIMER_PLAYER)+BASE_SM1
  278. CHN2.on  =  $a9
  279. CHN2.off =  $80
  280. CHN2.ddaOff  = $00                              
  281. CHN2.ddaOn = $06                              
  282. CHN2.stop = (.ch3 - .ch2)-2                              
  283. CHN2.dda = (.dda2-TIMER_PLAYER)+BASE_SM1+1                                
  284. CHN2.lo  = (.cn4-TIMER_PLAYER)+BASE_SM1+1
  285. CHN2.mid = (.cn5-TIMER_PLAYER)+BASE_SM1+1
  286. CHN2.hi  = (.sm15-TIMER_PLAYER)+BASE_SM1+1
  287. CHN2.ptr = (.sm16-TIMER_PLAYER)+BASE_SM1+1
  288.  
  289. CHN3.bnk = (.ch3-TIMER_PLAYER)+BASE_SM1+1
  290. CHN3.mode = (.ch3-TIMER_PLAYER)+BASE_SM1
  291. CHN3.on  =  $a9
  292. CHN3.off =  $80
  293. CHN3.ddaOff  = $00                              
  294. CHN3.ddaOn = $06                              
  295. CHN3.stop = (.end - .ch3)-2                                
  296. CHN3.dda = (.dda3-TIMER_PLAYER)+BASE_SM1+1                                
  297. CHN3.lo  = (.cn6-TIMER_PLAYER)+BASE_SM1+1
  298. CHN3.mid = (.cn7-TIMER_PLAYER)+BASE_SM1+1
  299. CHN3.hi  = (.sm19-TIMER_PLAYER)+BASE_SM1+1
  300. CHN3.ptr = (.sm20-TIMER_PLAYER)+BASE_SM1+1
  301.  
  302. TIMER_PLAYER_END:
  303.  
  304. ;end code
  305.  
  306.  
  307. ;....................................................................................................
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement