<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multimedia.cx/index.php?action=history&amp;feed=atom&amp;title=VIP_Video</id>
	<title>VIP Video - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multimedia.cx/index.php?action=history&amp;feed=atom&amp;title=VIP_Video"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=VIP_Video&amp;action=history"/>
	<updated>2026-04-10T09:36:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=VIP_Video&amp;diff=15838&amp;oldid=prev</id>
		<title>Kostya: fill description</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=VIP_Video&amp;diff=15838&amp;oldid=prev"/>
		<updated>2024-12-18T10:41:18Z</updated>

		<summary type="html">&lt;p&gt;fill description&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This is a format used in PC port of &amp;lt;em&amp;gt;Zorton Brothers&amp;lt;/em&amp;gt; game known as [https://www.mobygames.com/game/14400/los-justicieros/ Los Justicieros]. It employs a mix of RLE and 2-colour vector quantisation in paletted format.&lt;br /&gt;
&lt;br /&gt;
File header (all values are little-endian):&lt;br /&gt;
  5 bytes - &amp;quot;VIP01&amp;quot;&lt;br /&gt;
  2 bytes - number of chunks&lt;br /&gt;
  2 bytes - video width&lt;br /&gt;
  2 bytes - video height&lt;br /&gt;
  4 bytes - always zero?&lt;br /&gt;
  2 bytes - always 125, probably fps*10&lt;br /&gt;
  2 bytes - unknown&lt;br /&gt;
  12 bytes - zeroes?&lt;br /&gt;
&lt;br /&gt;
The rest of file is a sequence of chunks with 8-byte header:&lt;br /&gt;
  2 bytes - chunk size&lt;br /&gt;
  1 byte  - duration&lt;br /&gt;
  1 byte  - chunk type&lt;br /&gt;
  1 byte  - unknown&lt;br /&gt;
  1 byte  - fade step&lt;br /&gt;
  2 bytes - 0xC060&lt;br /&gt;
&lt;br /&gt;
Known chunk types are:&lt;br /&gt;
* 0 - skip frame&lt;br /&gt;
* 2 - VGA palette update (first byte - start index, second byte - number of colours to update, then RGB triplets and usually two unknown bytes at the end)&lt;br /&gt;
* 3 - raw frame&lt;br /&gt;
* 4 - intra RLE frame&lt;br /&gt;
* 5 - inter RLE frame&lt;br /&gt;
* 6 - RLE+2-colour 4x4 tiles&lt;br /&gt;
* 7 - 8-bit PCM audio&lt;br /&gt;
* 9 - ignored&lt;br /&gt;
* 11 - 4x2 2-colour tile frame&lt;br /&gt;
* 12 - black frame&lt;br /&gt;
* 13 - fade out (with new palette in the same format as chunk type 2)&lt;br /&gt;
* 14 - fade out&lt;br /&gt;
&lt;br /&gt;
== Video compression ==&lt;br /&gt;
=== Intra RLE (mode 4) ===&lt;br /&gt;
&lt;br /&gt;
RLE operation is one byte, top bit is operation kind (copy/run), low 7 bits are operation length minus one.&lt;br /&gt;
&lt;br /&gt;
=== Inter RLE (mode 5) ===&lt;br /&gt;
&lt;br /&gt;
In this mode frame is split into strips with the changed data and only changed pixels in the strips are coded.&lt;br /&gt;
&lt;br /&gt;
  16 bits - ignored, probably width&lt;br /&gt;
  16 bits - number of strips&lt;br /&gt;
  for each strip {&lt;br /&gt;
    16 bits - number of lines to skip after the previous strip&lt;br /&gt;
    16 bits - strip height&lt;br /&gt;
    for each line {&lt;br /&gt;
      8 bits - number of operations&lt;br /&gt;
      for each operation {&lt;br /&gt;
        8 bits - number of pixels to skip&lt;br /&gt;
        8 bits - RLE opcode (same as mode 4)&lt;br /&gt;
      }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== RLE plus 4x4 tiles (mode 6) ===&lt;br /&gt;
&lt;br /&gt;
This mode resembles mode 5 except that instead of individual pixels whole 4x4 tiles are painted. I.e. &amp;quot;copy 3&amp;quot; operation means painting three tiles while &amp;quot;run of 5 tiles&amp;quot; means reading one tile definition and painting it five times.&lt;br /&gt;
&lt;br /&gt;
Each tile is coded as 16-bit mask and two colour indices.&lt;br /&gt;
&lt;br /&gt;
=== 4x2 tiles (mode 11) ===&lt;br /&gt;
&lt;br /&gt;
Frame can be coded in two modes: intra (all tiles are coded explicitly) and inter (bitmask in the beginning tells which tiles to update). The very first byte signals inter mode if non-zero. Then optional update bitmap follows (one bit per tile, MSB first) and actual tile data.&lt;br /&gt;
&lt;br /&gt;
Tiles are coded as two colour indices and 8-bit mask telling which colour to use.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Formats]]&lt;/div&gt;</summary>
		<author><name>Kostya</name></author>
	</entry>
</feed>