What is an FM file?

Entendiendo el Formato de Archivo FM2

31/05/2007

Valoración: 4.26 (9639 votos)

En el vasto universo de la emulación de videojuegos clásicos, existen formatos de archivo que van más allá de la simple ROM del juego. Uno de ellos es el formato FM2, estrechamente ligado al popular emulador FCEUX, diseñado principalmente para sistemas como la Nintendo Entertainment System (NES) y la Famicom. Pero, ¿qué es exactamente un archivo FM2 y para qué se utiliza? En esencia, un archivo FM2 no contiene el video de una partida grabada en el sentido tradicional, sino que almacena un registro detallado de todas las entradas del jugador cuadro a cuadro. Piensa en él como una partitura que le indica al emulador exactamente qué botones se presionaron, en qué momento y en qué posición, permitiendo recrear una partida de forma idéntica cada vez que se reproduce.

Este enfoque basado en inputs tiene múltiples ventajas, especialmente para la creación de Tool-Assisted Speedruns (TAS), donde se busca completar un juego de la forma más rápida y óptima posible utilizando herramientas de emulación como cámara lenta, avance cuadro a cuadro y guardado de estado. Un archivo FM2 registra cada acción del jugador, incluyendo movimientos del joystick, pulsaciones de botones, uso de periféricos como la Zapper o el Arkanoid Paddle, e incluso eventos del sistema como reinicios. Al ser un registro de entradas y no un video, estos archivos suelen ser mucho más pequeños que una grabación de video convencional.

What is an FM file?
An FM file is a spreadsheet file created with FileMaker or FileMaker Pro that is a cross-platform relational database application. It is relatively older file format and in order to load this in FileMaker Pro, it needs to be converted to the new . fmp12 file format.

¿Qué es el formato de archivo FM2?

El formato FM2 es el formato de captura de películas o 'movies' utilizado por el emulador FCEUX. Su propósito fundamental es permitir la grabación y reproducción precisa de partidas de juegos de NES/Famicom. A diferencia de formatos de video que capturan píxeles, el FM2 captura la interacción del jugador con el juego a nivel de entrada. Esto significa que para 'ver' una película FM2, necesitas el emulador FCEUX y la ROM del juego correspondiente. El emulador carga la ROM y luego 'reproduce' las entradas almacenadas en el archivo FM2, haciendo que el juego se juegue a sí mismo siguiendo la secuencia de comandos registrada.

FM2 vs. FCM: Evolución del Formato

Antes del FM2, el emulador FCE Ultra (predecesor de FCEUX) utilizaba el formato .fcm para sus grabaciones. El formato FM2 representa una mejora significativa sobre el FCM, introduciendo varias características clave que facilitan la edición, gestión y compatibilidad de las grabaciones. Aquí detallamos algunas de las diferencias principales:

  • Base de texto por defecto: Una de las mejoras más importantes es que el formato FM2 es, por defecto, basado en texto plano (ASCII). Esto facilita enormemente la edición manual de las grabaciones, permitiendo cortar, pegar o modificar secuencias de inputs utilizando un simple editor de texto. El formato FCM era binario, lo que complicaba su manipulación externa.
  • GUID Incrustado: El FM2 incluye un Identificador Único Global (GUID) incrustado. Este identificador permite a FCEUX verificar si un estado de guardado (savestate) pertenece a un archivo de película FM2 particular. Esto es crucial para asegurar la consistencia y evitar problemas al cargar savestates durante la reproducción o edición de una película.
  • Grabaciones desde Cero: Las películas FM2 grabadas desde el inicio (encendido) del emulador ya no requieren un savestate redundante al comienzo del archivo, simplificando la estructura.
  • Soporte para Entradas Adicionales: El formato FM2 añade soporte explícito para la entrada del ratón, lo que permite grabar partidas utilizando periféricos como la Zapper o el Arkanoid Paddle de forma precisa.

