home *** CD-ROM | disk | FTP | other *** search
/ TCE Demo 2 / TCE_DEMO_CD2.iso / demo_cd_.2 / mags / maggie / maggie12.arj / maggie12.msa / ST_.ALL / SOURCE / NINJA.S next >
Text File  |  1987-04-22  |  8KB  |  454 lines

  1. ; Ninja III ProReplayer v2.2/v3.42
  2. ;
  3. ; Hacked by MUG U.K(tm) from Star Replayer v3.42
  4. ;
  5. ; Done at The Lemmings 'Out In The Middle Of Nowhere' Party on 13/7/93
  6. ;
  7. ; This routine auto-detects Speed Packer 3  - Remove it if necessary
  8. ;
  9. ; v2.2 DOES NOT WORK ON FALCON whereas v3.42 works beautifully !!
  10. ;
  11. ; NB: This routine uses Timer D, so therefore:
  12. ;
  13. ; Always ensure that Timer D is NOT turned off otherwise you get bugger
  14. ; all !!
  15. ;
  16.     opt    o+,s-
  17.  
  18. super    clr.l    -(a7)        ; set TAB to 8
  19.     move.w    #$20,-(a7)
  20.     trap    #1
  21.     addq.l    #6,a7
  22.     move.l    d0,old_sp
  23.  
  24.     move.l    $70.w,old_70
  25.  
  26.     lea    text(pc),a0    
  27.     bsr    print
  28.     bsr    mouseoff
  29.  
  30. start    bsr    play
  31.  
  32. wait    move.b    $fffc02,d0
  33. try_sp    cmpi.b    #$39,d0
  34.     bne.s    wait
  35.  
  36.     move.w    #3,replay+28
  37.  
  38.     move.w    #30000,d0
  39. loop    rept    150
  40.     nop
  41.     endr
  42.     dbf    d0,loop
  43.  
  44.     bsr.s    stop
  45.     bsr    mouseon
  46.  
  47. exit    move.l    old_70,$70.w
  48.     move.l    #old_sp,-(sp)
  49.     move.w    #$20,-(sp)
  50.     trap    #1
  51.     addq.l    #6,sp
  52.  
  53.     clr.l    -(sp)
  54.     trap    #1
  55.  
  56. ; Values for registers:
  57. ; ---------------------
  58. ;
  59. ; D0 = 
  60. ;
  61. ; $1388 = 5.0Khz
  62. ; $2134 = 8.5 khz
  63. ; $2ee0 = 12 khz
  64. ; $36b0 = 15.0 khz
  65. ; $5208 = 21 khz maximum ???
  66. ;
  67. ; D1 = 
  68. ;
  69. ; 0 = takes a bit of processor time (all volume changes)
  70. ; 2 = takes a little bit less (no volume changes ?)
  71. ; 3 = Shit !! Write an intro with this value !!
  72. ;
  73. ; D2 = 
  74. ;
  75. ; 0 = takes a bit of processor time (all pitch changes ?)
  76. ; 2 = takes a little bit less (no pitch changes ?)
  77.  
  78.  
  79. play    bclr    #0,$484.w
  80.  
  81.     lea    music,a0
  82.     bsr    unpack
  83.  
  84.     move.w    #$2ee0,d0            ; Khz
  85.     moveq.l    #0,d1            ; volume variation ?
  86.     moveq.l    #0,d2            ; 
  87.     lea    music,a0
  88.     jsr    replay
  89.     move.l    #new_70,$70.w
  90.     jsr    replay+4
  91. exitpl    rts
  92.  
  93. stop    bsr    replay+8
  94.     bset    #0,$484.w
  95.     rts
  96.  
  97. new_70    movem.l    a0-a4/d0-d6,-(sp)
  98. ;    move.w    #$1000,d0
  99. ;loop    dbf    d0,loop
  100.  
  101.      move.w    #$700,$ffff8240.w
  102.     jsr    replay+12
  103.     move.w    #$777,$ffff8240.w
  104.     movem.l    (sp)+,a0-a4/d0-d6
  105.     rte
  106.  
  107. print    move.l    a0,-(sp)
  108.     move.w    #9,-(sp)
  109.     trap    #1
  110.     addq.l    #6,sp
  111.     rts
  112.  
  113. mouseoff    move.l    #moff,-(a7)
  114.     clr.w    -(a7)
  115.     move.w    #$19,-(a7)
  116.     trap    #14
  117.     addq.l    #8,a7
  118.     dc.w    $a00a
  119.     rts
  120.  
  121. mouseon    move.l    #mon,-(a7)
  122.     clr.w    -(a7)
  123.     move.w    #$19,-(a7)
  124.     trap    #14
  125.     addq.l    #8,a7
  126.     dc.w    $a009
  127.     rts
  128.  
  129. moff    dc.w    $1212
  130. mon    dc.w    $0808
  131.  
  132. text    dc.b    $1b,"E"
  133.     dc.b    "+---------------------------------+",13,10
  134.     dc.b    "| Star Player Module Replay v3.42 |",13,10
  135.     dc.b    "|                                 |",13,10
  136.     dc.b    "| Coded by: Ninja III/Independent |",13,10
  137.     dc.b    "+---------------------------------+",13,10,10
  138.     dc.b    "Ripped by MUG U.K",$bf,13,10,10
  139.     dc.b    "Space to exit.",13,10
  140.     dc.b    0
  141.  
  142. old_sp    ds.l    1
  143. old_70    ds.l    1
  144. old_a07    ds.b    1
  145. old_a13    ds.b    1
  146. old_a15    ds.b    1
  147.     even
  148.  
  149. * UNPACK source for SPACKERv3    (C)THE FIREHAWKS'92
  150. * -------------------------------------------------
  151. * in    a0: even address start packed block
  152. * out    d0: original length or 0 if not SPv3 packed
  153. * =================================================
  154. * Use AUTO_SP3.PRG for multiblk packed files
  155.  
  156. unpack:    moveq    #0,d0
  157.     movem.l    d0-a6,-(sp)
  158.     lea    sp3_53(pc),a6
  159.     movea.l    a0,a1
  160.     cmpi.l    #'SPv3',(a1)+
  161.     bne.s    sp3_02
  162.     tst.w    (a1)
  163.     bne.s    sp3_02
  164.     move.l    (a1)+,d5
  165.     move.l    (a1)+,d0
  166.     move.l    (a1)+,(sp)
  167.     movea.l    a0,a2
  168.     adda.l    d0,a0
  169.     move.l    -(a0),-(a1)
  170.     move.l    -(a0),-(a1)
  171.     move.l    -(a0),-(a1)
  172.     move.l    -(a0),-(a1)
  173.     adda.l    (sp),a1
  174.     lea    sp3_58-sp3_53(a6),a3
  175.     moveq    #128-1,d0
  176. sp3_01:    move.l    (a2)+,(a3)+
  177.     dbf    d0,sp3_01
  178.     suba.l    a2,a3
  179.     move.l    a3,-(sp)
  180.     bsr.s    sp3_03
  181.     bsr    sp3_21
  182.     move.b    -(a0),d0
  183.     adda.l    (sp)+,a0
  184.     move.b    d0,(a0)+
  185.     lea    sp3_58-sp3_53(a6),a2
  186.     bsr    sp3_22
  187.     bsr    sp3_15
  188. sp3_02:    movem.l    (sp)+,d0-a6
  189.     rts
  190. sp3_03:    move.w    SR,d1
  191.     andi.w    #$2000,d1
  192.     beq.s    sp3_04
  193.     move.w    $FFFF8240.W,2(a6)
  194.     btst    #1,$FFFF8260.W
  195.     bne.s    sp3_04
  196.     swap    d5
  197. sp3_04:    clr.w    d5
  198.     move.w    -(a0),d6
  199.     lea    sp3_54-sp3_53(a6),a3
  200.     move.b    d6,(a3)+
  201.     moveq    #1,d3
  202.     moveq    #6,d4
  203. sp3_05:    cmp.b    d6,d3
  204.     bne.s    sp3_06
  205.     addq.w    #2,d3
  206. sp3_06:    move.b    d3,(a3)+
  207.     addq.w    #2,d3
  208.     dbf    d4,sp3_05
  209.     moveq    #$10,d4
  210.     move.b    -(a0),(a3)+
  211.     move.b    d4,(a3)+
  212.     move.b    -(a0),(a3)+
  213.     move.b    d4,(a3)+
  214.     move.b    -(a0),d4
  215.     move.w    d4,(a6)
  216.     lea    sp3_57-sp3_53(a6),a5
  217.     move.b    -(a0),d4
  218.     lea    1(a5,d4.w),a3
  219. sp3_07:    move.b    -(a0),-(a3)
  220.     dbf    d4,sp3_07
  221.     move.b    -(a0),-(a3)
  222.     beq.s    sp3_08
  223.     suba.w    d4,a0
  224. sp3_08:    moveq    #0,d2
  225.     move.b    -(a0),d2
  226.     move.w    d2,d3
  227.     move.b    -(a0),d7
  228. sp3_09:    bsr.s    sp3_10
  229.     bsr.s    sp3_10
  230.     dbf    d2,sp3_09
  231.     rts
  232. sp3_10:    not.w    d4
  233.     add.b    d7,d7
  234.     bne.s    sp3_11
  235.     move.b    -(a0),d7
  236.     addx.b    d7,d7
  237. sp3_11:    bcs.s    sp3_12
  238.     move.w    d2,d0
  239.     subq.w    #1,d3
  240.     sub.w    d3,d0
  241.     add.w    d0,d0
  242.     add.w    d4,d0
  243.     add.w    d0,d0
  244.     neg.w    d0
  245.     move.w    d0,-(a3)
  246.     rts
  247. sp3_12:    moveq    #2,d1
  248.     bsr    sp3_44
  249.     add.w    d0,d0
  250.     beq.s    sp3_13
  251.     move.b    d0,-(a3)
  252.     moveq    #2,d1
  253.     bsr    sp3_44
  254.     add.w    d0,d0
  255.     move.b    d0,-(a3)
  256.     rts
  257. sp3_13:    moveq    #2,d1
  258.     bsr    sp3_44
  259.     move.w    sp3_55-sp3_53(a6),d1
  260.     add.w    d0,d0
  261.     beq.s    sp3_14
  262.     move.w    sp3_55+2-sp3_53(a6),d1
  263. sp3_14:    or.w    d1,d0
  264.     move.w    d0,-(a3)
  265.     rts
  266. sp3_15:    move.w    SR,d1
  267.     andi.w    #$2000,d1
  268.     beq.s    sp3_16
  269.     move.w    2(a6),$FFFF8240.W
  270. sp3_16:    tst.w    d6
  271.     bpl.s    sp3_20
  272.     movea.l    a1,a2
  273.     movea.l    a1,a3
  274.     adda.l    4(sp),a3
  275. sp3_17:    moveq    #3,d6
  276. sp3_18:    move.w    (a2)+,d0
  277.     moveq    #3,d5
  278. sp3_19:    add.w    d0,d0
  279.     addx.w    d1,d1
  280.     add.w    d0,d0
  281.     addx.w    d2,d2
  282.     add.w    d0,d0
  283.     addx.w    d3,d3
  284.     add.w    d0,d0
  285.     addx.w    d4,d4
  286.     dbf    d5,sp3_19
  287.     dbf    d6,sp3_18
  288.     cmpa.l    a2,a3
  289.     blt.s    sp3_20
  290.     movem.w    d1-d4,-8(a2)
  291.     cmpa.l    a2,a3
  292.     bne.s    sp3_17
  293. sp3_20:    rts
  294. sp3_21:    move.b    -(a0),-(a1)
  295. sp3_22:    swap    d5
  296. ;    beq.s    sp3_23
  297.  
  298.     eori.w    #$777,$ffff8240.w
  299. ;    move.w    d5,$FFFF8240.W
  300.  
  301. sp3_23:    lea    sp3_56+2-sp3_53(a6),a3
  302.     cmpa.l    a0,a2
  303.     blt.s    sp3_25
  304.     rts
  305. sp3_24:    adda.w    d3,a3
  306. sp3_25:    add.b    d7,d7
  307.     bcc.s    sp3_28
  308.     beq.s    sp3_27
  309. sp3_26:    move.w    (a3),d3
  310.     bmi.s    sp3_24
  311.     bra.s    sp3_29
  312. sp3_27:    move.b    -(a0),d7
  313.     addx.b    d7,d7
  314.     bcs.s    sp3_26
  315. sp3_28:    move.w    -(a3),d3
  316.     bmi.s    sp3_24
  317. sp3_29:    ext.w    d3
  318.     jmp    sp3_30(pc,d3.w)
  319. sp3_30:    bra.s    sp3_30
  320.     bra.s    sp3_41
  321.     bra.s    sp3_41
  322.     bra.s    sp3_41
  323.     bra.s    sp3_41
  324.     bra.s    sp3_41
  325.     bra.s    sp3_37
  326.     bra.s    sp3_36
  327.     bra.s    sp3_32
  328.     bra.s    sp3_33
  329.     bra.s    sp3_31
  330.     bra.s    sp3_34
  331.     bra.s    sp3_21
  332. sp3_31:    move.b    (a5),-(a1)
  333.     bra.s    sp3_22
  334. sp3_32:    bsr.s    sp3_43
  335.     move.b    1(a5,d0.w),-(a1)
  336.     bra.s    sp3_22
  337. sp3_33:    bsr.s    sp3_43
  338.     add.w    (a6),d0
  339.     move.b    1(a5,d0.w),-(a1)
  340.     bra.s    sp3_22
  341. sp3_34:    moveq    #3,d1
  342.     bsr.s    sp3_44
  343.     lsr.w    #1,d0
  344.     bcc.s    sp3_35
  345.     not.w    d0
  346. sp3_35:    move.b    (a1),d1
  347.     add.w    d0,d1
  348.     move.b    d1,-(a1)
  349.     bra.s    sp3_22
  350. sp3_36:    lea    sp3_52-2-sp3_53(a6),a4
  351.     bsr.s    sp3_48
  352.     addi.w    #16,d0
  353.     lea    1(a1,d0.w),a3
  354.     move.b    -(a3),-(a1)
  355.     move.b    -(a3),-(a1)
  356.     bra    sp3_22
  357. sp3_37:    moveq    #3,d1
  358.     bsr.s    sp3_44
  359.     tst.w    d0
  360.     beq.s    sp3_38
  361.     addq.w    #5,d0
  362.     bra.s    sp3_40
  363. sp3_38:    move.b    -(a0),d0
  364.     beq.s    sp3_39
  365.     addi.w    #20,d0
  366.     bra.s    sp3_40
  367. sp3_39:    moveq    #13,d1
  368.     bsr.s    sp3_44
  369.     addi.w    #276,d0
  370. sp3_40:    move.w    d0,d3
  371.     add.w    d3,d3
  372. sp3_41:    lea    sp3_52-sp3_53(a6),a4
  373.     bsr.s    sp3_48
  374.     lsr.w    #1,d3
  375.     lea    1(a1,d0.w),a3
  376.     move.b    -(a3),-(a1)
  377. sp3_42:    move.b    -(a3),-(a1)
  378.     dbf    d3,sp3_42
  379.     bra    sp3_22
  380. sp3_43:    moveq    #0,d1
  381.     move.b    (a3),d1
  382. sp3_44:    moveq    #0,d0
  383.     cmpi.w    #7,d1
  384.     bpl.s    sp3_47
  385. sp3_45:    add.b    d7,d7
  386.     beq.s    sp3_46
  387.     addx.w    d0,d0
  388.     dbf    d1,sp3_45
  389.     rts
  390. sp3_46:    move.b    -(a0),d7
  391.     addx.b    d7,d7
  392.     addx.w    d0,d0
  393.     dbf    d1,sp3_45
  394.     rts
  395. sp3_47:    move.b    -(a0),d0
  396.     subq.w    #8,d1
  397.     bpl.s    sp3_45
  398.     rts
  399. sp3_48:    moveq    #0,d1
  400.     move.b    (a3),d1
  401.     adda.w    d1,a4
  402.     move.w    (a4),d1
  403.     bsr.s    sp3_44
  404.     tst.b    d6
  405.     beq.s    sp3_51
  406.     move.w    d0,d4
  407.     andi.w    #$FFF0,d4
  408.     andi.w    #$000F,d0
  409.     beq.s    sp3_50
  410.     lsr.w    #1,d0
  411.     beq.s    sp3_49
  412.     roxr.b    #1,d7
  413.     bcc.s    sp3_50
  414.     move.b    d7,(a0)+
  415.     moveq    #-128,d7
  416.     bra.s    sp3_50
  417. sp3_49:    moveq    #2,d1
  418.     bsr.s    sp3_44
  419.     add.w    d0,d0
  420.     or.w    d4,d0
  421.     bra.s    sp3_51
  422. sp3_50:    lea    sp3_54-sp3_53(a6),a3
  423.     or.b    (a3,d0.w),d4
  424.     move.w    d4,d0
  425. sp3_51:    add.w    18(a4),d0
  426.     rts
  427.  
  428.     DC.W    3
  429. sp3_52:    DC.W    4,5,7,8,9,10,11,12
  430.     DC.W    -16
  431.     DC.W    0,32,96,352,864,1888,3936,8032
  432.  
  433. sp3_53:    DS.L    1
  434. sp3_54:    DS.B    8
  435. sp3_55:    DS.W    2*64
  436. sp3_56:    DS.W    2
  437.     DS.B    1
  438. sp3_57:    DS.B    1
  439.     DS.B    2*64
  440. sp3_58:    DS.B    512
  441.  
  442. ;
  443. ; NINJA3.BIN = v2.2
  444. ; NINJA342.BIN = v3.2
  445. ;
  446. replay    incbin    'ninja342.bin'
  447.     even
  448.  
  449.     section    data
  450.  
  451. music    incbin    'f:\modules\chip\best*.mod',0
  452. m_end    even
  453.  
  454.