Subversion Repositories Kolibri OS

Rev

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

  1. ; --------------------------------------------------------------------------
  2. ; FILE: TFinish.Asm
  3. ; DATE: October 13, 2008
  4. ; --------------------------------------------------------------------------
  5.  
  6. ; --------------------------------------------------------------------------
  7. ; FINISH
  8. ; --------------------------------------------------------------------------
  9. ; Input:
  10. ;   AL = game ending code
  11. ; --------------------------------------------------------------------------
  12. virtual at 0
  13. loc47:
  14.     .pTrekData PVOID ?
  15.     .bIGotIt BOOL ?
  16.     .nEndCode INT32 ?
  17.     .dbl_DateDiff DOUBLE ?
  18.     .dbl_RateMax DOUBLE ?
  19.     .dbl_PerDate DOUBLE ?
  20.     .dbl_Goodies DOUBLE ?
  21.     .dbl_Baddies DOUBLE ?
  22.     .dbl_Advantage DOUBLE ?
  23.     .size = $
  24. end virtual
  25. ; --------------------------------------------------------------------------
  26. align PROC_ALIGN
  27. TFinish_Main:
  28.     mcBeginLocals loc47.size
  29.  
  30.     movzx   eax, al
  31.     mcStoreLocal loc47.nEndCode, eax
  32.  
  33.     invoke  Sleep, 1000
  34.  
  35.     mcLoadGameDataPtr edi
  36.     mcStoreLocal loc47.pTrekData, edi
  37.     inc     [edi + TREKDATA.ALLDONE]
  38.  
  39.     mcZeroBits eax
  40.     mcStoreLocal loc47.bIGotIt, eax
  41.  
  42.     call    TConsole_ScrollUp
  43.     call    TConsole_ScrollUp
  44.     call    TConsole_ScrollUp
  45.     mov     cl, ATTR_SHIP
  46.     call    TConsole_SetAttr
  47.  
  48.     mov     ecx, 477
  49.     call    TConsole_Cram
  50.  
  51.     mov     cl, 1
  52.     mcLoadLocal esi, loc47.pTrekData
  53.     fld     [esi + TREKDATA.DATE]
  54.     call    TConsole_CramFloat
  55.  
  56.     mov     ecx, 478
  57.     call    TConsole_Prout
  58.     call    TConsole_ScrollUp
  59.  
  60.     mcLoadLocal eax, loc47.nEndCode
  61.     mcOnRegEqu eax, 1, .L100
  62.     mcOnRegEqu eax, 2, .L200
  63.     mcOnRegEqu eax, 3, .L300
  64.     mcOnRegEqu eax, 4, .L400
  65.     mcOnRegEqu eax, 5, .L500
  66.     mcOnRegEqu eax, 6, .L600
  67.     mcOnRegEqu eax, 7, .L700
  68.     mcOnRegEqu eax, 8, .L800
  69.     mcOnRegEqu eax, 9, .L900
  70.     mcOnRegEqu eax, 10, .L1000
  71.     mcOnRegEqu eax, 11, .L1100
  72.     mcOnRegEqu eax, 12, .L5000
  73.     mcOnRegEqu eax, 13, .L1300
  74.     mcOnRegEqu eax, 14, .L1400
  75.     mcOnRegEqu eax, 15, .L1500
  76.     mcOnRegEqu eax, 16, .L1600
  77.     mcOnRegEqu eax, 17, .L1700
  78.     mcOnRegEqu eax, 18, .L1800
  79.     mcOnRegEqu eax, 21, .L2100
  80.     mcOnRegEqu eax, 22, .L2200
  81.  
  82.     ;int     3
  83.     jmp     .done
  84.  
  85. .L100:
  86.     mcLoadLocal esi, loc47.pTrekData
  87.     cmp     [esi + TREKDATA.NROMREM], 0
  88.     je      .L105
  89.  
  90.     movzx   eax, [esi + TREKDATA.NROMREM]
  91.     push    eax
  92.  
  93.     mov     ecx, 479
  94.     call    TConsole_Cram
  95.     pop     eax
  96.     call    TConsole_CramInt
  97.     mov     ecx, 480
  98.     call    TConsole_Prout
  99.     call    TConsole_ScrollUp
  100.  
  101. .L105:
  102.     mov     ecx, 481
  103.     call    TConsole_Prout
  104.     mov     ecx, 482
  105.     call    TConsole_Prout
  106.  
  107.     mcLoadLocal esi, loc47.pTrekData
  108.     mov     [esi + TREKDATA.GAMEWON], 1
  109.  
  110.     cmp     [esi + TREKDATA.ALIVE], 0
  111.     je      .L130
  112.     cmp     [esi + TREKDATA.BASEKL], 0
  113.     jne     .L130
  114.     cmp     [esi + TREKDATA.SHIP], CHAR_ENTERPRISE
  115.     jne     .L130
  116.  
  117.     movzx   eax, [esi + TREKDATA.STARKL]
  118.     imul    eax, 5
  119.  
  120.     movzx   ecx, [esi + TREKDATA.CASUAL]
  121.     add     eax, ecx
  122.  
  123.     movzx   ecx, [esi + TREKDATA.NPLANKL]
  124.     imul    ecx, 10
  125.     add     eax, ecx
  126.  
  127.     movzx   ecx, [esi + TREKDATA.NHELP]
  128.     imul    ecx, 45
  129.     add     eax, ecx
  130.  
  131.     cmp     eax, 100
  132.     jae     .L130
  133.  
  134.     fld     [glb_dbl_5]
  135.     fld     [esi + TREKDATA.DATE]
  136.     fld     [esi + TREKDATA.INDATE]
  137.     fsubp
  138.     fld     st
  139.     fstp    [esp + loc47.dbl_DateDiff]
  140.     mc_CMP_ST0_ST1
  141.     jc      .L110
  142.  
  143.     mov     al, [esi + TREKDATA.SKILL]
  144.     call    TCommon_LoadByteIntoFPU
  145.     fld     [glb_dbl_0dot1]
  146.     fmulp
  147.     inc     al
  148.     call    TCommon_LoadByteIntoFPU
  149.     fmulp
  150.     fld     [glb_dbl_0dot1]
  151.     faddp
  152.     fstp    [esp + loc47.dbl_RateMax]
  153.  
  154.     mov     al, [esi + TREKDATA.KILLK]
  155.     add     al, [esi + TREKDATA.KILLC]
  156.     add     al, [esi + TREKDATA.NSCKILL]
  157.     fld     [esp + loc47.dbl_DateDiff]
  158.     fdivp
  159.     fstp    [esp + loc47.dbl_PerDate]
  160.  
  161.     fld     [esp + loc47.dbl_RateMax]
  162.     fld     [esp + loc47.dbl_PerDate]
  163.     mc_CMP_ST0_ST1
  164.     jc      .L130
  165.  
  166. .L110:
  167.     call    TConsole_ScrollUp
  168.     mov     ecx, 483
  169.     call    TConsole_Prout
  170.  
  171.     mcLoadLocal esi, loc47.pTrekData
  172.     cmp     [esi + TREKDATA.SKILL], 4
  173.     je      .L120
  174.     cmp     [esi + TREKDATA.SKILL], 5
  175.     je      .L125
  176.  
  177.     mov     ecx, 484
  178.     call    TConsole_Cram
  179.  
  180.     mov     ecx, 484
  181.     mcLoadLocal esi, loc47.pTrekData
  182.     movzx   eax, [esi + TREKDATA.SKILL]
  183.     add     ecx, eax
  184.     call    TConsole_Prout
  185.  
  186.     mov     ecx, 488
  187.     call    TConsole_Prout
  188.     jmp     .L130
  189.  
  190. .L120:
  191.     mov     ecx, 489
  192.     call    TConsole_Prout
  193.     inc     [esp + loc47.bIGotIt]
  194.  
  195.     call    TConsole_ScrollUp
  196.     mov     ecx, 490
  197.     call    TConsole_Prout
  198.     mov     ecx, 491
  199.     call    TConsole_Prout
  200.     mov     ecx, 492
  201.     call    TConsole_Prout
  202.     jmp     .L130
  203.  
  204. .L125:
  205.     call    TConsole_ScrollUp
  206.     mov     ecx, 493
  207.     call    TConsole_Prout
  208.  
  209.     call    TConsole_ScrollUp
  210.     mov     ecx, 494
  211.     call    TConsole_Prout
  212.  
  213.     mov     ecx, 495
  214.     call    TConsole_Prout
  215.     mov     ecx, 495
  216.     call    TConsole_Prout
  217.     mov     ecx, 495
  218.     call    TConsole_Prout
  219.     mov     ecx, 496
  220.     call    TConsole_Prout
  221.     call    TConsole_ScrollUp
  222.  
  223.     mov     ecx, 497
  224.     call    TConsole_Prout
  225.  
  226.     inc     [esp + loc47.bIGotIt]
  227.  
  228. .L130:
  229.     call    TConsole_ScrollUp
  230.     mov     ecx, 498
  231.     call    TConsole_Prout
  232.     call    TGame_Score
  233.  
  234.     cmp     [esp + loc47.bIGotIt], 0
  235.     je      .done
  236.  
  237.     call    TApp_PlaqueProcessor
  238.     jmp     .done
  239.  
  240. .L200:
  241.     mov     ecx, 499
  242.     call    TConsole_Prout
  243.     mov     ecx, 500
  244.     call    TConsole_Prout
  245.     call    TConsole_ScrollUp
  246.  
  247.     mov     ecx, 501
  248.     call    TConsole_Prout
  249.     mov     ecx, 502
  250.     call    TConsole_Prout
  251.  
  252.     mcLoadLocal esi, loc47.pTrekData
  253.     movzx   eax, [esi + TREKDATA.REMKL]
  254.     movzx   edx, [esi + TREKDATA.INKLING]
  255.     imul    eax, 3
  256.     cmp     eax, edx
  257.     ja      .L210
  258.  
  259.     mov     ecx, 503
  260.     call    TConsole_Prout
  261.  
  262.     mcLoadLocal esi, loc47.pTrekData
  263.     mov     [esi + TREKDATA.ALIVE], 0
  264.  
  265. .score_and_return:
  266.     call    TGame_Score
  267.     jmp     .done
  268.  
  269. .L210:
  270.     mov     ecx, 504
  271.     call    TConsole_Prout
  272.     call    TConsole_ScrollUp
  273.     mov     ecx, 498
  274.     call    TConsole_Prout
  275.     jmp     .score_and_return
  276.  
  277. .L300:
  278.     mov     ecx, 505
  279.     call    TConsole_Prout
  280.     mov     ecx, 506
  281.     call    TConsole_Prout
  282.  
  283. .L310:
  284.     call    TConsole_ScrollUp
  285.     mov     ecx, 507
  286.     call    TConsole_Prout
  287.     jmp     .L5000
  288.  
  289. .L400:
  290.     mov     ecx, 508
  291.     call    TConsole_Prout
  292.     jmp     .L310
  293.  
  294. .L500:
  295.     mov     ecx, 509
  296.     call    TConsole_Cram
  297.     call    TConsole_CramShip
  298.     mov     ecx, 510
  299.     call    TConsole_Prout
  300.  
  301.     call    TConsole_ScrollUp
  302.     mov     ecx, 511
  303.     call    TConsole_Prout
  304.     jmp     .L5000
  305.  
  306. .L600:
  307.     mov     ecx, 512
  308.     call    TConsole_Prout
  309.     mov     ecx, 513
  310.     call    TConsole_Prout
  311.     call    TConsole_ScrollUp
  312.     mov     ecx, 514
  313.     call    TConsole_Prout
  314.     jmp     .score_and_return
  315.  
  316. .L700:
  317.     mov     ecx, 515
  318.     call    TConsole_Prout
  319.  
  320. .L705:
  321.     mov     ecx, 516
  322.     call    TConsole_Prout
  323.     jmp     .L5000
  324.  
  325. .L800:
  326.     mov     ecx, 509
  327.     call    TConsole_Cram
  328.     call    TConsole_CramShip
  329.     mov     ecx, 517
  330.     call    TConsole_Prout
  331.     mov     ecx, 518
  332.     call    TConsole_Prout
  333.     jmp     .L5000
  334.  
  335. .L900:
  336.     mov     ecx, 519
  337.     call    TConsole_Prout
  338.     mov     ecx, 520
  339.     call    TConsole_Prout
  340.     mov     ecx, 521
  341.     call    TConsole_Prout
  342.     mov     ecx, 522
  343.     call    TConsole_Prout
  344.     jmp     .L5000
  345.  
  346. .L1000:
  347.     mov     ecx, 523
  348.     call    TConsole_Prout
  349.     jmp     .L5000
  350.  
  351. .L1100:
  352.     mov     ecx, 524
  353.     call    TConsole_Prout
  354.     mov     ecx, 525
  355.     call    TConsole_Prout
  356.     jmp     .L5000
  357.  
  358. .L1300:
  359.     mov     ecx, 526
  360.     call    TConsole_Prout
  361.     mov     ecx, 527
  362.     call    TConsole_Prout
  363.     jmp     .L1410
  364.  
  365. .L1400:
  366.     mcLoadLocal esi, loc47.pTrekData
  367.     movzx   ecx, [esi + TREKDATA.IPLANET]
  368.     call    TArray_PlanetPtr
  369.     mov     al, [edi + TPlanet.planet_CLASS]
  370.     mcOnRegNotEqu al, 1, .L1401
  371.  
  372.     mov     ecx, 528
  373.     call    TConsole_Prout
  374.     mov     ecx, 529
  375.     call    TConsole_Prout
  376.     call    TConsole_ScrollUp
  377.     mov     ecx, 530
  378.     call    TConsole_Prout
  379.     jmp     .L1410
  380.  
  381. .L1401:
  382.     push    eax
  383.     mov     ecx, 531
  384.     call    TConsole_Prout
  385.     mov     ecx, 532
  386.     call    TConsole_Cram
  387.     pop     eax
  388.     add     al, 'L'
  389.     call    TConsole_PutChar
  390.     mov     ecx, 533
  391.     call    TConsole_Prout
  392.     mov     ecx, 534
  393.     call    TConsole_Prout
  394.     mov     ecx, 535
  395.     call    TConsole_Prout
  396.  
  397. .L1410:
  398.     call    TConsole_ScrollUp
  399.     mov     ecx, 536
  400.     call    TConsole_Prout
  401.     call    TConsole_CramShip
  402.     mov     ecx, 537
  403.     call    TConsole_Prout
  404.     jmp     .L5000
  405.  
  406. .L1500:
  407.     mov     ecx, 538
  408.     call    TConsole_Prout
  409.     jmp     .L705
  410.  
  411. .L1600:
  412.     mov     ecx, 539
  413.     call    TConsole_Prout
  414.     call    TConsole_ScrollUp
  415.  
  416.     mov     ecx, 540
  417.     call    TConsole_Cram
  418.     call    TConsole_CramShip
  419.     call    TConsole_ScrollUp
  420.  
  421.     mov     ecx, 541
  422.     call    TConsole_Prout
  423.     jmp     .L5000
  424.  
  425. .L1700:
  426.     mov     ecx, 542
  427.     call    TConsole_Prout
  428.     jmp     .L1600
  429.  
  430. .L1800:
  431.     mov     ecx, 543
  432.     call    TConsole_Prout
  433.     mov     ecx, 544
  434.     call    TConsole_Prout
  435.     call    TConsole_ScrollUp
  436.     mov     ecx, 545
  437.     call    TConsole_Prout
  438.     jmp     .L1410
  439.  
  440. .L2100:
  441.     mov     ecx, 546
  442.     call    TConsole_Prout
  443.     mov     ecx, 547
  444.     call    TConsole_Prout
  445.     jmp     .L5000
  446.  
  447. .L2200:
  448.     mov     ecx, 548
  449.     call    TConsole_Prout
  450.     mov     ecx, 549
  451.     call    TConsole_Prout
  452.     jmp     .L705
  453.  
  454. .L5000:
  455.     call    TConsole_ScrollUp
  456.     mcLoadLocal esi, loc47.pTrekData
  457.     mov     [esi + TREKDATA.ALIVE], 0
  458.  
  459.     mcZeroBits edx
  460.     mcZeroBits eax
  461.     mov     al, CHAR_FQUEENE
  462.     cmp     [esi + TREKDATA.SHIP], CHAR_ENTERPRISE
  463.     cmove   edx, eax
  464.     mov     [esi + TREKDATA.SHIP], dl
  465.  
  466.     cmp     [esi + TREKDATA.REMKL], 0
  467.     je      .L5050
  468.  
  469.     fld     [esi + TREKDATA.REMRES]
  470.     fld     [esi + TREKDATA.INRESOR]
  471.     fdivp
  472.     fstp    [esp + loc47.dbl_Goodies]
  473.  
  474.     mov     al, [esi + TREKDATA.REMCOM]
  475.     add     al, al
  476.     add     al, [esi + TREKDATA.REMKL]
  477.     call    TCommon_LoadByteIntoFPU
  478.  
  479.     mov     al, [esi + TREKDATA.INCOM]
  480.     add     al, al
  481.     add     al, [esi + TREKDATA.INKLING]
  482.     call    TCommon_LoadByteIntoFPU
  483.  
  484.     fdivp
  485.     fstp    [esp + loc47.dbl_Baddies]
  486.  
  487.     fld     [esp + loc47.dbl_Goodies]
  488.     fld     [esp + loc47.dbl_Baddies]
  489.     fdivp
  490.     fstp    [esp + loc47.dbl_Advantage]
  491.  
  492.     call    TRandom_Ranf
  493.     fld     [glb_dbl_0dot5]
  494.     fmulp
  495.     fld1
  496.     faddp
  497.     fld     [esp + loc47.dbl_Advantage]
  498.     mc_CMP_ST0_ST1
  499.     jc      .L5020
  500.  
  501.     mov     ecx, 550
  502.     call    TConsole_Prout
  503.     mov     ecx, 551
  504.     call    TConsole_Prout
  505.  
  506.     call    TRandom_Ranf
  507.     fld     [glb_dbl_3]
  508.     faddp
  509.     fld     [esp + loc47.dbl_Advantage]
  510.     mc_CMP_ST0_ST1
  511.     jc      .L5010
  512.  
  513.     mov     ecx, 552
  514.     call    TConsole_Prout
  515.     call    TConsole_ScrollUp
  516.     mov     ecx, 555
  517.     call    TConsole_Prout
  518.     jmp     .L5030
  519.  
  520. .L5010:
  521.     mov     ecx, 553
  522.     call    TConsole_Prout
  523.     jmp     .L5030
  524.  
  525. .L5020:
  526.     mov     ecx, 554
  527.     call    TConsole_Prout
  528.     jmp     .L5030
  529.  
  530. .L5050:
  531.     mov     ecx, 556
  532.     call    TConsole_Prout
  533.     mov     ecx, 557
  534.     call    TConsole_Prout
  535.     mov     ecx, 558
  536.     call    TConsole_Prout
  537.     mov     ecx, 559
  538.     call    TConsole_Prout
  539.  
  540.     mcLoadLocal ebx, loc47.pTrekData
  541.     mov     [ebx + TREKDATA.GAMEWON], 1
  542.     mov     [ebx + TREKDATA.ALIVE], 0
  543.  
  544. .L5030:
  545.     call    TGame_Score
  546.  
  547. .done:
  548.     mcEndLocals loc47.size
  549.     ret
  550.  
  551. ; --- EOF ---
  552.