Accueil > > > GÉNÉRATEUR DE MICKEY
GÉNÉRATEUR DE MICKEY
Information sur la source
Description
petite tête de mickey qui tourne... 4 sphere une lumiere et beaucoup de calcul pour une tete de mickey.
Source
- Comment#
- Asmik.Asm
- 94/95
- Comment#
- ;Jumps
- .586P
- ;.387
- ;Locals @@
- Vrais Equ 0
- Faux Equ 255
-
- Vector Struc ; 12 Octets de Vecteur;
- Vector_1 DD ? ;
- Vector_2 DD ? ;
- Vector_3 DD ? ;
- Vector EndS
-
- Matrice Struc ; 48 Octets de Matrice
- Matrice1_1 DD ?
- Matrice1_2 DD ?
- Matrice1_3 DD ?
- Matrice2_1 DD ?
- Matrice2_2 DD ?
- Matrice2_3 DD ?
- Matrice3_1 DD ?
- Matrice3_2 DD ?
- Matrice3_3 DD ?
- Matrice EndS
-
- ; Quelque Structure Lourde
- V3t Struc ; definition d'une coordonnee 12 Octets
- X DD 0
- Y DD 0
- Z DD 0
- V3t Ends
- ; ; Definition d'un Pigment
- Ct Struc ; 12 Octets de pigment;
- R DD 0 ; 0.0 -> 1.0
- G DD 0
- B DD 0
- Ct Ends
-
- RayT Struc ; Definition d'un rayon 24 Octets
- RP V3t <0,0,0>
- RN V3t <0,0,0>
- RayT EndS
-
- SphereT Struc ; definition d'une sphere
- M V3t <0,0,0> ; coordonnee centre
- Sqrr DD 0 ; Rayon Single
- SphereT EndS
-
- ; Definition d'une Surface
- SurfT Struc
- SOd Ct <0,0,0>
- SOe DD 0 ; Single
- SN DD 0 ; Single
- SRefl Dw 0 ; Boolean ; reflection
- STrans Dw 0 ; Boolean ; Transparence
- SSpecC Ct <0,0,0>;
- STransC Ct <0,0,0>;
- SColProc DW 0 ; Offset Procedure de Couleur
- STypProc DW 0 ; Offset Procedure de Typage
- SurfT Ends
-
- StartC Segment Para Public Use16 'CODE'
- Assume CS:StartC,DS:StartC,SS:StartC
- Org 100h
- StartHere:
- Jmp Demarre
- Db ' Pov2Com V1.0 '
- Db ' B.Y.O 1995 Pigment '
- ;Include Pigment.asm ; Liste des Pigments de pov pr‚traduite
- ; Pigment
- Gray05 Dd 03D4CCCCDh,03D4CCCCDh,03D4CCCCDh;
- Gray10 Dd 03DCCCCCDh,03DCCCCCDh,03DCCCCCDh;
- Gray15 Dd 03E19999Ah,03E19999Ah,03E19999Ah;
- Gray20 Dd 03E4CCCCDh,03E4CCCCDh,03E4CCCCDh;
- Gray25 Dd 03E800000h,03E800000h,03E800000h;
- Gray30 Dd 03E99999Ah,03E99999Ah,03E99999Ah;
- Gray35 Dd 03EB33333h,03EB33333h,03EB33333h;
- Gray40 Dd 03ECCCCCDh,03ECCCCCDh,03ECCCCCDh;
- Gray45 Dd 03EE66666h,03EE66666h,03EE66666h;
- Gray50 Dd 03F000000h,03F000000h,03F000000h;
- Gray55 Dd 03F0CCCCDh,03F0CCCCDh,03F0CCCCDh;
- Gray60 Dd 03F19999Ah,03F19999Ah,03F19999Ah;
- Gray65 Dd 03F266666h,03F266666h,03F266666h;
- Gray70 Dd 03F333333h,03F333333h,03F333333h;
- Gray75 Dd 03F400000h,03F400000h,03F400000h;
- Gray80 Dd 03F4CCCCDh,03F4CCCCDh,03F4CCCCDh;
- Gray85 Dd 03F59999Ah,03F59999Ah,03F59999Ah;
- Gray90 Dd 03F666666h,03F666666h,03F666666h;
- Gray95 Dd 03F733333h,03F733333h,03F733333h;
- DimGray Dd 03EA8A8B1h,03EA8A8B1h,03EA8A8B1h;
- DimGrey Dd 03EA8A8B1h,03EA8A8B1h,03EA8A8B1h;
- Gray Dd 03F40C0BEh,03F40C0BEh,03F40C0BEh;
- Grey Dd 03F40C0BEh,03F40C0BEh,03F40C0BEh;
- LightGray Dd 03F28A8B1h,03F28A8B1h,03F28A8B1h;
- LightGrey Dd 03F28A8B1h,03F28A8B1h,03F28A8B1h;
- VLightGrey Dd 03F4CCCCDh,03F4CCCCDh,03F4CCCCDh;
- White Dd 03F800000h,03F800000h,03F800000h;
- Red Dd 03F800000h,000000000h,000000000h;
- Green Dd 000000000h,03F800000h,000000000h;
- Blue Dd 000000000h,000000000h,03F800000h;
- Yellow Dd 03F800000h,03F800000h,000000000h;
- Cyan Dd 000000000h,03F800000h,03F800000h;
- Magenta Dd 03F800000h,03F800000h,03F800000h;
- Black Dd 000000000h,000000000h,000000000h;
- Aquamarine Dd 03EE0E0EBh,03F5BDBE4h,03F13939Ah;
- BlueViolet Dd 03F1F9F02h,03EBEBEBEh,03F1F9F99h;
- Brown Dd 03F25A5A9h,03E28A8B1h,03E28A8B1h;
- CadetBlue Dd 03EBEBEBEh,03F1F9F99h,03F1F9F99h;
- Coral Dd 03F800000h,03EFEFEF8h,000000000h;
- CornflowerBlue Dd 03E848494h,03E848494h,03EDEDEDBh;
- DarkGreen Dd 03E3CBCCFh,03E9E9EA1h,03E3CBCCFh;
- DarkOliveGreen Dd 03E9E9EA1h,03E9E9EA1h,03E3CBCCFh;
- DarkOrchid Dd 03F19999Ah,03E48C8ACh,03F4CCCCDh;
- DarkSlateBlue Dd 03ED6D6DCh,03E0C8C93h,03F0E8E93h;
- DarkSlateGray Dd 03E3CBCCFh,03E9E9EA1h,03E9E9EA1h;
- DarkSlateGrey Dd 03E3CBCCFh,03E9E9EA1h,03E9E9EA1h;
- DarkTurquoise Dd 03EE0E0EBh,03F13939Ah,03F5BDBE4h;
- Firebrick Dd 03F0E8E93h,03E0C8C93h,03E0C8C93h;
- ForestGreen Dd 03E0C8C93h,03F0E8E93h,03E0C8C93h;
- Gold Dd 03F4CCCCDh,03EFEFEF8h,03E48C8ACh;
- Goldenrod Dd 03F5BDBE4h,03F5BDBE4h,03EE0E0EBh;
- GreenYellow Dd 03F13939Ah,03F5BDBE4h,03EE0E0EBh;
- IndianRed Dd 03E9E9EA1h,03E3CBCCFh,03E3CBCCFh;
- Khaki Dd 03F1F9F99h,03F1F9F99h,03EBEBEBEh;
- LightBlue Dd 03F3FBFC6h,03F58D8DCh,03F58D8DCh;
- LightSteelBlue Dd 03F0F8F8Ah,03F0F8F8Ah,03F3CBCBEh;
- LimeGreen Dd 03E48C8ACh,03F4CCCCDh,03E48C8ACh;
- Maroon Dd 03F0E8E93h,03E0C8C93h,03ED6D6DCh;
- MediumAquamarine Dd 03E48C8ACh,03F4CCCCDh,03F19999Ah;
- MediumBlue Dd 03E48C8ACh,03E48C8ACh,03F4CCCCDh;
- MediumForestGreen Dd 03ED6D6DCh,03F0E8E93h,03E0C8C93h;
- MediumGoldenrod Dd 03F6AEAEAh,03F6AEAEAh,03F2DADA7h;
- MediumOrchid Dd 03F13939Ah,03EE0E0EBh,03F5BDBE4h;
- MediumSeaGreen Dd 03E848494h,03EDEDEDBh,03E848494h;
- MediumSlateBlue Dd 03EFEFEF8h,03F800000h,000000000h;
- MediumSpringGreen Dd 03EFEFEF8h,03F800000h,000000000h;
- MediumTurquoise Dd 03EE0E0EBh,03F5BDBE4h,03F5BDBE4h;
- MediumVioletRed Dd 03F5BDBE4h,03EE0E0EBh,03F13939Ah;
- MidnightBlue Dd 03E3CBCCFh,03E3CBCCFh,03E9E9EA1h;
- Navy Dd 03E0C8C93h,03E0C8C93h,03F0E8E93h;
- NavyBlue Dd 03E0C8C93h,03E0C8C93h,03F0E8E93h;
- Orange Dd 03F800000h,03F000000h,000000000h;
- OrangeRed Dd 03F800000h,03EFEFEF8h,000000000h;
- Orchid Dd 03F5BDBE4h,03EE0E0EBh,03F5BDBE4h;
- PaleGreen Dd 03F0F8F8Ah,03F3CBCBEh,03F0F8F8Ah;
- Pink Dd 03F3CBCBEh,03F0F8F8Ah,03F0F8F8Ah;
- Plum Dd 03F6AEAEAh,03F2DADA7h,03F6AEAEAh;
- Salmon Dd 03EDEDEDBh,03E848494h,03E848494h;
- SeaGreen Dd 03E0C8C93h,03F0E8E93h,03ED6D6DCh;
- Sienna Dd 03F0E8E93h,03ED6D6DCh,03E0C8C93h;
- SkyBlue Dd 03E48C8ACh,03F19999Ah,03F4CCCCDh;
- SlateBlue Dd 000000000h,03EFEFEF8h,03F800000h;
- SpringGreen Dd 000000000h,03F800000h,03EFEFEF8h;
- SteelBlue Dd 03E0C8C93h,03ED6D6DCh,03F0E8E93h;
- Tan Dd 03F5BDBE4h,03F13939Ah,03EE0E0EBh;
- Thistle Dd 03F58D8DCh,03F3FBFC6h,03F58D8DCh;
- Turquoise Dd 03F2DADA7h,03F6AEAEAh,03F6AEAEAh;
- Violet Dd 03E9E9EA1h,03E3CBCCFh,03E9E9EA1h;
- VioletRed Dd 03F4CCCCDh,03E48C8ACh,03F19999Ah;
- Wheat Dd 03F58D8DCh,03F58D8DCh,03F3FBFC6h;
- YellowGreen Dd 03F19999Ah,03F4CCCCDh,03E48C8ACh;
- SummerSky Dd 03E6147AEh,03F30A3D7h,03F5EB852h;
- RichBlue Dd 03EB33333h,03EB33333h,03F2B851Fh;
- Brass Dd 03F35C28Fh,03F266666h,03E851EB8h;
- Copper Dd 03F3851ECh,03EE66666h,03E4CCCCDh;
- Bronze Dd 03F0CCCCDh,03EF0A3D7h,03E0F5C29h;
- Bronze2 Dd 03F266666h,03EFAE148h,03E75C28Fh;
- Silver Dd 03F666666h,03F68F5C3h,03F7AE148h;
- BrightGold Dd 03F59999Ah,03F59999Ah,03DCCCCCDh;
- OldGold Dd 03F4F5C29h,03F35C28Fh,03E6B851Fh;
- Feldspar Dd 03F51EB85h,03F11EB85h,03EEB851Fh;
- Quartz Dd 03F59999Ah,03F59999Ah,03F733333h;
- NeonPink Dd 03F800000h,03EDC28F6h,03F47AE14h;
- DarkPurple Dd 03F07AE14h,03DF5C28Fh,03EF0A3D7h;
- NeonBlue Dd 03E99999Ah,03E99999Ah,03F800000h;
- CoolCopper Dd 03F59999Ah,03F07AE14h,03DCCCCCDh;
- MandarinOrange Dd 03F63D70Ah,03EF0A3D7h,03E4CCCCDh;
- LightWood Dd 03F68F5C3h,03F428F5Ch,03F266666h;
- MediumWood Dd 03F266666h,03F000000h,03EC7AE14h;
- DarkWood Dd 03F051EB8h,03EBD70A4h,03E851EB8h;
- SpicyPink Dd 03F800000h,03DE147AEh,03F2E147Bh;
- SemiSweetChoc Dd 03ED70A3Dh,03E851EB8h,03E19999Ah;
- BakersChoc Dd 03EB851ECh,03E4CCCCDh,03DB851ECh;
- Flesh Dd 03F75C28Fh,03F4CCCCDh,03F30A3D7h;
- NewTan Dd 03F6B851Fh,03F47AE14h,03F1EB852h;
- NewMidnightBlue Dd 000000000h,000000000h,03F1C28F6h;
- VeryDarkBrown Dd 03EB33333h,03E23D70Ah,03E0F5C29h;
- DarkBrown Dd 03EB851ECh,03E800000h,03E4CCCCDh;
- DarkTan Dd 03F170A3Dh,03ED1EB85h,03E9EB852h;
- GreenCopper Dd 03EA3D70Ah,03EFAE148h,03EEB851Fh;
- DkGreenCopper Dd 03E947AE1h,03EEB851Fh,03EDC28F6h;
- DustyRose Dd 03F051EB8h,03EC7AE14h,03EC7AE14h;
- HuntersGreen Dd 03E051EB8h,03EBD70A4h,03E9EB852h;
- Scarlet Dd 03F0CCCCDh,03DB851ECh,03DB851ECh;
-
- ; Nom Associe au pigment
- _Gray05 Db 'Gray05',0
- _Gray10 Db 'Gray10',0
- _Gray15 Db 'Gray15',0
- _Gray20 Db 'Gray20',0
- _Gray25 Db 'Gray25',0
- _Gray30 Db 'Gray30',0
- _Gray35 Db 'Gray35',0
- _Gray40 Db 'Gray40',0
- _Gray45 Db 'Gray45',0
- _Gray50 Db 'Gray50',0
- _Gray55 Db 'Gray55',0
- _Gray60 Db 'Gray60',0
- _Gray65 Db 'Gray65',0
- _Gray70 Db 'Gray70',0
- _Gray75 Db 'Gray75',0
- _Gray80 Db 'Gray80',0
- _Gray85 Db 'Gray85',0
- _Gray90 Db 'Gray90',0
- _Gray95 Db 'Gray95',0
- _DimGray Db 'DimGray',0
- _DimGrey Db 'DimGrey',0
- _Gray Db 'Gray',0
- _Grey Db 'Grey',0
- _LightGray Db 'LightGray',0
- _LightGrey Db 'LightGrey',0
- _VLightGrey Db 'VLightGrey',0
- _White Db 'White',0
- _Red Db 'Red',0
- _Green Db 'Green',0
- _Blue Db 'Blue',0
- _Yellow Db 'Yellow',0
- _Cyan Db 'Cyan',0
- _Magenta Db 'Magenta',0
- _Black Db 'Black',0
- _Aquamarine Db 'Aquamarine',0
- _BlueViolet Db 'BlueViolet',0
- _Brown Db 'Brown',0
- _CadetBlue Db 'CadetBlue',0
- _Coral Db 'Coral',0
- _CornflowerBlue Db 'CornflowerBlue',0
- _DarkGreen Db 'DarkGreen',0
- _DarkOliveGreen Db 'DarkOliveGreen',0
- _DarkOrchid Db 'DarkOrchid',0
- _DarkSlateBlue Db 'DarkSlateBlue',0
- _DarkSlateGray Db 'DarkSlateGray',0
- _DarkSlateGrey Db 'DarkSlateGrey',0
- _DarkTurquoise Db 'DarkTurquoise',0
- _Firebrick Db 'Firebrick',0
- _ForestGreen Db 'ForestGreen',0
- _Gold Db 'Gold',0
- _Goldenrod Db 'Goldenrod',0
- _GreenYellow Db 'GreenYellow',0
- _IndianRed Db 'IndianRed',0
- _Khaki Db 'Khaki',0
- _LightBlue Db 'LightBlue',0
- _LightSteelBlue Db 'LightSteelBlue',0
- _LimeGreen Db 'LimeGreen',0
- _Maroon Db 'Maroon',0
- _MediumAquamarine Db 'MediumAquamarine',0
- _MediumBlue Db 'MediumBlue',0
- _MediumForestGreen Db 'MediumForestGreen',0
- _MediumGoldenrod Db 'MediumGoldenrod',0
- _MediumOrchid Db 'MediumOrchid',0
- _MediumSeaGreen Db 'MediumSeaGreen',0
- _MediumSlateBlue Db 'MediumSlateBlue',0
- _MediumSpringGreen Db 'MediumSpringGreen',0
- _MediumTurquoise Db 'MediumTurquoise',0
- _MediumVioletRed Db 'MediumVioletRed',0
- _MidnightBlue Db 'MidnightBlue',0
- _Navy Db 'Navy',0
- _NavyBlue Db 'NavyBlue',0
- _Orange Db 'Orange',0
- _OrangeRed Db 'OrangeRed',0
- _Orchid Db 'Orchid',0
- _PaleGreen Db 'PaleGreen',0
- _Pink Db 'Pink',0
- _Plum Db 'Plum',0
- _Salmon Db 'Salmon',0
- _SeaGreen Db 'SeaGreen',0
- _Sienna Db 'Sienna',0
- _SkyBlue Db 'SkyBlue',0
- _SlateBlue Db 'SlateBlue',0
- _SpringGreen Db 'SpringGreen',0
- _SteelBlue Db 'SteelBlue',0
- _Tan Db 'Tan',0
- _Thistle Db 'Thistle',0
- _Turquoise Db 'Turquoise',0
- _Violet Db 'Violet',0
- _VioletRed Db 'VioletRed',0
- _Wheat Db 'Wheat',0
- _YellowGreen Db 'YellowGreen',0
- _SummerSky Db 'SummerSky',0
- _RichBlue Db 'RichBlue',0
- _Brass Db 'Brass',0
- _Copper Db 'Copper',0
- _Bronze Db 'Bronze',0
- _Bronze2 Db 'Bronze2',0
- _Silver Db 'Silver',0
- _BrightGold Db 'BrightGold',0
- _OldGold Db 'OldGold',0
- _Feldspar Db 'Feldspar',0
- _Quartz Db 'Quartz',0
- _NeonPink Db 'NeonPink',0
- _DarkPurple Db 'DarkPurple',0
- _NeonBlue Db 'NeonBlue',0
- _CoolCopper Db 'CoolCopper',0
- _MandarinOrange Db 'MandarinOrange',0
- _LightWood Db 'LightWood',0
- _MediumWood Db 'MediumWood',0
- _DarkWood Db 'DarkWood',0
- _SpicyPink Db 'SpicyPink',0
- _SemiSweetChoc Db 'SemiSweetChoc',0
- _BakersChoc Db 'BakersChoc',0
- _Flesh Db 'Flesh',0
- _NewTan Db 'NewTan',0
- _NewMidnightBlue Db 'NewMidnightBlue',0
- _VeryDarkBrown Db 'VeryDarkBrown',0
- _DarkBrown Db 'DarkBrown',0
- _DarkTan Db 'DarkTan',0
- _GreenCopper Db 'GreenCopper',0
- _DkGreenCopper Db 'DkGreenCopper',0
- _DustyRose Db 'DustyRose',0
- _HuntersGreen Db 'HuntersGreen',0
- _Scarlet Db 'Scarlet',0
-
- ; Table des Couleurs
- PigmentTab:
- Dw Offset Gray05 , Offset _Gray05
- Dw Offset Gray10 , Offset _Gray10
- Dw Offset Gray15 , Offset _Gray15
- Dw Offset Gray20 , Offset _Gray20
- Dw Offset Gray25 , Offset _Gray25
- Dw Offset Gray30 , Offset _Gray30
- Dw Offset Gray35 , Offset _Gray35
- Dw Offset Gray40 , Offset _Gray40
- Dw Offset Gray45 , Offset _Gray45
- Dw Offset Gray50 , Offset _Gray50
- Dw Offset Gray55 , Offset _Gray55
- Dw Offset Gray60 , Offset _Gray60
- Dw Offset Gray65 , Offset _Gray65
- Dw Offset Gray70 , Offset _Gray70
- Dw Offset Gray75 , Offset _Gray75
- Dw Offset Gray80 , Offset _Gray80
- Dw Offset Gray85 , Offset _Gray85
- Dw Offset Gray90 , Offset _Gray90
- Dw Offset Gray95 , Offset _Gray95
- Dw Offset DimGray , Offset _DimGray
- Dw Offset DimGrey , Offset _DimGrey
- Dw Offset Gray , Offset _Gray
- Dw Offset Grey , Offset _Grey
- Dw Offset LightGray , Offset _LightGray
- Dw Offset LightGrey , Offset _LightGrey
- Dw Offset VLightGrey , Offset _VLightGrey
- Dw Offset White , Offset _White
- Dw Offset Red , Offset _Red
- Dw Offset Green , Offset _Green
- Dw Offset Blue , Offset _Blue
- Dw Offset Yellow , Offset _Yellow
- Dw Offset Cyan , Offset _Cyan
- Dw Offset Magenta , Offset _Magenta
- Dw Offset Black , Offset _Black
- Dw Offset Aquamarine , Offset _Aquamarine
- Dw Offset BlueViolet , Offset _BlueViolet
- Dw Offset Brown , Offset _Brown
- Dw Offset CadetBlue , Offset _CadetBlue
- Dw Offset Coral , Offset _Coral
- Dw Offset CornflowerBlue , Offset _CornflowerBlue
- Dw Offset DarkGreen , Offset _DarkGreen
- Dw Offset DarkOliveGreen , Offset _DarkOliveGreen
- Dw Offset DarkOrchid , Offset _DarkOrchid
- Dw Offset DarkSlateBlue , Offset _DarkSlateBlue
- Dw Offset DarkSlateGray , Offset _DarkSlateGray
- Dw Offset DarkSlateGrey , Offset _DarkSlateGrey
- Dw Offset DarkTurquoise , Offset _DarkTurquoise
- Dw Offset Firebrick , Offset _Firebrick
- Dw Offset ForestGreen , Offset _ForestGreen
- Dw Offset Gold , Offset _Gold
- Dw Offset Goldenrod , Offset _Goldenrod
- Dw Offset GreenYellow , Offset _GreenYellow
- Dw Offset IndianRed , Offset _IndianRed
- Dw Offset Khaki , Offset _Khaki
- Dw Offset LightBlue , Offset _LightBlue
- Dw Offset LightSteelBlue , Offset _LightSteelBlue
- Dw Offset LimeGreen , Offset _LimeGreen
- Dw Offset Maroon , Offset _Maroon
- Dw Offset MediumAquamarine , Offset _MediumAquamarine
- Dw Offset MediumBlue , Offset _MediumBlue
- Dw Offset MediumForestGreen, Offset _MediumForestGreen
- Dw Offset MediumGoldenrod , Offset _MediumGoldenrod
- Dw Offset MediumOrchid , Offset _MediumOrchid
- Dw Offset MediumSeaGreen , Offset _MediumSeaGreen
- Dw Offset MediumSlateBlue , Offset _MediumSlateBlue
- Dw Offset MediumSpringGreen, Offset _MediumSpringGreen
- Dw Offset MediumTurquoise , Offset _MediumTurquoise
- Dw Offset MediumVioletRed , Offset _MediumVioletRed
- Dw Offset MidnightBlue , Offset _MidnightBlue
- Dw Offset Navy , Offset _Navy
- Dw Offset NavyBlue , Offset _NavyBlue
- Dw Offset Orange , Offset _Orange
- Dw Offset OrangeRed , Offset _OrangeRed
- Dw Offset Orchid , Offset _Orchid
- Dw Offset PaleGreen , Offset _PaleGreen
- Dw Offset Pink , Offset _Pink
- Dw Offset Plum , Offset _Plum
- Dw Offset Salmon , Offset _Salmon
- Dw Offset SeaGreen , Offset _SeaGreen
- Dw Offset Sienna , Offset _Sienna
- Dw Offset SkyBlue , Offset _SkyBlue
- Dw Offset SlateBlue , Offset _SlateBlue
- Dw Offset SpringGreen , Offset _SpringGreen
- Dw Offset SteelBlue , Offset _SteelBlue
- Dw Offset Tan , Offset _Tan
- Dw Offset Thistle , Offset _Thistle
- Dw Offset Turquoise , Offset _Turquoise
- Dw Offset Violet , Offset _Violet
- Dw Offset VioletRed , Offset _VioletRed
- Dw Offset Wheat , Offset _Wheat
- Dw Offset YellowGreen , Offset _YellowGreen
- Dw Offset SummerSky , Offset _SummerSky
- Dw Offset RichBlue , Offset _RichBlue
- Dw Offset Brass , Offset _Brass
- Dw Offset Copper , Offset _Copper
- Dw Offset Bronze , Offset _Bronze
- Dw Offset Bronze2 , Offset _Bronze2
- Dw Offset Silver , Offset _Silver
- Dw Offset BrightGold , Offset _BrightGold
- Dw Offset OldGold , Offset _OldGold
- Dw Offset Feldspar , Offset _Feldspar
- Dw Offset Quartz , Offset _Quartz
- Dw Offset NeonPink , Offset _NeonPink
- Dw Offset DarkPurple , Offset _DarkPurple
- Dw Offset NeonBlue , Offset _NeonBlue
- Dw Offset CoolCopper , Offset _CoolCopper
- Dw Offset MandarinOrange , Offset _MandarinOrange
- Dw Offset LightWood , Offset _LightWood
- Dw Offset MediumWood , Offset _MediumWood
- Dw Offset DarkWood , Offset _DarkWood
- Dw Offset SpicyPink , Offset _SpicyPink
- Dw Offset SemiSweetChoc , Offset _SemiSweetChoc
- Dw Offset BakersChoc , Offset _BakersChoc
- Dw Offset Flesh , Offset _Flesh
- Dw Offset NewTan , Offset _NewTan
- Dw Offset NewMidnightBlue , Offset _NewMidnightBlue
- Dw Offset VeryDarkBrown , Offset _VeryDarkBrown
- Dw Offset DarkBrown , Offset _DarkBrown
- Dw Offset DarkTan , Offset _DarkTan
- Dw Offset GreenCopper , Offset _GreenCopper
- Dw Offset DkGreenCopper , Offset _DkGreenCopper
- Dw Offset DustyRose , Offset _DustyRose
- Dw Offset HuntersGreen , Offset _HuntersGreen
- Dw Offset Scarlet , Offset _Scarlet
- Dw -1 , -1
- Align 16
- ; les constantes de Mik.Pas
- GradBase DD 90
- Xmax DD 159 ;319
- Ymax DD 119 ;239
- Xmax2 DD 159 ;319
- Ymax2 DD 119 ;239
- PicSizeWc DD 10.0
- PixRat DD 1.0
- Half1 DD 0.5
- Quater DD 0.25
- aQuater DD -2
- Is1 DD 1.0
- IsZero DD 0.0
- Mul255 DD 255
- Infinity DD 060AD78ECh ; 10E20
- Epsilon DD 02EDBE6FFh ; 10E-10
- Pow10S DD -10.0
- MaxRekDep Equ 5
- AttenEps DD 0.01
- Abank_R DW 0
- DestSeg DW 0A000h
-
- Xrotate DD 0.0 ; Rotation sur l'axe des z !!
- DD 0.0
- DD 1.0
-
- Eye DD 0.0 ; V3t.X
- DD -20.0 ; V3t.Y
- DD 0.1 ; V3t.Z
-
- LightV DD -20.0 ; V3t.X
- DD -20.0 ; V3t.Y
- DD 10.0 ; V3t.Z
-
- LightC DD 1.0 ; Ct.R
- DD 1.0 ; Ct.G
- DD 1.0 ; Ct.B
-
- AmbC DD 0.15 ; Ct.R
- DD 0.15 ; Ct.G
- DD 0.15 ; Ct.B
-
- ; Base a y = -1.0 pour rotation visuelle autour du point 0,0,0
- ; Les Trois Spheres representant le Mickey
- K1 DD 0.0 ; SphereT.m.X
- DD -1.0 ; SphereT.m.Y
- DD 0.0 ; SphereT.m.Z
- DD 4.0 ; SphereT.Sqrr
-
- K2 DD -1.50 ; SphereT.m.X
- DD -1.00 ; SphereT.m.Y
- DD 1.50 ; SphereT.m.Z
- DD 1.00 ; SphereT.Sqrr
-
- K3 DD +1.50 ; SphereT.m.X
- DD -1.00 ; SphereT.m.Y
- DD 1.50 ; SphereT.m.Z
- DD 1.00 ; SphereT.Sqrr
-
- K4 DD 0.0 ; SphereT.m.X
- DD -2.625; SphereT.m.Y
- DD 0.0 ; SphereT.m.Z
- DD 0.25 ; SphereT.Sqrr
-
- ObnrMax Dw 4
-
- ObnrIs Dw Offset K1 ; Equ 1 ; Quatre Sphere = un Mickey
- Dw Offset K2 ; Equ 2 ;
- Dw Offset K3 ; Equ 3 ;
- Dw Offset K4 ; Equ 4 ;
-
-
- K1Surf DD 1.0 ;Ct <1.0,1.0,1.0>
- DD 0.5
- DD 1.0
- DD 100.0
- DD 1.0
- Dw Faux
- Dw Faux
- DD 0.5 ;Ct < 0.5,0.5,0.5 >
- DD 0.5
- DD 0.5
- DD 1.0 ;Ct < 1.0,1.0,1.0 >
- DD 1.0
- DD 1.0
- Dw Offset EqOdProc
- Dw Offset EqNrmProc
- K2Surf DD 0.5 ;Ct <0.5,0.6,0.7>
- DD 0.6
- DD 0.7
- DD 100.0
- DD 1.0
- Dw Faux
- Dw Faux
- DD 0.5 ;Ct < 0.5,0.5,0.5 >
- DD 0.5
- DD 0.5
- DD 1.0 ;Ct < 1.0,1.0,1.0 >
- DD 1.0
- DD 1.0
- Dw Offset EqOdProc
- Dw Offset EqNrmProc
- K3Surf: ;Ct <0,0,0>
- DD 0.2
- DD 0.3
- DD 0.4
- DD 100.0
- DD 1.0
- Dw Faux
- Dw Faux
- DD 0.5 ;Ct < 0.5,0.5,0.5 >
- DD 0.5
- DD 0.5
- DD 1.0 ;Ct < 1.0,1.0,1.0 >
- DD 1.0
- DD 1.0
- Dw Offset EqOdProc
- Dw Offset EqNrmProc
-
- K4Surf: ;Ct <1.0,1.0,1.0>
- DD 0.9
- DD 0.8
- DD 0.7
- DD 100.0
- DD 1.0
- Dw Faux
- Dw Faux
- DD 0.5 ;Ct < 0.5,0.5,0.5 >
- DD 0.5
- DD 0.5
- DD 1.0 ;Ct < 1.0,1.0,1.0 >
- DD 1.0
- DD 1.0
- Dw Offset EqOdProc
- Dw Offset EqNrmProc
-
- SurfIs Dw Offset K1Surf
- Dw Offset K2Surf
- Dw Offset K3Surf
- Dw Offset K4Surf
-
- ; Les Data en valorisations au demarrage
- Ra RayT <>
- Vh V3t <>
- Vr V3t <>
- Hv V3t <>
- Nh V3t <>
- Cct Ct <>
- KeyStop Dw Faux
- ; Quelque Macros debilisante
-
- CoordCopy Macro De,Vers
- Mov Eax,Dword Ptr Cs:[De.X]
- Mov Dword Ptr Cs:[Vers.X],Eax
- Mov Eax,Dword Ptr Cs:[De.Y]
- Mov Dword Ptr Cs:[Vers.Y],Eax
- Mov Eax,Dword Ptr Cs:[De.Z]
- Mov Dword Ptr Cs:[Vers.Z],Eax
- EndM
-
- ColorCopy Macro De,Vers
- Mov Eax,Dword Ptr Cs:[De.R]
- Mov Dword Ptr Cs:[Vers.R],Eax
- Mov Eax,Dword Ptr Cs:[De.G]
- Mov Dword Ptr Cs:[Vers.G],Eax
- Mov Eax,Dword Ptr Cs:[De.B]
- Mov Dword Ptr Cs:[Vers.B],Eax
- EndM
-
- ; Additif pour avoir un rotation de vecteur !
- ; Variable Rattache a DefineMatrix
- MatriceE Matrice <>
- Grad DD 0
- GradSin DD 0
- GradCos DD 0
- GradCosNeg DD 0
- Theta DD 0
- DefineMatrix Proc Near
- Mov Dword Ptr Theta,Eax
- ; Calcul le Sinus & le Cosinus de Grad
- Finit
- Nop
- FLD Dword Ptr Theta
- FSinCos
- Fwait
- Nop
- FSTP DWORD Ptr GradCos ; Depile St(0) Dans GradCos
- FSTP DWORD Ptr GradSin ; Depile St(0) Dans GradSin
- ; Calcul 1-GradCos
- FLD Dword Ptr GradCos
- FLD1
- FSub St(0),St(1)
- FST Dword Ptr GradCosNeg ; Stoque St(0)
- Fwait
- Nop
- FLD (Vector Ptr ES:[SI]).Vector_1 ; Charge Vecteur X
- FSQRT ; Calcul Racine Carre de Vecteur X
- FMUL St(0),ST(1) ; Multiplie sqrt(VecteurX) * 1-GradCos
- FLD Dword Ptr GradCos ; Charge GradCos
- FADD St(0),St(1) ; Addition St(0),St(1);
- FSTP (Matrice Ptr DS:[DI]).Matrice1_1
- Fwait
- Nop
- Fld Dword Ptr GradCosNeg
- Fld (Vector Ptr ES:[SI]).Vector_2
- FSQRT ; Calcul Racine Carre de Vecteur X
- FMUL St(0),ST(1) ; Multiplie sqrt(VecteurX) * 1-GradCos
- FLD Dword Ptr GradCos ; Charge GradCos
- FADD St(0),St(1) ; Addition St(0),St(1);
- FSTP (Matrice Ptr DS:[DI]).Matrice2_2
- Fwait
- Nop
- Fld Dword Ptr GradCosNeg
- Fld (Vector Ptr ES:[SI]).Vector_3
- FSQRT ; Calcul Racine Carre de Vecteur X
- FMUL St(0),ST(1) ; Multiplie sqrt(VecteurX) * 1-GradCos
- FLD Dword Ptr GradCos ; Charge GradCos
- FADD St(0),St(1) ; Addition St(0),St(1);
- FSTP (Matrice Ptr DS:[DI]).Matrice3_3
- Fwait
- Nop
- Finit
- Nop
- FLD Dword Ptr GradSin
- FLD (Vector Ptr ES:[SI]).Vector_3
- FMul St(0),St(1)
- FSTP (Matrice Ptr DS:[DI]).Matrice1_2
- FLD (Vector Ptr ES:[SI]).Vector_2
- FMul St(0),St(1)
- Fstp (Matrice Ptr DS:[DI]).Matrice1_3
- FLD (Vector Ptr ES:[SI]).Vector_1
- FMul St(0),St(1)
- Fstp (Matrice Ptr DS:[DI]).Matrice2_3
- Fwait
- Nop
- Finit
- Nop
- FLD Dword Ptr GradCosNeg
- FLD (Vector Ptr ES:[SI]).Vector_1
- Fmul St(0),St(1)
- FLD (Vector Ptr ES:[SI]).Vector_2
- Fmul st(0),St(1)
- FLD (Matrice Ptr DS:[DI]).Matrice1_2
- FLDZ
- FADD St(0),St(2)
- FSUB St(0),St(1)
- FSTP (Matrice Ptr DS:[DI]).Matrice2_1
- FXCH St(1)
- FADD St(0),St(1)
- FSTP (Matrice Ptr DS:[DI]).Matrice1_2
- FLD (Vector Ptr ES:[SI]).Vector_3
- Fmul St(0),St(2)
- FldZ
- Fadd St(0),St(1)
- Fld (Matrice Ptr DS:[DI]).Matrice2_3
- FXCH St(1)
- Fsub St(0),St(1)
- FSTP (Matrice Ptr DS:[DI]).Matrice3_1 ;
- Fadd St(0),St(1)
- FSTP (Matrice Ptr DS:[DI]).Matrice1_3
- FLD (Matrice Ptr DS:[DI]).Matrice2_3
- FLD (Vector Ptr ES:[SI]).Vector_2
- Fmul St(0),St(5)
- Fld (Vector Ptr ES:[SI]).Vector_3
- Fmul St(0),St(1)
- FldZ
- Fadd St(0),St(1)
- Fsub St(0),St(3)
- FSTP (Matrice Ptr DS:[DI]).Matrice3_2 ;
- Fadd St(0),St(2)
- FSTP (Matrice Ptr DS:[DI]).Matrice2_3 ;
- Finit
- Fwait
- Nop
- RetN
- DefineMatrix EndP
-
- NouvRot Vector <?>
- Rotation Proc Near
- Finit
- Nop
- FLD (Matrice Ptr DS:[DI]).Matrice1_1
- FLD (Vector Ptr ES:[SI]).Vector_1
- Fmul St(0),St(1)
- Fld (Matrice Ptr DS:[DI]).Matrice1_2
- Fld (Vector Ptr ES:[SI]).Vector_2
- Fmul St(0),St(1)
- Fadd St(0),St(2);
-
- Fld (Matrice Ptr DS:[DI]).Matrice1_3
- Fld (Vector Ptr ES:[SI]).Vector_3
- Fmul St(0),St(1)
- Fadd St(0),St(2);
- Fstp Dword Ptr NouvRot.Vector_1
-
- Finit
- Nop
- FLD (Matrice Ptr DS:[DI]).Matrice2_1
- FLD (Vector Ptr ES:[SI]).Vector_1
- Fmul St(0),St(1)
- Fld (Matrice Ptr DS:[DI]).Matrice2_2
- Fld (Vector Ptr ES:[SI]).Vector_2
- Fmul St(0),St(1)
- Fadd St(0),St(2);
-
- Fld (Matrice Ptr DS:[DI]).Matrice2_3
- Fld (Vector Ptr ES:[SI]).Vector_3
- Fmul St(0),St(1)
- Fadd St(0),St(2);
- Fstp Dword Ptr NouvRot.Vector_2
-
- Finit
- Nop
- FLD (Matrice Ptr DS:[DI]).Matrice3_1
- FLD (Vector Ptr ES:[SI]).Vector_1
- Fmul St(0),St(1)
- Fld (Matrice Ptr DS:[DI]).Matrice3_2
- Fld (Vector Ptr ES:[SI]).Vector_2
- Fmul St(0),St(1)
- Fadd St(0),St(2);
-
- Fld (Matrice Ptr DS:[DI]).Matrice3_3
- Fld (Vector Ptr ES:[SI]).Vector_3
- Fmul St(0),St(1)
- Fadd St(0),St(2);
- Fstp Dword Ptr NouvRot.Vector_3
-
- Mov Eax,Dword Ptr NouvRot.Vector_1
- Mov (Vector Ptr ES:[SI]).Vector_1,Eax
- Mov Eax,Dword Ptr NouvRot.Vector_2
- Mov (Vector Ptr ES:[SI]).Vector_2,Eax
- Mov Eax,Dword Ptr NouvRot.Vector_3
- Mov (Vector Ptr ES:[SI]).Vector_3,Eax
-
- RetN
- Rotation EndP
-
-
-
- CopyColor Proc Near
- Mov Cx,3
- enHaut:
- Mov Eax,Dword Ptr Cs:[Si]
- Mov Dword Ptr Cs:[Di],Eax
- Add Di,4
- Add Si,4
- Dec Cx
- Jnz enHaut
- RetN
- CopyColor EndP
-
- ;þþ
- EqOdProc proc Near
- RetN
- EqOdProc Endp
-
- EqNrmProc proc Near
- Retn
- EqNrmProc Endp
-
- ;þþ Validation
- Align 16
- Norm Proc ; DS:DI pointe sur V V3t ; ES:BX Pointe sur Single en Sortie
- FLD (V3t Ptr DS:[DI]).X ; û(xý+yý+zý)
- FMul St,St(0) ;
- FLD (V3t Ptr DS:[DI]).Y ;
- FMul St,St(0) ;
- FADD ;
- FLD (V3t Ptr DS:[DI]).Z ;
- FMul St,St(0) ;
- FADD
- FSQRT
- FSTP Dword Ptr CS:[BX]
- RetN
- Norm EndP
-
- ;þþ Validation
- Align 16
- NormSphere Proc ; DS:DI pointe sur V V3t ; ES:BX Pointe sur Single en Sortie
- FLD (V3t Ptr DS:[DI]).X ; (xý+yý+zý)
- FMul St,St(0) ;
- FLD (V3t Ptr DS:[DI]).Y ;
- FMul St,St(0) ;
- FAdd ;
- FLD (V3t Ptr DS:[DI]).Z ;
- FMul St,St(0) ;
- FAdd ;
- FSTP Dword Ptr CS:[BX] ;
- RetN
- NormSphere EndP
-
- ;þþ Validation
- Align 16
- NormCylY Proc ; DS:DI pointe sur V V3t ; ES:BX Pointe sur Single en Sortie
- FLD (V3t Ptr DS:[DI]).X ; (xý+zý)
- FMul St,St(0) ;
- FLD (V3t Ptr DS:[DI]).Z ;
- FMul St,St(0) ;
- FADD
- FSTP Dword Ptr CS:[BX]
- RetN
- NormCylY EndP
-
-
- ;þþ Validation
- Align 16
-
- Norm_ Proc ; DS:DI pointe sur V V3t ; St(0) = Resultat
- FLD (V3t Ptr DS:[DI]).X ; û(xý+yý+zý)
- FMul St,St(0) ;
- FLD (V3t Ptr DS:[DI]).Y ;
- FMul St,St(0)
- FADD
- FLD (V3t Ptr DS:[DI]).Z
- FMul St,St(0)
- FADD
- FSQRT
- RetN
- Norm_ EndP
-
- ;þþ Validation
- Align 16
- NormSphere_ Proc ; DS:DI pointe sur V V3t ; St(0) = Resultat
- FLD (V3t Ptr DS:[DI]).X ; û(xý+yý+zý)
- FMul St,St(0) ;
- FLD (V3t Ptr DS:[DI]).Y ;
- FMul St,St(0)
- FADD
- FLD (V3t Ptr DS:[DI]).Z
- FMul St,St(0)
- FADD
- FSQRT
- RetN
- NormSphere_ EndP
-
- ;þþ Validation
- Align 16
- Normalize Proc ; Assume DS:[DI] Pointe sur V3t
- Enter 4,0
- Call Norm_
- FST Dword Ptr Cs:[Bp-4]
- Call ErrEps
- FLD (V3t Ptr CS:[DI]).X
- FLD Dword Ptr Cs:[Bp-4]
- FDIV
- FSTP (V3t Ptr CS:[DI]).X
- FLD (V3t Ptr CS:[DI]).Y
- FLD Dword Ptr Cs:[Bp-4]
- FDIV
- FSTP (V3t Ptr CS:[DI]).Y
- FLD (V3t Ptr CS:[DI]).Z
- FLD Dword Ptr Cs:[Bp-4]
- FDIV
- FSTP (V3t Ptr CS:[DI]).Z
- Leave
- RetN
- Normalize EndP
-
- Even
- Vsum Proc Near ; Assume ES:[SI] Valeur en Sortie
- ; DS:DI a:V3t Ds:Bx b:V3t
- FLD (V3t Ptr CS:[DI]).X ; ( a+b )
- FLD (V3t Ptr CS:[BX]).X ;
- FAdd ;
- Fstp (V3t Ptr CS:[SI]).X ;
- FLD (V3t Ptr CS:[DI]).Y
- FLD (V3t Ptr CS:[BX]).Y
- FAdd
- Fstp (V3t Ptr CS:[SI]).Y
- FLD (V3t Ptr CS:[DI]).Z
- FLD (V3t Ptr CS:[BX]).Z
- FAdd
- Fstp (V3t Ptr CS:[SI]).Z
- RetN
- Vsum EndP
-
- ; Retour de Procedure copro status normal
- Vdif Proc Near ; Assume ES:[SI] Valeur en Sortie
- ; DS:DI a:V3t Ds:Bx b:V3t
- FLD (V3t Ptr CS:[DI]).X ; ( a-b )
- FLD (V3t Ptr CS:[BX]).X ;
- FSub ;
- Fstp (V3t Ptr CS:[SI]).X ;
- FLD (V3t Ptr CS:[DI]).Y
- FLD (V3t Ptr CS:[BX]).Y
- FSub
- Fstp (V3t Ptr CS:[SI]).Y
- FLD (V3t Ptr CS:[DI]).Z
- FLD (V3t Ptr CS:[BX]).Z
- FSub
- Fstp (V3t Ptr CS:[SI]).Z
- RetN
-
- Vdif EndP
-
- Comment#
- TraceVdif Proc Near
- FLD Dword Ptr Cs:[Eye].X ; ( a-b )
- FLD Dword Ptr Cs:[Trace_p].X ;
- FSub ;
- Fstp Dword Ptr Cs:[Trace_Ve].X ;
- FLD Dword Ptr Cs:[Eye].Y
- FLD Dword Ptr Cs:[Trace_P].Y
- FSub
- Fstp Dword Ptr Cs:[Trace_Ve].Y
- FLD Dword Ptr Ds:[Eye].Z
- FLD (V3t Ptr DS:[Trace_p]).Z
- FSub
- Fstp Dword Ptr Es:[Trace_ve].Z
- RetN
- TraceVdif EndP
- Comment#
- GetNrmVdif Proc Near
- FLD (V3t Ptr DS:[DI]).X ;
- FLD (V3t Ptr DS:)[Trace_p].X ; ( a-b )
- FSub ;
- Fstp (V3t Ptr ES:[Trace_n]).X ;
- FLD (V3t Ptr DS:[DI]).Y
- FLD (V3t Ptr DS:[Trace_p]).Y
- FSub
- Fstp (V3t Ptr ES:[Trace_n]).Y
- FLD (V3t Ptr DS:[DI]).Z
- FLD (V3t Ptr DS:[Trace_p]).Z
- FSub
- Fstp (V3t Ptr ES:[Trace_n]).Z
- RetN
- GetNrmVdif EndP
-
- Kmul Proc Near; Es:[Si] V3t En Modification ; Cs:Bx Offset Single
- ; DS:[Di] V3t En Multiplication
- FLD Dword Ptr Cs:[Bx]
- FLD (V3t Ptr DS:[DI]).X
- Fmul
- FSTP Dword Ptr Es:[Si].X
- FLD Dword Ptr Cs:[Bx]
- FLD (V3t Ptr DS:[DI]).Y
- Fmul
- FSTP Dword Ptr Es:[Si].Y
- FLD Dword Ptr Cs:[Bx]
- FLD (V3t Ptr DS:[DI]).Z
- Fmul
- FSTP Dword Ptr Es:[Si].Z
- RetN
- Kmul EndP
- Smul Proc Near; Assume Ds:[DI] Equ A [Bx] Equ B result Es:[Si]
- FLD (V3t Ptr DS:[DI]).X
- FLD (V3t Ptr DS:[BX]).X
- Fmul
- FLD (V3t Ptr DS:[DI]).Y
- FLD (V3t Ptr DS:[BX]).Y
- Fmul
- Fadd
- FLD (V3t Ptr DS:[DI]).Z
- FLD (V3t Ptr DS:[BX]).Z
- Fmul
- Fadd
- FSTP Dword Ptr ES:[SI]
- RetN
- Smul EndP
- Smul_ Proc Near; Assume Ds:[DI] Equ A [Bx] Equ B result St(0)
- FLD (V3t Ptr DS:[DI]).X
- FLD (V3t Ptr DS:[BX]).X
- Fmul
- FLD (V3t Ptr DS:[DI]).Y
- FLD (V3t Ptr DS:[BX]).Y
- Fmul
- Fadd
- FLD (V3t Ptr DS:[DI]).Z
- FLD (V3t Ptr DS:[BX]).Z
- Fmul
- Fadd
- RetN
- Smul_ EndP
- Smulxz_ Proc Near; Assume Ds:[DI] Equ A [Bx] Equ B result St(0)
- FLD (V3t Ptr DS:[DI]).X
- FLD (V3t Ptr DS:[BX]).X
- Fmul
- FLD (V3t Ptr DS:[DI]).Z
- FLD (V3t Ptr DS:[BX]).Z
- Fmul
- Fadd
- RetN
- Smulxz_ EndP
-
- ErrEps Proc Near ; Assume St(0) = single s
- Fabs
- Fld Dword Ptr Epsilon
- Fxch
- Fcompp
- Fwait
- Fstsw Ax
- Test Ah,1
- Jne @@RunErrEps
- Clc
- RetN
- @@RunErrEps:
- Mov Sp,0FFFEh
- Mov Ax,03h ; Fin de Programme Erreur Epsilon
- Int 10h
- Int 20h
- ErrEps EndP
-
- OldCw DW 0
- NewCw DW 0
- ; utilise par Pow
- ExpX Proc Near ; St(0) = X
- Enter 4,0
- fldl2e ; load log2(10)
- fmulp st(1),st(0) ; log2(10) * argument
- fld st(0) ; duplicate product
- fstcw Word Ptr Cs:[Bp-4] ;oldcw; get old control word
- fwait ; wait till it arrives
- mov ax,Word Ptr Cs:[Bp-4];oldcw; change rounding mode
- and ax,0f3ffh ; field to "round down"
- or ax,0400h
- mov Word Ptr Cs:[Bp-2],Ax ;newcw,ax
- fldcw Word Ptr Cs:[Bp-2];newcw; force rounding mode
- frndint ; get int part of product
- fldcw Word Ptr Cs:[Bp-4];oldcw; restore old rounding mode
- fld st(0) ; duplicate integer part
- fxch st(2) ; get original product
- fsubrp st(1),st(0) ; find fractional part
- fld1
- fchs
- fxch st(1) ; scale fractional part
- fscale
- fstp st(1) ; discard coprocessor junk
- f2xm1 ; raise 2 to power-1
- fld1
- faddp st(1),st(0) ; correct for the -1
- fmul st(0),st(0) ; square result
- fscale ; scale by int part
- fstp st(1) ; discard coprocessor junk
- Leave
- RetN
- ExpX EndP
-
- Pow Proc Near ; x = St(0) y= St(1) retour st(0)
- FldlN2
- Fxch
- Fyl2X
- Fmul st(0),st(1)
- FSTP St(1)
- Fld Dword Ptr Pow10S
- FCOMP
- FWAIT
- FSTSW AX
- Test AH,1
- Jne @@Suite
- Fstp St(0)
- FldZ
- RetN
- @@Suite:
- Call ExpX ; St(0) = X
- RetN
- Pow EndP
-
- SqrSolve3 Proc Near
- Fld St(0)
- Fmul St,St(0) ; sqr(p)
- Fild Dword Ptr Cs:[aQuater]
- Fxch
- Fscale
- Fstp St(1)
- ; Fmulp ;st(0) sqr(p)*0.25
- ; Fxch st(2)
- Fsub St,St(2)
- Fstp St(2) ; q elimin‚ !
- Fchs ; Ici on change le signe de p
- Fxch
- Ftst
- FSTSW AX
- SAHF
- JB @@LamInfinity
- ; St(0) = d
- ; st(1) = p
- Fsqrt ; st(0) = ûd
- Fld Dword Ptr Cs:[Half1]
- Fmul st(1) st(2)
- ;
- FTST ; On teste h et 0
- FSTSW AX
- SAHF
- JB @@TryL1
- FLD St(1)
- FLD St(1)
- Fsub
- Fld Dword Ptr Cs:[Epsilon]
- @@SolveEpsilonL2:
- FUCOM
- FSTSW AX
- SAHF
- JA @@TurnToL1 ; Epsilon le plus grand
- Fstp St(0);
- Fstp St(2);
- Fstp St(0);
- Jmp @@RealChoice
- @@TurnToL1:
- FSTP St(0)
- FSTP St(0)
- ; Jmp @@TryL1
- @@TryL1:
- Fadd
- Fld Dword Ptr Cs:[Epsilon]
- ; Jmp @@SolveEpsilonL1
- ; @@SolveEpsilonL1:
- FUCOM
- FSTSW AX
- SAHF
- JA @@LamInfinity ; Epsilon le plus grand
- Fstp St(0);
- Jmp @@RealChoice
- @@LamInfinity:
- Fstp St(0)
- Fstp St(0)
- FLD Dword Ptr Cs:[Infinity]
- @@RealChoice:
- Retn
- SqrSolve3 EndP
- Comment#
- ; Modifier pour ne pas avoir de passage de paramettre !
- TraceRayToPoint Proc Near ;DI,r BX,l SI,p
- FLD Dword Ptr Cs:[Trace_RA.RN.X]
- Fmul Dword Ptr Cs:[Trace_Lmin]
- Fadd Dword Ptr Cs:[Trace_RA.RP.X]
- FSTP DWord Ptr Cs:[Trace_P.X]
-
- FLD Dword Ptr Cs:[Trace_RA.RN.Y]
- Fmul Dword Ptr Cs:[Trace_Lmin]
- Fadd Dword Ptr Cs:[Trace_RA.RP.Y]
- FSTP DWord Ptr Cs:[Trace_P.Y]
-
- FLD Dword Ptr Cs:[Trace_RA.RN.Z]
- Fmul Dword Ptr Cs:[Trace_Lmin]
- Fadd Dword Ptr Cs:[Trace_RA.RP.Z]
- FSTP DWord Ptr Cs:[Trace_P.Z]
- RetN
- TraceRayToPoint EndP
- Comment#
-
-
- ReflV_W DD 0
- Reflv_V DD 0,0,0 ; Equ V3t
- ReflV Proc Near
- Xchg Bx,Di
- ; Mov Bx, ; ve ; Valorise a l'inverse
- ; Mov Di, ; n ;
- Call Smul_
- Fadd St,St(0)
- Xchg Bx,Di
- ; St(0) = W
- FSTP Dword Ptr Cs:[ReflV_W]
- Mov Ax,Di ; Ax = Ve
- Mov Cx,Si ; Cx = Vr
- Mov Di,Bx ; Ici di = n
- Mov Bx,Offset ReflV_W
- ; Mov Di,n
- Mov Si,Offset ReflV_V
- Call Kmul
-
-
- ; Mov Bx,Offset ReflV_V
- ; Mov Di,Ax ;ve
-
- Mov Bx,Ax
- Mov Di,Offset ReflV_V
- Mov Si,Cx ;vr
- Call Vdif
- Retn
- ReflV EndP
-
- Comment#
- TransV_P DD ?
- TransV_Q DD ?
- Proc TransV ; Ve = Di, n = Bx , Dx pos d1,d2 , Si : Vt
- FLD (V3t Ptr DS:[DI]).X
- FLD (V3t Ptr DS:[BX]).X
- Fmul
- FLD (V3t Ptr DS:[DI]).Y
- FLD (V3t Ptr DS:[BX]).Y
- Fmul
- Fadd
- FLD (V3t Ptr DS:[DI]).Z
- FLD (V3t Ptr DS:[BX]).Z
- Fmul
- Fadd
- Fabs
- Fld
- Fmul St,St(0)
- Fld1
- Fsub St(0),St(1)
- Push Bx ; Car Modifie
- Mov Bx,Dx
- FLD Dword Ptr Ds:[Bx]
- Add Bx,4
- FLD Dword Ptr Ds:[Bx]
- FDIV
- Pop Bx
- Fld
- Fmul St,St(0)
- Fmul st(0),st(2)
- Fld1
- Fsub St(0),St(1)
- FTST
- FSTSW AX
- SAHF
- JP @@Erreur1
- JA @@D_P0 ;> P.Z > 0.0
- JB @@Suite ;> P.Z < 0.0
- @@Erreur1:
- @@D_P0:
- FSQRT
- Fld St(1)
- Fmul st(0),St(3)
- Fsub st(0),st(1)
- FSTP Dword Ptr Cs:TransV_Q
- FSTP Dword Ptr Cs:TransV_P
- Mov Dx,Si
- Mov Si,Di
- Mov Cx,Bx
- Mov Bx,Offset TransV_P
- Call Kmul
- Mov Bx,Offset TransV_Q
- Xchg Si,CX
- Mov Di,Si
- Call Kmul
- Mov Di,Cx
- Mov BX,Si
- Mov Si,Dx
- Call Vsum
- ; Plus Rien en Pile Normalement
- Clc
- RetN
- @@Suite:
- Fstp St(0)
- Fstp St(0)
- Fstp St(0)
- STC
- RetN
- TransV EndP
- Comment#
-
-
- Align 16
- LnX Proc Near ; St(0) = X
- FldlN2
- Fxch
- Fyl2X ; St(0) = Ln(X)
- RetN
- LnX EndP
- Align 16
- SphereInter Proc Near
- ; Pile Interne a SphereInter
- @@Si_SavDx Equ [Bp-2]
- @@Si_P Equ [Bp-6]
- @@Si_Q Equ [Bp-10]
- @@Si_L Equ [Bp-14]
- @@Si_PMmNrm Equ [Bp-18]
- @@Si_pMm Equ [Bp-30]
- ; Pile Externe a SphereInter
- @@Si_Obrn Equ [Bp+8];Bx = Trace.Obnr ; Pas le Mettre Ici En Fait !
- @@Si_Lmin Equ [Bp+4];Si = Trace.Lmin ;
- @@Si_R Equ [Bp+6];Di = Trace.r ;
- Enter 36,0
- Mov Word Ptr Cs:@@Si_SavDx,Dx
- Dec Dx
- Shl Dx,1
- Add Dx,Offset ObnrIs
- ; vdif(r.p,Sphe.m,pMm);
- Mov Si,Bp
- Sub Si,30 ; Si Devient Si_pMm
- Mov Bx,Dx
- Mov Bx,Word Ptr Cs:[Bx] ; Bx Devient Sphere K1 ou autre
- Mov Di,Word Ptr Cs:@@Si_R.RP
- Call Vdif
-
- ; pMmNrm := Norm (pMm);
- Mov Bx,Bp
- Sub Bx,18 ; Bx devient pMmNrm
- Mov Di,Bp
- Sub Di,30 ; Di Devient pMm
- Call NormSphere
-
- ; p := 2* smul(pMm,r.n);
- Mov Di,Bp
- Sub Di,30 ; pMp
- Mov Bx,Word Ptr Cs:@@Si_R
- Add Bx,Rn
- Call Smul_
- Fld St(0)
- Fadd
- Fstp Dword Ptr Cs:@@Si_P
-
- ; q := sqr(pMmNrm)-Sphe.sqrr;
- Fld Dword Ptr Cs:@@Si_pMmNrm
- ;Fmul st,st(0)
- Mov Bx,Dx
- Mov Bx,Word Ptr Cs:[Bx]
- Fld Dword Ptr Cs:[Bx.Sqrr]
- Fsub
- ;Fstp Dword Ptr Cs:@@Si_Q
-
- ; sqrSolve ( p,q,l);
- ;Fld Dword Ptr Cs:@@Si_Q
- Fld Dword Ptr Cs:@@Si_P
- Call SqrSolve3
- Fst Dword Ptr Cs:@@Si_L
- Mov Di,Word Ptr Cs:@@Si_Lmin
- Fld Dword Ptr Cs:[Di]
- FUCOMPP
- FSTSW AX
- SAHF
- ; if l < lmin then
- JBE @@NoChange
- ; lmin := l;
- Mov Dx,Word Ptr Cs:@@Si_SavDx
- Mov Bx,Word Ptr Cs:@@Si_Obrn
- Mov Ax,Word Ptr Cs:[Bx]
- ;Test Ax,0
- ;Je @@Normal
- ;Fld1
- ;Fchs
- ;Fld Dword Ptr Cs:@@Si_L
- ;Fld Dword Ptr Cs:[Di]
- ;Faddp
- ;Fscale
- ;Fstp Dword Ptr Cs:[Di]
- ;Fstp St(0)
- ;Mov Word Ptr Cs:[Bx],Dx
- ;Jmp @@NoChange
- ;;Leave
- ;RetN
- @@Normal:
- Mov Eax,Dword Ptr Cs:@@Si_L
- Mov Dword Ptr Cs:[Di],Eax
- ; Obnr := test;
- Mov Dx,Word Ptr Cs:@@Si_SavDx
- Mov Bx,Word Ptr Cs:@@Si_Obrn
- Mov Word Ptr Cs:[Bx],Dx
- @@NoChange:
- Leave
- RetN
- SphereInter EndP
-
- Align 16
- InterSect Proc Near ; Bx = Trace.Obnr
- ; Di = Trace.r
- ; Si = Trace.Lmin
- Enter 6,0
- Mov Word Ptr Cs:[Bp-2],Bx
- Mov Word Ptr Cs:[Bp-4],Di
- Mov Word Ptr Cs:[Bp-6],Si
-
- ; Normalize(r.n); ;
- Add Di,12 ;
- Call Normalize ; ;
- Mov Si,Word Ptr Cs:[Bp-6]
- Mov Di,Word Ptr Cs:[Bp-4]
-
- Fld Dword Ptr Cs:[Infinity]
- Fstp Dword Ptr Cs:[Si]
- Mov Word Ptr Cs:[Bx],0
- Comment#
-
-
- ; If r.n.y > 0 then
- FLD Dword Ptr Cs:[Di.Rn.Y]
- FTST
- FSTSW AX
- FSTP St(0)
- SAHF
- JA @@C1True
- Jmp @@C1False
- ; Begin
- @@C1True:
- ; if r.p.y > 0 then
- Fld Dword Ptr Cs:[Di.Rp.Y]
- FTST
- FSTSW AX
- FSTP St(0)
- SAHF
- JA @@C11True
- Jmp @@C11False
- @@C11True:
- ; Obnr := 5
- Mov Word Ptr Cs:[Bx],5
- ; Jmp @@AfterC
- Jmp @@IsObnr5
- @@C11False:
- ; Obnr:=0;
- Mov Word Ptr Cs:[Bx],0
- ; Jmp @@AfterC
- Jmp @@Continue5
- ; End
- ; Else
- ; Begin
- @@C1False:
- ; If r.p.y < 0 then
- FLD Dword Ptr Cs:[Di.Rp.Y]
- FTST
- FSTSW AX
- FSTP St(0)
- SAHF
- JB @@C12True
- Jmp @@C12False
- @@C12True:
- ; Obnr := 0
- Mov Word Ptr Cs:[Bx],0
- ; Jmp @@AfterC
- Jmp @@Continue5
- @@C12False:
- ; Obnr := 5;
- Mov Word Ptr Cs:[Bx],5
- ; Jmp @@AfterC
- Jmp @@IsObnr5
-
- @@AfterC:
- Cmp Word Ptr Cs:[Bx],5
- Jne @@Continue5
- ; if Obnr = 5 Then
- ; begin
- @@IsObnr5:
- ; lmin:=-r.p.y/r.n.y;
- FLD Dword Ptr Cs:[DI.Rp.Y]
- FCHS
- FLD Dword Ptr Cs:[Di.Rn.Y]
- FDIVP
- FST Dword Ptr Cs:[Si] ; Sauvegarde de Lmin
- FTST
- FSTSW AX
- FSTP St(0)
- SAHF
- ; if lmin<0 then
- JB @@Continue5
- Jmp @@OkLmin
- @@Continue5:
- ; lmin:=Infinity;
- Mov Eax,Dword Ptr Cs:[Infinity]
- Mov Dword Ptr Cs:[Si],Eax
- @@OkLmin:
- Comment#
-
-
- ; Bp Contient les Parametres deja passe a Intersect
- Push Bx
- Push Di
- Push Si
-
- Mov Dx,4 ; Numero de Sphere a tester !
- Call SphereInter
- Mov Dx,2
- Call SphereInter
- Mov Dx,3
- Call SphereInter
- Mov Dx,1
- Call SphereInter
- Pop Si
- Pop Di
- Pop Bx
- ; Mov Bx,Ax
- Leave
- RetN ; Elimine 6 Octets de La Pile
- InterSect EndP
-
- ; ToRefl:=GetNrm(ObNr,p,ve,n);
- Align 16
- GetMnrTable Dw Offset CaseK0 ; Fond
- Dw Offset CaseK1 ; Boule
- Dw Offset CaseK2 ;
- Dw Offset CaseK3 ;
- Dw Offset CaseK4 ;
- Dw Offset CaseK5 ; Sol
- Align 16
- GetNrm Proc Near
- Mov Bx,Word Ptr Cs:[Trace_Obnr]
- Shl Bx,1
- Add Bx,Offset GetMnrTable
- Mov Bx,Word Ptr Cs:[Bx]
- Call Bx
- Jmp AfterCaseK0
- CaseK1:
- Mov Di,Offset K1
- Call GetNrmVdif
- Mov Di,Bp
- Sub Di,42
- Call Normalize
- RetN
- CaseK2:
- Mov Di,Offset K2
- Call GetNrmVdif
- Mov Di,Bp
- Sub Di,42
- Call Normalize
- RetN
- CaseK3:
- Mov Di,Offset K3
- Call GetNrmVdif
- Mov Di,Bp
- Sub Di,42
- Call Normalize
- RetN
- CaseK4:
- Mov Di,Offset K4
- Call GetNrmVdif
- Mov Di,Bp
- Sub Di,42
- Call Normalize
- RetN
- CaseK5:
- FLDZ
- FST Dword Ptr Cs:[Trace_N.X]
- FSTP Dword Ptr Cs:[Trace_N.Z]
- FLD1
- FSTP Dword Ptr Cs:[Trace_N.Y]
- RetN
- CaseK0:
-
- RetN
- AfterCaseK0:
-
- ; Effectue Smul Ve,n resultat St(0)
- FLD Dword Ptr Cs:[Trace_Ve].X
- FLD Dword Ptr Cs:[Trace_n].X
- Fmul
- FLD Dword Ptr Cs:[Trace_Ve].Y
- FLD Dword Ptr Cs:[Trace_n].Y
- Fmul
- Fadd
- FLD Dword Ptr Cs:[Trace_ve].Z
- FLD Dword Ptr Cs:[Trace_n].Z
- Fmul
- Fadd
- Ftst
- FSTSW AX
- Fstp St(0)
- SAHF
- JP @@GetNrmC1 ;Erreur1
- ; If Smul(ve,n) < 0 Then
- JAE @@GetNrmC1 ;>= 0.0
- @@Erreur1:
- ; kmul(-1,n,n); { remplace par un Changement de signe ca }
- Fld Dword Ptr Cs:[Trace_n].x
- Fchs
- Fstp Dword Ptr Cs:[Trace_n].x
- Fld Dword Ptr Cs:[Trace_n].y
- Fchs
- Fstp Dword Ptr Cs:[Trace_n].y
- Fld Dword Ptr Cs:[Trace_n].z
- Fchs
- Fstp Dword Ptr Cs:[Trace_n].z
-
- Jmp @@GetNrmC2
- @@GetNrmC1:
- ; Fstp St(0)
- @@GetNrmC2:
-
- ; nn:=n; Copy simple ; Elimine pas de reflextion
- ; appel de NrmProc paramettre p et n
-
- Mov Di,Bp ; Normalize(n)
- Sub Di,42 ;
- Call Normalize ;
-
- ; ‚limine car pas de gestion reflexion !
- ;Ax = Vrais si
- ; (sMul(ve,n)>0) and (smul(nn,n)>0);
- ;Ax = Faux sinon
- ;
- Retn
- GetNrm EndP
-
- Ins_Obnr Dw 0
- Even
- Ins_R DD 0,0,0,0,0,0
- Ins_Lmin DD 0.001
- Ins_Dummy DD 0
- Even
- Comment#
- Function InShadow(p:v3T):boolean;
- var r:rayT; ShdNr:integer; dummy:single;
- begin
- r.p:=p; r.n:=LightV; RayToPoint(r,0.001,r.p);
- intersect(r,Shdnr,dummy); InShadow:=Shdnr>1;
- end;
- Comment#
- InShadow Proc Near
- ; Mov Si,Offset Ins_R.RP
- ; Mov Cx,3
- ; @@InS_Mov1:
- ; Mov Eax,Dword Ptr Cs:[Di]
- ; Mov Dword Ptr Cs:[Si],Eax
- ; Add Di,4
- ; Add Si,4
- ; Dec Cx
- ; Jnz @@InS_Mov1 ; Delocalise dans le specifique RayToPoint
- Mov Bx,Offset LightV
- Mov Si,Offset Ins_R.RN
- Mov Cx,3
- @@InS_Mov2:
- Mov Eax,Dword Ptr Cs:[Bx]
- Mov Dword Ptr Cs:[Si],Eax
- Add Bx,4
- Add Si,4
- Dec Cx
- Jnz @@InS_Mov2
- ; Equ RayToPoint Specifique
- FLD Dword Ptr Cs:[Ins_R.RN.X]
- Fmul Dword Ptr Cs:[Ins_LMin]
- ; Fadd Dword Ptr Cs:[Ins_R.RP.X]
- Fadd Dword Ptr Cs:[DI.X]
- FSTP DWord Ptr Cs:[Ins_R.RP.X]
- FLD Dword Ptr Cs:[Ins_R.RN.Y]
- Fmul Dword Ptr Cs:[Ins_Lmin]
- ; Fadd Dword Ptr Cs:[Ins_R.RP.Y]
- Fadd Dword Ptr Cs:[DI.Y]
- FSTP DWord Ptr Cs:[Ins_R.RP.Y]
- FLD Dword Ptr Cs:[Ins_R.RN.Z]
- Fmul Dword Ptr Cs:[Ins_Lmin]
- ; Fadd Dword Ptr Cs:[Ins_R.RP.Z]
- Fadd Dword Ptr Cs:[DI.Z]
- FSTP DWord Ptr Cs:[Ins_R.RP.Z]
-
- ; Faire Intersect(r,Shdnr,Dummy);
- Mov Word Ptr Cs:[Ins_Obnr],0
- Mov Di,Offset Ins_R
- Mov Bx,Offset Ins_Obnr
- Mov Si,Offset Ins_Dummy
- Call InterSect
- Mov Bx,Offset Ins_Obnr
- RetN
- InShadow EndP
-
- ; Attention Ici Pour Beneficier de L'appel Direct au paramettre contenue
- ; dans Trace il Faut Recalcul l'ajout sur BP
- ; Apres Introduction dans la routine
- Light_Cd Equ [Bp-2] ; Position
- Light_Cs Equ [Bp-14] ; Position
- Light_W2 Equ [Bp-18] ; Position
- Light_Spec Equ [Bp-22] ; Position
- Light_W1 Equ [Bp-26] ; Position
- Align 16
- Light Proc Near
- Enter 26,0 ; Ajout pour variable de Trace !
- Mov Bx,Word Ptr Cs:[Trace_Obnr][134]; A voir !
- Dec Bx
- Shl Bx,1
- Add Bx,Offset SurfIs
- Mov Bx,Word Ptr Cs:[Bx]
- Mov Word Ptr Cs:[Light_Cd],Bx ; Position sur Surface!
-
- ; w1:=smul(Lightv,n);
- Mov Di,Offset LightV
- Mov Bx,Bp
- Add Bx,92;(-42)+134
- Call Smul_
- ; St(0) Equ W1
- ; If (w1>0)
- FTST
- FSTSW AX
- FSTP Dword Ptr CS:[Light_W1]
- SAHF
- JP @@Erreur1
- JB @@LightEndCase
- @@Erreur1:
- ; Call InShadow p sur pile !! ; Elimine sans Consequence !
- ; And (not InShadow(p)) Then
- ; ; test (Not InShadow(p)) Vrais
- ; Begin
- Mov Di,Bp
- Add Di,-30+134
- Call InShadow
- Cmp Bx,1
- Jl @@LightEndCase
- Mov Di,Word Ptr Cs:[Light_Cd]
-
- ;c.r:=(LightC.r*w1+AmbC.r)*cd.r;
- FLD Dword Ptr Cs:[LightC.R]
- Fmul Dword Ptr Cs:[Light_W1]
- Fadd Dword Ptr Cs:[AmbC.R]
- Fmul Dword Ptr Cs:[Di.R]
- Fstp Dword Ptr Cs:[Cct.R]
-
- ;c.g:=(LightC.g*w1+AmbC.g)*cd.g;
- FLD Dword Ptr Cs:[LightC.G]
- Fmul Dword Ptr Cs:[Light_W1]
- Fadd Dword Ptr Cs:[AmbC.G]
- Fmul Dword Ptr Cs:[Di.G]
- Fstp Dword Ptr Cs:[Cct.G]
-
- ;c.b:=(LightC.b*w1+AmbC.b)*cd.b;
- FLD Dword Ptr Cs:[LightC.B]
- Fmul Dword Ptr Cs:[Light_W1]
- Fadd Dword Ptr Cs:[AmbC.B]
- Fmul Dword Ptr Cs:[Di.B]
- Fstp Dword Ptr Cs:[Cct.B]
-
- ; w2:=smul(Vr,Lightv);
- Mov Bx,Bp
- Add Bx,68;(-66)+134 ; Vr
- Mov Di,Offset Lightv
- Call Smul_
- FTST
- FSTSW AX
- FSTP Dword Ptr CS:[Light_W2]
- SAHF
- ; JP @@LightEnd;Erreur2
- ; If w2>0 Then
- JB @@LightEnd
- @@Erreur2:
- ; Pow Comment Ca Marche Huhu
- ; spec:=pow(w2,ObArr[ObNr].Oe);
- Mov Di,Word Ptr Cs:[Light_Cd]
- Fld Dword Ptr Cs:[Di].SurfT.SOe
- Fld Dword Ptr Cs:[Light_W2]
- Call Pow
- Fst Dword Ptr Cs:[Light_Spec]
- Ftst
- FSTSW AX
- FSTP St(0)
- SAHF
- JZ @@NoSpec ; si Spec = 0 pas besoin de calcul
-
- ; cs:=ObArr[ObNr].specC;
- Mov Di,Word Ptr Cs:[Light_Cd]
- ; c.r:=c.r+spec*cs.r;
- Fld Dword Ptr Cs:[Di].SurfT.SSpecC.R
- Fmul Dword Ptr Cs:[Light_Spec]
- Fadd Dword Ptr Cs:[Cct.R]
- Fstp Dword Ptr Cs:[Cct.R]
-
- ; c.g:=c.g+spec*cs.g;
- Fld Dword Ptr Cs:[Di].SurfT.SSpecC.G
- Fmul Dword Ptr Cs:[Light_Spec]
- Fadd Dword Ptr Cs:[Cct.G]
- Fstp Dword Ptr Cs:[Cct.G]
-
- ; c.b:=c.b+spec*cs.b;
- Fld Dword Ptr Cs:[Di].SurfT.SSpecC.B
- Fmul Dword Ptr Cs:[Light_Spec]
- Fadd Dword Ptr Cs:[Cct.B]
- Fstp Dword Ptr Cs:[Cct.B]
- @@NoSpec:
-
- Jmp @@LightEnd
- @@LightEndCase:
- Mov Di,Word Ptr Cs:[Light_Cd]
- ; c.r:=AmbC.r*cd.r;
- FLD Dword Ptr Cs:[AmbC.r]
- Fmul Dword Ptr Cs:[DI.r]
- Fstp Dword Ptr Cs:[Cct.R]
- ; c.g:=AmbC.g*cd.g;
- FLD Dword Ptr Cs:[AmbC.g]
- Fmul Dword Ptr Cs:[DI.g]
- Fstp Dword Ptr Cs:[Cct.G]
- ; c.b:=AmbC.b*cd.b;
- FLD Dword Ptr Cs:[AmbC.b]
- Fmul Dword Ptr Cs:[DI.b]
- Fstp Dword Ptr Cs:[Cct.b]
- @@LightEnd:
-
- Leave
- RetN
- Light EndP
-
- Align 16
- Trace Proc Near
- ; Les Variables Transmise a Trace
- Trace_RekDep Equ [Bp+16] ; Word ; Correspond!
- Trace_R Equ [Bp+14] ; Word addresse de ra
- Trace_c Equ [Bp+12] ; Word
- Trace_N1 Equ [Bp+08] ; Dword
- Trace_Atten Equ [Bp+04] ; Dword
-
- ; Les Variables Interne a
- Trace_Obnr Equ [BP-2]
- Trace_Lmin Equ [BP-6]
- Trace_N2 Equ [BP-10]
- Trace_As Equ [BP-14]
- Trace_At Equ [BP-18]
- Trace_P Equ [BP-30]
- Trace_N Equ [BP-42]
- Trace_VE Equ [BP-54]
- Trace_VR Equ [BP-66]
- Trace_VT Equ [BP-78]
- Trace_CI Equ [BP-90]
- Trace_CS Equ [BP-102]
- Trace_ToRefl Equ [BP-104]
- Trace_ToTrans Equ [BP-106]
- Trace_Ra Equ [Bp-130] ; Zone de stockage Ra
-
- Enter 130,0 ; Une Zone de Data de 130 Octets
- Mov Si,Word Ptr Cs:[Trace_R]; Chargement d'un Rayon passe en paramettre
- Mov Di,Bp ; sur la pile interne a Proc_Trace
- Sub Di,130 ;
- Mov Cx,6 ; 6 Dword en Copie !
- @@Duplique:
- Mov Eax,Dword Ptr Cs:[Si]
- Mov Dword Ptr Cs:[Di],Eax
- Add Si,4
- Add Di,4
- Dec Cx
- Jnz @@Duplique
-
- Mov Ax,Word Ptr Cs:[Trace_RekDep]
- Cmp Ax,Word Ptr Cs:[MaxRekDep]
- Jg @@TestAtten
- @@SetC:
- Mov Bx,Word Ptr Cs:[Trace_c]
- Mov Eax,Dword Ptr Cs:[IsZero]
- Mov Dword Ptr Cs:[Bx.R],Eax
- Mov Dword Ptr Cs:[Bx.G],Eax
- Mov Dword Ptr Cs:[Bx.B],Eax
- Jmp @@OutOfTrace
- @@TestAtten:
- FLD Dword Ptr Cs:Trace_Atten
- FLD Dword Ptr Cs:AttenEps
- FUCOMPP
- FSTSW AX
- SAHF
- JA @@SetC
-
- ; Subterfuge
- ; On Peu Elimine la passation de parametre vers Intersect
- ; A Condition de Permettre a Intersect de Taper dans la structure
- ; de pile de Trace !!!
- ;intersect(r,obNr,lMin);
- Mov Di,Bp
- Sub Di,130 ;Mov Di, Trace_Ra
- Mov Bx,Bp
- Sub Bx,2 ;Mov Bx, Trace_Obnr
- Mov Si,Bp
- Sub Si,6 ;Mov Si, Trace_Lmin
- Call Intersect
- Mov Bx,Cs:[Trace_Obnr] ; Recupere Bx Valorise par Intersect
- Cmp Bx,0
- Je @@K0
- ; Fld Dword Ptr Cs:[Trace_Lmin]
- ; Fstp St(0);
- ; RayToPoint(r,lMin,p);
-
- ; Call TraceRayToPoint ; Specifique
- ; remplace en Dur ; Les Parametres Sont Acquis !!
- FLD Dword Ptr Cs:[Trace_RA.RN.X]
- Fmul Dword Ptr Cs:[Trace_Lmin]
- Fadd Dword Ptr Cs:[Trace_RA.RP.X]
- FSTP DWord Ptr Cs:[Trace_P.X]
-
- FLD Dword Ptr Cs:[Trace_RA.RN.Y]
- Fmul Dword Ptr Cs:[Trace_Lmin]
- Fadd Dword Ptr Cs:[Trace_RA.RP.Y]
- FSTP DWord Ptr Cs:[Trace_P.Y]
-
- FLD Dword Ptr Cs:[Trace_RA.RN.Z]
- Fmul Dword Ptr Cs:[Trace_Lmin]
- Fadd Dword Ptr Cs:[Trace_RA.RP.Z]
- FSTP DWord Ptr Cs:[Trace_P.Z]
-
- ; vDif(eye,p,ve);
- ; Call TraceVdif ; Specifique
- ; Remplace en Dur ; Les Parametres Sont Acquis !!
- FLD Dword Ptr Cs:[Eye].X ; ( a-b )
- FLD Dword Ptr Cs:[Trace_p].X ;
- FSub ;
- Fstp Dword Ptr Cs:[Trace_Ve].X ;
- FLD Dword Ptr Cs:[Eye].Y
- FLD Dword Ptr Cs:[Trace_P].Y
- FSub
- Fstp Dword Ptr Cs:[Trace_Ve].Y
- FLD Dword Ptr Ds:[Eye].Z
- FLD (V3t Ptr DS:[Trace_p]).Z
- FSub
- Fstp Dword Ptr Es:[Trace_ve].Z
- ; normalize(ve);
- Mov Di,Bp
- Sub Di,54
- Call Normalize
-
- Mov Di,Bp
- Sub Di,30
- ; ToRefl:=GetNrm(ObNr,p,ve,n);
- Call GetNrm
-
- ; ReflV(ve,n,vr);
- Mov Di,Bp ; ve;n
- Sub Di,54
- Mov Bx,Bp ; n;Ve
- Sub Bx,42
- Mov Si,Bp ; Vr
- Sub Si,66
- Call ReflV
-
- ; Light(Obnr,p,n,ve,vr,c);
- Call Light
- Jmp @@OutOfTrace
- @@K0:
- Mov Si,Offset Black;MediumVioletRed
- Mov Di,Offset Cct
- Call CopyColor
- Jmp @@OutOfTrace
-
- @@LastChoice:
- @@OutOfTrace:
- Leave
- RetN 14
- Trace EndP
-
-
-
- ; ce Pset Correspond a 16m couleur pour ma Tseng !
- Even
- PsetX DD ?
- PsetY DD ?
- Bu DD 0
- Gr DD 0
- Rd DD 0
- Even
- Pset Proc Near
- Push Es
- Push Word Ptr Cs:[DestSeg]
- Pop Es
- Mov Dword Ptr Cs:[PsetX],Ecx
- Mov Dword Ptr Cs:[PsetY],Ebx
- Mov Eax,Ecx
- Shl Ecx,1
- Add Ecx,Eax
- Mov Eax,Ebx
- Mov Ebx,640*3
- Mul Bx
- Add Ax,Cx
- Adc Dx,0
- Mov Di,Ax
- Mov Ax,Dx
- Cmp Dx,Word Ptr Cs:[ABank_R]
- Je @@NextB
- Mov Word Ptr Cs:[Abank_R],Dx
- Mov Ah,Al
- Shl Ah,4
- Or Al,Ah
- Mov Dx,3CDh
- Out Dx,Al
- @@NextB:
- Mov Al,Byte Ptr Cs:[Bu]
- StoSb
-
- Mov Ecx,Dword Ptr Cs:[PsetX]
- Mov Eax,Ecx
- Shl Ecx,1
- Add Ecx,Eax
- Inc Ecx
- Mov Eax,Dword Ptr Cs:[PsetY]
- Mov Ebx,640*3
- Mul Bx
- Add Ax,Cx
- Adc Dx,0
- Mov Di,Ax
- Mov Ax,Dx
- Cmp Dx,Word Ptr Cs:[ABank_R]
- Je @@NextG
- Mov Word Ptr Cs:[Abank_R],Dx
- Mov Ah,Al
- Shl Ah,4
- Or Al,Ah
- Mov Dx,3CDh
- Out Dx,Al
- @@NextG:
- Mov Al,Byte Ptr Cs:[Gr]
- StoSb
-
- Mov Ecx,Dword Ptr Cs:[PsetX]
- Mov Eax,Ecx
- Shl Ecx,1
- Add Ecx,Eax
- Add Ecx,2
- Mov Eax,Dword Ptr Cs:[PsetY]
- Mov Ebx,640*3
- Mul Bx
- Add Ax,Cx
- Adc Dx,0
- Mov Di,Ax
- Mov Ax,Dx
- Cmp Dx,Word Ptr Cs:[ABank_R]
- Je @@NextR
- Mov Word Ptr Cs:[Abank_R],Dx
- Mov Ah,Al
- Shl Ah,4
- Or Al,Ah
- Mov Dx,3CDh
- Out Dx,Al
- @@NextR:
- Mov Al,Byte Ptr Cs:[Rd]
- StoSb
-
-
- Pop Es
- RetN
- Pset EndP
-
- Even
- Pset64K Proc Near
- Push Es
- Push Word Ptr Cs:[DestSeg]
- Pop Es
- Mov Dword Ptr Cs:[PsetX],Ecx
- Mov Dword Ptr Cs:[PsetY],Ebx
- Mov Eax,Ecx
- Add Ecx,Eax
- Mov Eax,Ebx
- Mov Ebx,640*2
- Mul Bx
- Add Ax,Cx
- Adc Dx,0
- Mov Di,Ax
- Mov Ax,Dx
- Cmp Dx,Word Ptr Cs:[ABank_R]
- Je @@NextB
- Mov Word Ptr Cs:[Abank_R],Dx
- ; Xor Dx,Dx
- ; Mov Ah,Al
- ; Shl Ah,4
- ; Or Al,Ah
- ; Mov Dl,Al
- Mov Ax,4F05h
- Xor Bx,Bx
- Int 10h
- ; Mov Dx,3CDh
- ; Out Dx,Al
- @@NextB:
- Xor Ax,Ax
- Mov Al,Byte Ptr Cs:[Rd]
- Shr Al,3
- Shl Ax,11
- Mov Al,Byte Ptr Cs:[Bu]
- Shr Al,3
- Xor Bx,Bx
- Mov Bl,Byte Ptr Cs:[Gr]
- Shr Bl,2
- Shl Bx,5
- Add Ax,Bx
- StoSw
- Pop Es
- RetN
- Pset64K EndP
-
-
- AddX DD 0
- AddY DD 0
- BaseX DD 0
- BaseY DD 0
- RunM_X DD 0
- RunM_Y DD 0
- H DD 0
- V DD 0
- HelpCompute1 DD 0
-
- RunMickey1 Proc Near
-
- Fld Dword Ptr Cs:[PicSizeWc] ; Aide au calcul de h
- Fld Dword Ptr Cs:[PixRat] ;
- Fmul ;
- Fild Dword Ptr Cs:[Ymax] ;
- Fild Dword Ptr Cs:[Xmax] ; Valorisation de HelpCompute
- Fdiv ;
- Fmul
- Fstp Dword Ptr Cs:[HelpCompute1]
-
- Mov Eax,DWord Ptr Cs:[BaseY]
- Mov DWord Ptr Cs:[RunM_Y],Eax
-
- ;While ((Y <= Ymax) And (KeyStop=False)) Do
- @@W1Test:
- Mov Eax,DWord Ptr Cs:[Ymax2]
- Cmp Dword Ptr Cs:[RunM_Y],Eax
- Jle @@W1C0Vrais
- Jmp @@W1False
- @@W1C0Vrais:
- Cmp Word Ptr Cs:[KeyStop],Faux
- Je @@W1C1Vrais
- Jmp @@W1False
- @@W1C1Vrais:
-
- ; Remettre Ici Equ 0.21
- ; h:=(-y/ymax+0.5)*ymax/xmax*PicSiZeWC*PixRat;
- FiLD Dword Ptr Cs:[RunM_Y]
- FCHS
- Fild Dword Ptr Cs:[Ymax]
- Fdiv
- Fld Dword Ptr Cs:Half1
- Fadd
- Fld Dword Ptr Cs:HelpCompute1
- Fmul
- Fstp Dword Ptr Cs:[h]
-
- ; kMUl(h,Vh,hv);
- Mov Bx,Offset h
- Mov Di,Offset Vh
- Mov Si,Offset Hv
- Call Kmul
-
- ; X:=BaseX;
- Mov Eax,Dword Ptr Cs:[BaseX]
- Mov Dword Ptr Cs:[RunM_X],EaX
-
- ;While ((X <= Xmax) And (KeyStop=False))Do
- @@W2Test:
- Mov Eax,Dword Ptr Cs:[Xmax2]
- Cmp Dword Ptr Cs:[RunM_X],Eax
- Jle @@W2C0Vrais
- Jmp @@W2False
- @@W2C0Vrais:
- Cmp Word Ptr Cs:[KeyStop],Faux
- Je @@W2C1Vrais
- Jmp @@W2False
- @@W2C1Vrais:
-
- ; v:=(x/xmax-0.5)*PicSizeWC;
- Fild Dword Ptr Cs:[RunM_X]
- Fild Dword Ptr Cs:[Xmax]
- FdivP St(1),St(0)
- Fld Dword Ptr Cs:[Half1]
- Fsubr
- Fld Dword Ptr Cs:[PicSizeWc]
- Fmul
- Fstp Dword Ptr Cs:[V]
-
- ; kMul(v,vr,nh);
- Mov Bx,Offset v
- Mov Di,Offset Vr
- Mov Si,Offset Nh
- Call Kmul
-
- ; vSum(hv,nh,nh);
- Mov Di,Offset Hv
- Mov Bx,Offset Nh
- Mov Si,Offset Nh
- Call Vsum
-
- ; Vdif(nh,eye,r.n);
- Mov Di,Offset Nh
- Mov Bx,Offset Eye
- Mov Si,Offset Ra.Rn
- Call Vdif
-
- ; Trace(r,0,1,1,c);
- Push Word Ptr 0000 ; Correspond a RekDep !!
- Push Offset Ra ; Trace doit faire une copie en pile
- Push Offset Cct ;
- Push Dword Ptr Cs:Is1 ;
- Push Dword Ptr Cs:Is1 ;
- Call Trace
-
- ;
- FLD Dword Ptr Cs:[Cct.R] ; þþþþþþ
- FLD1 ; þþþþ
- FUCOMPP ; þþ
- FSTSW AX ; þþ
- SAHF ; þþ La Chromatique Rouge est
- JA @@NoRChg ; þþ compare a 1.0 et est mise a 1.0
- Mov Byte Ptr Cs:[Rd],255 ; þþ Arrondit Automatique
- Jmp @@DoGreen ; þþ
- Even ; þþ
- @@NoRChg: ; þþ
- FLD Dword Ptr Cs:[Cct.R] ; þþ
- Fild Dword Ptr Cs:[Mul255] ; þþ
- Fmul ; þþ Ici On Arrondie les Couleurs
- Fistp Dword Ptr Cs:[Rd] ; þþ Avant Mise en place du point
- @@DoGreen: ; þþ
- FLD Dword Ptr Cs:[Cct.G] ; þþ
- FLD1 ; þþ
- FUCOMPP ; þþ
- FSTSW AX ; þþ
- SAHF ; þþ La Chromatique Verte est
- JA @@NoGChg ; þþ compare a 1.0 et est mise a 1.0
- Mov Byte Ptr Cs:[Gr],255 ; þþ
- Jmp @@DoBlue ; þþ
- Even ; þþ
- @@NoGChg: ; þþ
- FLD Dword Ptr Cs:[Cct.G] ; þþ
- Fild Dword Ptr Cs:[Mul255] ; þþ
- Fmul ; þþ
- Fistp Dword Ptr Cs:[Gr] ; þþ
- @@DoBlue: ; þþ
- FLD Dword Ptr Cs:[Cct.B] ; þþ
- FLD1 ; þþ
- FUCOMPP ; þþ
- FSTSW AX ; þþ La Chromatique Bleu est
- SAHF ; þþ compare a 1.0 et est mise a 1.0
- JA @@NoBChg ; þþ Si et Seulement Si la Chromatique
- ; Mov Eax,Dword Ptr Cs:[Is1] ; þþ de d‚part est superieure a 1.0
- ; Mov Dword Ptr Cs:[C.B],Eax ; þþþþ
- Mov Byte Ptr Cs:[Bu],255 ; þþ
- Jmp @@DoPset ; þþ
- Even ; þþ
- @@NoBChg: ; þþ
- FLD Dword Ptr Cs:[Cct.B] ; þþ
- Fild Dword Ptr Cs:[Mul255] ; þþ
- Fmul ; þþþþ
- Fistp Dword Ptr Cs:[Bu] ; þþþþþþ
- @@DoPset:
-
- ; setzePixel(AddX+x,AddY+y,round(c.r*255),round(c.g*255) ,round(c.b*255) );
- Mov Ecx,Dword Ptr Cs:[Addx] ; Positionnement du Demarrage
- Add Ecx,Dword Ptr Cs:[RunM_X] ; Premier Point Haut Gauche
- Mov Ebx,Dword Ptr Cs:[Addy] ;
- Add Ebx,Dword Ptr Cs:[RunM_Y] ;
- Call Pset64K
-
- In Al,60h ; Test Clavier pour
- Dec Al ; Interruption
- Jz @@StopIt ; et sortie dans l'espace
-
- Inc Dword Ptr Cs:[RunM_X] ; Ajoute 2 au tramage X
- Jmp @@W2Test
- @@W2False:
-
- Inc Dword Ptr Cs:[RunM_Y] ; Ajoute 2 au tramage Y
- Jmp @@W1Test
- @@W1False:; Fin du While
- @@StopIt:
- RetN
- RunMickey1 EndP
-
- Mov Word Ptr Cs:[Abank_R],65535 ; Generation d'un Mickey en
- Call RunMickey1 ; Lancement du remap en Question
- Demarre: ; Ici D‚marre le programme
-
- ; Juste Pour Etre Tranquille
- Mov Ax,Cs
- Mov Ds,Ax
- Mov Es,Ax
-
- Finit ; Necessaire
- ; þþþþþþ
- ; þþþþþþþþþþþþ Valorisation de Demarrage
- ; þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ
- ; R.p := Eye; ; þþþþþþþ
- CoordCopy Eye Ra.Rp ; þþþþþ
- ; ErrEps(Eye.z); ; þþþ
- FLD Dword Ptr Cs:Ra.RP.z ; þþþ
- Call ErrEps ; þþþ
- ; Normalize(LightV) ; þþþ
- Mov Ax,Cs ; þþþ
- Mov Ds,Ax ; þþþ
- Mov Di,Offset LightV ; þþþ
- Call Normalize ; þþþ
- ;vh.x:=-x; ; þþþ
- FLD Dword Ptr Cs:[Eye.x] ; þþþ
- FCHS ; þþþ
- FSTP Dword Ptr Cs:[Vh.x] ; þþþ
- ;vh.y:=-y; ; þþþ
- FLD Dword Ptr Cs:[Eye.y] ; þþþ
- FCHS ; þþþ
- FSTP Dword Ptr Cs:[Vh.y] ; þþþ
- ;vh.z:=(sqr(x)+sqr(y)+sqr(z))/z; ; þþþ
- FLD Dword Ptr Cs:[Eye.x] ; þþþ
- FMul st,St(0) ; þþþ
- Fld Dword Ptr Cs:[Eye.y] ; þþþ
- FMul st,St(0) ; þþþ
- Fadd ; þþþ
- Fld Dword Ptr Cs:[Eye.z] ; þþþ
- FMul st,St(0) ; þþþ
- Fadd ; þþþ
- Fld Dword Ptr Cs:[Eye.z] ; þþþ
- Fdiv ; þþþ
- Fstp Dword Ptr Cs:[Vh.z] ; þþþ
- ;normalize(vh); ; þþþ
- Mov Ax,Cs ; þþþ
- Mov Ds,Ax ; þþþ
- Mov Di,Offset Vh ; þþþ
- Call Normalize ; þþþ
- ;if z<0 then ; þþþ
- Fld Dword Ptr Cs:[Eye.z] ; þþþ
- FTST ; Test St(0) & 0.0 ; þþþ
- FSTSW AX ; þþþ
- SAHF ; Valorise Flags ; þþþ
- JAE @@NoMul ; þþþ
- ;kMUl(-1,vh,vh); ; þþþ
- Int 20; ; þþþ
- Fld Dword Ptr Cs:[Vh.X] ; þþþ
- Fchs ; þþþ
- Fstp Dword Ptr Cs:[Vh.X] ; þþþ
- Fld Dword Ptr Cs:[Vh.Y] ; þþþ
- Fchs ; þþþ
- Fstp Dword Ptr Cs:[Vh.Y] ; þþþ
- Fld Dword Ptr Cs:[Vh.Z] ; þþþ
- Fchs ; þþþ
- Fstp Dword Ptr Cs:[Vh.Z] ; þþþ
- @@NoMul: ; þþþ
- ;vr.x:=vh.y*z-vh.z*y; ; þþþ
- Fld Dword Ptr Cs:[Vh.z] ; þþþ
- Fld Dword Ptr Cs:[Eye.y] ; þþþ
- Fmul ; þþþ
- Fld Dword Ptr Cs:[Vh.y] ; þþþ
- Fld Dword Ptr Cs:[Eye.z] ; þþþ
- Fmul ; þþþ
- Fsub ; þþþ
- Fstp Dword Ptr Cs:[Vr.x] ; þþþ
- ;vr.y:=vh.z*x-vh.x*z; ; þþþ
- Fld Dword Ptr Cs:[Vh.x] ; þþþ
- Fld Dword Ptr Cs:[Eye.z] ; þþþ
- Fmul ; þþþ
- Fld Dword Ptr Cs:[Vh.z] ; þþþ
- Fld Dword Ptr Cs:[Eye.x] ; þþþ
- Fmul ; þþþ
- Fsub ; þþþ
- Fstp Dword Ptr Cs:[Vr.y] ; þþþ
- ;vr.z:=vh.x*y-vh.y*x; ; þþþ
- Fld Dword Ptr Cs:[Vh.y] ; þþþ
- Fld Dword Ptr Cs:[Eye.x] ; þþþ
- Fmul ; þþþ
- Fld Dword Ptr Cs:[Vh.x] ; þþþ
- Fld Dword Ptr Cs:[Eye.y] ; þþþ
- Fmul ; þþþ
- Fsub ; þþþ
- Fstp Dword Ptr Cs:[Vr.z] ; þþþ
- Fstp St(0) ; þþþ
- ;normalize(vr); ; þþþ
- Mov Ax,Cs ; þþþ
- Mov Ds,Ax ; þþþ
- Mov Di,Offset Vr ; þþþþþ
- Call Normalize ; þþþþþþþ
- ; þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ
- ; þþþþþþþþþþþþ Valorisation de Demarrage Termine
- ; þþþþþþ
-
- ; Fabrication d'un degre
- FLDPI
- FILD Dword Ptr GradBase
- Fdiv
- Fstp Dword Ptr Grad
-
- Mov Eax,Dword Ptr Grad ; Eax Definit le degre de modif
- Mov Si,Offset Xrotate ; le vecteur applique
- Mov Di,Offset MatriceE ; la Matrice genere
- Call DefineMatrix ;
-
- Mov Sp,16384;+1024;+512 ; Permet un Gain de Temps !
-
- Mov Ax,4F02h ;þþþ Changement de mode video
- Mov Bx,0111h ;þþ 112 Mode 640*480 16m Pset <- Et4000W32p
- Int 10h ;þþþ 111 Mode 640*480 64k Pset64K <- Vesa
-
- Mov Si,Offset PaleGreen ; þþþþþþ
- Mov Di,Offset K1Surf ; þþþþ
- Call CopyColor ; þþ Valorisation des pigments
- Mov Si,Offset MediumVioletRed ; þþ pour chacune des spheres
- Mov Di,Offset K2Surf ; þþ composant le Mickey
- Call CopyColor ; þþ
- Mov Si,Offset MediumVioletRed ; þþ
- Mov Di,Offset K3Surf ; þþ
- Call CopyColor ; þþ
- Mov Si,Offset Red;MediumVioletRed ; þþ
- Mov Di,Offset K4Surf ; þþþþ
- Call CopyColor ; þþþþþþ
-
- Mov Dword Ptr Cs:[AddX] , 0 ; Centrage sur ecran
- Mov Dword Ptr Cs:[AddY] , 0 ; 640*480
- Xor Ecx,Ecx
- Again: ; Attente touche escape
- Push Ecx
- Mov Dword Ptr Cs:[BaseX], 0 ; Base de Remap d'un Mickey
- Mov Dword Ptr Cs:[BaseY], 0
- Mov Word Ptr Cs:[Abank_R],65535 ; Generation d'un Mickey en
- Call RunMickey1 ; Lancement du remap en Question
-
- Mov Di,Offset MatriceE ; On Effectue la rotation de chacun des points
- Mov Si,Offset K4 ;
- Call Rotation ;
- ; Mov Di,Offset MatriceE ;
- Mov Si,Offset K1 ;
- Call Rotation ;
- ; Mov Di,Offset MatriceE ;
- Mov Si,Offset K3 ;
- Call Rotation ;
- ; Mov Di,Offset MatriceE ;
- Mov Si,Offset K2 ;
- Call Rotation ;
-
- Add Word Ptr Cs:[AddX], 160
- Cmp Word Ptr Cs:[AddX],640
- Jl @@NoIncBase
- Mov Word Ptr Cs:[AddX],0
- Add Word Ptr Cs:[AddY],120
- Cmp Word Ptr Cs:[AddY],480
- Jl @@NoIncBase
- Mov Word Ptr Cs:[AddX],0
- Mov Word Ptr Cs:[AddY],0
- @@NoIncBase:
- Pop Ecx ;
- inc Cx
- Cmp Cx,180
- Jg CestFinit
- In Al,60h
- Dec Al
- Jnz Again
-
- CestFinit:
- Mov Ax,03h ; Retour en Mode Texte
- Int 10h
-
- Mov Sp,0FFFEh ; Validation Stack pour retour
- Int 20h
- StartC EndS
- End StartC ; Fin de Programme
-
Comment#
Asmik.Asm
94/95
Comment#
;Jumps
.586P
;.387
;Locals @@
Vrais Equ 0
Faux Equ 255
Vector Struc ; 12 Octets de Vecteur;
Vector_1 DD ? ;
Vector_2 DD ? ;
Vector_3 DD ? ;
Vector EndS
Matrice Struc ; 48 Octets de Matrice
Matrice1_1 DD ?
Matrice1_2 DD ?
Matrice1_3 DD ?
Matrice2_1 DD ?
Matrice2_2 DD ?
Matrice2_3 DD ?
Matrice3_1 DD ?
Matrice3_2 DD ?
Matrice3_3 DD ?
Matrice EndS
; Quelque Structure Lourde
V3t Struc ; definition d'une coordonnee 12 Octets
X DD 0
Y DD 0
Z DD 0
V3t Ends
; ; Definition d'un Pigment
Ct Struc ; 12 Octets de pigment;
R DD 0 ; 0.0 -> 1.0
G DD 0
B DD 0
Ct Ends
RayT Struc ; Definition d'un rayon 24 Octets
RP V3t <0,0,0>
RN V3t <0,0,0>
RayT EndS
SphereT Struc ; definition d'une sphere
M V3t <0,0,0> ; coordonnee centre
Sqrr DD 0 ; Rayon Single
SphereT EndS
; Definition d'une Surface
SurfT Struc
SOd Ct <0,0,0>
SOe DD 0 ; Single
SN DD 0 ; Single
SRefl Dw 0 ; Boolean ; reflection
STrans Dw 0 ; Boolean ; Transparence
SSpecC Ct <0,0,0>;
STransC Ct <0,0,0>;
SColProc DW 0 ; Offset Procedure de Couleur
STypProc DW 0 ; Offset Procedure de Typage
SurfT Ends
StartC Segment Para Public Use16 'CODE'
Assume CS:StartC,DS:StartC,SS:StartC
Org 100h
StartHere:
Jmp Demarre
Db ' Pov2Com V1.0 '
Db ' B.Y.O 1995 Pigment '
;Include Pigment.asm ; Liste des Pigments de pov pr‚traduite
; Pigment
Gray05 Dd 03D4CCCCDh,03D4CCCCDh,03D4CCCCDh;
Gray10 Dd 03DCCCCCDh,03DCCCCCDh,03DCCCCCDh;
Gray15 Dd 03E19999Ah,03E19999Ah,03E19999Ah;
Gray20 Dd 03E4CCCCDh,03E4CCCCDh,03E4CCCCDh;
Gray25 Dd 03E800000h,03E800000h,03E800000h;
Gray30 Dd 03E99999Ah,03E99999Ah,03E99999Ah;
Gray35 Dd 03EB33333h,03EB33333h,03EB33333h;
Gray40 Dd 03ECCCCCDh,03ECCCCCDh,03ECCCCCDh;
Gray45 Dd 03EE66666h,03EE66666h,03EE66666h;
Gray50 Dd 03F000000h,03F000000h,03F000000h;
Gray55 Dd 03F0CCCCDh,03F0CCCCDh,03F0CCCCDh;
Gray60 Dd 03F19999Ah,03F19999Ah,03F19999Ah;
Gray65 Dd 03F266666h,03F266666h,03F266666h;
Gray70 Dd 03F333333h,03F333333h,03F333333h;
Gray75 Dd 03F400000h,03F400000h,03F400000h;
Gray80 Dd 03F4CCCCDh,03F4CCCCDh,03F4CCCCDh;
Gray85 Dd 03F59999Ah,03F59999Ah,03F59999Ah;
Gray90 Dd 03F666666h,03F666666h,03F666666h;
Gray95 Dd 03F733333h,03F733333h,03F733333h;
DimGray Dd 03EA8A8B1h,03EA8A8B1h,03EA8A8B1h;
DimGrey Dd 03EA8A8B1h,03EA8A8B1h,03EA8A8B1h;
Gray Dd 03F40C0BEh,03F40C0BEh,03F40C0BEh;
Grey Dd 03F40C0BEh,03F40C0BEh,03F40C0BEh;
LightGray Dd 03F28A8B1h,03F28A8B1h,03F28A8B1h;
LightGrey Dd 03F28A8B1h,03F28A8B1h,03F28A8B1h;
VLightGrey Dd 03F4CCCCDh,03F4CCCCDh,03F4CCCCDh;
White Dd 03F800000h,03F800000h,03F800000h;
Red Dd 03F800000h,000000000h,000000000h;
Green Dd 000000000h,03F800000h,000000000h;
Blue Dd 000000000h,000000000h,03F800000h;
Yellow Dd 03F800000h,03F800000h,000000000h;
Cyan Dd 000000000h,03F800000h,03F800000h;
Magenta Dd 03F800000h,03F800000h,03F800000h;
Black Dd 000000000h,000000000h,000000000h;
Aquamarine Dd 03EE0E0EBh,03F5BDBE4h,03F13939Ah;
BlueViolet Dd 03F1F9F02h,03EBEBEBEh,03F1F9F99h;
Brown Dd 03F25A5A9h,03E28A8B1h,03E28A8B1h;
CadetBlue Dd 03EBEBEBEh,03F1F9F99h,03F1F9F99h;
Coral Dd 03F800000h,03EFEFEF8h,000000000h;
CornflowerBlue Dd 03E848494h,03E848494h,03EDEDEDBh;
DarkGreen Dd 03E3CBCCFh,03E9E9EA1h,03E3CBCCFh;
DarkOliveGreen Dd 03E9E9EA1h,03E9E9EA1h,03E3CBCCFh;
DarkOrchid Dd 03F19999Ah,03E48C8ACh,03F4CCCCDh;
DarkSlateBlue Dd 03ED6D6DCh,03E0C8C93h,03F0E8E93h;
DarkSlateGray Dd 03E3CBCCFh,03E9E9EA1h,03E9E9EA1h;
DarkSlateGrey Dd 03E3CBCCFh,03E9E9EA1h,03E9E9EA1h;
DarkTurquoise Dd 03EE0E0EBh,03F13939Ah,03F5BDBE4h;
Firebrick Dd 03F0E8E93h,03E0C8C93h,03E0C8C93h;
ForestGreen Dd 03E0C8C93h,03F0E8E93h,03E0C8C93h;
Gold Dd 03F4CCCCDh,03EFEFEF8h,03E48C8ACh;
Goldenrod Dd 03F5BDBE4h,03F5BDBE4h,03EE0E0EBh;
GreenYellow Dd 03F13939Ah,03F5BDBE4h,03EE0E0EBh;
IndianRed Dd 03E9E9EA1h,03E3CBCCFh,03E3CBCCFh;
Khaki Dd 03F1F9F99h,03F1F9F99h,03EBEBEBEh;
LightBlue Dd 03F3FBFC6h,03F58D8DCh,03F58D8DCh;
LightSteelBlue Dd 03F0F8F8Ah,03F0F8F8Ah,03F3CBCBEh;
LimeGreen Dd 03E48C8ACh,03F4CCCCDh,03E48C8ACh;
Maroon Dd 03F0E8E93h,03E0C8C93h,03ED6D6DCh;
MediumAquamarine Dd 03E48C8ACh,03F4CCCCDh,03F19999Ah;
MediumBlue Dd 03E48C8ACh,03E48C8ACh,03F4CCCCDh;
MediumForestGreen Dd 03ED6D6DCh,03F0E8E93h,03E0C8C93h;
MediumGoldenrod Dd 03F6AEAEAh,03F6AEAEAh,03F2DADA7h;
MediumOrchid Dd 03F13939Ah,03EE0E0EBh,03F5BDBE4h;
MediumSeaGreen Dd 03E848494h,03EDEDEDBh,03E848494h;
MediumSlateBlue Dd 03EFEFEF8h,03F800000h,000000000h;
MediumSpringGreen Dd 03EFEFEF8h,03F800000h,000000000h;
MediumTurquoise Dd 03EE0E0EBh,03F5BDBE4h,03F5BDBE4h;
MediumVioletRed Dd 03F5BDBE4h,03EE0E0EBh,03F13939Ah;
MidnightBlue Dd 03E3CBCCFh,03E3CBCCFh,03E9E9EA1h;
Navy Dd 03E0C8C93h,03E0C8C93h,03F0E8E93h;
NavyBlue Dd 03E0C8C93h,03E0C8C93h,03F0E8E93h;
Orange Dd 03F800000h,03F000000h,000000000h;
OrangeRed Dd 03F800000h,03EFEFEF8h,000000000h;
Orchid Dd 03F5BDBE4h,03EE0E0EBh,03F5BDBE4h;
PaleGreen Dd 03F0F8F8Ah,03F3CBCBEh,03F0F8F8Ah;
Pink Dd 03F3CBCBEh,03F0F8F8Ah,03F0F8F8Ah;
Plum Dd 03F6AEAEAh,03F2DADA7h,03F6AEAEAh;
Salmon Dd 03EDEDEDBh,03E848494h,03E848494h;
SeaGreen Dd 03E0C8C93h,03F0E8E93h,03ED6D6DCh;
Sienna Dd 03F0E8E93h,03ED6D6DCh,03E0C8C93h;
SkyBlue Dd 03E48C8ACh,03F19999Ah,03F4CCCCDh;
SlateBlue Dd 000000000h,03EFEFEF8h,03F800000h;
SpringGreen Dd 000000000h,03F800000h,03EFEFEF8h;
SteelBlue Dd 03E0C8C93h,03ED6D6DCh,03F0E8E93h;
Tan Dd 03F5BDBE4h,03F13939Ah,03EE0E0EBh;
Thistle Dd 03F58D8DCh,03F3FBFC6h,03F58D8DCh;
Turquoise Dd 03F2DADA7h,03F6AEAEAh,03F6AEAEAh;
Violet Dd 03E9E9EA1h,03E3CBCCFh,03E9E9EA1h;
VioletRed Dd 03F4CCCCDh,03E48C8ACh,03F19999Ah;
Wheat Dd 03F58D8DCh,03F58D8DCh,03F3FBFC6h;
YellowGreen Dd 03F19999Ah,03F4CCCCDh,03E48C8ACh;
SummerSky Dd 03E6147AEh,03F30A3D7h,03F5EB852h;
RichBlue Dd 03EB33333h,03EB33333h,03F2B851Fh;
Brass Dd 03F35C28Fh,03F266666h,03E851EB8h;
Copper Dd 03F3851ECh,03EE66666h,03E4CCCCDh;
Bronze Dd 03F0CCCCDh,03EF0A3D7h,03E0F5C29h;
Bronze2 Dd 03F266666h,03EFAE148h,03E75C28Fh;
Silver Dd 03F666666h,03F68F5C3h,03F7AE148h;
BrightGold Dd 03F59999Ah,03F59999Ah,03DCCCCCDh;
OldGold Dd 03F4F5C29h,03F35C28Fh,03E6B851Fh;
Feldspar Dd 03F51EB85h,03F11EB85h,03EEB851Fh;
Quartz Dd 03F59999Ah,03F59999Ah,03F733333h;
NeonPink Dd 03F800000h,03EDC28F6h,03F47AE14h;
DarkPurple Dd 03F07AE14h,03DF5C28Fh,03EF0A3D7h;
NeonBlue Dd 03E99999Ah,03E99999Ah,03F800000h;
CoolCopper Dd 03F59999Ah,03F07AE14h,03DCCCCCDh;
MandarinOrange Dd 03F63D70Ah,03EF0A3D7h,03E4CCCCDh;
LightWood Dd 03F68F5C3h,03F428F5Ch,03F266666h;
MediumWood Dd 03F266666h,03F000000h,03EC7AE14h;
DarkWood Dd 03F051EB8h,03EBD70A4h,03E851EB8h;
SpicyPink Dd 03F800000h,03DE147AEh,03F2E147Bh;
SemiSweetChoc Dd 03ED70A3Dh,03E851EB8h,03E19999Ah;
BakersChoc Dd 03EB851ECh,03E4CCCCDh,03DB851ECh;
Flesh Dd 03F75C28Fh,03F4CCCCDh,03F30A3D7h;
NewTan Dd 03F6B851Fh,03F47AE14h,03F1EB852h;
NewMidnightBlue Dd 000000000h,000000000h,03F1C28F6h;
VeryDarkBrown Dd 03EB33333h,03E23D70Ah,03E0F5C29h;
DarkBrown Dd 03EB851ECh,03E800000h,03E4CCCCDh;
DarkTan Dd 03F170A3Dh,03ED1EB85h,03E9EB852h;
GreenCopper Dd 03EA3D70Ah,03EFAE148h,03EEB851Fh;
DkGreenCopper Dd 03E947AE1h,03EEB851Fh,03EDC28F6h;
DustyRose Dd 03F051EB8h,03EC7AE14h,03EC7AE14h;
HuntersGreen Dd 03E051EB8h,03EBD70A4h,03E9EB852h;
Scarlet Dd 03F0CCCCDh,03DB851ECh,03DB851ECh;
; Nom Associe au pigment
_Gray05 Db 'Gray05',0
_Gray10 Db 'Gray10',0
_Gray15 Db 'Gray15',0
_Gray20 Db 'Gray20',0
_Gray25 Db 'Gray25',0
_Gray30 Db 'Gray30',0
_Gray35 Db 'Gray35',0
_Gray40 Db 'Gray40',0
_Gray45 Db 'Gray45',0
_Gray50 Db 'Gray50',0
_Gray55 Db 'Gray55',0
_Gray60 Db 'Gray60',0
_Gray65 Db 'Gray65',0
_Gray70 Db 'Gray70',0
_Gray75 Db 'Gray75',0
_Gray80 Db 'Gray80',0
_Gray85 Db 'Gray85',0
_Gray90 Db 'Gray90',0
_Gray95 Db 'Gray95',0
_DimGray Db 'DimGray',0
_DimGrey Db 'DimGrey',0
_Gray Db 'Gray',0
_Grey Db 'Grey',0
_LightGray Db 'LightGray',0
_LightGrey Db 'LightGrey',0
_VLightGrey Db 'VLightGrey',0
_White Db 'White',0
_Red Db 'Red',0
_Green Db 'Green',0
_Blue Db 'Blue',0
_Yellow Db 'Yellow',0
_Cyan Db 'Cyan',0
_Magenta Db 'Magenta',0
_Black Db 'Black',0
_Aquamarine Db 'Aquamarine',0
_BlueViolet Db 'BlueViolet',0
_Brown Db 'Brown',0
_CadetBlue Db 'CadetBlue',0
_Coral Db 'Coral',0
_CornflowerBlue Db 'CornflowerBlue',0
_DarkGreen Db 'DarkGreen',0
_DarkOliveGreen Db 'DarkOliveGreen',0
_DarkOrchid Db 'DarkOrchid',0
_DarkSlateBlue Db 'DarkSlateBlue',0
_DarkSlateGray Db 'DarkSlateGray',0
_DarkSlateGrey Db 'DarkSlateGrey',0
_DarkTurquoise Db 'DarkTurquoise',0
_Firebrick Db 'Firebrick',0
_ForestGreen Db 'ForestGreen',0
_Gold Db 'Gold',0
_Goldenrod Db 'Goldenrod',0
_GreenYellow Db 'GreenYellow',0
_IndianRed Db 'IndianRed',0
_Khaki Db 'Khaki',0
_LightBlue Db 'LightBlue',0
_LightSteelBlue Db 'LightSteelBlue',0
_LimeGreen Db 'LimeGreen',0
_Maroon Db 'Maroon',0
_MediumAquamarine Db 'MediumAquamarine',0
_MediumBlue Db 'MediumBlue',0
_MediumForestGreen Db 'MediumForestGreen',0
_MediumGoldenrod Db 'MediumGoldenrod',0
_MediumOrchid Db 'MediumOrchid',0
_MediumSeaGreen Db 'MediumSeaGreen',0
_MediumSlateBlue Db 'MediumSlateBlue',0
_MediumSpringGreen Db 'MediumSpringGreen',0
_MediumTurquoise Db 'MediumTurquoise',0
_MediumVioletRed Db 'MediumVioletRed',0
_MidnightBlue Db 'MidnightBlue',0
_Navy Db 'Navy',0
_NavyBlue Db 'NavyBlue',0
_Orange Db 'Orange',0
_OrangeRed Db 'OrangeRed',0
_Orchid Db 'Orchid',0
_PaleGreen Db 'PaleGreen',0
_Pink Db 'Pink',0
_Plum Db 'Plum',0
_Salmon Db 'Salmon',0
_SeaGreen Db 'SeaGreen',0
_Sienna Db 'Sienna',0
_SkyBlue Db 'SkyBlue',0
_SlateBlue Db 'SlateBlue',0
_SpringGreen Db 'SpringGreen',0
_SteelBlue Db 'SteelBlue',0
_Tan Db 'Tan',0
_Thistle Db 'Thistle',0
_Turquoise Db 'Turquoise',0
_Violet Db 'Violet',0
_VioletRed Db 'VioletRed',0
_Wheat Db 'Wheat',0
_YellowGreen Db 'YellowGreen',0
_SummerSky Db 'SummerSky',0
_RichBlue Db 'RichBlue',0
_Brass Db 'Brass',0
_Copper Db 'Copper',0
_Bronze Db 'Bronze',0
_Bronze2 Db 'Bronze2',0
_Silver Db 'Silver',0
_BrightGold Db 'BrightGold',0
_OldGold Db 'OldGold',0
_Feldspar Db 'Feldspar',0
_Quartz Db 'Quartz',0
_NeonPink Db 'NeonPink',0
_DarkPurple Db 'DarkPurple',0
_NeonBlue Db 'NeonBlue',0
_CoolCopper Db 'CoolCopper',0
_MandarinOrange Db 'MandarinOrange',0
_LightWood Db 'LightWood',0
_MediumWood Db 'MediumWood',0
_DarkWood Db 'DarkWood',0
_SpicyPink Db 'SpicyPink',0
_SemiSweetChoc Db 'SemiSweetChoc',0
_BakersChoc Db 'BakersChoc',0
_Flesh Db 'Flesh',0
_NewTan Db 'NewTan',0
_NewMidnightBlue Db 'NewMidnightBlue',0
_VeryDarkBrown Db 'VeryDarkBrown',0
_DarkBrown Db 'DarkBrown',0
_DarkTan Db 'DarkTan',0
_GreenCopper Db 'GreenCopper',0
_DkGreenCopper Db 'DkGreenCopper',0
_DustyRose Db 'DustyRose',0
_HuntersGreen Db 'HuntersGreen',0
_Scarlet Db 'Scarlet',0
; Table des Couleurs
PigmentTab:
Dw Offset Gray05 , Offset _Gray05
Dw Offset Gray10 , Offset _Gray10
Dw Offset Gray15 , Offset _Gray15
Dw Offset Gray20 , Offset _Gray20
Dw Offset Gray25 , Offset _Gray25
Dw Offset Gray30 , Offset _Gray30
Dw Offset Gray35 , Offset _Gray35
Dw Offset Gray40 , Offset _Gray40
Dw Offset Gray45 , Offset _Gray45
Dw Offset Gray50 , Offset _Gray50
Dw Offset Gray55 , Offset _Gray55
Dw Offset Gray60 , Offset _Gray60
Dw Offset Gray65 , Offset _Gray65
Dw Offset Gray70 , Offset _Gray70
Dw Offset Gray75 , Offset _Gray75
Dw Offset Gray80 , Offset _Gray80
Dw Offset Gray85 , Offset _Gray85
Dw Offset Gray90 , Offset _Gray90
Dw Offset Gray95 , Offset _Gray95
Dw Offset DimGray , Offset _DimGray
Dw Offset DimGrey , Offset _DimGrey
Dw Offset Gray , Offset _Gray
Dw Offset Grey , Offset _Grey
Dw Offset LightGray , Offset _LightGray
Dw Offset LightGrey , Offset _LightGrey
Dw Offset VLightGrey , Offset _VLightGrey
Dw Offset White , Offset _White
Dw Offset Red , Offset _Red
Dw Offset Green , Offset _Green
Dw Offset Blue , Offset _Blue
Dw Offset Yellow , Offset _Yellow
Dw Offset Cyan , Offset _Cyan
Dw Offset Magenta , Offset _Magenta
Dw Offset Black , Offset _Black
Dw Offset Aquamarine , Offset _Aquamarine
Dw Offset BlueViolet , Offset _BlueViolet
Dw Offset Brown , Offset _Brown
Dw Offset CadetBlue , Offset _CadetBlue
Dw Offset Coral , Offset _Coral
Dw Offset CornflowerBlue , Offset _CornflowerBlue
Dw Offset DarkGreen , Offset _DarkGreen
Dw Offset DarkOliveGreen , Offset _DarkOliveGreen
Dw Offset DarkOrchid , Offset _DarkOrchid
Dw Offset DarkSlateBlue , Offset _DarkSlateBlue
Dw Offset DarkSlateGray , Offset _DarkSlateGray
Dw Offset DarkSlateGrey , Offset _DarkSlateGrey
Dw Offset DarkTurquoise , Offset _DarkTurquoise
Dw Offset Firebrick , Offset _Firebrick
Dw Offset ForestGreen , Offset _ForestGreen
Dw Offset Gold , Offset _Gold
Dw Offset Goldenrod , Offset _Goldenrod
Dw Offset GreenYellow , Offset _GreenYellow
Dw Offset IndianRed , Offset _IndianRed
Dw Offset Khaki , Offset _Khaki
Dw Offset LightBlue , Offset _LightBlue
Dw Offset LightSteelBlue , Offset _LightSteelBlue
Dw Offset LimeGreen , Offset _LimeGreen
Dw Offset Maroon , Offset _Maroon
Dw Offset MediumAquamarine , Offset _MediumAquamarine
Dw Offset MediumBlue , Offset _MediumBlue
Dw Offset MediumForestGreen, Offset _MediumForestGreen
Dw Offset MediumGoldenrod , Offset _MediumGoldenrod
Dw Offset MediumOrchid , Offset _MediumOrchid
Dw Offset MediumSeaGreen , Offset _MediumSeaGreen
Dw Offset MediumSlateBlue , Offset _MediumSlateBlue
Dw Offset MediumSpringGreen, Offset _MediumSpringGreen
Dw Offset MediumTurquoise , Offset _MediumTurquoise
Dw Offset MediumVioletRed , Offset _MediumVioletRed
Dw Offset MidnightBlue , Offset _MidnightBlue
Dw Offset Navy , Offset _Navy
Dw Offset NavyBlue , Offset _NavyBlue
Dw Offset Orange , Offset _Orange
Dw Offset OrangeRed , Offset _OrangeRed
Dw Offset Orchid , Offset _Orchid
Dw Offset PaleGreen , Offset _PaleGreen
Dw Offset Pink , Offset _Pink
Dw Offset Plum , Offset _Plum
Dw Offset Salmon , Offset _Salmon
Dw Offset SeaGreen , Offset _SeaGreen
Dw Offset Sienna , Offset _Sienna
Dw Offset SkyBlue , Offset _SkyBlue
Dw Offset SlateBlue , Offset _SlateBlue
Dw Offset SpringGreen , Offset _SpringGreen
Dw Offset SteelBlue , Offset _SteelBlue
Dw Offset Tan , Offset _Tan
Dw Offset Thistle , Offset _Thistle
Dw Offset Turquoise , Offset _Turquoise
Dw Offset Violet , Offset _Violet
Dw Offset VioletRed , Offset _VioletRed
Dw Offset Wheat , Offset _Wheat
Dw Offset YellowGreen , Offset _YellowGreen
Dw Offset SummerSky , Offset _SummerSky
Dw Offset RichBlue , Offset _RichBlue
Dw Offset Brass , Offset _Brass
Dw Offset Copper , Offset _Copper
Dw Offset Bronze , Offset _Bronze
Dw Offset Bronze2 , Offset _Bronze2
Dw Offset Silver , Offset _Silver
Dw Offset BrightGold , Offset _BrightGold
Dw Offset OldGold , Offset _OldGold
Dw Offset Feldspar , Offset _Feldspar
Dw Offset Quartz , Offset _Quartz
Dw Offset NeonPink , Offset _NeonPink
Dw Offset DarkPurple , Offset _DarkPurple
Dw Offset NeonBlue , Offset _NeonBlue
Dw Offset CoolCopper , Offset _CoolCopper
Dw Offset MandarinOrange , Offset _MandarinOrange
Dw Offset LightWood , Offset _LightWood
Dw Offset MediumWood , Offset _MediumWood
Dw Offset DarkWood , Offset _DarkWood
Dw Offset SpicyPink , Offset _SpicyPink
Dw Offset SemiSweetChoc , Offset _SemiSweetChoc
Dw Offset BakersChoc , Offset _BakersChoc
Dw Offset Flesh , Offset _Flesh
Dw Offset NewTan , Offset _NewTan
Dw Offset NewMidnightBlue , Offset _NewMidnightBlue
Dw Offset VeryDarkBrown , Offset _VeryDarkBrown
Dw Offset DarkBrown , Offset _DarkBrown
Dw Offset DarkTan , Offset _DarkTan
Dw Offset GreenCopper , Offset _GreenCopper
Dw Offset DkGreenCopper , Offset _DkGreenCopper
Dw Offset DustyRose , Offset _DustyRose
Dw Offset HuntersGreen , Offset _HuntersGreen
Dw Offset Scarlet , Offset _Scarlet
Dw -1 , -1
Align 16
; les constantes de Mik.Pas
GradBase DD 90
Xmax DD 159 ;319
Ymax DD 119 ;239
Xmax2 DD 159 ;319
Ymax2 DD 119 ;239
PicSizeWc DD 10.0
PixRat DD 1.0
Half1 DD 0.5
Quater DD 0.25
aQuater DD -2
Is1 DD 1.0
IsZero DD 0.0
Mul255 DD 255
Infinity DD 060AD78ECh ; 10E20
Epsilon DD 02EDBE6FFh ; 10E-10
Pow10S DD -10.0
MaxRekDep Equ 5
AttenEps DD 0.01
Abank_R DW 0
DestSeg DW 0A000h
Xrotate DD 0.0 ; Rotation sur l'axe des z !!
DD 0.0
DD 1.0
Eye DD 0.0 ; V3t.X
DD -20.0 ; V3t.Y
DD 0.1 ; V3t.Z
LightV DD -20.0 ; V3t.X
DD -20.0 ; V3t.Y
DD 10.0 ; V3t.Z
LightC DD 1.0 ; Ct.R
DD 1.0 ; Ct.G
DD 1.0 ; Ct.B
AmbC DD 0.15 ; Ct.R
DD 0.15 ; Ct.G
DD 0.15 ; Ct.B
; Base a y = -1.0 pour rotation visuelle autour du point 0,0,0
; Les Trois Spheres representant le Mickey
K1 DD 0.0 ; SphereT.m.X
DD -1.0 ; SphereT.m.Y
DD 0.0 ; SphereT.m.Z
DD 4.0 ; SphereT.Sqrr
K2 DD -1.50 ; SphereT.m.X
DD -1.00 ; SphereT.m.Y
DD 1.50 ; SphereT.m.Z
DD 1.00 ; SphereT.Sqrr
K3 DD +1.50 ; SphereT.m.X
DD -1.00 ; SphereT.m.Y
DD 1.50 ; SphereT.m.Z
DD 1.00 ; SphereT.Sqrr
K4 DD 0.0 ; SphereT.m.X
DD -2.625; SphereT.m.Y
DD 0.0 ; SphereT.m.Z
DD 0.25 ; SphereT.Sqrr
ObnrMax Dw 4
ObnrIs Dw Offset K1 ; Equ 1 ; Quatre Sphere = un Mickey
Dw Offset K2 ; Equ 2 ;
Dw Offset K3 ; Equ 3 ;
Dw Offset K4 ; Equ 4 ;
K1Surf DD 1.0 ;Ct <1.0,1.0,1.0>
DD 0.5
DD 1.0
DD 100.0
DD 1.0
Dw Faux
Dw Faux
DD 0.5 ;Ct < 0.5,0.5,0.5 >
DD 0.5
DD 0.5
DD 1.0 ;Ct < 1.0,1.0,1.0 >
DD 1.0
DD 1.0
Dw Offset EqOdProc
Dw Offset EqNrmProc
K2Surf DD 0.5 ;Ct <0.5,0.6,0.7>
DD 0.6
DD 0.7
DD 100.0
DD 1.0
Dw Faux
Dw Faux
DD 0.5 ;Ct < 0.5,0.5,0.5 >
DD 0.5
DD 0.5
DD 1.0 ;Ct < 1.0,1.0,1.0 >
DD 1.0
DD 1.0
Dw Offset EqOdProc
Dw Offset EqNrmProc
K3Surf: ;Ct <0,0,0>
DD 0.2
DD 0.3
DD 0.4
DD 100.0
DD 1.0
Dw Faux
Dw Faux
DD 0.5 ;Ct < 0.5,0.5,0.5 >
DD 0.5
DD 0.5
DD 1.0 ;Ct < 1.0,1.0,1.0 >
DD 1.0
DD 1.0
Dw Offset EqOdProc
Dw Offset EqNrmProc
K4Surf: ;Ct <1.0,1.0,1.0>
DD 0.9
DD 0.8
DD 0.7
DD 100.0
DD 1.0
Dw Faux
Dw Faux
DD 0.5 ;Ct < 0.5,0.5,0.5 >
DD 0.5
DD 0.5
DD 1.0 ;Ct < 1.0,1.0,1.0 >
DD 1.0
DD 1.0
Dw Offset EqOdProc
Dw Offset EqNrmProc
SurfIs Dw Offset K1Surf
Dw Offset K2Surf
Dw Offset K3Surf
Dw Offset K4Surf
; Les Data en valorisations au demarrage
Ra RayT <>
Vh V3t <>
Vr V3t <>
Hv V3t <>
Nh V3t <>
Cct Ct <>
KeyStop Dw Faux
; Quelque Macros debilisante
CoordCopy Macro De,Vers
Mov Eax,Dword Ptr Cs:[De.X]
Mov Dword Ptr Cs:[Vers.X],Eax
Mov Eax,Dword Ptr Cs:[De.Y]
Mov Dword Ptr Cs:[Vers.Y],Eax
Mov Eax,Dword Ptr Cs:[De.Z]
Mov Dword Ptr Cs:[Vers.Z],Eax
EndM
ColorCopy Macro De,Vers
Mov Eax,Dword Ptr Cs:[De.R]
Mov Dword Ptr Cs:[Vers.R],Eax
Mov Eax,Dword Ptr Cs:[De.G]
Mov Dword Ptr Cs:[Vers.G],Eax
Mov Eax,Dword Ptr Cs:[De.B]
Mov Dword Ptr Cs:[Vers.B],Eax
EndM
; Additif pour avoir un rotation de vecteur !
; Variable Rattache a DefineMatrix
MatriceE Matrice <>
Grad DD 0
GradSin DD 0
GradCos DD 0
GradCosNeg DD 0
Theta DD 0
DefineMatrix Proc Near
Mov Dword Ptr Theta,Eax
; Calcul le Sinus & le Cosinus de Grad
Finit
Nop
FLD Dword Ptr Theta
FSinCos
Fwait
Nop
FSTP DWORD Ptr GradCos ; Depile St(0) Dans GradCos
FSTP DWORD Ptr GradSin ; Depile St(0) Dans GradSin
; Calcul 1-GradCos
FLD Dword Ptr GradCos
FLD1
FSub St(0),St(1)
FST Dword Ptr GradCosNeg ; Stoque St(0)
Fwait
Nop
FLD (Vector Ptr ES:[SI]).Vector_1 ; Charge Vecteur X
FSQRT ; Calcul Racine Carre de Vecteur X
FMUL St(0),ST(1) ; Multiplie sqrt(VecteurX) * 1-GradCos
FLD Dword Ptr GradCos ; Charge GradCos
FADD St(0),St(1) ; Addition St(0),St(1);
FSTP (Matrice Ptr DS:[DI]).Matrice1_1
Fwait
Nop
Fld Dword Ptr GradCosNeg
Fld (Vector Ptr ES:[SI]).Vector_2
FSQRT ; Calcul Racine Carre de Vecteur X
FMUL St(0),ST(1) ; Multiplie sqrt(VecteurX) * 1-GradCos
FLD Dword Ptr GradCos ; Charge GradCos
FADD St(0),St(1) ; Addition St(0),St(1);
FSTP (Matrice Ptr DS:[DI]).Matrice2_2
Fwait
Nop
Fld Dword Ptr GradCosNeg
Fld (Vector Ptr ES:[SI]).Vector_3
FSQRT ; Calcul Racine Carre de Vecteur X
FMUL St(0),ST(1) ; Multiplie sqrt(VecteurX) * 1-GradCos
FLD Dword Ptr GradCos ; Charge GradCos
FADD St(0),St(1) ; Addition St(0),St(1);
FSTP (Matrice Ptr DS:[DI]).Matrice3_3
Fwait
Nop
Finit
Nop
FLD Dword Ptr GradSin
FLD (Vector Ptr ES:[SI]).Vector_3
FMul St(0),St(1)
FSTP (Matrice Ptr DS:[DI]).Matrice1_2
FLD (Vector Ptr ES:[SI]).Vector_2
FMul St(0),St(1)
Fstp (Matrice Ptr DS:[DI]).Matrice1_3
FLD (Vector Ptr ES:[SI]).Vector_1
FMul St(0),St(1)
Fstp (Matrice Ptr DS:[DI]).Matrice2_3
Fwait
Nop
Finit
Nop
FLD Dword Ptr GradCosNeg
FLD (Vector Ptr ES:[SI]).Vector_1
Fmul St(0),St(1)
FLD (Vector Ptr ES:[SI]).Vector_2
Fmul st(0),St(1)
FLD (Matrice Ptr DS:[DI]).Matrice1_2
FLDZ
FADD St(0),St(2)
FSUB St(0),St(1)
FSTP (Matrice Ptr DS:[DI]).Matrice2_1
FXCH St(1)
FADD St(0),St(1)
FSTP (Matrice Ptr DS:[DI]).Matrice1_2
FLD (Vector Ptr ES:[SI]).Vector_3
Fmul St(0),St(2)
FldZ
Fadd St(0),St(1)
Fld (Matrice Ptr DS:[DI]).Matrice2_3
FXCH St(1)
Fsub St(0),St(1)
FSTP (Matrice Ptr DS:[DI]).Matrice3_1 ;
Fadd St(0),St(1)
FSTP (Matrice Ptr DS:[DI]).Matrice1_3
FLD (Matrice Ptr DS:[DI]).Matrice2_3
FLD (Vector Ptr ES:[SI]).Vector_2
Fmul St(0),St(5)
Fld (Vector Ptr ES:[SI]).Vector_3
Fmul St(0),St(1)
FldZ
Fadd St(0),St(1)
Fsub St(0),St(3)
FSTP (Matrice Ptr DS:[DI]).Matrice3_2 ;
Fadd St(0),St(2)
FSTP (Matrice Ptr DS:[DI]).Matrice2_3 ;
Finit
Fwait
Nop
RetN
DefineMatrix EndP
NouvRot Vector <?>
Rotation Proc Near
Finit
Nop
FLD (Matrice Ptr DS:[DI]).Matrice1_1
FLD (Vector Ptr ES:[SI]).Vector_1
Fmul St(0),St(1)
Fld (Matrice Ptr DS:[DI]).Matrice1_2
Fld (Vector Ptr ES:[SI]).Vector_2
Fmul St(0),St(1)
Fadd St(0),St(2);
Fld (Matrice Ptr DS:[DI]).Matrice1_3
Fld (Vector Ptr ES:[SI]).Vector_3
Fmul St(0),St(1)
Fadd St(0),St(2);
Fstp Dword Ptr NouvRot.Vector_1
Finit
Nop
FLD (Matrice Ptr DS:[DI]).Matrice2_1
FLD (Vector Ptr ES:[SI]).Vector_1
Fmul St(0),St(1)
Fld (Matrice Ptr DS:[DI]).Matrice2_2
Fld (Vector Ptr ES:[SI]).Vector_2
Fmul St(0),St(1)
Fadd St(0),St(2);
Fld (Matrice Ptr DS:[DI]).Matrice2_3
Fld (Vector Ptr ES:[SI]).Vector_3
Fmul St(0),St(1)
Fadd St(0),St(2);
Fstp Dword Ptr NouvRot.Vector_2
Finit
Nop
FLD (Matrice Ptr DS:[DI]).Matrice3_1
FLD (Vector Ptr ES:[SI]).Vector_1
Fmul St(0),St(1)
Fld (Matrice Ptr DS:[DI]).Matrice3_2
Fld (Vector Ptr ES:[SI]).Vector_2
Fmul St(0),St(1)
Fadd St(0),St(2);
Fld (Matrice Ptr DS:[DI]).Matrice3_3
Fld (Vector Ptr ES:[SI]).Vector_3
Fmul St(0),St(1)
Fadd St(0),St(2);
Fstp Dword Ptr NouvRot.Vector_3
Mov Eax,Dword Ptr NouvRot.Vector_1
Mov (Vector Ptr ES:[SI]).Vector_1,Eax
Mov Eax,Dword Ptr NouvRot.Vector_2
Mov (Vector Ptr ES:[SI]).Vector_2,Eax
Mov Eax,Dword Ptr NouvRot.Vector_3
Mov (Vector Ptr ES:[SI]).Vector_3,Eax
RetN
Rotation EndP
CopyColor Proc Near
Mov Cx,3
enHaut:
Mov Eax,Dword Ptr Cs:[Si]
Mov Dword Ptr Cs:[Di],Eax
Add Di,4
Add Si,4
Dec Cx
Jnz enHaut
RetN
CopyColor EndP
;þþ
EqOdProc proc Near
RetN
EqOdProc Endp
EqNrmProc proc Near
Retn
EqNrmProc Endp
;þþ Validation
Align 16
Norm Proc ; DS:DI pointe sur V V3t ; ES:BX Pointe sur Single en Sortie
FLD (V3t Ptr DS:[DI]).X ; û(xý+yý+zý)
FMul St,St(0) ;
FLD (V3t Ptr DS:[DI]).Y ;
FMul St,St(0) ;
FADD ;
FLD (V3t Ptr DS:[DI]).Z ;
FMul St,St(0) ;
FADD
FSQRT
FSTP Dword Ptr CS:[BX]
RetN
Norm EndP
;þþ Validation
Align 16
NormSphere Proc ; DS:DI pointe sur V V3t ; ES:BX Pointe sur Single en Sortie
FLD (V3t Ptr DS:[DI]).X ; (xý+yý+zý)
FMul St,St(0) ;
FLD (V3t Ptr DS:[DI]).Y ;
FMul St,St(0) ;
FAdd ;
FLD (V3t Ptr DS:[DI]).Z ;
FMul St,St(0) ;
FAdd ;
FSTP Dword Ptr CS:[BX] ;
RetN
NormSphere EndP
;þþ Validation
Align 16
NormCylY Proc ; DS:DI pointe sur V V3t ; ES:BX Pointe sur Single en Sortie
FLD (V3t Ptr DS:[DI]).X ; (xý+zý)
FMul St,St(0) ;
FLD (V3t Ptr DS:[DI]).Z ;
FMul St,St(0) ;
FADD
FSTP Dword Ptr CS:[BX]
RetN
NormCylY EndP
;þþ Validation
Align 16
Norm_ Proc ; DS:DI pointe sur V V3t ; St(0) = Resultat
FLD (V3t Ptr DS:[DI]).X ; û(xý+yý+zý)
FMul St,St(0) ;
FLD (V3t Ptr DS:[DI]).Y ;
FMul St,St(0)
FADD
FLD (V3t Ptr DS:[DI]).Z
FMul St,St(0)
FADD
FSQRT
RetN
Norm_ EndP
;þþ Validation
Align 16
NormSphere_ Proc ; DS:DI pointe sur V V3t ; St(0) = Resultat
FLD (V3t Ptr DS:[DI]).X ; û(xý+yý+zý)
FMul St,St(0) ;
FLD (V3t Ptr DS:[DI]).Y ;
FMul St,St(0)
FADD
FLD (V3t Ptr DS:[DI]).Z
FMul St,St(0)
FADD
FSQRT
RetN
NormSphere_ EndP
;þþ Validation
Align 16
Normalize Proc ; Assume DS:[DI] Pointe sur V3t
Enter 4,0
Call Norm_
FST Dword Ptr Cs:[Bp-4]
Call ErrEps
FLD (V3t Ptr CS:[DI]).X
FLD Dword Ptr Cs:[Bp-4]
FDIV
FSTP (V3t Ptr CS:[DI]).X
FLD (V3t Ptr CS:[DI]).Y
FLD Dword Ptr Cs:[Bp-4]
FDIV
FSTP (V3t Ptr CS:[DI]).Y
FLD (V3t Ptr CS:[DI]).Z
FLD Dword Ptr Cs:[Bp-4]
FDIV
FSTP (V3t Ptr CS:[DI]).Z
Leave
RetN
Normalize EndP
Even
Vsum Proc Near ; Assume ES:[SI] Valeur en Sortie
; DS:DI a:V3t Ds:Bx b:V3t
FLD (V3t Ptr CS:[DI]).X ; ( a+b )
FLD (V3t Ptr CS:[BX]).X ;
FAdd ;
Fstp (V3t Ptr CS:[SI]).X ;
FLD (V3t Ptr CS:[DI]).Y
FLD (V3t Ptr CS:[BX]).Y
FAdd
Fstp (V3t Ptr CS:[SI]).Y
FLD (V3t Ptr CS:[DI]).Z
FLD (V3t Ptr CS:[BX]).Z
FAdd
Fstp (V3t Ptr CS:[SI]).Z
RetN
Vsum EndP
; Retour de Procedure copro status normal
Vdif Proc Near ; Assume ES:[SI] Valeur en Sortie
; DS:DI a:V3t Ds:Bx b:V3t
FLD (V3t Ptr CS:[DI]).X ; ( a-b )
FLD (V3t Ptr CS:[BX]).X ;
FSub ;
Fstp (V3t Ptr CS:[SI]).X ;
FLD (V3t Ptr CS:[DI]).Y
FLD (V3t Ptr CS:[BX]).Y
FSub
Fstp (V3t Ptr CS:[SI]).Y
FLD (V3t Ptr CS:[DI]).Z
FLD (V3t Ptr CS:[BX]).Z
FSub
Fstp (V3t Ptr CS:[SI]).Z
RetN
Vdif EndP
Comment#
TraceVdif Proc Near
FLD Dword Ptr Cs:[Eye].X ; ( a-b )
FLD Dword Ptr Cs:[Trace_p].X ;
FSub ;
Fstp Dword Ptr Cs:[Trace_Ve].X ;
FLD Dword Ptr Cs:[Eye].Y
FLD Dword Ptr Cs:[Trace_P].Y
FSub
Fstp Dword Ptr Cs:[Trace_Ve].Y
FLD Dword Ptr Ds:[Eye].Z
FLD (V3t Ptr DS:[Trace_p]).Z
FSub
Fstp Dword Ptr Es:[Trace_ve].Z
RetN
TraceVdif EndP
Comment#
GetNrmVdif Proc Near
FLD (V3t Ptr DS:[DI]).X ;
FLD (V3t Ptr DS:)[Trace_p].X ; ( a-b )
FSub ;
Fstp (V3t Ptr ES:[Trace_n]).X ;
FLD (V3t Ptr DS:[DI]).Y
FLD (V3t Ptr DS:[Trace_p]).Y
FSub
Fstp (V3t Ptr ES:[Trace_n]).Y
FLD (V3t Ptr DS:[DI]).Z
FLD (V3t Ptr DS:[Trace_p]).Z
FSub
Fstp (V3t Ptr ES:[Trace_n]).Z
RetN
GetNrmVdif EndP
Kmul Proc Near; Es:[Si] V3t En Modification ; Cs:Bx Offset Single
; DS:[Di] V3t En Multiplication
FLD Dword Ptr Cs:[Bx]
FLD (V3t Ptr DS:[DI]).X
Fmul
FSTP Dword Ptr Es:[Si].X
FLD Dword Ptr Cs:[Bx]
FLD (V3t Ptr DS:[DI]).Y
Fmul
FSTP Dword Ptr Es:[Si].Y
FLD Dword Ptr Cs:[Bx]
FLD (V3t Ptr DS:[DI]).Z
Fmul
FSTP Dword Ptr Es:[Si].Z
RetN
Kmul EndP
Smul Proc Near; Assume Ds:[DI] Equ A [Bx] Equ B result Es:[Si]
FLD (V3t Ptr DS:[DI]).X
FLD (V3t Ptr DS:[BX]).X
Fmul
FLD (V3t Ptr DS:[DI]).Y
FLD (V3t Ptr DS:[BX]).Y
Fmul
Fadd
FLD (V3t Ptr DS:[DI]).Z
FLD (V3t Ptr DS:[BX]).Z
Fmul
Fadd
FSTP Dword Ptr ES:[SI]
RetN
Smul EndP
Smul_ Proc Near; Assume Ds:[DI] Equ A [Bx] Equ B result St(0)
FLD (V3t Ptr DS:[DI]).X
FLD (V3t Ptr DS:[BX]).X
Fmul
FLD (V3t Ptr DS:[DI]).Y
FLD (V3t Ptr DS:[BX]).Y
Fmul
Fadd
FLD (V3t Ptr DS:[DI]).Z
FLD (V3t Ptr DS:[BX]).Z
Fmul
Fadd
RetN
Smul_ EndP
Smulxz_ Proc Near; Assume Ds:[DI] Equ A [Bx] Equ B result St(0)
FLD (V3t Ptr DS:[DI]).X
FLD (V3t Ptr DS:[BX]).X
Fmul
FLD (V3t Ptr DS:[DI]).Z
FLD (V3t Ptr DS:[BX]).Z
Fmul
Fadd
RetN
Smulxz_ EndP
ErrEps Proc Near ; Assume St(0) = single s
Fabs
Fld Dword Ptr Epsilon
Fxch
Fcompp
Fwait
Fstsw Ax
Test Ah,1
Jne @@RunErrEps
Clc
RetN
@@RunErrEps:
Mov Sp,0FFFEh
Mov Ax,03h ; Fin de Programme Erreur Epsilon
Int 10h
Int 20h
ErrEps EndP
OldCw DW 0
NewCw DW 0
; utilise par Pow
ExpX Proc Near ; St(0) = X
Enter 4,0
fldl2e ; load log2(10)
fmulp st(1),st(0) ; log2(10) * argument
fld st(0) ; duplicate product
fstcw Word Ptr Cs:[Bp-4] ;oldcw; get old control word
fwait ; wait till it arrives
mov ax,Word Ptr Cs:[Bp-4];oldcw; change rounding mode
and ax,0f3ffh ; field to "round down"
or ax,0400h
mov Word Ptr Cs:[Bp-2],Ax ;newcw,ax
fldcw Word Ptr Cs:[Bp-2];newcw; force rounding mode
frndint ; get int part of product
fldcw Word Ptr Cs:[Bp-4];oldcw; restore old rounding mode
fld st(0) ; duplicate integer part
fxch st(2) ; get original product
fsubrp st(1),st(0) ; find fractional part
fld1
fchs
fxch st(1) ; scale fractional part
fscale
fstp st(1) ; discard coprocessor junk
f2xm1 ; raise 2 to power-1
fld1
faddp st(1),st(0) ; correct for the -1
fmul st(0),st(0) ; square result
fscale ; scale by int part
fstp st(1) ; discard coprocessor junk
Leave
RetN
ExpX EndP
Pow Proc Near ; x = St(0) y= St(1) retour st(0)
FldlN2
Fxch
Fyl2X
Fmul st(0),st(1)
FSTP St(1)
Fld Dword Ptr Pow10S
FCOMP
FWAIT
FSTSW AX
Test AH,1
Jne @@Suite
Fstp St(0)
FldZ
RetN
@@Suite:
Call ExpX ; St(0) = X
RetN
Pow EndP
SqrSolve3 Proc Near
Fld St(0)
Fmul St,St(0) ; sqr(p)
Fild Dword Ptr Cs:[aQuater]
Fxch
Fscale
Fstp St(1)
; Fmulp ;st(0) sqr(p)*0.25
; Fxch st(2)
Fsub St,St(2)
Fstp St(2) ; q elimin‚ !
Fchs ; Ici on change le signe de p
Fxch
Ftst
FSTSW AX
SAHF
JB @@LamInfinity
; St(0) = d
; st(1) = p
Fsqrt ; st(0) = ûd
Fld Dword Ptr Cs:[Half1]
Fmul st(1) st(2)
;
FTST ; On teste h et 0
FSTSW AX
SAHF
JB @@TryL1
FLD St(1)
FLD St(1)
Fsub
Fld Dword Ptr Cs:[Epsilon]
@@SolveEpsilonL2:
FUCOM
FSTSW AX
SAHF
JA @@TurnToL1 ; Epsilon le plus grand
Fstp St(0);
Fstp St(2);
Fstp St(0);
Jmp @@RealChoice
@@TurnToL1:
FSTP St(0)
FSTP St(0)
; Jmp @@TryL1
@@TryL1:
Fadd
Fld Dword Ptr Cs:[Epsilon]
; Jmp @@SolveEpsilonL1
; @@SolveEpsilonL1:
FUCOM
FSTSW AX
SAHF
JA @@LamInfinity ; Epsilon le plus grand
Fstp St(0);
Jmp @@RealChoice
@@LamInfinity:
Fstp St(0)
Fstp St(0)
FLD Dword Ptr Cs:[Infinity]
@@RealChoice:
Retn
SqrSolve3 EndP
Comment#
; Modifier pour ne pas avoir de passage de paramettre !
TraceRayToPoint Proc Near ;DI,r BX,l SI,p
FLD Dword Ptr Cs:[Trace_RA.RN.X]
Fmul Dword Ptr Cs:[Trace_Lmin]
Fadd Dword Ptr Cs:[Trace_RA.RP.X]
FSTP DWord Ptr Cs:[Trace_P.X]
FLD Dword Ptr Cs:[Trace_RA.RN.Y]
Fmul Dword Ptr Cs:[Trace_Lmin]
Fadd Dword Ptr Cs:[Trace_RA.RP.Y]
FSTP DWord Ptr Cs:[Trace_P.Y]
FLD Dword Ptr Cs:[Trace_RA.RN.Z]
Fmul Dword Ptr Cs:[Trace_Lmin]
Fadd Dword Ptr Cs:[Trace_RA.RP.Z]
FSTP DWord Ptr Cs:[Trace_P.Z]
RetN
TraceRayToPoint EndP
Comment#
ReflV_W DD 0
Reflv_V DD 0,0,0 ; Equ V3t
ReflV Proc Near
Xchg Bx,Di
; Mov Bx, ; ve ; Valorise a l'inverse
; Mov Di, ; n ;
Call Smul_
Fadd St,St(0)
Xchg Bx,Di
; St(0) = W
FSTP Dword Ptr Cs:[ReflV_W]
Mov Ax,Di ; Ax = Ve
Mov Cx,Si ; Cx = Vr
Mov Di,Bx ; Ici di = n
Mov Bx,Offset ReflV_W
; Mov Di,n
Mov Si,Offset ReflV_V
Call Kmul
; Mov Bx,Offset ReflV_V
; Mov Di,Ax ;ve
Mov Bx,Ax
Mov Di,Offset ReflV_V
Mov Si,Cx ;vr
Call Vdif
Retn
ReflV EndP
Comment#
TransV_P DD ?
TransV_Q DD ?
Proc TransV ; Ve = Di, n = Bx , Dx pos d1,d2 , Si : Vt
FLD (V3t Ptr DS:[DI]).X
FLD (V3t Ptr DS:[BX]).X
Fmul
FLD (V3t Ptr DS:[DI]).Y
FLD (V3t Ptr DS:[BX]).Y
Fmul
Fadd
FLD (V3t Ptr DS:[DI]).Z
FLD (V3t Ptr DS:[BX]).Z
Fmul
Fadd
Fabs
Fld
Fmul St,St(0)
Fld1
Fsub St(0),St(1)
Push Bx ; Car Modifie
Mov Bx,Dx
FLD Dword Ptr Ds:[Bx]
Add Bx,4
FLD Dword Ptr Ds:[Bx]
FDIV
Pop Bx
Fld
Fmul St,St(0)
Fmul st(0),st(2)
Fld1
Fsub St(0),St(1)
FTST
FSTSW AX
SAHF
JP @@Erreur1
JA @@D_P0 ;> P.Z > 0.0
JB @@Suite ;> P.Z < 0.0
@@Erreur1:
@@D_P0:
FSQRT
Fld St(1)
Fmul st(0),St(3)
Fsub st(0),st(1)
FSTP Dword Ptr Cs:TransV_Q
FSTP Dword Ptr Cs:TransV_P
Mov Dx,Si
Mov Si,Di
Mov Cx,Bx
Mov Bx,Offset TransV_P
Call Kmul
Mov Bx,Offset TransV_Q
Xchg Si,CX
Mov Di,Si
Call Kmul
Mov Di,Cx
Mov BX,Si
Mov Si,Dx
Call Vsum
; Plus Rien en Pile Normalement
Clc
RetN
@@Suite:
Fstp St(0)
Fstp St(0)
Fstp St(0)
STC
RetN
TransV EndP
Comment#
Align 16
LnX Proc Near ; St(0) = X
FldlN2
Fxch
Fyl2X ; St(0) = Ln(X)
RetN
LnX EndP
Align 16
SphereInter Proc Near
; Pile Interne a SphereInter
@@Si_SavDx Equ [Bp-2]
@@Si_P Equ [Bp-6]
@@Si_Q Equ [Bp-10]
@@Si_L Equ [Bp-14]
@@Si_PMmNrm Equ [Bp-18]
@@Si_pMm Equ [Bp-30]
; Pile Externe a SphereInter
@@Si_Obrn Equ [Bp+8];Bx = Trace.Obnr ; Pas le Mettre Ici En Fait !
@@Si_Lmin Equ [Bp+4];Si = Trace.Lmin ;
@@Si_R Equ [Bp+6];Di = Trace.r ;
Enter 36,0
Mov Word Ptr Cs:@@Si_SavDx,Dx
Dec Dx
Shl Dx,1
Add Dx,Offset ObnrIs
; vdif(r.p,Sphe.m,pMm);
Mov Si,Bp
Sub Si,30 ; Si Devient Si_pMm
Mov Bx,Dx
Mov Bx,Word Ptr Cs:[Bx] ; Bx Devient Sphere K1 ou autre
Mov Di,Word Ptr Cs:@@Si_R.RP
Call Vdif
; pMmNrm := Norm (pMm);
Mov Bx,Bp
Sub Bx,18 ; Bx devient pMmNrm
Mov Di,Bp
Sub Di,30 ; Di Devient pMm
Call NormSphere
; p := 2* smul(pMm,r.n);
Mov Di,Bp
Sub Di,30 ; pMp
Mov Bx,Word Ptr Cs:@@Si_R
Add Bx,Rn
Call Smul_
Fld St(0)
Fadd
Fstp Dword Ptr Cs:@@Si_P
; q := sqr(pMmNrm)-Sphe.sqrr;
Fld Dword Ptr Cs:@@Si_pMmNrm
;Fmul st,st(0)
Mov Bx,Dx
Mov Bx,Word Ptr Cs:[Bx]
Fld Dword Ptr Cs:[Bx.Sqrr]
Fsub
;Fstp Dword Ptr Cs:@@Si_Q
; sqrSolve ( p,q,l);
;Fld Dword Ptr Cs:@@Si_Q
Fld Dword Ptr Cs:@@Si_P
Call SqrSolve3
Fst Dword Ptr Cs:@@Si_L
Mov Di,Word Ptr Cs:@@Si_Lmin
Fld Dword Ptr Cs:[Di]
FUCOMPP
FSTSW AX
SAHF
; if l < lmin then
JBE @@NoChange
; lmin := l;
Mov Dx,Word Ptr Cs:@@Si_SavDx
Mov Bx,Word Ptr Cs:@@Si_Obrn
Mov Ax,Word Ptr Cs:[Bx]
;Test Ax,0
;Je @@Normal
;Fld1
;Fchs
;Fld Dword Ptr Cs:@@Si_L
;Fld Dword Ptr Cs:[Di]
;Faddp
;Fscale
;Fstp Dword Ptr Cs:[Di]
;Fstp St(0)
;Mov Word Ptr Cs:[Bx],Dx
;Jmp @@NoChange
;;Leave
;RetN
@@Normal:
Mov Eax,Dword Ptr Cs:@@Si_L
Mov Dword Ptr Cs:[Di],Eax
; Obnr := test;
Mov Dx,Word Ptr Cs:@@Si_SavDx
Mov Bx,Word Ptr Cs:@@Si_Obrn
Mov Word Ptr Cs:[Bx],Dx
@@NoChange:
Leave
RetN
SphereInter EndP
Align 16
InterSect Proc Near ; Bx = Trace.Obnr
; Di = Trace.r
; Si = Trace.Lmin
Enter 6,0
Mov Word Ptr Cs:[Bp-2],Bx
Mov Word Ptr Cs:[Bp-4],Di
Mov Word Ptr Cs:[Bp-6],Si
; Normalize(r.n); ;
Add Di,12 ;
Call Normalize ; ;
Mov Si,Word Ptr Cs:[Bp-6]
Mov Di,Word Ptr Cs:[Bp-4]
Fld Dword Ptr Cs:[Infinity]
Fstp Dword Ptr Cs:[Si]
Mov Word Ptr Cs:[Bx],0
Comment#
; If r.n.y > 0 then
FLD Dword Ptr Cs:[Di.Rn.Y]
FTST
FSTSW AX
FSTP St(0)
SAHF
JA @@C1True
Jmp @@C1False
; Begin
@@C1True:
; if r.p.y > 0 then
Fld Dword Ptr Cs:[Di.Rp.Y]
FTST
FSTSW AX
FSTP St(0)
SAHF
JA @@C11True
Jmp @@C11False
@@C11True:
; Obnr := 5
Mov Word Ptr Cs:[Bx],5
; Jmp @@AfterC
Jmp @@IsObnr5
@@C11False:
; Obnr:=0;
Mov Word Ptr Cs:[Bx],0
; Jmp @@AfterC
Jmp @@Continue5
; End
; Else
; Begin
@@C1False:
; If r.p.y < 0 then
FLD Dword Ptr Cs:[Di.Rp.Y]
FTST
FSTSW AX
FSTP St(0)
SAHF
JB @@C12True
Jmp @@C12False
@@C12True:
; Obnr := 0
Mov Word Ptr Cs:[Bx],0
; Jmp @@AfterC
Jmp @@Continue5
@@C12False:
; Obnr := 5;
Mov Word Ptr Cs:[Bx],5
; Jmp @@AfterC
Jmp @@IsObnr5
@@AfterC:
Cmp Word Ptr Cs:[Bx],5
Jne @@Continue5
; if Obnr = 5 Then
; begin
@@IsObnr5:
; lmin:=-r.p.y/r.n.y;
FLD Dword Ptr Cs:[DI.Rp.Y]
FCHS
FLD Dword Ptr Cs:[Di.Rn.Y]
FDIVP
FST Dword Ptr Cs:[Si] ; Sauvegarde de Lmin
FTST
FSTSW AX
FSTP St(0)
SAHF
; if lmin<0 then
JB @@Continue5
Jmp @@OkLmin
@@Continue5:
; lmin:=Infinity;
Mov Eax,Dword Ptr Cs:[Infinity]
Mov Dword Ptr Cs:[Si],Eax
@@OkLmin:
Comment#
; Bp Contient les Parametres deja passe a Intersect
Push Bx
Push Di
Push Si
Mov Dx,4 ; Numero de Sphere a tester !
Call SphereInter
Mov Dx,2
Call SphereInter
Mov Dx,3
Call SphereInter
Mov Dx,1
Call SphereInter
Pop Si
Pop Di
Pop Bx
; Mov Bx,Ax
Leave
RetN ; Elimine 6 Octets de La Pile
InterSect EndP
; ToRefl:=GetNrm(ObNr,p,ve,n);
Align 16
GetMnrTable Dw Offset CaseK0 ; Fond
Dw Offset CaseK1 ; Boule
Dw Offset CaseK2 ;
Dw Offset CaseK3 ;
Dw Offset CaseK4 ;
Dw Offset CaseK5 ; Sol
Align 16
GetNrm Proc Near
Mov Bx,Word Ptr Cs:[Trace_Obnr]
Shl Bx,1
Add Bx,Offset GetMnrTable
Mov Bx,Word Ptr Cs:[Bx]
Call Bx
Jmp AfterCaseK0
CaseK1:
Mov Di,Offset K1
Call GetNrmVdif
Mov Di,Bp
Sub Di,42
Call Normalize
RetN
CaseK2:
Mov Di,Offset K2
Call GetNrmVdif
Mov Di,Bp
Sub Di,42
Call Normalize
RetN
CaseK3:
Mov Di,Offset K3
Call GetNrmVdif
Mov Di,Bp
Sub Di,42
Call Normalize
RetN
CaseK4:
Mov Di,Offset K4
Call GetNrmVdif
Mov Di,Bp
Sub Di,42
Call Normalize
RetN
CaseK5:
FLDZ
FST Dword Ptr Cs:[Trace_N.X]
FSTP Dword Ptr Cs:[Trace_N.Z]
FLD1
FSTP Dword Ptr Cs:[Trace_N.Y]
RetN
CaseK0:
RetN
AfterCaseK0:
; Effectue Smul Ve,n resultat St(0)
FLD Dword Ptr Cs:[Trace_Ve].X
FLD Dword Ptr Cs:[Trace_n].X
Fmul
FLD Dword Ptr Cs:[Trace_Ve].Y
FLD Dword Ptr Cs:[Trace_n].Y
Fmul
Fadd
FLD Dword Ptr Cs:[Trace_ve].Z
FLD Dword Ptr Cs:[Trace_n].Z
Fmul
Fadd
Ftst
FSTSW AX
Fstp St(0)
SAHF
JP @@GetNrmC1 ;Erreur1
; If Smul(ve,n) < 0 Then
JAE @@GetNrmC1 ;>= 0.0
@@Erreur1:
; kmul(-1,n,n); { remplace par un Changement de signe ca }
Fld Dword Ptr Cs:[Trace_n].x
Fchs
Fstp Dword Ptr Cs:[Trace_n].x
Fld Dword Ptr Cs:[Trace_n].y
Fchs
Fstp Dword Ptr Cs:[Trace_n].y
Fld Dword Ptr Cs:[Trace_n].z
Fchs
Fstp Dword Ptr Cs:[Trace_n].z
Jmp @@GetNrmC2
@@GetNrmC1:
; Fstp St(0)
@@GetNrmC2:
; nn:=n; Copy simple ; Elimine pas de reflextion
; appel de NrmProc paramettre p et n
Mov Di,Bp ; Normalize(n)
Sub Di,42 ;
Call Normalize ;
; ‚limine car pas de gestion reflexion !
;Ax = Vrais si
; (sMul(ve,n)>0) and (smul(nn,n)>0);
;Ax = Faux sinon
;
Retn
GetNrm EndP
Ins_Obnr Dw 0
Even
Ins_R DD 0,0,0,0,0,0
Ins_Lmin DD 0.001
Ins_Dummy DD 0
Even
Comment#
Function InShadow(p:v3T):boolean;
var r:rayT; ShdNr:integer; dummy:single;
begin
r.p:=p; r.n:=LightV; RayToPoint(r,0.001,r.p);
intersect(r,Shdnr,dummy); InShadow:=Shdnr>1;
end;
Comment#
InShadow Proc Near
; Mov Si,Offset Ins_R.RP
; Mov Cx,3
; @@InS_Mov1:
; Mov Eax,Dword Ptr Cs:[Di]
; Mov Dword Ptr Cs:[Si],Eax
; Add Di,4
; Add Si,4
; Dec Cx
; Jnz @@InS_Mov1 ; Delocalise dans le specifique RayToPoint
Mov Bx,Offset LightV
Mov Si,Offset Ins_R.RN
Mov Cx,3
@@InS_Mov2:
Mov Eax,Dword Ptr Cs:[Bx]
Mov Dword Ptr Cs:[Si],Eax
Add Bx,4
Add Si,4
Dec Cx
Jnz @@InS_Mov2
; Equ RayToPoint Specifique
FLD Dword Ptr Cs:[Ins_R.RN.X]
Fmul Dword Ptr Cs:[Ins_LMin]
; Fadd Dword Ptr Cs:[Ins_R.RP.X]
Fadd Dword Ptr Cs:[DI.X]
FSTP DWord Ptr Cs:[Ins_R.RP.X]
FLD Dword Ptr Cs:[Ins_R.RN.Y]
Fmul Dword Ptr Cs:[Ins_Lmin]
; Fadd Dword Ptr Cs:[Ins_R.RP.Y]
Fadd Dword Ptr Cs:[DI.Y]
FSTP DWord Ptr Cs:[Ins_R.RP.Y]
FLD Dword Ptr Cs:[Ins_R.RN.Z]
Fmul Dword Ptr Cs:[Ins_Lmin]
; Fadd Dword Ptr Cs:[Ins_R.RP.Z]
Fadd Dword Ptr Cs:[DI.Z]
FSTP DWord Ptr Cs:[Ins_R.RP.Z]
; Faire Intersect(r,Shdnr,Dummy);
Mov Word Ptr Cs:[Ins_Obnr],0
Mov Di,Offset Ins_R
Mov Bx,Offset Ins_Obnr
Mov Si,Offset Ins_Dummy
Call InterSect
Mov Bx,Offset Ins_Obnr
RetN
InShadow EndP
; Attention Ici Pour Beneficier de L'appel Direct au paramettre contenue
; dans Trace il Faut Recalcul l'ajout sur BP
; Apres Introduction dans la routine
Light_Cd Equ [Bp-2] ; Position
Light_Cs Equ [Bp-14] ; Position
Light_W2 Equ [Bp-18] ; Position
Light_Spec Equ [Bp-22] ; Position
Light_W1 Equ [Bp-26] ; Position
Align 16
Light Proc Near
Enter 26,0 ; Ajout pour variable de Trace !
Mov Bx,Word Ptr Cs:[Trace_Obnr][134]; A voir !
Dec Bx
Shl Bx,1
Add Bx,Offset SurfIs
Mov Bx,Word Ptr Cs:[Bx]
Mov Word Ptr Cs:[Light_Cd],Bx ; Position sur Surface!
; w1:=smul(Lightv,n);
Mov Di,Offset LightV
Mov Bx,Bp
Add Bx,92;(-42)+134
Call Smul_
; St(0) Equ W1
; If (w1>0)
FTST
FSTSW AX
FSTP Dword Ptr CS:[Light_W1]
SAHF
JP @@Erreur1
JB @@LightEndCase
@@Erreur1:
; Call InShadow p sur pile !! ; Elimine sans Consequence !
; And (not InShadow(p)) Then
; ; test (Not InShadow(p)) Vrais
; Begin
Mov Di,Bp
Add Di,-30+134
Call InShadow
Cmp Bx,1
Jl @@LightEndCase
Mov Di,Word Ptr Cs:[Light_Cd]
;c.r:=(LightC.r*w1+AmbC.r)*cd.r;
FLD Dword Ptr Cs:[LightC.R]
Fmul Dword Ptr Cs:[Light_W1]
Fadd Dword Ptr Cs:[AmbC.R]
Fmul Dword Ptr Cs:[Di.R]
Fstp Dword Ptr Cs:[Cct.R]
;c.g:=(LightC.g*w1+AmbC.g)*cd.g;
FLD Dword Ptr Cs:[LightC.G]
Fmul Dword Ptr Cs:[Light_W1]
Fadd Dword Ptr Cs:[AmbC.G]
Fmul Dword Ptr Cs:[Di.G]
Fstp Dword Ptr Cs:[Cct.G]
;c.b:=(LightC.b*w1+AmbC.b)*cd.b;
FLD Dword Ptr Cs:[LightC.B]
Fmul Dword Ptr Cs:[Light_W1]
Fadd Dword Ptr Cs:[AmbC.B]
Fmul Dword Ptr Cs:[Di.B]
Fstp Dword Ptr Cs:[Cct.B]
; w2:=smul(Vr,Lightv);
Mov Bx,Bp
Add Bx,68;(-66)+134 ; Vr
Mov Di,Offset Lightv
Call Smul_
FTST
FSTSW AX
FSTP Dword Ptr CS:[Light_W2]
SAHF
; JP @@LightEnd;Erreur2
; If w2>0 Then
JB @@LightEnd
@@Erreur2:
; Pow Comment Ca Marche Huhu
; spec:=pow(w2,ObArr[ObNr].Oe);
Mov Di,Word Ptr Cs:[Light_Cd]
Fld Dword Ptr Cs:[Di].SurfT.SOe
Fld Dword Ptr Cs:[Light_W2]
Call Pow
Fst Dword Ptr Cs:[Light_Spec]
Ftst
FSTSW AX
FSTP St(0)
SAHF
JZ @@NoSpec ; si Spec = 0 pas besoin de calcul
; cs:=ObArr[ObNr].specC;
Mov Di,Word Ptr Cs:[Light_Cd]
; c.r:=c.r+spec*cs.r;
Fld Dword Ptr Cs:[Di].SurfT.SSpecC.R
Fmul Dword Ptr Cs:[Light_Spec]
Fadd Dword Ptr Cs:[Cct.R]
Fstp Dword Ptr Cs:[Cct.R]
; c.g:=c.g+spec*cs.g;
Fld Dword Ptr Cs:[Di].SurfT.SSpecC.G
Fmul Dword Ptr Cs:[Light_Spec]
Fadd Dword Ptr Cs:[Cct.G]
Fstp Dword Ptr Cs:[Cct.G]
; c.b:=c.b+spec*cs.b;
Fld Dword Ptr Cs:[Di].SurfT.SSpecC.B
Fmul Dword Ptr Cs:[Light_Spec]
Fadd Dword Ptr Cs:[Cct.B]
Fstp Dword Ptr Cs:[Cct.B]
@@NoSpec:
Jmp @@LightEnd
@@LightEndCase:
Mov Di,Word Ptr Cs:[Light_Cd]
; c.r:=AmbC.r*cd.r;
FLD Dword Ptr Cs:[AmbC.r]
Fmul Dword Ptr Cs:[DI.r]
Fstp Dword Ptr Cs:[Cct.R]
; c.g:=AmbC.g*cd.g;
FLD Dword Ptr Cs:[AmbC.g]
Fmul Dword Ptr Cs:[DI.g]
Fstp Dword Ptr Cs:[Cct.G]
; c.b:=AmbC.b*cd.b;
FLD Dword Ptr Cs:[AmbC.b]
Fmul Dword Ptr Cs:[DI.b]
Fstp Dword Ptr Cs:[Cct.b]
@@LightEnd:
Leave
RetN
Light EndP
Align 16
Trace Proc Near
; Les Variables Transmise a Trace
Trace_RekDep Equ [Bp+16] ; Word ; Correspond!
Trace_R Equ [Bp+14] ; Word addresse de ra
Trace_c Equ [Bp+12] ; Word
Trace_N1 Equ [Bp+08] ; Dword
Trace_Atten Equ [Bp+04] ; Dword
; Les Variables Interne a
Trace_Obnr Equ [BP-2]
Trace_Lmin Equ [BP-6]
Trace_N2 Equ [BP-10]
Trace_As Equ [BP-14]
Trace_At Equ [BP-18]
Trace_P Equ [BP-30]
Trace_N Equ [BP-42]
Trace_VE Equ [BP-54]
Trace_VR Equ [BP-66]
Trace_VT Equ [BP-78]
Trace_CI Equ [BP-90]
Trace_CS Equ [BP-102]
Trace_ToRefl Equ [BP-104]
Trace_ToTrans Equ [BP-106]
Trace_Ra Equ [Bp-130] ; Zone de stockage Ra
Enter 130,0 ; Une Zone de Data de 130 Octets
Mov Si,Word Ptr Cs:[Trace_R]; Chargement d'un Rayon passe en paramettre
Mov Di,Bp ; sur la pile interne a Proc_Trace
Sub Di,130 ;
Mov Cx,6 ; 6 Dword en Copie !
@@Duplique:
Mov Eax,Dword Ptr Cs:[Si]
Mov Dword Ptr Cs:[Di],Eax
Add Si,4
Add Di,4
Dec Cx
Jnz @@Duplique
Mov Ax,Word Ptr Cs:[Trace_RekDep]
Cmp Ax,Word Ptr Cs:[MaxRekDep]
Jg @@TestAtten
@@SetC:
Mov Bx,Word Ptr Cs:[Trace_c]
Mov Eax,Dword Ptr Cs:[IsZero]
Mov Dword Ptr Cs:[Bx.R],Eax
Mov Dword Ptr Cs:[Bx.G],Eax
Mov Dword Ptr Cs:[Bx.B],Eax
Jmp @@OutOfTrace
@@TestAtten:
FLD Dword Ptr Cs:Trace_Atten
FLD Dword Ptr Cs:AttenEps
FUCOMPP
FSTSW AX
SAHF
JA @@SetC
; Subterfuge
; On Peu Elimine la passation de parametre vers Intersect
; A Condition de Permettre a Intersect de Taper dans la structure
; de pile de Trace !!!
;intersect(r,obNr,lMin);
Mov Di,Bp
Sub Di,130 ;Mov Di, Trace_Ra
Mov Bx,Bp
Sub Bx,2 ;Mov Bx, Trace_Obnr
Mov Si,Bp
Sub Si,6 ;Mov Si, Trace_Lmin
Call Intersect
Mov Bx,Cs:[Trace_Obnr] ; Recupere Bx Valorise par Intersect
Cmp Bx,0
Je @@K0
; Fld Dword Ptr Cs:[Trace_Lmin]
; Fstp St(0);
; RayToPoint(r,lMin,p);
; Call TraceRayToPoint ; Specifique
; remplace en Dur ; Les Parametres Sont Acquis !!
FLD Dword Ptr Cs:[Trace_RA.RN.X]
Fmul Dword Ptr Cs:[Trace_Lmin]
Fadd Dword Ptr Cs:[Trace_RA.RP.X]
FSTP DWord Ptr Cs:[Trace_P.X]
FLD Dword Ptr Cs:[Trace_RA.RN.Y]
Fmul Dword Ptr Cs:[Trace_Lmin]
Fadd Dword Ptr Cs:[Trace_RA.RP.Y]
FSTP DWord Ptr Cs:[Trace_P.Y]
FLD Dword Ptr Cs:[Trace_RA.RN.Z]
Fmul Dword Ptr Cs:[Trace_Lmin]
Fadd Dword Ptr Cs:[Trace_RA.RP.Z]
FSTP DWord Ptr Cs:[Trace_P.Z]
; vDif(eye,p,ve);
; Call TraceVdif ; Specifique
; Remplace en Dur ; Les Parametres Sont Acquis !!
FLD Dword Ptr Cs:[Eye].X ; ( a-b )
FLD Dword Ptr Cs:[Trace_p].X ;
FSub ;
Fstp Dword Ptr Cs:[Trace_Ve].X ;
FLD Dword Ptr Cs:[Eye].Y
FLD Dword Ptr Cs:[Trace_P].Y
FSub
Fstp Dword Ptr Cs:[Trace_Ve].Y
FLD Dword Ptr Ds:[Eye].Z
FLD (V3t Ptr DS:[Trace_p]).Z
FSub
Fstp Dword Ptr Es:[Trace_ve].Z
; normalize(ve);
Mov Di,Bp
Sub Di,54
Call Normalize
Mov Di,Bp
Sub Di,30
; ToRefl:=GetNrm(ObNr,p,ve,n);
Call GetNrm
; ReflV(ve,n,vr);
Mov Di,Bp ; ve;n
Sub Di,54
Mov Bx,Bp ; n;Ve
Sub Bx,42
Mov Si,Bp ; Vr
Sub Si,66
Call ReflV
; Light(Obnr,p,n,ve,vr,c);
Call Light
Jmp @@OutOfTrace
@@K0:
Mov Si,Offset Black;MediumVioletRed
Mov Di,Offset Cct
Call CopyColor
Jmp @@OutOfTrace
@@LastChoice:
@@OutOfTrace:
Leave
RetN 14
Trace EndP
; ce Pset Correspond a 16m couleur pour ma Tseng !
Even
PsetX DD ?
PsetY DD ?
Bu DD 0
Gr DD 0
Rd DD 0
Even
Pset Proc Near
Push Es
Push Word Ptr Cs:[DestSeg]
Pop Es
Mov Dword Ptr Cs:[PsetX],Ecx
Mov Dword Ptr Cs:[PsetY],Ebx
Mov Eax,Ecx
Shl Ecx,1
Add Ecx,Eax
Mov Eax,Ebx
Mov Ebx,640*3
Mul Bx
Add Ax,Cx
Adc Dx,0
Mov Di,Ax
Mov Ax,Dx
Cmp Dx,Word Ptr Cs:[ABank_R]
Je @@NextB
Mov Word Ptr Cs:[Abank_R],Dx
Mov Ah,Al
Shl Ah,4
Or Al,Ah
Mov Dx,3CDh
Out Dx,Al
@@NextB:
Mov Al,Byte Ptr Cs:[Bu]
StoSb
Mov Ecx,Dword Ptr Cs:[PsetX]
Mov Eax,Ecx
Shl Ecx,1
Add Ecx,Eax
Inc Ecx
Mov Eax,Dword Ptr Cs:[PsetY]
Mov Ebx,640*3
Mul Bx
Add Ax,Cx
Adc Dx,0
Mov Di,Ax
Mov Ax,Dx
Cmp Dx,Word Ptr Cs:[ABank_R]
Je @@NextG
Mov Word Ptr Cs:[Abank_R],Dx
Mov Ah,Al
Shl Ah,4
Or Al,Ah
Mov Dx,3CDh
Out Dx,Al
@@NextG:
Mov Al,Byte Ptr Cs:[Gr]
StoSb
Mov Ecx,Dword Ptr Cs:[PsetX]
Mov Eax,Ecx
Shl Ecx,1
Add Ecx,Eax
Add Ecx,2
Mov Eax,Dword Ptr Cs:[PsetY]
Mov Ebx,640*3
Mul Bx
Add Ax,Cx
Adc Dx,0
Mov Di,Ax
Mov Ax,Dx
Cmp Dx,Word Ptr Cs:[ABank_R]
Je @@NextR
Mov Word Ptr Cs:[Abank_R],Dx
Mov Ah,Al
Shl Ah,4
Or Al,Ah
Mov Dx,3CDh
Out Dx,Al
@@NextR:
Mov Al,Byte Ptr Cs:[Rd]
StoSb
Pop Es
RetN
Pset EndP
Even
Pset64K Proc Near
Push Es
Push Word Ptr Cs:[DestSeg]
Pop Es
Mov Dword Ptr Cs:[PsetX],Ecx
Mov Dword Ptr Cs:[PsetY],Ebx
Mov Eax,Ecx
Add Ecx,Eax
Mov Eax,Ebx
Mov Ebx,640*2
Mul Bx
Add Ax,Cx
Adc Dx,0
Mov Di,Ax
Mov Ax,Dx
Cmp Dx,Word Ptr Cs:[ABank_R]
Je @@NextB
Mov Word Ptr Cs:[Abank_R],Dx
; Xor Dx,Dx
; Mov Ah,Al
; Shl Ah,4
; Or Al,Ah
; Mov Dl,Al
Mov Ax,4F05h
Xor Bx,Bx
Int 10h
; Mov Dx,3CDh
; Out Dx,Al
@@NextB:
Xor Ax,Ax
Mov Al,Byte Ptr Cs:[Rd]
Shr Al,3
Shl Ax,11
Mov Al,Byte Ptr Cs:[Bu]
Shr Al,3
Xor Bx,Bx
Mov Bl,Byte Ptr Cs:[Gr]
Shr Bl,2
Shl Bx,5
Add Ax,Bx
StoSw
Pop Es
RetN
Pset64K EndP
AddX DD 0
AddY DD 0
BaseX DD 0
BaseY DD 0
RunM_X DD 0
RunM_Y DD 0
H DD 0
V DD 0
HelpCompute1 DD 0
RunMickey1 Proc Near
Fld Dword Ptr Cs:[PicSizeWc] ; Aide au calcul de h
Fld Dword Ptr Cs:[PixRat] ;
Fmul ;
Fild Dword Ptr Cs:[Ymax] ;
Fild Dword Ptr Cs:[Xmax] ; Valorisation de HelpCompute
Fdiv ;
Fmul
Fstp Dword Ptr Cs:[HelpCompute1]
Mov Eax,DWord Ptr Cs:[BaseY]
Mov DWord Ptr Cs:[RunM_Y],Eax
;While ((Y <= Ymax) And (KeyStop=False)) Do
@@W1Test:
Mov Eax,DWord Ptr Cs:[Ymax2]
Cmp Dword Ptr Cs:[RunM_Y],Eax
Jle @@W1C0Vrais
Jmp @@W1False
@@W1C0Vrais:
Cmp Word Ptr Cs:[KeyStop],Faux
Je @@W1C1Vrais
Jmp @@W1False
@@W1C1Vrais:
; Remettre Ici Equ 0.21
; h:=(-y/ymax+0.5)*ymax/xmax*PicSiZeWC*PixRat;
FiLD Dword Ptr Cs:[RunM_Y]
FCHS
Fild Dword Ptr Cs:[Ymax]
Fdiv
Fld Dword Ptr Cs:Half1
Fadd
Fld Dword Ptr Cs:HelpCompute1
Fmul
Fstp Dword Ptr Cs:[h]
; kMUl(h,Vh,hv);
Mov Bx,Offset h
Mov Di,Offset Vh
Mov Si,Offset Hv
Call Kmul
; X:=BaseX;
Mov Eax,Dword Ptr Cs:[BaseX]
Mov Dword Ptr Cs:[RunM_X],EaX
;While ((X <= Xmax) And (KeyStop=False))Do
@@W2Test:
Mov Eax,Dword Ptr Cs:[Xmax2]
Cmp Dword Ptr Cs:[RunM_X],Eax
Jle @@W2C0Vrais
Jmp @@W2False
@@W2C0Vrais:
Cmp Word Ptr Cs:[KeyStop],Faux
Je @@W2C1Vrais
Jmp @@W2False
@@W2C1Vrais:
; v:=(x/xmax-0.5)*PicSizeWC;
Fild Dword Ptr Cs:[RunM_X]
Fild Dword Ptr Cs:[Xmax]
FdivP St(1),St(0)
Fld Dword Ptr Cs:[Half1]
Fsubr
Fld Dword Ptr Cs:[PicSizeWc]
Fmul
Fstp Dword Ptr Cs:[V]
; kMul(v,vr,nh);
Mov Bx,Offset v
Mov Di,Offset Vr
Mov Si,Offset Nh
Call Kmul
; vSum(hv,nh,nh);
Mov Di,Offset Hv
Mov Bx,Offset Nh
Mov Si,Offset Nh
Call Vsum
; Vdif(nh,eye,r.n);
Mov Di,Offset Nh
Mov Bx,Offset Eye
Mov Si,Offset Ra.Rn
Call Vdif
; Trace(r,0,1,1,c);
Push Word Ptr 0000 ; Correspond a RekDep !!
Push Offset Ra ; Trace doit faire une copie en pile
Push Offset Cct ;
Push Dword Ptr Cs:Is1 ;
Push Dword Ptr Cs:Is1 ;
Call Trace
;
FLD Dword Ptr Cs:[Cct.R] ; þþþþþþ
FLD1 ; þþþþ
FUCOMPP ; þþ
FSTSW AX ; þþ
SAHF ; þþ La Chromatique Rouge est
JA @@NoRChg ; þþ compare a 1.0 et est mise a 1.0
Mov Byte Ptr Cs:[Rd],255 ; þþ Arrondit Automatique
Jmp @@DoGreen ; þþ
Even ; þþ
@@NoRChg: ; þþ
FLD Dword Ptr Cs:[Cct.R] ; þþ
Fild Dword Ptr Cs:[Mul255] ; þþ
Fmul ; þþ Ici On Arrondie les Couleurs
Fistp Dword Ptr Cs:[Rd] ; þþ Avant Mise en place du point
@@DoGreen: ; þþ
FLD Dword Ptr Cs:[Cct.G] ; þþ
FLD1 ; þþ
FUCOMPP ; þþ
FSTSW AX ; þþ
SAHF ; þþ La Chromatique Verte est
JA @@NoGChg ; þþ compare a 1.0 et est mise a 1.0
Mov Byte Ptr Cs:[Gr],255 ; þþ
Jmp @@DoBlue ; þþ
Even ; þþ
@@NoGChg: ; þþ
FLD Dword Ptr Cs:[Cct.G] ; þþ
Fild Dword Ptr Cs:[Mul255] ; þþ
Fmul ; þþ
Fistp Dword Ptr Cs:[Gr] ; þþ
@@DoBlue: ; þþ
FLD Dword Ptr Cs:[Cct.B] ; þþ
FLD1 ; þþ
FUCOMPP ; þþ
FSTSW AX ; þþ La Chromatique Bleu est
SAHF ; þþ compare a 1.0 et est mise a 1.0
JA @@NoBChg ; þþ Si et Seulement Si la Chromatique
; Mov Eax,Dword Ptr Cs:[Is1] ; þþ de d‚part est superieure a 1.0
; Mov Dword Ptr Cs:[C.B],Eax ; þþþþ
Mov Byte Ptr Cs:[Bu],255 ; þþ
Jmp @@DoPset ; þþ
Even ; þþ
@@NoBChg: ; þþ
FLD Dword Ptr Cs:[Cct.B] ; þþ
Fild Dword Ptr Cs:[Mul255] ; þþ
Fmul ; þþþþ
Fistp Dword Ptr Cs:[Bu] ; þþþþþþ
@@DoPset:
; setzePixel(AddX+x,AddY+y,round(c.r*255),round(c.g*255) ,round(c.b*255) );
Mov Ecx,Dword Ptr Cs:[Addx] ; Positionnement du Demarrage
Add Ecx,Dword Ptr Cs:[RunM_X] ; Premier Point Haut Gauche
Mov Ebx,Dword Ptr Cs:[Addy] ;
Add Ebx,Dword Ptr Cs:[RunM_Y] ;
Call Pset64K
In Al,60h ; Test Clavier pour
Dec Al ; Interruption
Jz @@StopIt ; et sortie dans l'espace
Inc Dword Ptr Cs:[RunM_X] ; Ajoute 2 au tramage X
Jmp @@W2Test
@@W2False:
Inc Dword Ptr Cs:[RunM_Y] ; Ajoute 2 au tramage Y
Jmp @@W1Test
@@W1False:; Fin du While
@@StopIt:
RetN
RunMickey1 EndP
Mov Word Ptr Cs:[Abank_R],65535 ; Generation d'un Mickey en
Call RunMickey1 ; Lancement du remap en Question
Demarre: ; Ici D‚marre le programme
; Juste Pour Etre Tranquille
Mov Ax,Cs
Mov Ds,Ax
Mov Es,Ax
Finit ; Necessaire
; þþþþþþ
; þþþþþþþþþþþþ Valorisation de Demarrage
; þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ
; R.p := Eye; ; þþþþþþþ
CoordCopy Eye Ra.Rp ; þþþþþ
; ErrEps(Eye.z); ; þþþ
FLD Dword Ptr Cs:Ra.RP.z ; þþþ
Call ErrEps ; þþþ
; Normalize(LightV) ; þþþ
Mov Ax,Cs ; þþþ
Mov Ds,Ax ; þþþ
Mov Di,Offset LightV ; þþþ
Call Normalize ; þþþ
;vh.x:=-x; ; þþþ
FLD Dword Ptr Cs:[Eye.x] ; þþþ
FCHS ; þþþ
FSTP Dword Ptr Cs:[Vh.x] ; þþþ
;vh.y:=-y; ; þþþ
FLD Dword Ptr Cs:[Eye.y] ; þþþ
FCHS ; þþþ
FSTP Dword Ptr Cs:[Vh.y] ; þþþ
;vh.z:=(sqr(x)+sqr(y)+sqr(z))/z; ; þþþ
FLD Dword Ptr Cs:[Eye.x] ; þþþ
FMul st,St(0) ; þþþ
Fld Dword Ptr Cs:[Eye.y] ; þþþ
FMul st,St(0) ; þþþ
Fadd ; þþþ
Fld Dword Ptr Cs:[Eye.z] ; þþþ
FMul st,St(0) ; þþþ
Fadd ; þþþ
Fld Dword Ptr Cs:[Eye.z] ; þþþ
Fdiv ; þþþ
Fstp Dword Ptr Cs:[Vh.z] ; þþþ
;normalize(vh); ; þþþ
Mov Ax,Cs ; þþþ
Mov Ds,Ax ; þþþ
Mov Di,Offset Vh ; þþþ
Call Normalize ; þþþ
;if z<0 then ; þþþ
Fld Dword Ptr Cs:[Eye.z] ; þþþ
FTST ; Test St(0) & 0.0 ; þþþ
FSTSW AX ; þþþ
SAHF ; Valorise Flags ; þþþ
JAE @@NoMul ; þþþ
;kMUl(-1,vh,vh); ; þþþ
Int 20; ; þþþ
Fld Dword Ptr Cs:[Vh.X] ; þþþ
Fchs ; þþþ
Fstp Dword Ptr Cs:[Vh.X] ; þþþ
Fld Dword Ptr Cs:[Vh.Y] ; þþþ
Fchs ; þþþ
Fstp Dword Ptr Cs:[Vh.Y] ; þþþ
Fld Dword Ptr Cs:[Vh.Z] ; þþþ
Fchs ; þþþ
Fstp Dword Ptr Cs:[Vh.Z] ; þþþ
@@NoMul: ; þþþ
;vr.x:=vh.y*z-vh.z*y; ; þþþ
Fld Dword Ptr Cs:[Vh.z] ; þþþ
Fld Dword Ptr Cs:[Eye.y] ; þþþ
Fmul ; þþþ
Fld Dword Ptr Cs:[Vh.y] ; þþþ
Fld Dword Ptr Cs:[Eye.z] ; þþþ
Fmul ; þþþ
Fsub ; þþþ
Fstp Dword Ptr Cs:[Vr.x] ; þþþ
;vr.y:=vh.z*x-vh.x*z; ; þþþ
Fld Dword Ptr Cs:[Vh.x] ; þþþ
Fld Dword Ptr Cs:[Eye.z] ; þþþ
Fmul ; þþþ
Fld Dword Ptr Cs:[Vh.z] ; þþþ
Fld Dword Ptr Cs:[Eye.x] ; þþþ
Fmul ; þþþ
Fsub ; þþþ
Fstp Dword Ptr Cs:[Vr.y] ; þþþ
;vr.z:=vh.x*y-vh.y*x; ; þþþ
Fld Dword Ptr Cs:[Vh.y] ; þþþ
Fld Dword Ptr Cs:[Eye.x] ; þþþ
Fmul ; þþþ
Fld Dword Ptr Cs:[Vh.x] ; þþþ
Fld Dword Ptr Cs:[Eye.y] ; þþþ
Fmul ; þþþ
Fsub ; þþþ
Fstp Dword Ptr Cs:[Vr.z] ; þþþ
Fstp St(0) ; þþþ
;normalize(vr); ; þþþ
Mov Ax,Cs ; þþþ
Mov Ds,Ax ; þþþ
Mov Di,Offset Vr ; þþþþþ
Call Normalize ; þþþþþþþ
; þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ
; þþþþþþþþþþþþ Valorisation de Demarrage Termine
; þþþþþþ
; Fabrication d'un degre
FLDPI
FILD Dword Ptr GradBase
Fdiv
Fstp Dword Ptr Grad
Mov Eax,Dword Ptr Grad ; Eax Definit le degre de modif
Mov Si,Offset Xrotate ; le vecteur applique
Mov Di,Offset MatriceE ; la Matrice genere
Call DefineMatrix ;
Mov Sp,16384;+1024;+512 ; Permet un Gain de Temps !
Mov Ax,4F02h ;þþþ Changement de mode video
Mov Bx,0111h ;þþ 112 Mode 640*480 16m Pset <- Et4000W32p
Int 10h ;þþþ 111 Mode 640*480 64k Pset64K <- Vesa
Mov Si,Offset PaleGreen ; þþþþþþ
Mov Di,Offset K1Surf ; þþþþ
Call CopyColor ; þþ Valorisation des pigments
Mov Si,Offset MediumVioletRed ; þþ pour chacune des spheres
Mov Di,Offset K2Surf ; þþ composant le Mickey
Call CopyColor ; þþ
Mov Si,Offset MediumVioletRed ; þþ
Mov Di,Offset K3Surf ; þþ
Call CopyColor ; þþ
Mov Si,Offset Red;MediumVioletRed ; þþ
Mov Di,Offset K4Surf ; þþþþ
Call CopyColor ; þþþþþþ
Mov Dword Ptr Cs:[AddX] , 0 ; Centrage sur ecran
Mov Dword Ptr Cs:[AddY] , 0 ; 640*480
Xor Ecx,Ecx
Again: ; Attente touche escape
Push Ecx
Mov Dword Ptr Cs:[BaseX], 0 ; Base de Remap d'un Mickey
Mov Dword Ptr Cs:[BaseY], 0
Mov Word Ptr Cs:[Abank_R],65535 ; Generation d'un Mickey en
Call RunMickey1 ; Lancement du remap en Question
Mov Di,Offset MatriceE ; On Effectue la rotation de chacun des points
Mov Si,Offset K4 ;
Call Rotation ;
; Mov Di,Offset MatriceE ;
Mov Si,Offset K1 ;
Call Rotation ;
; Mov Di,Offset MatriceE ;
Mov Si,Offset K3 ;
Call Rotation ;
; Mov Di,Offset MatriceE ;
Mov Si,Offset K2 ;
Call Rotation ;
Add Word Ptr Cs:[AddX], 160
Cmp Word Ptr Cs:[AddX],640
Jl @@NoIncBase
Mov Word Ptr Cs:[AddX],0
Add Word Ptr Cs:[AddY],120
Cmp Word Ptr Cs:[AddY],480
Jl @@NoIncBase
Mov Word Ptr Cs:[AddX],0
Mov Word Ptr Cs:[AddY],0
@@NoIncBase:
Pop Ecx ;
inc Cx
Cmp Cx,180
Jg CestFinit
In Al,60h
Dec Al
Jnz Again
CestFinit:
Mov Ax,03h ; Retour en Mode Texte
Int 10h
Mov Sp,0FFFEh ; Validation Stack pour retour
Int 20h
StartC EndS
End StartC ; Fin de Programme
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Instructions FPU [ par thebigbang ]
Bonjour à vous tous,J'aimerais avor des précisions sur les instructions FPU... on m'a déjà donné ce lien : http://webster.cs.ucr.edu/Page_AoALinux/HTM
petit problême FPU [ par prunkdump ]
Bonjours, voilà je voudrais savoir comment afficher un nombre à vigule flottante lorsqu'il est en mémoire. Plus simplement comment convertir un nombre
Utilisation de la FPU [ par vecchio56 ]
J'essaie d'utiliser la FPU pour faire ne serait-ce qu'une fonction très simple, qui revoie l'argument qu'on lui passe:__declspec(naked) float __fastca
FPU et puissance d'un nombre [ par AlexMAN ]
Bonjour, Voila, j'ai 'codé' 2 fonctions permettant de calculer un nombre n a une puissance exp (la fonction est bourrin, cad pas de decoupages de
FPU et Vc++ [ par AlexMAN ]
Bonsoir, J'aurais aimé savoir s'il etait possible de visionner le contenu des registres FPU sous VC++, parce que c'est assez embetant de ne pas v
assembleur FPU [ par spiky31 ]
Bonjour Est ce que quelqu'un pourrait me dire comment insérer du code asm avec des instructions FPU dans un programme C avec des explications ou un e
ARCCOS ET ARCSIN AVEC LE FPU [ par tomart2005 ]
Bonjour,je souhaite savoir si il existe une instruction fpu en assembleur pour arccos et arcsin. Je n'ai rien trouver dans la liste d'instruction masm
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
974 Application Server (12.2.4.0)974 APPLICATION SERVER (12.2.4.0)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP mySongBook Player (1.0.0)MYSONGBOOK PLAYER (1.0.0)mySongBook Player est un logiciel gratuit permettant l'accès à une archive de tablatures/partitio... Cliquez pour télécharger mySongBook Player
|