View Page Source

Back to Page
Revision 20 (current)
Edited by feos on 7/25/2015 2:09 PM
{{vmv}} is the movie capture format of [OtherEmulators|VirtuaNES], a NES emulator.[#1]

[1] The original VisualBoyAdvance, a GBA emulator, also had its movie capture format named {{vmv}}, but it required a supporting {{vm0}} file to cooperate. Since it did not meet the requirements at this site, it was not supported.

>All descriptions below refer only to the movie capture format of VirtuaNES.

!! VMV file format description

Some comments have been translated from Japanese.

This is the header of VMV files of VirtuaNES versions 0.93.%%%
(0.60 … 0.92 are mostly the same though.)

 000 12-byte signature: "VirtuaNES MV"
 00C 2-byte little-endian integer: movie version 0x0400
 00E 2-byte little-endian integer: record version
 010 4-byte flags (control byte):
   bit 7: disable rerecording
   bit 6: 1=reset-based, 0=savestate-based (movie version <= 0x300 is always savestate-based)
   bit 3: controller 4 in use
   bit 2: controller 3 in use
   bit 1: controller 2 in use
   bit 0: controller 1 in use
   For the other control bytes, if a key from 1P to 4P (whichever one) is entirely ON, the following 4 bytes becomes the controller data.
   Other bits: reserved, set to 0
 014 DWORD   Ext0;                   // ROM:program CRC  FDS:program ID
 018 WORD    Ext1;                   // ROM:unused,0     FDS:maker ID
 01A WORD    Ext2;                   // ROM:unused,0     FDS:disk no.
 01C 4-byte little-endian integer: rerecord count
 020 BYTE    RenderMethod
    0=POST_ALL,1=PRE_ALL
    2=POST_RENDER,3=PRE_RENDER
    4=TILE_RENDER
 021 BYTE    IRQtype                 // IRQ type
 022 BYTE    FrameIRQ                // FrameIRQ not allowed
 023 1-byte flag: 0=NTSC (60 Hz), 1=PAL (50 Hz)
 024 8-bytes: reserved, set to 0
 02C 4-byte little-endian integer: save state start offset
 030 4-byte little-endian integer: save state end offset
 034 4-byte little-endian integer: movie data offset
 038 4-byte little-endian integer: movie frame count
 03C 4-byte little-endian integer: CRC (CRC excluding this data(to prevent cheating) )
Header size: 64 bytes.

If the movie version is < 0x400, or the "from-reset" flag is not
set, a savestate is loaded from the movie.
Otherwise, the savestate is ignored.

Each frame consists of 1 or more bytes. Controller 1 takes 1 byte, controller 2 takes 1 byte, controller 3 takes 1 byte, and controller 4 takes 1 byte. If all four exist, the frame is 4 bytes. For example, if the movie only has controller 1 data, a frame is 1 byte.

The bit values in hex for the buttons are as follows.

 01 A
 02 B
 04 Select
 08 Start
 10 Up
 20 Down
 40 Left
 80 Right

----
See also: [EmulatorResources], [FAQ|frequently asked questions]