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 | |||
*Overview | |||
00000000 <span style="background:#666666; color:#ffffff;">2E 47 49 4D</span> <span style="background:#666666; color:#ffffff;">31 2E 30 30</span> <span style="background:#666666; color:#ffffff;">00 50 53 50</span> <span style="background:#666666; color:#ffffff;">00 00 00 00</span> .GIM1.00.PSP.... <- GIM header | |||
00000000 <span style="background:# | 00000010 <span style="background:#cc00cc;">00 02</span> <span style="background:#FF6666;">00 00</span> <span style="background:#66ff66;">00 00 01 0C</span> <span style="background:#bbffbb;">00 00 00 10</span> <span style="background:#FF6666;">00 00 00 10</span> ................ <- Block 0x02 header | ||
00000010 <span style="background:# | 00000020 <span style="background:#cc00cc;">00 03</span> <span style="background:#FF6666;">00 00</span> <span style="background:#66ff66;">00 00 00 A0</span> <span style="background:#bbffbb;">00 00 00 10</span> <span style="background:#FF6666;">00 00 00 10</span> ....... ........ <- Block 0x03 header | ||
00000020 <span style="background:# | 00000030 <span style="background:#cc00cc;">00 04</span> <span style="background:#FF6666;">00 00</span> <span style="background:#66ff66;">00 00 00 90</span> <span style="background:#bbffbb;">00 00 00 90</span> <span style="background:#FF6666;">00 00 00 10</span> ................ <- Block 0x04 header | ||
00000030 <span style="background:# | 00000040 <span style="background:#A0DFCE;">00 30 00 00 00 03 00 00 00 04 00 04 00 20 00 10</span> .0........... .. <- Block 0x04 Frame info | ||
00000040 <span style="background:# | 00000050 <span style="background:#A0DFCE;">00 01 00 02 00 00 00 00 00 00 00 30 00 00 00 40</span> ...........0...@ <- Block 0x04 Frame info | ||
00000050 <span style="background:# | 00000060 <span style="background:#A0DFCE;">00 00 00 80 00 00 00 00 00 01 00 01 00 03 00 01</span> ...€............ <- Block 0x04 Frame info | ||
00000060 <span style="background:# | 00000070 <span style="background:#A0DFCE;">00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00</span> ...@............ <- Block 0x04 Frame info | ||
00000070 <span style="background:# | 00000080 <span style="background:#C0FFEE;">C0 FF EE 00 C0 FF EE 00 C0 FF EE 00 C0 FF EE 00</span> Àÿî.Àÿî.Àÿî.Àÿî. <- Block 0x04 Frame pixel map | ||
00000080 <span style="background:# | 00000090 <span style="background:#C0FFEE;">C0 FF EE 00 C0 FF EE 00 C0 FF EE 00 C0 FF EE 00</span> Àÿî.Àÿî.Àÿî.Àÿî. <- Block 0x04 Frame pixel map | ||
000000A0 <span style="background:#C0FFEE;">C0 FF EE 00 C0 FF EE 00 C0 FF EE 00 C0 FF EE 00</span> Àÿî.Àÿî.Àÿî.Àÿî. <- Block 0x04 Frame pixel map | |||
000000B0 <span style="background:#C0FFEE;">C0 FF EE 00 C0 FF EE 00 C0 FF EE 00 C0 FF EE 00</span> Àÿî.Àÿî.Àÿî.Àÿî. <- Block 0x04 Frame pixel map | |||
000000C0 <span style="background:#cc00cc;">00 FF</span> <span style="background:#FF6666;">00 00</span> <span style="background:#66ff66;">00 00 00 5C</span> <span style="background:#bbffbb;">00 00 00 5C</span> <span style="background:#FF6666;">00 00 00 10</span> .ÿ.....\...\.... <- Block 0xFF header | |||
000000D0 <span style="background:#ddbb99;">34 78 34 5F 43 30 46 46 45 45 5F 33 32 62 69 74</span> 4x4_C0FFEE_32bit <- Block 0xFF Data | |||
000000E0 <span style="background:#ddbb99;">73 2E 62 6D 70 00</span> <span style="background:#ddbb99;">41 64 6D 69 6E 69 73 74 72 61</span> s.bmp.Administra <- Block 0xFF Data | |||
000000F0 <span style="background:#ddbb99;">74 6F 72 00</span> <span style="background:#ddbb99;">46 72 69 20 41 70 72 20 31 33 20 30</span> tor.Fri Apr 13 0 <- Block 0xFF Data | |||
00000100 <span style="background:#ddbb99;">31 3A 35 37 3A 34 37 20 32 30 31 38 00</span> <span style="background:#ddbb99;">47 69 6D</span> 1:57:47 2018.Gim <- Block 0xFF Data | |||
00000110 <span style="background:#ddbb99;">43 6F 6E 76 20 31 2E 32 30 68 00</span> <span style="background:#aaaaaa;">00</span> Conv 1.20h.. <- Block 0xFF Data | |||
*Blocks are aligned to 4 bytes boundary, the byte at the end in the example is padding | |||
==GIM header== | ==GIM header== | ||
Line 31: | Line 34: | ||
{| class="wikitable" style="font-size:small;" | {| class="wikitable" style="font-size:small;" | ||
|- | |- | ||
! Offset !! Length !! Example !! Name | ! Offset !! Length !! Example !! Name !! Notes | ||
|- | |- | ||
| 0x00 || 0x04 || | | 0x00 || 0x04 || 2E 47 49 4D || {{cellcolors|#666666|#ffffff}} '''gim_signature''' || .GIM | ||
|- | |- | ||
| 0x04 || 0x04 || | | 0x04 || 0x04 || 31 2E 30 30 || {{cellcolors|#666666|#ffffff}} '''gim_version''' || 1.00 | ||
|- | |- | ||
| 0x08 || 0x04 || | | 0x08 || 0x04 || 00 50 53 50 || {{cellcolors|#666666|#ffffff}} <abbr title="this is named format_style in gimconv.exe with only 3 options available: std, psp, ps3">'''gim_type'''</abbr> || PSP | ||
|- | |- | ||
| 0x0C || 0x04 || 00 00 00 00 || {{cellcolors|# | | 0x0C || 0x04 || 00 00 00 00 || {{cellcolors|#666666|#ffffff}} <abbr title="unknown">''gim_unk''</abbr> || Always 0x00 ? | ||
|} | |} | ||
Line 46: | Line 49: | ||
{| class="wikitable" style="font-size:small;" | {| class="wikitable" style="font-size:small;" | ||
|- | |- | ||
! Offset !! Length !! Example !! Name | ! Offset !! Length !! Example !! Name !! Notes | ||
|- | |- | ||
| 0x00 || 0x02 || 00 02 || {{cellcolors|# | | 0x00 || 0x02 || 00 02 || {{cellcolors|#cc00cc}} '''block_id''' || Block identifyer (see below) | ||
|- | |- | ||
| 0x02 || 0x02 || 00 00 || {{cellcolors|# | | 0x02 || 0x02 || 00 00 || {{cellcolors|#FF6666}} <abbr title="unknown">''block_unk1''</abbr> || Always 0x00 ? | ||
|- | |- | ||
| 0x04 || 0x04 || 00 00 | | 0x04 || 0x04 || 00 00 01 0C || {{cellcolors|#66ff66}} '''block_size''' || Size of this block + size of all the children blocks | ||
|- | |- | ||
| 0x08 || 0x04 || 00 00 00 10 || {{cellcolors|# | | 0x08 || 0x04 || 00 00 00 10 || {{cellcolors|#bbffbb}} '''block_next''' || Next block, relative offset | ||
|- | |- | ||
| 0x0C || 0x04 || 00 00 00 10 || {{cellcolors|# | | 0x0C || 0x04 || 00 00 00 10 || {{cellcolors|#FF6666}} <abbr title="block_prev">''block_unk2''</abbr> || Always 0x10 ? | ||
|} | |} | ||
==Block data (by block ID)== | ==Block data (by block ID)== | ||
This is a representation of the block hierarchy in the example: | |||
GIM | |||
-0x02 | |||
-0x03 | |||
-0x04 | |||
-0xFF | |||
===0x02 ( | ===0x02 (root)=== | ||
Empty/unknown. The direct childrens are 0x03 and 0x0FF | |||
===0x03 | ===0x03=== | ||
Empty/unknown. The direct child is 0x04 | |||
===0x04 ( | ===0x04 (bitmap)=== | ||
===0x05=== | |||
===0xFF (footer)=== | |||
Footer size is variable, composed by strings of variable lenght null terminated: | |||
*'''4x4_C0FFEE_32bits.bmp''' (original file name) | |||
*'''Administrator''' (windows user account) | |||
*'''Fri Apr 13 01:57:47 2018''' (timestamp) | |||
*'''GimConv 1.20h''' (GimConv.exe version used to create the GIM file) | |||
=Links= | =Links= |