SpaceCadetPinball/Doc/.dat file format.txt

133 lines
4.3 KiB
Plaintext

+-----------------------------------------------------+
| 3D Pinball for Windows ("PARTOUT") .DAT file format |
| AdrienTD |
+-----------------------------------------------------+
//-- Header --//
+0x00: File signature BYTE*21
+0x15: App name BYTE*50
+0x47: Description BYTE*100
+0xAB: File size DWORD
+0xAF: Number of files/groups WORD
+0xB1: Size of body DWORD
+0xB5: Unknown (0) WORD
In 3D Pinball, the file signature is "PARTOUT(4.0)RESOURCE". The rest is
filled with 0.
//-- Body --//
The body is constitued of groups. Every group begins with a byte that tells
how many entries are in the group.
Every entry begins with a byte that specifies the type of the entry. A DWORD that
tells the size of the coming data follows the byte. Then there's some data for the
entry. However, if the type is 0, the type byte is followed by a short value,
and that's all.
Existing types:
Type Meaning/comments
---------------------------------------------------
0 ?, does not have the 32bits size value, but a 16bits value (see above).
1 8 bpp bitmap
3 Group name
5 Palette (1 color is 1 DWORD, only present 1 time in PINBALL.DAT
with a data size of 1024 bytes for 256 colors. Some colors are 0
because their indexes are reserved by Windows.)
9 String (content)
10 Array of 16bits integer values
11 Array of 32bits floating point values (collision box, ...)
12 16 bpp bitmap (zMap)
//-- 8bpp bitmap data header --//
+0: Resolution BYTE 0=640x480, 1=800x600, 2=1024x768, -1=Load in all resolutions
+1: Width WORD
+3: Height WORD
+5: X position WORD
+7 Y position WORD
+9: Size of bitmap DWORD
+13: Flags BYTE bit0=Raw bmp align; bit1=DibBitmap, raw when 0; bit2=Spliced bitmap (aka skipline), combines bmp and zMap in RLE-like way
+14: Bitmap data BYTE*(DWORD@+9)
//-- 16bpp zMap data header --//
+0: Width WORD
+2: Height WORD
+4: Pitch/2 WORD
+6: Unknown (0) DWORD
+10: Unknown (0) WORD
+12: Unknown (80) WORD
+14: Bitmap data BYTE*(DWORD@+9)
//-- 16bpp zMap data header full tilt --//
+0: Resolution BYTE 0=640x480, 1=800x600, 2=1024x768, -1=Load in all resolutions
+1: Width WORD
+3: Height WORD
+5: Pitch/2 WORD
+7: Unknown (0) DWORD
+11: Unknown (0) WORD
+13: Unknown (80) WORD
+15: Bitmap data BYTE*(DWORD@+9)
//-- Pinball 3D remarkable groups --//
-- table_size
Entry type 10 contains 2 16-bit integers: first is width, second is height.
-- table_objects
In entry type 10, the first integer is unknown, but then comes a series of
16-bits integer pairs. Every pair represents an object of the table. The
first integer is the type of object, and the second is the number of
a group/resource in this data file.
Types of object (3D Pinball Space Cadet for Windows):
1000: ?
1001: Plunger
1002: Light (lite###)
1003: Left flipper
1004: Right flipper
1005: Bumper
1006: Yellow target
1007: Drain (no bmp)
1010: ? (no bmp)
1011: Bloc (dot between the flippers)
1012: kout (no bmp) (?)
1013: Gate
1014: Kicker
1015: Roll
1016: One way (no bmp) (?)
1017: Sink (no bmp) (?)
1018: Flag
1019: Red target
1020: Roll (the green circle that makes a weird sound when rolling on it)
1021: Ramp (no bmp)
1022: Ramp hole (no bmp)
1023: Demo (no bmp)
1024: Trip (no bmp)
1026: Lights (no bmp, list?)
1028: Bumpers list (one for attack, one for launch)
1029: kout (no bmp) (?, similar to 1012?)
1030: Fuel bargraph (list?)
1031: Sound
1033: Text box (score, ball counter, player number)
//-- Information --//
There's an article of the format at http://rewiki.regengedanken.de/.
I haven't read it completely, but some informations helped me a bit.
Another thing: There's nearly nothing about hacking the game on the web (even
though the Space Cadet game bundled with Windows is very popular).
What I've only seen when doing a (Google) web search is the 'hidden test'
cheat code. [as of 2017 or even less]
//-- Contact --//
Any questions? Contact me at [see my GitHub profile @AdrienTD for contacts] .
AdrienTD :)