Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ; --------------------------------------------------------------------------
  2. ; FILE: TImpulse.Asm
  3. ; DATE: November 9, 2008
  4. ; --------------------------------------------------------------------------
  5.  
  6. ; --------------------------------------------------------------------------
  7. ; IMPULSE
  8. ; --------------------------------------------------------------------------
  9. virtual at 0
  10. loc50:
  11.     .pTrekData PVOID ?
  12.     .dbl_POWER DOUBLE ?
  13.     .__padded__ BYTES 2
  14.     .size = $
  15. end virtual
  16. ; --------------------------------------------------------------------------
  17. align PROC_ALIGN
  18. TImpulse_Main:
  19.     mcBeginLocals loc50.size
  20.  
  21.     mcLoadGameDataPtr esi
  22.     mcStoreLocal loc50.pTrekData, esi
  23.  
  24.     mov     [esi + TREKDATA.IDIDIT], 0
  25.  
  26.     mov     cl, DEV_IMPULSE_ENGINES
  27.     call    TArray_IsDamaged
  28.     jc      .L40
  29.  
  30.     fld     [glb_dbl_30]
  31.     fld     [esi + TREKDATA.ENERGY]
  32.     mc_CMP_ST0_ST1
  33.     jc      .L5
  34.     jz      .L5
  35.  
  36.     call    TMove_GetCourseDistance
  37.  
  38.     mcLoadLocal esi, loc50.pTrekData
  39.     fldz
  40.     fld     [esi + TREKDATA.DIREC]
  41.     mc_CMP_ST0_ST1
  42.     jc      .done
  43.  
  44.     fld     [esi + TREKDATA.DIST]
  45.     fld     [glb_dbl_100]
  46.     fmulp
  47.     fld     [glb_dbl_20]
  48.     faddp
  49.     fstp    [esp + loc50.dbl_POWER]
  50.  
  51.     fld     [esi + TREKDATA.ENERGY]
  52.     fld     [esp + loc50.dbl_POWER]
  53.     mc_CMP_ST0_ST1
  54.     jc      .L20
  55.  
  56. .L5:
  57.     call    TConsole_ScrollUp
  58.     call    TConsole_SetCrewMsgAttr
  59.     mov     ecx, 576
  60.     call    TConsole_Prout
  61.     mov     ecx, 577
  62.     call    TConsole_Prout
  63.  
  64.     mcLoadLocal esi, loc50.pTrekData
  65.     fld     [glb_dbl_30]
  66.     fld     [esi + TREKDATA.ENERGY]
  67.     mc_CMP_ST0_ST1
  68.     jnc     .L10
  69.  
  70.     mov     ecx, 578
  71.     call    TConsole_Prout
  72.     jmp     .done
  73.  
  74. .L10:
  75.     mov     ecx, 579
  76.     call    TConsole_Prout
  77.  
  78.     mcLoadLocal esi, loc50.pTrekData
  79.     fld     [esi + TREKDATA.ENERGY]
  80.     fld     [glb_dbl_20]
  81.     fsubp
  82.     fld     [glb_dbl_0dot01]
  83.     fmulp
  84.     fld     [glb_dbl_0dot05]
  85.     fsubp
  86.  
  87.     mov     cl, 1
  88.     call    TConsole_CramFloat
  89.  
  90.     mov     ecx, 580
  91.     call    TConsole_Prout
  92.     jmp     .done
  93.  
  94. .L20:
  95.     mcLoadLocal esi, loc50.pTrekData
  96.     fld     [esi + TREKDATA.DIST]
  97.     fld     [glb_dbl_0dot095]
  98.     fdivp
  99.     fstp    [esi + TREKDATA.TIME]
  100.  
  101.     fld     [esi + TREKDATA.REMTIME]
  102.     fld     [esi + TREKDATA.TIME]
  103.     mc_CMP_ST0_ST1
  104.     jc      .L30
  105.  
  106.     call    TConsole_SetCrewMsgAttr
  107.     mov     ecx, 581
  108.     call    TConsole_Prout
  109.     mov     ecx, 582
  110.     call    TConsole_Prout
  111.     mov     ecx, 583
  112.     call    TConsole_Prout
  113.  
  114.     mcLoad8bitsToReg32 ecx, 158
  115.     call    TGame_JA
  116.     jnc     .done
  117.  
  118. .L30:
  119.     call    TMove_Move
  120.     mcLoadLocal esi, loc50.pTrekData
  121.     inc     [esi + TREKDATA.IDIDIT]
  122.  
  123.     cmp     [esi + TREKDATA.ALLDONE], 0
  124.     jne     .done
  125.  
  126.     fld     [esi + TREKDATA.DIST]
  127.     fld     [glb_dbl_100]
  128.     fmulp
  129.     fld     [glb_dbl_20]
  130.     faddp
  131.     fld     [esi + TREKDATA.ENERGY]
  132.     fsubrp
  133.     fstp    [esi + TREKDATA.ENERGY]
  134.  
  135.     fld     [esi + TREKDATA.DIST]
  136.     fld     [glb_dbl_0dot095]
  137.     fdivp
  138.     fstp    [esi + TREKDATA.TIME]
  139.  
  140.     fld     [esi + TREKDATA.ENERGY]
  141.     fldz
  142.     mc_CMP_ST0_ST1
  143.     jc      .done
  144.  
  145.     mov     al, 4
  146.     call    TFinish_Main
  147.     jmp     .done
  148.  
  149. .L40:
  150.     call    TConsole_ScrollUp
  151.     mov     ecx, 584
  152.     call    TConsole_ProutGameMsg
  153.  
  154. .done:
  155.     mcEndLocals loc50.size
  156.     ret
  157.  
  158. ; --- EOF ---
  159.