home *** CD-ROM | disk | FTP | other *** search
- PUBLIC ROTATEPOINTS
- PUBLIC SETROTATEANGLE
- PUBLIC ADDROTATEANGLE
- PUBLIC ROTATEOBJECT
- PUBLIC PUTPOLY320
- PUBLIC PUTOBJ320CONV
- PUBLIC V1_X
- PUBLIC V1_Y
- PUBLIC V2_X
- PUBLIC V2_Y
- PUBLIC V3_X
- PUBLIC V3_Y
- PUBLIC POLYCOLORW
- PUBLIC EYEDISTANCE
- PUBLIC ORIGO_X
- PUBLIC ORIGO_Y
- PUBLIC ORIGO_Z
-
- .386
- .MODEL USE16 SMALL
- .DATA
-
- PRESENTANGLE_X DW 0
- PRESENTANGLE_Y DW 0
- PRESENTANGLE_Z DW 0
- SINALFA DW 0
- SINBETA DW 0
- SINGAMMA DW 0
- COSALFA DW 0
- COSBETA DW 0
- COSGAMMA DW 0
- SINTABLE DW 0,142,285,428,571,714,857,1000,1142,1285,1427,1570
- DW 1712,1854,1996,2138,2280,2421,2563,2704,2845,2985,3126
- DW 3266,3406,3546,3685,3824,3963,4102,4240,4378,4516,4653
- DW 4790,4926,5062,5198,5334,5469,5603,5737,5871,6004,6137
- DW 6269,6401,6533,6663,6794,6924,7053,7182,7310,7438,7565
- DW 7691,7817,7943,8067,8191,8315,8438,8560,8682,8803,8923
- DW 9042,9161,9279,9397,9514,9630,9745,9860,9973,10086
- DW 10199,10310,10421,10531,10640,10748,10856,10963,11068
- DW 11173,11278,11381,11483,11585,11685,11785,11884,11982
- DW 12079,12175,12270,12365,12458,12550,12642,12732,12822
- DW 12910,12998,13084,13170,13254,13338,13420,13502,13582
- DW 13662,13740,13818,13894,13969,14043,14116,14188,14259
- DW 14329,14398,14466,14532,14598,14662,14725,14787,14848
- DW 14908,14967,15025,15081,15136,15190,15243,15295,15346
- DW 15395,15444,15491,15537,15582,15625,15668,15709,15749
- DW 15788,15825,15862,15897,15931,15964,15995,16025,16055
- DW 16082,16109,16135,16159,16182,16204,16224,16243,16261
- DW 16278,16294,16308,16321,16333,16344,16353,16361,16368
- DW 16374,16378,16381,16383
- COSTABLE DW 16384,16383,16381,16378,16374,16368,16361,16353,16344
- DW 16333,16321,16308,16294,16278,16261,16243,16224,16204
- DW 16182,16159,16135,16109,16082,16055,16025,15995,15964
- DW 15931,15897,15862,15825,15788,15749,15709,15668,15625
- DW 15582,15537,15491,15444,15395,15346,15295,15243,15190
- DW 15136,15081,15025,14967,14908,14848,14787,14725,14662
- DW 14598,14532,14466,14398,14329,14259,14188,14116,14043
- DW 13969,13894,13818,13740,13662,13582,13502,13420,13338
- DW 13254,13170,13084,12998,12910,12822,12732,12642,12550
- DW 12458,12365,12270,12175,12079,11982,11884,11785,11685
- DW 11585,11483,11381,11278,11173,11068,10963,10856,10748
- DW 10640,10531,10421,10310,10199,10086,9973,9860,9745
- DW 9630,9514,9397,9279,9161,9042,8923,8803,8682,8560,8438
- DW 8315,8192,8067,7943,7817,7691,7565,7438,7310,7182,7053
- DW 6924,6794,6663,6533,6401,6269,6137,6004,5871,5737,5603
- DW 5469,5334,5198,5062,4926,4790,4653,4516,4378,4240,4102
- DW 3963,3824,3685,3546,3406,3266,3126,2985,2845,2704,2563
- DW 2421,2280,2138,1996,1854,1712,1570,1427,1285,1142,1000
- DW 857,714,571,428,285,142,0,-142,-285,-428,-571,-714,-857
- DW -1000,-1142,-1285,-1427,-1570,-1712,-1854,-1996,-2138
- DW -2280,-2421,-2563,-2704,-2845,-2985,-3126,-3266,-3406
- DW -3546,-3685,-3824,-3963,-4102,-4240,-4378,-4516,-4653
- DW -4790,-4926,-5062,-5198,-5334,-5469,-5603,-5737,-5871
- DW -6004,-6137,-6269,-6401,-6533,-6663,-6794,-6924,-7053
- DW -7182,-7310,-7438,-7565,-7691,-7817,-7943,-8067,-8191
- DW -8315,-8438,-8560,-8682,-8803,-8923,-9042,-9161,-9279
- DW -9397,-9514,-9630,-9745,-9860,-9973,-10086,-10199
- DW -10310,-10421,-10531,-10640,-10748,-10856,-10963
- DW -11068,-11173,-11278,-11381,-11483,-11585,-11685
- DW -11785,-11884,-11982,-12079,-12175,-12270,-12365
- DW -12458,-12550,-12642,-12732,-12822,-12910,-12998
- DW -13084,-13170,-13254,-13338,-13420,-13502,-13582
- DW -13662,-13740,-13818,-13894,-13969,-14043,-14116
- DW -14188,-14259,-14329,-14398,-14466,-14532,-14598
- DW -14662,-14725,-14787,-14848,-14908,-14967,-15025
- DW -15081,-15136,-15190,-15243,-15295,-15346,-15395
- DW -15444,-15491,-15537,-15582,-15625,-15668,-15709
- DW -15749,-15788,-15825,-15862,-15897,-15931,-15964
- DW -15995,-16025,-16055,-16082,-16109,-16135,-16159
- DW -16182,-16204,-16224,-16243,-16261,-16278,-16294
- DW -16308,-16321,-16333,-16344,-16353,-16361,-16368
- DW -16374,-16378,-16381,-16383,-16384,-16383,-16381
- DW -16378,-16374,-16368,-16361,-16353,-16344,-16333
- DW -16321,-16308,-16294,-16278,-16261,-16243,-16224
- DW -16204,-16182,-16159,-16135,-16109,-16082,-16055
- DW -16025,-15995,-15964,-15931,-15897,-15862,-15825
- DW -15788,-15749,-15709,-15668,-15625,-15582,-15537
- DW -15491,-15444,-15395,-15346,-15295,-15243,-15190
- DW -15136,-15081,-15025,-14967,-14908,-14848,-14787
- DW -14725,-14662,-14598,-14532,-14466,-14398,-14329
- DW -14259,-14188,-14116,-14043,-13969,-13894,-13818
- DW -13740,-13662,-13582,-13502,-13420,-13338,-13254
- DW -13170,-13084,-12998,-12910,-12822,-12732,-12642
- DW -12550,-12458,-12365,-12270,-12175,-12079,-11982
- DW -11884,-11785,-11685,-11585,-11483,-11381,-11278
- DW -11173,-11068,-10963,-10856,-10748,-10640,-10531
- DW -10421,-10310,-10199,-10086,-9973,-9860,-9745,-9630
- DW -9514,-9397,-9279,-9161,-9042,-8923,-8803,-8682,-8560
- DW -8438,-8315,-8192,-8067,-7943,-7817,-7691,-7565,-7438
- DW -7310,-7182,-7053,-6924,-6794,-6663,-6533,-6401,-6269
- DW -6137,-6004,-5871,-5737,-5603,-5469,-5334,-5198,-5062
- DW -4926,-4790,-4653,-4516,-4378,-4240,-4102,-3963,-3824
- DW -3685,-3546,-3406,-3266,-3126,-2985,-2845,-2704,-2563
- DW -2421,-2280,-2138,-1996,-1854,-1712,-1570,-1427,-1285
- DW -1142,-1000,-857,-714,-571,-428,-285,-142,0,142,285
- DW 428,571,714,857,1000,1142,1285,1427,1570,1712,1854
- DW 1996,2138,2280,2421,2563,2704,2845,2985,3126,3266,3406
- DW 3546,3685,3824,3963,4102,4240,4378,4516,4653,4790,4926
- DW 5062,5198,5334,5469,5603,5737,5871,6004,6137,6269,6401
- DW 6533,6663,6794,6924,7053,7182,7310,7438,7565,7691,7817
- DW 7943,8067,8192,8315,8438,8560,8682,8803,8923,9042,9161
- DW 9279,9397,9514,9630,9745,9860,9973,10086,10199,10310
- DW 10421,10531,10640,10748,10856,10963,11068,11173,11278
- DW 11381,11483,11585,11685,11785,11884,11982,12079,12175
- DW 12270,12365,12458,12550,12642,12732,12822,12910,12998
- DW 13084,13170,13254,13338,13420,13502,13582,13662,13740
- DW 13818,13894,13969,14043,14116,14188,14259,14329,14398
- DW 14466,14532,14598,14662,14725,14787,14848,14908,14967
- DW 15025,15081,15136,15190,15243,15295,15346,15395,15444
- DW 15491,15537,15582,15625,15668,15709,15749,15788,15825
- DW 15862,15897,15931,15964,15995,16025,16055,16082,16109
- DW 16135,16159,16182,16204,16224,16243,16261,16278,16294
- DW 16308,16321,16333,16344,16353,16361,16368,16374,16378
- DW 16381,16383
- V1_Y DW 0
- V1_X DW 0
- V2_Y DW 0
- V2_X DW 0
- V3_Y DW 0
- V3_X DW 0
- EYEDISTANCE DW 0
- ORIGO_X DW 0
- ORIGO_Y DW 0
- ORIGO_Z DW 0
-
- .CODE
-
- SETROTATEANGLE: PUSHA
- MOV SI,720
- CMP AX,SI
- JB SHORT NOOFSRAAX
- CWD
- IDIV SI
- TEST DH,10000000B
- JZ SHORT NOOFSRAAX
- ADD DX,720
- MOV AX,DX
- NOOFSRAAX: MOV PRESENTANGLE_X,AX
- MOV AX,BX
- CMP AX,SI
- JB SHORT NOOFSRABX
- CWD
- IDIV SI
- TEST DH,10000000B
- JZ SHORT NOOFSRABX
- ADD DX,720
- MOV AX,DX
- NOOFSRABX: MOV PRESENTANGLE_Y,AX
- MOV AX,CX
- CMP AX,SI
- JB SHORT NOOFSRACX
- CWD
- IDIV SI
- TEST DH,10000000B
- JZ SHORT NOOFSRACX
- ADD DX,720
- MOV AX,DX
- NOOFSRACX: MOV PRESENTANGLE_Z,AX
- POPA
- RET
-
- ADDROTATEANGLE: PUSHA
- ADD AX,PRESENTANGLE_X
- ADD BX,PRESENTANGLE_Y
- ADD CX,PRESENTANGLE_Z
- MOV SI,720
- CMP AX,SI
- JB SHORT NOOFSRAAX2
- CWD
- IDIV SI
- TEST DH,10000000B
- JZ SHORT NOOFSRAAX2
- ADD DX,720
- MOV AX,DX
- NOOFSRAAX2: MOV PRESENTANGLE_X,AX
- MOV AX,BX
- CMP AX,SI
- JB SHORT NOOFSRABX2
- CWD
- IDIV SI
- TEST DH,10000000B
- JZ SHORT NOOFSRABX2
- ADD DX,720
- MOV AX,DX
- NOOFSRABX2: MOV PRESENTANGLE_Y,AX
- MOV AX,CX
- CMP AX,SI
- JB SHORT NOOFSRACX2
- CWD
- IDIV SI
- TEST DH,10000000B
- JZ SHORT NOOFSRACX2
- ADD DX,720
- MOV AX,DX
- NOOFSRACX2: MOV PRESENTANGLE_Z,AX
- POPA
- RET
-
- ROTATEPOINTS: PUSHA
- PUSH DS
- PUSH FS
- PUSH GS
- PUSH SEG SINTABLE
- POP DS
- PUSH SI
- PUSH DI
- MOV FS,AX
- MOV GS,BX
- MOV BX,PRESENTANGLE_X
- ADD BX,BX
- MOV AX,SINTABLE[BX]
- MOV SINALFA,AX
- MOV AX,COSTABLE[BX]
- MOV COSALFA,AX
- MOV BX,PRESENTANGLE_Y
- ADD BX,BX
- MOV AX,SINTABLE[BX]
- MOV SINBETA,AX
- MOV AX,COSTABLE[BX]
- MOV COSBETA,AX
- MOV BX,PRESENTANGLE_Z
- ADD BX,BX
- MOV AX,SINTABLE[BX]
- MOV SINGAMMA,AX
- MOV AX,COSTABLE[BX]
- MOV COSGAMMA,AX
- MOV AX,COSBETA
- MOV BX,CX
- MOV CL,14
- IMUL COSGAMMA
- SHRD AX,DX,CL
- MOV WORD PTR CS:ROTATEPOINTS_C+1,AX
- MOV AX,COSBETA
- IMUL SINGAMMA
- SHRD AX,DX,CL
- MOV WORD PTR CS:CALC2+1,AX
- MOV AX,SINBETA
- MOV WORD PTR CS:CALC3+1,AX
- MOV AX,COSALFA
- IMUL SINGAMMA
- SHRD AX,DX,CL
- MOV DI,AX
- MOV AX,SINALFA
- IMUL SINBETA
- SHRD AX,DX,CL
- IMUL COSGAMMA
- SHRD AX,DX,CL
- ADD AX,DI
- MOV WORD PTR CS:CALC4+1,AX
- MOV AX,COSALFA
- IMUL COSGAMMA
- SHRD AX,DX,CL
- MOV DI,AX
- MOV AX,SINALFA
- IMUL SINBETA
- SHRD AX,DX,CL
- IMUL SINGAMMA
- SHRD AX,DX,CL
- SUB DI,AX
- MOV WORD PTR CS:CALC5+1,DI
- MOV AX,SINALFA
- IMUL COSBETA
- SHRD AX,DX,CL
- MOV WORD PTR CS:CALC6+1,AX
- MOV AX,SINALFA
- IMUL SINGAMMA
- SHRD AX,DX,CL
- MOV DI,AX
- MOV AX,COSALFA
- IMUL SINBETA
- SHRD AX,DX,CL
- IMUL COSGAMMA
- SHRD AX,DX,CL
- SUB DI,AX
- MOV WORD PTR CS:CALC7+1,DI
- MOV AX,SINALFA
- IMUL COSGAMMA
- SHRD AX,DX,CL
- MOV DI,AX
- MOV AX,COSALFA
- IMUL SINBETA
- SHRD AX,DX,CL
- IMUL SINGAMMA
- SHRD AX,DX,CL
- ADD AX,DI
- MOV WORD PTR CS:CALC8+1,AX
- MOV AX,COSALFA
- IMUL COSBETA
- SHRD AX,DX,CL
- MOV WORD PTR CS:CALC9+1,AX
- POP DI
- POP SI
- ROTATEPOINTS_C: MOV AX,0FFFFH ;Self writing code. CALC1
- IMUL WORD PTR FS:[SI]
- SHRD AX,DX,CL
- MOV BP,AX
- CALC2: MOV AX,0FFFFH ;-==- CALC2
- IMUL WORD PTR FS:[SI+2]
- SHRD AX,DX,CL
- SUB BP,AX
- CALC3: MOV AX,0FFFFH ;-==- CALC3
- IMUL WORD PTR FS:[SI+4]
- SHRD AX,DX,CL
- ADD BP,AX
- MOV GS:[DI],BP
- CALC4: MOV AX,0FFFFH ;-==- CALC4
- IMUL WORD PTR FS:[SI]
- SHRD AX,DX,CL
- MOV BP,AX
- CALC5: MOV AX,0FFFFH ;-==- CALC5
- IMUL WORD PTR FS:[SI+2]
- SHRD AX,DX,CL
- ADD BP,AX
- CALC6: MOV AX,0FFFFH ;-==- CALC6
- IMUL WORD PTR FS:[SI+4]
- SHRD AX,DX,CL
- SUB BP,AX
- MOV GS:[DI+2],BP
- CALC7: MOV AX,0FFFFH ;-==- CALC7
- IMUL WORD PTR FS:[SI]
- SHRD AX,DX,CL
- MOV BP,AX
- CALC8: MOV AX,0FFFFH ;-==- CALC8
- IMUL WORD PTR FS:[SI+2]
- SHRD AX,DX,CL
- ADD BP,AX
- CALC9: MOV AX,0FFFFH ;-==- CALC9
- IMUL WORD PTR FS:[SI+4]
- SHRD AX,DX,CL
- ADD BP,AX
- MOV GS:[DI+4],BP
- ADD SI,6
- ;JNC SHORT NOADDFSROTCIK
- ;MOV AX,FS
- ;ADD AX,1000H
- ;MOV FS,AX
- NOADDFSROTCIK: ADD DI,6
- ;JNC SHORT NOADDGSROTCIK
- ;MOV AX,GS
- ;ADD AX,1000H
- ;MOV GS,AX
- NOADDGSROTCIK: DEC BX
- JNZ SHORT ROTATEPOINTS_C
- POP GS
- POP FS
- POP DS
- POPA
- RET
-
- MAKELINE320 MACRO
- MOV WORD PTR CS:ENDML320+1,CX
- MOV WORD PTR CS:ENDML3202+1,DI
- CMP CX,DI
- JGE SHORT NOXCHGCAML320
- XCHG CX,DI
- NOXCHGCAML320: CMP CX,319
- JBE SHORT CXNG320
- JNG SHORT ENDML320
- MOV CX,319
- CXNG320: CMP DI,319
- JBE SHORT AXNG320
- JG SHORT ENDML320
- XOR DI,DI
- AXNG320: SUB CX,DI
- ADD DI,DX
- POLYCOLORW: MOV EAX,0FFFFFFFFH
- SHR CX,1
- JNC SHORT NOEVENCXML3201
- STOSB
- NOEVENCXML3201: SHR CX,1
- JNC SHORT NOEVENCXML3202
- STOSW
- NOEVENCXML3202: REP STOSD
- ENDML320: MOV CX,0FFFFH ;-==-
- ENDML3202: MOV DI,0FFFFH ;-==-
- ENDM
-
- PUTPOLY320: MOV DWORD PTR CS:PPEAX+2,EAX
- MOV DWORD PTR CS:PPEBX+2,EBX
- MOV DWORD PTR CS:PPECX+2,ECX
- MOV DWORD PTR CS:PPEDX+2,EDX
- MOV DWORD PTR CS:PPESI+2,ESI
- MOV DWORD PTR CS:PPEDI+2,EDI
- MOV DWORD PTR CS:PPEBP+2,EBP
- MOV ESI,DWORD PTR V1_Y
- MOV EBP,DWORD PTR V2_Y
- MOV EDI,DWORD PTR V3_Y
- CMP SI,BP
- JLE SHORT V1_TO_V2
- XCHG ESI,EBP
- V1_TO_V2: CMP SI,DI
- JLE SHORT V1_TO_V3
- XCHG ESI,EDI
- V1_TO_V3: CMP BP,DI
- JLE SHORT V2_TO_V3
- XCHG EBP,EDI
- V2_TO_V3: MOV DWORD PTR V1_Y,ESI
- MOV DWORD PTR V2_Y,EBP
- MOV DWORD PTR V3_Y,EDI
- MOV WORD PTR CS:PUTPOLY_MCIK+2,BP
- MOV WORD PTR CS:TO_WV3_Y+2,DI
- MOV AX,WORD PTR CS:POLYCOLORW+2
- MOV WORD PTR CS:POLYCOLORW+4,AX
- MOV CX,V1_X
- XOR AX,AX
- XOR DX,DX
- MOV BX,DI
- SUB BX,BP
- JE SHORT NO_OP_WV23
- MOV WORD PTR CS:TO_WV23_MREM+1,BX
- MOV BYTE PTR CS:TO_WV23_RA+5,47H
- MOV AX,V3_X
- SUB AX,V2_X
- CWD
- IDIV BX
- JS SHORT NO_OP_WV23
- MOV BYTE PTR CS:TO_WV23_RA+5,4FH
- NEG DX
- NO_OP_WV23: MOV WORD PTR CS:CHG_WV23+5,AX
- MOV WORD PTR CS:TO_WV23_REM+5,DX
- XOR AX,AX
- XOR DX,DX
- SUB BP,SI
- JE SHORT NO_OP_WV2
- MOV WORD PTR CS:TO_WV2_MREM+2,BP
- MOV BYTE PTR CS:TO_WV2_RA,47H
- MOV AX,V2_X
- SUB AX,CX
- CWD
- IDIV BP
- JS SHORT NO_OP_WV2
- MOV BYTE PTR CS:TO_WV2_RA,4FH
- NEG DX
- NO_OP_WV2: MOV WORD PTR CS:NOOVWV3+2,AX
- MOV WORD PTR CS:TO_WV2_REM+2,DX
- XOR AX,AX
- XOR DX,DX
- MOV BX,DI
- SUB BX,SI
- JE SHORT NO_OP_WV3
- MOV WORD PTR CS:TO_WV3_MREM+2,BX
- MOV BYTE PTR CS:TO_WV3_RA,41H
- MOV AX,V3_X
- SUB AX,CX
- CWD
- IDIV BX
- JS SHORT NO_OP_WV3
- MOV BYTE PTR CS:TO_WV3_RA,49H
- NEG DX
- NO_OP_WV3: MOV WORD PTR CS:TO_WV3_INT+2,AX
- MOV WORD PTR CS:TO_WV3_REM+2,DX
- MOV AX,SI
- MOV DX,SI
- SHL AX,8
- SHL DX,6
- ADD DX,AX
- MOV DI,CX
- MOV BYTE PTR CS:NO+1,OFFSET PUTPOLY_MCIK-(NO+2)
- PUTPOLY_MCIK: CMP SI,0FFFFH
- JE CHG_WV23
- NO_CHG_WV23: CMP SI,199
- JA SHORT NOONSCREEN
- MAKELINE320
- NOONSCREEN: INC SI
- TO_WV3_INT: ADD CX,0FFFFH ;-==-
- TO_WV3_REM: SUB BX,0FFFFH ;-==-
- JNC SHORT NOOVWV3
- TO_WV3_MREM: ADD BX,0FFFFH ;-==-
- TO_WV3_RA: INC CX ;-==-
- NOOVWV3: ADD DI,0FFFFH ;-==-
- TO_WV2_REM: SUB BP,0FFFFH ;-==-
- JNC SHORT NOOVWV2
- TO_WV2_MREM: ADD BP,0FFFFH ;-==-
- TO_WV2_RA: INC DI ;-==-
- NOOVWV2: ADD DX,320
- TO_WV3_Y: CMP SI,0FFFFH ;-==-
- NO: JNG SHORT PUTPOLY_MCIK
- PPEAX: MOV EAX,0FFFFFFFFH ;-==-
- PPEBX: MOV EBX,0FFFFFFFFH ;-==-
- PPECX: MOV ECX,0FFFFFFFFH ;-==-
- PPEDX: MOV EDX,0FFFFFFFFH ;-==-
- PPESI: MOV ESI,0FFFFFFFFH ;-==-
- PPEDI: MOV EDI,0FFFFFFFFH ;-==-
- PPEBP: MOV EBP,0FFFFFFFFH ;-==-
- RET
- CHG_WV23: MOV WORD PTR CS:NOOVWV3+2,0FFFFH ;-==-
- TO_WV23_REM: MOV WORD PTR CS:TO_WV2_REM+2,0FFFFH ;-==-
- TO_WV23_RA: MOV BYTE PTR CS:TO_WV2_RA,47H ;-==-
- MOV BYTE PTR CS:NO+1,OFFSET NO_CHG_WV23-(NO+2)
- TO_WV23_MREM: MOV BP,0FFFFH ;-==-
- MOV WORD PTR CS:TO_WV2_MREM+2,BP
- MOV DI,V2_X
- JMP NO_CHG_WV23
-
- PUTOBJ320CONV: PUSHA
- PUSH FS
- MOV FS,AX
- MOV CX,FS:[SI]
- ADD SI,2
- MOV DI,CX
- SHL DI,3
- ADD DI,SI
- ADD DI,2
- PUTO320CIK: MOV AX,FS:[SI]
- MOV WORD PTR CS:POLYCOLORW+2,AX
- MOV AX,FS:[SI+2]
- MOV BP,AX
- ADD BP,AX
- ADD BP,AX
- SHL BP,1
- MOV AX,FS:[DI][BP]
- MOV BX,EYEDISTANCE
- IMUL BX
- ADD BX,FS:[DI][BP][4]
- ADD BX,ORIGO_Z
- IDIV BX
- ADD AX,ORIGO_X
- MOV V1_X,AX
- MOV AX,FS:[DI][BP][2]
- IMUL EYEDISTANCE
- IDIV BX
- NEG AX
- ADD AX,ORIGO_Y
- MOV V1_Y,AX
- MOV AX,FS:[SI+4]
- MOV BP,AX
- ADD BP,AX
- ADD BP,AX
- SHL BP,1
- MOV AX,FS:[DI][BP]
- MOV BX,EYEDISTANCE
- IMUL BX
- ADD BX,FS:[DI][BP][4]
- ADD BX,ORIGO_Z
- IDIV BX
- ADD AX,ORIGO_X
- MOV V2_X,AX
- MOV AX,FS:[DI][BP][2]
- IMUL EYEDISTANCE
- IDIV BX
- NEG AX
- ADD AX,ORIGO_Y
- MOV V2_Y,AX
- MOV AX,FS:[SI+6]
- MOV BP,AX
- ADD BP,AX
- ADD BP,AX
- SHL BP,1
- MOV AX,FS:[DI][BP]
- MOV BX,EYEDISTANCE
- IMUL BX
- ADD BX,FS:[DI][BP][4]
- ADD BX,ORIGO_Z
- IDIV BX
- ADD AX,ORIGO_X
- MOV V3_X,AX
- MOV AX,FS:[DI][BP][2]
- IMUL EYEDISTANCE
- IDIV BX
- NEG AX
- ADD AX,ORIGO_Y
- MOV V3_Y,AX
- CALL PUTPOLY320
- ADD SI,8
- DEC CX
- JNZ PUTO320CIK
- POP FS
- POPA
- RET
-
- ROTATEOBJECT: PUSHAD
- PUSH FS
- PUSH GS
- MOV FS,AX
- MOV GS,BX
- MOV CX,FS:[SI]
- MOV GS:[DI],CX
- ADD SI,2
- ADD DI,2
- ROTCONVCOCIK: MOV EAX,FS:[SI]
- MOV GS:[DI],EAX
- MOV EAX,FS:[SI+4]
- MOV GS:[DI+4],EAX
- ADD SI,8
- ADD DI,8
- DEC CX
- JNZ SHORT ROTCONVCOCIK
- MOV CX,FS:[SI]
- MOV GS:[DI],CX
- ADD SI,2
- ADD DI,2
- MOV AX,FS
- MOV BX,GS
- CALL ROTATEPOINTS
- POP GS
- POP FS
- POPAD
- RET
-
- END
-