Esta evolución hizo que el FM2 se convirtiera en el estándar para las grabaciones de alta precisión y los TAS en la comunidad de emulación de NES.

Anatomía de un Archivo FM2: Estructura Interna

Un archivo FM2 se divide fundamentalmente en dos secciones principales: la Cabecera (Header) y el Registro de Entradas (Input Log).

La Cabecera (Header)

La cabecera es siempre en formato de texto plano ASCII. Consiste en una serie de pares clave-valor, donde cada línea define una propiedad de la grabación. Estos pares clave-valor tienen un identificador (la clave), un espacio separador y el valor asociado. El valor termina con un salto de línea.

Las claves pueden ser de diferentes tipos (enteros, booleanos, cadenas, GUID, cadenas hexadecimales) y su orden dentro de la cabecera puede variar, con la única excepción de que la primera clave debe ser siempre 'version'.

Claves Importantes en la Cabecera:

  • version (Requerido): Indica la versión del formato de archivo. Actualmente, siempre es 3.
  • emuVersion (Requerido): La versión específica del emulador FCEUX utilizada para crear la grabación. Crucial para la compatibilidad.
  • rerecordCount (Opcional): El número de 'rerecords' o intentos realizados durante la creación del TAS.
  • palFlag (Booleano Opcional): Indica si la grabación utiliza la sincronización PAL (1 para verdadero, 0 para falso).
  • NewPPU (Booleano Opcional): Indica si la grabación utiliza la emulación del PPU (Picture Processing Unit) 'nuevo' de FCEUX.
  • FDS (Booleano Opcional): Indica si la grabación es de un juego de Famicom Disk System (FDS).
  • fourscore (Booleano): Indica si se utilizó el periférico Four Score para multijugador (hasta 4 jugadores). Si no se usa, las claves port0 y port1 son requeridas.
  • port0 / port1 (Requerido si fourscore no se usa): Especifican el tipo de dispositivo de entrada conectado a cada puerto. Los valores soportados incluyen: SI_NONE (0), SI_GAMEPAD (1), SI_ZAPPER (2).
  • port2 (Requerido): Indica el tipo de dispositivo conectado al puerto de expansión de Famicom (FCExp). El valor soportado es SIFC_NONE (0) si no hay nada conectado.
  • binary (Booleano Opcional): Indica si la sección del registro de entradas está en formato binario (1 para binario, 0 o ausente para texto).
  • length (Opcional): El número de cuadros (frames) en el registro de entradas. Si está presente y es >= 0, el registro termina después de este número de entradas.

Otras claves importantes incluyen:

  • romFilename (Requerido): El nombre del archivo ROM del juego.
  • comment (Opcional): Un campo de texto libre para notas. Convencionalmente, se usa para indicar el autor (comment author NombreAutor) o cualquier otra información relevante.
  • subtitle (Opcional): Mensajes que se pueden mostrar en pantalla durante la reproducción en cuadros específicos. Convencionalmente, subtitle [número de cuadro] [mensaje].
  • guid (Requerido): El Identificador Único Global de la película, generado al crearla.
  • romChecksum (Requerido): Un checksum (hash MD5 codificado en base64) de la ROM utilizada. Asegura que se está usando la ROM correcta para la reproducción.
  • savestate (Opcional): Contiene un blob (paquete de datos) de un estado de guardado de FCEUX si la grabación no empezó desde el encendido del sistema.

La cabecera proporciona toda la metadata necesaria para que el emulador entienda la configuración y el contexto de la grabación.

El Registro de Entradas (Input Log)

Esta sección contiene la información cuadro a cuadro sobre las entradas del jugador. Puede estar en formato de texto plano o binario, dependiendo del valor de la clave 'binary' en la cabecera. El registro de entradas comienza con un carácter de barra vertical (|).

Formato de Texto (Predeterminado):

En este formato, cada cuadro se representa por una línea de texto que comienza y termina con una barra vertical (|). Los campos dentro de cada línea representan, en orden: comandos, port0, port1, port2.

