home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_02 / PP24.MSA / AUTOMATN.2_3 / AUTO23.S next >
Text File  |  1990-01-21  |  7KB  |  338 lines

  1. * AUTOMATION 2.3 DEPACKER ROUTINES...
  2. * Ripped out of Automation's COMMANDO loader by The Alien.
  3. * Use this when you have packed data files as well as the main prg file
  4. * of a game... just insert your message, the filename of the main prg
  5. * and then load this assembled prg from your menu.
  6. * If you don't understand, I don't care- get lost, lamer!
  7. * I've only had time to put in a few decent labels, and some of this code
  8. * seems pretty redundant so have fun!
  9.  
  10. * Devpac 2 source, my tabs are set at 13.
  11.  
  12.     MOVEA.L    4(A7),A5
  13.     MOVE.L    $C(A5),D0
  14.     ADD.L    $14(A5),D0
  15.     ADD.L    $1C(A5),D0
  16.     ADDI.L    #$100,D0
  17.     MOVE.L    D0,-(A7)
  18.     MOVE.L    A5,-(A7)
  19.     MOVE.L    #$4A0000,-(A7)
  20.     TRAP    #1
  21.     LEA    $C(A7),A7
  22.     CLR.L    -(A7)
  23.     MOVE.W    #$20,-(A7)
  24.     TRAP    #1
  25.     ADDQ.L    #6,A7
  26.     LEA    save_oldsp(PC),A6
  27.     MOVE.L    D0,(A6)
  28.     MOVE.L    $84,oldtrap1+2
  29.     MOVE.L    #newtrap1,$84
  30.     MOVE.L    save_oldsp(PC),-(A7)
  31.     MOVE.W    #$20,-(A7)
  32.     TRAP    #1
  33.     ADDQ.L    #6,A7
  34.     CLR.W    -(A7)
  35.     PEA    -1
  36.     MOVE.L    (A7),-(A7)
  37.     MOVE.W    #5,-(A7)
  38.     TRAP    #14
  39.     LEA    $C(A7),A7
  40.     PEA    message
  41.     MOVE.W    #9,-(A7)
  42.     TRAP    #1
  43. mystack    CLR.L    $60000
  44.     PEA    $60000
  45.     MOVE.L    (A7),-(A7)
  46.     MOVE.L    #filename,-(A7)
  47.     MOVE.L    #$4B0000,-(A7)
  48.     TRAP    #1
  49.     LEA    $10(A7),A7
  50.     CLR.W    -(A7)
  51.     TRAP    #1
  52.     DS.L    1    unused!
  53. save_oldsp    DS.L    1
  54. newtrap1    MOVEM.L    D0-D7/A0-A6,saveregs
  55.     MOVEA.L    A7,A1
  56.     ADDQ.L    #6,A1
  57.     MOVE.W    (A7),D0
  58.     BTST    #$D,D0
  59.     BNE.S    ssp
  60.     MOVE.L    USP,A1
  61. ssp    CMPI.W    #0,(A1)    p_term?
  62.     BNE.S    not_term
  63.     MOVE.L    oldtrap1+2,$84.W    replace trap 1 vector
  64. not_term    CMPI.W    #$3D,(A1)    f_open?
  65.     BNE.S    not_open
  66.     MOVEA.L    2(A1),A1
  67.     CMPI.B    #$3A,1(A1)    :?    by the looks of this,
  68.     BNE.S    not_semi        he's checking for file
  69.     ADDQ.L    #2,A1        accesses such as A:\???
  70. not_semi    CMPI.B    #$5C,(A1)    \?    and making it use the
  71.     BNE.S    not_slash        current directory!
  72.     ADDQ.L    #1,A1
  73. not_slash    MOVEM.L    saveregs,D0-D7/A0-A6
  74. oldtrap1    jmp    0
  75.  
  76. read_addr    ds.l    1
  77.  
  78. sf_filnam    ds.l    1
  79.  
  80. save_dta    ds.l    1
  81.  
  82.  
  83. not_open    CMPI.W    #$4E,(A1)        dunno... weird.
  84.     BNE.S    not_sfirst
  85.     MOVE.L    2(A1),sf_filnam
  86.     BRA.S    not_slash
  87. not_sfirst    CMPI.W    #$2F,(A1)        gibber gibber
  88.     BNE.S    not_getdta
  89.     MOVE.L    2(A7),retaddr+2
  90.     MOVE.L    #newaddr,2(A7)
  91.     BRA    not_slash
  92. newaddr    MOVE.L    D0,save_dta
  93.     ADDI.L    #$1A,save_dta
  94.     MOVE.L    D0,-(A7)
  95.     BSR    L6364E
  96.     MOVE.L    (A7)+,D0
  97. retaddr    JMP    0
  98. not_getdta    CMPI.W    #$3F,(A1)        f_read?
  99.     BNE.S    not_slash
  100.     MOVE.L    8(A1),read_addr
  101.     CMPI.L    #$5E80,4(A1)
  102.     BNE.S    L634E4
  103.     LEA    L634FC(PC),A0
  104.     MOVE.L    (A0),4(A1)
  105.     MOVE.L    4(A0),(A0)
  106.     MOVE.L    8(A0),4(A0)
  107.     MOVE.L    $C(A0),8(A0)
  108.     MOVE.L    4(A1),$C(A0)
  109. L634E4    MOVE.L    2(A7),return+2
  110.     MOVE.L    #L6350C,2(A7)
  111.     BRA    not_slash
  112. L634F8    DS.L    1
  113. L634FC    DC.B    0,0,$3C,$68
  114.     DC.B    0,0,$34,$3E,0,0,$36,$10
  115.     DC.B    0,0,$39,$BC
  116. L6350C    MOVEM.L    D0-D7/A0-A6,-(A7)
  117.     MOVE.L    D0,L634F8
  118.     PEA    do_unpack
  119.     MOVE.W    #$26,-(A7)
  120.     TRAP    #14
  121.     ADDQ.L    #6,A7
  122.     MOVEM.L    (A7)+,D0-D7/A0-A6
  123.     MOVE.L    L634F8,D0
  124. return    JMP    0
  125. L63534    DS.W    1
  126. do_unpack    MOVEA.L    read_addr,A1
  127.     CMPI.W    #$FFFF,L63534
  128.     BEQ    L635E2
  129.     CMPI.B    #$4C,(A1)        L
  130.     BNE    not_slash
  131.     CMPI.B    #$53,1(A1)        S
  132.     BNE    not_slash
  133.     CMPI.B    #$44,2(A1)        D
  134.     BNE    not_slash
  135.     CMPI.B    #$21,3(A1)        !
  136.     BNE    not_slash
  137.     MOVE.L    4(A1),L634F8
  138.     SUBA.L    #$20,A1
  139.     LEA    L63620(PC),A0
  140.     MOVEQ    #$1F,D0
  141. L63582    MOVE.B    (A1)+,(A0)+
  142.     DBF    D0,L63582
  143.     MOVEA.L    read_addr,A0
  144.     MOVEA.L    A0,A1
  145.     SUBA.L    #$20,A1
  146.     MOVE.L    A7,save_sp
  147.     LEA    mystack(PC),A7
  148.     MOVE.L    8(A0),D0
  149.     ADDQ.L    #4,D0
  150. L635A6    MOVE.B    (A0)+,(A1)+
  151.     SUBQ.L    #1,D0
  152.     CMP.L    #0,D0
  153.     BNE.S    L635A6
  154.     MOVEA.L    read_addr,A0
  155.     MOVEA.L    A0,A1
  156.     SUBA.L    #$20,A0
  157.     BSR    depack
  158.     MOVEA.L    read_addr,A0
  159.     SUBA.L    #$20,A0
  160.     LEA    L63620(PC),A1
  161.     MOVEQ    #$1F,D0
  162. L635D6    MOVE.B    (A1)+,(A0)+
  163.     DBF    D0,L635D6
  164.     MOVEA.L    save_sp,A7
  165. L635E2    RTS
  166. saveregs    ds.l    15
  167. L63620    DC.W    0,0
  168.     DC.W    0,0,0,0
  169.     DC.W    0,0,0,0
  170.     DC.W    0,0,0,0
  171.     DC.W    0,0
  172. L63640    DS.L    1
  173. L63644    DC.W    0,0,0,0
  174.     DC.W    0
  175. L6364E    MOVEM.L    D1-D7/A0-A6,-(A7)
  176.     CLR.W    -(A7)
  177.     MOVE.L    sf_filnam,-(A7)
  178.     MOVE.W    #$3D,-(A7)
  179.     TRAP    #1
  180.     ADDQ.L    #8,A7
  181.     MOVE.L    D0,D5
  182.     MOVE.W    #$FFFF,L63534
  183.     PEA    L63644
  184.     MOVE.L    #8,-(A7)
  185.     MOVE.W    D5,-(A7)
  186.     MOVE.W    #$3F,-(A7)
  187.     TRAP    #1
  188.     LEA    $C(A7),A7
  189.     MOVE.W    D5,-(A7)
  190.     MOVE.W    #$3E,-(A7)
  191.     TRAP    #1
  192.     ADDQ.L    #4,A7
  193.     LEA    L63644(PC),A0
  194.     CMPI.L    #$4C534421,(A0)
  195.     BNE.S    L636A6
  196.     MOVE.L    4(A0),D0
  197.     MOVEA.L    save_dta,A0
  198.     MOVE.L    D0,(A0)
  199. L636A6    CLR.W    L63534
  200.     MOVEM.L    (A7)+,D1-D7/A0-A6
  201.     RTS
  202. depack    ADDA.L    #4,A0
  203.     MOVE.W    $FF8240,-(A7)
  204.     MOVE.L    A0,L63640
  205.     MOVE.L    (A0)+,D5
  206.     ADDA.L    D5,A1
  207.     ADDA.L    (A0),A0
  208.     SUBQ.L    #4,A0
  209.     TST.W    -(A0)
  210.     BPL.S    L636D2
  211.     SUBQ.L    #1,A0
  212. L636D2    MOVE.B    -(A0),D0
  213. L636D4    LSL.B    #1,D0
  214.     BNE.S    L636DC
  215.     MOVE.B    -(A0),D0
  216.     ROXL.B    #1,D0
  217. L636DC    BCC.S    L63738
  218.     CLR.W    D1
  219.     LSL.B    #1,D0
  220.     BNE.S    L636E8
  221.     MOVE.B    -(A0),D0
  222.     ROXL.B    #1,D0
  223. L636E8    BCC.S    L6372C
  224.     LEA    L63724(PC),A3
  225.     MOVEQ    #3,D3
  226. L636F0    CLR.W    D1
  227.     MOVE.B    0(A3,D3.W),D2
  228.     EXT.W    D2
  229.     MOVEQ    #-1,D4
  230.     LSL.W    D2,D4
  231.     NOT.W    D4
  232.     SUBQ.W    #1,D2
  233. L63700    LSL.B    #1,D0
  234.     BNE.S    L63708
  235.     MOVE.B    -(A0),D0
  236.     ROXL.B    #1,D0
  237. L63708    ROXL.W    #1,D1
  238.     DBF    D2,L63700
  239.     TST.W    D3
  240.     BEQ.S    L63718
  241.     CMP.W    D1,D4
  242.     DBNE    D3,L636F0
  243. L63718    MOVE.B    4(A3,D3.W),D2
  244.     EXT.W    D2
  245.     ADD.W    D2,D1
  246.     BRA    L6372C
  247. L63724    DC.B    $A,3,2,2,$E,7,4,1
  248. L6372C    MOVE.B    -(A0),-(A1)
  249.     MOVE.W    D0,$FFFF8240
  250.     DBF    D1,L6372C
  251. L63738    MOVEA.L    L63640,A3
  252.     ADDQ.L    #8,A3
  253.     CMPA.L    A3,A0
  254.     BLE    L6380A
  255.     LEA    L63782(PC),A3
  256.     MOVEQ    #3,D2
  257. L6374C    LSL.B    #1,D0
  258.     BNE.S    L63754
  259.     MOVE.B    -(A0),D0
  260.     ROXL.B    #1,D0
  261. L63754    BCC.S    L6375A
  262.     DBF    D2,L6374C
  263. L6375A    CLR.W    D1
  264.     ADDQ.W    #1,D2
  265.     MOVE.B    0(A3,D2.W),D3
  266.     BEQ.S    L63776
  267.     EXT.W    D3
  268.     SUBQ.W    #1,D3
  269. L63768    LSL.B    #1,D0
  270.     BNE.S    L63770
  271.     MOVE.B    -(A0),D0
  272.     ROXL.B    #1,D0
  273. L63770    ROXL.W    #1,D1
  274.     DBF    D3,L63768
  275. L63776    MOVE.B    5(A3,D2.W),D3
  276.     EXT.W    D3
  277.     ADD.W    D3,D1
  278.     BRA    L6378C
  279. L63782    DC.B    $A,2,1,0,0,$A,6,4
  280.     DC.B    3,2
  281. L6378C    CMPI.W    #2,D1
  282.     BEQ.S    L637D2
  283.     LEA    L637C6(PC),A3
  284.     MOVEQ    #1,D3
  285. L63798    LSL.B    #1,D0
  286.     BNE.S    L637A0
  287.     MOVE.B    -(A0),D0
  288.     ROXL.B    #1,D0
  289. L637A0    BCC.S    L637A6
  290.     DBF    D3,L63798
  291. L637A6    ADDQ.W    #1,D3
  292.     CLR.W    D2
  293.     MOVE.B    0(A3,D3.W),D4
  294.     EXT.W    D4
  295. L637B0    LSL.B    #1,D0
  296.     BNE.S    L637B8
  297.     MOVE.B    -(A0),D0
  298.     ROXL.B    #1,D0
  299. L637B8    ROXL.W    #1,D2
  300.     DBF    D4,L637B0
  301.     LSL.W    #1,D3
  302.     ADD.W    4(A3,D3.W),D2
  303.     BRA.S    L637F6
  304. L637C6    DC.B    $B,4,7,0,1,$20,0,0
  305.     DC.B    0,$20,0,0
  306. L637D2    CLR.W    D2
  307.     MOVEQ    #5,D3
  308.     CLR.W    D4
  309.     LSL.B    #1,D0
  310.     BNE.S    L637E0
  311.     MOVE.B    -(A0),D0
  312.     ROXL.B    #1,D0
  313. L637E0    BCC.S    L637E6
  314.     MOVEQ    #8,D3
  315.     MOVEQ    #$40,D4
  316. L637E6    LSL.B    #1,D0
  317.     BNE.S    L637EE
  318.     MOVE.B    -(A0),D0
  319.     ROXL.B    #1,D0
  320. L637EE    ROXL.W    #1,D2
  321.     DBF    D3,L637E6
  322.     ADD.W    D4,D2
  323. L637F6    LEA    0(A1,D2.W),A2
  324.     EXT.L    D1
  325.     ADDA.L    D1,A2
  326.     SUBQ.W    #1,D1
  327. L63800    MOVE.B    -(A2),-(A1)
  328.     DBF    D1,L63800
  329.     BRA    L636D4
  330. L6380A    MOVE.W    (A7)+,$FF8240
  331.     RTS
  332. save_sp    ds.l    1
  333.  
  334. * these are the bits you'll wanna change...
  335. filename    dc.b    "program.exe",0
  336. message    dc.b    27,"E",27,"f           WHOEVER PRESENTS..."
  337.     DC.B    13,10,10,"BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH"
  338.     DC.B    13,10,10," 2.3 DEPACKER RIPPED OFF BY THE ALIEN!",0