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
|