What is the FM2 file format?
FM2 file format description It is text based by default; allowing easy movie editing/splicing. An imbedded GUID so FCEUX can tell if a savestate belongs to a particular movie file. Movies recorded from Start (Power-on) no longer have a redundant savestate.
  • commands: Un número entero que es un campo de bits indicando estados misceláneos. Los valores posibles (sumados si hay varios activos) son: 1 (Soft Reset), 2 (Hard Reset/Power), 4 (FDS Disk Insert), 8 (FDS Disk Select), 16 (VS Insert Coin).
  • port0 / port1: La representación de las entradas para cada puerto, dependiendo del dispositivo configurado en la cabecera.
    • SI_GAMEPAD: Una cadena de ocho caracteres. Cada posición corresponde a un botón (convencionalmente: R, L, D, U, T, S, B, A). Un espacio o '.' significa que el botón no está presionado, cualquier otro carácter (convencionalmente el propio carácter del botón como 'R', 'A', etc.) indica que está presionado. Ejemplo: |..DUTSBA| significa Abajo, Arriba, Start, Select, B, A presionados.
    • SI_ZAPPER: Representado como XXX YYY B Q Z. XXX es la posición X del ratón, YYY la posición Y, B es 1 si el botón del ratón está presionado (0 si no), Q y Z son valores internos del emulador para la Zapper.
    • SIFC_NONE: El campo está vacío.
  • port2: La representación de las entradas para el puerto de expansión, dependiendo del dispositivo configurado (generalmente vacío para SIFC_NONE).

Si se usa el periférico Four Score (fourscore en la cabecera es 1), los campos port0 y port1 se ignoran. La línea de texto tendrá el formato: |commands player1 player2 player3 player4 port2|. Cada campo de jugador (player1 a player4) es una cadena de ocho caracteres como en el caso de SI_GAMEPAD, representando las entradas de cada gamepad conectado al Four Score.

Formato Binario:

Si la clave 'binary' en la cabecera es 1, el registro de entradas es una secuencia de datos binarios. Comienza con una barra vertical (|). Cada cuadro es un bloque de datos de longitud fija. El primer byte de cada bloque representa el campo de bits de 'commands'.

  • commands (1 byte): Bits 0-4 corresponden a Soft Reset, Hard Reset, FDS Insert, FDS Select, VS Insert Coin, respectivamente. Un bit a 1 indica que el comando está activo.
  • SI_GAMEPAD (1 byte adicional): Un byte donde cada bit representa el estado de un botón (bit 0=A, bit 1=B, bit 2=Select, bit 3=Start, bit 4=Up, bit 5=Down, bit 6=Left, bit 7=Right). Bit a 1 = presionado.
  • SI_ZAPPER (12 bytes adicionales): Byte 1 (pos X), Byte 2 (pos Y), Byte 3 (botón presionado 0/1), Byte 4 (valor interno Q), Bytes 5-12 (uint64, valor interno Z).
  • SIFC_NONE (0 bytes adicionales): No se añaden bytes para este puerto si está configurado como None.

Si se usa Four Score, se añaden 4 bytes al registro de cada cuadro. Cada uno de estos bytes representa las entradas de un gamepad (jugador 1 a 4), utilizando el mismo mapeo de bits que el SI_GAMEPAD.

El registro de entradas termina al final del archivo (EOF) a menos que se especifique una longitud explícita con la clave 'length' en la cabecera.

¿Por qué es útil el formato FM2?

