OBD:PSpc: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (deleted line)
(rephrased)
Line 9: Line 9:
{{OBDtr| 0x00 | res_id  |FF0000| 01 39 00 00 | 57    | 00057-level_3_part.PSpc }}
{{OBDtr| 0x00 | res_id  |FF0000| 01 39 00 00 | 57    | 00057-level_3_part.PSpc }}
{{OBDtr| 0x04 | lev_id  |FFFF00| 01 00 00 06 | 3    | level 3 }}
{{OBDtr| 0x04 | lev_id  |FFFF00| 01 00 00 06 | 3    | level 3 }}
{{OBDtr| 0x08 | int16    |FFC8C8| 00 00      | 0    | x-coordinate of the first point on the texture }}
{{OBDtr| 0x08 | int16    |FFC8C8| 00 00      | 0    | x-coordinate of top left corner of top left rectangle }}
{{OBDtr| ...  | ...      |FFC8C8| ...        | ...  | ... }}
{{OBDtr| ...  | ...      |FFC8C8| ...        | ...  | ... }}
{{OBDtr| 0x4E | int16    |FFC8C8| 00 00      | 0    | y-coordinate of the last point on the texture }}
{{OBDtr| 0x4E | int16    |FFC8C8| 00 00      | 0    | y-coordinate of bottom right corner of bottom right rectangle }}
{{OBDtr| 0x50 | link    |FFFFC8| 01 38 00 00 | 0    | link to 00056-h_03.[[OBD:TXMP|TXMP]] }}
{{OBDtr| 0x50 | link    |FFFFC8| 01 38 00 00 | 0    | link to 00056-h_03.[[OBD:TXMP|TXMP]] }}
{{OBDtr| 0x54 | char[12] |C8FFC8| AD DE      | dead  | unused }}
{{OBDtr| 0x54 | char[12] |C8FFC8| AD DE      | dead  | unused }}
Line 17: Line 17:




;What's stored
;What is stored
:There are 9 rectangles stored in PSpc: 4 corners, 4 sides and one interior rectangle. Typically all 9 are used (to draw buttons for example) or only one is used (the top left corner, to draw checkboxes for example). There are cases where the top left corner and the interior rectangle are present which indicates that the code can choose what part to draw.
:There are 9 rectangles stored in PSpc: 4 corners, 4 sides and one interior rectangle. Typically all 9 are used (to draw buttons for example) or only one is used (the top left corner, to draw checkboxes for example). There are cases where the top left corner and the interior rectangle are present which indicates that the code can choose what part to draw.
:The reason for using 9 rectangles is to allow drawing of buttons (and anything else that has a border) in various sizes without distorting the image.
:The reason for using 9 rectangles is to allow drawing of buttons (and anything else that has a border) in various sizes without distorting the image.
Line 27: Line 27:


;How it is stored
;How it is stored
:Each 2 int16 fields makes a texture coordinate. The first 9 texture are coordinates are the top left coordinate of each of the 9 rectangles and the next 9 coordinates are the bottom right coordinate of each of the 9 rectangles. When both coordinates are 0 then the rectangle is not used. The order of the coordinates is top bottom and left to right.
:Every 2 int16 fields make a texture coordinate. The former 9 texture coordinates (18 bytes) are the top left corners of the 9 rectangles. The latter 9 coordinates are the bottom right corners of the 9 rectangles. When both coordinates are 0 then the rectangle is not used. The order of the coordinates is top to bottom and left to right. The natural order of the 9 rectangles is: top left, top, top right, left, center, right, bottom left, bottom, bottom right.




{{OBD_File_Footer | type=PSpc | prev=PNTA | next=PSpL | name=Part Specification | family=Message}}
{{OBD_File_Footer | type=PSpc | prev=PNTA | next=PSpL | name=Part Specification | family=Message}}

Revision as of 20:43, 24 May 2008

ONI BINARY DATA
PNTA << Other file types >> PSpL
PSpc : Part Specification
switch to XML:PSpc page
Overview @ Oni Stuff
OBD.png


Pspc all.gif


Offset Type Raw Hex Value Description
0x00 res_id 01 39 00 00 57 00057-level_3_part.PSpc
0x04 lev_id 01 00 00 06 3 level 3
0x08 int16 00 00 0 x-coordinate of top left corner of top left rectangle
... ... ... ... ...
0x4E int16 00 00 0 y-coordinate of bottom right corner of bottom right rectangle
0x50 link 01 38 00 00 0 link to 00056-h_03.TXMP
0x54 char[12] AD DE dead unused


What is stored
There are 9 rectangles stored in PSpc: 4 corners, 4 sides and one interior rectangle. Typically all 9 are used (to draw buttons for example) or only one is used (the top left corner, to draw checkboxes for example). There are cases where the top left corner and the interior rectangle are present which indicates that the code can choose what part to draw.
The reason for using 9 rectangles is to allow drawing of buttons (and anything else that has a border) in various sizes without distorting the image.
  • the corners are never rescaled
  • horizontal sides can be stretched horizontally
  • vertical sides can be stretched vertically
  • the interior can be stretched both ways
Of course that means that the sides and the interior must be "special" images that can be stretched without visible distortion.
How it is stored
Every 2 int16 fields make a texture coordinate. The former 9 texture coordinates (18 bytes) are the top left corners of the 9 rectangles. The latter 9 coordinates are the bottom right corners of the 9 rectangles. When both coordinates are 0 then the rectangle is not used. The order of the coordinates is top to bottom and left to right. The natural order of the 9 rectangles is: top left, top, top right, left, center, right, bottom left, bottom, bottom right.


ONI BINARY DATA
PNTA << Other file types >> PSpL
PSpc : Part Specification
Message file