Make your own free website on Tripod.com

FSFACTS Apéndice 2.1
Principal ] Página Superior ] Sugerencias ] Links ] Contenido del Web ] Buscar en mi Web ]


Traducción del documento FS FACTS Apéndice v2.1 extraído de wings.ark.com
Copyright © 1996-1997 Konstantin Kukushkin. Todos los derechos reservados
Traducción © 2000 Joan Josep González Figueras

Contenido

Tiempos de Instrucciones
Códigos de Colisión
Nombres distintos en FSASM y SCASM
Números BCD


Tiempos de Instrucciones

Esta tabla muestra las velocidades de ejecución de distintas instrucciones BGL, en instrucciones/segundo. Las velocidades de ejecución se han medido en el FS5.1 con un buen PC 486DX4/100 en el modo sin haze (niebla) modo VGA 320x400. Fue imposible medir en un PC más rápido debido a problemas internos del FS5 con el contador de Frames. De modo parecido, es imposible comparar velocidades de instrucciones en el FS6, porque su rendimiento depende del estado de otras tareas del Windows 95

Mientras estos numeros son inutiles para determinar la ejecución absoluta de instrucciones y del ratio de frames, deberían dar una buena idea sobre velocidad de ejecución y impacto relativo en el ratio de frames cuando se usa una u otra instrucción.

Mira en el documento FS_PRO, "Como mantener el ratio de frames alto" para una discusión más detallada sobre velocidad de ejecución de instrucciones.

Velocidad de Ejecución de la Instrucción Instrucciones/segundo
RefPoint(7)/v2=0 visible 123073
RefPoint(7)/v2!=0 visible 82932
RefPoint(7)/v2=0 invisible 215176
RefPoint(7)/v2!=0 invisible 120705
RefPoint(7)/lejos invisible 118613
Call/Return 1289807
; todas las... Call()s medidas juntas con el correspondiente Return
RotatedCall(0 0 0) 107129
RotatedCall(X 0 0) 57796
RotatedCall(X X 0) 39165
RotatedCall(X X X) 29421
; Desplazamientos Cero en TransformCall() no incrementan el rendimiento
TransformCall(dx dz dy 0 0 0) 198047
TransformCall(dx dz dy x 0 0) 53658
TransformCall(dx dz dy x x 0) 37201
TransformCall(dx dz dy x x x) 27580
; medido junto con Perspective()/Return()

; /50 significa que habia otros 49 objetos PerspectiveCall()

;x2 significa que cada objeto se le ejecutó dos veces PerspectiveCall()

PerspectiveCall()/50 101896
PerspectiveCall()/50x2 75600
PerspectiveCall()/100 90810
PerspectiveCall()/100x2 69674
PerspectiveCall()/150 81060
PerspectiveCall()/150x2 62565
PerspectiveCall()/200 78664
PerspectiveCall()/200x2 58152
PerspectiveCall()/250 74930
PerspectiveCall()/250x2 53260
Jump() 2832031
IfVarAnd()/sin salto 1532625
IfVarAnd()/con salto 1691036
LineColor() 2954537
SurfaceColor() 2732680
ShadedColor() 628461
RepeatBitmap() 1274459
TexPolyShading() 537598
Bitmap()/con suficiente RAM 82929
Palette()/antigua 419843
Palette()/nueva 100
; Todos los puntos visibles
Dot() 87399
DotPt() 142809
DotLine()/por punto [5 puntos/línea] 115360
DotLine()/por punto [10 puntos/línea] 131400
DotLine()/por punto [25 puntos/línea] 144000
MoveToPt()/DrawToPt() 5556
MoveTo()/DrawTo() 5456
; Todos los comandos que dibujan polígonos se usaron para dibujar un polígono de igual

; forma en el mismo lugar.

; El tiempo de dibujado de un polígono sólido fue el mismo para las paletas 68, 69 y F0.
Poly()/sin textura 460.29
ShadedPoly() 127.71
ShadedPoly()/033E=1 87.84
; Todos los comandos de mapeo se usaron con el mismo escalado y

; posición de la textura.

