Changes
This is a description of the VID format used for [[SymPlay]] in [[SymbOS]].
<pre>
;### 512 byte main header
movinfbeg
;*** general
movinfide db "SymVid10" ;identifier
movinfflg db 0 ;flag field; if one flag is set, the regarding information is given in a 128byte header in each single frame,
;if one flag is not set, the regarding information is given in this main header or nowhere;
;if this byte is 0, all frames do not contain an additional header but only the screen data
;0 (+1) -> size *** NOT SUPPORTED ***
;1 (+2) -> number of colours (mode 0/1/2) *** NOT SUPPORTED ***
;2 (+4) -> colour definition *** IGNORED ***
;3 (+8) -> key controls
;4(+16) -> subtitles
movinfcrn db 0 ;crunch type (0=frames are not crunched) *** MUST BE 0 ***
movinffps db 0 ;frames per second (1-100)
movinflen ds 3 ;total number of frames (24bit); the total number of seconds must not be above 65535
;*** frame specific
movinfxln dw 0 ;frame width (only valid, if movinfdyn[bit0]==0)
movinfyln dw 0 ;frame height (only valid, if movinfdyn[bit0]==0)
movinfmod db 0 ;screen mode (only valid, if movinfdyn[bit1]==0) [1=4colours, 7=16colours] *** MUST BE 1 ***
movinfcol ds 2*16 ;colour table -> 16 x 12bit cpc plus colours (only valid, if movinfdyn[bit2]==0)*** IGNORED ***
movinfsiz dw 0 ;size of each frame in bytes without header (only valid, if movinfcrn==0);
;total size with optional header MUST be divideable by 512!
;*** subtitles
movtitnum db 0 ;number of presented languages (1-8; 0=no subtitles)
movtitdat ds 8*16 ;8 x name (16 bytes, 0=terminator) of the language with ID 0-7
movtitnam ds 32 ;movie name (terminated by 0)
movtitinf ds 32 ;additional information (terminated by 0)
movinfenc db 0 ;encoding type (0=CPC, 1=MSX)
movinfend ds 512-movinfend+movinfbeg
;### 128 byte frame header
frminfbeg
frminfxln dw 0 ;frame width (only valid, if movinfdyn[bit0]==1)
frminfyln dw 0 ;frame height (only valid, if movinfdyn[bit0]==1)
frminfmod db 0 ;screen mode (only valid, if movinfdyn[bit1]==1)
frminfcol ds 2*16 ;colour table -> 16 x 12bit cpc plus colours (only valid, if movinfdyn[bit2]==1)
frminfsiz dw 0 ;size of this frame in bytes without header (only valid, if movinfcrn!=0)
frminfact ds 4 ;byte0=action -> 0=continue playing, 1=stop movie here (byte1=reason), 2=jump to frame [byte1-3]
frmkeynum db 0 ;number of possible keys (0-8)
frmkeyfrm ds 8*4 ;keycode (1byte) + destination frame (24bit)
frmtitact db 0 ;0=don't change last subtitle, 1=delete last subtitle
frmtitdat ds 128-frmtitdat+frminfbeg ;subtitle data (maximum is about 50 bytes)
;-> 1 byte=text length (0=data terminator), 1 byte=language id, x bytes=text
</pre>
<pre>
;### 512 byte main header
movinfbeg
;*** general
movinfide db "SymVid10" ;identifier
movinfflg db 0 ;flag field; if one flag is set, the regarding information is given in a 128byte header in each single frame,
;if one flag is not set, the regarding information is given in this main header or nowhere;
;if this byte is 0, all frames do not contain an additional header but only the screen data
;0 (+1) -> size *** NOT SUPPORTED ***
;1 (+2) -> number of colours (mode 0/1/2) *** NOT SUPPORTED ***
;2 (+4) -> colour definition *** IGNORED ***
;3 (+8) -> key controls
;4(+16) -> subtitles
movinfcrn db 0 ;crunch type (0=frames are not crunched) *** MUST BE 0 ***
movinffps db 0 ;frames per second (1-100)
movinflen ds 3 ;total number of frames (24bit); the total number of seconds must not be above 65535
;*** frame specific
movinfxln dw 0 ;frame width (only valid, if movinfdyn[bit0]==0)
movinfyln dw 0 ;frame height (only valid, if movinfdyn[bit0]==0)
movinfmod db 0 ;screen mode (only valid, if movinfdyn[bit1]==0) [1=4colours, 7=16colours] *** MUST BE 1 ***
movinfcol ds 2*16 ;colour table -> 16 x 12bit cpc plus colours (only valid, if movinfdyn[bit2]==0)*** IGNORED ***
movinfsiz dw 0 ;size of each frame in bytes without header (only valid, if movinfcrn==0);
;total size with optional header MUST be divideable by 512!
;*** subtitles
movtitnum db 0 ;number of presented languages (1-8; 0=no subtitles)
movtitdat ds 8*16 ;8 x name (16 bytes, 0=terminator) of the language with ID 0-7
movtitnam ds 32 ;movie name (terminated by 0)
movtitinf ds 32 ;additional information (terminated by 0)
movinfenc db 0 ;encoding type (0=CPC, 1=MSX)
movinfend ds 512-movinfend+movinfbeg
;### 128 byte frame header
frminfbeg
frminfxln dw 0 ;frame width (only valid, if movinfdyn[bit0]==1)
frminfyln dw 0 ;frame height (only valid, if movinfdyn[bit0]==1)
frminfmod db 0 ;screen mode (only valid, if movinfdyn[bit1]==1)
frminfcol ds 2*16 ;colour table -> 16 x 12bit cpc plus colours (only valid, if movinfdyn[bit2]==1)
frminfsiz dw 0 ;size of this frame in bytes without header (only valid, if movinfcrn!=0)
frminfact ds 4 ;byte0=action -> 0=continue playing, 1=stop movie here (byte1=reason), 2=jump to frame [byte1-3]
frmkeynum db 0 ;number of possible keys (0-8)
frmkeyfrm ds 8*4 ;keycode (1byte) + destination frame (24bit)
frmtitact db 0 ;0=don't change last subtitle, 1=delete last subtitle
frmtitdat ds 128-frmtitdat+frminfbeg ;subtitle data (maximum is about 50 bytes)
;-> 1 byte=text length (0=data terminator), 1 byte=language id, x bytes=text
</pre>