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 66: | Line 66: | ||
===0x03 (Picture)=== | ===0x03 (Picture)=== | ||
Is the parent of block 0x04 (Image) and block 0x05 (Palette) | Is the parent of block 0x04 (Image) and block 0x05 (Palette) | ||
*Experimental notes | *Experimental notes | ||
**This block is repeated when using the option '''merge_mode''' = picture | **This block is repeated when using the option '''merge_mode''' = picture | ||
Line 71: | Line 72: | ||
===0x04 (Image)=== | ===0x04 (Image)=== | ||
The image block contains some info about the image, and the pixel color info at bottom stored as '''levels''' or '''frames''' | The image block contains some info about the image, and the pixel color info at bottom stored as '''levels''' or '''frames''' | ||
*Experimental notes | *Experimental notes | ||
**This block is repeated when using the option '''merge_mode''' = image | **This block is repeated when using the option '''merge_mode''' = image | ||
Line 84: | Line 86: | ||
! 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 data|| Indicates the | | 0x00 || 0x02 || 00 30 || {{cellcolors|#11bbee}} '''block_data_lenght''' || Size of the block data|| 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 98: | ||
| 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 128: | ||
| 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 141: | ||
! 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 152: | ||
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 176: | ||
===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 184: | ||
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 190: | ||
! 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 | |||
|} | |} | ||