TexWindow() 59.90
TexWindow()/zoom=4 27.62
TexWindow()/smothing 52.48
TexWindow()/smoothing zoom=4 24.01
TexPoly() 31.60
TexPoly()/zoom=4 31.01
TexPoly()/smothing 29.59
TexPoly()/smoothing zoom=4 26.14
ShadedTexPoly() 25.72
ShadedTexPoly()/zoom=4 23.00
ShadedTexPoly()/smothing 25.40
ShadedTexPoly()/smoothing zoom=4 23.00

volver al contenido

Códigos de Colisión

Todos los códigos de colisión se son ignorados cuando está desactivada esta opción

Códigos no listados también pueden causar colisión.

Código (decimal) Mensaje cuando ocurre Comentarios
1 Crash (Colisión) Cabina
2 Mountain (Montaña) Cabina
3 Crash (Colisión) Cabina
4 Crash (Colisión) Siempre fuerza altitud cero
5 Crash (Colisión) Cabina
6 Building (Edificio) Cabina
7 Crash (Colisión) Cabina
8 Splash (Agua) Cabina
9 Crash (Colisión) Cabina
10 Gear Up (Tren arriba) Cabina
12 Overstress (Sobreesfuerzo) Cabina
13 Crash (Colisión) Cabina
14 Building (Edificio) Siempre
16 Collision (Choque) Siempre Requiere un Crash (colisión) cuando la opción chocar contra objetos (hit Objects) está activada.
18 Fuel truck (Camión de Fuel) Siempre Requiere un Crash (colisión) cuando la opción chocar contra objetos (hit Objects) está activada.
19 Crash (Choque) Siempre
20 Object (Objeto) Siempre Requiere un Crash (colisión) cuando la opción chocar contra objetos (hit Objects) está activada.
22 Crash (Colisión) Cabina

volver al contenido

Nombres distintos en FSASM y SCASM

SCASM FSASM
Area Group
EndA EndGroup
Area16 SurfaceGroup
End16 EndSurfaceGroup
   
RefPoint(2...) RefPtAMSL
RefPoint(7...) RefPtGL
Points DefPoints Point
VecPoints DefVecPoints/VecPoint
   
Brightness Intensity
BigDot DotLarge
DrawTo LineTo
Poly FlatPoly
   
RunwayData Rwy
RunwayLights RwyLights
   
RoadMoveTo RoadWidth/StartRoad
RoadLineTo DrawRoad
RoadMoveTo2 RiverWith/StartRiver
RoadLineTo2 DrawRiver
TaxiMoveTo TwyWith/StartTwy
TaxiLineTo DrawTwy
   
RotatedCall RotCall
TransformCall TransRotCall
LayerCall/RunwayCall PriorityCall
Monitor3D Jump3Ranges
   
Bitmap TextureFile
RepeatBitmap MoveTexture
Inst_7D ResetTexture
MoveTexture MapTexture
Palette PaletteFile
BitmapMode PaletteMask
Smoothing ImageSmoothing

NOTA: La instrucción MoveTexture se asigna a instrucciones totalmente distintas en SCASM y FSASM!

volver al contenido

Numeros BCD

Las frecuencias en el MSFS se codifican usando numeros BCD.

BCD (Binary Coded Decimals / Decimales Codificados en Binario) es un formato especial para acortar numeros decimales (mayoritariamente enteros). Cada digito se almacena en 4 bits.

Es muy fácil convertir un numero decimal a la representación BCD. Simplemente el numero se escribe en notación decimal, pero tratado como si fuera hexadecimal. En FSASM, es suficiente añadiendo una 'h':

2545 (decimal) -> 2545h (BCD)

El lenguaje SCASM [v1.6] requiere que valores para SetVar() etc. sean números decimales. Hay muchas formas de convertir numeros hexadecimales al formato decimal, una de ellas es usar la calculadora de windows en modo científico.

Ya que el primer dígito de las frecuencias siempre es 1, no se codifica nunca. El resto de la frecuencia se multiplica por 100 y se convierte a BCD:

SCASM: 125.45 (Mhz) -> 2545h -> 9541 (decimal) -> SetVar(7BE 9541)

FSASM: 125.45 (Mhz) -> 2545h -> SetVar vCOM1,2545h

volver al contenido