La utilidad principal del formato FM2 radica en su capacidad para reproducir partidas de forma perfecta e idéntica cada vez. Esto es invaluable para:

  • Tool-Assisted Speedruns (TAS): Permite a los jugadores optimizar cada movimiento, probar estrategias y crear partidas que serían imposibles para un humano en tiempo real. La edición de texto y la precisión cuadro a cuadro son esenciales aquí.
  • Compartir Grabaciones de Partida: En lugar de compartir archivos de video grandes y que no permiten la interacción, puedes compartir el archivo FM2. Otros usuarios pueden cargar el archivo en FCEUX con la ROM correspondiente y ver la partida reproducirse en tiempo real, o incluso tomar el control en cualquier momento.
  • Depuración y Análisis: Los desarrolladores o jugadores avanzados pueden analizar las entradas exactas que llevaron a un determinado comportamiento en el juego.
  • Creación de Demos: Es una forma eficiente de crear demos de juego que muestren habilidades o secuencias específicas sin necesidad de grabar video tradicional.

La naturaleza basada en inputs garantiza que la reproducción no se vea afectada por el rendimiento del ordenador o diferencias en la configuración gráfica, siempre y cuando se use la misma versión del emulador y la misma ROM.

Tabla Comparativa: FM2 vs. FCM

Para resumir las mejoras y diferencias:

CaracterísticaFormato FCMFormato FM2
Formato PrincipalBinarioTexto (por defecto) o Binario
Edición ManualDifícil (requiere herramientas específicas)Fácil (editor de texto)
Identificador Único (GUID)No
Savestate InicialA menudo redundanteNo necesario para grabaciones desde inicio
Soporte Zapper/PaddleLimitado/menos precisoSoporte explícito y preciso (entrada de ratón)
Tamaño de ArchivoGeneralmente más grande (por savestate inicial)Generalmente más pequeño
FlexibilidadMenorMayor

El formato FM2 representa claramente un avance en cuanto a flexibilidad, precisión y facilidad de uso para la comunidad de emulación y TAS.

Preguntas Frecuentes sobre Archivos FM2

¿Necesito FCEUX para abrir un archivo FM2?
Sí, el formato FM2 es nativo de FCEUX. Necesitas este emulador (o uno compatible que soporte el formato) para reproducir o editar películas FM2.
¿Necesito la ROM del juego para reproducir un FM2?
Absolutamente. El archivo FM2 solo contiene las instrucciones de entrada. El emulador necesita la ROM del juego para ejecutarlo y aplicar esas entradas, recreando la partida.
¿Puedo convertir un archivo FM2 a video (MP4, AVI, etc.)?
Sí. FCEUX y otras herramientas permiten reproducir un archivo FM2 y, al mismo tiempo, capturar la salida de video del emulador para guardarla como un archivo de video convencional.
¿Son los archivos FM2 compatibles entre diferentes versiones de FCEUX?
Generalmente sí, pero la compatibilidad puede variar si hay cambios significativos en la emulación o en el formato. La clave 'emuVersion' en la cabecera ayuda a identificar con qué versión se creó la película, lo que puede ser útil si experimentas problemas de reproducción.
¿Puedo editar un archivo FM2 para cambiar una parte de la partida?
Sí, especialmente si el archivo está en formato de texto. Puedes abrirlo con un editor de texto y modificar, añadir o eliminar líneas de entrada (cuadros). Sin embargo, esto requiere entender la estructura del input log.
¿Un archivo FM2 graba sonido?
No, el archivo FM2 solo graba las entradas del jugador y ciertos eventos del sistema. El sonido se genera en tiempo real por el emulador al procesar la ROM y las entradas. Si conviertes el FM2 a video, el sonido se incluirá en el archivo de video.

En conclusión, el formato de archivo FM2 es una herramienta poderosa y flexible para capturar y reproducir partidas de NES/Famicom con una precisión inigualable. Su diseño basado en texto y su registro detallado de inputs lo hacen indispensable para la comunidad de Tool-Assisted Speedruns y para cualquiera que desee compartir grabaciones de juego reproducibles y editables. Entender su estructura, compuesta por una cabecera con metadata y un registro de entradas cuadro a cuadro, es clave para aprovechar al máximo las capacidades de emuladores como FCEUX.

Si quieres conocer otros artículos parecidos a Entendiendo el Formato de Archivo FM2 puedes visitar la categoría Radio.

Subir