99 lines
4.0 KiB
Plaintext
99 lines
4.0 KiB
Plaintext
Dune 2000 File Formats Specs. Specially for Programmers, who want make editor(s) for Dune 2000
|
||
|
||
Date: June 8, 2004
|
||
|
||
Author: Roman "Siberian GRemlin" Lotchenov
|
||
E-Mail #1: slos@scn.ru
|
||
E-Mail #2: SibGRem@rambler.ru
|
||
*****************************************************************************
|
||
Graphics Resources - .R8 and .R16
|
||
|
||
ImageHeader: Record
|
||
ID: Byte; //0 - no data, 1 - picture with pallete,
|
||
//2 - picture with current pallete.
|
||
Width: LongInt; //Width of picture
|
||
Height: LongInt; //Height of picture
|
||
X_Offset: LongInt; //Pictures offset on an axis X (from left border(edge) of virtual frame)
|
||
Y_Offset: LongInt; //Pictures offset on an axis Y (from top border(edge) of virtual frame)
|
||
ImageHandle: LongInt; //Handle to picture (in memory), 0 - image not have picture
|
||
PaletteHandle: LongInt; //Handle to pallete (in memory), 0 - image not have pallete,
|
||
//and using pallete from palette.bin filr. format - 256*RGB
|
||
Bpp: Byte; //Bpp of picture
|
||
FrameHeight: Byte; //Height of virtual frame, in which is displayed the picture
|
||
FrameWidth: Byte; //Width of virtual frame, in which is displayed the picture
|
||
Align: Byte; //Alignment on even border
|
||
End;
|
||
|
||
There is a matrix(array) of pixels by the size further:
|
||
For ImageHeader.Bpp = 8: ImageHeader.Width*ImageHeader.Height
|
||
For ImageHeader.Bpp = 16: ImageHeader.Width*ImageHeader.Height*2,
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||
|
||
If PaletteOffset <> 0 and ImageHeader.ID = 1, then there is Pallete Header and Pallete
|
||
|
||
PalHeader: Record
|
||
Memory: LongInt; //The memory under a palette was allocated (There is no importance in a file)
|
||
PalHandle:LongInt; //Handle to colors array (in memory), if 0 - then game showe error message
|
||
End;
|
||
|
||
Palette: array[0..511] of byte; //Pallete: 256 records of colors
|
||
//Color record: 2 bytes - 5 bit red component, 6 bit green component,
|
||
//5 bit blue component
|
||
|
||
Warning: In files UI_ENG.R16 and UI_ENG.R8, cuted ImageHeader.ID
|
||
Warning: Files UIBB.R8 and UIBB.R16 is only picture(pixels array) without any headers. Width=640, Height=400
|
||
|
||
*****************************************************************************
|
||
Sound Resources - [Dune2000 Folder]\Data\GameSFX\SOUND.RS
|
||
|
||
HeaderSize: LongInt; //Size of RSoundHeader
|
||
RSoundBody: array[0..56] of record
|
||
FileName: Char[0..12]; //File name
|
||
Zero: Byte; //Always $00
|
||
FileOffset: DWord; //Offfset of WAVE
|
||
FileSize: DWord; //Size of Wave file
|
||
end;
|
||
|
||
*****************************************************************************
|
||
Text Resources - [Dune2000 Folder]\Data\UI_Data\TEXT.UIB
|
||
|
||
STUIBHeader: record
|
||
Strs: DWord; //Count of strings
|
||
end;
|
||
|
||
STUIBBody: array[0..STUIHeader.Strs] of record
|
||
NameCount: Word; //Count of symbols(chars) in string name
|
||
StrName: array[0..STUIBBody.NameCount] of char; //String name
|
||
StrCount: word; //Count of symbols(chars) in string
|
||
Str: array[0..STUIBBody.StrCount] of char; //String
|
||
end;
|
||
|
||
*****************************************************************************
|
||
Fonts Resources - .FNT and .FPL
|
||
|
||
FontHeader of record
|
||
FontLoadedFlag: byte; //Must be $00
|
||
SpaceSize: byte; //Size of space (in pixels)
|
||
FirstSymbol: byte; //Code of first symbol in font
|
||
Interval: byte; //Size of interval between symbols (in pixels)
|
||
MaxHeight: byte; //Maximum height of symbol
|
||
Reserve: array[0..2] of byte; //not used
|
||
SymbolsHandle array[0..255] of LongInt; //Handle table to symbols in memory (There is no importance in a file)
|
||
end;
|
||
|
||
Symbols: array[0..255] of record
|
||
Width: LongInt; //Width of symbol
|
||
Heigth: LongInt; //Heigth of symvol
|
||
Pixels: array[1..(Symbols.Width*Symbols.Heigth)] of byte;
|
||
end;
|
||
|
||
Warning: FONTCOL.FNT using pallete from FONTCOL.FPL, Format - 256*RGBF, F=Junk!
|
||
Warning: [Dune2000 Folder]\Data\BIN\Font.BIN - is sybmol code(index) table(map)
|
||
|
||
*****************************************************************************
|
||
Thanks to:
|
||
Michail Beschetnov for begins in R8 file format description
|
||
Magic Team for help with R8 file format and for Dune 2000 Image Converter
|
||
be-lam0r for help with FNT, R16 and R8
|
||
-=*************=-
|
||
Please sorry for my english... |