You are on page 1of 11

Instrucciones Lever y CombinedControl en MSTS

Estas instrucciones animan los controles mviles en los archivos .cvf que controlan las cabinas. Ambos controles tienen la misma estructura, la nica diferencia entre ellos es que Lever se refiere a un nico mando y CombinedControl a dos, especificados en el archivo .eng correspondiente. Ms adelante indicar con detalle ste punto. Tomo como ejemplo el mando del freno de la locomotora 252
Lever ( Type ( TRAIN_BRAKE LEVER ) Position ( 431 314 50 13 ) Graphic (../../Dash9/CABVIEW/FrenoExportacion.ace ) Style ( SPRUNG ) MouseControl ( 1 ) NumFrames ( 22 11 2 ) NumPositions ( 3 21 20 0 ) NumValues ( 3 0 0.25 0.95 ) Orientation ( 1 ) DirIncrease ( 0 ) ScaleRange ( 0 1 ) )

Respeto la secuencia en que aparece en todos los archivos .cvf, y aunque por supuesto es indiferente el orden en que aparecen dichas instrucciones, yo estimo que debera ser el siguiente, para hacer ms clara la explicacin. Como siempre, alguien hizo, a mi parecer con poco criterio, un archivo y todos sin excepcin se limitan a copiarlo.
Lever ( Type ( TRAIN_BRAKE LEVER ) Graphic (../../Dash9/CABVIEW/FrenoExportacion.ace ) NumFrames ( 22 11 2 ) NumPositions ( 3 21 20 0 ) NumValues ( 3 0 0.25 0.95 ) Position ( 431 314 50 13 ) Style ( SPRUNG ) MouseControl ( 1 ) Orientation ( 1 ) DirIncrease ( 0 ) ScaleRange ( 0 1 ) )

El significado de cada instruccin es:


Type ( TRAIN_BRAKE LEVER ):

Obviamente, lo que representa el control.


Graphic (../../Dash9/CABVIEW/FrenoExportacion.ace )

