Editing Graphic Image Map (GIM)
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 2: | Line 2: | ||
=Description= | =Description= | ||
'''G'''raphic '''I'''mage '''M'''ap ? ('''GIM''') is an image format | '''G'''raphic '''I'''mage '''M'''ap ? ('''GIM''') is an image format, allows for tenths of different storage settings and by combining settings results in hundreds (or thousands) of different GIM files that are structurally different, to simplify concepts people is naming this different GIM files as "GIM formats" but strictly speaking the GIM format is always the same, the amount of GIM formats used in PlayStation consoles is limited though (restricted by the graphic enviroment, libraries, etc...). GIM files was found used in PSP and PS3 firmwares inside [[Resource Container (RCO)]] files, [[PlayStation 3 Theme (P3T)]] files, etc... See [[GimConv]] and [[Multimedia Formats and Tools#GIM]] | ||
The | The acronym of GIM used in this wiki ('''G'''raphic '''I'''mage '''M'''ap) is an speculative unnofficial name based in how the data is stored in the internal GIM structure, if someone finds the official codename somewhere please report back and we will change it <!-- no luck on facebook https://www.facebook.com/hhhhhyuk? --> | ||
=Structure= | =Structure= | ||
*Overview (4 unknown values left, marked in | *Overview (4 unknown values left, marked in red color) | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
Line 17: | Line 17: | ||
00000050 <span style="background:#b49aed;">00 01</span> <span style="background:#FF4444;">00 02</span> <span style="background:#FF4444;">00 00 00 00</span> <span style="background:#CA2691;">00 00 00 30</span> <span style="background:#CA2691;">00 00 00 40</span> ...........0...@ <- Block 0x04 Data | 00000050 <span style="background:#b49aed;">00 01</span> <span style="background:#FF4444;">00 02</span> <span style="background:#FF4444;">00 00 00 00</span> <span style="background:#CA2691;">00 00 00 30</span> <span style="background:#CA2691;">00 00 00 40</span> ...........0...@ <- Block 0x04 Data | ||
00000060 <span style="background:#CA2691;">00 00 00 60</span> <span style="background:#009933;">00 00 00 00</span> <span style="background:#33cc33; color:#ffffff;">00 01</span> <span style="background:#33cc33;">00 01</span> <span style="background:#4dff4d; color:#ffffff;">00 03</span> <span style="background:#4dff4d;">00 01</span> ...`............ <- Block 0x04 Data | 00000060 <span style="background:#CA2691;">00 00 00 60</span> <span style="background:#009933;">00 00 00 00</span> <span style="background:#33cc33; color:#ffffff;">00 01</span> <span style="background:#33cc33;">00 01</span> <span style="background:#4dff4d; color:#ffffff;">00 03</span> <span style="background:#4dff4d;">00 01</span> ...`............ <- Block 0x04 Data | ||
00000070 <span style="background:# | 00000070 <span style="background:#666666; color:#ffffff;">00 00 00 40</span> <span style="background:#aaaaaa;">00 00 00 00 00 00 00 00 00 00 00 00</span> ...@............ <- Block 0x04 Index | ||
00000080 <span style="background:#CA5E24;">CA 5E 11 00 CA 5E 12 00 CA 5E 13 00 CA 5E 14 00</span> Ê^..Ê^..Ê^..Ê^.. <- Block 0x04 Frame | 00000080 <span style="background:#CA5E24;">CA 5E 11 00 CA 5E 12 00 CA 5E 13 00 CA 5E 14 00</span> Ê^..Ê^..Ê^..Ê^.. <- Block 0x04 Frame | ||
00000090 <span style="background:#CA5E24;">CA 5E 21 00 CA 5E 22 00 CA 5E 23 00 CA 5E 24 00</span> Ê^!.Ê^".Ê^#.Ê^$. <- Block 0x04 Frame | 00000090 <span style="background:#CA5E24;">CA 5E 21 00 CA 5E 22 00 CA 5E 23 00 CA 5E 24 00</span> Ê^!.Ê^".Ê^#.Ê^$. <- Block 0x04 Frame | ||
Line 25: | Line 25: | ||
000000D0 <span style="background:#ddbb99;">74 6F 72 00</span> <span style="background:#eeccaa;">53 75 6E 20 41 70 72 20 31 35 20 30</span> tor.Sun Apr 15 0 <- Block 0xFF Strings | 000000D0 <span style="background:#ddbb99;">74 6F 72 00</span> <span style="background:#eeccaa;">53 75 6E 20 41 70 72 20 31 35 20 30</span> tor.Sun Apr 15 0 <- Block 0xFF Strings | ||
000000E0 <span style="background:#eeccaa;">31 3A 32 35 3A 30 32 20 32 30 31 38 00</span> <span style="background:#ffddbb;">47 69 6D</span> 1:25:02 2018.Gim <- Block 0xFF Strings | 000000E0 <span style="background:#eeccaa;">31 3A 32 35 3A 30 32 20 32 30 31 38 00</span> <span style="background:#ffddbb;">47 69 6D</span> 1:25:02 2018.Gim <- Block 0xFF Strings | ||
000000F0 <span style="background:#ffddbb;">43 6F 6E 76 20 31 2E 32 30 68 00</span> <span style="background:# | 000000F0 <span style="background:#ffddbb;">43 6F 6E 76 20 31 2E 32 30 68 00</span> <span style="background:#aaaaaa;">00</span> Conv 1.20h.. <- Block 0xFF Strings | ||
==GIM header== | ==GIM header== | ||
Line 33: | Line 33: | ||
! Offset !! Length !! Example !! Name !! Description !! Notes | ! Offset !! Length !! Example !! Name !! Description !! Notes | ||
|- | |- | ||
| 0x00 || 0x04 || | | 0x00 || 0x04 || 2E 47 49 4D || {{cellcolors|#000000|#ffffff}} '''gim_signature''' || .GIM || | ||
|- | |- | ||
| 0x04 || 0x04 || | | 0x04 || 0x04 || 31 2E 30 30 || {{cellcolors|#000000|#ffffff}} '''gim_version''' || 1.00 || | ||
|- | |- | ||
| 0x08 || 0x04 || | | 0x08 || 0x04 || 00 50 53 50 || {{cellcolors|#000000|#ffffff}} <abbr title="this is named format_style in gimconv.exe with only 3 options available: std, psp, ps3">'''gim_style'''</abbr> || PSP || | ||
|- | |- | ||
| 0x0C || 0x04 || 00 00 00 00 || {{cellcolors|#000000|#ffffff}} '' | | 0x0C || 0x04 || 00 00 00 00 || {{cellcolors|#000000|#ffffff}} <abbr title="Always 0x00 ?">''gim_unk''</abbr> || Unknown || | ||
|} | |} | ||
Line 52: | Line 52: | ||
| 0x02 || 0x02 || 00 00 || {{cellcolors|#FF4444}} <abbr title="block header unknown">''block_unk''</abbr> || 0x00 = ?<br>0x10 = ? || <abbr title="Filling this area with 0xFF doesnt causes any change">Unknown</abbr> | | 0x02 || 0x02 || 00 00 || {{cellcolors|#FF4444}} <abbr title="block header unknown">''block_unk''</abbr> || 0x00 = ?<br>0x10 = ? || <abbr title="Filling this area with 0xFF doesnt causes any change">Unknown</abbr> | ||
|- | |- | ||
| 0x04 || 0x04 || 00 00 | | 0x04 || 0x04 || 00 00 01 0C || {{cellcolors|#ffcc00}} '''block_size''' || Size of this block + children blocks || | ||
|- | |- | ||
| 0x08 || 0x04 || 00 00 00 10 || {{cellcolors|#ffff00}} '''block_header_next''' || Next block relative offset || | | 0x08 || 0x04 || 00 00 00 10 || {{cellcolors|#ffff00}} '''block_header_next''' || Next block relative offset || | ||
Line 62: | Line 62: | ||
===0x02 (Root)=== | ===0x02 (Root)=== | ||
Is the parent of | Empty/unknown. Is the parent of 0x03 and 0x0FF | ||
===0x03 (Picture)=== | ===0x03 (Picture)=== | ||
Is the parent of | Empty/unknown. Is the parent of 0x05 and 0x04 (in this order, the palette goes first) | ||
This block is repeated when using the option '''merge_mode picture''' | |||
===0x04 (Image)=== | ===0x04 (Image)=== | ||
Some of the values on this area are the same than in the GIS file. Also are directly related with the available settings on GimConv.cfg (the configuration file of GimConv.exe) | |||
This block is repeated when using the option '''merge_mode image''' | |||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
Line 84: | Line 84: | ||
! Offset !! Length !! Example !! Name !! Description !! Notes | ! Offset !! Length !! Example !! Name !! Description !! Notes | ||
|- | |- | ||
| 0x00 || 0x02 || 00 30 || {{cellcolors|#11bbee}} '''block_data_lenght''' || Size of the block | | 0x00 || 0x02 || 00 30 || {{cellcolors|#11bbee}} '''block_data_lenght''' || Size of the block header || Indicates the offset of the area located inmediatly after '''frame_count'''<!--modifying this value some bytes up or down "mutilates" the user_data/index areas in a GIM to GIS conversion--> | ||
|- | |- | ||
| 0x02 || 0x02 || 00 00 || {{cellcolors|#FF4444}} <abbr title="block 0x04 and 0x05 unknown 1">''b45_unk1''</abbr> || ? || <abbr title="Filling this area with 0xFF doesnt causes any change">Ignored ?</abbr> | | 0x02 || 0x02 || 00 00 || {{cellcolors|#FF4444}} <abbr title="block 0x04 and 0x05 unknown 1">''b45_unk1''</abbr> || ? || <abbr title="Filling this area with 0xFF doesnt causes any change">Ignored ?</abbr> | ||
Line 96: | Line 96: | ||
| 0x0A || 0x02 || 00 02 || {{cellcolors|#6144c7}} '''height''' || Image/palette height in pixels || Restricted by '''limit_image_height''' in [[GimConv]].cfg<br>'''Height''' in the GIS | | 0x0A || 0x02 || 00 02 || {{cellcolors|#6144c7}} '''height''' || Image/palette height in pixels || Restricted by '''limit_image_height''' in [[GimConv]].cfg<br>'''Height''' in the GIS | ||
|- | |- | ||
| 0x0C || 0x02 || 00 20 || {{cellcolors|#826ad5}} '''bpp_align''' || Image/palette <abbr title=" | | 0x0C || 0x02 || 00 20 || {{cellcolors|#826ad5}} '''bpp_align''' || Image/palette bits per pixel <abbr title="this value is used tto navigate the GIM structure, doesnt represents the color depth of the image, for indexed colors is used as a counter to know how many color ID there are in the palette">alignment</abbr> || | ||
|- | |- | ||
| 0x0E || 0x02 || 00 10 || {{cellcolors|#b49aed}} '''pitch_align''' || Image/palette | | 0x0E || 0x02 || 00 10 || {{cellcolors|#b49aed}} '''pitch_align''' || Image/palette X alignment || '''PitchAlign''' in the GIS | ||
|- | |- | ||
| 0x10 || 0x02 || 00 01 || {{cellcolors|#b49aed}} '''height_align''' || Image/palette | | 0x10 || 0x02 || 00 01 || {{cellcolors|#b49aed}} '''height_align''' || Image/palette Y alignment || '''HeightAlign''' in the GIS | ||
|- | |- | ||
| 0x12 || 0x02 || 00 02 || {{cellcolors|#FF4444}} <abbr title="block 0x04 and 0x05 unknown 2">''b45_unk2''</abbr> || ? || <abbr title="Filling this area with 0xFF doesnt causes any change">Ignored ?</abbr> | | 0x12 || 0x02 || 00 02 || {{cellcolors|#FF4444}} <abbr title="block 0x04 and 0x05 unknown 2">''b45_unk2''</abbr> || ? || <abbr title="Filling this area with 0xFF doesnt causes any change">Ignored ?</abbr> | ||
Line 126: | Line 126: | ||
| colspan="6" {{cellcolors|lightgrey}} | | colspan="6" {{cellcolors|lightgrey}} | ||
|- | |- | ||
| 0x30 || <abbr title="max lenght not | | 0x30 || ''<abbr title="max lenght not confirmed">''any''</abbr>'' || {{cellcolors|lightgrey|#000000|center}} ''N/A'' || {{cellcolors|#aa8866}} '''user_data''' || Optional User Data area || Enabled by '''update_userdata = on''' in [[GimConv]].cfg. Stores the contents of '''<filename>.dat''' | ||
|- | |-{{cellcolors|lightgrey}} | ||
| | | 0x30 || ''<abbr title="0 up to 3">''varies''</abbr>'' || {{cellcolors|lightgrey|#000000|center}} ''N/A'' || {{cellcolors|#aaaaaa}} ''padding'' || Optional padding || To align '''user_data''' to 4 bytes | ||
|} | |} | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
00000070 <span style="background:# | 00000070 <span style="background:#666666; color:#ffffff;">00 00 00 40</span> <span style="background:#aaaaaa;">00 00 00 00 00 00 00 00 00 00 00 00</span> ...@............ | ||
{| class="wikitable" style="font-size:small;" | {| class="wikitable" style="font-size:small;" | ||
Line 139: | Line 139: | ||
! Offset !! Length !! Example !! Name !! Description !! Notes | ! Offset !! Length !! Example !! Name !! Description !! Notes | ||
|- | |- | ||
| 0x30 || 0x04 || 00 00 00 40 || {{cellcolors|# | | 0x30 || 0x04 || 00 00 00 40 || {{cellcolors|#666666|#ffffff}} '''frame_n_offset''' || Where <n> is the frame number || This entry is repeated one time for every '''level_count''' or '''frame_count''' | ||
|- | |-{{cellcolors|lightgrey}} | ||
| | | 0x34 || 0x0C || <abbr title="00 00 00 00 00 00 00 00 00 00 00 00">00 00 00 ...</abbr> || {{cellcolors|#aaaaaa}} ''padding'' || Optional padding || To align the block to 16 bytes | ||
|} | |} | ||
After this index comes the planes/levels/frames (the bytes with pixels color info), are one or several images concatenated, for | After this index comes the planes/levels/frames (the bytes with pixels color info), are one or several images concatenated, for research purposes can be added manually by using the option '''merge_mode level''' or '''merge_mode frame''', nd probably "planes" with the option '''merge_mode = plane''' | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
Line 150: | Line 150: | ||
00000080 <span style="background:#CA5E24;">CA 5E 11 00 CA 5E 12 00 CA 5E 13 00 CA 5E 14 00</span> Ê^..Ê^..Ê^..Ê^.. | 00000080 <span style="background:#CA5E24;">CA 5E 11 00 CA 5E 12 00 CA 5E 13 00 CA 5E 14 00</span> Ê^..Ê^..Ê^..Ê^.. | ||
00000090 <span style="background:#CA5E24;">CA 5E 21 00 CA 5E 22 00 CA 5E 23 00 CA 5E 24 00</span> Ê^!.Ê^".Ê^#.Ê^$. | 00000090 <span style="background:#CA5E24;">CA 5E 21 00 CA 5E 22 00 CA 5E 23 00 CA 5E 24 00</span> Ê^!.Ê^".Ê^#.Ê^$. | ||
IMAGE_INDEX | |||
IMAGE_PLANE | |||
IMAGE_LEVEL | |||
IMAGE_FRAME | |||
PALETTE_INDEX | |||
PALETTE_LEVEL | |||
PALETTE_FRAME | |||
===0x05 (Palette)=== | ===0x05 (Palette)=== | ||
Line 165: | Line 174: | ||
===0xFF (Fileinfo)=== | ===0xFF (Fileinfo)=== | ||
This block only exists if the GIM | This block only exists if the GIM was build using the option '''update_fileinfo = on'''. Initially in old PS3 firmwares all the GIM files was made using this option, eventually they stopped using this option and GIM files was updated/replaced by new ones without this area. But there are many GIM files inside latest PS3 4.82 firmware that contains this area (because was made lot of time ago and never was updated), this can be seen in the timestamps stored here, all this GIM files that was build using '''update_fileinfo = on''' was made around 2005/2006/2007 | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
Line 173: | Line 182: | ||
000000D0 <span style="background:#ddbb99;">74 6F 72 00</span> <span style="background:#eeccaa;">53 75 6E 20 41 70 72 20 31 35 20 30</span> tor.Sun Apr 15 0 | 000000D0 <span style="background:#ddbb99;">74 6F 72 00</span> <span style="background:#eeccaa;">53 75 6E 20 41 70 72 20 31 35 20 30</span> tor.Sun Apr 15 0 | ||
000000E0 <span style="background:#eeccaa;">31 3A 32 35 3A 30 32 20 32 30 31 38 00</span> <span style="background:#ffddbb;">47 69 6D</span> 1:25:02 2018.Gim | 000000E0 <span style="background:#eeccaa;">31 3A 32 35 3A 30 32 20 32 30 31 38 00</span> <span style="background:#ffddbb;">47 69 6D</span> 1:25:02 2018.Gim | ||
000000F0 <span style="background:#ffddbb;">43 6F 6E 76 20 31 2E 32 30 68 00</span> <span style="background:# | 000000F0 <span style="background:#ffddbb;">43 6F 6E 76 20 31 2E 32 30 68 00</span> <span style="background:#aaaaaa;">00</span> Conv 1.20h.. | ||
{| class="wikitable" style="font-size:small;" | {| class="wikitable" style="font-size:small;" | ||
Line 179: | Line 188: | ||
! Offset !! Length !! Example !! Name !! Description !! Notes | ! Offset !! Length !! Example !! Name !! Description !! Notes | ||
|- | |- | ||
| 0x00 || 0x16 || | | 0x00 || 0x16 || 34 78 32 5F 43 41 35 45 78 79 5F 33 32 62 69 74 73 2E 62 6D 70 00 || {{cellcolors|#ccaa88}} '''project_name''' || 4x2_CA5Exy_32bits.bmp || '''ProjectName''' in the GIS | ||
|- | |- | ||
| | | 0x16 || 0x0E || 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 00 || {{cellcolors|#ddbb99}} '''user_name''' || Administrator || '''UserName''' in the GIS | ||
|- | |- | ||
| | | 0x24 || 0x19 || 53 75 6E 20 41 70 72 20 31 35 20 30 31 3A 32 35 3A 30 32 20 32 30 31 38 00 || {{cellcolors|#eeccaa}} '''saved_date''' || Sun Apr 15 01:25:02 2018 || '''SavedDate''' in the GIS | ||
|- | |- | ||
| | | 0x3D || 0x0E || 47 69 6D 43 6F 6E 76 20 31 2E 32 30 68 00 || {{cellcolors|#ffddbb}} '''originator''' || GimConv 1.20h || '''Originator''' in the GIS | ||
|-{{cellcolors|lightgrey}} | |||
| 0x4B || 0x01 || 00 || {{cellcolors|#aaaaaa}} ''padding'' || || Optional padding to align the block to 4 bytes | |||
|} | |} | ||