home *** CD-ROM | disk | FTP | other *** search
/ YPA: Your Privacy Assured / YPA.ISO / other_goodies / music / ep154b_1.dms / ep154b_1.adf / EagleplayerDeveloper / Examples / Tronic.s < prev   
Text File  |  1995-01-17  |  14KB  |  770 lines

  1. **************************************************************************
  2. *              Tronic Eagleplayer/DelitrackerReplay                      *
  3. *   Playroutine ripped and made usable for Deli/Eagle by Marley/Infect   *
  4. *    Eagleplayer Adaptions (Vol,Bal,Voices) by Buggs / Defect            *
  5. *        Note by Buggs: Doesn`t look like a "Tracker"                    *
  6. **************************************************************************
  7.     ;
  8.     incdir    include:
  9.     include    misc/eagleplayer.i
  10.     ;
  11.     SECTION    0,CODE
  12.  
  13. test    =    0
  14.  
  15.     ifne    test
  16.  
  17.     lea    mod,a0
  18.     move.l    a0,tr_data
  19.     bsr    tr_init
  20. wa
  21.     move.b    $dff006,d0
  22.     cmp.b    #$50,d0
  23.     bne    wa
  24.  
  25.     bsr    tr_music
  26.  
  27.     btst    #6,$bfe001
  28.     bne    wa
  29.     move.w    #15,$dff096
  30.     illegal
  31.  
  32.     endc
  33.  
  34.     Playerheader    Tags
  35.     dc.b    '$VER: TronicTracker(?) replay module V1.1 (12-Apr-93 &'
  36.     dc.b    ' 17-Apr-93)',0
  37. Tags
  38.     dc.l    DTP_RequestDTVersion,$ffff
  39.     dc.l    EP_PlayerVersion,4
  40.     dc.l    DTP_Volume,SetVoices
  41.     dc.l    DTP_Balance,SetVoices
  42.     dc.l    EP_Voices,SetVoices
  43.     dc.l    DTP_Playerversion,2
  44.     dc.l    DTP_Playername,Player
  45.     dc.l    DTP_Creator,Creator
  46.  
  47.     dc.l    DTP_Check2,Checkmod
  48.  
  49.     dc.l    DTP_InitPlayer,InitPlay
  50.     dc.l    DTP_EndPlayer,EndPlay
  51.  
  52.     dc.l    DTP_InitSound,TR_Init
  53.     dc.l    DTP_EndSound,TR_End
  54.     dc.l    DTP_Interrupt,TR_Music
  55.  
  56.     dc.l    EP_flags,EPB_Volvoices!EPB_Packable!EPB_restart!EPB_songend!EPB_Volume!EPB_Balance!EPB_Voices!EPB_Analyzer
  57.     dc.l    EP_StructInit,GetStrucAdr
  58.     dc.l    0
  59. ;==========================================================================
  60. TR_Data        dc.l    0
  61. dtbase:        dc.l    0
  62.  
  63. TR_VolVoice1    dc.w    1
  64. TR_VolVoice2    dc.w    1
  65. TR_VolVoice3    dc.w    1
  66. TR_VolVoice4    dc.w    1
  67.  
  68.  
  69. StructAdr:
  70.     ds.b    UPS_SizeOF
  71.  
  72. Player    dc.b    'TronicTracker(?)',0
  73. Creator    dc.b    '?????, adapted by',$A
  74.     dc.b    'marley/INFECT & Buggs/DEFECT',0,0
  75.     even
  76. ;=========================================================================
  77. GetStrucAdr:
  78.     lea    StructAdr(pc),a0
  79.     rts
  80. ;==========================================================================
  81. *-----------------------------------------------------------------------*
  82. *        d0 Bit 0-3 = Set Voices Bit=1 Voice on            *
  83. SetVoices:    lea    structadr+UPS_DmaCon(pc),a0
  84.         move.w    EPG_Voices(a5),(a0)                ;Voices retten
  85.         lea    TR_VolVoice1(pc),a1
  86.         move.l    EPG_Voice1Vol(a5),(a1)
  87.         move.l    EPG_Voice3Vol(a5),4(a1)
  88.  
  89.         lea    structadr+UPS_Voice1Vol(pc),a0
  90.         lea    $dff0a0,a1
  91.         moveq    #3,d1
  92. .SetNew        moveq    #0,d0
  93.         move.w    (a0),d0
  94.         bsr.s    TR_SetVoices
  95.         moveq    #UPS_Modulo,d0
  96.         add.l    d0,a0
  97.         addq.l    #8,a1
  98.         addq.l    #8,a1
  99.         dbf    d1,.SetNew
  100.         rts
  101.  
  102. *-----------------------------------------------------------------------*
  103. TR_SetVoices:    movem.l    a0/d0,-(a7)
  104.         and.w    #$7f,d0
  105.         lea    structadr(pc),a0
  106.         cmp.l    #$dff0a0,a1            ;Left Volume
  107.         bne.s    .NoVoice1
  108.         move.w    d0,UPS_Voice1Vol(a0)
  109.         mulu.w    TR_VolVoice1(pc),d0
  110.         bra.b    .SetIt
  111. .NoVoice1:    cmp.l    #$dff0b0,a1            ;Right Volume
  112.         bne.s    .NoVoice2
  113.         move.w    d0,UPS_Voice2Vol(a0)
  114.         mulu.w    TR_VolVoice2(pc),d0
  115.         bra.b    .SetIt
  116. .NoVoice2:    cmp.l    #$dff0c0,a1            ;Right Volume
  117.         bne.s    .NoVoice3
  118.         move.w    d0,UPS_Voice3Vol(a0)
  119.         mulu.w    TR_VolVoice3(pc),d0
  120.         bra.b    .SetIt
  121. .NoVoice3:    move.w    d0,UPS_Voice4Vol(a0)
  122.         mulu.w    TR_VolVoice4(pc),d0
  123. .SetIt:        lsr.w    #6,d0
  124.         move.w    d0,8(a1)
  125. .Return:    movem.l    (a7)+,a0/d0
  126.         rts
  127.  
  128. ;==========================================================================
  129. Checkmod
  130.     movem.l    d1-d4,-(sp)
  131.     move.l    DTG_ChkData(a5),a0
  132.     moveq    #-1,d0
  133.     movem.l    (a0)+,d1-d4
  134.     add.w    d1,a0
  135.     add.w    d2,a0
  136.     add.w    d3,a0
  137.     add.w    d4,a0
  138.     move.l    a0,d1
  139.     btst    #0,d1
  140.     bne.s    .fail
  141.     add.w    (a0),d1
  142.     btst    #0,d1
  143.     bne.s    .fail
  144.     move.l    d1,a0
  145.     cmp.l    #$5800b0,4(a0)
  146.     bne.s    .fail
  147.     moveq    #0,d0
  148. .fail
  149.     movem.l    (sp)+,d1-d4
  150.     rts
  151. ;==========================================================================
  152. InitPlay
  153.     moveq    #0,d0
  154.     move.l    DTG_GetListData(a5),a0
  155.     jsr    (a0)
  156.     move.l    a0,TR_Data
  157.     move.l    a5,dtbase
  158.     move.l    DTG_AudioAlloc(a5),a0
  159.     jmp    (a0)
  160. ;==========================================================================
  161. EndPlay
  162.     move.l    DTG_AudioFree(a5),a0
  163.     jmp    (a0)
  164. ;==========================================================================
  165. Getadr
  166.     move.l    a2,-(sp)
  167.     lea    Structadr(pc),a2    ;1.Kanal
  168.     cmp.l    #$dff0a0,a1
  169.     beq.s    .yes
  170.     lea    Structadr+ups_modulo(pc),a2    ;2.Kanal
  171.     cmp.l    #$dff0b0,a1
  172.     beq.s    .yes
  173.     lea    Structadr+ups_modulo*2(pc),a2    ;3.Kanal
  174.     cmp.l    #$dff0c0,a1
  175.     beq.s    .yes
  176.     lea    Structadr+ups_modulo*3(pc),a2    ;4.Kanal
  177. .yes
  178.     move.l    a4,UPS_Voice1adr(a2)
  179.     move.l    (sp)+,a2
  180.     rts
  181. getper
  182.     move.l    a2,-(sp)
  183.     lea    structadr(pc),a2    ;1.kanal
  184.  
  185.     cmp.l    #$dff0a0,a1
  186.     beq.s    .yes
  187.     lea    structadr+ups_modulo(pc),a2    ;2.kanal
  188.     cmp.l    #$dff0b0,a1
  189.     beq.s    .yes
  190.     lea    structadr+ups_modulo*2(pc),a2    ;3.kanal
  191.     cmp.l    #$dff0c0,a1
  192.     beq.s    .yes
  193.     lea    structadr+ups_modulo*3(pc),a2    ;4.kanal
  194. .yes
  195.     move.w    d0,ups_voice1per(a2)
  196.     move.l    (sp)+,a2
  197.     rts
  198. GetLen
  199.     move.l    a2,-(sp)
  200.     lea    structadr(pc),a2    ;1.kanal
  201.  
  202.     cmp.l    #$dff0a0,a1
  203.     beq.s    .yes
  204.     lea    structadr+ups_modulo(pc),a2    ;2.kanal
  205.     cmp.l    #$dff0b0,a1
  206.     beq.s    .yes
  207.     lea    structadr+ups_modulo*2(pc),a2    ;3.kanal
  208.     cmp.l    #$dff0c0,a1
  209.     beq.s    .yes
  210.     lea    structadr+ups_modulo*3(pc),a2    ;4.kanal
  211. .yes
  212.     move.w    d0,ups_voice1len(a2)
  213.     move.l    (sp)+,a2
  214.     rts
  215. ;==========================================================================
  216. TR_Init
  217.     movem.l    d1-d7/a0-a6,-(sp)
  218.     lea    $dff000,a2
  219.     move.w    #15,$96(a2)
  220.  
  221. ;    bset    #1,$bfe001
  222.  
  223.     lea    TR_EmptyWave(pc),a0
  224.     move.l    a0,$a0(a2)
  225.     move.l    a0,$b0(a2)
  226.     move.l    a0,$c0(a2)
  227.     move.l    a0,$d0(a2)
  228.     move.w    #4,$a4(a2)
  229.     move.w    #4,$b4(a2)
  230.     move.w    #4,$c4(a2)
  231.     move.w    #4,$d4(a2)
  232.     moveq    #0,d0
  233.     move.l    d0,$a6(a2)
  234.     move.l    d0,$b6(a2)
  235.     move.l    d0,$c6(a2)
  236.     move.l    d0,$d6(a2)
  237.  
  238.     move.l    tr_data(pc),a0
  239.     lea    TR_7de(pc),a1
  240.     move.w    #$8000,(a1)
  241.     move.b    #$3f,$2e(a1)
  242.  
  243.     move.l    (a0)+,$3e(a1)
  244.     move.l    (a0)+,$42(a1)
  245.     move.l    (a0)+,$46(a1)
  246.     move.l    (a0)+,$4a(a1)
  247.  
  248.     move.l    a0,10(a1)
  249.     add.w    $40(a1),a0
  250.     move.l    a0,14(a1)
  251.     add.w    $44(a1),a0
  252.     move.l    a0,$12(a1)
  253.     add.w    $48(a1),a0
  254.     move.l    a0,$16(a1)
  255.     add.w    $4c(a1),a0
  256.     moveq    #0,d0
  257.     move.w    (a0)+,d0
  258.     move.l    a0,$3a(a1)
  259.     add.w    d0,a0
  260.     move.w    (a0)+,d0
  261.     move.l    a0,6(a1)
  262.     add.w    d0,a0
  263.     move.l    a0,2(a1)
  264.     move.w    -2(a0),d0
  265.     add.l    #$58,d0
  266.     add.w    d0,a0
  267.     move.w    (a0)+,d0
  268.     move.l    a0,$4e(a1)
  269.     add.w    d0,a0
  270.     move.w    (a0)+,d0
  271.     move.l    a0,$52(a1)
  272.     add.w    d0,a0
  273.     move.l    (a0)+,d0
  274.     move.l    a0,$1a(a1)
  275.     add.l    d0,a0
  276.     move.l    a0,$26(a1)
  277.     lea    $20(a0),a0
  278.     move.l    a0,$22(a1)
  279.     move.b    #5,$2f(a1)
  280.     clr.b    $30(a1)
  281.  
  282.     lea    TR_83c(pc),a2
  283.  
  284.     lea    TR_Voice1(pc),a0
  285.     move.l    10(a1),10(a0)
  286.     move.l    $3e(a1),$36(a0)
  287.     bsr.s    TR_InitVoice
  288.  
  289.     lea    TR_Voice2(pc),a0
  290.     move.l    14(a1),10(a0)
  291.     move.l    $42(a1),$36(a0)
  292.     bsr.s    TR_InitVoice
  293.  
  294.     lea    TR_Voice3(pc),a0
  295.     move.l    $12(a1),10(a0)
  296.     move.l    $46(a1),$36(a0)
  297.     bsr.s    TR_InitVoice
  298.  
  299.     lea    TR_Voice4(pc),a0
  300.     move.l    $16(a1),10(a0)
  301.     move.l    $4a(a1),$36(a0)
  302.     bsr.s    TR_InitVoice
  303.  
  304.     movem.l    (sp)+,d1-d7/a0-a6
  305.     moveq    #0,d0
  306.     rts
  307.  
  308. TR_InitVoice
  309.     MOVE.L    A2,6(A0)
  310.     MOVE.L    $3A(A1),$2C(A0)
  311.     MOVE.B    #$3F,$1D(A0)
  312.     CLR.L    14(A0)
  313.     CLR.L    $12(A0)
  314.     CLR.L    $16(A0)
  315.     CLR.W    $1A(A0)
  316.     CLR.B    $1C(A0)
  317.     CLR.L    $1E(A0)
  318.     CLR.L    $22(A0)
  319.     CLR.L    $26(A0)
  320.     CLR.W    $2A(A0)
  321.     CLR.L    $30(A0)
  322.     CLR.W    $34(A0)
  323.     RTS
  324.  
  325. tr_end
  326.     MOVE.L    A2,-(SP)
  327.  
  328.     LEA    $DFF000,A2
  329.     MOVE.W    #15,$96(A2)
  330.     MOVEQ    #0,D0
  331.     MOVE.L    D0,$A6(A2)
  332.     MOVE.L    D0,$B6(A2)
  333.     MOVE.L    D0,$C6(A2)
  334.     MOVE.L    D0,$D6(A2)
  335.  
  336. ;    BCLR    #1,$BFE001
  337.  
  338.     lea    structadr(pc),a2
  339.     move.w    d0,UPS_Flags(a2)
  340.     move.l    d0,ups_voice1adr(a2)
  341.     move.l    d0,ups_voice2adr(a2)
  342.     move.l    d0,ups_voice3adr(a2)
  343.     move.l    d0,ups_voice4adr(a2)
  344.     move.w    #1,ups_enabled(a2)
  345.  
  346.     MOVE.L    (SP)+,A2
  347.     MOVEQ    #0,D0
  348.     RTS
  349.  
  350. TR_Music
  351.     MOVEM.L    D1-D7/A0-A6,-(SP)
  352.  
  353.     lea    StructAdr(pc),a0
  354.     move.w    #-1,UPS_Enabled(a0)
  355.     move.w    #UPSB_Adr!UPSB_LEN!UPSB_Per!UPSB_Vol!UPSB_DMACON,UPS_Flags(a0)
  356.     clr.w    UPS_Voice1Per(a0)
  357.     clr.w    UPS_Voice2Per(a0)
  358.     clr.w    UPS_Voice3Per(a0)
  359.     clr.w    UPS_Voice4Per(a0)
  360.  
  361.     LEA    TR_7DE(PC),A6
  362.     CLR.B    1(A6)
  363.     SUBQ.B    #1,$30(A6)
  364.     BPL.S    TR_2DC
  365.     MOVE.B    $2F(A6),$30(A6)
  366. TR_2DC
  367.     LEA    TR_Voice1(PC),A0
  368.     BSR.S    TR_302
  369.     LEA    TR_Voice2(PC),A0
  370.     BSR.S    TR_302
  371.     LEA    TR_Voice3(PC),A0
  372.     BSR.S    TR_302
  373.     LEA    TR_Voice4(PC),A0
  374.     BSR.S    TR_302
  375.  
  376.     MOVE.W    (A6),$DFF096
  377.  
  378.     lea    StructAdr(pc),a1
  379.     clr.w    UPS_Enabled(a1)
  380.  
  381.     MOVEM.L    (SP)+,D1-D7/A0-A6
  382.     MOVEQ    #0,D0
  383.     RTS
  384.  
  385. TR_302
  386.     MOVE.L    (A0),A1
  387.     MOVE.L    6(A0),A2
  388.     TST.B    $33(A0)
  389.     BPL.S    TR_33A
  390.     CLR.B    $33(A0)
  391.     MOVEQ    #0,D0
  392.     MOVE.L    $26(A6),A3
  393.     MOVE.B    $27(A2),D0
  394.     ADD.W    D0,D0
  395.     ADD.W    D0,D0
  396.     ADD.W    D0,A3
  397.     MOVE.L    (A3),A4
  398.     ADD.L    $22(A6),A4
  399.  
  400.     MOVE.W    4(A2),d0
  401.     move.w    d0,4(A1)        ;Len
  402.     bsr    getlen
  403.  
  404.     MOVEQ    #0,D0
  405.     MOVE.W    2(A2),D0
  406.     CLR.W    (A4)
  407.     ADD.W    D0,A4
  408.     MOVE.L    A4,(A1)            ;Adr
  409.     bsr    getadr
  410.  
  411. TR_33A
  412.     TST.B    $30(A6)
  413.     BNE    TR_484
  414.  
  415.     TST.W    $14(A0)
  416.     BNE.S    TR_378
  417.     MOVEQ    #0,D0
  418.     MOVE.L    10(A0),A3
  419.     MOVE.W    $12(A0),D1
  420.     MOVE.B    0(A3,D1.W),D0
  421.     MOVE.B    1(A3,D1.W),$2B(A0)
  422.     ASL.L    #6,D0
  423.     ADD.L    $1A(A6),D0
  424.     MOVE.L    D0,14(A0)
  425.     ADDQ.W    #2,D1
  426.     MOVE.W    D1,$12(A0)
  427.     CMP.W    $38(A0),D1
  428.     BMI.S    TR_378
  429.     MOVE.W    $36(A0),$12(A0)
  430.  
  431.     ifeq    test
  432.  
  433.     move.l    a2,-(sp)
  434.     move.l    dtbase(pc),a2
  435.     move.l    dtg_songend(a2),a2
  436.     jsr    (a2)
  437.     move.l    (sp)+,a2
  438.  
  439.     endc
  440.  
  441. TR_378    MOVEQ    #0,D0
  442.     MOVE.L    14(A0),A3
  443.     MOVE.W    $14(A0),D0
  444.     ADD.L    D0,A3
  445.     MOVEQ    #0,D0
  446.     MOVE.B    (A3),D0
  447.     BEQ    TR_40E
  448.     MOVE.W    4(A0),$DFF096
  449.     MOVE.B    D0,$1C(A0)
  450.     LEA    TR_Periods(PC),A4
  451.     ADD.B    $2B(A0),D0
  452.     ADD.W    D0,D0
  453.     MOVE.W    0(A4,D0.W),$1A(A0)
  454.     MOVEQ    #0,D1
  455.     MOVE.B    1(A3),D1
  456.     ADD.W    D1,D1
  457.     SUBQ.W    #2,D1
  458.     MOVE.L    6(A6),A4
  459.     ADD.W    D1,A4
  460.     MOVEQ    #0,D2
  461.     MOVE.W    (A4),D2
  462.     ADD.L    2(A6),D2
  463.     MOVE.L    D2,6(A0)
  464.     MOVE.L    D2,A2
  465.     MOVE.B    $26(A2),$33(A0)
  466.     BPL.S    TR_3EA
  467.     MOVEQ    #0,D0
  468.     MOVE.L    $26(A6),A4
  469.     MOVE.B    $27(A2),D0
  470.     ADD.W    D0,D0
  471.     ADD.W    D0,D0
  472.     ADD.W    D0,A4
  473.     MOVE.L    (A4),A4
  474.     ADD.L    $22(A6),A4
  475.     MOVE.L    A4,(A1)            ;Adr
  476.     bsr    getadr
  477.     move.w    (a2),d0
  478.     MOVE.W    d0,4(A1)        ;Len
  479.     bsr    getlen
  480. TR_3EA
  481.     CLR.W    $16(A0)
  482.     CLR.L    $20(A0)
  483.     CLR.B    $24(A0)
  484.     CLR.W    $30(A0)
  485.     CLR.L    $26(A0)
  486.     MOVE.B    $16(A2),$2A(A0)
  487.     CLR.B    $34(A0)
  488.     MOVE.B    $17(A2),$35(A0)
  489. TR_40E
  490.     moveq    #0,d0
  491.     MOVE.B    2(A3),D0
  492.     SUBQ.B    #1,D0
  493.     BMI.S    TR_47A
  494.     MOVE.B    3(A3),D1
  495.  
  496.     ADD.W    D0,D0
  497.     JMP    TR_420(PC,D0.W)
  498.  
  499. TR_420
  500.     BRA.S    TR_430
  501.  
  502.     BRA.S    TR_436
  503.  
  504.     BRA.S    TR_44E
  505.  
  506.     BRA.S    TR_456
  507.  
  508.     BRA.S    TR_45C
  509.  
  510.     BRA.S    TR_462
  511.  
  512.     BRA.S    TR_468
  513.  
  514.     BRA.S    TR_46E
  515.  
  516. TR_430    MOVE.B    D1,$2F(A6)
  517.     BRA.S    TR_47A
  518.  
  519. TR_436    TST.B    D1
  520.     BNE.S    TR_444
  521. ;    BSET    #1,$BFE001
  522.     BRA.S    TR_47A
  523.  
  524. TR_444
  525. ;    BCLR    #1,$BFE001
  526.     BRA.S    TR_47A
  527.  
  528. TR_44E    NEG.W    D1
  529.     MOVE.W    D1,$1E(A0)
  530.     BRA.S    TR_47A
  531.  
  532. TR_456    MOVE.W    D1,$1E(A0)
  533.     BRA.S    TR_47A
  534.  
  535. TR_45C    MOVE.B    D1,$25(A0)
  536.     BRA.S    TR_47A
  537.  
  538. TR_462    MOVE.B    D1,$1D(A0)
  539.     BRA.S    TR_47A
  540.  
  541. TR_468    MOVE.B    D1,$2E(A6)
  542.     BRA.S    TR_47A
  543.  
  544. TR_46E    ASL.L    #4,D1
  545.     MOVE.L    $3A(A6),A4
  546.     ADD.L    D1,A4
  547.     MOVE.L    A4,$2C(A0)
  548. TR_47A    ADDQ.W    #4,$14(A0)
  549.     AND.W    #$3F,$14(A0)
  550. TR_484    TST.B    $26(A2)
  551.     BMI.S    TR_4E0
  552.     TST.B    $16(A0)
  553.     BEQ.S    TR_496
  554.     SUBQ.B    #1,$16(A0)
  555.     BRA.S    TR_4E0
  556.  
  557. TR_496    MOVE.B    $27(A2),$16(A0)
  558.     MOVEQ    #0,D0
  559.     MOVEQ    #0,D2
  560.     LEA    $28(A2),A3
  561.     MOVE.B    $17(A0),D0
  562. TR_4A8    MOVE.B    D0,D1
  563.     MOVE.B    0(A3,D0.W),D2
  564.     CMP.B    #$FF,D2
  565.     BNE.S    TR_4C4
  566.     MOVE.B    1(A3,D0.W),D0
  567.     MOVE.B    0(A3,D0.W),D2
  568.     CMP.B    #$FF,D2
  569.     BNE.S    TR_4A8
  570.     BRA.S    TR_4E0
  571.  
  572. TR_4C4    ADD.W    D2,D2
  573.     ADD.L    $4E(A6),D2
  574.     MOVE.L    D2,A3
  575.     MOVE.W    (A3),D2
  576.     MOVE.L    $52(A6),A3
  577.     ADD.W    D2,A3
  578.  
  579.     move.l    a4,-(sp)
  580.     move.l    a3,a4
  581.     MOVE.L    A4,(A1)            ;Adr
  582.     bsr    getadr
  583.     move.l    (sp)+,a4
  584.  
  585.     MOVE.W    (A2),d0            ;Len
  586.     move.w    d0,4(a1)
  587.     bsr    getlen
  588.  
  589.     ADDQ.B    #1,D1
  590.     MOVE.B    D1,$17(A0)
  591. TR_4E0    MOVEQ    #0,D0
  592.     LEA    $15(A2),A3
  593.     MOVE.B    $34(A0),D0
  594.     ADD.W    D0,A3
  595.     MOVE.B    (A3),D0
  596.     TST.B    $27(A0)
  597.     BNE.S    TR_4FA
  598.     ADD.W    D0,$28(A0)
  599.     BRA.S    TR_4FE
  600.  
  601. TR_4FA    SUB.W    D0,$28(A0)
  602. TR_4FE    SUBQ.B    #1,$2A(A0)
  603.     BNE.S    TR_50E
  604.     MOVE.B    1(A3),$2A(A0)
  605.     NOT.B    $27(A0)
  606. TR_50E    TST.B    $35(A0)
  607.     BEQ.S    TR_51A
  608.     SUBQ.B    #1,$35(A0)
  609.     BRA.S    TR_532
  610.  
  611. TR_51A    ADDQ.B    #3,$34(A0)
  612.     CMP.B    #15,$34(A0)
  613.     BNE.S    TR_52C
  614.     MOVE.B    #12,$34(A0)
  615. TR_52C    MOVE.B    5(A3),$35(A0)
  616. TR_532    TST.B    $24(A0)
  617.     BEQ.S    TR_53E
  618.     SUBQ.B    #1,$24(A0)
  619.     BRA.S    TR_598
  620.  
  621. TR_53E    MOVEQ    #0,D0
  622.     MOVEQ    #0,D1
  623.     MOVE.W    $22(A0),D0
  624.     LEA    6(A2),A3
  625.     ADD.W    D0,A3
  626.     MOVE.B    (A3),D0
  627.     MOVE.B    1(A3),D1
  628.     CMP.W    $20(A0),D1
  629.     BPL.S    TR_572
  630.     SUB.W    D0,$20(A0)
  631.     CMP.W    $20(A0),D1
  632.     BMI.S    TR_598
  633.     MOVE.W    D1,$20(A0)
  634.     ADDQ.W    #3,$22(A0)
  635.     MOVE.B    2(A3),$24(A0)
  636.     BRA.S    TR_598
  637.  
  638. TR_572    ADD.W    D0,$20(A0)
  639.     CMP.W    $20(A0),D1
  640.     BPL.S    TR_598
  641.     MOVE.W    D1,$20(A0)
  642.     ADDQ.W    #3,$22(A0)
  643.     CMP.W    #15,$22(A0)
  644.     BNE.S    TR_592
  645.     MOVE.W    #12,$22(A0)
  646. TR_592    MOVE.B    2(A3),$24(A0)
  647. TR_598    MOVEQ    #0,D0
  648.     MOVE.B    $25(A0),D0
  649.     BEQ.S    TR_5C8
  650.     MOVE.W    $1A(A0),D1
  651.     CMP.W    $18(A0),D1
  652.     BPL.S    TR_5BA
  653.     SUB.W    D0,$18(A0)
  654.     CMP.W    $18(A0),D1
  655.     BMI.S    TR_5C8
  656.     MOVE.W    D1,$18(A0)
  657.     BRA.S    TR_5C8
  658.  
  659. TR_5BA
  660.     ADD.W    D0,$18(A0)
  661.     CMP.W    $18(A0),D1
  662.     BPL.S    TR_5C8
  663.     MOVE.W    D1,$18(A0)
  664. TR_5C8    
  665.     MOVEQ    #0,D0
  666.     MOVE.L    $2C(A0),A3
  667.     MOVE.W    $30(A0),D1
  668.     MOVE.B    0(A3,D1.W),D0
  669.     CMP.B    #$80,D0
  670.     BNE.S    TR_5E2
  671.     CLR.W    $30(A0)
  672.     BRA.S    TR_5C8
  673.  
  674. TR_5E2
  675.     ADDQ.W    #1,$30(A0)
  676.     AND.W    #15,$30(A0)
  677.     TST.B    $25(A0)
  678.     BEQ.S    TR_5F8
  679.     MOVE.W    $18(A0),D0
  680.     BRA.S    TR_60E
  681.  
  682. TR_5F8
  683.     LEA    TR_Periods(PC),A3
  684.     ADD.B    $1C(A0),D0
  685.     ADD.B    $2B(A0),D0
  686.     ADD.W    D0,D0
  687.     MOVE.W    0(A3,D0.W),D0
  688.     MOVE.W    D0,$18(A0)
  689. TR_60E
  690.     MOVE.W    $24(A2),D1
  691.     SUB.W    $1E(A0),D1
  692.     SUB.W    D1,$28(A0)
  693.     ADD.W    $28(A0),D0
  694.  
  695.     MOVE.W    D0,6(A1)        ;Per
  696.     bsr    getper
  697.     MOVE.W    $20(A0),D0
  698.     ROR.W    #2,D0
  699.     AND.W    #$3F,D0
  700.     CMP.B    $1D(A0),D0
  701.     BMI.S    TR_636
  702.     MOVE.B    $1D(A0),D0
  703. TR_636
  704.     CMP.B    $2E(A6),D0
  705.     BMI.S    TR_640
  706.     MOVE.B    $2E(A6),D0
  707. TR_640
  708.     bsr    TR_Setvoices
  709. ;    MOVE.W    D0,8(A1)        ;Vol
  710.  
  711.     MOVE.W    4(A0),D0
  712.     OR.W    D0,(A6)
  713.     RTS
  714.  
  715. TR_Voice1
  716.     dc.l    $DFF0A0
  717.     dc.l    $10000
  718.     dc.l    0,0,0,0,0,0,0,0,0,0,0,0
  719.     dc.w    0
  720. TR_Voice2
  721.     dc.l    $DFF0B0
  722.     dc.l    $20000
  723.     dc.l    0,0,0,0,0,0,0,0,0,0,0,0
  724.     dc.w    0
  725. TR_Voice3
  726.     dc.l    $DFF0C0
  727.     dc.l    $40000
  728.     dc.l    0,0,0,0,0,0,0,0,0,0,0,0
  729.     dc.w    0
  730. TR_Voice4
  731.     dc.l    $DFF0D0
  732.     dc.l    $80000
  733.     dc.l    0,0,0,0,0,0,0,0,0,0,0,0
  734.     dc.w    0
  735.  
  736. TR_Periods
  737.     dc.l    $1AC0,$194017D0,$16801530,$140012E0,$11D010D0,$FE00F00,$E200D60
  738.     dc.l    $CA00BE8,$B400A98,$A000970,$8E80868,$7F00780,$71006B0,$65005F4
  739.     dc.l    $5A0054C,$50004B8,$4740434,$3F803C0,$3880358,$32802FA,$2D002A6
  740.     dc.l    $280025C,$23A021A,$1FC01E0,$1C401AC,$194017D,$1680153,$140012E
  741.     dc.l    $11D010D,$FE00F0,$E200D6,$CA00BE,$B400AA,$A00097,$8F0087,$7F0078
  742.     dc.l    $710071,$710071,$710071,$710071,$710071,$710071,$71
  743. TR_7DE
  744.     dc.l    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  745.     dc.w    0
  746. TR_EmptyWave
  747.     dc.l    0,0
  748. TR_83C
  749.     dc.l    $40000
  750.     dc.l    1
  751.     dc.l    $FF000000
  752.     dc.l    0
  753.     dc.l    0
  754.     dc.l    $101
  755.     dc.l    $2020202
  756.     dc.l    $2020202
  757.     dc.l    $2020202
  758.     dc.l    $FE
  759.     dc.l    $FF0000
  760.  
  761.     ifne    test
  762. mod
  763.     incdir    vr0:
  764.     incbin    tron.jetsons
  765.  
  766.     endc
  767.  
  768.     END
  769.  
  770.