put d2k mod stuff into it's own branch
This commit is contained in:
99
doc/d2k formatspecs.txt
Normal file
99
doc/d2k formatspecs.txt
Normal file
@@ -0,0 +1,99 @@
|
||||
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...
|
||||
Reference in New Issue
Block a user