home *** CD-ROM | disk | FTP | other *** search
/ Dave Lowe: Super Street …ghter II PC Format Disk 2 / Lowe_SuperStreetFighterIIPCFormatDisk2.img / TESTDRIV.BAK < prev    next >
Encoding:
Text File  |  1995-12-06  |  25.5 KB  |  1,511 lines

  1.  
  2.  
  3.  
  4.  
  5. which_bank    equ    0    ;test identification for fx bank
  6.  
  7. demo    equ 1        ;set to 0 to make returnable demo        
  8.  
  9. select_tunes    equ 1   ; set to 0 for selecting music on mouse button
  10.  
  11. ;**********************************************************************
  12.  
  13.  
  14.     ;        DRIVER REMAINS COPYRIGHT D.LOWE 
  15.  
  16.     ;       DRIVER TO RUN RELOCATABLE DATA BLK
  17.     ;
  18.     ;  .....fade only affects music in this version
  19.  
  20.  
  21.  
  22.     ;    devpac source code file... no macros.
  23.  
  24.     ;    The data blocks can go anywhere in chip
  25.     ;    memory but the  base address must be passed 
  26.     ;    to the driver in A0...and call setup
  27.  
  28.  
  29.     ;    It must be assembled with SYMBOLS CASE independent.
  30.  
  31.     ;       dont hesitate to ring with any problems
  32.  
  33.  
  34.  
  35.     ;        DAVE LOWE.....0723  870648
  36.  
  37.  
  38.  
  39. ;        **************************
  40.  
  41.     section issA,code_c    ;must be in low memory for dma access
  42.                 ;DEVPAC PSEUDO OP ..CAN BE DELETED
  43.  
  44.  
  45. ;*****************************************
  46.  
  47.  
  48.                 ; zero to step tunes on mouse button
  49.                 ; can be deleted..not essential
  50.  
  51.         ;  ALL EQUs
  52.  
  53.  
  54.  
  55.  
  56.  
  57. v equ 0
  58.  
  59. no_loop equ 0
  60. loop equ 0
  61. chann1reg   equ $dff0a0    
  62. chann2reg   equ $dff0b0
  63. chann3reg   equ $dff0c0
  64. chann4reg   equ $dff0d0
  65. dmacon     equ $dff096
  66. int_bf_int   equ   $dff01e
  67. int_bf_w    equ   $dff09a
  68. vhposr     equ   $dff006
  69. in_line    equ   0
  70. new_snd    equ   4
  71. end_song     equ   1
  72. end_patt    equ   8
  73. new_env    equ   12
  74. pbend     equ   16
  75.  
  76.  
  77.  
  78. hi: equ 223
  79. lo:  equ 446
  80.  
  81. r22    equ 134
  82. r20    equ 179        ;correctum
  83. r19    equ 150
  84. r18    equ 178
  85. r17    equ 200
  86. r16:    equ 227        ;correctum
  87. r15:    equ 249
  88. r14    equ 280
  89. r13:    equ 305
  90. r12:    equ 333
  91. r11:    equ 361
  92. r10:    equ 389
  93. r9:    equ 419
  94. r8:    equ 446
  95. r7:    equ 446+112
  96. r6:    equ 446+223
  97. r5:    equ 446+223+112
  98. r4:    equ 446*2
  99. r3:    equ 446*3
  100. r2:    equ 446*4
  101. r1:    equ 446*8
  102.  
  103.  
  104. filter: equ $bfe001
  105. filter_on equ 44
  106. filter_off equ 48
  107.  
  108. modon     equ   20
  109. pboff     equ   24
  110. modoff     equ   28
  111. rest     equ 32
  112. end_fxp  equ 36
  113. end_fx3  equ 36
  114. end_fx4  equ 40
  115. acc    equ 52
  116. repeat    equ 56
  117. down      equ   1
  118. up       equ   2
  119.  
  120. fx    equ 0
  121.  
  122.  
  123.  
  124. ;**************************************************************************
  125. ;**************************************************************************
  126.  
  127.  
  128.  ;    THIS IS THE CONTROL SECTION FOR TESTING AS A STAND ALONE PRG. 
  129.  
  130.     ;       AND CAN BE DELETED WHEN NOT REQUIRED
  131.  
  132.  
  133.     lea music_data_blk,a0
  134.     jsr set_up_music_address
  135.  
  136.     lea fx_data_blk,a0
  137.     jsr set_up_fx_address
  138.  
  139.     lea speech_bank1,a0
  140.     jsr set_up_speech1_address
  141.  
  142.     lea speech_bank2,a0
  143.     jsr set_up_speech2_address
  144.  
  145.  
  146.     move.l    #1,song_buffer
  147.     jsr select_new_song    ;set up tune..numnber 1
  148.  
  149. testloop:
  150.     jsr delay    ;wait for scan line  at 50hz on pal
  151.     tst.w endf
  152.     beq noend
  153.     jsr kill_chip
  154.  
  155.     rts        ;finish
  156.  
  157. endf    dc.w 0
  158.  
  159. noend
  160.     jsr driver    ;run driver at 50 hz for testing
  161.  
  162.         bra testloop    ;loop back
  163.  
  164. finish    
  165.     move.w #1,endf
  166.     rts
  167.  
  168. ;--------
  169.  
  170.         ;these are all routines used during test/stand alone
  171.         ;        assembly
  172.  
  173. delay:
  174.     tst.w fxtimer
  175.     bne no_test
  176.     clr.l d0
  177.     move.b $bfe001,d0
  178.     btst #6,d0
  179.     bne no_test1
  180.     move.w #10,fxtimer
  181.     bra testfx4
  182. no_test
  183.     subq #1,fxtimer
  184. no_test1
  185.     clr.l d0
  186.         move.w vhposr,d0
  187.         andi.w #%1111111100000000,d0
  188.         cmpi.w #%1111111100000000,d0
  189.  
  190.     bne no_test1
  191.     rts
  192.  
  193. testfx4:  
  194.  
  195.     clr.l d0
  196.     move.b $bfe001,d0
  197.     btst #6,d0
  198.     beq testfx4
  199.  
  200.     move.l song_buffer,d0
  201.     addq.l #1,d0
  202.     cmp.l    max_songs,d0
  203.     bne nores
  204.     move.l #1,d0
  205. nores    move.l d0,song_buffer
  206.  
  207.  
  208. ;-----------------------------
  209.  
  210.     ifeq    demo
  211.     bra finish            ;end on mouse button
  212.     endc
  213.  
  214. ;----------------------------
  215.  
  216.     ifeq    select_tunes
  217.     jsr    select_new_song        ;new song on mouse button
  218.     endc
  219. ;--------------------------
  220.  
  221.                     ;run fx on mouse button
  222.     move.l fx_last,d0
  223.     move.l d0,fx_kill
  224.  
  225.     ;jsr kill_loopfx            ;use only one fx at a time
  226.                     ;for testing
  227.  
  228. no_k
  229.         move.l fx_no,fx_number
  230.     move.l fx_no,fx_last
  231.     addq.l #1,fx_no
  232.     move.l    max_fx,d0
  233.         cmp.l fx_no,d0
  234.     bne noreset
  235.     move.l #1,fx_no    
  236. noreset: 
  237.     move.w #which_bank,fx_bank
  238.  
  239.     ifne    select_tunes
  240.  
  241.     jsr set_up_fx
  242.  
  243.     endc
  244.  
  245.     bra no_test    
  246.  
  247. fxtc:          dc.w 10
  248. fx_no:         dc.l  1
  249. fx_last        dc.l  0
  250. max_songs    dc.l  10
  251. max_fx        dc.l  4
  252.  
  253.  
  254. ;        END OF CONTROL (DELETABLE) SECTION
  255.  
  256. ;********************************************************************
  257. ;********************************************************************
  258.  
  259. ;    MAIN VARIABLES TO BE ACCESSED BY PROGRAMMER DURING RUNTIME
  260.  
  261.  
  262. fx_number:     dc.l 0 ;     number of fx required here
  263.  
  264. fx_bank        dc.w 0 ;     fx bank here. 0 to 3 for genfx/speech1/speech2
  265.  
  266. fx_kill        dc.l 0 ;     number of fx to kill/used mainly
  267.                ;     to kill looping fx
  268.  
  269.  
  270. song_buffer     dc.l 0 ;     number of piece of music required here ie.1 to ?               ;     currently playing beach background..see list
  271.  
  272. music_disable:  dc.w 0 ;     1 = disable music
  273.  
  274. fx_disable:     dc.w 0 ;     1 = disable fx
  275.  
  276.  
  277. fade:        dc.w 0 ;      0 to 64..0 = full volume/64 = off
  278.  
  279.  
  280. ;    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  281.  
  282. ;  THESE VARIABLES ARE USED INTERNALLY BY THE DRIVER
  283. fxr1         dc.l 0  
  284. fxr2         dc.l 0  
  285. fxr3         dc.l 0  
  286. fxr4         dc.l 0  
  287. fxc1        dc.l 0
  288. fxc2          dc.l 0
  289. fxc3        dc.l 0
  290. fxc4          dc.l 0
  291. fx1_flag    dc.w 0
  292. fx2_flag    dc.w 0
  293. fx3_flag    dc.w 0
  294. fx4_flag    dc.w 0
  295. fxtimer        dc.w 0
  296. gen        dc.w 0
  297. int_disable    dc.w 0
  298. altpf         dc.w 0
  299. kill_flag    dc.w 0
  300. mode        dc.w 0
  301.  
  302. music_base_address    dc.l 0
  303. fx_base_address        dc.l 0
  304. bank1_base_address    dc.l 0
  305. bank2_base_address    dc.l 0
  306. jingles_base_address    dc.l 0
  307. curr_base_address    dc.l 0
  308. speech_bank1_address    dc.l 0
  309. speech_bank2_address    dc.l 0
  310. ch1fx_ident        dc.w 0
  311. ch2fx_ident        dc.w 0
  312. ch3fx_ident        dc.w 0
  313. ch4fx_ident        dc.w 0
  314. globalfx_ident        dc.w 0
  315. ch1_curr_base        dc.l 0
  316. ch2_curr_base        dc.l 0
  317. ch3_curr_base        dc.l 0
  318. ch4_curr_base        dc.l 0
  319.  
  320.  
  321.  
  322. tempo_counter    dc.l 0
  323. song_tempo    dc.l 0
  324. play_flag    dc.w    0
  325.  
  326.  
  327. ;*********************************
  328. set_up_music_address:
  329.     move.l a0,music_base_address
  330.     rts
  331.  
  332. set_up_fx_address:
  333.     move.l a0,fx_base_address
  334.     rts
  335.  
  336. set_up_speech1_address:
  337.     move.l a0,speech_bank1_address
  338.     rts
  339.  
  340. set_up_speech2_address:
  341.     move.l a0,speech_bank2_address
  342.     rts
  343.  
  344. ;  *******************************************************
  345.  
  346. ;  CALL THIS SUBROUTINE TO SET UP THE REQIURED FX
  347. ;on entry it requires the fx number to be in "fx_number"(long word see above)
  348. ;and the bank number to be in "fx_bank" (word..see above)
  349.  
  350. set_up_fx
  351.     movem.l d5/a2,-(a7)    ;save used registers
  352.  
  353.     tst.l fxc4
  354.     bne check3
  355. use4:    
  356.     move.w #%0000000000001000,d5
  357.     lea chann4reg,a2
  358.     jsr end_fx4p
  359.     move.l fx_number,fxr4
  360.     move.l fx_number,fxc4
  361.     move.w fx_bank,ch4fx_ident
  362.     move.l #0,fx_number
  363.     bra no_fx
  364. check3:    tst.l fxc3
  365.     bne check2
  366. use3:
  367.     move.w #%0000000000000100,d5
  368.     lea chann3reg,a2
  369.     jsr end_fx3p
  370.     move.l fx_number,fxr3
  371.     move.l fx_number,fxc3
  372.     move.w fx_bank,ch3fx_ident
  373.     move.l #0,fx_number
  374.     bra no_fx
  375. check2:    tst.l fxc2
  376.     bne check1
  377. use2:
  378.     move.w #%0000000000000010,d5
  379.     lea chann2reg,a2
  380.     jsr end_fx2p
  381.     move.l fx_number,fxr2
  382.     move.l fx_number,fxc2
  383.     move.w fx_bank,ch2fx_ident
  384.     move.l #0,fx_number
  385.     bra no_fx
  386. check1:    tst.l fxc1
  387.     bne use3
  388. use1:
  389.     move.w #%0000000000000001,d5
  390.     lea chann1reg,a2
  391.     jsr end_fx1p
  392.     move.l fx_number,fxr1
  393.     move.l fx_number,fxc1
  394.     move.w fx_bank,ch1fx_ident
  395.     move.l #0,fx_number
  396. no_fx
  397.     movem.l (a7)+,d5/a2    ;restore registers
  398.     rts
  399.  
  400. ;*************************************************
  401. ;          CALL HERE TO KILL ANY FX...
  402. ;       after putting the number of the fx you want to kill
  403. ;            into fx_kill
  404.  
  405. kill_loopfx
  406.  
  407.     movem.l d5/a2,-(a7)    ;save used registers
  408.     move.l fx_kill,d5
  409.     cmp.l fxc1,d5
  410.     bne k2
  411.     move.w #%0000000000000001,d5
  412.     lea chann1reg,a2
  413.     jsr end_fx1p
  414.     bra error
  415. k2    cmp.l fxc2,d5
  416.     bne k3
  417.     move.w #%0000000000000010,d5
  418.     lea chann2reg,a2
  419.     jsr end_fx2p
  420.     bra error
  421. k3    cmp.l fxc3,d5
  422.     bne k4
  423.     move.w #%0000000000000100,d5
  424.     lea chann3reg,a2
  425.     jsr end_fx3p
  426.     bra error
  427. k4    cmp.l fxc4,d5
  428.     bne error
  429.     move.w #%0000000000001000,d5
  430.     lea chann2reg,a2
  431.     jsr end_fx4p
  432. error
  433.     clr.l fx_kill
  434.     movem.l (a7)+,d5/a2    ;restore registers
  435.     rts
  436. ;*************************************************
  437.  
  438.     ; CALL HERE TO KILL ANY SOUNDS LEFT ON CHIP
  439.  
  440. kill_chip:
  441.     move.w #%0000000000001111,dmacon
  442.     move.l arest_data,chann1reg
  443.     move.l arest_data,chann2reg
  444.     move.l arest_data,chann3reg
  445.     move.l arest_data,chann4reg
  446.     move.w #16,chann1reg+4    
  447.     move.w #16,chann2reg+4    
  448.     move.w #16,chann3reg+4    
  449.     move.w #16,chann4reg+4    
  450.     move.w #0,chann1reg+8
  451.     move.w #0,chann2reg+8
  452.     move.w #0,chann3reg+8
  453.     move.w #0,chann4reg+8
  454.     move.w #1,chann1reg+6
  455.     move.w #1,chann2reg+6
  456.     move.w #1,chann3reg+6
  457.     move.w #1,chann4reg+6
  458.     move.l #0,fxr1
  459.     move.l #0,fxr2
  460.     move.l #0,fxr3
  461.     move.l #0,fxr4
  462.     move.w #0,fx1_flag
  463.     move.w #0,fx2_flag
  464.     move.w #0,fx3_flag
  465.     move.w #0,fx4_flag
  466.     move.l #0,fxc1
  467.     move.l #0,fxc2
  468.     move.l #0,fxc3
  469.     move.l #0,fxc4
  470.     rts
  471.  
  472. arestd:
  473. arest_data:
  474.     dc.w    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  475.  
  476.  
  477.  
  478. ;****************************************
  479.  
  480. ;  CALL HERE TO SELECT WHICH PIECE OF MUSIC TO PLAY
  481. ;  AFTER PLACING NUMBER (1 to ?) IN "SONG_BUFFER"..see above
  482. ;  a call to this routine will initiliase the driver/kill any sound etc.      
  483. ;  make sure this routine has been called before running the interrupt
  484. ;  driven section....see below
  485.  
  486. select_new_song:
  487.  
  488.     move.w #1,int_disable
  489.     movem.l d0/d1/a0/a1,-(a7)    ;save used registers
  490.     move.w music_disable,gen
  491.     move.w #1,music_disable
  492.         jsr kill_chip           
  493.     clr.l d0
  494.         move.w #204,d0
  495.         lea gvars,a0
  496. clloop: clr.w (a0)+        
  497.         dbra  d0,clloop
  498.     tst.l song_buffer
  499.     beq no_song
  500.         move.l song_buffer,d1
  501.     add.l d1,d1
  502.      add.l d1,d1
  503.      add.l d1,d1
  504.      add.l d1,d1
  505.      add.l d1,d1
  506.  
  507. ;-----------------
  508.     movea.l (music_base_address),a1
  509.     move.w (a1),d0        ;word offset to song_table
  510.     lea (a1,d0),a1
  511.     sub.l #32,a1
  512. ;-----------------
  513.         ;LEA  SONG_TABLE-16,A1
  514.  
  515.         add.l d1,a1         ;a1 points to song table in data blk     
  516.  
  517.  
  518.     movea.l (music_base_address),a2    ;sort tempo
  519.         MOVE.L (A1)+,(song_tempo)
  520. ;        ---------------------------------
  521.  
  522.     movea.l (music_base_address),a2
  523.         MOVE.L (A1)+,d0
  524.     add.l d0,a2
  525.     move.l a2,wsong1    
  526.  
  527.     movea.l (music_base_address),a2
  528.         MOVE.L (A1)+,d0
  529.     add.l d0,a2
  530.     move.l a2,wsong2    
  531.  
  532.     movea.l (music_base_address),a2
  533.         MOVE.L (A1)+,d0
  534.     add.l d0,a2
  535.     move.l a2,wsong3
  536.  
  537.     movea.l (music_base_address),a2
  538.         MOVE.L (A1),d0
  539.     add.l d0,a2
  540.     move.l a2,wsong4    
  541.  
  542.  
  543.  
  544.  
  545.         MOVE.L #pstart,PATTR1
  546.         MOVE.L #pstart,PATTR2
  547.         MOVE.L #pstart,PATTR3
  548.     move.l #pstart,pattr4
  549.         move.l #sstart,songr1
  550.         MOVE.L #sstart,SONGR2
  551.         MOVE.L #sstart,SONGR3
  552.     move.l #sstart,songr4
  553. no_song
  554.     move.w #1,ch1vars
  555.     move.w #2,ch2vars
  556.     move.w #3,ch3vars
  557.     move.w #4,ch4vars
  558.     move.w #6,ch4fxvars
  559.     move.w #5,ch3fxvars
  560.     move.w #7,ch2fxvars
  561.     move.w #8,ch1fxvars
  562.     move.w gen,music_disable
  563.     clr.w int_disable
  564.     movem.l (a7)+,d0/d1/a0/a1    ;restore registers
  565.         rts
  566.  
  567.  
  568. sstart:        dc.l 0,1
  569. pstart:        dc.w 8
  570.  
  571.  
  572.  
  573. ;**************************************************
  574.  
  575.         ;This is the interrupt routine
  576.  
  577.  
  578. ;  CALL HERE ON A 50hz INTERRUPT DURING RUNTIME
  579. ;  TO PLAY FX AND TUNES
  580.  
  581. driver:  
  582.     tst.w int_disable
  583.     beq process_data
  584.     rts        
  585. ;------------------------------
  586.  
  587. process_data
  588.  
  589.     move.l #1,d0
  590.     add.l (tempo_counter),d0
  591.     move.l d0,(tempo_counter)
  592.     cmp.l (song_tempo),d0
  593.     bls process_data1
  594.  
  595.     move.w #1,play_flag    ;inhibit music play this frame
  596.     clr.l tempo_counter
  597.  
  598.  
  599. process_data1
  600.  
  601.     movem.l d0-d6/a0-a6,-(a7)    ;save used registers
  602.  
  603.  
  604. ch1:
  605.     tst.w fx_disable
  606.     bne test_music1
  607.     tst.l fxr1
  608.     bne   ch1j1
  609.     tst.l fxc1
  610.     beq test_music1
  611.     bra ch1j3
  612. ch1j2    jsr run_dummy1
  613.     jsr run_fx1
  614.     bra ch2
  615. ch1j1
  616.     jsr set_up1
  617. ch1j3    tst.w music_disable    
  618.     beq ch1j2
  619.     jsr run_fx1
  620.     bra ch2
  621. test_music1
  622.     tst.w music_disable
  623.     bne ch2
  624.     jsr run_music1
  625.     bra ch2
  626.     ;***********************
  627.  
  628.     ; channel 1 subroutines
  629.  
  630. run_dummy1    
  631.  
  632.  
  633.  
  634.     tst.w play_flag
  635.     beq rd1
  636.     rts
  637. rd1
  638.  
  639.     move.l (music_base_address),(curr_base_address)
  640.  
  641.  
  642.      lea ch1vars,a0
  643.      lea dummy_reg,a2 
  644.      move.w #0,d5 
  645.      jsr sect1    
  646.     rts
  647.  
  648. set_up1    
  649.     move.w ch1fx_ident,d0
  650.     jsr sort_fx_bank    ;move.l (fx_base_address),a1
  651.     move.l a1,ch1_curr_base
  652.     
  653.     move.l a1,-(a7)
  654.     move.w 2(a1),d0
  655.     add.w d0,a1
  656.     sub.l #4,a1        ;pointer to jumptable
  657.         move.l fxr1,d0
  658.         add d0,d0
  659.         add d0,d0
  660.     add.l d0,a1        ;pointer to fx offset within table
  661.     move.l (a1),d0
  662.  
  663.     move.l (a7)+,a1        ;get base address from stack
  664.  
  665.     add.l d0,a1
  666.     move.l a1,currfx1    ;store address
  667.      clr.l fxr1
  668.     clr.w fxintc1
  669.      rts
  670.      
  671. run_fx1
  672.  
  673.     move.l (ch1_curr_base),(curr_base_address)
  674.  
  675.     lea ch1fxvars,a0
  676.        lea chann1reg,a2
  677.       move.w #%0000000000000001,d5 
  678.      move.w #%1000000000000001,d1 
  679.  
  680.     move.w    #1,mode
  681.      jsr sect1
  682.     rts
  683.  
  684. run_music1
  685.  
  686.     tst.w play_flag
  687.     beq rm1
  688.     rts
  689. rm1
  690.     move.l (music_base_address),(curr_base_address)
  691.  
  692.  
  693.     lea ch1vars,a0
  694.        lea chann1reg,a2
  695.       move.w #%0000000000000001,d5 
  696.       move.w #%1000000000000001,d1 
  697.     move.w    #0,mode
  698.       jsr sect1     
  699.     rts
  700.  
  701.     ;  **************************
  702. ch2
  703.     tst.w fx_disable
  704.     bne test_music2
  705.     tst.l fxr2
  706.     bne   ch2j1
  707.     tst.l fxc2
  708.     beq test_music2
  709.     bra ch2j3
  710. ch2j2    jsr run_dummy2
  711.     jsr run_fx2
  712.     bra ch3
  713. ch2j1
  714.     jsr set_up2
  715. ch2j3    tst.w music_disable    
  716.     beq ch2j2
  717.     jsr run_fx2
  718.     bra ch3
  719.  
  720. test_music2
  721.     tst.w music_disable
  722.     bne ch3
  723.     jsr run_music2
  724.     bra ch3
  725.     ;***********************
  726.     ; channel 2 subroutines
  727. run_dummy2    
  728.  
  729.     tst.w play_flag
  730.     beq rd2
  731.     rts
  732. rd2
  733.  
  734.     move.l (music_base_address),(curr_base_address)
  735.  
  736.      lea ch2vars,a0
  737.      lea dummy_reg,a2 
  738.      move.w #0,d5 
  739.      jsr sect1    
  740.     rts
  741.  
  742. set_up2    
  743.     move.w ch2fx_ident,d0
  744.     jsr sort_fx_bank    ;move.l (fx_base_address),a1
  745.     move.l a1,ch2_curr_base
  746.     
  747.     move.l a1,-(a7)
  748.     move.w 2(a1),d0
  749.     add.w d0,a1
  750.     sub.l #4,a1        ;pointer to jumptable
  751.         move.l fxr2,d0
  752.         add d0,d0
  753.         add d0,d0
  754.     add.l d0,a1        ;pointer to fx offset within table
  755.     move.l (a1),d0
  756.  
  757.     move.l (a7)+,a1        ;get base address from stack
  758.  
  759.     add.l d0,a1
  760.     move.l a1,currfx2    ;store address
  761.      clr.l fxr2
  762.     clr.w fxintc2
  763.      rts
  764.      
  765. run_fx2
  766.  
  767.     move.l (ch2_curr_base),(curr_base_address)
  768.  
  769.     lea ch2fxvars,a0
  770.        lea chann2reg,a2
  771.       move.w #%0000000000000010,d5 
  772.      move.w #%1000000000000010,d1 
  773.     move.w    #1,mode
  774.      jsr sect1
  775.     rts
  776.  
  777. run_music2
  778.     tst.w play_flag
  779.     beq rm2
  780.     rts
  781. rm2
  782.     move.l (music_base_address),(curr_base_address)
  783.  
  784.     lea ch2vars,a0
  785.        lea chann2reg,a2
  786.       move.w #%0000000000000010,d5 
  787.       move.w #%1000000000000010,d1 
  788.     move.w    #0,mode
  789.       jsr sect1     
  790.     rts
  791.  
  792.     ;  **************************
  793.  
  794. ch3:
  795.     tst.w fx_disable
  796.     bne test_music3
  797.     tst.l fxr3
  798.     bne   ch3j1
  799.     tst.l fxc3
  800.     beq test_music3
  801.     bra ch3j3
  802. ch3j2    jsr run_dummy3
  803.     jsr run_fx3
  804.     bra ch4
  805. ch3j1
  806.     jsr set_up3
  807. ch3j3    tst.w music_disable    
  808.     beq ch3j2
  809.     jsr run_fx3
  810.     bra ch4
  811.  
  812. test_music3
  813.     tst.w music_disable
  814.     bne ch4
  815.     jsr run_music3
  816.     bra ch4
  817.  
  818.     ;***********************
  819.  
  820.     ; channel 3 subroutines
  821.  
  822. run_dummy3    
  823.     tst.w play_flag
  824.     beq rd3
  825.     rts
  826. rd3
  827.  
  828.     move.l (music_base_address),(curr_base_address)
  829.  
  830.      lea ch3vars,a0
  831.      lea dummy_reg,a2 
  832.      move.w #0,d5 
  833.      jsr sect1    
  834.     rts
  835.  
  836. set_up3    
  837.     move.w ch3fx_ident,d0
  838.     jsr sort_fx_bank    
  839.     move.l a1,ch3_curr_base
  840.     
  841.     move.l a1,-(a7)
  842.     move.w 2(a1),d0
  843.     add.w d0,a1
  844.     sub.l #4,a1        ;pointer to jumptable
  845.         move.l fxr3,d0
  846.         add d0,d0
  847.         add d0,d0
  848.     add.l d0,a1        ;pointer to fx offset within table
  849.     move.l (a1),d0
  850.  
  851.     move.l (a7)+,a1        ;get base address from stack
  852.  
  853.     add.l d0,a1
  854.     move.l a1,currfx3    ;store address
  855.      clr.l fxr3
  856.     clr.w fxintc3
  857.      rts
  858.   
  859.      
  860. run_fx3
  861.     move.l (ch3_curr_base),(curr_base_address)
  862.  
  863.     lea ch3fxvars,a0
  864.        lea chann3reg,a2
  865.       move.w #%0000000000000100,d5 
  866.      move.w #%1000000000000100,d1 
  867.     move.w    #1,mode
  868.      jsr sect1
  869.     rts
  870.  
  871. run_music3
  872.  
  873.     tst.w play_flag
  874.     beq rm3
  875.     rts
  876. rm3
  877.  
  878.     move.l (music_base_address),(curr_base_address)
  879.  
  880.     lea ch3vars,a0
  881.        lea chann3reg,a2
  882.       move.w #%0000000000000100,d5 
  883.       move.w #%1000000000000100,d1 
  884.     move.w    #0,mode
  885.       jsr sect1     
  886.     rts
  887.  
  888.     ;  **************************
  889.  
  890. ch4:
  891.     tst.w fx_disable
  892.     bne test_music4
  893.     tst.l fxr4
  894.     bne   ch4j1
  895.     tst.l fxc4
  896.     beq test_music4
  897.     bra ch4j3
  898. ch4j2    jsr run_dummy4
  899.     jsr run_fx4
  900.     bra no4
  901. ch4j1
  902.     jsr set_up4
  903. ch4j3    tst.w music_disable    
  904.     beq ch4j2
  905.     jsr run_fx4
  906.     bra no4
  907.  
  908. test_music4
  909.     tst.w music_disable
  910.     bne no4
  911.     jsr run_music4
  912. no4    
  913.  
  914.     clr.w play_flag            ;inhibit music tempo play
  915.  
  916.     movem.l (a7)+,d0-d6/a0-a6    ;restore registers
  917.     rts
  918.  
  919.     ;***********************
  920.  
  921.     ; channel 4 subroutines
  922.  
  923. run_dummy4    
  924.  
  925.     tst.w play_flag
  926.     beq rd4
  927.     rts
  928. rd4
  929.  
  930.  
  931.     move.l (music_base_address),(curr_base_address)
  932.  
  933.      lea ch4vars,a0
  934.      lea dummy_reg,a2 
  935.      move.w #0,d5 
  936.      jsr sect1    
  937.     rts
  938.  
  939. set_up4    
  940.     move.w ch4fx_ident,d0
  941.     jsr sort_fx_bank    ;move.l (fx_base_address),a1
  942.     move.l a1,ch4_curr_base
  943.     
  944.     move.l a1,-(a7)
  945.     move.w 2(a1),d0
  946.     add.w d0,a1
  947.     sub.l #4,a1        ;pointer to jumptable
  948.         move.l fxr4,d0
  949.         add d0,d0
  950.         add d0,d0
  951.     add.l d0,a1        ;pointer to fx offset within table
  952.     move.l (a1),d0
  953.  
  954.     move.l (a7)+,a1        ;get base address from stack
  955.  
  956.     add.l d0,a1
  957.     move.l a1,currfx4    ;store address
  958.      clr.l fxr4
  959.     clr.w fxintc4
  960.      rts
  961.      
  962. run_fx4
  963.  
  964.     move.l (ch4_curr_base),(curr_base_address)
  965.  
  966.     lea ch4fxvars,a0
  967.        lea chann4reg,a2
  968.       move.w #%0000000000001000,d5 
  969.      move.w #%1000001000001000,d1 
  970.     move.w    #1,mode
  971.      jsr sect1
  972.     rts
  973.  
  974. run_music4
  975.  
  976.     tst.w play_flag
  977.     beq rm4
  978.     rts
  979. rm4
  980.     move.l (music_base_address),(curr_base_address)
  981.  
  982.  
  983.     lea ch4vars,a0
  984.        lea chann4reg,a2
  985.       move.w #%0000000000001000,d5 
  986.       move.w #%1000001000001000,d1 
  987.     move.w    #0,mode
  988.       jsr sect1     
  989.     rts
  990. ;---------------------------------------
  991.  
  992.  
  993. sort_fx_bank:            ;d0 contains bank ident
  994.                 ;0 = gen fx
  995.                 ;1 = speech bank1
  996.                 ;2 = speech bank 2
  997.  
  998.     tst.w d0
  999.     beq    set_gen
  1000.     cmp.w #1,d0
  1001.     beq    set_speech1
  1002.  
  1003.     move.l (speech_bank2_address),a1        ;set speech 2
  1004.     rts
  1005.  
  1006. set_gen
  1007.     move.l (fx_base_address),a1
  1008.     rts
  1009.  
  1010. set_speech1
  1011.     move.l (speech_bank1_address),a1
  1012.     rts
  1013.  
  1014.  
  1015.     ;  **************************
  1016.  
  1017. sect1: tst.w (a0)
  1018.     bne s1j1
  1019.     rts
  1020.  
  1021. s1j1:    tst.w 2(a0)
  1022.         beq sect3       
  1023.         cmpi.w #1,2(a0)
  1024.         beq sect4
  1025.  
  1026.         cmpi.w #3,4(a0)    
  1027.         beq part2       
  1028.     
  1029. mode_switch:  subq.w #1,2(a0)     
  1030.  
  1031. check_effects: clr.w altpf      
  1032.         move.w 6(a0),d2    
  1033.         tst.w 8(a0)      
  1034.         beq check_mod
  1035.         tst.w 14(a0)      
  1036.         beq cont_bend
  1037.         subq.w #1,14(a0)
  1038.         bra check_mod
  1039. cont_bend:   addq.w #1,altpf    
  1040.         move.w 10(a0),d3    
  1041.         move.w 12(a0),d4    
  1042.         cmpi.w #1,8(a0)
  1043.         beq pbup
  1044.     
  1045.         sub.w d3,d2
  1046.         cmp.w d2,d4
  1047.         bcs check_mod
  1048.         bra fbend
  1049.  
  1050. pbup:     add.w d3,d2
  1051.         cmp.w d2,d4
  1052.         bcc check_mod
  1053. fbend:     move.w d4,d2
  1054.         clr.w 8(a0)      
  1055. check_mod:   tst.w 16(a0)
  1056.         beq send_alt_pitch
  1057.    
  1058.  
  1059.     tst.w  58(a0)
  1060.     beq st_ok
  1061.     subq.w #1,58(a0)
  1062.     bra send_alt_pitch
  1063. st_ok:
  1064.         tst.w 50(a0)
  1065.         beq cont_mod
  1066.         subq #1,50(a0)
  1067.         bra send_alt_pitch
  1068. cont_mod:    move.w 52(a0),50(a0)  
  1069.         addq #1,altpf
  1070.         cmpi #3,16(a0)
  1071.         bcc addmod
  1072.     
  1073.         move.w 56(a0),d3 
  1074.         sub.w d3,d2
  1075.         addq.w #1,16(a0)  
  1076.         bra send_alt_pitch
  1077. addmod:
  1078.  
  1079.         move.w 54(a0),d3 
  1080.         add.w d3,d2
  1081.         addq.w #1,16(a0)
  1082.         cmpi.w #5,16(a0)
  1083.        bne send_alt_pitch
  1084.         move.w #1,16(a0)  
  1085.  
  1086. send_alt_pitch: tst.w altpf
  1087.         beq send_env
  1088.         move.w d2,6(a0)  
  1089.         move.w d2,6(a2)  
  1090.  
  1091. send_env: 
  1092.  
  1093. do_env_check:
  1094.  
  1095. norm_env:
  1096.     move.l 18(a0),a1    
  1097.         cmpi.w #255,(a1)
  1098.         beq env_finished
  1099.     ;cmpi.w #1,66(a0)    
  1100.     ;bne    no_acc 
  1101.  
  1102. resu    clr.l d0
  1103.     move.w (a1)+,d0
  1104.     ;sub.w 64(a0),d0    
  1105.  
  1106.             ;test for mode here
  1107.     tst.w mode
  1108.     bne sete
  1109.  
  1110.     sub.w fade,d0
  1111.     bcc sete
  1112.  
  1113.  
  1114.     move.w #0,d0
  1115.  
  1116.  
  1117. sete    move.w d0,8(a2)    
  1118.     move.l a1,18(a0)
  1119.     rts        
  1120.  
  1121.  
  1122. no_acc:
  1123. ;resu:  
  1124. no_off
  1125.     ;move.w (a1)+,d0
  1126.     sub.w fade,d0
  1127.     bcc sete2
  1128.     move.w #0,d0
  1129. sete2    move.w d0,8(a2)
  1130.      move.w (a1)+,8(a2)
  1131.    
  1132. fint:   move.l a1,18(a0)    
  1133.     rts
  1134.  
  1135. env_finished:
  1136.     subq.l #2,a1    
  1137.     bra resu
  1138.     rts
  1139.  
  1140.  
  1141.  
  1142. one_shot_note: move.w #3,4(a0)     
  1143.         move.l 38(a0),(a2)
  1144.         move.w 42(a0),4(a2)
  1145.         move.w d1,dmacon     
  1146.         bra send_env
  1147.  
  1148.  
  1149. part2:                         
  1150.         move.l 44(a0),(a2)
  1151.         move.w 48(a0),4(a2)
  1152.         subq.w #1,2(a0)      
  1153.         move.w #1,4(a0)
  1154.         bra check_effects
  1155.  
  1156. sect3:
  1157.     move.w #0,66(a0)    
  1158.  
  1159.     move.l 22(a0),a1  
  1160. control_ret: move.w (a1)+,d0  
  1161.     cmpi.w #100,d0   
  1162.     bls sect5   
  1163.   
  1164. acc_note:
  1165.     move.w d0,6(a0)  
  1166.     move.w d0,6(a2)  
  1167.     move.w (a1)+,2(a0) 
  1168.     subq.w #1,2(a0)  
  1169.     move.l a1,22(a0)  
  1170.     move.l 34(a0),18(a0) 
  1171.     move.w 60(a0),58(a0) 
  1172.  
  1173.  
  1174.     tst.w 16(a0)
  1175.     beq no_mod_res
  1176.     move.w #1,16(a0)
  1177. no_mod_res:
  1178.     cmpi.w #0,4(a0)
  1179.     beq do_loop
  1180.     bra one_shot_note    
  1181.  
  1182.  
  1183. do_loop:    move.w d1,dmacon   
  1184.         bra send_env
  1185.  
  1186. do_rest:
  1187.     move.w (a1)+,2(a0) 
  1188.     subq.w #1,2(a0)  
  1189.     move.l a1,22(a0)  
  1190.     move.l  #drest_env,18(a0)
  1191.  
  1192.         move.w #0,8(a2)
  1193.         bra send_env
  1194.    
  1195. sect4:
  1196.         cmpi.w #0,4(a0)
  1197.         beq noof
  1198.         move.w d5,dmacon   
  1199. noof:     subq.w #1,2(a0)
  1200.         bra check_effects
  1201.    
  1202. sect5:     move.l #jump_table,a3
  1203.         move.l (a3,d0),a4
  1204.         jmp (a4)
  1205.  
  1206. jump_table: 
  1207.     dc.l  in_line_data
  1208.         dc.l  nsound
  1209.         dc.l  patt_end
  1210.         dc.l  get_env
  1211.         dc.l  check_pbend
  1212.         dc.l  do_mod
  1213.         dc.l  bend_off
  1214.         dc.l  mod_off
  1215.         dc.l  do_rest
  1216.         dc.l  end_fx
  1217.         dc.l  end_fx
  1218.     dc.l  s_f_on
  1219.     dc.l  s_f_off
  1220.     dc.l  set_acc
  1221.     dc.l  rept
  1222.  
  1223. in_line_data:
  1224.  
  1225.         nop
  1226.         rts
  1227.  
  1228. rept:
  1229.     move.l (a1),d0
  1230.     move.l (curr_base_address),a1
  1231.     add.l    d0,a1
  1232.     bra control_ret
  1233.  
  1234. s_f_on: 
  1235.     bclr #1,filter
  1236.     bra control_ret
  1237. s_f_off:
  1238.     bset #1,filter
  1239.     bra control_ret
  1240.  
  1241. nsound:
  1242. ;----------------------------
  1243.     move.l (a1)+,d0        ;sound offset
  1244.     move.l (curr_base_address),a3
  1245.     add.l d0,a3
  1246. ;----------------------------
  1247.         ;move.l (a1)+,a3     
  1248.  
  1249.         cmpi.w #0,(a3)
  1250.         bne one_shot_sound
  1251.  
  1252. xxx
  1253.         move.w (a3)+,4(a0)        ;length    
  1254.  
  1255. ;-----------------
  1256.     move.l (curr_base_address),a6
  1257.     move.l (a3)+,d0
  1258.     add.l d0,a6
  1259.     move.l a6,(a2)
  1260. ;--------------------
  1261.         ;move.l (a3)+,(a2)     
  1262.  
  1263.         move.w (a3),4(a2)    
  1264.         jmp control_ret
  1265.  
  1266. one_shot_sound:
  1267.         move.w (a3)+,4(a0)        ;type of sound
  1268. ;-----------
  1269.     move.l (curr_base_address),a6
  1270.     move.l (a3)+,d0
  1271.     add.l d0,a6
  1272.     move.l a6,38(a0)        ;address sample 1
  1273. ;---------------
  1274.         move.w (a3)+,42(a0)        ;length sample 1
  1275. ;---------------------
  1276.     move.l (curr_base_address),a6
  1277.     move.l (a3)+,d0
  1278.     add.l d0,a6
  1279.     move.l a6,44(a0)
  1280.  
  1281. ;---------------------
  1282.     ;add.l #4,a3
  1283.         move.w (a3),48(a0)
  1284.         jmp control_ret
  1285.  
  1286. patt_end:
  1287.  
  1288.         move.l 26(a0),a1    
  1289.         cmpi.l #0,(a1)     
  1290.         beq song_control        ;end of song
  1291.         addq.l #4,26(a0)            ;get next pattern address
  1292. ;-----------------------
  1293.     move.l (a1),d0        ;offset
  1294.     move.l (curr_base_address),a1
  1295.     add.l d0,a1        ;new pattern
  1296.  
  1297. ;------------------------
  1298.         ;move.l (a1),a1     
  1299.         jmp control_ret
  1300. get_env:
  1301. ;-----------------------
  1302.     move.l (a1)+,d0        ;env offset
  1303.     move.l (curr_base_address),a4
  1304.     add.l d0,a4     
  1305. ;--------------------------
  1306.     ;move.l (a1)+,a4 
  1307.  
  1308.     move.l (a4)+,62(a0)    
  1309.     
  1310.     move.l  a4,34(a0)    
  1311.     
  1312.         bra control_ret
  1313.  
  1314. check_pbend:
  1315.      move.l (a1)+,8(a0)
  1316.         move.l (a1)+,12(a0)
  1317.         bra control_ret
  1318.  
  1319. do_mod:    move.w #1,16(a0)  
  1320.         move.l (a1)+,50(a0)
  1321.         move.l (a1)+,54(a0)
  1322.         move.l (a1)+,58(a0)
  1323.         bra control_ret
  1324.  
  1325. bend_off:   clr.w 8(a0)
  1326.         bra control_ret
  1327.  
  1328. mod_off:    clr.w 16(a0)
  1329.         bra control_ret
  1330.  
  1331.  
  1332. end_fx:    
  1333.     cmpi.w #6,(a0)
  1334.     beq end_fx4p
  1335.     cmpi.w #5,(a0)
  1336.     beq end_fx3p
  1337.     cmpi.w #7,(a0)
  1338.     beq end_fx2p
  1339.  
  1340. end_fx1p:
  1341.         move.w d5,dmacon   
  1342.     move.w  #1,chann1reg+6
  1343.     move.w #0,8(a2)
  1344.     move.l #0,fxc1
  1345.     rts
  1346.  
  1347. end_fx2p:
  1348.     move.w d5,dmacon 
  1349.     move.w  #1,chann2reg+6
  1350.         move.w #0,8(a2) 
  1351.     move.l #0,fxc2
  1352.         rts
  1353.  
  1354.  
  1355. end_fx3p:
  1356.         move.w d5,dmacon   
  1357.     move.w  #1,chann3reg+6
  1358.     move.w #0,8(a2)
  1359.     move.l #0,fxc3
  1360.     rts
  1361.  
  1362. end_fx4p:
  1363.     move.w d5,dmacon 
  1364.     move.w  #1,chann4reg+6
  1365.         move.w #0,8(a2) 
  1366.     move.l #0,fxc4
  1367.         rts
  1368.  
  1369. set_acc: move.w #1,66(a0) 
  1370.     bra control_ret
  1371.  
  1372. song_control:
  1373.         addq.l #4,a1
  1374.         move.l 30(a0),26(a0)
  1375.         move.l 26(a0),a1
  1376.         addq.l #4,26(a0)
  1377. ;------------------
  1378.     move.l (curr_base_address),a6
  1379.     move.l (a1),d0
  1380.     add.l d0,a6
  1381.     move.l a6,a1
  1382. ;-----------------------
  1383.         ;move.l (a1),a1
  1384.         jmp control_ret
  1385.  
  1386.  
  1387.     ;"""""""""""""""""""""""""""""""""""""""""""""""""
  1388. ;************************************************************
  1389. gvars:
  1390. ch1vars     
  1391.     dc.w 0     
  1392.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1393. pattr1: dc.l 0    
  1394. songr1: dc.l 0    
  1395. wsong1: dc.l 0   
  1396.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1397.  
  1398. ch2vars     
  1399.     dc.w 0     
  1400.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1401. pattr2: dc.l 0    
  1402. songr2: dc.l 0    
  1403. wsong2: dc.l 0    
  1404.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1405.  
  1406. ch3vars 
  1407.     dc.w 0     
  1408.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1409. pattr3: dc.l 0    
  1410. songr3: dc.l 0    
  1411. wsong3: dc.l 0    
  1412.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1413.  
  1414. ch4vars 
  1415.     dc.w 0     
  1416.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1417. pattr4: dc.l 0    
  1418. songr4: dc.l 0    
  1419. wsong4: dc.l 0    
  1420.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1421.  
  1422.  
  1423. ch1fxvars 
  1424.     dc.w 0     
  1425. fxintc1:
  1426.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1427. currfx1:
  1428.     dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
  1429.  
  1430. ch2fxvars 
  1431.     dc.w 0     
  1432. fxintc2:
  1433.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1434. currfx2:
  1435.     dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
  1436.  
  1437.  
  1438. ch3fxvars
  1439.     dc.w 0     
  1440. fxintc3:
  1441.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1442. currfx3:
  1443.     dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
  1444.  
  1445. ch4fxvars 
  1446.     dc.w 0     
  1447. fxintc4:
  1448.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1449. currfx4:
  1450.     dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
  1451. ;************************************************************
  1452.  
  1453. drest_env    dc.w  0,0,0,0,0,0,0,0,255
  1454.  
  1455.  
  1456.  
  1457. dummy_reg dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1458.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1459.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1460.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1461.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1462.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1463.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1464.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1465.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1466.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1467.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1468.  
  1469. ;*******************************************************
  1470.     even
  1471.  
  1472.  
  1473. fx_data_blk:    ;test place for getting the general fx data blk in
  1474.  
  1475.  
  1476.     incbin c:sf2d/gfx.bin
  1477.  
  1478. ;***********************************************************
  1479.     even
  1480.  
  1481. speech_bank1    ;test place for speech1
  1482.  
  1483.  
  1484.     incbin c:sf2d/speech/chun_speech.bin
  1485.     
  1486.  
  1487. ;*********************************************
  1488.  
  1489.     even
  1490.  
  1491. speech_bank2    ;test place for speech2
  1492.  
  1493.  
  1494.     incbin c:sf2d/speech/ken_speech.bin
  1495.  
  1496. ;**********************************************
  1497.  
  1498.     even
  1499.  
  1500. music_data_blk: ;test place for music data blk
  1501.  
  1502.     
  1503.     incbin c:sf2d/ken.bin
  1504.  
  1505. ;***********************************************************
  1506.  
  1507.     end
  1508.  
  1509.  
  1510.  
  1511.