Igualmente es evidente que nos indica el grfico .ace donde se representa el control. Puede estar en la misma carpeta donde se encuentra el archivo .cvf o en otra como en el presente caso, la carpeta y el archivo donde se encuentra son Dash9 y CABVIEW respectivamente y se representan as: ../../Dash9/CABVIEW/ Funciona igual si en vez de / se pone // o \\ como aparece en casi todos los sitios, por supuesto aplico la navaja de Occam y siempre pongo /. Si en cualquier nombre aparece un espacio, son necesarias comillas al principio y al final, por ejemplo
Graphic ( "../../Renfe 269.603 GL/CABVIEW/frenotren269.ace" ) Graphic (freno tren.ace" ) NumFrames ( 22 11 2 )

En el archivo FrenoExportacion.ace se representan las distintas posiciones que adopta la palanca del freno al aplicarlo y que se mostrarn en el juego. sta instruccin nos indica el nmero de imgenes distintas o cuadros existentes y su disposicin, en el caso presente, 22 cuadros distribuidos en 11 columnas y 2 filas. El juego las numera partiendo de la primera de arriba y a la izquierda, a la que le asigna el valor 0, sigue con las de la primera fila hasta su final, contina con la ms a la izquierda se la fila siguiente, y as sucesivamente hasta llegar a la situada ms a la derecha y abajo, que ser la n-1 siendo n el nmero de cuadros que hay, en el caso presente ser, pues, 21.
NumPositions ( 3 21 20 0 ) NumValues ( 3 0 0.25 0.95 )

Estas dos instrucciones estn ntimamente ligadas entre s y con la que controla ste mando en el archivo .eng correspondiente. En la locomotora Renfe 252 tomada como ejemplo, dicha instruccin es la siguiente:
Brake_Train ( 0 1 0.0125 0.30 NumNotches ( 3 Notch( 0 Notch( 0.25 Notch( 0.95 0 1 0 ) ) TrainBrakesControllerReleaseStart ) TrainBrakesControllerGraduatedSelfLapLimitedStart ) TrainBrakesControllerEmergencyStart )

Conviene hacer un inciso y recordar el tipo de mandos que vamos a encontrarnos. Unos, tpicamente el cambio de marchas, el regulador, etc. de las mquinas de vapor, tienen un movimiento continuo en todo su recorrido, otros slo se mueven por puntos (Notches) determinados, como los reguladores de las locomotoras elctricas y finalmente otros, como el presente ejemplo, se mueven con algunos puntos determinados y con movimiento continuo entre algunos o todos los puntos. Si el tipo de mando fuera de los de movimiento continuo, en

el .eng correspondiente indicara simplemente siguiente:


NumPositions ( 0 ) NumValues ( 0 )

NumNotches (0)

y aqu sera en consecuencia lo

Pero en el presente ejemplo segn lo programado en el archivo .eng hay 3 puntos en el recorrido, desfrenado, comienzo de frenado y emergencia. Adems, el segundo nmero de Notch( 0.25 1 TrainBrakesControllerGraduatedSelfLapLimitedStart ) es 1 en contraposicin a los otros dos puntos, que los program con 0. Eso significa que desde ese punto hasta el siguiente el movimiento es continuo (en realidad se mueve a los intervalos que se programa en el tercer parmetro de Brake_Train ( 0 1 0.0125 0.30 , que al ser un nmero muy pequeo hace que pueda considerarse continuo). El significado de los parmetros de las dos instrucciones que estamos tratando aqu es, pues el siguiente: Primer nmero, indica el nmero de puntos que hay, debe ser por lo tanto igual a lo definido en la instruccin NumNotches ( 3 del archivo .eng , en nuestro caso es por eso 3. Siguientes nmeros: Debe haber tantos nmeros como indique el punto anterior, y cada uno de ellos define el cuadro que representa a los puntos definidos igualmente en el archivo .eng , en nuestro caso los definidos por
Notch ( 0 Notch ( 0.25 Notch ( 0.95 0 1 0 TrainBrakesControllerReleaseStart TrainBrakesControllerGraduatedSelfLapLimitedStart ) TrainBrakesControllerEmergencyStart )

Para los mandos que son palancas que se desplazan longitudinalmente en la direccin del tren, yo sigo siempre el criterio de situar la posicin de reposo del acelerador en el punto ms atrasado y en el caso de frenos al revs, es decir acelero moviendo el mando hacia adelante y freno trayendo el mando hacia atrs. Como en el grfico FrenoExportacion.ace la posicin ms adelantada es la 21 y quiero que sea la posicin de desfrenado el siguiente nmero al 3 en NumPositions es 21, el comienzo de frenado es 20 para indicar la posicin de la palanca en el cuadro 20 y el tercero, que representa a la palanca en la posicin ms atrasada (emergencia) es 0, pues as est en el archivo .ace. Los nmeros de NumValues ( 3 0 0.25 0.95 ) son los primeros nmeros programados en Notch del arhivo .eng (los he escrito en color rojo)
Position ( 431 314 50 13 )

Los dos primeros nmeros son las coordenadas donde aparece en la cabina la esquina superior izquierda de cada cuadro del archivo .ace, siendo como siempre el origen de las coordenadas la esquina superior izquierda de la pantalla. Los otros dos nmeros representan el tamao en pixel de cada cuadro. ATENCIN: el juego slo admite valores de estos dos ltimos parmetros menores de 250x125 aproximadamente.
Style ( SPRUNG )

Segn he probado, ste parmetro puede ser cualquiera, funciona igual poniendo incluso NONE.
MouseControl ( 1 )

NOT_SPRUNG

El 1 significa que arrastrando el ratn se mueve el control. Si fuera 0 , el ratn no acta.


Orientation ( 1 )

Indica la orientacin del movimiento de la actuacin del ratn, 1 en sentido longitudinal y 0 en transversal.
DirIncrease ( 0 )

Indica la direccin de aumento de la accin del control, si el ratn se mueve longitudinalmente como se define en el parmetro anterior, 0 significa que aumenta al retroceder y 1 que aumenta al avanzar. Por el criterio que indiqu ms atrs de cmo quiero que se mueva los controles de freno o de acelerador, al tratarse de freno con movimiento longitudinal de la palanca de mando marco siempre 0 y si fuera acelerador marco 1. Si la accin del ratn fuera transversal, 1 aumenta de izquierda a derecha y 0 al contrario.
ScaleRange ( 0 1 )

Indica los valores extremos que puede tomar el control de que se trate. En frenos y aceleradores sern normalmente 0 y 1 , pero por ejemplo en el cambio de marcha de las locomotoras de vapor, nos moveremos entre las posiciones extremas de la admisin, que sern habitualmente -0.75 y 0.75 , respectivamente. Voy a realizar como ejemplo algunos archivos para aplicar todo lo anterior al caso de CombinedControl, por ser algo ms complicado que Lever.
CombinedControl

del tren Renfe 440

La cabina se encuentra en la carpeta Common.cab con el nombre Cab444. El archivo sobre el que voy a trabajar es el CabM.cvf , los dems los dejo como ejemplo de cmo NO deben hacerse las cosas. Quiero combinar en un solo control el acelerador y el freno dinmico. Siempre tiene que ser el acelerador con un tipo de freno, bien dinmico como aqu, independiente o del tren, por las limitaciones del juego no se admite otra cosa que no sea sta. Lo primero que hay que hacer es programar en el archivo .eng la instruccin CombinedControl Su estructura es: CombinedControl x es el valor inicial, en ste caso 0. y es el valor final, 1 en ste caso. z representa el valor comprendido entre x e y donde finaliza la accin de un control y comienza la del otro, es decir, es el punto neutro, de corte o comn de los dos controles. Ms adelante fijar su valor. u es la posicin inicial del control combinado. Contol1 y Control2 son evidentemente los mandos que combino, en ste caso Throtle y Dynamic respectivamente. El control combinado est representado por el grfico volante.ace. Nos encontramos con una particularidad, ya que aunque el grfico tiene 16 cuadros (frames) distribuidos en cuatro filas y cuatro columnas los de las posiciones 0-1 , 2-3 y 4-5 son los mismos, por lo que nicamente hay 13 posiciones diferentes. El juego empieza a contar las posiciones desde 0, comenzando por arriba y a la izquierda, por lo que NumPositions ( ) y NumValues ( ) sern
NumPositions (13 0 2 4 6 7 8 9 10 11 12 13 14 15 ) ( x y z u Control1 Control2)

NumValues ( 13 0 0.09 0.16 0.25 0.33 0.41 0.50 0.58 0.66 0.75 0.83 0.91 1 )

He eliminado como se ve los cuadros 1-3-5 y he distribuido los 13 valores que corresponden a cada posicin uniformemente. Tomo slo 2 decimales, pues esa es la aproximacin con la que trabaja el juego. Quiero hacer ahora que a cada posicin grfica le corresponda un valor del acelerador o del freno dinmico, por lo que tengo que poner en el archivo .eng 7 posiciones en el acelerador y 7 en el freno dinmico, ya que una posicin (la que no actan ni el freno ni el acelerador) es comn. Quedarn por lo tanto uno y otro as en el archivo .eng:
NumNotches ( 7 Notch ( 0.00 Notch ( 0.17 Notch ( 0.33 Notch ( 0.50 Notch ( 0.67 Notch ( 0.83 Notch ( 1.00 0 0 0 0 0 0 0 Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy )

El juego toma la suma de los valores de NumNotches de cada control, le resta 1 por tener una posicin comn como dije antes (por eso tom 7 y 7) y distribuye las 13 posiciones uniformemente en cada intervalo de su actuacin, las de lo que llam Control1 en el intervalo x-z y las de Control2 en el z-y. Como en ste caso tengo igual nmero de posiciones de cada control, lo razonable es adoptar el valor de z como el punto medio de x e y, por lo que hago z=0.5 ya que haba hecho x=0 e y=1. El parmetro que quedaba por fijar, u, tambin me parece razonable tomarlo como el punto comn, es decir, hago u=0.5. Por lo tanto, las posiciones que el juego llama Combined Value y que se ven al pulsar 3 veces F5, sern: 0 0.08 0.17 0.25 0.33 0.42 0.50 0.58 0.67 0.75 0.83 0.92 1

A la primera posicin el juego le asigna el valor de la ltima posicin del primer control y as sucesivamente hasta llegar a 0 del primer control que coincide con la posicin de corte que antes llam z, en ste caso es 0.50. A partir de aqu comienza a tomar los valores del segundo control en sentido creciente, comenzando por el valor 0 y acabando en el valor 1. Quedar una tabla como sta: Combined Value 0 0.08 0.17 0.25 0.33 0.42 0.50 0.58 0.67 0.75 0.83 0.92 1 Combined primer control 1 0.83 0.67 0.50 0.33 0.17 0 0 0 0 0 0 0 Combined segundo control 0 0 0 0 0 0 0 0.17 0.33 0.50 0.67 0.83 1

Con esto debera estar todo correcto, pero por las cosas extravagantes del jueguecito unos valores los toma por exceso y otros por defecto y la tabla real es: Combined Value 0 0.09 0.16 0.25 0.33 0.41 0.50 0.58 0.67 0.75 0.84 0.91 1 Combined primer control 1 0.83 0.67 0.50 0.33 0.17 0 0 0 0 0 0 0 Combined segundo control 0 0 0 0 0 0 0 0.17 0.33 0.50 0.67 0.83 1

Debo, pues, variar los valores de NumValues

( )

para que coincidan con stos.

Ahora el volante va bien, pero en las posiciones 0.67 y 0.84 correspondientes a los cuadros 11 y 13 no va a esas posiciones, sino que sigue en los cuadros 10 y 12 respectivamente. Otra de las cosas raras del tal MSTS, se soluciona poniendo los valores 0.66 y 0.83 respectivamente. Veamos ahora otro caso, que es el ms general, con distinto nmero de puntos para el acelerador y el freno dinmico, y cuya suma menos 1 sea mayor que el nmero de cuadros del grfico .ace. Renfe 252 Tomo como ejemplo sta mquina, pues aunque en la tercera o cuarta descarga corrigiendo y complementando a las anteriores llegaba a funcionar correctamente, era tal la complicacin de las instrucciones, su absurda repeticin y los errores conceptuales, que era un milagro que el control de acelerador y freno dinmico llegase a funcionar. En la pantalla de la cabina se marca la posicin del acelerador y del freno dinmico, con un grfico de barras en donde van apareciendo ms barras a medida que aumentamos el acelerador e igualmente con el freno dinmico. Una de las extravagancias de los archivos .ace que representan stas barras, era que una de las posiciones de frenado quedaba en blanco, supongo que sera necesario por los absurdos de la programacin. Consecuencia de ello era que slo haba 9 posiciones de frenado frente a las 10 previstas. He corregido ese grfico, y ahora existen las 10 posiciones. Como existen 14 posiciones del acelerador, esos van a ser los puntos de los controles que voy a considerar. Como antes, distribuyo uniformemente entre 0 y 1 las 14 o las 10 posiciones, reflejndolo en el archivo .eng:
Throttle ( 0 1 0.08 0 NumNotches ( 14 Notch ( 0.00 Notch ( 0.08 Notch ( 0.15 Notch ( 0.23 Notch ( 0.31 Notch ( 0.38 Notch ( 0.46 Notch ( 0.54 Notch ( 0.62 Notch ( 0.69 Notch ( 0.77 Notch ( 0.85 Notch ( 0.92 Notch ( 1.00 ) ) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy )

Brake_Dynamic ( 0 1 0.12 0 NumNotches ( 10 Notch ( 0.00 Notch ( 0.11 Notch ( 0.22 Notch ( 0.33 Notch ( 0.44 Notch ( 0.56 Notch ( 0.67 Notch ( 0.78 Notch ( 0.89 Notch ( 1.00 ) ) 0 0 0 0 0 0 0 0 0 0 Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy ) Dummy )

De los grficos .ace que dispongo para la posicin de ste mando, el que ms posiciones tiene (14) es el 252_regTRACCION.ace, que va a ser el que utilizo aqu, ms que nada como ejercicio, pues posteriormente comentar otra modificacin que es la que adopto como definitiva, excepto en la locomotora portuguesa Siemens CP-5600, idntica a la Renfe 252, donde dejo lo aqu expuesto. Los 14 cuadros de los que dispongo, los distribuyo lo ms proporcionalmente posible a los 13 puntos de acelerador, 1 comn y 9 de frenado que he programado. Adopto pues, 7 cuadros corresponden al acelerador (6 puntos tienen posicin repetida), 1 es comn y 6 son de frenado (3 con posicin repetida). Si quiero que los valores de Combined Value se espacien uniformemente, la posicin de corte sera la 0.61 pero por lo que acabo de decir de la distribucin de los 14 cuadros, debera ser 0.54. Adopto el valor 0.59, intermedio entre ellos. La tabla de posiciones es ahora: Combined Value 0 0.05 0.09 0.14 0.18 0.22 0.27 0.32 0.37 0.41 0.45 0.50 0.54 0.59 Combined primer control 1 0.92 0.85 0.77 0.69 0.62 0.54 0.46 0.38 0.31 0.23 0.15 0.08 0 Combined segundo control 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0.64 0.68 0.73 0.77 0.82 0.86 0.91 0.95 1

0 0 0 0 0 0 0 0 0

0.11 0.22 0.33 0.44 0.56 0.67 0.78 0.89 1

Comparando ste cuadro con los NumNotches anteriores vemos que a las dos primeras posiciones de Combined Value, con valores 0 y 0.05 les corresponde el cuadro 0, pues el valor del cuadro 1 es 0.08, mayor que los anteriores, el valor del cuadro 2 es 0.15 por lo que las posiciones 3 y 4 de valores respectivos 0.09 y 0.14 corresponden a ste cuadro, el 3 tiene por valor 0.23, por lo que las posiciones 5 y 6 (0.18 y 0.22) le corresponden, el cuadro 4 tiene valor 0.31 por lo que nicamente la posicin 7 de valor 0.27 corresponde a ste cuadro (es el nico valor comprendido entre 0.23 y 0.31), y as sucesivamente. No es preciso afinar los valores de los cuadros para que se vieran todos, como hice con el volante de la 440 porque aparecen los 14 perfectamente.. Voy a hacer otra modificacin en la que se hace corresponder a cada uno de los 23 puntos del acelerador o del freno una posicin grfica del mando. Ya dije que sta locomotora tiene una descarga inicial, completada y modificada por varias otras, que consiguen (para m es un milagro) que ste control funcione, con 22 posiciones en vez de 23, pero funciona mucho mejor que todo lo dems. Superpone un CombinedControl con varios Lever del acelerador, la posicin de corte la fija en 0.1 etc., ya digo un complicado absurdo. No sera mucho ms fcil hacer un solo CombinedControl con 23 posiciones? Como creo que s, es lo que desarrollo a continuacin. Sucede que las 23 posiciones del nico mando no estn en un solo archivo, sino en dos, llamados 252_regTRACCION.ace y 252_regDINAMICO.ace con 14 y 10 cuadros respectivamente. Procede unirlos en uno solo, al que he llamado Combinado.ace. Lo he hecho con Photoshop con el procedimiento habitual (transformacin a .tga, modificacin, guardado como .tga y transformacin a .ace), se pierde el canal alfa, pero no es necesario rehacerlo, pues aqu no sirve para nada, ya que cada cuadro tiene el fondo total y por lo tanto no necesita transparencia alguna. Lo primero es hacer un nuevo marco de dimensiones suma de las que quiero unir. As consigo un archivo con 12 columnas y 2 filas. A la izquierda situ las posiciones de frenado y a la derecha las de acelerador, por supuesto que hubiera sido igual hacerlo al contrario. Por lo tanto, las posiciones de frenado son: 0 1 2 3 4 12 13 14 15 16 , siendo 0 la de reposo y 16 la de mximo frenado, las de acelerador son 5 6 7 8 9 10 11 17 18 19 20 21 22 23 , siendo aqu la 5 la de reposo y la 23 la de mxima aceleracin. Es preferible hacerlo con Photoshop en vez de con Paint Shop porque al guardarlo con Photoshop sin modificar nada, tiene la profundidad de color correcta y en cambio con Paint Shop tienes que marcarla y si no aciertas aunque con Paint Shop o Photoshop se ven correctamente, con TgaTool solo se ven rayas. Debo no considerar una de ellas para tener las 23 necesarias. Elimino el cuadro aqu llamado 4, pues corresponde a una posicin que no tiene nada que ver con ninguna otra, un absurdo ms del archivo original. Las posiciones 0 y 5 son idnticas, por supuesto que si la 4 fuera correcta una de ellas sera la eliminada, pero debo conservarlas con el resultado que en la primera posicin de frenado (posicin 0) el mando no se mueve de la posicin neutra (la 5). Otra posibilidad es considerar slo 9 posiciones de frenado en vez de 10 y otra ms dibujar un cuadro con una posicin intermedia entre alguno de los existentes y as tener las 23 posiciones distintas.

Sin embargo, prefiero dejarlo con las 10 posiciones de frenado sin crear nuevo cuadro, al menos de momento. El archivo NumPositions sera:
NumPositions (23 23 22 21 20 19 18 17 11 10 9 8 7 6 5 0 1 2 3 12 13 14 15 16 )

Hecho as funciona correctamente con dos excepciones: en la posicin correspondiente al cuadro 3 (es la decimoctava posicin) sale el cuadro 5 y no hay manera de hacer que salga el 3, ni modificando valores ni incluso intentando engaar al juego, ya que si marca un cuadro que en el archivo .ace ocupa dos posiciones a la derecha, si programo que aparezca el cuadro 1, al representar el situado dos a la derecha sera el 3, pero en ste caso no salta dos posiciones sino tres, por lo que desisto. El otro error es que no salta al cuadro 16, aqu tampoco puedo hacer nada, ya que su valor es 1 tanto en Combined Value como en Combined 2 Control, y aqu no hay aproximaciones que valgan. Aunque las otras veintiuna posiciones son correctas, prob a ordenar los cuadros haciendo que la posicin 0 fuera la de mxima aceleracin y las sucesivas las siguientes en aceleracin, luego la neutra y luego las de aumento de frenado, hasta el cuadro 22 que corresponde a la mxima posicin de frenado, colocando en el cuadro 23 la posicin desechada. Ahora resulta
NumPositions (23 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 )

Con esto funciona perfectamente, excepto en una posicin que se la salta. Igual que en la 440 lo soluciono haciendo que el valor 0.92 del acelerador sea 0.91 y ya queda perfecto, con la salvedad dicha en cuanto a la posicin idntica de la posicin neutra y primera de frenado, error achacable al archivo .ace pero no a la programacin aqu expuesta.

You might also like