Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ; --------------------------------------------------------------------------
  2. ; FILE: TPlanet.Asm
  3. ; DATE: November 4, 2008
  4. ; --------------------------------------------------------------------------
  5.  
  6. ; --------------------------------------------------------------------------
  7. ; STARS
  8. ; --------------------------------------------------------------------------
  9. align PROC_ALIGN
  10. TPlanet_Stars:
  11.     mov     ecx, 434
  12.     call    TConsole_ProutGameMsg
  13.     ret
  14.  
  15. ; --------------------------------------------------------------------------
  16. ; KABOOM
  17. ; --------------------------------------------------------------------------
  18. virtual at 0
  19. loc46:
  20.     .pTrekData PVOID ?
  21.     .dbl_WHAMMO DOUBLE ?
  22.     .byte_IsKilled BYTE ?
  23.     .byte_2 BYTE ?
  24.     .pKPower PDOUBLE ?
  25.     .pKDist PDOUBLE ?
  26.     .pKX PBYTE ?
  27.     .pKY PBYTE ?
  28.     .size = $
  29. end virtual
  30. ; --------------------------------------------------------------------------
  31. align PROC_ALIGN
  32. TPlanet_KaBoom:
  33.     mcBeginLocals loc46.size
  34.  
  35.     call    TPlanet_Stars
  36.  
  37.     mcLoadGameDataPtr esi
  38.     mcStoreLocal loc46.pTrekData, esi
  39.     cmp     [esi + TREKDATA.SHIP], CHAR_ENTERPRISE
  40.     jne     .print
  41.  
  42.     call    TConsole_Cram3Asterisks
  43.  
  44. .print:
  45.     mov     ecx, 472
  46.     call    TConsole_Cram
  47.     call    TConsole_CramShip
  48.     mov     ecx, 473
  49.     call    TConsole_Prout
  50.  
  51.     call    TPlanet_Stars
  52.     call    TConsole_ScrollUp
  53.  
  54.     mcLoadLocal esi, loc46.pTrekData
  55.     cmp     [esi + TREKDATA.NENHERE], 0
  56.     je      .L20
  57.  
  58.     fld     [esi + TREKDATA.ENERGY]
  59.     fld     [glb_dbl_25]
  60.     fmulp
  61.     fstp    [esp + loc46.dbl_WHAMMO]
  62.  
  63. .outer_loop:
  64.     mcLoadLocal ebx, loc46.pTrekData
  65.     mcLoadMemberRef esi, TREKDATA.KX
  66.     mcLoadMemberRef edi, TREKDATA.KY
  67.     mcStoreLocal loc46.pKX, esi
  68.     mcStoreLocal loc46.pKY, edi
  69.  
  70.     movzx   ecx, [ebx + TREKDATA.NENHERE]
  71.     jecxz   .L20
  72.  
  73.     mcLoadMemberRef esi, TREKDATA.KPOWER
  74.     mcLoadMemberRef edi, TREKDATA.KDIST
  75.  
  76. .check_whammo:
  77.     fld     tbyte [esi]
  78.     fld     tbyte [edi]
  79.     fmulp
  80.     fld     [esp + loc46.dbl_WHAMMO]
  81.     mc_CMP_ST0_ST1
  82.     jc      .next_whammo
  83.  
  84.     mcLoadLocal esi, loc46.pKX
  85.     mcLoadLocal edi, loc46.pKY
  86.     mov     al, [esi]
  87.     mov     dl, [edi]
  88.     call    TPhasers_DeadKlingon
  89.     invoke  Sleep, 500
  90.     jmp     .outer_loop
  91.  
  92. .next_whammo:
  93.     inc     [esp + loc46.pKX]
  94.     inc     [esp + loc46.pKY]
  95.     add     esi, 10
  96.     add     edi, 10
  97.     loop    .check_whammo
  98.  
  99. .L20:
  100.     mov     al, 10
  101.     call    TFinish_Main
  102.  
  103.     mcEndLocals loc46.size
  104.     ret
  105.  
  106. ; --------------------------------------------------------------------------
  107. ; PLANET
  108. ; --------------------------------------------------------------------------
  109. virtual at 0
  110. loc45:
  111.     .pTrekData PVOID ?
  112.     .pIWHERE PVOID ?
  113.     .bHasDilithium BOOL ?
  114.     .nPlanetClass INT32 ?
  115.     .dbl_DAMAGE_10 DOUBLE ?
  116.     .byte_1 BYTE ?
  117.     .byte_2 BYTE ?
  118.     .size = $
  119. end virtual
  120. ; --------------------------------------------------------------------------
  121. align PROC_ALIGN
  122. TPlanet_Main:
  123.     mcBeginLocals loc45.size
  124.  
  125.     mcLoadGameDataPtr esi
  126.     mcStoreLocal loc45.pTrekData, esi
  127.  
  128.     call    TConsole_ScrollUp
  129.     call    TConsole_SetCrewMsgAttr
  130.  
  131.     movzx   ecx, [esi + TREKDATA.INPLAN]
  132.     lea     edi, [esi + TREKDATA.PLNETS]
  133.     mcZeroBits eax
  134.  
  135. .check_planet_info:
  136.     add     al, [edi + TPlanet.planet_SCANNED]
  137.     add     edi, TPlanet.size
  138.     loop    .check_planet_info
  139.     mcOnRegNotZero eax, .L102
  140.  
  141.     mov     ecx, 380
  142.     call    TConsole_Prout
  143.  
  144. .exit_main:
  145.     mcEndLocals loc45.size
  146.     ret
  147.  
  148. .L102:
  149.     mov     ecx, 381
  150.     call    TConsole_Prout
  151.     call    TConsole_ScrollUp
  152.     call    TConsole_SetGameMsgAttr
  153.  
  154.     mcLoadLocal esi, loc45.pTrekData
  155.     movzx   ecx, [esi + TREKDATA.INPLAN]
  156.     lea     edi, [esi + TREKDATA.PLNETS]
  157.  
  158. .planet_report:
  159.     cmp     [edi + TPlanet.planet_SCANNED], 0
  160.     je      .next_planet
  161.  
  162.     push    ecx edi
  163.     mov     al, [edi + TPlanet.planet_X]
  164.     mov     dl, [edi + TPlanet.planet_Y]
  165.     mov     cl, 1
  166.     call    TConsole_CramLoc
  167.  
  168.     mov     ecx, 382
  169.     call    TConsole_Cram
  170.     pop     edi ecx
  171.  
  172.     mov     al, 'L'
  173.     add     al, [edi + TPlanet.planet_CLASS]
  174.     push    ecx edi
  175.     call    TConsole_PutChar
  176.     pop     edi ecx
  177.  
  178.     push    ecx edi
  179.     mov     ecx, 383
  180.     movzx   eax, [edi + TPlanet.planet_DILITHIUM]
  181.     add     ecx, eax
  182.     call    TConsole_Cram
  183.     mov     ecx, 385
  184.     call    TConsole_Prout
  185.     pop     edi ecx
  186.  
  187. .next_planet:
  188.     add     edi, TPlanet.size
  189.     loop    .planet_report
  190.     jmp     .exit_main
  191.  
  192. ; --------------------------------------------------------------------------
  193. ; ORBIT
  194. ; --------------------------------------------------------------------------
  195. TPlanet_Orbit:
  196.     mcBeginLocals loc45.size
  197.  
  198.     call    TConsole_ScrollUp
  199.  
  200.     mcLoadGameDataPtr esi
  201.     mcStoreLocal loc45.pTrekData, esi
  202.  
  203.     mov     [esi + TREKDATA.IDIDIT], 0
  204.     cmp     [esi + TREKDATA.INORBIT], 0
  205.     je      .L2
  206.  
  207.     call    TConsole_SetGameMsgAttr
  208.     mov     ecx, 386
  209.     call    TConsole_Prout
  210.     jmp     TPlanet_Main.exit_main
  211.  
  212. .L2:
  213.     mov     cl, DEV_IMPULSE_ENGINES
  214.     call    TArray_IsDamaged
  215.     jnc     .L3
  216.  
  217.     mov     cl, DEV_WARP_ENGINES
  218.     call    TArray_IsDamaged
  219.     jnc     .L3
  220.  
  221.     call    TConsole_SetGameMsgAttr
  222.     mov     ecx, 387
  223.     call    TConsole_Prout
  224.     jmp     TPlanet_Main.exit_main
  225.  
  226. .L3:
  227.     mcLoadLocal esi, loc45.pTrekData
  228.     cmp     [esi + TREKDATA.PLNETX], 0
  229.     je      .L5
  230.  
  231.     mov     al, [esi + TREKDATA.SECTX]
  232.     sub     al, [esi + TREKDATA.PLNETX]
  233.     movsx   eax, al
  234.     call    TCommon_AbsEAX
  235.     push    eax
  236.  
  237.     mov     al, [esi + TREKDATA.SECTY]
  238.     sub     al, [esi + TREKDATA.PLNETY]
  239.     movsx   eax, al
  240.     call    TCommon_AbsEAX
  241.     pop     edx
  242.     add     eax, edx
  243.     cmp     eax, 2
  244.     jbe     .L10
  245.  
  246. .L5:
  247.     call    TConsole_SetGameMsgAttr
  248.     call    TConsole_CramShip
  249.     mov     ecx, 388
  250.     call    TConsole_Prout
  251.     jmp     TPlanet_Main.exit_main
  252.  
  253. .L10:
  254.     call    TRandom_Ranf
  255.     fld     [glb_dbl_0dot03]
  256.     fmulp
  257.     fld     [glb_dbl_0dot02]
  258.     faddp
  259.     mcLoadLocal edi, loc45.pTrekData
  260.     fstp    [edi + TREKDATA.TIME]
  261.  
  262.     mov     cl, DEV_WARP_ENGINES
  263.     call    TArray_IsDamaged
  264.     jnc     .go_ahead_sulu
  265.  
  266.     mcLoadLocal edi, loc45.pTrekData
  267.     fld     [edi + TREKDATA.TIME]
  268.     fld     [glb_dbl_Ten]
  269.     fmulp
  270.     fstp    [edi + TREKDATA.TIME]
  271.  
  272. .go_ahead_sulu:
  273.     call    TConsole_SetCrewMsgAttr
  274.     mov     ecx, 389
  275.     call    TConsole_Prout
  276.     call    TCommon_NewCondition
  277.  
  278.     mov     eax, .L17
  279.     mcStoreLocal loc45.pIWHERE, eax
  280.  
  281. .L16:
  282.     mcLoadLocal edi, loc45.pTrekData
  283.     mov     [edi + TREKDATA.IDIDIT], 1
  284.  
  285.     call    TEvents_Main
  286.  
  287.     mcLoadLocal esi, loc45.pTrekData
  288.     cmp     [esi + TREKDATA.ALLDONE], 1
  289.     je      TPlanet_Main.exit_main
  290.     cmp     [esi + TREKDATA.JUSTIN], 1
  291.     je      TPlanet_Main.exit_main
  292.  
  293.     call    TArray_MyGalaxyPtr
  294.     cmp     dword [ebx], 1000
  295.     je      TPlanet_Main.exit_main
  296.     jmp     [esp + loc45.pIWHERE]
  297.  
  298. .L17:
  299.     mov     ecx, 390
  300.     call    TConsole_Cram
  301.  
  302.     call    TRandom_Ranf
  303.     fld     [glb_dbl_7200]
  304.     fmulp
  305.     fld     [glb_dbl_1400]
  306.     faddp
  307.     fld     st
  308.     mcLoadLocal edi, loc45.pTrekData
  309.     fstp    [edi + TREKDATA.HEIGHT]
  310.  
  311.     mov     cl, 2
  312.     call    TConsole_CramFloat
  313.  
  314.     mov     ecx, 391
  315.     call    TConsole_Prout
  316.  
  317.     mcLoadLocal edi, loc45.pTrekData
  318.     inc     [edi + TREKDATA.INORBIT]
  319.     jmp     TPlanet_Main.exit_main
  320.  
  321. ; --------------------------------------------------------------------------
  322. ; BEAM
  323. ; --------------------------------------------------------------------------
  324. TPlanet_Beam:
  325.     mcBeginLocals loc45.size
  326.  
  327.     mcLoadGameDataPtr esi
  328.     mcStoreLocal loc45.pTrekData, esi
  329.  
  330.     call    TConsole_ScrollUp
  331.  
  332.     mov     cl, DEV_TRANSPORTER
  333.     call    TArray_IsDamaged
  334.     jnc     .L19
  335.  
  336.     call    TConsole_SetGameMsgAttr
  337.     mov     ecx, 392
  338.     call    TConsole_Prout
  339.  
  340.     mov     cl, DEV_SHUTTLE_CRAFT
  341.     call    TArray_GetDblDamage
  342.     fldz
  343.     mc_CMP_ST0_ST1
  344.     jnz     TPlanet_Main.exit_main
  345.  
  346.     call    TConsole_ScrollUp
  347.     call    TConsole_SetCrewMsgAttr
  348.     mov     ecx, 393
  349.     call    TConsole_Prout
  350.     jmp     TPlanet_Main.exit_main
  351.  
  352. .L19:
  353.     mcLoadLocal esi, loc45.pTrekData
  354.     cmp     [esi + TREKDATA.INORBIT], 0
  355.     jne     .L1910
  356.  
  357. .L1901:
  358.     call    TConsole_SetGameMsgAttr
  359.     call    TConsole_CramShip
  360.     mov     ecx, 394
  361.     call    TConsole_Prout
  362.     jmp     TPlanet_Main.exit_main
  363.  
  364. .L1910:
  365.     cmp     [esi + TREKDATA.SHLDUP], 0
  366.     je      .L1920
  367.  
  368.     call    TConsole_SetGameMsgAttr
  369.     mov     ecx, 395
  370.     call    TConsole_Prout
  371.     jmp     TPlanet_Main.exit_main
  372.  
  373. .L1920:
  374.     movzx   ecx, [esi + TREKDATA.IPLANET]
  375.     call    TArray_PlanetPtr
  376.     movzx   eax, [edi + TPlanet.planet_DILITHIUM]
  377.     mcStoreLocal loc45.bHasDilithium, eax
  378.     cmp     [edi + TPlanet.planet_SCANNED], 1
  379.     je      .L1940
  380.  
  381. .L1930:
  382.     call    TConsole_SetCrewMsgAttr
  383.     mov     ecx, 396
  384.     call    TConsole_Prout
  385.     mov     ecx, 397
  386.     call    TConsole_Prout
  387.     mov     ecx, 398
  388.     call    TConsole_Prout
  389.     jmp     TPlanet_Main.exit_main
  390.  
  391. .L1940:
  392.     mcLoadLocal esi, loc45.pTrekData
  393.     cmp     [esi + TREKDATA.LANDED], 1
  394.     je      .L30
  395.  
  396.     cmp     [esp + loc45.bHasDilithium], 1
  397.     je      .L20
  398.  
  399.     call    TConsole_SetCrewMsgAttr
  400.     mov     ecx, 399
  401.     call    TConsole_Prout
  402.     mov     ecx, 400
  403.     call    TConsole_Prout
  404.  
  405.     mov     eax, .L20
  406.     mcStoreLocal loc45.pIWHERE, eax
  407.  
  408. .L1950:
  409.     mcLoad8bitsToReg32 ecx, 158
  410.     call    TGame_JA
  411.     jnc     TPlanet_Main.exit_main
  412.     jmp     [esp + loc45.pIWHERE]
  413.  
  414. .L20:
  415.     call    TConsole_SetCrewMsgAttr
  416.     mov     ecx, 401
  417.     call    TConsole_Prout
  418.     call    TConsole_ScrollUp
  419.  
  420.     call    TConsole_SetGameMsgAttr
  421.     mov     ecx, 402
  422.     call    TConsole_Prout
  423.     call    TConsole_ScrollUp
  424.  
  425.     call    TConsole_SetCrewMsgAttr
  426.     mov     ecx, 403
  427.     call    TConsole_Prout
  428.  
  429. .L21:
  430.     call    TConsole_ScrollUp
  431.     call    TConsole_SetGameMsgAttr
  432.     mov     ecx, 404
  433.     call    TConsole_Prout
  434.     invoke  Sleep, 1200
  435.  
  436.     fld     [glb_dbl_0dot98]
  437.     call    TRandom_Ranf
  438.     mc_CMP_ST0_ST1
  439.     jnc     .L35
  440.  
  441.     mov     ecx, 405
  442.     call    TConsole_Prout
  443.     invoke  Sleep, 1200
  444.  
  445.     mov     ecx, 406
  446.     call    TConsole_Prout
  447.  
  448.     mcLoadLocal esi, loc45.pTrekData
  449.     neg     [esi + TREKDATA.LANDED]
  450.  
  451.     cmp     [esi + TREKDATA.LANDED], 1
  452.     je      .reset_mining_flag
  453.     cmp     [esi + TREKDATA.IMINE], 1
  454.     jne     .reset_mining_flag
  455.  
  456.     mov     [esi + TREKDATA.ICRYSTL], 1
  457.  
  458. .reset_mining_flag:
  459.     mov     [esi + TREKDATA.IMINE], 0
  460.     jmp     TPlanet_Main.exit_main
  461.  
  462. .L30:
  463.     cmp     [esi + TREKDATA.ISCRAFT], 1
  464.     je      .L32
  465.  
  466.     call    TConsole_SetGameMsgAttr
  467.     mov     ecx, 407
  468.     call    TConsole_Prout
  469.     jmp     TPlanet_Main.exit_main
  470.  
  471. .L32:
  472.     call    TConsole_SetGameMsgAttr
  473.     mov     ecx, 408
  474.     call    TConsole_Prout
  475.     call    TConsole_ScrollUp
  476.  
  477.     mov     ecx, 409
  478.     call    TConsole_Prout
  479.     mov     ecx, 410
  480.     call    TConsole_Prout
  481.     call    TConsole_ScrollUp
  482.  
  483.     call    TConsole_SetCrewMsgAttr
  484.     mov     ecx, 411
  485.     call    TConsole_Prout
  486.     jmp     .L21
  487.  
  488. .L35:
  489.     call    TConsole_ScrollUp
  490.     mov     ecx, 412
  491.     call    TConsole_Prout
  492.  
  493.     call    TConsole_SetCrewMsgAttr
  494.     call    TConsole_ScrollUp
  495.     mov     ecx, 413
  496.     call    TConsole_Prout
  497.  
  498.     mov     al, 13
  499.  
  500. .finished:
  501.     call    TFinish_Main
  502.     jmp     TPlanet_Main.exit_main
  503.  
  504. ; --------------------------------------------------------------------------
  505. ; MINE
  506. ; --------------------------------------------------------------------------
  507. TPlanet_Mine:
  508.     mcBeginLocals loc45.size
  509.  
  510.     mcLoadGameDataPtr esi
  511.     mcStoreLocal loc45.pTrekData, esi
  512.  
  513.     mov     [esi + TREKDATA.IDIDIT], 0
  514.     call    TConsole_ScrollUp
  515.  
  516.     mcLoadLocal esi, loc45.pTrekData
  517.     cmp     [esi + TREKDATA.LANDED], 1
  518.     je      .L50
  519.  
  520.     call    TConsole_SetGameMsgAttr
  521.     mov     ecx, 414
  522.     call    TConsole_Prout
  523.     jmp     TPlanet_Main.exit_main
  524.  
  525. .L50:
  526.     movzx   ecx, [esi + TREKDATA.IPLANET]
  527.     call    TArray_PlanetPtr
  528.     movzx   eax, [edi + TPlanet.planet_CLASS]
  529.     mcStoreLocal loc45.nPlanetClass, eax
  530.     cmp     [edi + TPlanet.planet_DILITHIUM], 1
  531.     je      .L51
  532.  
  533.     call    TConsole_SetGameMsgAttr
  534.     mov     ecx, 415
  535.     call    TConsole_Prout
  536.     jmp     TPlanet_Main.exit_main
  537.  
  538. .L51:
  539.     call    TRandom_Ranf
  540.     fld     [glb_dbl_0dot2]
  541.     fmulp
  542.     fld     [glb_dbl_0dot1]
  543.     faddp
  544.     fild    [esp + loc45.nPlanetClass]
  545.     fmulp
  546.     mcLoadLocal esi, loc45.pTrekData
  547.     fstp    [esi + TREKDATA.TIME]
  548.  
  549.     mov     eax, .L52
  550.     mcStoreLocal loc45.pIWHERE, eax
  551.     jmp     TPlanet_Orbit.L16
  552.  
  553. .L52:
  554.     invoke  Sleep, 1200
  555.     call    TConsole_SetGameMsgAttr
  556.     mov     ecx, 416
  557.     call    TConsole_Prout
  558.  
  559.     mcLoadLocal edi, loc45.pTrekData
  560.     mov     [edi + TREKDATA.IMINE], 1
  561.     jmp     TPlanet_Main.exit_main
  562.  
  563. ; --------------------------------------------------------------------------
  564. ; CRYSTAL
  565. ; --------------------------------------------------------------------------
  566. TPlanet_Crystal:
  567.     mcBeginLocals loc45.size
  568.  
  569.     mcLoadGameDataPtr esi
  570.     mcStoreLocal loc45.pTrekData, esi
  571.  
  572.     call    TConsole_ScrollUp
  573.  
  574.     mcLoadLocal edi, loc45.pTrekData
  575.     cmp     [edi + TREKDATA.ICRYSTL], 1
  576.     je      .L55
  577.  
  578.     call    TConsole_SetGameMsgAttr
  579.     mov     ecx, 417
  580.     call    TConsole_Prout
  581.     jmp     TPlanet_Main.exit_main
  582.  
  583. .L55:
  584.     fld     [glb_dbl_1000]
  585.     fld     [edi + TREKDATA.ENERGY]
  586.     mc_CMP_ST0_ST1
  587.     jc      .L5510
  588.  
  589.     call    TConsole_SetCrewMsgAttr
  590.     mov     ecx, 418
  591.     call    TConsole_Prout
  592.     mov     ecx, 419
  593.     call    TConsole_Prout
  594.     jmp     TPlanet_Main.exit_main
  595.  
  596. .L5510:
  597.     call    TConsole_SetCrewMsgAttr
  598.     mov     ecx, 420
  599.     call    TConsole_Prout
  600.     mov     ecx, 421
  601.     call    TConsole_Prout
  602.     mov     ecx, 422
  603.     call    TConsole_Prout
  604.  
  605.     mov     eax, .L56
  606.     mcStoreLocal loc45.pIWHERE, eax
  607.     jmp     TPlanet_Beam.L1950
  608.  
  609. .L56:
  610.     call    TConsole_SetCrewMsgAttr
  611.     call    TConsole_ScrollUp
  612.     mov     ecx, 423
  613.     call    TConsole_Prout
  614.     mov     ecx, 424
  615.     call    TConsole_Prout
  616.     invoke  Sleep, 1200
  617.  
  618.     mcLoadLocal edi, loc45.pTrekData
  619.     fld     [edi + TREKDATA.CRYPROB]
  620.     fld     st
  621.     faddp
  622.     fstp    [edi + TREKDATA.CRYPROB]
  623.  
  624.     call    TConsole_ScrollUp
  625.     mov     ecx, 425
  626.     call    TConsole_Prout
  627.     mov     ecx, 426
  628.     call    TConsole_Prout
  629.     invoke  Sleep, 1200
  630.  
  631.     call    TConsole_ScrollUp
  632.     mov     ecx, 427
  633.     call    TConsole_Prout
  634.     call    TConsole_ScrollUp
  635.     invoke  Sleep, 1200
  636.  
  637.     call    TRandom_Ranf
  638.     mcLoadLocal esi, loc45.pTrekData
  639.     fld     [esi + TREKDATA.CRYPROB]
  640.     mc_CMP_ST0_ST1
  641.     jc      .L57
  642.  
  643.     call    TConsole_SetCrewMsgAttr
  644.     mov     ecx, 428
  645.     call    TConsole_Prout
  646.  
  647. .L5610:
  648.     mov     cl, ATTR_COND_RED
  649.     call    TConsole_SetAttr
  650.     mov     ecx, 429
  651.     call    TConsole_Prout
  652.  
  653.     call    TPlanet_Stars
  654.     mov     ecx, 430
  655.     call    TConsole_Prout
  656.  
  657.     call    TPlanet_KaBoom
  658.     jmp     TPlanet_Main.exit_main
  659.  
  660. .L57:
  661.     call    TRandom_Ranf
  662.     fld     [glb_dbl_0dot9]
  663.     fmulp
  664.     fld1
  665.     faddp
  666.     fld     [glb_dbl_5000]
  667.     fmulp
  668.  
  669.     mcLoadLocal esi, loc45.pTrekData
  670.     fld     [esi + TREKDATA.ENERGY]
  671.     faddp
  672.     fstp    [esi + TREKDATA.ENERGY]
  673.  
  674.     call    TConsole_SetCrewMsgAttr
  675.     mov     ecx, 431
  676.     call    TConsole_Prout
  677.     mov     ecx, 432
  678.     call    TConsole_Prout
  679.     mov     ecx, 433
  680.     call    TConsole_Prout
  681.     jmp     TPlanet_Main.exit_main
  682.  
  683. ; --------------------------------------------------------------------------
  684. ; SENSOR
  685. ; --------------------------------------------------------------------------
  686. TPlanet_Sensor:
  687.     mcBeginLocals loc45.size
  688.  
  689.     mcLoadGameDataPtr esi
  690.     mcStoreLocal loc45.pTrekData, esi
  691.  
  692.     call    TConsole_ScrollUp
  693.  
  694.     mov     cl, DEV_SR_SENSORS
  695.     call    TArray_IsDamaged
  696.     jnc     .L60
  697.  
  698.     mcLoadLocal esi, loc45.pTrekData
  699.     cmp     [esi + TREKDATA.CONDIT], CONDITION_DOCKED
  700.     je      .L60
  701.  
  702.     call    TConsole_SetGameMsgAttr
  703.     mov     ecx, 435
  704.     call    TConsole_Prout
  705.     jmp     TPlanet_Main.exit_main
  706.  
  707. .L60:
  708.     cmp     [esi + TREKDATA.PLNETX], 0
  709.     jne     .L65
  710.  
  711.     call    TConsole_SetGameMsgAttr
  712.     mov     ecx, 436
  713.     call    TConsole_Prout
  714.     jmp     TPlanet_Main.exit_main
  715.  
  716. .L65:
  717.     call    TConsole_SetCrewMsgAttr
  718.     mov     ecx, 437
  719.     call    TConsole_Cram
  720.  
  721.     mcLoadLocal esi, loc45.pTrekData
  722.     mov     cl, 1
  723.     mov     al, [esi + TREKDATA.QUADX]
  724.     mov     dl, [esi + TREKDATA.QUADY]
  725.     call    TConsole_CramLoc
  726.     mov     al, ':'
  727.     call    TConsole_PutChar
  728.     call    TConsole_ScrollUp
  729.  
  730.     mov     ecx, 438
  731.     call    TConsole_Cram
  732.  
  733.     mcLoadLocal esi, loc45.pTrekData
  734.     mov     cl, 2
  735.     mov     al, [esi + TREKDATA.PLNETX]
  736.     mov     dl, [esi + TREKDATA.PLNETY]
  737.     call    TConsole_CramLoc
  738.  
  739.     mov     ecx, 439
  740.     call    TConsole_Cram
  741.  
  742.     mcLoadLocal esi, loc45.pTrekData
  743.     movzx   ecx, [esi + TREKDATA.IPLANET]
  744.     call    TArray_PlanetPtr
  745.  
  746.     mov     [edi + TPlanet.planet_SCANNED], 1
  747.     mov     al, [edi + TPlanet.planet_DILITHIUM]
  748.     push    eax
  749.  
  750.     mov     al, [edi + TPlanet.planet_CLASS]
  751.     add     al, 'L'
  752.     call    TConsole_PutChar
  753.     mov     al, '`'
  754.     call    TConsole_PutChar
  755.     mov     al, '.'
  756.     call    TConsole_PutChar
  757.     call    TConsole_ScrollUp
  758.  
  759.     mov     ecx, 440
  760.     call    TConsole_Cram
  761.  
  762.     pop     eax
  763.     mcOnRegNotZero al, .report
  764.  
  765.     mov     ecx, 441
  766.     call    TConsole_Cram
  767.  
  768. .report:
  769.     mov     ecx, 442
  770.     call    TConsole_Prout
  771.     jmp     TPlanet_Main.exit_main
  772.  
  773. ; --------------------------------------------------------------------------
  774. ; GALILEO
  775. ; --------------------------------------------------------------------------
  776. TPlanet_Galileo:
  777.     mcBeginLocals loc45.size
  778.  
  779.     mcLoadGameDataPtr esi
  780.     mcStoreLocal loc45.pTrekData, esi
  781.  
  782.     mov     [esi + TREKDATA.IDIDIT], 0
  783.     call    TConsole_ScrollUp
  784.  
  785.     mov     cl, DEV_SHUTTLE_CRAFT
  786.     call    TArray_GetDblDamage
  787.     fld     st
  788.     fstp    [esp + loc45.dbl_DAMAGE_10]
  789.  
  790.     fldz
  791.     mc_CMP_ST0_ST1
  792.     jz      .L72
  793.     jc      .L71
  794.  
  795.     fld1
  796.     fchs
  797.     mc_CMP_ST0_ST1
  798.     jz      .L70
  799.  
  800.     mov     ecx, 443
  801.     call    TConsole_ProutGameMsg
  802.     jmp     TPlanet_Main.exit_main
  803.  
  804. .L70:
  805.     mov     ecx, 444
  806.     call    TConsole_ProutGameMsg
  807.     jmp     TPlanet_Main.exit_main
  808.  
  809. .L71:
  810.     mov     ecx, 445
  811.     call    TConsole_ProutGameMsg
  812.     jmp     TPlanet_Main.exit_main
  813.  
  814. .L72:
  815.     mcLoadLocal esi, loc45.pTrekData
  816.     cmp     [esi + TREKDATA.INORBIT], 1
  817.     jne     TPlanet_Beam.L1901
  818.  
  819.     cmp     [esi + TREKDATA.SHLDUP], 1
  820.     je      .craft_cant_thru_shields
  821.     cmp     [esi + TREKDATA.CONDIT], CONDITION_DOCKED
  822.     jne     .L80
  823.  
  824. .craft_cant_thru_shields:
  825.     mov     ecx, 446
  826.     call    TConsole_ProutGameMsg
  827.     jmp     TPlanet_Main.exit_main
  828.  
  829. .L80:
  830.     movzx   ecx, [esi + TREKDATA.IPLANET]
  831.     call    TArray_PlanetPtr
  832.     cmp     [edi + TPlanet.planet_SCANNED], 1
  833.     jne     TPlanet_Beam.L1930
  834.  
  835.     mcLoadLocal esi, loc45.pTrekData
  836.     fld     [esi + TREKDATA.HEIGHT]
  837.     fld     [glb_dbl_3E_neg_5]
  838.     fmulp
  839.     fstp    [esi + TREKDATA.TIME]
  840.  
  841.     cmp     [esi + TREKDATA.LANDED], 1
  842.     jne     .L100
  843.     cmp     [esi + TREKDATA.ISCRAFT], 1
  844.     jne     .L98
  845.  
  846.     mov     cl, DEV_TRANSPORTER
  847.     call    TArray_IsDamaged
  848.     jc      .L95
  849.  
  850.     call    TConsole_SetCrewMsgAttr
  851.     mov     ecx, 447
  852.     call    TConsole_Prout
  853.     mov     ecx, 458
  854.     call    TGame_JA
  855.     jc      TPlanet_Main.exit_main
  856.  
  857. .L95:
  858.     call    TConsole_SetGameMsgAttr
  859.     mov     cl, DEV_TRANSPORTER
  860.     call    TArray_IsDamaged
  861.     mov     ecx, 448
  862.     adc     ecx, 0
  863.     call    TConsole_Cram
  864.  
  865.     mov     ecx, 450
  866.     call    TConsole_Prout
  867.  
  868.     mcLoadLocal edi, loc45.pTrekData
  869.     mov     [edi + TREKDATA.ISCRAFT], 0
  870.  
  871.     mov     eax, .L97
  872.     mcStoreLocal loc45.pIWHERE, eax
  873.  
  874. .L96:
  875.     call    TConsole_ScrollUp
  876.     jmp     TPlanet_Orbit.L16
  877.  
  878. .L97:
  879.     mov     ecx, 451
  880.     call    TConsole_ProutGameMsg
  881.     jmp     TPlanet_Main.exit_main
  882.  
  883. .L98:
  884.     mov     ecx, 452
  885.     call    TConsole_ProutGameMsg
  886.     mov     ecx, 453
  887.     call    TConsole_Prout
  888.     call    TConsole_ScrollUp
  889.     mov     ecx, 454
  890.     call    TConsole_Prout
  891.  
  892.     mcLoadLocal edi, loc45.pTrekData
  893.     mov     [edi + TREKDATA.ICRAFT], 1
  894.     mov     [edi + TREKDATA.LANDED], -1
  895.  
  896.     mov     eax, .L99
  897.     mcStoreLocal loc45.pIWHERE, eax
  898.     jmp     .L96
  899.  
  900. .L99:
  901.     mcLoadLocal edi, loc45.pTrekData
  902.     mov     [edi + TREKDATA.ICRAFT], 0
  903.     mov     [edi + TREKDATA.ISCRAFT], 1
  904.  
  905.     cmp     [edi + TREKDATA.IMINE], 0
  906.     je      .L97
  907.  
  908.     mov     [edi + TREKDATA.ICRYSTL], 1
  909.     mov     [edi + TREKDATA.IMINE], 0
  910.     jmp     .L97
  911.  
  912. .L100:
  913.     mov     ecx, 455
  914.     call    TConsole_ProutGameMsg
  915.     mov     ecx, 456
  916.     call    TConsole_Prout
  917.     call    TConsole_ScrollUp
  918.     mov     ecx, 457
  919.     call    TConsole_Prout
  920.  
  921.     mcLoadLocal edi, loc45.pTrekData
  922.     mov     [edi + TREKDATA.ICRAFT], 1
  923.     mov     [edi + TREKDATA.ISCRAFT], 0
  924.  
  925.     mov     eax, .L110
  926.     mcStoreLocal loc45.pIWHERE, eax
  927.     jmp     .L96
  928.  
  929. .L110:
  930.     mcLoadLocal edi, loc45.pTrekData
  931.     mov     [edi + TREKDATA.LANDED], 1
  932.     mov     [edi + TREKDATA.ICRAFT], 0
  933.     jmp     .L97
  934.  
  935. ; --------------------------------------------------------------------------
  936. ; DEATHRA
  937. ; --------------------------------------------------------------------------
  938. TPlanet_DeathRay:
  939.     mcBeginLocals loc45.size
  940.  
  941.     mcLoadGameDataPtr esi
  942.     mcStoreLocal loc45.pTrekData, esi
  943.  
  944.     mov     [esi + TREKDATA.IDIDIT], 0
  945.     call    TConsole_ScrollUp
  946.  
  947.     cmp     [esi + TREKDATA.SHIP], CHAR_ENTERPRISE
  948.     je      .L113
  949.  
  950.     mov     ecx, 459
  951.     call    TConsole_ProutGameMsg
  952.     jmp     .done
  953.  
  954. .L113:
  955.     cmp     [esi + TREKDATA.NENHERE], 1
  956.     jae     .L115
  957.  
  958.     call    TConsole_SetCrewMsgAttr
  959.     mov     ecx, 460
  960.     call    TConsole_Prout
  961.     jmp     .done
  962.  
  963. .L115:
  964.     mov     cl, DEV_DEATHRAY
  965.     call    TArray_IsDamaged
  966.     jnc     .L116
  967.  
  968.     mov     ecx, 461
  969.     call    TConsole_ProutGameMsg
  970.     jmp     .done
  971.  
  972. .L116:
  973.     mcLoadLocal edi, loc45.pTrekData
  974.     mov     [edi + TREKDATA.IDIDIT], 1
  975.  
  976.     call    TConsole_SetCrewMsgAttr
  977.     mov     ecx, 462
  978.     call    TConsole_Prout
  979.     call    TConsole_ScrollUp
  980.     invoke  Sleep, 1600
  981.  
  982.     mov     ecx, 463
  983.     call    TConsole_Prout
  984.     invoke  Sleep, 1000
  985.  
  986.     mov     ecx, 464
  987.     call    TConsole_Prout
  988.     call    TConsole_ScrollUp
  989.     invoke  Sleep, 1200
  990.  
  991.     mov     ecx, 465
  992.     call    TConsole_ProutGameMsg
  993.     invoke  Sleep, 1200
  994.  
  995.     call    TConsole_SetCrewMsgAttr
  996.     mov     ecx, 466
  997.     call    TConsole_Prout
  998.     invoke  Sleep, 1200
  999.  
  1000.     call    TRandom_Ranf
  1001.     fld     [glb_dbl_0dot3]
  1002.     mc_CMP_ST0_ST1
  1003.     jc      .L130
  1004.  
  1005.     call    TMove_RedAlert
  1006.     mov     ecx, 467
  1007.     call    TConsole_ProutGameMsg
  1008.     invoke  Sleep, 1200
  1009.     jmp     TPlanet_Crystal.L5610
  1010.  
  1011. .L130:
  1012.     call    TConsole_ScrollUp
  1013.  
  1014.     mcLoadLocal edx, loc45.pTrekData
  1015.     movzx   ecx, [edx + TREKDATA.NENHERE]
  1016.  
  1017.     lea     esi, [edx + TREKDATA.KX]
  1018.     lea     edi, [edx + TREKDATA.KY]
  1019.  
  1020. .next_enemy:
  1021.     push    edi esi ecx
  1022.  
  1023.     mov     al, [esi]
  1024.     mov     dl, [edi]
  1025.     call    TPhasers_DeadKlingon
  1026.  
  1027.     pop     ecx esi edi
  1028.     loop    .next_enemy
  1029.  
  1030.     call    TConsole_ScrollUp
  1031.     call    TConsole_SetCrewMsgAttr
  1032.     mov     ecx, 468
  1033.     call    TConsole_Prout
  1034.  
  1035.     mcLoadLocal esi, loc45.pTrekData
  1036.     cmp     [esi + TREKDATA.REMKL], 0
  1037.     je      .game_won
  1038.  
  1039.     call    TConsole_ScrollUp
  1040.     mov     ecx, 469
  1041.     call    TConsole_Prout
  1042.  
  1043.     call    TRandom_Ranf
  1044.     fld     [glb_dbl_0dot05]
  1045.     mc_CMP_ST0_ST1
  1046.     jc      .deathray_damaged
  1047.  
  1048.     mov     ecx, 470
  1049.     call    TConsole_Prout
  1050.     jmp     .done
  1051.  
  1052. .deathray_damaged:
  1053.     mov     ecx, 471
  1054.     call    TConsole_Prout
  1055.  
  1056.     mov     cl, DEV_DEATHRAY
  1057.     fld     [glb_dbl_39dot95]
  1058.     call    TArray_SetDblDamage
  1059.     jmp     .done
  1060.  
  1061. .game_won:
  1062.     mov     al, 1
  1063.     jmp     TPlanet_Beam.finished
  1064.  
  1065. .done:
  1066.     mcEndLocals loc45.size
  1067.     ret
  1068.  
  1069. ; --- EOF ---
  1070.