home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Sound / Player / DELIGLUE.LZX / GlueMon / GlueMon10.asm < prev   
Encoding:
Assembly Source File  |  1996-11-08  |  10.3 KB  |  527 lines

  1. ***
  2. *** NAME:    GlueMon v1.00 - Deliplayer version
  3. ***         (Original replay name unknown!)
  4. *** 
  5. *** AUTHOR:    Original replay (c) 1991 by GlueMaster / Northstar
  6. ***         Resourced and Deli-adapted by [·M·n·O·] (Lasse Jari Hansen)
  7. ***
  8. *** E-MAIL:    ljh@sigma.ou.dk
  9. ***
  10. *** HISTORY:    08-Nov-96 (Release)
  11. ***        21-Oct-96 (Deli-adaption)
  12. ***          -Feb-92 (Stinger-adaption)
  13. ***          -Jan-92 (Original Resourced)
  14. ***
  15. *** INFO:    Original replay and music was used in the reset-part of
  16. ***         `His Master's Noise' - a musicdisk by Mahoney & Kaktus
  17. ***         finished Oct. 1991!
  18. ***
  19. ***        It uses calculated drums.
  20. ***
  21. ***        To my knowledge there has only been released 10 tunes
  22. ***        for this replay, these are...
  23. ***
  24. ***            Bestick
  25. ***            Game Music 1
  26. ***            Gnu-Song
  27. ***            Gurksaft
  28. ***            Jobba
  29. ***            Loader
  30. ***            Popcorn
  31. ***            Songname
  32. ***            Trudelut
  33. ***            Woodsock    ;all by GlueMaster!
  34. ***
  35. ***        and are included in this release. (I have taken the liberty
  36. ***        of appending 8 bytes to each of    the modules for easy
  37. ***        recognition: "GLUE" and ~"GLUE")
  38. ***
  39. ***        Source released for educational purposes.
  40. ***        Feel free to contact me for bug reports or help.
  41. ***
  42.  
  43. pl_ver        =    1
  44. pl_rev        =    11
  45.  
  46. DTP_GetNumPatterns    =    $8000448a
  47.  
  48.         incdir    "INCLUDE:"
  49.         include    "misc/DeliPlayer.i"
  50.  
  51. ;
  52. ;
  53.         SECTION Player,Code
  54. ;
  55. ;
  56.  
  57.         PLAYERHEADER PlayerTagArray
  58.  
  59.         dc.b '$VER: GlueMon(?) player module V1.0 '
  60.         dc.b ' '
  61.         dc.b 0
  62.         even
  63.  
  64. PlayerTagArray    dc.l    DTP_RequestDTVersion,16
  65.         dc.l    DTP_PlayerVersion,(pl_ver<<16)+pl_rev
  66.         dc.l    DTP_PlayerName,PName
  67.         dc.l    DTP_Creator,CName
  68.         dc.l    DTP_DeliBase,delibase
  69.         dc.l    DTP_Check2,Chk
  70.         dc.l    DTP_CheckLen,ChkLen
  71.         dc.l    DTP_Flags,PLYF_SONGEND
  72.         dc.l    DTP_Interrupt,Int
  73.         dc.l    DTP_InitPlayer,InitPlay
  74.         dc.l    DTP_EndPlayer,EndPlay
  75.         dc.l    DTP_InitSound,InitSnd
  76.         dc.l    DTP_EndSound,EndSnd
  77.         dc.l    DTP_Volume,SetVol
  78.         dc.l    DTP_Balance,SetVol
  79.  
  80.         dc.l    DTP_ModuleName,modname
  81.         dc.l    DTP_GetNumPatterns,get_patts
  82.         dc.l    TAG_DONE
  83.  
  84. *-----------------------------------------------------------------------*
  85. ;
  86. ; Player/Creatorname
  87.  
  88. PName        dc.b 'GlueMon',0
  89. CName        dc.b 'GlueMaster / Northstar,',10
  90.         dc.b 'adapted by [·M·n·O·]',0
  91. my_song_end_first_flag
  92.         dc.b    0
  93.         even
  94. delibase    dc.l 0
  95. modname        dc.l    GLUE_modname
  96.  
  97. *-----------------------------------------------------------------------*
  98. ;
  99. ; Test the module
  100.  
  101. Chk        move.l    dtg_ChkData(a5),a0    ; GlueMon ?
  102.         moveq    #-1,d0            ; module unknown (default)
  103.         cmp.l    #$474C5545,(a0)        ; "GLUE"
  104.         bne.s    .ChkEnd
  105.         cmp.l    #~$474C5545,4(a0)    ; ~"GLUE"
  106.         bne.s    .ChkEnd
  107.         moveq    #0,d0            ; module recognised
  108. .ChkEnd        rts
  109.  
  110. ChkLen    =    *-Chk                ; DELI copies routine ?
  111.  
  112. *-----------------------------------------------------------------------*
  113. ;
  114. ; Interrupt for Replay
  115.  
  116. Int        movem.l    d0-a6,-(sp)
  117.         bsr    GLUE_music
  118.         movem.l    (sp)+,d0-a6
  119.         rts
  120.  
  121. InitPlay    moveq    #0,d0
  122.         move.l    dtg_GetListData(a5),a0    ; Function
  123.         jsr    (a0)
  124.  
  125.         lea    GLUE_data(pc),a1
  126.         addq.l    #8,a0            ;GLUE + ~GLUE
  127.         move.l    a0,(a1)            ;set module
  128.         lea    GLUE_modname(pc),a1
  129.         moveq    #8-1,d0
  130. .movname    move.b    (a0)+,(a1)+
  131.         dbra    d0,.movname
  132.  
  133.         move.l    dtg_AudioAlloc(a5),a0    ; Function
  134.         jsr    (a0)            ; returncode is already set !
  135.         rts
  136.  
  137. EndPlay        move.l    dtg_AudioFree(a5),a0    ; Function
  138.         jsr    (a0)
  139.         rts
  140.  
  141. InitSnd        movem.l    d0-a6,-(sp)
  142.         lea    my_song_end_first_flag(pc),a0
  143.         sf    (a0)
  144.  
  145.         bsr    GLUE_init
  146.         movem.l    (sp)+,d0-a6
  147.         rts
  148.  
  149. EndSnd        movem.l    d0-a6,-(sp)
  150.         bsr    GLUE_end
  151.         movem.l    (sp)+,d0-a6
  152.         rts
  153.  
  154. SetVol        lea    GLUE_vol(pc),a0
  155.         move    dtg_SndVol(a5),(a0)
  156.         lea    GLUE_LBal(pc),a0
  157.         move    dtg_SndLBal(a5),(a0)
  158.         lea    GLUE_RBal(pc),a0
  159.         move    dtg_SndRBal(a5),(a0)
  160.         rts
  161.  
  162. get_patts    movem.l    d1-a6,-(sp)
  163.         move.l    GLUE_data(pc),a0
  164.         lea    151(a0),a1
  165.         moveq    #0,d0
  166. .setbigpat    cmp.b    (a1)+,d0
  167.         bhs.s    .sbploop
  168.         move.b    -1(a1),d0
  169. .sbploop    cmp.b    #$ff,(a1)
  170.         bne.s    .setbigpat
  171.         addq    #1,d0
  172.         movem.l    (sp)+,d1-a6
  173.         rts
  174.  
  175. **********************************************************
  176.  
  177. ***
  178. ***  GLUEMASTER REPLAY v?.?? (NOTE: DRUMBUFFER -> CHIPMEM)
  179. ***
  180.  
  181. glue_end    lea    $dff000,a6
  182.         moveq    #0,d0
  183.         move    d0,$a8(a6)
  184.         move    d0,$b8(a6)
  185.         move    d0,$c8(a6)
  186.         move    d0,$d8(a6)
  187.         move    #$f,$96(a6)
  188.         rts
  189.  
  190. glue_music    tst    glue_1f60
  191.         beq.s    .ok
  192.         rts
  193. .ok        lea    glue_drum1,a3
  194.         move.l    glue_24c2,d1
  195.         moveq    #7,d0
  196. glue_1f7a    rol.l    #7,d1
  197.         add.l    #$6eca756d,d1
  198.         eori.l    #$9e59a92b,d1
  199.         move.l    d1,(a3)+
  200.         dbra    d0,glue_1f7a
  201.         move.l    d1,glue_24c2
  202.         lea    $dff000,a6
  203. glue_1f9a    cmp    #0,glue_250a
  204.         bls.b    glue_1fac
  205. glue_1fa4    sub    #0,glue_250a
  206. glue_1fac    cmp    #0,glue_250c
  207.         bls.b    glue_1fbe
  208. glue_1fb6    sub    #0,glue_250c
  209. glue_1fbe    cmp    #0,glue_250e
  210.         bls.b    glue_1fd0
  211. glue_1fc8    sub    #0,glue_250e
  212. glue_1fd0    cmp    #0,glue_2510
  213.         bls.b    glue_1fe2
  214. glue_1fda    sub    #0,glue_2510
  215. glue_1fe2    addq.b    #1,glue_2512
  216. glue_1fe8    cmp.b    #0,glue_2512
  217.         bcc.b    glue_2004
  218.         move.l    GLUE_data(pc),a4
  219.         cmp    #$524d,18(a4)
  220.         bne    glue_22c8
  221.         bra    glue_22b4
  222.  
  223. glue_2004    clr.b    glue_2512
  224.         add    #4,glue_261a
  225. glue_2012    cmp    #256,glue_261a
  226.         bcs.b    glue_205c
  227.         clr    glue_261a
  228.         addq    #1,glue_2518
  229.         move    glue_2518,d0
  230.         move.l    GLUE_data(pc),a0
  231.         lea    151(a0),a0
  232.         move.b    (a0,d0),d1
  233.         cmp.b    #$ff,d1
  234.         bne.b    glue_2048
  235.         clr    glue_2518
  236.         move.b    (a0),d1
  237.  
  238.         movem.l    d0-a6,-(sp)    ;************ added by [·M·n·O·]
  239.         lea    my_song_end_first_flag(pc),a0
  240.         tst.b    (a0)
  241.         bne.s    .doit
  242.         st    (a0)
  243.         bra.s    .dont
  244. .doit        move.l    delibase(pc),a0
  245.         move.l    dtg_SongEnd(a0),a0
  246.         jsr    (a0)
  247. .dont        movem.l    (sp)+,d0-a6    ;************ added by [·M·n·O·]
  248.  
  249. glue_2048    and    #$ff,d1
  250.         asl    #2,d1
  251.         lea    glue_patterns(pc),a0
  252.         move.l    (a0,d1),a2
  253.         move.l    a2,glue_2514
  254. glue_205c    move.l    glue_2514,a0
  255.         move    glue_261a,d0
  256.         move.b    (a0,d0),d1
  257.         cmp.b    #$fe,d1
  258.         bne.b    glue_207a
  259.         clr    glue_250a
  260.         bra.b    glue_2090
  261.  
  262. glue_207a    cmp.b    #$ff,d1
  263.         beq.b    glue_2090
  264.         bsr    glue_22ea
  265.         move    d1,$a6(a6)
  266. glue_2088    move    #0,glue_250a
  267. glue_2090    move.b    1(a0,d0),d1
  268.         cmp.b    #$fe,d1
  269.         bne.b    glue_20a2
  270.         clr    glue_250c
  271.         bra.b    glue_20b8
  272.  
  273. glue_20a2    cmp.b    #$ff,d1
  274.         beq.b    glue_20b8
  275.         bsr    glue_22ea
  276.         move    d1,$b6(a6)
  277. glue_20b0    move    #0,glue_250c
  278. glue_20b8    move.b    2(a0,d0),d1
  279.         cmp.b    #$fe,d1
  280.         bne.b    glue_20ca
  281.         clr    glue_250e
  282.         bra.b    glue_20e0
  283.  
  284. glue_20ca    cmp.b    #$ff,d1
  285.         beq.b    glue_20e0
  286.         bsr    glue_22ea
  287.         move    d1,$c6(a6)
  288. glue_20d8    move    #0,glue_250e
  289. glue_20e0    move.l    GLUE_data(pc),a4
  290.         cmp    #$524d,18(a4)
  291.         beq.b    glue_211c
  292.         move.b    3(a0,d0),d1
  293.         cmp.b    #$fe,d1
  294.         bne.b    glue_2100
  295.         clr    glue_2510
  296.         bra    glue_22c8
  297.  
  298. glue_2100    cmp.b    #$ff,d1
  299.         beq    glue_22c8
  300.         bsr    glue_22ea
  301.         move    d1,$d6(a6)
  302. glue_2110    move    #0,glue_2510
  303.         bra    glue_22c8
  304.  
  305. glue_211c    move.b    3(a0,d0),d1
  306.         cmp.b    #$ff,d1
  307.         beq    glue_22b4
  308.         cmp.b    #$c8,d1
  309.         bne.b    glue_2158
  310.         move.l    #glue_drum2,a0
  311.         move    #$0710,glue_24be
  312.         move    #$ff01,glue_24c0
  313.         move    #$0040,glue_2510
  314.         move.b    #8,glue_1fda+3
  315.         bra    glue_22a4
  316.  
  317. glue_2158    cmp.b    #$c9,d1
  318.         bne.b    glue_2188
  319.         move.l    #glue_drum1,a0
  320.         move    #$0710,glue_24be
  321.         move    #$0014,glue_24c0
  322.         move    #$0040,glue_2510
  323.         move.b    #4,glue_1fda+3
  324.         bra    glue_22a4
  325.  
  326. glue_2188    cmp.b    #$ca,d1
  327.         bne.b    glue_21b8
  328.         move.l    glue_2506,a0
  329.         move    #$01c4,glue_24be
  330.         move    #$ffce,glue_24c0
  331.         move    #$0040,glue_2510
  332.         move.b    #4,glue_1fda+3
  333.         bra    glue_22a4
  334.  
  335. glue_21b8    cmp.b    #$cb,d1
  336.         bne.b    glue_21e8
  337.         move.l    glue_2506,a0
  338.         move    #$025c,glue_24be
  339.         move    #$ffce,glue_24c0
  340.         move    #$0040,glue_2510
  341.         move.b    #4,glue_1fda+3
  342.         bra    glue_22a4
  343.  
  344. glue_21e8    cmp.b    #$cc,d1
  345.         bne.b    glue_2218
  346.         move.l    glue_2506,a0
  347.         move    #$0388,glue_24be
  348.         move    #$ffce,glue_24c0
  349.         move    #$0040,glue_2510
  350.         move.b    #4,glue_1fda+3
  351.         bra    glue_22a4
  352.  
  353. glue_2218    cmp.b    #$cd,d1
  354.         bne.b    glue_2246
  355.         move.l    glue_2506,a0
  356.         move    #$04b8,glue_24be
  357.         move    #$ffce,glue_24c0
  358.         move    #$0040,glue_2510
  359.         move.b    #4,glue_1fda+3
  360.         bra.b    glue_22a4
  361.  
  362. glue_2246    cmp.b    #$ce,d1
  363.         bne.b    glue_2274
  364.         move.l    #glue_drum1,a0
  365.         move    #$025c,glue_24be
  366.         move    #$fff6,glue_24c0
  367.         move    #$0030,glue_2510
  368.         move.b    #16,glue_1fda+3
  369.         bra.b    glue_22a4
  370.  
  371. glue_2274    cmp.b    #$cf,d1
  372.         bne.b    glue_22a4
  373.         move.l    #glue_drum1,a0
  374.         move    #$025c,glue_24be
  375.         move    #$fff6,glue_24c0
  376.         move    #$0028,glue_2510
  377.         move.b    #2,glue_1fda+3
  378.         bra    glue_22a4
  379.  
  380. glue_22a4    move    #8,$96(a6)
  381.         move.l    a0,$d0(a6)
  382.         move    #$8008,$96(a6)
  383. glue_22b4    move    glue_24c0,d1
  384.         sub    d1,glue_24be
  385.         move    glue_24be,$d6(a6)
  386.  
  387. glue_22c8    movem.l    d0/d2,-(a7)        ;;
  388.         move    GLUE_LBal(pc),d0    ;set LEFT vol
  389.         mulu    GLUE_Vol(pc),d0
  390.         lsr    #6,d0
  391.         move    glue_250a(pc),d2    ;chan 1
  392.         mulu    d0,d2
  393.         lsr    #6,d2
  394.         move    d2,$a8(a6)
  395.         move    glue_2510(pc),d2    ;chan 4
  396.         mulu    d0,d2
  397.         lsr    #6,d2
  398.         move    d2,$d8(a6)
  399.         move    GLUE_RBal(pc),d0    ;set RIGHT vol
  400.         mulu    GLUE_Vol(pc),d0
  401.         lsr    #6,d0
  402.         move    glue_250c(pc),d2    ;chan 2
  403.         mulu    d0,d2
  404.         lsr    #6,d2
  405.         move    d2,$b8(a6)
  406.         move    glue_250e(pc),d2    ;chan 3
  407.         mulu    d0,d2
  408.         lsr    #6,d2
  409.         move    d2,$c8(a6)
  410.         movem.l    (a7)+,d0/d2
  411.         rts
  412.  
  413. glue_22ea    lea    glue_periods(pc),a1
  414.         and    #$fe,d1
  415.         move    (a1,d1),d1
  416.         rts
  417.  
  418. glue_init    movem.l    d0-a6,-(a7)
  419.         move    #1,glue_1f60
  420.         lea    $dff000,a6
  421.         move.l    glue_data(pc),a5
  422.         move    #$f,$96(a6)
  423.         move.l    a5,d0
  424.         add.l    #$16,d0
  425.         move.l    d0,$a0(a6)
  426.         move    #$10,$a4(a6)
  427.         add.l    #$20,d0
  428.         move.l    d0,$b0(a6)
  429.         move    #$10,$b4(a6)
  430.         add.l    #$20,d0
  431.         move.l    d0,$c0(a6)
  432.         move    #$10,$c4(a6)
  433.         add.l    #$20,d0
  434.         move.l    d0,glue_2506
  435.         move.l    d0,$d0(a6)
  436.         move    #$10,$d4(a6)
  437.         move    #$800f,$96(a6)
  438.         move.b    21(a5),d1
  439.         and    #$ff,d1
  440.         asl    #2,d1
  441.         move    d1,glue_2012+2
  442.         move    d1,d2
  443.         sub    #4,d2
  444.         move    d2,glue_261a
  445.         move.b    150(a5),d0
  446.         move.b    d0,d2
  447.         sub.b    #2,d2
  448.         and    #$ff,d2
  449.         move    d2,glue_2518
  450.         add.b    #151,d0
  451.         and.l    #$ff,d0
  452.         add.l    a5,d0
  453.         lea    glue_patterns(pc),a0
  454.         and.l    #$ffff,d1
  455.         moveq    #64-1,d7
  456. glue_23a6    move.l    d0,(a0)+
  457.         add.l    d1,d0
  458.         dbra    d7,glue_23a6
  459.         move.b    08(a5),glue_2088+3
  460.         move.b    09(a5),glue_1fa4+3
  461.         move.b    10(a5),glue_1f9a+3
  462.         move.b    11(a5),glue_20b0+3
  463.         move.b    12(a5),glue_1fb6+3
  464.         move.b    13(a5),glue_1fac+3
  465.         move.b    14(a5),glue_20d8+3
  466.         move.b    15(a5),glue_1fc8+3
  467.         move.b    16(a5),glue_1fbe+3
  468.         move.l    GLUE_data(pc),a4
  469.         cmp    #$524d,$0012(a4)
  470.         beq.b    glue_241c
  471.         move.b    17(a5),glue_2110+3
  472.         move.b    18(a5),glue_1fda+3
  473.         move.b    19(a5),glue_1fd0+3
  474.         bra.b    glue_2422
  475.  
  476. glue_241c    clr.b    glue_1fd0+3
  477. glue_2422    move.b    20(a5),glue_1fe8+3
  478.         move.b    20(a5),d0
  479.         sub.b    #1,d0
  480.         move.b    d0,glue_2512
  481.         clr.l    glue_250a
  482.         clr.l    glue_250e
  483.         clr    glue_1f60
  484.         clr    $a8(a6)
  485.         clr    $b8(a6)
  486.         clr    $c8(a6)
  487.         clr    $d8(a6)
  488. glue_245at    movem.l    (a7)+,d0-a6
  489.         rts
  490.  
  491. glue_periods    dc    $d60,$ca0,$be8,$b40,$a98,$a00,$970,$8e8
  492.         dc    $868,$7f0,$780,$710,$6b0,$650,$5f4,$5a0
  493.         dc    $54c,$500,$4b8,$474,$434,$3f8,$3c0,$388
  494.         dc    $358,$328,$2fa,$2d0,$2a6,$280,$25c,$23a
  495.         dc    $21a,$1fc,$1e0,$1c4,$1ac,$194,$17d,$168
  496.         dc    $153,$140,$12e,$11d,$10d,$fe,$f0,$e2,$d6
  497.  
  498. glue_24be    dc    0
  499. glue_24c0    dc    0
  500. glue_24c2    dc.l    0
  501.  
  502. glue_2506    dc.l    0
  503. glue_250a    dc    0
  504. glue_250c    dc    0
  505. glue_250e    dc    0
  506. glue_2510    dc    0
  507. glue_2512    dc    0
  508. glue_2514    dc.l    0
  509. glue_2518    dc    0
  510. glue_patterns    blk.l    64,0
  511. glue_261a    dc    0
  512.  
  513. glue_1f60    dc    0
  514. GLUE_data    dc.l    0
  515. GLUE_vol    dc    0
  516. GLUE_LBal    dc    0
  517. GLUE_RBal    dc    0
  518. GLUE_modname    dcb.b    9,0
  519.         even
  520.  
  521.         section    drums,BSS_c
  522.  
  523. glue_drum1    ds.b    32
  524. glue_drum2    ds.b    32
  525.  
  526.  
  527.