Advertisement
Guest User

Untitled

a guest
Jan 12th, 2012
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. SHIP.ShootMissileSECOBID:
  3.            enter      4, 16d ; 10h
  4.            push       0
  5.            get_object
  6.            call85     SHIP.GetMissileMask ; 00009FF8
  7.            push       SP[6] ; arg3
  8.            pushb      10d ; 0Ah
  9.            push       2
  10.            get_object
  11.            call85     GetWareTypeCount ; 000054A3
  12.            push       SP[7] ; arg3
  13.            pushb      10d ; 0Ah
  14.            push       2
  15.            callasm    SA_GetTypeGSubType ; 00000F53
  16.            push       SP[1] ; loc2
  17.            if SP[0]=0 then jump L000B2E60
  18.            push       1
  19.            push       SP[1] ; loc3
  20.            shl        SP[1],SP[0]
  21.            push       SP[3] ; loc1
  22.            and        SP[0],SP[1]
  23.            if SP[0]=0 then jump L000B2E60
  24.            push       1
  25.            jump       L000B2E61
  26.  
  27. L000B2E60: push       0
  28. L000B2E61: if SP[0]=0 then jump L000B3121
  29.            push       1
  30.            push       SP[8] ; arg2
  31.            push       0
  32.            if SP[0]>=SP[1] then push 0 else push 1
  33.            if SP[0]=0 then jump L000B2E88
  34.            push       SP[8] ; arg2
  35.            push       1
  36.            get_object
  37.            call85     SHIP.GetNumLasersInTurret ; 00009F80
  38.            push       0
  39.            if SP[0]>=SP[1] then push 0 else push 1
  40.            if SP[0]=0 then jump L000B2E88
  41.            push       1
  42.            jump       L000B2E89
  43.  
  44. L000B2E88: push       0
  45. L000B2E89: if SP[0]=0 then jump L000B2EA5
  46.            push       SP[8] ; arg2
  47.            push       1
  48.            get_object
  49.            call85     SHIP.GetTurretLaserMask ; 00009F5F
  50.            push       0
  51.            if SP[0]<>SP[1] then push 0 else push 1
  52.            if SP[0]=0 then jump L000B2EA5
  53.            push       1
  54.            jump       L000B2EA6
  55.  
  56. L000B2EA5: push       0
  57. L000B2EA6: if SP[0]=0 then jump L000B2EB0
  58.            push       0
  59.            mov        SP[1],SP[0] ; loc4
  60.            pop
  61. L000B2EB0: push       SP[0] ; loc4
  62.            if SP[0]=0 then jump L000B2F91
  63.            push       0
  64.            mov        SP[9],SP[0] ; arg2
  65.            pop
  66.            push       0
  67.            pushd      2147483647d ; 7FFFFFFFh
  68.            push       SP[9] ; arg1
  69.            push       SP[0] ; loc7
  70.            if SP[0]=0 then push 1 else push 0
  71.            if SP[0]=0 then jump L000B2EE4
  72.            pushd      5000000d ; 004C4B40h
  73.            read       GBODY.var_1000_3 ; [3]
  74.            read       GBODY.var_1000_3 ; [3]
  75.            push       3
  76.            callasm    SA_FindNearestEnemyFromPos ; 0001019C
  77.            mov        SP[1],SP[0] ; loc7
  78.            pop
  79. L000B2EE4: push       0
  80.            mov        SP[3],SP[0] ; loc5
  81.            pop
  82. L000B2EE9: push       SP[2] ; loc5
  83.            push       0
  84.            get_object
  85.            call85     SHIP.GetNumCockpits ; 0000FB41
  86.            if SP[0]<=SP[1] then push 0 else push 1
  87.            if SP[0]=0 then jump L000B2F8E
  88.            jump       L000B2F0C
  89.  
  90. L000B2EFE: push       SP[2] ; loc5
  91.            push       1
  92.            add        SP[0],SP[1]
  93.            mov        SP[3],SP[0] ; loc5
  94.            pop
  95.            jump       L000B2EE9
  96.  
  97. L000B2F0C: push       SP[2] ; loc5
  98.            push       1
  99.            get_object
  100.            call85     SHIP.GetTurretIDFromCockpitID ; 00006343
  101.            push       SP[0] ; loc8
  102.            push       1
  103.            get_object
  104.            call85     SHIP.GetNumLasersInTurret ; 00009F80
  105.            push       0
  106.            if SP[0]>=SP[1] then push 0 else push 1
  107.            if SP[0]=0 then jump L000B2F3E
  108.            push       SP[0] ; loc8
  109.            push       1
  110.            get_object
  111.            call85     SHIP.GetTurretLaserMask ; 00009F5F
  112.            push       0
  113.            if SP[0]<>SP[1] then push 0 else push 1
  114.            if SP[0]=0 then jump L000B2F3E
  115.            push       1
  116.            jump       L000B2F3F
  117.  
  118. L000B2F3E: push       0
  119. L000B2F3F: if SP[0]=0 then jump L000B2F88
  120.            push       SP[1] ; loc7
  121.            if SP[0]=0 then jump L000B2F7B
  122.            push       SP[1] ; loc7
  123.            push       SP[4] ; loc5
  124.            read       GBODY.var_1000_3 ; [3]
  125.            push       3
  126.            callasm    SA_DistanceFromCockpit ; 000101B7
  127.            push       SP[0] ; loc9
  128.            push       SP[4] ; loc6
  129.            if SP[0]<=SP[1] then push 0 else push 1
  130.            if SP[0]=0 then jump L000B2F75
  131.            push       SP[1] ; loc8
  132.            mov        SP[14d],SP[0] ; arg2
  133.            pop
  134.            push       SP[0] ; loc9
  135.            mov        SP[4],SP[0] ; loc6
  136.            pop
  137. L000B2F75: pop
  138.            jump       L000B2F88
  139.  
  140. L000B2F7B: push       SP[0] ; loc8
  141.            mov        SP[13d],SP[0] ; arg2
  142.            pop
  143.            pop
  144.            jump       L000B2F8E
  145.  
  146. L000B2F88: pop
  147.            jump       L000B2EFE
  148.  
  149. L000B2F8E: popx       3
  150. L000B2F91: push       SP[10d] ; arg4
  151.            push       SP[10d] ; arg3
  152.            push       SP[9] ; arg1
  153.            push       SP[11d] ; arg2
  154.            read       GBODY.var_1000_3 ; [3]
  155.            pushb      5
  156.            callasm    SA_ShootMissile ; 00003EB9
  157.            push       SP[10d] ; arg3
  158.            push       1
  159.            callasm    SA_GetMissileTypeGuidance ; 00003E9F
  160.            push       SP[0] ; loc6
  161.            pushb      4
  162.            and        SP[0],SP[1]
  163.            if SP[0]=0 then jump L000B303F
  164.            begin_critical
  165.            if SP[0]<>0 then jump L000B303F
  166.            push       1
  167.            pushb      8
  168.            push       0
  169.            push       SP[3] ; loc6
  170.            push       2
  171.            and        SP[0],SP[1]
  172.            if SP[0]=0 then jump L000B2FD6
  173.            pushw      250d ; 0FAh
  174.            mov        SP[3],SP[0] ; loc7
  175.            pop
  176. L000B2FD6: push       1
  177.            mov        SP[1],SP[0] ; loc9
  178.            pop
  179. L000B2FDB: push       SP[0] ; loc9
  180.            push       SP[2] ; loc8
  181.            if SP[0]<=SP[1] then push 0 else push 1
  182.            if SP[0]=0 then jump L000B303B
  183.            jump       L000B2FFC
  184.  
  185. L000B2FEC: push       SP[0] ; loc9
  186.            push       1
  187.            add        SP[0],SP[1]
  188.            mov        SP[1],SP[0] ; loc9
  189. ;           push       1
  190. ;           sub        SP[0],SP[1]
  191.            pop
  192.            jump       L000B2FDB
  193.  
  194. L000B2FFC: push       SP[2] ; loc7
  195.            push       1
  196.            callasm    TI_Delay ; 00002A99
  197.            pop
  198.            push       SP[0] ; loc9
  199.            push       SP[16d] ; arg4
  200.            push       SP[16d] ; arg3
  201.            push       SP[15d] ; arg1
  202.            push       SP[17d] ; arg2
  203.            read       GBODY.var_1000_3 ; [3]
  204.            pushb      6
  205.            callasm    SA_ShootMissile ; 00003EB9
  206.            push       SP[0] ; loc10
  207.            if SP[0]=0 then jump L000B3035
  208.            push       SP[0] ; loc10
  209.            push       1
  210.            pushw      2085d ; 0825h
  211.            create_object
  212.            call85     Obj_2085.CreateFromSECOBID ; 0000D62E
  213.            pop
  214. L000B3035: pop
  215.            jump       L000B2FEC
  216.  
  217. L000B303B: popx       3
  218.            end_critical
  219. L000B303F: push       SP[1] ; loc5
  220.            if SP[0]=0 then jump L000B311E
  221.            pushb      -1d ; 0FFh
  222.            push       SP[12d] ; arg3
  223.            pushb      10d ; 0Ah
  224.            push       3
  225.            get_object
  226.            call85     AddWare ; 0000000C
  227.            pop
  228.            push       SP[1] ; loc5
  229.            push       1
  230.            pushw      2085d ; 0825h
  231.            create_object
  232.            call85     Obj_2085.CreateFromSECOBID ; 0000D62E
  233.            push       SP[12d] ; arg3
  234.            pushb      35d ; 23h
  235.            if SP[0]<>SP[1] then push 0 else push 1
  236.            if SP[0]=0 then jump L000B308E
  237.            push       SP[10d] ; arg1
  238.            push       1
  239.            callasm    SA_GetEventObject ; 00000216
  240.            read       SHIP.var_2004_93 ; [105d ; 69h]
  241.            push       SP[1] ; loc8
  242.            push       SP[3] ; loc7
  243.            push       3
  244.            get_object
  245.            call85     Obj_2134.LaunchBoardingPod ; 000101CE
  246.            pop
  247.            push       0
  248.            write      SHIP.var_2004_93 ; [105d ; 69h]
  249.            pop
  250.            pop
  251. L000B308E: read       SHIP.var_2004_16 ; [28d ; 1Ch]
  252.            push       SP[13d] ; arg3
  253.            if SP[0]<>SP[1] then push 0 else push 1
  254.            if SP[0]=0 then jump L000B30AC
  255.            read       SHIP.var_2004_29 ; [41d ; 29h]
  256.            readvar    global.ga_Player ; [8]
  257.            if SP[0]<>SP[1] then push 0 else push 1
  258.            if SP[0]=0 then jump L000B30AC
  259.            push       1
  260.            jump       L000B30AD
  261.  
  262. L000B30AC: push       0
  263. L000B30AD: if SP[0]=0 then jump L000B3113
  264.            push       SP[5] ; loc2
  265.            push       1
  266.            if SP[0]<SP[1] then push 0 else push 1
  267.            if SP[0]=0 then jump L000B30FC
  268.            pushb      -1d ; 0FFh
  269.            write      SHIP.var_2004_16 ; [28d ; 1Ch]
  270.            pop
  271.            push       0
  272.            get_object
  273.            call85     ChangeCurrentMissileType ; 000066E2
  274.            pop
  275.            get_object
  276.            readvar    global.ga_PlayerShip ; [9]
  277.            if SP[0]<>SP[1] then push 0 else push 1
  278.            if SP[0]=0 then jump L000B30E4
  279.            read       SHIP.var_2004_16 ; [28d ; 1Ch]
  280.            push       0
  281.            if SP[0]>SP[1] then push 0 else push 1
  282.            if SP[0]=0 then jump L000B30E4
  283.            push       1
  284.            jump       L000B30E5
  285.  
  286. L000B30E4: push       0
  287. L000B30E5: if SP[0]=0 then jump L000B30F7
  288.            pushw      963d ; 03C3h
  289.            push       1
  290.            pushw      200d ; 0C8h
  291.            call86     X_AUDIO.PlaySample ;
  292.            pop
  293. L000B30F7: jump       L000B3113
  294.  
  295. L000B30FC: push       SP[11d] ; arg2
  296.            push       SP[6] ; loc2
  297.            push       1
  298.            sub        SP[0],SP[1]
  299.            push       SP[14d] ; arg3
  300.            get_object
  301.            pushb      4
  302.            pushw      605d ; 025Dh
  303.            call86     MONITORCONTROL.SetCurrentMissile ;
  304.            pop
  305. L000B3113: push       SP[0] ; loc7
  306.            mov        SP[7],SP[0] ; loc1
  307.            popx       7
  308.            ret
  309.  
  310. ;           pop
  311. L000B311E: popx       3
  312. L000B3121: push       0
  313.            mov        SP[3],SP[0] ; loc1
  314.            popx       3
  315.            ret
  316.  
  317. ;           popx       3
  318. ;           push       0
  319. ;           ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement